1(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 2var $ = require("jquery"); 3var breakpoint = require('./app-breakpoints'); 4require('./app-accordion'); 5var slick = require("slick"); 6var _ = require('underscore'); 7var _gridSize = breakpoint().match(/(\d+)/g); 8var _winSize = $(window).width(); 9var _gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, ""); 10 11var sticky = $('.c-navigation').offset().top; 12 13require('./app-map'); 14 15$(function() { 16 $('.carousel').slick({ 17 autoplay: true, 18 responsive: false, 19 fade: true, 20 dots: false, 21 autoplaySpeed: 8500, 22 arrows: false 23 }); 24 25 $('.carousel-element').slick({ 26 autoplay: true, 27 responsive: [ 28 { 29 breakpoint: 767, 30 settings: { 31 slidesToShow: 1, 32 slidesToScroll: 1 33 } 34 }], 35 //fade: true, 36 dots: true, 37 slidesToShow: 2, 38 slidesToScroll: 2, 39 arrows: false 40 }); 41 42 43 $(".post .item .item-media").click(function() { 44 if( $(this).find("a").attr("href") ) { 45 window.location = $(this).find("a").attr("href"); 46 } 47 return false; 48 }); 49 50 $(window).scroll(function() { 51 console.log(_gridLabel); 52 53 if(_gridLabel != "smartphone") { 54 if ($(this).scrollTop() > sticky){ 55 $('.c-navigation').addClass("sticky"); 56 } else { 57 $('.c-navigation').removeClass("sticky"); 58 } 59 } 60 }); 61 62 $(document).on('click', '.nav-trigger', function(e) { 63 $(this).toggleClass('is-active'); 64 $('#menu-mobile').slideToggle(); 65 return false; 66 }); 67 68 $(document).on("click", ".new-window", function () { 69 70 var w = 500; 71 var h = 500; 72 73 var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left; 74 var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top; 75 76 var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; 77 var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; 78 79 var title = $(this).attr('data-title'); 80 var url = $(this).attr('href'); 81 82 var left = ((width / 2) - (w / 2)) + dualScreenLeft; 83 var top = ((height / 2) - (h / 2)) + dualScreenTop; 84 var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left); 85 86 if (window.focus) { 87 newWindow.focus(); 88 } 89 90 return false; 91 }); 92 93 $(window).resize(function(){ 94 _gridSize = breakpoint().match(/(\d+)/g); 95 _winSize = $(window).width(); 96 _margin = (_winSize - _gridSize) / 2; 97 98 _gridLabel = breakpoint().replace(/\d+/g, '').replace(' ',''); 99 100 if(_gridLabel == "smartphone") { 101 $('.c-navigation').removeClass("sticky"); 102 } 103 104 }).resize(); 105 106 107 108 $(".c-alimentaire .list a").click(function () { 109 $(".c-alimentaire .list li").removeClass("active"), 110 $(this).parent().addClass("active"), 111 $(".c-alimentaire .contentBox").hide(), 112 $(".c-alimentaire .contentBox[data-id=" + $(this).attr("data-id") + "]").fadeIn(); 113 }); 114 $(".c-alimentaire .list li:eq(0) a").trigger("click"); 115 $(".carousel").slick({ autoplay: !0, responsive: !1, fade: !0, dots: !1, autoplaySpeed: 8500, arrows: !1 }); 116 $(".carousel-element").slick({ autoplay: !0, responsive: [{ breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1 } }], dots: !0, slidesToShow: 2, slidesToScroll: 2, arrows: !1 }); 117 $(".post .item .item-media").click(function () { 118 return $(this).find("a").attr("href") && (window.location = $(this).find("a").attr("href")), !1; 119 }); 120 // $(window).scroll(function () { 121 // "smartphone" != a && ($(this).scrollTop() > l ? $(".c-navigation").addClass("sticky") : $(".c-navigation").removeClass("sticky")); 122 // }); 123 // $(document).on("click", ".nav-trigger", function (e) { 124 // return $(this).toggleClass("is-active"), $("#menu-mobile").slideToggle(), !1; 125 // }); 126 $(document).on("click", ".new-window", function () { 127 var e = 500, 128 t = 500, 129 n = void 0 != window.screenLeft ? window.screenLeft : screen.left, 130 o = void 0 != window.screenTop ? window.screenTop : screen.top, 131 r = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width, 132 s = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height, 133 a = $(this).attr("data-title"), 134 l = $(this).attr("href"), 135 c = r / 2 - e / 2 + n, 136 u = s / 2 - t / 2 + o,
137 d = window.open(l, a, "scrollbars=yes, width=" + e + ", height=" + t + ", top=" + u + ", left=" + c); 138 return window.focus && d.focus(), !1; 139 }); 140 // $(window).resize(function () { 141 // (r = o().match(/(\d+)/g)), (s = i(window).width()), (_margin = (s - r) / 2), (a = o().replace(/\d+/g, "").replace(" ", "")), "smartphone" == a && i(".c-navigation").removeClass("sticky"); 142 // }).resize(); 143 144 /* 145 function PopupCenter(url, title, w, h) { 146 // Fixes dual-screen position Most browsers Firefox 147 148 // Puts focus on the newWindow 149 if (window.focus) { 150 newWindow.focus(); 151 } 152} 153 */ 154}); 155 156/*var $ = require("jquery"); 157var stick_in_parent = require("sticky-kit"); 158var slick = require("slick"); 159var breakpoint = require('./app-breakpoints'); 160var sameheight = require('./app-sameheight'); 161var TweenMax = require('TweenMax'); 162var _ = require('underscore'); 163 164var _gridSize = breakpoint().match(/(\d+)/g); 165var _winSize = $(window).width(); 166var current = 0; 167var next = 0; 168var prev = 0; 169var _gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, ""); 170var debouncedLayout = _.debounce(_resize, 300); 171 172var slickVar = { 173 centerMode: true, 174 autoplay: ((_gridSize > 768) ? true : false), 175 variableWidth: true, 176 slidesToShow: ((_gridSize > 768) ? 3 : 1), 177 infinite: false, 178 initialSlide: 1, 179 centerPadding: '0', 180 draggable: false 181}; 182 183$(function() { 184 _gridSize = breakpoint().match(/(\d+)/g); 185 _winSize = $(window).width(); 186 var _margin = (_winSize - _gridSize) / 2; 187 _gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, ""); 188 189 $('.fb-share').click(function(e) { 190 e.preventDefault(); 191 window.open($(this).attr('href'), 'fbShareWindow', 192 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + 193 ', left=' + ($(window).width() / 2 - 225) + 194 ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0'); 195 return false; 196 }); 197 198console.log(_gridLabel); 199 200 if (_gridLabel !== "smartphone" && _gridLabel !== "tablet" ) { 201 $("#stick-in-parent").stick_in_parent({ 202 parent: '.source-_product_cat', 203 sticky_class: 'is-stuck', 204 }); 205 } 206 207 $(window).resize(debouncedLayout); 208 _resize(); 209 210 $(document).on('click', '.nav-trigger', function(e) { 211 212 $(this).toggleClass('is-active'); 213 $('#menu-mobile').slideToggle(); 214 215 return false; 216 }); 217 218 $(document).on('mouseenter', '.menu-item', function() { 219 if (_gridSize > 768) { 220 var height = $('.sub-menu ul', this).outerHeight(true); 221 222 if (height) { 223 TweenMax.set(['.menu-depth-1', '.menu-depth-2'], { 224 height: height 225 }); 226 } 227 } 228 }); 229 230 $(document).on('mouseenter', '.menu-item-has-children', function() { 231 if (_gridSize > 768) { 232 var padding = $(this).offset().left; 233 var grid = $('#menu-menu-primaire').outerWidth(); 234 235 $(this).children('div.menu-depth-1').css({ 236 paddingLeft: padding 237 }); 238 239 $('.menu-item-depth-1').css({ 240 width: grid * 0.3 241 }); 242 243 $('.menu-depth-2').css({ 244 left: grid * 0.3 245 }).children('ul').css({ 246 width: grid * 0.7 247 }); 248 } 249 }); 250 251 252 $('.slider').slick({ 253 autoplay: true, 254 fade: true, 255 dots: true, 256 arrows: false 257 }); 258 259 $('.product-formats-slider').slick({ 260 slidesToShow: 1, 261 slidesToScroll: 1, 262 fade: true, 263 centerMode: true, 264 asNavFor: '.product-formats-nav', 265 }); 266 267 $('.product-formats-nav').slick({ 268 slidesToShow: 4, 269 slidesToScroll: 4, 270 centerPadding: 0, 271 asNavFor: '.product-formats-slider', 272 focusOnSelect: true, 273 variableWidth: true, 274 useTransform: false, 275 }); 276 277 $('.related-products-slider').slick({ 278 adaptiveHeight: true, 279 dots: true, 280 }); 281 282 $('.related-products-slider').on('setPosition', function(event, slick, 283 direction) { 284 _resize(); 285 }); 286 287}); 288 289var runSlick = function() { 290 current = 0; 291 next = 0; 292 prev = 0; 293 294 if ($('.carousel').find('.c-list-item-carousel').length >= 3) { 295 var carousel = $('.carousel'); 296 if ($(carousel).hasClass('slick-slider')) carousel.slick('unslick'); 297 298 carousel.on('init', function(slick) { 299 if (_gridSize > 768) { 300 current = carousel.find('.slick-current'); 301 prev = current.prev(); 302 next = current.next(); 303 TweenMax.set([prev, next], { 304 autoAlpha: 1, 305 scale: 0.7 306 }); 307 TweenMax.set(current, { 308 scale: 1, 309 autoAlpha: 1 310 }); 311 } 312 }); 313 314 carousel.slick(slickVar).on('beforeChange', function(event, slick, 315 currentSlide, nextSlide) { 316 if (_gridSize > 768) { 317 318 if (Math.abs(nextSlide - currentSlide) == 1) { 319 direction = (nextSlide - currentSlide > 0) ? "right" : "left"; 320 } else { 321 direction = (nextSlide - currentSlide > 0) ? "left" : "right"; 322 } 323 TweenMax.to(slick.$slides.eq(currentSlide), 0.1, { 324 scale: 0.7, 325 autoAlpha: 1 326 }); 327 TweenMax.to(slick.$slides.eq(nextSlide), 0.1, { 328 autoAlpha: 1, 329 scale: 1 330 }); 331 332 if (direction === "right") { 333 //edge 334 TweenMax.to(slick.$slides.eq(currentSlide - 1), 0.1, { 335 autoAlpha: 0 336 }); 337 TweenMax.to(slick.$slides.eq(nextSlide + 1), 0.1, { 338 autoAlpha: 1, 339 scale: 0.7 340 }); 341 } else { 342 TweenMax.to(slick.$slides.eq(currentSlide + 1), 0.1, { 343 autoAlpha: 0 344 }); 345 TweenMax.to(slick.$slides.eq(nextSlide - 1), 0.1, { 346 autoAlpha: 1, 347 scale: 0.7 348 }); 349 } 350 } 351 }); 352 353 } else if ($('.c-section.has-source .c-listing .c-list-item').length >= 3) { 354 355 var carousel = $('.c-section.has-source .c-listing__wrapper'); 356 if ($(carousel).hasClass('slick-slider')) carousel.slick('unslick'); 357
358 // if( $(carousel).find('.c-list-item-carousel').length > 3) { 359 carousel.on('init', function(slick) { 360 if (_gridSize > 768) { 361 current = carousel.find('.slick-current'); 362 prev = current.prev(); 363 next = current.next(); 364 365 TweenMax.set([prev, next], { 366 autoAlpha: 1 367 }); 368 TweenMax.set(current, { 369 autoAlpha: 1 370 }); 371 } 372 }); 373 374 carousel.slick(slickVar).on('beforeChange', function(event, slick, 375 currentSlide, nextSlide) { 376 if (_gridSize > 768) { 377 if (Math.abs(nextSlide - currentSlide) == 1) { 378 direction = (nextSlide - currentSlide > 0) ? "right" : "left"; 379 } else { 380 direction = (nextSlide - currentSlide > 0) ? "left" : "right"; 381 } 382 TweenMax.to(slick.$slides.eq(currentSlide), 0.1, { 383 autoAlpha: 1 384 }); 385 TweenMax.to(slick.$slides.eq(nextSlide), 0.1, { 386 autoAlpha: 1 387 }); 388 389 if (direction === "right") { 390 //edge 391 TweenMax.to(slick.$slides.eq(currentSlide - 1), 0.1, { 392 autoAlpha: 0 393 }); 394 TweenMax.to(slick.$slides.eq(nextSlide + 1), 0.1, { 395 autoAlpha: 1 396 }); 397 } else { 398 TweenMax.to(slick.$slides.eq(currentSlide + 1), 0.1, { 399 autoAlpha: 0 400 }); 401 TweenMax.to(slick.$slides.eq(nextSlide - 1), 0.1, { 402 autoAlpha: 1 403 }); 404 } 405 } 406 }); 407 } 408 // } 409} 410 411$(window).resize(function(){ 412 _gridSize = breakpoint().match(/(\d+)/g); 413 _gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, ""); 414 _winSize = $(window).width(); 415 _margin = (_winSize - _gridSize) / 2; 416 maxHeight = -1; 417 418 if (_gridSize > 1200) { 419 $('.c-section--header.has-thumbnail .c-section__wrapper').css({ 420 paddingLeft: _margin 421 }); 422 } 423}) 424 425function _resize() { 426 console.log("resize once"); 427 _gridSize = breakpoint().match(/(\d+)/g); 428 _gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, ""); 429 _winSize = $(window).width(); 430 _margin = (_winSize - _gridSize) / 2; 431 maxHeight = -1; 432 433 //Reset 434 $('.c-section--header.has-thumbnail .c-section__wrapper').css('paddingLeft', 435 ''); 436 437 $('.menu-depth-1, .menu-depth-2').css({ 438 minHeight: $('.menu-depth-1').find('ul').eq(0).outerHeight(true) 439 }); 440 441 if (_gridSize > 1200) { 442 $('.c-section--header.has-thumbnail .c-section__wrapper').css({ 443 paddingLeft: _margin 444 }); 445 } 446 447 if ($('.same-height').length && _gridLabel !== "smartphone") { 448 $('.same-height').equalRowHeights(); 449 } 450 451 runSlick(); 452} 453*/ 454},{"./app-accordion":5,"./app-breakpoints":6,"./app-map":7,"jquery":2,"slick":3,"underscore":4}],2:[function(require,module,exports){ 455(function (global){ 456; var __browserify_shim_require__=require;(function browserifyShim(module, exports, require, define, browserify_shim__define__module__export__) { 457/*! 458 * jQuery JavaScript Library v2.1.4 459 * http://jquery.com/ 460 * 461 * Includes Sizzle.js 462 * http://sizzlejs.com/ 463 * 464 * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors 465 * Released under the MIT license 466 * http://jquery.org/license 467 * 468 * Date: 2015-04-28T16:01Z 469 */ 470 471(function( global, factory ) { 472 473 if ( typeof module === "object" && typeof module.exports === "object" ) { 474 // For CommonJS and CommonJS-like environments where a proper `window` 475 // is present, execute the factory and get jQuery. 476 // For environments that do not have a `window` with a `document` 477 // (such as Node.js), expose a factory as module.exports. 478 // This accentuates the need for the creation of a real `window`. 479 // e.g. var jQuery = require("jquery")(window); 480 // See ticket #14549 for more info. 481 module.exports = global.document ? 482 factory( global, true ) : 483 function( w ) { 484 if ( !w.document ) { 485 throw new Error( "jQuery requires a window with a document" ); 486 } 487 return factory( w ); 488 }; 489 } else { 490 factory( global ); 491 } 492 493// Pass this if window is not defined yet 494}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 495 496// Support: Firefox 18+ 497// Can't be in strict mode, several libs including ASP.NET trace 498// the stack via arguments.caller.callee and Firefox dies if 499// you try to trace through "use strict" call chains. (#13335) 500// 501 502var arr = []; 503 504var slice = arr.slice; 505 506var concat = arr.concat; 507 508var push = arr.push; 509 510var indexOf = arr.indexOf; 511 512var class2type = {}; 513 514var toString = class2type.toString; 515 516var hasOwn = class2type.hasOwnProperty; 517 518var support = {}; 519 520 521 522var 523 // Use the correct document accordingly with window argument (sandbox) 524 document = window.document, 525 526 version = "2.1.4", 527 528 // Define a local copy of jQuery 529 jQuery = function( selector, context ) { 530 // The jQuery object is actually just the init constructor 'enhanced' 531 // Need init if jQuery is called (just allow error to be thrown if not included) 532 return new jQuery.fn.init( selector, context ); 533 }, 534 535 // Support: Android<4.1 536 // Make sure we trim BOM and NBSP 537 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, 538 539 // Matches dashed string for camelizing 540 rmsPrefix = /^-ms-/, 541 rdashAlpha = /-([\da-z])/gi, 542 543 // Used by jQuery.camelCase as callback to replace() 544 fcamelCase = function( all, letter ) { 545 return letter.toUpperCase(); 546 }; 547 548jQuery.fn = jQuery.prototype = { 549 // The current version of jQuery being used 550 jquery: version, 551 552 constructor: jQuery, 553 554 // Start with an empty selector 555 selector: "", 556 557 // The default length of a jQuery object is 0 558 length: 0, 559 560 toArray: function() { 561 return slice.call( this ); 562 }, 563 564 // Get the Nth element in the matched element set OR 565 // Get the whole matched element set as a clean array 566 get: function( num ) { 567 return num != null ? 568 569 // Return just the one element from the set 570 ( num < 0 ? this[ num + this.length ] : this[ num ] ) : 571 572 // Return all the elements in a clean array 573 slice.call( this ); 574 }, 575 576 // Take an array of elements and push it onto the stack 577 // (returning the new matched element set) 578 pushStack: function( elems ) { 579 580 // Build a new jQuery matched element set 581 var ret = jQuery.merge( this.constructor(), elems ); 582 583 // Add the old object onto the stack (as a reference)
584 ret.prevObject = this; 585 ret.context = this.context; 586 587 // Return the newly-formed element set 588 return ret; 589 }, 590 591 // Execute a callback for every element in the matched set. 592 // (You can seed the arguments with an array of args, but this is 593 // only used internally.) 594 each: function( callback, args ) { 595 return jQuery.each( this, callback, args ); 596 }, 597 598 map: function( callback ) { 599 return this.pushStack( jQuery.map(this, function( elem, i ) { 600 return callback.call( elem, i, elem ); 601 })); 602 }, 603 604 slice: function() { 605 return this.pushStack( slice.apply( this, arguments ) ); 606 }, 607 608 first: function() { 609 return this.eq( 0 ); 610 }, 611 612 last: function() { 613 return this.eq( -1 ); 614 }, 615 616 eq: function( i ) { 617 var len = this.length, 618 j = +i + ( i < 0 ? len : 0 ); 619 return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); 620 }, 621 622 end: function() { 623 return this.prevObject || this.constructor(null); 624 }, 625 626 // For internal use only. 627 // Behaves like an Array's method, not like a jQuery method. 628 push: push, 629 sort: arr.sort, 630 splice: arr.splice 631}; 632 633jQuery.extend = jQuery.fn.extend = function() { 634 var options, name, src, copy, copyIsArray, clone, 635 target = arguments[0] || {}, 636 i = 1, 637 length = arguments.length, 638 deep = false; 639 640 // Handle a deep copy situation 641 if ( typeof target === "boolean" ) { 642 deep = target; 643 644 // Skip the boolean and the target 645 target = arguments[ i ] || {}; 646 i++; 647 } 648 649 // Handle case when target is a string or something (possible in deep copy) 650 if ( typeof target !== "object" && !jQuery.isFunction(target) ) { 651 target = {}; 652 } 653 654 // Extend jQuery itself if only one argument is passed 655 if ( i === length ) { 656 target = this; 657 i--; 658 } 659 660 for ( ; i < length; i++ ) { 661 // Only deal with non-null/undefined values 662 if ( (options = arguments[ i ]) != null ) { 663 // Extend the base object 664 for ( name in options ) { 665 src = target[ name ]; 666 copy = options[ name ]; 667 668 // Prevent never-ending loop 669 if ( target === copy ) { 670 continue; 671 } 672 673 // Recurse if we're merging plain objects or arrays 674 if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { 675 if ( copyIsArray ) { 676 copyIsArray = false; 677 clone = src && jQuery.isArray(src) ? src : []; 678 679 } else { 680 clone = src && jQuery.isPlainObject(src) ? src : {}; 681 } 682 683 // Never move original objects, clone them 684 target[ name ] = jQuery.extend( deep, clone, copy ); 685 686 // Don't bring in undefined values 687 } else if ( copy !== undefined ) { 688 target[ name ] = copy; 689 } 690 } 691 } 692 } 693 694 // Return the modified object 695 return target; 696}; 697 698jQuery.extend({ 699 // Unique for each copy of jQuery on the page 700 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), 701 702 // Assume jQuery is ready without the ready module 703 isReady: true, 704 705 error: function( msg ) { 706 throw new Error( msg ); 707 }, 708 709 noop: function() {}, 710 711 isFunction: function( obj ) { 712 return jQuery.type(obj) === "function"; 713 }, 714 715 isArray: Array.isArray, 716 717 isWindow: function( obj ) { 718 return obj != null && obj === obj.window; 719 }, 720 721 isNumeric: function( obj ) { 722 // parseFloat NaNs numeric-cast false positives (null|true|false|"") 723 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 724 // subtraction forces infinities to NaN 725 // adding 1 corrects loss of precision from parseFloat (#15100) 726 return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; 727 }, 728 729 isPlainObject: function( obj ) { 730 // Not plain objects: 731 // - Any object or value whose internal [[Class]] property is not "[object Object]" 732 // - DOM nodes 733 // - window 734 if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { 735 return false; 736 } 737 738 if ( obj.constructor && 739 !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { 740 return false; 741 } 742 743 // If the function hasn't returned already, we're confident that 744 // |obj| is a plain object, created by {} or constructed with new Object 745 return true; 746 }, 747 748 isEmptyObject: function( obj ) { 749 var name; 750 for ( name in obj ) { 751 return false;
752 } 753 return true; 754 }, 755 756 type: function( obj ) { 757 if ( obj == null ) { 758 return obj + ""; 759 } 760 // Support: Android<4.0, iOS<6 (functionish RegExp) 761 return typeof obj === "object" || typeof obj === "function" ? 762 class2type[ toString.call(obj) ] || "object" : 763 typeof obj; 764 }, 765 766 // Evaluates a script in a global context 767 globalEval: function( code ) { 768 var script, 769 indirect = eval; 770 771 code = jQuery.trim( code ); 772 773 if ( code ) { 774 // If the code includes a valid, prologue position 775 // strict mode pragma, execute code by injecting a 776 // script tag into the document. 777 if ( code.indexOf("use strict") === 1 ) { 778 script = document.createElement("script"); 779 script.text = code; 780 document.head.appendChild( script ).parentNode.removeChild( script ); 781 } else { 782 // Otherwise, avoid the DOM node creation, insertion 783 // and removal by using an indirect global eval 784 indirect( code ); 785 } 786 } 787 }, 788 789 // Convert dashed to camelCase; used by the css and data modules 790 // Support: IE9-11+ 791 // Microsoft forgot to hump their vendor prefix (#9572) 792 camelCase: function( string ) { 793 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 794 }, 795
796 nodeName: function( elem, name ) { 797 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 798 }, 799 800 // args is for internal usage only 801 each: function( obj, callback, args ) { 802 var value, 803 i = 0, 804 length = obj.length, 805 isArray = isArraylike( obj ); 806 807 if ( args ) { 808 if ( isArray ) { 809 for ( ; i < length; i++ ) { 810 value = callback.apply( obj[ i ], args ); 811 812 if ( value === false ) { 813 break; 814 } 815 } 816 } else { 817 for ( i in obj ) { 818 value = callback.apply( obj[ i ], args ); 819 820 if ( value === false ) { 821 break; 822 } 823 } 824 } 825 826 // A special, fast, case for the most common use of each 827 } else { 828 if ( isArray ) { 829 for ( ; i < length; i++ ) { 830 value = callback.call( obj[ i ], i, obj[ i ] ); 831 832 if ( value === false ) { 833 break; 834 } 835 } 836 } else { 837 for ( i in obj ) { 838 value = callback.call( obj[ i ], i, obj[ i ] ); 839 840 if ( value === false ) { 841 break; 842 } 843 } 844 } 845 } 846 847 return obj; 848 }, 849 850 // Support: Android<4.1 851 trim: function( text ) { 852 return text == null ? 853 "" : 854 ( text + "" ).replace( rtrim, "" ); 855 }, 856 857 // results is for internal usage only 858 makeArray: function( arr, results ) { 859 var ret = results || []; 860 861 if ( arr != null ) { 862 if ( isArraylike( Object(arr) ) ) { 863 jQuery.merge( ret, 864 typeof arr === "string" ? 865 [ arr ] : arr 866 ); 867 } else { 868 push.call( ret, arr ); 869 } 870 } 871 872 return ret; 873 }, 874 875 inArray: function( elem, arr, i ) { 876 return arr == null ? -1 : indexOf.call( arr, elem, i ); 877 }, 878 879 merge: function( first, second ) { 880 var len = +second.length, 881 j = 0, 882 i = first.length; 883 884 for ( ; j < len; j++ ) { 885 first[ i++ ] = second[ j ]; 886 } 887 888 first.length = i; 889 890 return first; 891 }, 892 893 grep: function( elems, callback, invert ) { 894 var callbackInverse, 895 matches = [], 896 i = 0, 897 length = elems.length, 898 callbackExpect = !invert; 899 900 // Go through the array, only saving the items 901 // that pass the validator function 902 for ( ; i < length; i++ ) { 903 callbackInverse = !callback( elems[ i ], i ); 904 if ( callbackInverse !== callbackExpect ) { 905 matches.push( elems[ i ] ); 906 } 907 } 908 909 return matches; 910 }, 911 912 // arg is for internal usage only 913 map: function( elems, callback, arg ) { 914 var value, 915 i = 0, 916 length = elems.length, 917 isArray = isArraylike( elems ), 918 ret = []; 919 920 // Go through the array, translating each of the items to their new values 921 if ( isArray ) { 922 for ( ; i < length; i++ ) { 923 value = callback( elems[ i ], i, arg ); 924 925 if ( value != null ) { 926 ret.push( value ); 927 } 928 } 929 930 // Go through every key on the object, 931 } else { 932 for ( i in elems ) { 933 value = callback( elems[ i ], i, arg ); 934 935 if ( value != null ) { 936 ret.push( value ); 937 } 938 } 939 } 940 941 // Flatten any nested arrays 942 return concat.apply( [], ret ); 943 }, 944 945 // A global GUID counter for objects 946 guid: 1, 947 948 // Bind a function to a context, optionally partially applying any 949 // arguments. 950 proxy: function( fn, context ) { 951 var tmp, args, proxy; 952 953 if ( typeof context === "string" ) { 954 tmp = fn[ context ]; 955 context = fn; 956 fn = tmp; 957 } 958 959 // Quick check to determine if target is callable, in the spec 960 // this throws a TypeError, but we will just return undefined. 961 if ( !jQuery.isFunction( fn ) ) { 962 return undefined; 963 } 964 965 // Simulated bind 966 args = slice.call( arguments, 2 ); 967 proxy = function() { 968 return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); 969 }; 970 971 // Set the guid of unique handler to the same of original handler, so it can be removed 972 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 973 974 return proxy; 975 }, 976 977 now: Date.now, 978 979 // jQuery.support is not used in Core but other projects attach their 980 // properties to it so it needs to exist. 981 support: support 982}); 983 984// Populate the class2type map 985jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { 986 class2type[ "[object " + name + "]" ] = name.toLowerCase(); 987}); 988 989function isArraylike( obj ) { 990 991 // Support: iOS 8.2 (not reproducible in simulator) 992 // `in` check used to prevent JIT error (gh-2145) 993 // hasOwn isn't used here due to false negatives 994 // regarding Nodelist length in IE 995 var length = "length" in obj && obj.length, 996 type = jQuery.type( obj ); 997 998 if ( type === "function" || jQuery.isWindow( obj ) ) { 999 return false;
1000 } 1001 1002 if ( obj.nodeType === 1 && length ) { 1003 return true; 1004 } 1005 1006 return type === "array" || length === 0 || 1007 typeof length === "number" && length > 0 && ( length - 1 ) in obj; 1008} 1009var Sizzle = 1010/*! 1011 * Sizzle CSS Selector Engine v2.2.0-pre 1012 * http://sizzlejs.com/ 1013 * 1014 * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors 1015 * Released under the MIT license 1016 * http://jquery.org/license 1017 * 1018 * Date: 2014-12-16 1019 */ 1020(function( window ) { 1021 1022var i, 1023 support, 1024 Expr, 1025 getText, 1026 isXML, 1027 tokenize, 1028 compile, 1029 select, 1030 outermostContext, 1031 sortInput, 1032 hasDuplicate, 1033 1034 // Local document vars 1035 setDocument, 1036 document, 1037 docElem, 1038 documentIsHTML, 1039 rbuggyQSA, 1040 rbuggyMatches, 1041 matches, 1042 contains, 1043 1044 // Instance-specific data 1045 expando = "sizzle" + 1 * new Date(), 1046 preferredDoc = window.document, 1047 dirruns = 0, 1048 done = 0, 1049 classCache = createCache(), 1050 tokenCache = createCache(), 1051 compilerCache = createCache(), 1052 sortOrder = function( a, b ) { 1053 if ( a === b ) { 1054 hasDuplicate = true; 1055 } 1056 return 0; 1057 }, 1058 1059 // General-purpose constants 1060 MAX_NEGATIVE = 1 << 31, 1061 1062 // Instance methods 1063 hasOwn = ({}).hasOwnProperty, 1064 arr = [], 1065 pop = arr.pop, 1066 push_native = arr.push, 1067 push = arr.push, 1068 slice = arr.slice, 1069 // Use a stripped-down indexOf as it's faster than native 1070 // http://jsperf.com/thor-indexof-vs-for/5 1071 indexOf = function( list, elem ) { 1072 var i = 0, 1073 len = list.length; 1074 for ( ; i < len; i++ ) { 1075 if ( list[i] === elem ) { 1076 return i; 1077 } 1078 } 1079 return -1; 1080 }, 1081 1082 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", 1083 1084 // Regular expressions 1085 1086 // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace 1087 whitespace = "[\\x20\\t\\r\\n\\f]", 1088 // http://www.w3.org/TR/css3-syntax/#characters 1089 characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", 1090 1091 // Loosely modeled on CSS identifier characters 1092 // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors 1093 // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier 1094 identifier = characterEncoding.replace( "w", "w#" ), 1095 1096 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors 1097 attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + 1098 // Operator (capture 2) 1099 "*([*^$|!~]?=)" + whitespace + 1100 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" 1101 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + 1102 "*\\]", 1103 1104 pseudos = ":(" + characterEncoding + ")(?:\\((" + 1105 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: 1106 // 1. quoted (capture 3; capture 4 or capture 5) 1107 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + 1108 // 2. simple (capture 6) 1109 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + 1110 // 3. anything else (capture 2) 1111 ".*" + 1112 ")\\)|)", 1113 1114 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter 1115 rwhitespace = new RegExp( whitespace + "+", "g" ), 1116 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), 1117 1118 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), 1119 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), 1120 1121 rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), 1122 1123 rpseudo = new RegExp( pseudos ), 1124 ridentifier = new RegExp( "^" + identifier + "$" ), 1125 1126 matchExpr = { 1127 "ID": new RegExp( "^#(" + characterEncoding + ")" ), 1128 "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), 1129 "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), 1130 "ATTR": new RegExp( "^" + attributes ), 1131 "PSEUDO": new RegExp( "^" + pseudos ), 1132 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + 1133 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + 1134 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), 1135 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), 1136 // For use in libraries implementing .is() 1137 // We use this for POS matching in `select` 1138 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + 1139 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) 1140 }, 1141
1142 rinputs = /^(?:input|select|textarea|button)$/i, 1143 rheader = /^h\d$/i, 1144 1145 rnative = /^[^{]+\{\s*\[native \w/, 1146 1147 // Easily-parseable/retrievable ID or TAG or CLASS selectors 1148 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, 1149 1150 rsibling = /[+~]/, 1151 rescape = /'|\\/g, 1152 1153 // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters 1154 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), 1155 funescape = function( _, escaped, escapedWhitespace ) { 1156 var high = "0x" + escaped - 0x10000; 1157 // NaN means non-codepoint 1158 // Support: Firefox<24 1159 // Workaround erroneous numeric interpretation of +"0x" 1160 return high !== high || escapedWhitespace ? 1161 escaped : 1162 high < 0 ? 1163 // BMP codepoint 1164 String.fromCharCode( high + 0x10000 ) : 1165 // Supplemental Plane codepoint (surrogate pair) 1166 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); 1167 }, 1168 1169 // Used for iframes 1170 // See setDocument() 1171 // Removing the function wrapper causes a "Permission Denied" 1172 // error in IE 1173 unloadHandler = function() { 1174 setDocument(); 1175 }; 1176 1177// Optimize for push.apply( _, NodeList ) 1178try { 1179 push.apply( 1180 (arr = slice.call( preferredDoc.childNodes )), 1181 preferredDoc.childNodes 1182 ); 1183 // Support: Android<4.0 1184 // Detect silently failing push.apply 1185 arr[ preferredDoc.childNodes.length ].nodeType; 1186} catch ( e ) { 1187 push = { apply: arr.length ? 1188 1189 // Leverage slice if possible 1190 function( target, els ) { 1191 push_native.apply( target, slice.call(els) ); 1192 } : 1193 1194 // Support: IE<9 1195 // Otherwise append directly 1196 function( target, els ) { 1197 var j = target.length, 1198 i = 0; 1199 // Can't trust NodeList.length 1200 while ( (target[j++] = els[i++]) ) {} 1201 target.length = j - 1; 1202 } 1203 }; 1204} 1205 1206function Sizzle( selector, context, results, seed ) { 1207 var match, elem, m, nodeType, 1208 // QSA vars 1209 i, groups, old, nid, newContext, newSelector; 1210 1211 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { 1212 setDocument( context ); 1213 } 1214 1215 context = context || document; 1216 results = results || []; 1217 nodeType = context.nodeType; 1218 1219 if ( typeof selector !== "string" || !selector || 1220 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { 1221 1222 return results; 1223 } 1224 1225 if ( !seed && documentIsHTML ) { 1226 1227 // Try to shortcut find operations when possible (e.g., not under DocumentFragment) 1228 if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { 1229 // Speed-up: Sizzle("#ID") 1230 if ( (m = match[1]) ) { 1231 if ( nodeType === 9 ) { 1232 elem = context.getElementById( m ); 1233 // Check parentNode to catch when Blackberry 4.6 returns 1234 // nodes that are no longer in the document (jQuery #6963) 1235 if ( elem && elem.parentNode ) { 1236 // Handle the case where IE, Opera, and Webkit return items 1237 // by name instead of ID 1238 if ( elem.id === m ) { 1239 results.push( elem ); 1240 return results; 1241 } 1242 } else { 1243 return results; 1244 } 1245 } else { 1246 // Context is not a document 1247 if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && 1248 contains( context, elem ) && elem.id === m ) { 1249 results.push( elem ); 1250 return results; 1251 } 1252 } 1253 1254 // Speed-up: Sizzle("TAG") 1255 } else if ( match[2] ) { 1256 push.apply( results, context.getElementsByTagName( selector ) ); 1257 return results; 1258 1259 // Speed-up: Sizzle(".CLASS") 1260 } else if ( (m = match[3]) && support.getElementsByClassName ) { 1261 push.apply( results, context.getElementsByClassName( m ) ); 1262 return results; 1263 } 1264 } 1265 1266 // QSA path 1267 if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { 1268 nid = old = expando; 1269 newContext = context; 1270 newSelector = nodeType !== 1 && selector; 1271 1272 // qSA works strangely on Element-rooted queries 1273 // We can work around this by specifying an extra ID on the root 1274 // and working up from there (Thanks to Andrew Dupont for the technique) 1275 // IE 8 doesn't work on object elements 1276 if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { 1277 groups = tokenize( selector ); 1278 1279 if ( (old = context.getAttribute("id")) ) { 1280 nid = old.replace( rescape, "\\$&" ); 1281 } else { 1282 context.setAttribute( "id", nid ); 1283 } 1284 nid = "[id='" + nid + "'] "; 1285 1286 i = groups.length; 1287 while ( i-- ) { 1288 groups[i] = nid + toSelector( groups[i] ); 1289 }
1290 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; 1291 newSelector = groups.join(","); 1292 } 1293 1294 if ( newSelector ) { 1295 try { 1296 push.apply( results, 1297 newContext.querySelectorAll( newSelector ) 1298 ); 1299 return results; 1300 } catch(qsaError) { 1301 } finally { 1302 if ( !old ) { 1303 context.removeAttribute("id"); 1304 } 1305 } 1306 } 1307 } 1308 } 1309 1310 // All others 1311 return select( selector.replace( rtrim, "$1" ), context, results, seed ); 1312} 1313 1314/** 1315 * Create key-value caches of limited size 1316 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with 1317 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) 1318 * deleting the oldest entry 1319 */ 1320function createCache() { 1321 var keys = []; 1322 1323 function cache( key, value ) { 1324 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) 1325 if ( keys.push( key + " " ) > Expr.cacheLength ) { 1326 // Only keep the most recent entries 1327 delete cache[ keys.shift() ]; 1328 } 1329 return (cache[ key + " " ] = value); 1330 } 1331 return cache; 1332} 1333 1334/** 1335 * Mark a function for special use by Sizzle 1336 * @param {Function} fn The function to mark 1337 */ 1338function markFunction( fn ) { 1339 fn[ expando ] = true; 1340 return fn; 1341} 1342 1343/** 1344 * Support testing using an element 1345 * @param {Function} fn Passed the created div and expects a boolean result 1346 */ 1347function assert( fn ) { 1348 var div = document.createElement("div"); 1349 1350 try { 1351 return !!fn( div ); 1352 } catch (e) { 1353 return false; 1354 } finally { 1355 // Remove from its parent by default 1356 if ( div.parentNode ) { 1357 div.parentNode.removeChild( div ); 1358 } 1359 // release memory in IE 1360 div = null; 1361 } 1362} 1363 1364/** 1365 * Adds the same handler for all of the specified attrs 1366 * @param {String} attrs Pipe-separated list of attributes 1367 * @param {Function} handler The method that will be applied 1368 */ 1369function addHandle( attrs, handler ) { 1370 var arr = attrs.split("|"), 1371 i = attrs.length; 1372 1373 while ( i-- ) { 1374 Expr.attrHandle[ arr[i] ] = handler; 1375 } 1376} 1377 1378/** 1379 * Checks document order of two siblings 1380 * @param {Element} a 1381 * @param {Element} b 1382 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b 1383 */ 1384function siblingCheck( a, b ) { 1385 var cur = b && a, 1386 diff = cur && a.nodeType === 1 && b.nodeType === 1 && 1387 ( ~b.sourceIndex || MAX_NEGATIVE ) - 1388 ( ~a.sourceIndex || MAX_NEGATIVE ); 1389 1390 // Use IE sourceIndex if available on both nodes 1391 if ( diff ) { 1392 return diff; 1393 } 1394 1395 // Check if b follows a 1396 if ( cur ) { 1397 while ( (cur = cur.nextSibling) ) { 1398 if ( cur === b ) { 1399 return -1; 1400 } 1401 } 1402 } 1403 1404 return a ? 1 : -1; 1405} 1406 1407/** 1408 * Returns a function to use in pseudos for input types 1409 * @param {String} type 1410 */ 1411function createInputPseudo( type ) { 1412 return function( elem ) { 1413 var name = elem.nodeName.toLowerCase(); 1414 return name === "input" && elem.type === type; 1415 }; 1416} 1417 1418/** 1419 * Returns a function to use in pseudos for buttons 1420 * @param {String} type 1421 */ 1422function createButtonPseudo( type ) { 1423 return function( elem ) { 1424 var name = elem.nodeName.toLowerCase(); 1425 return (name === "input" || name === "button") && elem.type === type; 1426 }; 1427} 1428 1429/** 1430 * Returns a function to use in pseudos for positionals 1431 * @param {Function} fn 1432 */ 1433function createPositionalPseudo( fn ) { 1434 return markFunction(function( argument ) { 1435 argument = +argument; 1436 return markFunction(function( seed, matches ) { 1437 var j, 1438 matchIndexes = fn( [], seed.length, argument ), 1439 i = matchIndexes.length; 1440 1441 // Match elements found at the specified indexes 1442 while ( i-- ) { 1443 if ( seed[ (j = matchIndexes[i]) ] ) { 1444 seed[j] = !(matches[j] = seed[j]); 1445 } 1446 } 1447 }); 1448 }); 1449} 1450 1451/** 1452 * Checks a node for validity as a Sizzle context 1453 * @param {Element|Object=} context 1454 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value 1455 */ 1456function testContext( context ) { 1457 return context && typeof context.getElementsByTagName !== "undefined" && context; 1458} 1459 1460// Expose support vars for convenience 1461support = Sizzle.support = {}; 1462 1463/** 1464 * Detects XML nodes 1465 * @param {Element|Object} elem An element or a document 1466 * @returns {Boolean} True iff elem is a non-HTML XML node 1467 */ 1468isXML = Sizzle.isXML = function( elem ) { 1469 // documentElement is verified for cases where it doesn't yet exist 1470 // (such as loading iframes in IE - #4833) 1471 var documentElement = elem && (elem.ownerDocument || elem).documentElement; 1472 return documentElement ? documentElement.nodeName !== "HTML" : false;
1473}; 1474 1475/** 1476 * Sets document-related variables once based on the current document 1477 * @param {Element|Object} [doc] An element or document object to use to set the document 1478 * @returns {Object} Returns the current document 1479 */ 1480setDocument = Sizzle.setDocument = function( node ) { 1481 var hasCompare, parent, 1482 doc = node ? node.ownerDocument || node : preferredDoc; 1483 1484 // If no document and documentElement is available, return 1485 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { 1486 return document; 1487 } 1488 1489 // Set our document 1490 document = doc; 1491 docElem = doc.documentElement; 1492 parent = doc.defaultView; 1493 1494 // Support: IE>8 1495 // If iframe document is assigned to "document" variable and if iframe has been reloaded, 1496 // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 1497 // IE6-8 do not support the defaultView property so parent will be undefined 1498 if ( parent && parent !== parent.top ) { 1499 // IE11 does not have attachEvent, so all must suffer 1500 if ( parent.addEventListener ) { 1501 parent.addEventListener( "unload", unloadHandler, false ); 1502 } else if ( parent.attachEvent ) { 1503 parent.attachEvent( "onunload", unloadHandler ); 1504 } 1505 } 1506 1507 /* Support tests 1508 ---------------------------------------------------------------------- */ 1509 documentIsHTML = !isXML( doc ); 1510 1511 /* Attributes 1512 ---------------------------------------------------------------------- */ 1513 1514 // Support: IE<8 1515 // Verify that getAttribute really returns attributes and not properties 1516 // (excepting IE8 booleans) 1517 support.attributes = assert(function( div ) { 1518 div.className = "i"; 1519 return !div.getAttribute("className"); 1520 }); 1521 1522 /* getElement(s)By* 1523 ---------------------------------------------------------------------- */ 1524 1525 // Check if getElementsByTagName("*") returns only elements 1526 support.getElementsByTagName = assert(function( div ) { 1527 div.appendChild( doc.createComment("") ); 1528 return !div.getElementsByTagName("*").length; 1529 }); 1530 1531 // Support: IE<9 1532 support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); 1533 1534 // Support: IE<10 1535 // Check if getElementById returns elements by name 1536 // The broken getElementById methods don't pick up programatically-set names, 1537 // so use a roundabout getElementsByName test 1538 support.getById = assert(function( div ) { 1539 docElem.appendChild( div ).id = expando; 1540 return !doc.getElementsByName || !doc.getElementsByName( expando ).length; 1541 }); 1542 1543 // ID find and filter 1544 if ( support.getById ) { 1545 Expr.find["ID"] = function( id, context ) { 1546 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 1547 var m = context.getElementById( id ); 1548 // Check parentNode to catch when Blackberry 4.6 returns 1549 // nodes that are no longer in the document #6963 1550 return m && m.parentNode ? [ m ] : []; 1551 } 1552 }; 1553 Expr.filter["ID"] = function( id ) { 1554 var attrId = id.replace( runescape, funescape ); 1555 return function( elem ) { 1556 return elem.getAttribute("id") === attrId; 1557 }; 1558 }; 1559 } else {
1560 // Support: IE6/7 1561 // getElementById is not reliable as a find shortcut 1562 delete Expr.find["ID"]; 1563 1564 Expr.filter["ID"] = function( id ) { 1565 var attrId = id.replace( runescape, funescape ); 1566 return function( elem ) { 1567 var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 1568 return node && node.value === attrId; 1569 }; 1570 }; 1571 } 1572 1573 // Tag 1574 Expr.find["TAG"] = support.getElementsByTagName ? 1575 function( tag, context ) { 1576 if ( typeof context.getElementsByTagName !== "undefined" ) { 1577 return context.getElementsByTagName( tag ); 1578 1579 // DocumentFragment nodes don't have gEBTN 1580 } else if ( support.qsa ) { 1581 return context.querySelectorAll( tag ); 1582 } 1583 } : 1584 1585 function( tag, context ) { 1586 var elem, 1587 tmp = [], 1588 i = 0, 1589 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too 1590 results = context.getElementsByTagName( tag ); 1591 1592 // Filter out possible comments 1593 if ( tag === "*" ) { 1594 while ( (elem = results[i++]) ) { 1595 if ( elem.nodeType === 1 ) { 1596 tmp.push( elem ); 1597 } 1598 } 1599 1600 return tmp; 1601 } 1602 return results; 1603 }; 1604 1605 // Class 1606 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { 1607 if ( documentIsHTML ) { 1608 return context.getElementsByClassName( className ); 1609 } 1610 }; 1611 1612 /* QSA/matchesSelector 1613 ---------------------------------------------------------------------- */ 1614 1615 // QSA and matchesSelector support 1616 1617 // matchesSelector(:active) reports false when true (IE9/Opera 11.5) 1618 rbuggyMatches = []; 1619 1620 // qSa(:focus) reports false when true (Chrome 21) 1621 // We allow this because of a bug in IE8/9 that throws an error 1622 // whenever `document.activeElement` is accessed on an iframe 1623 // So, we allow :focus to pass through QSA all the time to avoid the IE error 1624 // See http://bugs.jquery.com/ticket/13378 1625 rbuggyQSA = []; 1626 1627 if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { 1628 // Build QSA regex 1629 // Regex strategy adopted from Diego Perini 1630 assert(function( div ) { 1631 // Select is set to empty string on purpose 1632 // This is to test IE's treatment of not explicitly 1633 // setting a boolean content attribute, 1634 // since its presence should be enough 1635 // http://bugs.jquery.com/ticket/12359 1636 docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + 1637 "<select id='" + expando + "-\f]' msallowcapture=''>" + 1638 "<option selected=''></option></select>"; 1639 1640 // Support: IE8, Opera 11-12.16 1641 // Nothing should be selected when empty strings follow ^= or $= or *= 1642 // The test attribute must be unknown in Opera but "safe" for WinRT 1643 // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section 1644 if ( div.querySelectorAll("[msallowcapture^='']").length ) { 1645 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); 1646 } 1647 1648 // Support: IE8 1649 // Boolean attributes and "value" are not treated correctly 1650 if ( !div.querySelectorAll("[selected]").length ) { 1651 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); 1652 } 1653 1654 // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ 1655 if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { 1656 rbuggyQSA.push("~="); 1657 } 1658 1659 // Webkit/Opera - :checked should return selected option elements 1660 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 1661 // IE8 throws error here and will not see later tests 1662 if ( !div.querySelectorAll(":checked").length ) { 1663 rbuggyQSA.push(":checked"); 1664 } 1665 1666 // Support: Safari 8+, iOS 8+ 1667 // https://bugs.webkit.org/show_bug.cgi?id=136851 1668 // In-page `selector#id sibing-combinator selector` fails 1669 if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { 1670 rbuggyQSA.push(".#.+[+~]"); 1671 } 1672 }); 1673 1674 assert(function( div ) { 1675 // Support: Windows 8 Native Apps 1676 // The type and name attributes are restricted during .innerHTML assignment 1677 var input = doc.createElement("input"); 1678 input.setAttribute( "type", "hidden" ); 1679 div.appendChild( input ).setAttribute( "name", "D" ); 1680 1681 // Support: IE8 1682 // Enforce case-sensitivity of name attribute 1683 if ( div.querySelectorAll("[name=d]").length ) { 1684 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); 1685 } 1686 1687 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) 1688 // IE8 throws error here and will not see later tests 1689 if ( !div.querySelectorAll(":enabled").length ) { 1690 rbuggyQSA.push( ":enabled", ":disabled" ); 1691 } 1692
1693 // Opera 10-11 does not throw on post-comma invalid pseudos 1694 div.querySelectorAll("*,:x"); 1695 rbuggyQSA.push(",.*:"); 1696 }); 1697 } 1698 1699 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || 1700 docElem.webkitMatchesSelector || 1701 docElem.mozMatchesSelector || 1702 docElem.oMatchesSelector || 1703 docElem.msMatchesSelector) )) ) { 1704 1705 assert(function( div ) { 1706 // Check to see if it's possible to do matchesSelector 1707 // on a disconnected node (IE 9) 1708 support.disconnectedMatch = matches.call( div, "div" ); 1709 1710 // This should fail with an exception 1711 // Gecko does not error, returns false instead 1712 matches.call( div, "[s!='']:x" ); 1713 rbuggyMatches.push( "!=", pseudos ); 1714 }); 1715 } 1716 1717 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); 1718 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); 1719 1720 /* Contains 1721 ---------------------------------------------------------------------- */ 1722 hasCompare = rnative.test( docElem.compareDocumentPosition ); 1723 1724 // Element contains another 1725 // Purposefully does not implement inclusive descendent 1726 // As in, an element does not contain itself 1727 contains = hasCompare || rnative.test( docElem.contains ) ? 1728 function( a, b ) { 1729 var adown = a.nodeType === 9 ? a.documentElement : a, 1730 bup = b && b.parentNode; 1731 return a === bup || !!( bup && bup.nodeType === 1 && ( 1732 adown.contains ? 1733 adown.contains( bup ) : 1734 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 1735 )); 1736 } : 1737 function( a, b ) { 1738 if ( b ) { 1739 while ( (b = b.parentNode) ) { 1740 if ( b === a ) { 1741 return true; 1742 } 1743 } 1744 } 1745 return false; 1746 }; 1747 1748 /* Sorting 1749 ---------------------------------------------------------------------- */ 1750 1751 // Document order sorting 1752 sortOrder = hasCompare ? 1753 function( a, b ) { 1754 1755 // Flag for duplicate removal 1756 if ( a === b ) { 1757 hasDuplicate = true; 1758 return 0; 1759 } 1760 1761 // Sort on method existence if only one input has compareDocumentPosition 1762 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 1763 if ( compare ) { 1764 return compare; 1765 } 1766 1767 // Calculate position if both inputs belong to the same document 1768 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? 1769 a.compareDocumentPosition( b ) : 1770 1771 // Otherwise we know they are disconnected 1772 1; 1773 1774 // Disconnected nodes 1775 if ( compare & 1 || 1776 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { 1777 1778 // Choose the first element that is related to our preferred document 1779 if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { 1780 return -1; 1781 } 1782 if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { 1783 return 1; 1784 } 1785 1786 // Maintain original order 1787 return sortInput ? 1788 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1789 0; 1790 } 1791 1792 return compare & 4 ? -1 : 1; 1793 } : 1794 function( a, b ) { 1795 // Exit early if the nodes are identical 1796 if ( a === b ) { 1797 hasDuplicate = true; 1798 return 0; 1799 } 1800 1801 var cur, 1802 i = 0, 1803 aup = a.parentNode, 1804 bup = b.parentNode, 1805 ap = [ a ], 1806 bp = [ b ]; 1807 1808 // Parentless nodes are either documents or disconnected 1809 if ( !aup || !bup ) { 1810 return a === doc ? -1 : 1811 b === doc ? 1 : 1812 aup ? -1 : 1813 bup ? 1 : 1814 sortInput ? 1815 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1816 0; 1817 1818 // If the nodes are siblings, we can do a quick check 1819 } else if ( aup === bup ) { 1820 return siblingCheck( a, b ); 1821 } 1822 1823 // Otherwise we need full lists of their ancestors for comparison 1824 cur = a; 1825 while ( (cur = cur.parentNode) ) { 1826 ap.unshift( cur ); 1827 } 1828 cur = b; 1829 while ( (cur = cur.parentNode) ) { 1830 bp.unshift( cur ); 1831 } 1832 1833 // Walk down the tree looking for a discrepancy 1834 while ( ap[i] === bp[i] ) { 1835 i++; 1836 } 1837 1838 return i ? 1839 // Do a sibling check if the nodes have a common ancestor 1840 siblingCheck( ap[i], bp[i] ) : 1841 1842 // Otherwise nodes in our document sort first 1843 ap[i] === preferredDoc ? -1 : 1844 bp[i] === preferredDoc ? 1 : 1845 0; 1846 }; 1847 1848 return doc; 1849}; 1850 1851Sizzle.matches = function( expr, elements ) { 1852 return Sizzle( expr, null, null, elements ); 1853}; 1854 1855Sizzle.matchesSelector = function( elem, expr ) { 1856 // Set document vars if needed 1857 if ( ( elem.ownerDocument || elem ) !== document ) { 1858 setDocument( elem ); 1859 } 1860 1861 // Make sure that attribute selectors are quoted 1862 expr = expr.replace( rattributeQuotes, "='$1']" ); 1863 1864 if ( support.matchesSelector && documentIsHTML && 1865 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && 1866 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { 1867 1868 try { 1869 var ret = matches.call( elem, expr ); 1870 1871 // IE 9's matchesSelector returns false on disconnected nodes 1872 if ( ret || support.disconnectedMatch || 1873 // As well, disconnected nodes are said to be in a document 1874 // fragment in IE 9 1875 elem.document && elem.document.nodeType !== 11 ) { 1876 return ret; 1877 } 1878 } catch (e) {} 1879 } 1880 1881 return Sizzle( expr, document, null, [ elem ] ).length > 0; 1882}; 1883 1884Sizzle.contains = function( context, elem ) { 1885 // Set document vars if needed 1886 if ( ( context.ownerDocument || context ) !== document ) { 1887 setDocument( context ); 1888 } 1889 return contains( context, elem ); 1890}; 1891 1892Sizzle.attr = function( elem, name ) { 1893 // Set document vars if needed 1894 if ( ( elem.ownerDocument || elem ) !== document ) { 1895 setDocument( elem ); 1896 } 1897 1898 var fn = Expr.attrHandle[ name.toLowerCase() ], 1899 // Don't get fooled by Object.prototype properties (jQuery #13807) 1900 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? 1901 fn( elem, name, !documentIsHTML ) : 1902 undefined; 1903 1904 return val !== undefined ? 1905 val : 1906 support.attributes || !documentIsHTML ? 1907 elem.getAttribute( name ) : 1908 (val = elem.getAttributeNode(name)) && val.specified ? 1909 val.value : 1910 null; 1911}; 1912 1913Sizzle.error = function( msg ) { 1914 throw new Error( "Syntax error, unrecognized expression: " + msg ); 1915}; 1916 1917/** 1918 * Document sorting and removing duplicates 1919 * @param {ArrayLike} results 1920 */ 1921Sizzle.uniqueSort = function( results ) { 1922 var elem, 1923 duplicates = [], 1924 j = 0, 1925 i = 0; 1926 1927 // Unless we *know* we can detect duplicates, assume their presence 1928 hasDuplicate = !support.detectDuplicates; 1929 sortInput = !support.sortStable && results.slice( 0 ); 1930 results.sort( sortOrder ); 1931 1932 if ( hasDuplicate ) { 1933 while ( (elem = results[i++]) ) { 1934 if ( elem === results[ i ] ) { 1935 j = duplicates.push( i ); 1936 } 1937 } 1938 while ( j-- ) { 1939 results.splice( duplicates[ j ], 1 ); 1940 } 1941 } 1942 1943 // Clear input after sorting to release objects 1944 // See https://github.com/jquery/sizzle/pull/225 1945 sortInput = null; 1946 1947 return results; 1948}; 1949 1950/** 1951 * Utility function for retrieving the text value of an array of DOM nodes 1952 * @param {Array|Element} elem 1953 */ 1954getText = Sizzle.getText = function( elem ) { 1955 var node, 1956 ret = "", 1957 i = 0, 1958 nodeType = elem.nodeType; 1959 1960 if ( !nodeType ) { 1961 // If no nodeType, this is expected to be an array 1962 while ( (node = elem[i++]) ) {
1963 // Do not traverse comment nodes 1964 ret += getText( node ); 1965 } 1966 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { 1967 // Use textContent for elements 1968 // innerText usage removed for consistency of new lines (jQuery #11153) 1969 if ( typeof elem.textContent === "string" ) { 1970 return elem.textContent; 1971 } else { 1972 // Traverse its children 1973 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 1974 ret += getText( elem ); 1975 } 1976 } 1977 } else if ( nodeType === 3 || nodeType === 4 ) { 1978 return elem.nodeValue; 1979 } 1980 // Do not include comment or processing instruction nodes 1981 1982 return ret; 1983}; 1984 1985Expr = Sizzle.selectors = { 1986 1987 // Can be adjusted by the user 1988 cacheLength: 50, 1989 1990 createPseudo: markFunction, 1991 1992 match: matchExpr, 1993 1994 attrHandle: {}, 1995 1996 find: {}, 1997 1998 relative: { 1999 ">": { dir: "parentNode", first: true }, 2000 " ": { dir: "parentNode" }, 2001 "+": { dir: "previousSibling", first: true }, 2002 "~": { dir: "previousSibling" } 2003 }, 2004 2005 preFilter: { 2006 "ATTR": function( match ) { 2007 match[1] = match[1].replace( runescape, funescape ); 2008 2009 // Move the given value to match[3] whether quoted or unquoted 2010 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); 2011 2012 if ( match[2] === "~=" ) { 2013 match[3] = " " + match[3] + " "; 2014 } 2015 2016 return match.slice( 0, 4 ); 2017 }, 2018 2019 "CHILD": function( match ) { 2020 /* matches from matchExpr["CHILD"] 2021 1 type (only|nth|...) 2022 2 what (child|of-type) 2023 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 2024 4 xn-component of xn+y argument ([+-]?\d*n|) 2025 5 sign of xn-component 2026 6 x of xn-component 2027 7 sign of y-component 2028 8 y of y-component 2029 */ 2030 match[1] = match[1].toLowerCase(); 2031 2032 if ( match[1].slice( 0, 3 ) === "nth" ) { 2033 // nth-* requires argument 2034 if ( !match[3] ) { 2035 Sizzle.error( match[0] ); 2036 } 2037 2038 // numeric x and y parameters for Expr.filter.CHILD 2039 // remember that false/true cast respectively to 0/1 2040 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); 2041 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); 2042 2043 // other types prohibit arguments 2044 } else if ( match[3] ) { 2045 Sizzle.error( match[0] ); 2046 } 2047 2048 return match; 2049 }, 2050 2051 "PSEUDO": function( match ) { 2052 var excess, 2053 unquoted = !match[6] && match[2]; 2054 2055 if ( matchExpr["CHILD"].test( match[0] ) ) { 2056 return null; 2057 } 2058 2059 // Accept quoted arguments as-is 2060 if ( match[3] ) { 2061 match[2] = match[4] || match[5] || ""; 2062 2063 // Strip excess characters from unquoted arguments 2064 } else if ( unquoted && rpseudo.test( unquoted ) && 2065 // Get excess from tokenize (recursively) 2066 (excess = tokenize( unquoted, true )) && 2067 // advance to the next closing parenthesis 2068 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { 2069 2070 // excess is a negative index 2071 match[0] = match[0].slice( 0, excess ); 2072 match[2] = unquoted.slice( 0, excess ); 2073 } 2074 2075 // Return only captures needed by the pseudo filter method (type and argument) 2076 return match.slice( 0, 3 ); 2077 } 2078 }, 2079 2080 filter: { 2081 2082 "TAG": function( nodeNameSelector ) { 2083 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); 2084 return nodeNameSelector === "*" ? 2085 function() { return true; } : 2086 function( elem ) { 2087 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; 2088 }; 2089 }, 2090 2091 "CLASS": function( className ) { 2092 var pattern = classCache[ className + " " ]; 2093 2094 return pattern || 2095 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && 2096 classCache( className, function( elem ) { 2097 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); 2098 }); 2099 }, 2100 2101 "ATTR": function( name, operator, check ) { 2102 return function( elem ) { 2103 var result = Sizzle.attr( elem, name ); 2104 2105 if ( result == null ) { 2106 return operator === "!="; 2107 } 2108 if ( !operator ) { 2109 return true; 2110 } 2111 2112 result += ""; 2113 2114 return operator === "=" ? result === check : 2115 operator === "!=" ? result !== check :
2116 operator === "^=" ? check && result.indexOf( check ) === 0 : 2117 operator === "*=" ? check && result.indexOf( check ) > -1 : 2118 operator === "$=" ? check && result.slice( -check.length ) === check : 2119 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : 2120 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : 2121 false; 2122 }; 2123 }, 2124 2125 "CHILD": function( type, what, argument, first, last ) { 2126 var simple = type.slice( 0, 3 ) !== "nth", 2127 forward = type.slice( -4 ) !== "last", 2128 ofType = what === "of-type"; 2129 2130 return first === 1 && last === 0 ? 2131 2132 // Shortcut for :nth-*(n) 2133 function( elem ) { 2134 return !!elem.parentNode; 2135 } : 2136 2137 function( elem, context, xml ) { 2138 var cache, outerCache, node, diff, nodeIndex, start, 2139 dir = simple !== forward ? "nextSibling" : "previousSibling", 2140 parent = elem.parentNode, 2141 name = ofType && elem.nodeName.toLowerCase(), 2142 useCache = !xml && !ofType; 2143 2144 if ( parent ) { 2145 2146 // :(first|last|only)-(child|of-type) 2147 if ( simple ) { 2148 while ( dir ) { 2149 node = elem; 2150 while ( (node = node[ dir ]) ) { 2151 if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { 2152 return false; 2153 } 2154 } 2155 // Reverse direction for :only-* (if we haven't yet done so) 2156 start = dir = type === "only" && !start && "nextSibling"; 2157 } 2158 return true; 2159 } 2160 2161 start = [ forward ? parent.firstChild : parent.lastChild ]; 2162 2163 // non-xml :nth-child(...) stores cache data on `parent` 2164 if ( forward && useCache ) { 2165 // Seek `elem` from a previously-cached index 2166 outerCache = parent[ expando ] || (parent[ expando ] = {}); 2167 cache = outerCache[ type ] || []; 2168 nodeIndex = cache[0] === dirruns && cache[1]; 2169 diff = cache[0] === dirruns && cache[2]; 2170 node = nodeIndex && parent.childNodes[ nodeIndex ]; 2171 2172 while ( (node = ++nodeIndex && node && node[ dir ] || 2173 2174 // Fallback to seeking `elem` from the start 2175 (diff = nodeIndex = 0) || start.pop()) ) { 2176 2177 // When found, cache indexes on `parent` and break 2178 if ( node.nodeType === 1 && ++diff && node === elem ) { 2179 outerCache[ type ] = [ dirruns, nodeIndex, diff ]; 2180 break; 2181 } 2182 } 2183 2184 // Use previously-cached element index if available 2185 } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { 2186 diff = cache[1]; 2187 2188 // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) 2189 } else { 2190 // Use the same loop as above to seek `elem` from the start 2191 while ( (node = ++nodeIndex && node && node[ dir ] || 2192 (diff = nodeIndex = 0) || start.pop()) ) { 2193 2194 if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { 2195 // Cache the index of each encountered element 2196 if ( useCache ) { 2197 (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; 2198 } 2199 2200 if ( node === elem ) { 2201 break; 2202 } 2203 } 2204 } 2205 } 2206 2207 // Incorporate the offset, then check against cycle size 2208 diff -= last; 2209 return diff === first || ( diff % first === 0 && diff / first >= 0 ); 2210 } 2211 }; 2212 }, 2213 2214 "PSEUDO": function( pseudo, argument ) { 2215 // pseudo-class names are case-insensitive 2216 // http://www.w3.org/TR/selectors/#pseudo-classes 2217 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters 2218 // Remember that setFilters inherits from pseudos 2219 var args, 2220 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || 2221 Sizzle.error( "unsupported pseudo: " + pseudo ); 2222 2223 // The user may use createPseudo to indicate that 2224 // arguments are needed to create the filter function 2225 // just as Sizzle does 2226 if ( fn[ expando ] ) { 2227 return fn( argument ); 2228 } 2229 2230 // But maintain support for old signatures 2231 if ( fn.length > 1 ) { 2232 args = [ pseudo, pseudo, "", argument ]; 2233 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? 2234 markFunction(function( seed, matches ) { 2235 var idx, 2236 matched = fn( seed, argument ), 2237 i = matched.length; 2238 while ( i-- ) { 2239 idx = indexOf( seed, matched[i] ); 2240 seed[ idx ] = !( matches[ idx ] = matched[i] ); 2241 } 2242 }) : 2243 function( elem ) { 2244 return fn( elem, 0, args ); 2245 }; 2246 } 2247 2248 return fn; 2249 } 2250 }, 2251 2252 pseudos: { 2253 // Potentially complex pseudos 2254 "not": markFunction(function( selector ) { 2255 // Trim the selector passed to compile 2256 // to avoid treating leading and trailing 2257 // spaces as combinators 2258 var input = [], 2259 results = [], 2260 matcher = compile( selector.replace( rtrim, "$1" ) ); 2261 2262 return matcher[ expando ] ? 2263 markFunction(function( seed, matches, context, xml ) { 2264 var elem, 2265 unmatched = matcher( seed, null, xml, [] ), 2266 i = seed.length; 2267 2268 // Match elements unmatched by `matcher` 2269 while ( i-- ) { 2270 if ( (elem = unmatched[i]) ) { 2271 seed[i] = !(matches[i] = elem); 2272 } 2273 } 2274 }) : 2275 function( elem, context, xml ) { 2276 input[0] = elem; 2277 matcher( input, null, xml, results ); 2278 // Don't keep the element (issue #299) 2279 input[0] = null; 2280 return !results.pop(); 2281 }; 2282 }), 2283 2284 "has": markFunction(function( selector ) { 2285 return function( elem ) { 2286 return Sizzle( selector, elem ).length > 0; 2287 }; 2288 }), 2289 2290 "contains": markFunction(function( text ) { 2291 text = text.replace( runescape, funescape ); 2292 return function( elem ) { 2293 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; 2294 }; 2295 }), 2296 2297 // "Whether an element is represented by a :lang() selector 2298 // is based solely on the element's language value 2299 // being equal to the identifier C, 2300 // or beginning with the identifier C immediately followed by "-". 2301 // The matching of C against the element's language value is performed case-insensitively. 2302 // The identifier C does not have to be a valid language name." 2303 // http://www.w3.org/TR/selectors/#lang-pseudo 2304 "lang": markFunction( function( lang ) { 2305 // lang value must be a valid identifier 2306 if ( !ridentifier.test(lang || "") ) { 2307 Sizzle.error( "unsupported lang: " + lang ); 2308 } 2309 lang = lang.replace( runescape, funescape ).toLowerCase(); 2310 return function( elem ) { 2311 var elemLang; 2312 do { 2313 if ( (elemLang = documentIsHTML ? 2314 elem.lang : 2315 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { 2316 2317 elemLang = elemLang.toLowerCase(); 2318 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; 2319 } 2320 } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); 2321 return false;
2322 }; 2323 }), 2324 2325 // Miscellaneous 2326 "target": function( elem ) { 2327 var hash = window.location && window.location.hash; 2328 return hash && hash.slice( 1 ) === elem.id; 2329 }, 2330 2331 "root": function( elem ) { 2332 return elem === docElem; 2333 }, 2334 2335 "focus": function( elem ) { 2336 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); 2337 }, 2338 2339 // Boolean properties 2340 "enabled": function( elem ) { 2341 return elem.disabled === false; 2342 }, 2343 2344 "disabled": function( elem ) { 2345 return elem.disabled === true; 2346 }, 2347 2348 "checked": function( elem ) { 2349 // In CSS3, :checked should return both checked and selected elements 2350 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 2351 var nodeName = elem.nodeName.toLowerCase(); 2352 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); 2353 }, 2354 2355 "selected": function( elem ) { 2356 // Accessing this property makes selected-by-default 2357 // options in Safari work properly 2358 if ( elem.parentNode ) { 2359 elem.parentNode.selectedIndex; 2360 } 2361 2362 return elem.selected === true; 2363 }, 2364 2365 // Contents 2366 "empty": function( elem ) { 2367 // http://www.w3.org/TR/selectors/#empty-pseudo 2368 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), 2369 // but not by others (comment: 8; processing instruction: 7; etc.) 2370 // nodeType < 6 works because attributes (2) do not appear as children 2371 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 2372 if ( elem.nodeType < 6 ) { 2373 return false; 2374 } 2375 } 2376 return true; 2377 }, 2378 2379 "parent": function( elem ) { 2380 return !Expr.pseudos["empty"]( elem ); 2381 }, 2382 2383 // Element/input types 2384 "header": function( elem ) { 2385 return rheader.test( elem.nodeName ); 2386 }, 2387 2388 "input": function( elem ) { 2389 return rinputs.test( elem.nodeName ); 2390 }, 2391 2392 "button": function( elem ) { 2393 var name = elem.nodeName.toLowerCase(); 2394 return name === "input" && elem.type === "button" || name === "button"; 2395 }, 2396 2397 "text": function( elem ) { 2398 var attr; 2399 return elem.nodeName.toLowerCase() === "input" && 2400 elem.type === "text" && 2401 2402 // Support: IE<8 2403 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" 2404 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); 2405 }, 2406 2407 // Position-in-collection 2408 "first": createPositionalPseudo(function() { 2409 return [ 0 ]; 2410 }), 2411 2412 "last": createPositionalPseudo(function( matchIndexes, length ) { 2413 return [ length - 1 ]; 2414 }), 2415 2416 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { 2417 return [ argument < 0 ? argument + length : argument ]; 2418 }), 2419 2420 "even": createPositionalPseudo(function( matchIndexes, length ) { 2421 var i = 0; 2422 for ( ; i < length; i += 2 ) { 2423 matchIndexes.push( i ); 2424 } 2425 return matchIndexes; 2426 }), 2427 2428 "odd": createPositionalPseudo(function( matchIndexes, length ) { 2429 var i = 1; 2430 for ( ; i < length; i += 2 ) { 2431 matchIndexes.push( i ); 2432 } 2433 return matchIndexes; 2434 }), 2435 2436 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { 2437 var i = argument < 0 ? argument + length : argument; 2438 for ( ; --i >= 0; ) { 2439 matchIndexes.push( i ); 2440 } 2441 return matchIndexes; 2442 }), 2443 2444 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { 2445 var i = argument < 0 ? argument + length : argument; 2446 for ( ; ++i < length; ) { 2447 matchIndexes.push( i ); 2448 } 2449 return matchIndexes; 2450 }) 2451 } 2452}; 2453 2454Expr.pseudos["nth"] = Expr.pseudos["eq"]; 2455 2456// Add button/input type pseudos 2457for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { 2458 Expr.pseudos[ i ] = createInputPseudo( i ); 2459} 2460for ( i in { submit: true, reset: true } ) { 2461 Expr.pseudos[ i ] = createButtonPseudo( i ); 2462} 2463 2464// Easy API for creating new setFilters 2465function setFilters() {} 2466setFilters.prototype = Expr.filters = Expr.pseudos; 2467Expr.setFilters = new setFilters(); 2468 2469tokenize = Sizzle.tokenize = function( selector, parseOnly ) { 2470 var matched, match, tokens, type, 2471 soFar, groups, preFilters, 2472 cached = tokenCache[ selector + " " ]; 2473 2474 if ( cached ) { 2475 return parseOnly ? 0 : cached.slice( 0 ); 2476 } 2477 2478 soFar = selector; 2479 groups = []; 2480 preFilters = Expr.preFilter; 2481 2482 while ( soFar ) { 2483 2484 // Comma and first run 2485 if ( !matched || (match = rcomma.exec( soFar )) ) { 2486 if ( match ) { 2487 // Don't consume trailing commas as valid 2488 soFar = soFar.slice( match[0].length ) || soFar; 2489 } 2490 groups.push( (tokens = []) ); 2491 } 2492 2493 matched = false;
vendor: 13,530 bytes, lines 2494-2972
2494 2495 // Combinators 2496 if ( (match = rcombinators.exec( soFar )) ) { 2497 matched = match.shift(); 2498 tokens.push({ 2499 value: matched, 2500 // Cast descendant combinators to space 2501 type: match[0].replace( rtrim, " " ) 2502 }); 2503 soFar = soFar.slice( matched.length ); 2504 } 2505 2506 // Filters 2507 for ( type in Expr.filter ) { 2508 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || 2509 (match = preFilters[ type ]( match ))) ) { 2510 matched = match.shift(); 2511 tokens.push({ 2512 value: matched, 2513 type: type, 2514 matches: match 2515 }); 2516 soFar = soFar.slice( matched.length ); 2517 } 2518 } 2519 2520 if ( !matched ) { 2521 break; 2522 } 2523 } 2524 2525 // Return the length of the invalid excess 2526 // if we're just parsing 2527 // Otherwise, throw an error or return tokens 2528 return parseOnly ? 2529 soFar.length : 2530 soFar ? 2531 Sizzle.error( selector ) : 2532 // Cache the tokens 2533 tokenCache( selector, groups ).slice( 0 ); 2534}; 2535 2536function toSelector( tokens ) { 2537 var i = 0, 2538 len = tokens.length, 2539 selector = ""; 2540 for ( ; i < len; i++ ) { 2541 selector += tokens[i].value; 2542 } 2543 return selector; 2544} 2545 2546function addCombinator( matcher, combinator, base ) { 2547 var dir = combinator.dir, 2548 checkNonElements = base && dir === "parentNode", 2549 doneName = done++; 2550 2551 return combinator.first ? 2552 // Check against closest ancestor/preceding element 2553 function( elem, context, xml ) { 2554 while ( (elem = elem[ dir ]) ) { 2555 if ( elem.nodeType === 1 || checkNonElements ) { 2556 return matcher( elem, context, xml ); 2557 } 2558 } 2559 } : 2560 2561 // Check against all ancestor/preceding elements 2562 function( elem, context, xml ) { 2563 var oldCache, outerCache, 2564 newCache = [ dirruns, doneName ]; 2565 2566 // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching 2567 if ( xml ) { 2568 while ( (elem = elem[ dir ]) ) { 2569 if ( elem.nodeType === 1 || checkNonElements ) { 2570 if ( matcher( elem, context, xml ) ) { 2571 return true; 2572 } 2573 } 2574 } 2575 } else { 2576 while ( (elem = elem[ dir ]) ) { 2577 if ( elem.nodeType === 1 || checkNonElements ) { 2578 outerCache = elem[ expando ] || (elem[ expando ] = {}); 2579 if ( (oldCache = outerCache[ dir ]) && 2580 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { 2581 2582 // Assign to newCache so results back-propagate to previous elements 2583 return (newCache[ 2 ] = oldCache[ 2 ]); 2584 } else { 2585 // Reuse newcache so results back-propagate to previous elements 2586 outerCache[ dir ] = newCache; 2587 2588 // A match means we're done; a fail means we have to keep checking 2589 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { 2590 return true; 2591 } 2592 } 2593 } 2594 } 2595 } 2596 }; 2597} 2598 2599function elementMatcher( matchers ) { 2600 return matchers.length > 1 ? 2601 function( elem, context, xml ) { 2602 var i = matchers.length; 2603 while ( i-- ) { 2604 if ( !matchers[i]( elem, context, xml ) ) { 2605 return false; 2606 } 2607 } 2608 return true; 2609 } : 2610 matchers[0]; 2611} 2612 2613function multipleContexts( selector, contexts, results ) { 2614 var i = 0, 2615 len = contexts.length; 2616 for ( ; i < len; i++ ) { 2617 Sizzle( selector, contexts[i], results ); 2618 } 2619 return results; 2620} 2621 2622function condense( unmatched, map, filter, context, xml ) { 2623 var elem, 2624 newUnmatched = [], 2625 i = 0, 2626 len = unmatched.length, 2627 mapped = map != null; 2628 2629 for ( ; i < len; i++ ) { 2630 if ( (elem = unmatched[i]) ) { 2631 if ( !filter || filter( elem, context, xml ) ) { 2632 newUnmatched.push( elem ); 2633 if ( mapped ) { 2634 map.push( i ); 2635 } 2636 } 2637 } 2638 } 2639 2640 return newUnmatched; 2641} 2642 2643function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { 2644 if ( postFilter && !postFilter[ expando ] ) { 2645 postFilter = setMatcher( postFilter ); 2646 } 2647 if ( postFinder && !postFinder[ expando ] ) { 2648 postFinder = setMatcher( postFinder, postSelector ); 2649 } 2650 return markFunction(function( seed, results, context, xml ) { 2651 var temp, i, elem, 2652 preMap = [], 2653 postMap = [], 2654 preexisting = results.length, 2655 2656 // Get initial elements from seed or context 2657 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), 2658 2659 // Prefilter to get matcher input, preserving a map for seed-results synchronization 2660 matcherIn = preFilter && ( seed || !selector ) ? 2661 condense( elems, preMap, preFilter, context, xml ) : 2662 elems, 2663 2664 matcherOut = matcher ? 2665 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, 2666 postFinder || ( seed ? preFilter : preexisting || postFilter ) ? 2667 2668 // ...intermediate processing is necessary 2669 [] : 2670 2671 // ...otherwise use results directly 2672 results : 2673 matcherIn; 2674 2675 // Find primary matches 2676 if ( matcher ) { 2677 matcher( matcherIn, matcherOut, context, xml ); 2678 } 2679 2680 // Apply postFilter 2681 if ( postFilter ) { 2682 temp = condense( matcherOut, postMap ); 2683 postFilter( temp, [], context, xml ); 2684 2685 // Un-match failing elements by moving them back to matcherIn 2686 i = temp.length; 2687 while ( i-- ) { 2688 if ( (elem = temp[i]) ) { 2689 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); 2690 } 2691 } 2692 } 2693 2694 if ( seed ) { 2695 if ( postFinder || preFilter ) { 2696 if ( postFinder ) { 2697 // Get the final matcherOut by condensing this intermediate into postFinder contexts 2698 temp = []; 2699 i = matcherOut.length; 2700 while ( i-- ) { 2701 if ( (elem = matcherOut[i]) ) { 2702 // Restore matcherIn since elem is not yet a final match 2703 temp.push( (matcherIn[i] = elem) ); 2704 } 2705 } 2706 postFinder( null, (matcherOut = []), temp, xml ); 2707 } 2708 2709 // Move matched elements from seed to results to keep them synchronized 2710 i = matcherOut.length; 2711 while ( i-- ) { 2712 if ( (elem = matcherOut[i]) && 2713 (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { 2714 2715 seed[temp] = !(results[temp] = elem); 2716 } 2717 } 2718 } 2719 2720 // Add elements to results, through postFinder if defined 2721 } else { 2722 matcherOut = condense( 2723 matcherOut === results ? 2724 matcherOut.splice( preexisting, matcherOut.length ) : 2725 matcherOut 2726 ); 2727 if ( postFinder ) { 2728 postFinder( null, results, matcherOut, xml ); 2729 } else { 2730 push.apply( results, matcherOut ); 2731 } 2732 } 2733 }); 2734} 2735 2736function matcherFromTokens( tokens ) { 2737 var checkContext, matcher, j, 2738 len = tokens.length, 2739 leadingRelative = Expr.relative[ tokens[0].type ], 2740 implicitRelative = leadingRelative || Expr.relative[" "], 2741 i = leadingRelative ? 1 : 0, 2742 2743 // The foundational matcher ensures that elements are reachable from top-level context(s) 2744 matchContext = addCombinator( function( elem ) { 2745 return elem === checkContext; 2746 }, implicitRelative, true ), 2747 matchAnyContext = addCombinator( function( elem ) { 2748 return indexOf( checkContext, elem ) > -1; 2749 }, implicitRelative, true ), 2750 matchers = [ function( elem, context, xml ) { 2751 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( 2752 (checkContext = context).nodeType ? 2753 matchContext( elem, context, xml ) : 2754 matchAnyContext( elem, context, xml ) ); 2755 // Avoid hanging onto element (issue #299) 2756 checkContext = null; 2757 return ret; 2758 } ]; 2759 2760 for ( ; i < len; i++ ) { 2761 if ( (matcher = Expr.relative[ tokens[i].type ]) ) { 2762 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; 2763 } else { 2764 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); 2765 2766 // Return special upon seeing a positional matcher 2767 if ( matcher[ expando ] ) { 2768 // Find the next relative operator (if any) for proper handling 2769 j = ++i; 2770 for ( ; j < len; j++ ) { 2771 if ( Expr.relative[ tokens[j].type ] ) { 2772 break; 2773 } 2774 } 2775 return setMatcher( 2776 i > 1 && elementMatcher( matchers ), 2777 i > 1 && toSelector( 2778 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 2779 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) 2780 ).replace( rtrim, "$1" ), 2781 matcher, 2782 i < j && matcherFromTokens( tokens.slice( i, j ) ), 2783 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), 2784 j < len && toSelector( tokens ) 2785 ); 2786 } 2787 matchers.push( matcher ); 2788 } 2789 } 2790 2791 return elementMatcher( matchers ); 2792} 2793 2794function matcherFromGroupMatchers( elementMatchers, setMatchers ) { 2795 var bySet = setMatchers.length > 0, 2796 byElement = elementMatchers.length > 0, 2797 superMatcher = function( seed, context, xml, results, outermost ) { 2798 var elem, j, matcher, 2799 matchedCount = 0, 2800 i = "0", 2801 unmatched = seed && [], 2802 setMatched = [], 2803 contextBackup = outermostContext, 2804 // We must always have either seed elements or outermost context 2805 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), 2806 // Use integer dirruns iff this is the outermost matcher 2807 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), 2808 len = elems.length; 2809 2810 if ( outermost ) { 2811 outermostContext = context !== document && context; 2812 } 2813 2814 // Add elements passing elementMatchers directly to results 2815 // Keep `i` a string if there are no elements so `matchedCount` will be "00" below 2816 // Support: IE<9, Safari 2817 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id 2818 for ( ; i !== len && (elem = elems[i]) != null; i++ ) { 2819 if ( byElement && elem ) { 2820 j = 0; 2821 while ( (matcher = elementMatchers[j++]) ) { 2822 if ( matcher( elem, context, xml ) ) { 2823 results.push( elem ); 2824 break; 2825 } 2826 } 2827 if ( outermost ) { 2828 dirruns = dirrunsUnique; 2829 } 2830 } 2831 2832 // Track unmatched elements for set filters 2833 if ( bySet ) { 2834 // They will have gone through all possible matchers 2835 if ( (elem = !matcher && elem) ) { 2836 matchedCount--; 2837 } 2838 2839 // Lengthen the array for every element, matched or not 2840 if ( seed ) { 2841 unmatched.push( elem ); 2842 } 2843 } 2844 } 2845 2846 // Apply set filters to unmatched elements 2847 matchedCount += i; 2848 if ( bySet && i !== matchedCount ) { 2849 j = 0; 2850 while ( (matcher = setMatchers[j++]) ) { 2851 matcher( unmatched, setMatched, context, xml ); 2852 } 2853 2854 if ( seed ) { 2855 // Reintegrate element matches to eliminate the need for sorting 2856 if ( matchedCount > 0 ) { 2857 while ( i-- ) { 2858 if ( !(unmatched[i] || setMatched[i]) ) { 2859 setMatched[i] = pop.call( results ); 2860 } 2861 } 2862 } 2863 2864 // Discard index placeholder values to get only actual matches 2865 setMatched = condense( setMatched ); 2866 } 2867 2868 // Add matches to results 2869 push.apply( results, setMatched ); 2870 2871 // Seedless set matches succeeding multiple successful matchers stipulate sorting 2872 if ( outermost && !seed && setMatched.length > 0 && 2873 ( matchedCount + setMatchers.length ) > 1 ) { 2874 2875 Sizzle.uniqueSort( results ); 2876 } 2877 } 2878 2879 // Override manipulation of globals by nested matchers 2880 if ( outermost ) { 2881 dirruns = dirrunsUnique; 2882 outermostContext = contextBackup; 2883 } 2884 2885 return unmatched; 2886 }; 2887 2888 return bySet ? 2889 markFunction( superMatcher ) : 2890 superMatcher; 2891} 2892 2893compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { 2894 var i, 2895 setMatchers = [], 2896 elementMatchers = [], 2897 cached = compilerCache[ selector + " " ]; 2898 2899 if ( !cached ) { 2900 // Generate a function of recursive functions that can be used to check each element 2901 if ( !match ) { 2902 match = tokenize( selector ); 2903 } 2904 i = match.length; 2905 while ( i-- ) { 2906 cached = matcherFromTokens( match[i] ); 2907 if ( cached[ expando ] ) { 2908 setMatchers.push( cached ); 2909 } else { 2910 elementMatchers.push( cached ); 2911 } 2912 } 2913 2914 // Cache the compiled function 2915 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); 2916 2917 // Save selector and tokenization 2918 cached.selector = selector; 2919 } 2920 return cached; 2921}; 2922 2923/** 2924 * A low-level selection function that works with Sizzle's compiled 2925 * selector functions 2926 * @param {String|Function} selector A selector or a pre-compiled 2927 * selector function built with Sizzle.compile 2928 * @param {Element} context 2929 * @param {Array} [results] 2930 * @param {Array} [seed] A set of elements to match against 2931 */ 2932select = Sizzle.select = function( selector, context, results, seed ) { 2933 var i, tokens, token, type, find, 2934 compiled = typeof selector === "function" && selector, 2935 match = !seed && tokenize( (selector = compiled.selector || selector) ); 2936 2937 results = results || []; 2938 2939 // Try to minimize operations if there is no seed and only one group 2940 if ( match.length === 1 ) { 2941 2942 // Take a shortcut and set the context if the root selector is an ID 2943 tokens = match[0] = match[0].slice( 0 ); 2944 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && 2945 support.getById && context.nodeType === 9 && documentIsHTML && 2946 Expr.relative[ tokens[1].type ] ) { 2947 2948 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; 2949 if ( !context ) { 2950 return results; 2951 2952 // Precompiled matchers will still verify ancestry, so step up a level 2953 } else if ( compiled ) { 2954 context = context.parentNode; 2955 } 2956 2957 selector = selector.slice( tokens.shift().value.length ); 2958 } 2959 2960 // Fetch a seed set for right-to-left matching 2961 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; 2962 while ( i-- ) { 2963 token = tokens[i]; 2964 2965 // Abort if we hit a combinator 2966 if ( Expr.relative[ (type = token.type) ] ) { 2967 break; 2968 } 2969 if ( (find = Expr.find[ type ]) ) { 2970 // Search, expanding context for leading sibling combinators 2971 if ( (seed = find( 2972 token.matches[0].replace( runescape, funescape ),
2973 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context 2974 )) ) { 2975 2976 // If seed is empty or no tokens remain, we can return early 2977 tokens.splice( i, 1 ); 2978 selector = seed.length && toSelector( tokens ); 2979 if ( !selector ) { 2980 push.apply( results, seed ); 2981 return results; 2982 } 2983 2984 break; 2985 } 2986 } 2987 } 2988 } 2989 2990 // Compile and execute a filtering function if one is not provided 2991 // Provide `match` to avoid retokenization if we modified the selector above 2992 ( compiled || compile( selector, match ) )( 2993 seed, 2994 context, 2995 !documentIsHTML, 2996 results, 2997 rsibling.test( selector ) && testContext( context.parentNode ) || context 2998 ); 2999 return results; 3000}; 3001 3002// One-time assignments 3003 3004// Sort stability 3005support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; 3006 3007// Support: Chrome 14-35+ 3008// Always assume duplicates if they aren't passed to the comparison function 3009support.detectDuplicates = !!hasDuplicate; 3010 3011// Initialize against the default document 3012setDocument(); 3013 3014// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) 3015// Detached nodes confoundingly follow *each other* 3016support.sortDetached = assert(function( div1 ) { 3017 // Should return 1, but returns 4 (following) 3018 return div1.compareDocumentPosition( document.createElement("div") ) & 1; 3019}); 3020 3021// Support: IE<8 3022// Prevent attribute/property "interpolation" 3023// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx 3024if ( !assert(function( div ) { 3025 div.innerHTML = "<a href='#'></a>"; 3026 return div.firstChild.getAttribute("href") === "#" ; 3027}) ) { 3028 addHandle( "type|href|height|width", function( elem, name, isXML ) { 3029 if ( !isXML ) { 3030 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); 3031 } 3032 }); 3033} 3034 3035// Support: IE<9 3036// Use defaultValue in place of getAttribute("value") 3037if ( !support.attributes || !assert(function( div ) { 3038 div.innerHTML = "<input/>"; 3039 div.firstChild.setAttribute( "value", "" ); 3040 return div.firstChild.getAttribute( "value" ) === ""; 3041}) ) { 3042 addHandle( "value", function( elem, name, isXML ) { 3043 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { 3044 return elem.defaultValue; 3045 } 3046 }); 3047} 3048 3049// Support: IE<9 3050// Use getAttributeNode to fetch booleans when getAttribute lies 3051if ( !assert(function( div ) { 3052 return div.getAttribute("disabled") == null; 3053}) ) { 3054 addHandle( booleans, function( elem, name, isXML ) { 3055 var val; 3056 if ( !isXML ) { 3057 return elem[ name ] === true ? name.toLowerCase() : 3058 (val = elem.getAttributeNode( name )) && val.specified ? 3059 val.value : 3060 null; 3061 } 3062 }); 3063} 3064 3065return Sizzle; 3066 3067})( window ); 3068 3069 3070 3071jQuery.find = Sizzle; 3072jQuery.expr = Sizzle.selectors; 3073jQuery.expr[":"] = jQuery.expr.pseudos; 3074jQuery.unique = Sizzle.uniqueSort; 3075jQuery.text = Sizzle.getText; 3076jQuery.isXMLDoc = Sizzle.isXML; 3077jQuery.contains = Sizzle.contains; 3078 3079 3080 3081var rneedsContext = jQuery.expr.match.needsContext; 3082 3083var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 3084 3085 3086 3087var risSimple = /^.[^:#\[\.,]*$/; 3088 3089// Implement the identical functionality for filter and not 3090function winnow( elements, qualifier, not ) { 3091 if ( jQuery.isFunction( qualifier ) ) { 3092 return jQuery.grep( elements, function( elem, i ) { 3093 /* jshint -W018 */ 3094 return !!qualifier.call( elem, i, elem ) !== not; 3095 }); 3096 3097 } 3098 3099 if ( qualifier.nodeType ) { 3100 return jQuery.grep( elements, function( elem ) { 3101 return ( elem === qualifier ) !== not; 3102 }); 3103 3104 } 3105 3106 if ( typeof qualifier === "string" ) { 3107 if ( risSimple.test( qualifier ) ) { 3108 return jQuery.filter( qualifier, elements, not ); 3109 } 3110 3111 qualifier = jQuery.filter( qualifier, elements ); 3112 } 3113 3114 return jQuery.grep( elements, function( elem ) { 3115 return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; 3116 }); 3117} 3118 3119jQuery.filter = function( expr, elems, not ) { 3120 var elem = elems[ 0 ]; 3121 3122 if ( not ) { 3123 expr = ":not(" + expr + ")"; 3124 } 3125 3126 return elems.length === 1 && elem.nodeType === 1 ? 3127 jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : 3128 jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { 3129 return elem.nodeType === 1; 3130 })); 3131}; 3132 3133jQuery.fn.extend({ 3134 find: function( selector ) { 3135 var i, 3136 len = this.length, 3137 ret = [], 3138 self = this; 3139 3140 if ( typeof selector !== "string" ) {
3141 return this.pushStack( jQuery( selector ).filter(function() { 3142 for ( i = 0; i < len; i++ ) { 3143 if ( jQuery.contains( self[ i ], this ) ) { 3144 return true; 3145 } 3146 } 3147 }) ); 3148 } 3149 3150 for ( i = 0; i < len; i++ ) { 3151 jQuery.find( selector, self[ i ], ret ); 3152 } 3153 3154 // Needed because $( selector, context ) becomes $( context ).find( selector ) 3155 ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); 3156 ret.selector = this.selector ? this.selector + " " + selector : selector; 3157 return ret; 3158 }, 3159 filter: function( selector ) { 3160 return this.pushStack( winnow(this, selector || [], false) ); 3161 }, 3162 not: function( selector ) { 3163 return this.pushStack( winnow(this, selector || [], true) ); 3164 }, 3165 is: function( selector ) { 3166 return !!winnow( 3167 this, 3168 3169 // If this is a positional/relative selector, check membership in the returned set 3170 // so $("p:first").is("p:last") won't return true for a doc with two "p". 3171 typeof selector === "string" && rneedsContext.test( selector ) ? 3172 jQuery( selector ) : 3173 selector || [], 3174 false 3175 ).length; 3176 } 3177}); 3178 3179 3180// Initialize a jQuery object 3181 3182 3183// A central reference to the root jQuery(document) 3184var rootjQuery, 3185 3186 // A simple way to check for HTML strings 3187 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) 3188 // Strict HTML recognition (#11290: must start with <) 3189 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, 3190 3191 init = jQuery.fn.init = function( selector, context ) { 3192 var match, elem; 3193 3194 // HANDLE: $(""), $(null), $(undefined), $(false) 3195 if ( !selector ) { 3196 return this; 3197 } 3198 3199 // Handle HTML strings 3200 if ( typeof selector === "string" ) { 3201 if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { 3202 // Assume that strings that start and end with <> are HTML and skip the regex check 3203 match = [ null, selector, null ]; 3204 3205 } else { 3206 match = rquickExpr.exec( selector ); 3207 } 3208 3209 // Match html or make sure no context is specified for #id 3210 if ( match && (match[1] || !context) ) { 3211 3212 // HANDLE: $(html) -> $(array) 3213 if ( match[1] ) { 3214 context = context instanceof jQuery ? context[0] : context; 3215 3216 // Option to run scripts is true for back-compat 3217 // Intentionally let the error be thrown if parseHTML is not present 3218 jQuery.merge( this, jQuery.parseHTML( 3219 match[1], 3220 context && context.nodeType ? context.ownerDocument || context : document, 3221 true 3222 ) ); 3223 3224 // HANDLE: $(html, props) 3225 if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { 3226 for ( match in context ) { 3227 // Properties of context are called as methods if possible 3228 if ( jQuery.isFunction( this[ match ] ) ) { 3229 this[ match ]( context[ match ] ); 3230 3231 // ...and otherwise set as attributes 3232 } else { 3233 this.attr( match, context[ match ] ); 3234 } 3235 } 3236 } 3237 3238 return this; 3239 3240 // HANDLE: $(#id) 3241 } else { 3242 elem = document.getElementById( match[2] ); 3243 3244 // Support: Blackberry 4.6 3245 // gEBID returns nodes no longer in the document (#6963) 3246 if ( elem && elem.parentNode ) { 3247 // Inject the element directly into the jQuery object 3248 this.length = 1; 3249 this[0] = elem; 3250 } 3251 3252 this.context = document; 3253 this.selector = selector; 3254 return this; 3255 } 3256 3257 // HANDLE: $(expr, $(...)) 3258 } else if ( !context || context.jquery ) { 3259 return ( context || rootjQuery ).find( selector ); 3260 3261 // HANDLE: $(expr, context) 3262 // (which is just equivalent to: $(context).find(expr) 3263 } else { 3264 return this.constructor( context ).find( selector ); 3265 } 3266 3267 // HANDLE: $(DOMElement) 3268 } else if ( selector.nodeType ) { 3269 this.context = this[0] = selector; 3270 this.length = 1; 3271 return this; 3272 3273 // HANDLE: $(function) 3274 // Shortcut for document ready 3275 } else if ( jQuery.isFunction( selector ) ) { 3276 return typeof rootjQuery.ready !== "undefined" ? 3277 rootjQuery.ready( selector ) : 3278 // Execute immediately if ready is not present 3279 selector( jQuery ); 3280 } 3281 3282 if ( selector.selector !== undefined ) { 3283 this.selector = selector.selector; 3284 this.context = selector.context; 3285 } 3286 3287 return jQuery.makeArray( selector, this ); 3288 }; 3289 3290// Give the init function the jQuery prototype for later instantiation 3291init.prototype = jQuery.fn; 3292 3293// Initialize central reference 3294rootjQuery = jQuery( document ); 3295 3296 3297var rparentsprev = /^(?:parents|prev(?:Until|All))/, 3298 // Methods guaranteed to produce a unique set when starting from a unique set 3299 guaranteedUnique = { 3300 children: true, 3301 contents: true, 3302 next: true, 3303 prev: true 3304 }; 3305 3306jQuery.extend({ 3307 dir: function( elem, dir, until ) { 3308 var matched = [], 3309 truncate = until !== undefined; 3310 3311 while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { 3312 if ( elem.nodeType === 1 ) { 3313 if ( truncate && jQuery( elem ).is( until ) ) { 3314 break; 3315 } 3316 matched.push( elem ); 3317 } 3318 } 3319 return matched; 3320 }, 3321 3322 sibling: function( n, elem ) { 3323 var matched = []; 3324 3325 for ( ; n; n = n.nextSibling ) { 3326 if ( n.nodeType === 1 && n !== elem ) { 3327 matched.push( n ); 3328 } 3329 } 3330 3331 return matched; 3332 } 3333}); 3334 3335jQuery.fn.extend({ 3336 has: function( target ) { 3337 var targets = jQuery( target, this ), 3338 l = targets.length; 3339 3340 return this.filter(function() { 3341 var i = 0; 3342 for ( ; i < l; i++ ) { 3343 if ( jQuery.contains( this, targets[i] ) ) { 3344 return true; 3345 } 3346 } 3347 }); 3348 }, 3349 3350 closest: function( selectors, context ) { 3351 var cur, 3352 i = 0, 3353 l = this.length, 3354 matched = [], 3355 pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
vendor: 5,006 bytes, lines 3356-3543
3356 jQuery( selectors, context || this.context ) : 3357 0; 3358 3359 for ( ; i < l; i++ ) { 3360 for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { 3361 // Always skip document fragments 3362 if ( cur.nodeType < 11 && (pos ? 3363 pos.index(cur) > -1 : 3364 3365 // Don't pass non-elements to Sizzle 3366 cur.nodeType === 1 && 3367 jQuery.find.matchesSelector(cur, selectors)) ) { 3368 3369 matched.push( cur ); 3370 break; 3371 } 3372 } 3373 } 3374 3375 return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); 3376 }, 3377 3378 // Determine the position of an element within the set 3379 index: function( elem ) { 3380 3381 // No argument, return index in parent 3382 if ( !elem ) { 3383 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; 3384 } 3385 3386 // Index in selector 3387 if ( typeof elem === "string" ) { 3388 return indexOf.call( jQuery( elem ), this[ 0 ] ); 3389 } 3390 3391 // Locate the position of the desired element 3392 return indexOf.call( this, 3393 3394 // If it receives a jQuery object, the first element is used 3395 elem.jquery ? elem[ 0 ] : elem 3396 ); 3397 }, 3398 3399 add: function( selector, context ) { 3400 return this.pushStack( 3401 jQuery.unique( 3402 jQuery.merge( this.get(), jQuery( selector, context ) ) 3403 ) 3404 ); 3405 }, 3406 3407 addBack: function( selector ) { 3408 return this.add( selector == null ? 3409 this.prevObject : this.prevObject.filter(selector) 3410 ); 3411 } 3412}); 3413 3414function sibling( cur, dir ) { 3415 while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} 3416 return cur; 3417} 3418 3419jQuery.each({ 3420 parent: function( elem ) { 3421 var parent = elem.parentNode; 3422 return parent && parent.nodeType !== 11 ? parent : null; 3423 }, 3424 parents: function( elem ) { 3425 return jQuery.dir( elem, "parentNode" ); 3426 }, 3427 parentsUntil: function( elem, i, until ) { 3428 return jQuery.dir( elem, "parentNode", until ); 3429 }, 3430 next: function( elem ) { 3431 return sibling( elem, "nextSibling" ); 3432 }, 3433 prev: function( elem ) { 3434 return sibling( elem, "previousSibling" ); 3435 }, 3436 nextAll: function( elem ) { 3437 return jQuery.dir( elem, "nextSibling" ); 3438 }, 3439 prevAll: function( elem ) { 3440 return jQuery.dir( elem, "previousSibling" ); 3441 }, 3442 nextUntil: function( elem, i, until ) { 3443 return jQuery.dir( elem, "nextSibling", until ); 3444 }, 3445 prevUntil: function( elem, i, until ) { 3446 return jQuery.dir( elem, "previousSibling", until ); 3447 }, 3448 siblings: function( elem ) { 3449 return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); 3450 }, 3451 children: function( elem ) { 3452 return jQuery.sibling( elem.firstChild ); 3453 }, 3454 contents: function( elem ) { 3455 return elem.contentDocument || jQuery.merge( [], elem.childNodes ); 3456 } 3457}, function( name, fn ) { 3458 jQuery.fn[ name ] = function( until, selector ) { 3459 var matched = jQuery.map( this, fn, until ); 3460 3461 if ( name.slice( -5 ) !== "Until" ) { 3462 selector = until; 3463 } 3464 3465 if ( selector && typeof selector === "string" ) { 3466 matched = jQuery.filter( selector, matched ); 3467 } 3468 3469 if ( this.length > 1 ) { 3470 // Remove duplicates 3471 if ( !guaranteedUnique[ name ] ) { 3472 jQuery.unique( matched ); 3473 } 3474 3475 // Reverse order for parents* and prev-derivatives 3476 if ( rparentsprev.test( name ) ) { 3477 matched.reverse(); 3478 } 3479 } 3480 3481 return this.pushStack( matched ); 3482 }; 3483}); 3484var rnotwhite = (/\S+/g); 3485 3486 3487 3488// String to Object options format cache 3489var optionsCache = {}; 3490 3491// Convert String-formatted options into Object-formatted ones and store in cache 3492function createOptions( options ) { 3493 var object = optionsCache[ options ] = {}; 3494 jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { 3495 object[ flag ] = true; 3496 }); 3497 return object; 3498} 3499 3500/* 3501 * Create a callback list using the following parameters: 3502 * 3503 * options: an optional list of space-separated options that will change how 3504 * the callback list behaves or a more traditional option object 3505 * 3506 * By default a callback list will act like an event callback list and can be 3507 * "fired" multiple times. 3508 * 3509 * Possible options: 3510 * 3511 * once: will ensure the callback list can only be fired once (like a Deferred) 3512 * 3513 * memory: will keep track of previous values and will call any callback added 3514 * after the list has been fired right away with the latest "memorized" 3515 * values (like a Deferred) 3516 * 3517 * unique: will ensure a callback can only be added once (no duplicate in the list) 3518 * 3519 * stopOnFalse: interrupt callings when a callback returns false 3520 * 3521 */ 3522jQuery.Callbacks = function( options ) { 3523 3524 // Convert options from String-formatted to Object-formatted if needed 3525 // (we check in cache first) 3526 options = typeof options === "string" ? 3527 ( optionsCache[ options ] || createOptions( options ) ) : 3528 jQuery.extend( {}, options ); 3529 3530 var // Last fire value (for non-forgettable lists) 3531 memory, 3532 // Flag to know if list was already fired 3533 fired, 3534 // Flag to know if list is currently firing 3535 firing, 3536 // First callback to fire (used internally by add and fireWith) 3537 firingStart, 3538 // End of the loop when firing 3539 firingLength, 3540 // Index of currently firing callback (modified by remove if needed) 3541 firingIndex, 3542 // Actual callback list 3543 list = [],
3544 // Stack of fire calls for repeatable lists 3545 stack = !options.once && [], 3546 // Fire callbacks 3547 fire = function( data ) { 3548 memory = options.memory && data; 3549 fired = true; 3550 firingIndex = firingStart || 0; 3551 firingStart = 0; 3552 firingLength = list.length; 3553 firing = true; 3554 for ( ; list && firingIndex < firingLength; firingIndex++ ) { 3555 if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { 3556 memory = false; // To prevent further calls using add 3557 break; 3558 } 3559 } 3560 firing = false; 3561 if ( list ) { 3562 if ( stack ) { 3563 if ( stack.length ) { 3564 fire( stack.shift() ); 3565 } 3566 } else if ( memory ) { 3567 list = []; 3568 } else { 3569 self.disable(); 3570 } 3571 } 3572 }, 3573 // Actual Callbacks object 3574 self = { 3575 // Add a callback or a collection of callbacks to the list 3576 add: function() { 3577 if ( list ) { 3578 // First, we save the current length 3579 var start = list.length; 3580 (function add( args ) { 3581 jQuery.each( args, function( _, arg ) { 3582 var type = jQuery.type( arg ); 3583 if ( type === "function" ) { 3584 if ( !options.unique || !self.has( arg ) ) { 3585 list.push( arg ); 3586 } 3587 } else if ( arg && arg.length && type !== "string" ) { 3588 // Inspect recursively 3589 add( arg ); 3590 } 3591 }); 3592 })( arguments ); 3593 // Do we need to add the callbacks to the 3594 // current firing batch? 3595 if ( firing ) { 3596 firingLength = list.length; 3597 // With memory, if we're not firing then 3598 // we should call right away 3599 } else if ( memory ) { 3600 firingStart = start; 3601 fire( memory ); 3602 } 3603 } 3604 return this; 3605 }, 3606 // Remove a callback from the list 3607 remove: function() { 3608 if ( list ) { 3609 jQuery.each( arguments, function( _, arg ) { 3610 var index; 3611 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { 3612 list.splice( index, 1 ); 3613 // Handle firing indexes 3614 if ( firing ) { 3615 if ( index <= firingLength ) { 3616 firingLength--; 3617 } 3618 if ( index <= firingIndex ) { 3619 firingIndex--; 3620 } 3621 } 3622 } 3623 }); 3624 } 3625 return this; 3626 }, 3627 // Check if a given callback is in the list. 3628 // If no argument is given, return whether or not list has callbacks attached. 3629 has: function( fn ) { 3630 return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); 3631 }, 3632 // Remove all callbacks from the list 3633 empty: function() { 3634 list = []; 3635 firingLength = 0; 3636 return this; 3637 }, 3638 // Have the list do nothing anymore 3639 disable: function() { 3640 list = stack = memory = undefined; 3641 return this; 3642 }, 3643 // Is it disabled? 3644 disabled: function() { 3645 return !list; 3646 }, 3647 // Lock the list in its current state 3648 lock: function() { 3649 stack = undefined; 3650 if ( !memory ) { 3651 self.disable(); 3652 } 3653 return this; 3654 }, 3655 // Is it locked? 3656 locked: function() { 3657 return !stack; 3658 }, 3659 // Call all callbacks with the given context and arguments 3660 fireWith: function( context, args ) { 3661 if ( list && ( !fired || stack ) ) { 3662 args = args || []; 3663 args = [ context, args.slice ? args.slice() : args ]; 3664 if ( firing ) { 3665 stack.push( args ); 3666 } else { 3667 fire( args ); 3668 } 3669 } 3670 return this; 3671 }, 3672 // Call all the callbacks with the given arguments 3673 fire: function() { 3674 self.fireWith( this, arguments ); 3675 return this; 3676 }, 3677 // To know if the callbacks have already been called at least once 3678 fired: function() { 3679 return !!fired; 3680 } 3681 }; 3682 3683 return self; 3684}; 3685 3686 3687jQuery.extend({ 3688 3689 Deferred: function( func ) { 3690 var tuples = [ 3691 // action, add listener, listener list, final state 3692 [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], 3693 [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], 3694 [ "notify", "progress", jQuery.Callbacks("memory") ] 3695 ], 3696 state = "pending", 3697 promise = { 3698 state: function() { 3699 return state; 3700 }, 3701 always: function() { 3702 deferred.done( arguments ).fail( arguments ); 3703 return this; 3704 }, 3705 then: function( /* fnDone, fnFail, fnProgress */ ) { 3706 var fns = arguments; 3707 return jQuery.Deferred(function( newDefer ) { 3708 jQuery.each( tuples, function( i, tuple ) { 3709 var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; 3710 // deferred[ done | fail | progress ] for forwarding actions to newDefer 3711 deferred[ tuple[1] ](function() { 3712 var returned = fn && fn.apply( this, arguments ); 3713 if ( returned && jQuery.isFunction( returned.promise ) ) { 3714 returned.promise() 3715 .done( newDefer.resolve ) 3716 .fail( newDefer.reject ) 3717 .progress( newDefer.notify ); 3718 } else { 3719 newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); 3720 } 3721 }); 3722 }); 3723 fns = null; 3724 }).promise(); 3725 }, 3726 // Get a promise for this deferred 3727 // If obj is provided, the promise aspect is added to the object 3728 promise: function( obj ) { 3729 return obj != null ? jQuery.extend( obj, promise ) : promise; 3730 } 3731 }, 3732 deferred = {}; 3733 3734 // Keep pipe for back-compat 3735 promise.pipe = promise.then; 3736 3737 // Add list-specific methods 3738 jQuery.each( tuples, function( i, tuple ) { 3739 var list = tuple[ 2 ], 3740 stateString = tuple[ 3 ]; 3741 3742 // promise[ done | fail | progress ] = list.add 3743 promise[ tuple[1] ] = list.add; 3744 3745 // Handle state 3746 if ( stateString ) { 3747 list.add(function() { 3748 // state = [ resolved | rejected ] 3749 state = stateString; 3750 3751 // [ reject_list | resolve_list ].disable; progress_list.lock 3752 }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); 3753 } 3754 3755 // deferred[ resolve | reject | notify ] 3756 deferred[ tuple[0] ] = function() { 3757 deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); 3758 return this; 3759 }; 3760 deferred[ tuple[0] + "With" ] = list.fireWith; 3761 }); 3762 3763 // Make the deferred a promise 3764 promise.promise( deferred ); 3765 3766 // Call given func if any 3767 if ( func ) { 3768 func.call( deferred, deferred ); 3769 } 3770 3771 // All done! 3772 return deferred; 3773 }, 3774 3775 // Deferred helper 3776 when: function( subordinate /* , ..., subordinateN */ ) { 3777 var i = 0, 3778 resolveValues = slice.call( arguments ), 3779 length = resolveValues.length, 3780 3781 // the count of uncompleted subordinates 3782 remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, 3783 3784 // the master Deferred. If resolveValues consist of only a single Deferred, just use that. 3785 deferred = remaining === 1 ? subordinate : jQuery.Deferred(), 3786 3787 // Update function for both resolve and progress values 3788 updateFunc = function( i, contexts, values ) { 3789 return function( value ) { 3790 contexts[ i ] = this; 3791 values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; 3792 if ( values === progressValues ) { 3793 deferred.notifyWith( contexts, values ); 3794 } else if ( !( --remaining ) ) { 3795 deferred.resolveWith( contexts, values ); 3796 } 3797 }; 3798 }, 3799 3800 progressValues, progressContexts, resolveContexts; 3801 3802 // Add listeners to Deferred subordinates; treat others as resolved 3803 if ( length > 1 ) { 3804 progressValues = new Array( length ); 3805 progressContexts = new Array( length ); 3806 resolveContexts = new Array( length ); 3807 for ( ; i < length; i++ ) { 3808 if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { 3809 resolveValues[ i ].promise() 3810 .done( updateFunc( i, resolveContexts, resolveValues ) ) 3811 .fail( deferred.reject ) 3812 .progress( updateFunc( i, progressContexts, progressValues ) ); 3813 } else { 3814 --remaining; 3815 } 3816 } 3817 } 3818 3819 // If we're not waiting on anything, resolve the master 3820 if ( !remaining ) {
3821 deferred.resolveWith( resolveContexts, resolveValues ); 3822 } 3823 3824 return deferred.promise(); 3825 } 3826}); 3827 3828 3829// The deferred used on DOM ready 3830var readyList; 3831 3832jQuery.fn.ready = function( fn ) { 3833 // Add the callback 3834 jQuery.ready.promise().done( fn ); 3835 3836 return this; 3837}; 3838 3839jQuery.extend({ 3840 // Is the DOM ready to be used? Set to true once it occurs. 3841 isReady: false, 3842 3843 // A counter to track how many items to wait for before 3844 // the ready event fires. See #6781 3845 readyWait: 1, 3846 3847 // Hold (or release) the ready event 3848 holdReady: function( hold ) { 3849 if ( hold ) { 3850 jQuery.readyWait++; 3851 } else { 3852 jQuery.ready( true ); 3853 } 3854 }, 3855 3856 // Handle when the DOM is ready 3857 ready: function( wait ) { 3858 3859 // Abort if there are pending holds or we're already ready 3860 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { 3861 return; 3862 } 3863 3864 // Remember that the DOM is ready 3865 jQuery.isReady = true; 3866 3867 // If a normal DOM Ready event fired, decrement, and wait if need be 3868 if ( wait !== true && --jQuery.readyWait > 0 ) { 3869 return; 3870 } 3871 3872 // If there are functions bound, to execute 3873 readyList.resolveWith( document, [ jQuery ] ); 3874 3875 // Trigger any bound ready events 3876 if ( jQuery.fn.triggerHandler ) { 3877 jQuery( document ).triggerHandler( "ready" ); 3878 jQuery( document ).off( "ready" ); 3879 } 3880 } 3881}); 3882 3883/** 3884 * The ready event handler and self cleanup method 3885 */ 3886function completed() { 3887 document.removeEventListener( "DOMContentLoaded", completed, false ); 3888 window.removeEventListener( "load", completed, false ); 3889 jQuery.ready(); 3890} 3891 3892jQuery.ready.promise = function( obj ) { 3893 if ( !readyList ) { 3894 3895 readyList = jQuery.Deferred(); 3896 3897 // Catch cases where $(document).ready() is called after the browser event has already occurred. 3898 // We once tried to use readyState "interactive" here, but it caused issues like the one 3899 // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 3900 if ( document.readyState === "complete" ) { 3901 // Handle it asynchronously to allow scripts the opportunity to delay ready 3902 setTimeout( jQuery.ready ); 3903 3904 } else { 3905 3906 // Use the handy event callback 3907 document.addEventListener( "DOMContentLoaded", completed, false ); 3908 3909 // A fallback to window.onload, that will always work 3910 window.addEventListener( "load", completed, false ); 3911 } 3912 } 3913 return readyList.promise( obj ); 3914}; 3915 3916// Kick off the DOM ready check even if the user does not 3917jQuery.ready.promise(); 3918 3919 3920 3921 3922// Multifunctional method to get and set values of a collection 3923// The value/s can optionally be executed if it's a function 3924var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 3925 var i = 0, 3926 len = elems.length, 3927 bulk = key == null; 3928 3929 // Sets many values 3930 if ( jQuery.type( key ) === "object" ) { 3931 chainable = true; 3932 for ( i in key ) { 3933 jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); 3934 } 3935 3936 // Sets one value 3937 } else if ( value !== undefined ) { 3938 chainable = true; 3939 3940 if ( !jQuery.isFunction( value ) ) { 3941 raw = true; 3942 } 3943 3944 if ( bulk ) { 3945 // Bulk operations run against the entire set 3946 if ( raw ) { 3947 fn.call( elems, value ); 3948 fn = null; 3949 3950 // ...except when executing function values 3951 } else { 3952 bulk = fn; 3953 fn = function( elem, key, value ) { 3954 return bulk.call( jQuery( elem ), value ); 3955 }; 3956 } 3957 } 3958 3959 if ( fn ) { 3960 for ( ; i < len; i++ ) { 3961 fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); 3962 } 3963 } 3964 } 3965 3966 return chainable ? 3967 elems : 3968 3969 // Gets 3970 bulk ? 3971 fn.call( elems ) : 3972 len ? fn( elems[0], key ) : emptyGet; 3973}; 3974 3975 3976/** 3977 * Determines whether an object can have data 3978 */ 3979jQuery.acceptData = function( owner ) { 3980 // Accepts only: 3981 // - Node 3982 // - Node.ELEMENT_NODE 3983 // - Node.DOCUMENT_NODE 3984 // - Object 3985 // - Any 3986 /* jshint -W018 */ 3987 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 3988}; 3989 3990 3991function Data() { 3992 // Support: Android<4, 3993 // Old WebKit does not have Object.preventExtensions/freeze method, 3994 // return new empty object instead with no [[set]] accessor 3995 Object.defineProperty( this.cache = {}, 0, { 3996 get: function() { 3997 return {}; 3998 } 3999 }); 4000 4001 this.expando = jQuery.expando + Data.uid++; 4002} 4003 4004Data.uid = 1; 4005Data.accepts = jQuery.acceptData; 4006 4007Data.prototype = { 4008 key: function( owner ) { 4009 // We can accept data for non-element nodes in modern browsers, 4010 // but we should not, see #8335. 4011 // Always return the key for a frozen object. 4012 if ( !Data.accepts( owner ) ) { 4013 return 0; 4014 } 4015 4016 var descriptor = {}, 4017 // Check if the owner object already has a cache key 4018 unlock = owner[ this.expando ]; 4019 4020 // If not, create one 4021 if ( !unlock ) { 4022 unlock = Data.uid++; 4023 4024 // Secure it in a non-enumerable, non-writable property 4025 try { 4026 descriptor[ this.expando ] = { value: unlock }; 4027 Object.defineProperties( owner, descriptor ); 4028
4029 // Support: Android<4 4030 // Fallback to a less secure definition 4031 } catch ( e ) { 4032 descriptor[ this.expando ] = unlock; 4033 jQuery.extend( owner, descriptor ); 4034 } 4035 } 4036 4037 // Ensure the cache object 4038 if ( !this.cache[ unlock ] ) { 4039 this.cache[ unlock ] = {}; 4040 } 4041 4042 return unlock; 4043 }, 4044 set: function( owner, data, value ) { 4045 var prop, 4046 // There may be an unlock assigned to this node, 4047 // if there is no entry for this "owner", create one inline 4048 // and set the unlock as though an owner entry had always existed 4049 unlock = this.key( owner ), 4050 cache = this.cache[ unlock ]; 4051 4052 // Handle: [ owner, key, value ] args 4053 if ( typeof data === "string" ) { 4054 cache[ data ] = value; 4055 4056 // Handle: [ owner, { properties } ] args 4057 } else { 4058 // Fresh assignments by object are shallow copied 4059 if ( jQuery.isEmptyObject( cache ) ) { 4060 jQuery.extend( this.cache[ unlock ], data ); 4061 // Otherwise, copy the properties one-by-one to the cache object 4062 } else { 4063 for ( prop in data ) { 4064 cache[ prop ] = data[ prop ]; 4065 } 4066 } 4067 } 4068 return cache; 4069 }, 4070 get: function( owner, key ) { 4071 // Either a valid cache is found, or will be created. 4072 // New caches will be created and the unlock returned, 4073 // allowing direct access to the newly created 4074 // empty data object. A valid owner object must be provided. 4075 var cache = this.cache[ this.key( owner ) ]; 4076 4077 return key === undefined ? 4078 cache : cache[ key ]; 4079 }, 4080 access: function( owner, key, value ) { 4081 var stored; 4082 // In cases where either: 4083 // 4084 // 1. No key was specified 4085 // 2. A string key was specified, but no value provided 4086 // 4087 // Take the "read" path and allow the get method to determine 4088 // which value to return, respectively either: 4089 // 4090 // 1. The entire cache object 4091 // 2. The data stored at the key 4092 // 4093 if ( key === undefined || 4094 ((key && typeof key === "string") && value === undefined) ) { 4095 4096 stored = this.get( owner, key ); 4097 4098 return stored !== undefined ? 4099 stored : this.get( owner, jQuery.camelCase(key) ); 4100 } 4101 4102 // [*]When the key is not a string, or both a key and value 4103 // are specified, set or extend (existing objects) with either: 4104 // 4105 // 1. An object of properties 4106 // 2. A key and value 4107 // 4108 this.set( owner, key, value ); 4109 4110 // Since the "set" path can have two possible entry points 4111 // return the expected data based on which path was taken[*] 4112 return value !== undefined ? value : key; 4113 }, 4114 remove: function( owner, key ) { 4115 var i, name, camel, 4116 unlock = this.key( owner ), 4117 cache = this.cache[ unlock ]; 4118 4119 if ( key === undefined ) { 4120 this.cache[ unlock ] = {}; 4121 4122 } else { 4123 // Support array or space separated string of keys 4124 if ( jQuery.isArray( key ) ) { 4125 // If "name" is an array of keys... 4126 // When data is initially created, via ("key", "val") signature, 4127 // keys will be converted to camelCase. 4128 // Since there is no way to tell _how_ a key was added, remove 4129 // both plain key and camelCase key. #12786 4130 // This will only penalize the array argument path. 4131 name = key.concat( key.map( jQuery.camelCase ) ); 4132 } else { 4133 camel = jQuery.camelCase( key ); 4134 // Try the string as a key before any manipulation 4135 if ( key in cache ) { 4136 name = [ key, camel ]; 4137 } else { 4138 // If a key with the spaces exists, use it. 4139 // Otherwise, create an array by matching non-whitespace 4140 name = camel; 4141 name = name in cache ? 4142 [ name ] : ( name.match( rnotwhite ) || [] ); 4143 } 4144 } 4145 4146 i = name.length; 4147 while ( i-- ) { 4148 delete cache[ name[ i ] ]; 4149 } 4150 } 4151 }, 4152 hasData: function( owner ) { 4153 return !jQuery.isEmptyObject( 4154 this.cache[ owner[ this.expando ] ] || {} 4155 ); 4156 }, 4157 discard: function( owner ) { 4158 if ( owner[ this.expando ] ) { 4159 delete this.cache[ owner[ this.expando ] ]; 4160 } 4161 } 4162}; 4163var data_priv = new Data(); 4164 4165var data_user = new Data(); 4166 4167 4168 4169// Implementation Summary 4170// 4171// 1. Enforce API surface and semantic compatibility with 1.9.x branch 4172// 2. Improve the module's maintainability by reducing the storage 4173// paths to a single mechanism.
4174// 3. Use the same single mechanism to support "private" and "user" data. 4175// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) 4176// 5. Avoid exposing implementation details on user objects (eg. expando properties) 4177// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 4178 4179var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, 4180 rmultiDash = /([A-Z])/g; 4181 4182function dataAttr( elem, key, data ) { 4183 var name; 4184 4185 // If nothing was found internally, try to fetch any 4186 // data from the HTML5 data-* attribute 4187 if ( data === undefined && elem.nodeType === 1 ) { 4188 name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); 4189 data = elem.getAttribute( name ); 4190 4191 if ( typeof data === "string" ) { 4192 try { 4193 data = data === "true" ? true : 4194 data === "false" ? false : 4195 data === "null" ? null : 4196 // Only convert to a number if it doesn't change the string 4197 +data + "" === data ? +data : 4198 rbrace.test( data ) ? jQuery.parseJSON( data ) : 4199 data; 4200 } catch( e ) {} 4201 4202 // Make sure we set the data so it isn't changed later 4203 data_user.set( elem, key, data ); 4204 } else { 4205 data = undefined; 4206 } 4207 } 4208 return data; 4209} 4210 4211jQuery.extend({ 4212 hasData: function( elem ) { 4213 return data_user.hasData( elem ) || data_priv.hasData( elem ); 4214 }, 4215 4216 data: function( elem, name, data ) { 4217 return data_user.access( elem, name, data ); 4218 }, 4219 4220 removeData: function( elem, name ) { 4221 data_user.remove( elem, name ); 4222 }, 4223 4224 // TODO: Now that all calls to _data and _removeData have been replaced 4225 // with direct calls to data_priv methods, these can be deprecated. 4226 _data: function( elem, name, data ) { 4227 return data_priv.access( elem, name, data ); 4228 }, 4229 4230 _removeData: function( elem, name ) { 4231 data_priv.remove( elem, name ); 4232 } 4233}); 4234 4235jQuery.fn.extend({ 4236 data: function( key, value ) { 4237 var i, name, data, 4238 elem = this[ 0 ], 4239 attrs = elem && elem.attributes; 4240 4241 // Gets all values 4242 if ( key === undefined ) { 4243 if ( this.length ) { 4244 data = data_user.get( elem ); 4245 4246 if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { 4247 i = attrs.length; 4248 while ( i-- ) { 4249 4250 // Support: IE11+ 4251 // The attrs elements can be null (#14894) 4252 if ( attrs[ i ] ) { 4253 name = attrs[ i ].name; 4254 if ( name.indexOf( "data-" ) === 0 ) { 4255 name = jQuery.camelCase( name.slice(5) ); 4256 dataAttr( elem, name, data[ name ] ); 4257 } 4258 } 4259 } 4260 data_priv.set( elem, "hasDataAttrs", true ); 4261 } 4262 } 4263 4264 return data; 4265 } 4266 4267 // Sets multiple values 4268 if ( typeof key === "object" ) { 4269 return this.each(function() { 4270 data_user.set( this, key ); 4271 }); 4272 } 4273 4274 return access( this, function( value ) { 4275 var data, 4276 camelKey = jQuery.camelCase( key ); 4277 4278 // The calling jQuery object (element matches) is not empty 4279 // (and therefore has an element appears at this[ 0 ]) and the 4280 // `value` parameter was not undefined. An empty jQuery object 4281 // will result in `undefined` for elem = this[ 0 ] which will 4282 // throw an exception if an attempt to read a data cache is made. 4283 if ( elem && value === undefined ) { 4284 // Attempt to get data from the cache 4285 // with the key as-is 4286 data = data_user.get( elem, key ); 4287 if ( data !== undefined ) { 4288 return data; 4289 } 4290 4291 // Attempt to get data from the cache 4292 // with the key camelized 4293 data = data_user.get( elem, camelKey ); 4294 if ( data !== undefined ) { 4295 return data; 4296 } 4297 4298 // Attempt to "discover" the data in 4299 // HTML5 custom data-* attrs 4300 data = dataAttr( elem, camelKey, undefined ); 4301 if ( data !== undefined ) { 4302 return data; 4303 } 4304 4305 // We tried really hard, but the data doesn't exist. 4306 return; 4307 } 4308 4309 // Set the data... 4310 this.each(function() { 4311 // First, attempt to store a copy or reference of any 4312 // data that might've been store with a camelCased key. 4313 var data = data_user.get( this, camelKey ); 4314 4315 // For HTML5 data-* attribute interop, we have to 4316 // store property names with dashes in a camelCase form. 4317 // This might not apply to all properties...* 4318 data_user.set( this, camelKey, value ); 4319 4320 // *... In the case of properties that might _actually_
vendor: 3,939 bytes, lines 4321-4490
4321 // have dashes, we need to also store a copy of that 4322 // unchanged property. 4323 if ( key.indexOf("-") !== -1 && data !== undefined ) { 4324 data_user.set( this, key, value ); 4325 } 4326 }); 4327 }, null, value, arguments.length > 1, null, true ); 4328 }, 4329 4330 removeData: function( key ) { 4331 return this.each(function() { 4332 data_user.remove( this, key ); 4333 }); 4334 } 4335}); 4336 4337 4338jQuery.extend({ 4339 queue: function( elem, type, data ) { 4340 var queue; 4341 4342 if ( elem ) { 4343 type = ( type || "fx" ) + "queue"; 4344 queue = data_priv.get( elem, type ); 4345 4346 // Speed up dequeue by getting out quickly if this is just a lookup 4347 if ( data ) { 4348 if ( !queue || jQuery.isArray( data ) ) { 4349 queue = data_priv.access( elem, type, jQuery.makeArray(data) ); 4350 } else { 4351 queue.push( data ); 4352 } 4353 } 4354 return queue || []; 4355 } 4356 }, 4357 4358 dequeue: function( elem, type ) { 4359 type = type || "fx"; 4360 4361 var queue = jQuery.queue( elem, type ), 4362 startLength = queue.length, 4363 fn = queue.shift(), 4364 hooks = jQuery._queueHooks( elem, type ), 4365 next = function() { 4366 jQuery.dequeue( elem, type ); 4367 }; 4368 4369 // If the fx queue is dequeued, always remove the progress sentinel 4370 if ( fn === "inprogress" ) { 4371 fn = queue.shift(); 4372 startLength--; 4373 } 4374 4375 if ( fn ) { 4376 4377 // Add a progress sentinel to prevent the fx queue from being 4378 // automatically dequeued 4379 if ( type === "fx" ) { 4380 queue.unshift( "inprogress" ); 4381 } 4382 4383 // Clear up the last queue stop function 4384 delete hooks.stop; 4385 fn.call( elem, next, hooks ); 4386 } 4387 4388 if ( !startLength && hooks ) { 4389 hooks.empty.fire(); 4390 } 4391 }, 4392 4393 // Not public - generate a queueHooks object, or return the current one 4394 _queueHooks: function( elem, type ) { 4395 var key = type + "queueHooks"; 4396 return data_priv.get( elem, key ) || data_priv.access( elem, key, { 4397 empty: jQuery.Callbacks("once memory").add(function() { 4398 data_priv.remove( elem, [ type + "queue", key ] ); 4399 }) 4400 }); 4401 } 4402}); 4403 4404jQuery.fn.extend({ 4405 queue: function( type, data ) { 4406 var setter = 2; 4407 4408 if ( typeof type !== "string" ) { 4409 data = type; 4410 type = "fx"; 4411 setter--; 4412 } 4413 4414 if ( arguments.length < setter ) { 4415 return jQuery.queue( this[0], type ); 4416 } 4417 4418 return data === undefined ? 4419 this : 4420 this.each(function() { 4421 var queue = jQuery.queue( this, type, data ); 4422 4423 // Ensure a hooks for this queue 4424 jQuery._queueHooks( this, type ); 4425 4426 if ( type === "fx" && queue[0] !== "inprogress" ) { 4427 jQuery.dequeue( this, type ); 4428 } 4429 }); 4430 }, 4431 dequeue: function( type ) { 4432 return this.each(function() { 4433 jQuery.dequeue( this, type ); 4434 }); 4435 }, 4436 clearQueue: function( type ) { 4437 return this.queue( type || "fx", [] ); 4438 }, 4439 // Get a promise resolved when queues of a certain type 4440 // are emptied (fx is the type by default) 4441 promise: function( type, obj ) { 4442 var tmp, 4443 count = 1, 4444 defer = jQuery.Deferred(), 4445 elements = this, 4446 i = this.length, 4447 resolve = function() { 4448 if ( !( --count ) ) { 4449 defer.resolveWith( elements, [ elements ] ); 4450 } 4451 }; 4452 4453 if ( typeof type !== "string" ) { 4454 obj = type; 4455 type = undefined; 4456 } 4457 type = type || "fx"; 4458 4459 while ( i-- ) { 4460 tmp = data_priv.get( elements[ i ], type + "queueHooks" ); 4461 if ( tmp && tmp.empty ) { 4462 count++; 4463 tmp.empty.add( resolve ); 4464 } 4465 } 4466 resolve(); 4467 return defer.promise( obj ); 4468 } 4469}); 4470var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 4471 4472var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; 4473 4474var isHidden = function( elem, el ) { 4475 // isHidden might be called from jQuery#filter function; 4476 // in that case, element will be second argument 4477 elem = el || elem; 4478 return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); 4479 }; 4480 4481var rcheckableType = (/^(?:checkbox|radio)$/i); 4482 4483 4484 4485(function() { 4486 var fragment = document.createDocumentFragment(), 4487 div = fragment.appendChild( document.createElement( "div" ) ), 4488 input = document.createElement( "input" ); 4489 4490 // Support: Safari<=5.1
4491 // Check state lost if the name is set (#11217) 4492 // Support: Windows Web Apps (WWA) 4493 // `name` and `type` must use .setAttribute for WWA (#14901) 4494 input.setAttribute( "type", "radio" ); 4495 input.setAttribute( "checked", "checked" ); 4496 input.setAttribute( "name", "t" ); 4497 4498 div.appendChild( input ); 4499 4500 // Support: Safari<=5.1, Android<4.2 4501 // Older WebKit doesn't clone checked state correctly in fragments 4502 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 4503 4504 // Support: IE<=11+ 4505 // Make sure textarea (and checkbox) defaultValue is properly cloned 4506 div.innerHTML = "<textarea>x</textarea>"; 4507 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 4508})(); 4509var strundefined = typeof undefined; 4510 4511 4512 4513support.focusinBubbles = "onfocusin" in window; 4514 4515 4516var 4517 rkeyEvent = /^key/, 4518 rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, 4519 rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, 4520 rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; 4521 4522function returnTrue() { 4523 return true; 4524} 4525 4526function returnFalse() { 4527 return false; 4528} 4529 4530function safeActiveElement() { 4531 try { 4532 return document.activeElement; 4533 } catch ( err ) { } 4534} 4535 4536/* 4537 * Helper functions for managing events -- not part of the public interface. 4538 * Props to Dean Edwards' addEvent library for many of the ideas. 4539 */ 4540jQuery.event = { 4541 4542 global: {}, 4543 4544 add: function( elem, types, handler, data, selector ) { 4545 4546 var handleObjIn, eventHandle, tmp, 4547 events, t, handleObj, 4548 special, handlers, type, namespaces, origType, 4549 elemData = data_priv.get( elem ); 4550 4551 // Don't attach events to noData or text/comment nodes (but allow plain objects) 4552 if ( !elemData ) { 4553 return; 4554 } 4555 4556 // Caller can pass in an object of custom data in lieu of the handler 4557 if ( handler.handler ) { 4558 handleObjIn = handler; 4559 handler = handleObjIn.handler; 4560 selector = handleObjIn.selector; 4561 } 4562 4563 // Make sure that the handler has a unique ID, used to find/remove it later 4564 if ( !handler.guid ) { 4565 handler.guid = jQuery.guid++; 4566 } 4567 4568 // Init the element's event structure and main handler, if this is the first 4569 if ( !(events = elemData.events) ) { 4570 events = elemData.events = {}; 4571 } 4572 if ( !(eventHandle = elemData.handle) ) { 4573 eventHandle = elemData.handle = function( e ) { 4574 // Discard the second event of a jQuery.event.trigger() and 4575 // when an event is called after a page has unloaded 4576 return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? 4577 jQuery.event.dispatch.apply( elem, arguments ) : undefined; 4578 }; 4579 } 4580 4581 // Handle multiple events separated by a space 4582 types = ( types || "" ).match( rnotwhite ) || [ "" ]; 4583 t = types.length; 4584 while ( t-- ) { 4585 tmp = rtypenamespace.exec( types[t] ) || []; 4586 type = origType = tmp[1]; 4587 namespaces = ( tmp[2] || "" ).split( "." ).sort(); 4588 4589 // There *must* be a type, no attaching namespace-only handlers 4590 if ( !type ) { 4591 continue; 4592 } 4593 4594 // If event changes its type, use the special event handlers for the changed type 4595 special = jQuery.event.special[ type ] || {}; 4596 4597 // If selector defined, determine special event api type, otherwise given type 4598 type = ( selector ? special.delegateType : special.bindType ) || type; 4599 4600 // Update special based on newly reset type 4601 special = jQuery.event.special[ type ] || {}; 4602 4603 // handleObj is passed to all event handlers 4604 handleObj = jQuery.extend({ 4605 type: type, 4606 origType: origType, 4607 data: data, 4608 handler: handler, 4609 guid: handler.guid, 4610 selector: selector, 4611 needsContext: selector && jQuery.expr.match.needsContext.test( selector ), 4612 namespace: namespaces.join(".") 4613 }, handleObjIn ); 4614 4615 // Init the event handler queue if we're the first 4616 if ( !(handlers = events[ type ]) ) { 4617 handlers = events[ type ] = []; 4618 handlers.delegateCount = 0; 4619 4620 // Only use addEventListener if the special events handler returns false 4621 if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 4622 if ( elem.addEventListener ) { 4623 elem.addEventListener( type, eventHandle, false ); 4624 } 4625 } 4626 } 4627 4628 if ( special.add ) { 4629 special.add.call( elem, handleObj ); 4630 4631 if ( !handleObj.handler.guid ) { 4632 handleObj.handler.guid = handler.guid; 4633 } 4634 } 4635 4636 // Add to the element's handler list, delegates in front 4637 if ( selector ) { 4638 handlers.splice( handlers.delegateCount++, 0, handleObj ); 4639 } else { 4640 handlers.push( handleObj ); 4641 } 4642 4643 // Keep track of which events have ever been used, for event optimization 4644 jQuery.event.global[ type ] = true; 4645 } 4646 4647 }, 4648 4649 // Detach an event or set of events from an element 4650 remove: function( elem, types, handler, selector, mappedTypes ) { 4651 4652 var j, origCount, tmp, 4653 events, t, handleObj, 4654 special, handlers, type, namespaces, origType, 4655 elemData = data_priv.hasData( elem ) && data_priv.get( elem ); 4656 4657 if ( !elemData || !(events = elemData.events) ) { 4658 return; 4659 } 4660
vendor: 8,101 bytes, lines 4661-4918
4661 // Once for each type.namespace in types; type may be omitted 4662 types = ( types || "" ).match( rnotwhite ) || [ "" ]; 4663 t = types.length; 4664 while ( t-- ) { 4665 tmp = rtypenamespace.exec( types[t] ) || []; 4666 type = origType = tmp[1]; 4667 namespaces = ( tmp[2] || "" ).split( "." ).sort(); 4668 4669 // Unbind all events (on this namespace, if provided) for the element 4670 if ( !type ) { 4671 for ( type in events ) { 4672 jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); 4673 } 4674 continue; 4675 } 4676 4677 special = jQuery.event.special[ type ] || {}; 4678 type = ( selector ? special.delegateType : special.bindType ) || type; 4679 handlers = events[ type ] || []; 4680 tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); 4681 4682 // Remove matching events 4683 origCount = j = handlers.length; 4684 while ( j-- ) { 4685 handleObj = handlers[ j ]; 4686 4687 if ( ( mappedTypes || origType === handleObj.origType ) && 4688 ( !handler || handler.guid === handleObj.guid ) && 4689 ( !tmp || tmp.test( handleObj.namespace ) ) && 4690 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { 4691 handlers.splice( j, 1 ); 4692 4693 if ( handleObj.selector ) { 4694 handlers.delegateCount--; 4695 } 4696 if ( special.remove ) { 4697 special.remove.call( elem, handleObj ); 4698 } 4699 } 4700 } 4701 4702 // Remove generic event handler if we removed something and no more handlers exist 4703 // (avoids potential for endless recursion during removal of special event handlers) 4704 if ( origCount && !handlers.length ) { 4705 if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { 4706 jQuery.removeEvent( elem, type, elemData.handle ); 4707 } 4708 4709 delete events[ type ]; 4710 } 4711 } 4712 4713 // Remove the expando if it's no longer used 4714 if ( jQuery.isEmptyObject( events ) ) { 4715 delete elemData.handle; 4716 data_priv.remove( elem, "events" ); 4717 } 4718 }, 4719 4720 trigger: function( event, data, elem, onlyHandlers ) { 4721 4722 var i, cur, tmp, bubbleType, ontype, handle, special, 4723 eventPath = [ elem || document ], 4724 type = hasOwn.call( event, "type" ) ? event.type : event, 4725 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; 4726 4727 cur = tmp = elem = elem || document; 4728 4729 // Don't do events on text and comment nodes 4730 if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 4731 return; 4732 } 4733 4734 // focus/blur morphs to focusin/out; ensure we're not firing them right now 4735 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { 4736 return; 4737 } 4738 4739 if ( type.indexOf(".") >= 0 ) { 4740 // Namespaced trigger; create a regexp to match event type in handle() 4741 namespaces = type.split("."); 4742 type = namespaces.shift(); 4743 namespaces.sort(); 4744 } 4745 ontype = type.indexOf(":") < 0 && "on" + type; 4746 4747 // Caller can pass in a jQuery.Event object, Object, or just an event type string 4748 event = event[ jQuery.expando ] ? 4749 event : 4750 new jQuery.Event( type, typeof event === "object" && event ); 4751 4752 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) 4753 event.isTrigger = onlyHandlers ? 2 : 3; 4754 event.namespace = namespaces.join("."); 4755 event.namespace_re = event.namespace ? 4756 new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : 4757 null; 4758 4759 // Clean up the event in case it is being reused 4760 event.result = undefined; 4761 if ( !event.target ) { 4762 event.target = elem; 4763 } 4764 4765 // Clone any incoming data and prepend the event, creating the handler arg list 4766 data = data == null ? 4767 [ event ] : 4768 jQuery.makeArray( data, [ event ] ); 4769 4770 // Allow special events to draw outside the lines 4771 special = jQuery.event.special[ type ] || {}; 4772 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { 4773 return; 4774 } 4775 4776 // Determine event propagation path in advance, per W3C events spec (#9951) 4777 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) 4778 if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { 4779 4780 bubbleType = special.delegateType || type; 4781 if ( !rfocusMorph.test( bubbleType + type ) ) { 4782 cur = cur.parentNode; 4783 } 4784 for ( ; cur; cur = cur.parentNode ) { 4785 eventPath.push( cur ); 4786 tmp = cur; 4787 } 4788 4789 // Only add window if we got to document (e.g., not plain obj or detached DOM) 4790 if ( tmp === (elem.ownerDocument || document) ) { 4791 eventPath.push( tmp.defaultView || tmp.parentWindow || window ); 4792 } 4793 } 4794 4795 // Fire handlers on the event path 4796 i = 0; 4797 while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { 4798 4799 event.type = i > 1 ? 4800 bubbleType : 4801 special.bindType || type; 4802 4803 // jQuery handler 4804 handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); 4805 if ( handle ) { 4806 handle.apply( cur, data ); 4807 } 4808 4809 // Native handler 4810 handle = ontype && cur[ ontype ]; 4811 if ( handle && handle.apply && jQuery.acceptData( cur ) ) { 4812 event.result = handle.apply( cur, data ); 4813 if ( event.result === false ) { 4814 event.preventDefault(); 4815 } 4816 } 4817 } 4818 event.type = type; 4819 4820 // If nobody prevented the default action, do it now 4821 if ( !onlyHandlers && !event.isDefaultPrevented() ) { 4822 4823 if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && 4824 jQuery.acceptData( elem ) ) { 4825 4826 // Call a native DOM method on the target with the same name name as the event. 4827 // Don't do default actions on window, that's where global variables be (#6170) 4828 if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { 4829 4830 // Don't re-trigger an onFOO event when we call its FOO() method 4831 tmp = elem[ ontype ]; 4832 4833 if ( tmp ) { 4834 elem[ ontype ] = null; 4835 } 4836 4837 // Prevent re-triggering of the same event, since we already bubbled it above 4838 jQuery.event.triggered = type; 4839 elem[ type ](); 4840 jQuery.event.triggered = undefined; 4841 4842 if ( tmp ) { 4843 elem[ ontype ] = tmp; 4844 } 4845 } 4846 } 4847 } 4848 4849 return event.result; 4850 }, 4851 4852 dispatch: function( event ) { 4853 4854 // Make a writable jQuery.Event from the native event object 4855 event = jQuery.event.fix( event ); 4856 4857 var i, j, ret, matched, handleObj, 4858 handlerQueue = [], 4859 args = slice.call( arguments ), 4860 handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], 4861 special = jQuery.event.special[ event.type ] || {}; 4862 4863 // Use the fix-ed jQuery.Event rather than the (read-only) native event 4864 args[0] = event; 4865 event.delegateTarget = this; 4866 4867 // Call the preDispatch hook for the mapped type, and let it bail if desired 4868 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { 4869 return; 4870 } 4871 4872 // Determine handlers 4873 handlerQueue = jQuery.event.handlers.call( this, event, handlers ); 4874 4875 // Run delegates first; they may want to stop propagation beneath us 4876 i = 0; 4877 while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { 4878 event.currentTarget = matched.elem; 4879 4880 j = 0; 4881 while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { 4882 4883 // Triggered event must either 1) have no namespace, or 2) have namespace(s) 4884 // a subset or equal to those in the bound event (both can have no namespace). 4885 if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { 4886 4887 event.handleObj = handleObj; 4888 event.data = handleObj.data; 4889 4890 ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) 4891 .apply( matched.elem, args ); 4892 4893 if ( ret !== undefined ) { 4894 if ( (event.result = ret) === false ) { 4895 event.preventDefault(); 4896 event.stopPropagation(); 4897 } 4898 } 4899 } 4900 } 4901 } 4902 4903 // Call the postDispatch hook for the mapped type 4904 if ( special.postDispatch ) { 4905 special.postDispatch.call( this, event ); 4906 } 4907 4908 return event.result; 4909 }, 4910 4911 handlers: function( event, handlers ) { 4912 var i, matches, sel, handleObj, 4913 handlerQueue = [], 4914 delegateCount = handlers.delegateCount, 4915 cur = event.target; 4916 4917 // Find delegate handlers 4918 // Black-hole SVG <use> instance trees (#13180)
4919 // Avoid non-left-click bubbling in Firefox (#3861) 4920 if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { 4921 4922 for ( ; cur !== this; cur = cur.parentNode || this ) { 4923 4924 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) 4925 if ( cur.disabled !== true || event.type !== "click" ) { 4926 matches = []; 4927 for ( i = 0; i < delegateCount; i++ ) { 4928 handleObj = handlers[ i ]; 4929 4930 // Don't conflict with Object.prototype properties (#13203) 4931 sel = handleObj.selector + " "; 4932 4933 if ( matches[ sel ] === undefined ) { 4934 matches[ sel ] = handleObj.needsContext ? 4935 jQuery( sel, this ).index( cur ) >= 0 : 4936 jQuery.find( sel, this, null, [ cur ] ).length; 4937 } 4938 if ( matches[ sel ] ) { 4939 matches.push( handleObj ); 4940 } 4941 } 4942 if ( matches.length ) { 4943 handlerQueue.push({ elem: cur, handlers: matches }); 4944 } 4945 } 4946 } 4947 } 4948 4949 // Add the remaining (directly-bound) handlers 4950 if ( delegateCount < handlers.length ) { 4951 handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); 4952 } 4953 4954 return handlerQueue; 4955 }, 4956 4957 // Includes some event props shared by KeyEvent and MouseEvent 4958 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), 4959 4960 fixHooks: {}, 4961 4962 keyHooks: { 4963 props: "char charCode key keyCode".split(" "), 4964 filter: function( event, original ) { 4965 4966 // Add which for key events 4967 if ( event.which == null ) { 4968 event.which = original.charCode != null ? original.charCode : original.keyCode; 4969 } 4970 4971 return event; 4972 } 4973 }, 4974 4975 mouseHooks: { 4976 props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), 4977 filter: function( event, original ) { 4978 var eventDoc, doc, body, 4979 button = original.button; 4980 4981 // Calculate pageX/Y if missing and clientX/Y available 4982 if ( event.pageX == null && original.clientX != null ) { 4983 eventDoc = event.target.ownerDocument || document; 4984 doc = eventDoc.documentElement; 4985 body = eventDoc.body; 4986 4987 event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); 4988 event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); 4989 } 4990 4991 // Add which for click: 1 === left; 2 === middle; 3 === right 4992 // Note: button is not normalized, so don't use it 4993 if ( !event.which && button !== undefined ) { 4994 event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); 4995 } 4996 4997 return event; 4998 } 4999 }, 5000 5001 fix: function( event ) { 5002 if ( event[ jQuery.expando ] ) { 5003 return event; 5004 } 5005 5006 // Create a writable copy of the event object and normalize some properties 5007 var i, prop, copy, 5008 type = event.type, 5009 originalEvent = event, 5010 fixHook = this.fixHooks[ type ]; 5011 5012 if ( !fixHook ) { 5013 this.fixHooks[ type ] = fixHook = 5014 rmouseEvent.test( type ) ? this.mouseHooks : 5015 rkeyEvent.test( type ) ? this.keyHooks : 5016 {}; 5017 } 5018 copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; 5019 5020 event = new jQuery.Event( originalEvent ); 5021 5022 i = copy.length; 5023 while ( i-- ) { 5024 prop = copy[ i ]; 5025 event[ prop ] = originalEvent[ prop ]; 5026 } 5027 5028 // Support: Cordova 2.5 (WebKit) (#13255) 5029 // All events should have a target; Cordova deviceready doesn't 5030 if ( !event.target ) { 5031 event.target = document; 5032 } 5033 5034 // Support: Safari 6.0+, Chrome<28 5035 // Target should not be a text node (#504, #13143) 5036 if ( event.target.nodeType === 3 ) { 5037 event.target = event.target.parentNode; 5038 } 5039 5040 return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; 5041 }, 5042 5043 special: { 5044 load: { 5045 // Prevent triggered image.load events from bubbling to window.load 5046 noBubble: true 5047 }, 5048 focus: { 5049 // Fire native event if possible so blur/focus sequence is correct 5050 trigger: function() { 5051 if ( this !== safeActiveElement() && this.focus ) { 5052 this.focus(); 5053 return false;
5054 } 5055 }, 5056 delegateType: "focusin" 5057 }, 5058 blur: { 5059 trigger: function() { 5060 if ( this === safeActiveElement() && this.blur ) { 5061 this.blur(); 5062 return false; 5063 } 5064 }, 5065 delegateType: "focusout" 5066 }, 5067 click: { 5068 // For checkbox, fire native event so checked state will be right 5069 trigger: function() { 5070 if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { 5071 this.click(); 5072 return false; 5073 } 5074 }, 5075 5076 // For cross-browser consistency, don't fire native .click() on links 5077 _default: function( event ) { 5078 return jQuery.nodeName( event.target, "a" ); 5079 } 5080 }, 5081 5082 beforeunload: { 5083 postDispatch: function( event ) { 5084 5085 // Support: Firefox 20+ 5086 // Firefox doesn't alert if the returnValue field is not set. 5087 if ( event.result !== undefined && event.originalEvent ) { 5088 event.originalEvent.returnValue = event.result; 5089 } 5090 } 5091 } 5092 }, 5093 5094 simulate: function( type, elem, event, bubble ) { 5095 // Piggyback on a donor event to simulate a different one. 5096 // Fake originalEvent to avoid donor's stopPropagation, but if the 5097 // simulated event prevents default then we do the same on the donor. 5098 var e = jQuery.extend( 5099 new jQuery.Event(), 5100 event, 5101 { 5102 type: type, 5103 isSimulated: true, 5104 originalEvent: {} 5105 } 5106 ); 5107 if ( bubble ) { 5108 jQuery.event.trigger( e, null, elem ); 5109 } else { 5110 jQuery.event.dispatch.call( elem, e ); 5111 } 5112 if ( e.isDefaultPrevented() ) { 5113 event.preventDefault(); 5114 } 5115 } 5116}; 5117 5118jQuery.removeEvent = function( elem, type, handle ) { 5119 if ( elem.removeEventListener ) { 5120 elem.removeEventListener( type, handle, false ); 5121 } 5122}; 5123 5124jQuery.Event = function( src, props ) { 5125 // Allow instantiation without the 'new' keyword 5126 if ( !(this instanceof jQuery.Event) ) { 5127 return new jQuery.Event( src, props ); 5128 } 5129 5130 // Event object 5131 if ( src && src.type ) { 5132 this.originalEvent = src; 5133 this.type = src.type; 5134 5135 // Events bubbling up the document may have been marked as prevented 5136 // by a handler lower down the tree; reflect the correct value. 5137 this.isDefaultPrevented = src.defaultPrevented || 5138 src.defaultPrevented === undefined && 5139 // Support: Android<4.0 5140 src.returnValue === false ? 5141 returnTrue : 5142 returnFalse; 5143 5144 // Event type 5145 } else { 5146 this.type = src; 5147 } 5148 5149 // Put explicitly provided properties onto the event object 5150 if ( props ) { 5151 jQuery.extend( this, props ); 5152 } 5153 5154 // Create a timestamp if incoming event doesn't have one 5155 this.timeStamp = src && src.timeStamp || jQuery.now(); 5156 5157 // Mark it as fixed 5158 this[ jQuery.expando ] = true; 5159}; 5160 5161// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 5162// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 5163jQuery.Event.prototype = { 5164 isDefaultPrevented: returnFalse, 5165 isPropagationStopped: returnFalse, 5166 isImmediatePropagationStopped: returnFalse, 5167 5168 preventDefault: function() { 5169 var e = this.originalEvent; 5170 5171 this.isDefaultPrevented = returnTrue; 5172 5173 if ( e && e.preventDefault ) { 5174 e.preventDefault(); 5175 } 5176 }, 5177 stopPropagation: function() { 5178 var e = this.originalEvent; 5179 5180 this.isPropagationStopped = returnTrue; 5181 5182 if ( e && e.stopPropagation ) { 5183 e.stopPropagation(); 5184 } 5185 }, 5186 stopImmediatePropagation: function() { 5187 var e = this.originalEvent; 5188 5189 this.isImmediatePropagationStopped = returnTrue; 5190 5191 if ( e && e.stopImmediatePropagation ) { 5192 e.stopImmediatePropagation(); 5193 } 5194 5195 this.stopPropagation(); 5196 } 5197}; 5198 5199// Create mouseenter/leave events using mouseover/out and event-time checks 5200// Support: Chrome 15+ 5201jQuery.each({ 5202 mouseenter: "mouseover", 5203 mouseleave: "mouseout", 5204 pointerenter: "pointerover", 5205 pointerleave: "pointerout" 5206}, function( orig, fix ) { 5207 jQuery.event.special[ orig ] = { 5208 delegateType: fix, 5209 bindType: fix, 5210 5211 handle: function( event ) { 5212 var ret, 5213 target = this, 5214 related = event.relatedTarget, 5215 handleObj = event.handleObj; 5216 5217 // For mousenter/leave call the handler if related is outside the target. 5218 // NB: No relatedTarget if the mouse left/entered the browser window 5219 if ( !related || (related !== target && !jQuery.contains( target, related )) ) { 5220 event.type = handleObj.origType; 5221 ret = handleObj.handler.apply( this, arguments ); 5222 event.type = fix; 5223 } 5224 return ret; 5225 } 5226 }; 5227}); 5228 5229// Support: Firefox, Chrome, Safari 5230// Create "bubbling" focus and blur events 5231if ( !support.focusinBubbles ) { 5232 jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { 5233 5234 // Attach a single capturing handler on the document while someone wants focusin/focusout 5235 var handler = function( event ) { 5236 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); 5237 }; 5238 5239 jQuery.event.special[ fix ] = { 5240 setup: function() { 5241 var doc = this.ownerDocument || this, 5242 attaches = data_priv.access( doc, fix ); 5243 5244 if ( !attaches ) { 5245 doc.addEventListener( orig, handler, true ); 5246 } 5247 data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); 5248 }, 5249 teardown: function() { 5250 var doc = this.ownerDocument || this, 5251 attaches = data_priv.access( doc, fix ) - 1; 5252 5253 if ( !attaches ) { 5254 doc.removeEventListener( orig, handler, true ); 5255 data_priv.remove( doc, fix ); 5256 5257 } else { 5258 data_priv.access( doc, fix, attaches ); 5259 } 5260 } 5261 }; 5262 }); 5263} 5264 5265jQuery.fn.extend({ 5266 5267 on: function( types, selector, data, fn, /*INTERNAL*/ one ) { 5268 var origFn, type; 5269 5270 // Types can be a map of types/handlers 5271 if ( typeof types === "object" ) { 5272 // ( types-Object, selector, data ) 5273 if ( typeof selector !== "string" ) { 5274 // ( types-Object, data ) 5275 data = data || selector; 5276 selector = undefined; 5277 } 5278 for ( type in types ) { 5279 this.on( type, selector, data, types[ type ], one ); 5280 } 5281 return this; 5282 } 5283 5284 if ( data == null && fn == null ) { 5285 // ( types, fn ) 5286 fn = selector; 5287 data = selector = undefined; 5288 } else if ( fn == null ) { 5289 if ( typeof selector === "string" ) { 5290 // ( types, selector, fn ) 5291 fn = data; 5292 data = undefined; 5293 } else { 5294 // ( types, data, fn ) 5295 fn = data; 5296 data = selector; 5297 selector = undefined; 5298 } 5299 } 5300 if ( fn === false ) { 5301 fn = returnFalse; 5302 } else if ( !fn ) { 5303 return this; 5304 } 5305 5306 if ( one === 1 ) { 5307 origFn = fn; 5308 fn = function( event ) { 5309 // Can use an empty set, since event contains the info 5310 jQuery().off( event ); 5311 return origFn.apply( this, arguments ); 5312 }; 5313 // Use same guid so caller can remove using origFn 5314 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); 5315 } 5316 return this.each( function() { 5317 jQuery.event.add( this, types, fn, data, selector ); 5318 }); 5319 }, 5320 one: function( types, selector, data, fn ) { 5321 return this.on( types, selector, data, fn, 1 ); 5322 }, 5323 off: function( types, selector, fn ) { 5324 var handleObj, type; 5325 if ( types && types.preventDefault && types.handleObj ) { 5326 // ( event ) dispatched jQuery.Event 5327 handleObj = types.handleObj; 5328 jQuery( types.delegateTarget ).off( 5329 handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, 5330 handleObj.selector, 5331 handleObj.handler 5332 ); 5333 return this; 5334 } 5335 if ( typeof types === "object" ) { 5336 // ( types-object [, selector] ) 5337 for ( type in types ) { 5338 this.off( type, selector, types[ type ] ); 5339 } 5340 return this; 5341 } 5342 if ( selector === false || typeof selector === "function" ) { 5343 // ( types [, fn] ) 5344 fn = selector; 5345 selector = undefined; 5346 } 5347 if ( fn === false ) { 5348 fn = returnFalse; 5349 } 5350 return this.each(function() { 5351 jQuery.event.remove( this, types, fn, selector ); 5352 }); 5353 }, 5354 5355 trigger: function( type, data ) { 5356 return this.each(function() { 5357 jQuery.event.trigger( type, data, this ); 5358 }); 5359 }, 5360 triggerHandler: function( type, data ) { 5361 var elem = this[0]; 5362 if ( elem ) { 5363 return jQuery.event.trigger( type, data, elem, true ); 5364 } 5365 } 5366}); 5367 5368 5369var 5370 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, 5371 rtagName = /<([\w:]+)/,
5372 rhtml = /<|&#?\w+;/, 5373 rnoInnerhtml = /<(?:script|style|link)/i, 5374 // checked="checked" or checked 5375 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 5376 rscriptType = /^$|\/(?:java|ecma)script/i, 5377 rscriptTypeMasked = /^true\/(.*)/, 5378 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, 5379 5380 // We have to close these tags to support XHTML (#13200) 5381 wrapMap = { 5382 5383 // Support: IE9 5384 option: [ 1, "<select multiple='multiple'>", "</select>" ], 5385 5386 thead: [ 1, "<table>", "</table>" ], 5387 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 5388 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 5389 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 5390 5391 _default: [ 0, "", "" ] 5392 }; 5393 5394// Support: IE9 5395wrapMap.optgroup = wrapMap.option; 5396 5397wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 5398wrapMap.th = wrapMap.td; 5399 5400// Support: 1.x compatibility 5401// Manipulating tables requires a tbody 5402function manipulationTarget( elem, content ) { 5403 return jQuery.nodeName( elem, "table" ) && 5404 jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? 5405 5406 elem.getElementsByTagName("tbody")[0] || 5407 elem.appendChild( elem.ownerDocument.createElement("tbody") ) : 5408 elem; 5409} 5410 5411// Replace/restore the type attribute of script elements for safe DOM manipulation 5412function disableScript( elem ) { 5413 elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; 5414 return elem; 5415} 5416function restoreScript( elem ) { 5417 var match = rscriptTypeMasked.exec( elem.type ); 5418 5419 if ( match ) { 5420 elem.type = match[ 1 ]; 5421 } else { 5422 elem.removeAttribute("type"); 5423 } 5424 5425 return elem; 5426} 5427 5428// Mark scripts as having already been evaluated 5429function setGlobalEval( elems, refElements ) { 5430 var i = 0, 5431 l = elems.length; 5432 5433 for ( ; i < l; i++ ) { 5434 data_priv.set( 5435 elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) 5436 ); 5437 } 5438} 5439 5440function cloneCopyEvent( src, dest ) { 5441 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; 5442 5443 if ( dest.nodeType !== 1 ) { 5444 return; 5445 } 5446 5447 // 1. Copy private data: events, handlers, etc. 5448 if ( data_priv.hasData( src ) ) { 5449 pdataOld = data_priv.access( src ); 5450 pdataCur = data_priv.set( dest, pdataOld ); 5451 events = pdataOld.events; 5452 5453 if ( events ) { 5454 delete pdataCur.handle; 5455 pdataCur.events = {}; 5456 5457 for ( type in events ) { 5458 for ( i = 0, l = events[ type ].length; i < l; i++ ) { 5459 jQuery.event.add( dest, type, events[ type ][ i ] ); 5460 } 5461 } 5462 } 5463 } 5464 5465 // 2. Copy user data 5466 if ( data_user.hasData( src ) ) { 5467 udataOld = data_user.access( src ); 5468 udataCur = jQuery.extend( {}, udataOld ); 5469 5470 data_user.set( dest, udataCur ); 5471 } 5472} 5473 5474function getAll( context, tag ) { 5475 var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : 5476 context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : 5477 []; 5478 5479 return tag === undefined || tag && jQuery.nodeName( context, tag ) ? 5480 jQuery.merge( [ context ], ret ) : 5481 ret; 5482} 5483 5484// Fix IE bugs, see support tests 5485function fixInput( src, dest ) { 5486 var nodeName = dest.nodeName.toLowerCase(); 5487 5488 // Fails to persist the checked state of a cloned checkbox or radio button. 5489 if ( nodeName === "input" && rcheckableType.test( src.type ) ) { 5490 dest.checked = src.checked; 5491 5492 // Fails to return the selected option to the default selected state when cloning options 5493 } else if ( nodeName === "input" || nodeName === "textarea" ) { 5494 dest.defaultValue = src.defaultValue; 5495 } 5496} 5497 5498jQuery.extend({ 5499 clone: function( elem, dataAndEvents, deepDataAndEvents ) { 5500 var i, l, srcElements, destElements, 5501 clone = elem.cloneNode( true ), 5502 inPage = jQuery.contains( elem.ownerDocument, elem ); 5503 5504 // Fix IE cloning issues 5505 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && 5506 !jQuery.isXMLDoc( elem ) ) { 5507 5508 // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 5509 destElements = getAll( clone ); 5510 srcElements = getAll( elem ); 5511 5512 for ( i = 0, l = srcElements.length; i < l; i++ ) { 5513 fixInput( srcElements[ i ], destElements[ i ] ); 5514 } 5515 } 5516 5517 // Copy the events from the original to the clone 5518 if ( dataAndEvents ) { 5519 if ( deepDataAndEvents ) { 5520 srcElements = srcElements || getAll( elem ); 5521 destElements = destElements || getAll( clone ); 5522 5523 for ( i = 0, l = srcElements.length; i < l; i++ ) { 5524 cloneCopyEvent( srcElements[ i ], destElements[ i ] ); 5525 } 5526 } else { 5527 cloneCopyEvent( elem, clone ); 5528 } 5529 } 5530 5531 // Preserve script evaluation history 5532 destElements = getAll( clone, "script" ); 5533 if ( destElements.length > 0 ) { 5534 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); 5535 } 5536 5537 // Return the cloned set 5538 return clone; 5539 }, 5540 5541 buildFragment: function( elems, context, scripts, selection ) { 5542 var elem, tmp, tag, wrap, contains, j, 5543 fragment = context.createDocumentFragment(), 5544 nodes = [], 5545 i = 0, 5546 l = elems.length; 5547 5548 for ( ; i < l; i++ ) { 5549 elem = elems[ i ]; 5550 5551 if ( elem || elem === 0 ) { 5552 5553 // Add nodes directly 5554 if ( jQuery.type( elem ) === "object" ) {
5555 // Support: QtWebKit, PhantomJS 5556 // push.apply(_, arraylike) throws on ancient WebKit 5557 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); 5558 5559 // Convert non-html into a text node 5560 } else if ( !rhtml.test( elem ) ) { 5561 nodes.push( context.createTextNode( elem ) ); 5562 5563 // Convert html into DOM nodes 5564 } else { 5565 tmp = tmp || fragment.appendChild( context.createElement("div") ); 5566 5567 // Deserialize a standard representation 5568 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); 5569 wrap = wrapMap[ tag ] || wrapMap._default; 5570 tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ]; 5571 5572 // Descend through wrappers to the right content 5573 j = wrap[ 0 ]; 5574 while ( j-- ) { 5575 tmp = tmp.lastChild; 5576 } 5577 5578 // Support: QtWebKit, PhantomJS 5579 // push.apply(_, arraylike) throws on ancient WebKit 5580 jQuery.merge( nodes, tmp.childNodes ); 5581 5582 // Remember the top-level container 5583 tmp = fragment.firstChild; 5584 5585 // Ensure the created nodes are orphaned (#12392) 5586 tmp.textContent = ""; 5587 } 5588 } 5589 } 5590 5591 // Remove wrapper from fragment 5592 fragment.textContent = ""; 5593 5594 i = 0; 5595 while ( (elem = nodes[ i++ ]) ) { 5596 5597 // #4087 - If origin and destination elements are the same, and this is 5598 // that element, do not do anything 5599 if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { 5600 continue; 5601 } 5602 5603 contains = jQuery.contains( elem.ownerDocument, elem ); 5604 5605 // Append to fragment 5606 tmp = getAll( fragment.appendChild( elem ), "script" ); 5607 5608 // Preserve script evaluation history 5609 if ( contains ) { 5610 setGlobalEval( tmp ); 5611 } 5612 5613 // Capture executables 5614 if ( scripts ) { 5615 j = 0; 5616 while ( (elem = tmp[ j++ ]) ) { 5617 if ( rscriptType.test( elem.type || "" ) ) { 5618 scripts.push( elem ); 5619 } 5620 } 5621 } 5622 } 5623 5624 return fragment; 5625 }, 5626 5627 cleanData: function( elems ) { 5628 var data, elem, type, key, 5629 special = jQuery.event.special, 5630 i = 0; 5631 5632 for ( ; (elem = elems[ i ]) !== undefined; i++ ) { 5633 if ( jQuery.acceptData( elem ) ) { 5634 key = elem[ data_priv.expando ]; 5635 5636 if ( key && (data = data_priv.cache[ key ]) ) { 5637 if ( data.events ) { 5638 for ( type in data.events ) { 5639 if ( special[ type ] ) { 5640 jQuery.event.remove( elem, type ); 5641 5642 // This is a shortcut to avoid jQuery.event.remove's overhead 5643 } else { 5644 jQuery.removeEvent( elem, type, data.handle ); 5645 } 5646 } 5647 } 5648 if ( data_priv.cache[ key ] ) { 5649 // Discard any remaining `private` data 5650 delete data_priv.cache[ key ]; 5651 } 5652 } 5653 } 5654 // Discard any remaining `user` data 5655 delete data_user.cache[ elem[ data_user.expando ] ]; 5656 } 5657 } 5658}); 5659 5660jQuery.fn.extend({ 5661 text: function( value ) { 5662 return access( this, function( value ) { 5663 return value === undefined ? 5664 jQuery.text( this ) : 5665 this.empty().each(function() { 5666 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 5667 this.textContent = value; 5668 } 5669 }); 5670 }, null, value, arguments.length ); 5671 }, 5672 5673 append: function() { 5674 return this.domManip( arguments, function( elem ) { 5675 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 5676 var target = manipulationTarget( this, elem ); 5677 target.appendChild( elem ); 5678 } 5679 }); 5680 }, 5681
5682 prepend: function() { 5683 return this.domManip( arguments, function( elem ) { 5684 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 5685 var target = manipulationTarget( this, elem ); 5686 target.insertBefore( elem, target.firstChild ); 5687 } 5688 }); 5689 }, 5690 5691 before: function() { 5692 return this.domManip( arguments, function( elem ) { 5693 if ( this.parentNode ) { 5694 this.parentNode.insertBefore( elem, this ); 5695 } 5696 }); 5697 }, 5698 5699 after: function() { 5700 return this.domManip( arguments, function( elem ) { 5701 if ( this.parentNode ) { 5702 this.parentNode.insertBefore( elem, this.nextSibling ); 5703 } 5704 }); 5705 }, 5706 5707 remove: function( selector, keepData /* Internal Use Only */ ) { 5708 var elem, 5709 elems = selector ? jQuery.filter( selector, this ) : this, 5710 i = 0; 5711 5712 for ( ; (elem = elems[i]) != null; i++ ) { 5713 if ( !keepData && elem.nodeType === 1 ) { 5714 jQuery.cleanData( getAll( elem ) ); 5715 } 5716 5717 if ( elem.parentNode ) { 5718 if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { 5719 setGlobalEval( getAll( elem, "script" ) ); 5720 } 5721 elem.parentNode.removeChild( elem ); 5722 } 5723 } 5724 5725 return this; 5726 }, 5727 5728 empty: function() { 5729 var elem, 5730 i = 0; 5731 5732 for ( ; (elem = this[i]) != null; i++ ) { 5733 if ( elem.nodeType === 1 ) { 5734 5735 // Prevent memory leaks 5736 jQuery.cleanData( getAll( elem, false ) ); 5737 5738 // Remove any remaining nodes 5739 elem.textContent = ""; 5740 } 5741 } 5742 5743 return this; 5744 }, 5745 5746 clone: function( dataAndEvents, deepDataAndEvents ) { 5747 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 5748 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 5749 5750 return this.map(function() { 5751 return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 5752 }); 5753 }, 5754 5755 html: function( value ) { 5756 return access( this, function( value ) { 5757 var elem = this[ 0 ] || {}, 5758 i = 0, 5759 l = this.length; 5760 5761 if ( value === undefined && elem.nodeType === 1 ) { 5762 return elem.innerHTML; 5763 } 5764 5765 // See if we can take a shortcut and just use innerHTML 5766 if ( typeof value === "string" && !rnoInnerhtml.test( value ) && 5767 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { 5768 5769 value = value.replace( rxhtmlTag, "<$1></$2>" ); 5770 5771 try { 5772 for ( ; i < l; i++ ) { 5773 elem = this[ i ] || {}; 5774 5775 // Remove element nodes and prevent memory leaks 5776 if ( elem.nodeType === 1 ) { 5777 jQuery.cleanData( getAll( elem, false ) ); 5778 elem.innerHTML = value; 5779 } 5780 } 5781 5782 elem = 0; 5783 5784 // If using innerHTML throws an exception, use the fallback method 5785 } catch( e ) {} 5786 } 5787 5788 if ( elem ) { 5789 this.empty().append( value ); 5790 } 5791 }, null, value, arguments.length ); 5792 }, 5793 5794 replaceWith: function() { 5795 var arg = arguments[ 0 ]; 5796 5797 // Make the changes, replacing each context element with the new content 5798 this.domManip( arguments, function( elem ) { 5799 arg = this.parentNode; 5800 5801 jQuery.cleanData( getAll( this ) ); 5802 5803 if ( arg ) { 5804 arg.replaceChild( elem, this ); 5805 } 5806 }); 5807 5808 // Force removal if there was no new content (e.g., from empty arguments) 5809 return arg && (arg.length || arg.nodeType) ? this : this.remove(); 5810 }, 5811 5812 detach: function( selector ) { 5813 return this.remove( selector, true ); 5814 }, 5815 5816 domManip: function( args, callback ) { 5817 5818 // Flatten any nested arrays 5819 args = concat.apply( [], args ); 5820 5821 var fragment, first, scripts, hasScripts, node, doc, 5822 i = 0, 5823 l = this.length, 5824 set = this, 5825 iNoClone = l - 1, 5826 value = args[ 0 ], 5827 isFunction = jQuery.isFunction( value ); 5828 5829 // We can't cloneNode fragments that contain checked, in WebKit 5830 if ( isFunction || 5831 ( l > 1 && typeof value === "string" && 5832 !support.checkClone && rchecked.test( value ) ) ) { 5833 return this.each(function( index ) { 5834 var self = set.eq( index ); 5835 if ( isFunction ) { 5836 args[ 0 ] = value.call( this, index, self.html() ); 5837 } 5838 self.domManip( args, callback ); 5839 }); 5840 } 5841 5842 if ( l ) { 5843 fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); 5844 first = fragment.firstChild; 5845 5846 if ( fragment.childNodes.length === 1 ) { 5847 fragment = first; 5848 } 5849 5850 if ( first ) { 5851 scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); 5852 hasScripts = scripts.length; 5853 5854 // Use the original fragment for the last item instead of the first because it can end up 5855 // being emptied incorrectly in certain situations (#8070). 5856 for ( ; i < l; i++ ) { 5857 node = fragment; 5858 5859 if ( i !== iNoClone ) { 5860 node = jQuery.clone( node, true, true ); 5861 5862 // Keep references to cloned scripts for later restoration 5863 if ( hasScripts ) {
5864 // Support: QtWebKit 5865 // jQuery.merge because push.apply(_, arraylike) throws 5866 jQuery.merge( scripts, getAll( node, "script" ) ); 5867 } 5868 } 5869 5870 callback.call( this[ i ], node, i ); 5871 } 5872 5873 if ( hasScripts ) { 5874 doc = scripts[ scripts.length - 1 ].ownerDocument; 5875 5876 // Reenable scripts 5877 jQuery.map( scripts, restoreScript ); 5878 5879 // Evaluate executable scripts on first document insertion 5880 for ( i = 0; i < hasScripts; i++ ) { 5881 node = scripts[ i ]; 5882 if ( rscriptType.test( node.type || "" ) && 5883 !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { 5884 5885 if ( node.src ) { 5886 // Optional AJAX dependency, but won't run scripts if not present 5887 if ( jQuery._evalUrl ) { 5888 jQuery._evalUrl( node.src ); 5889 } 5890 } else { 5891 jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); 5892 } 5893 } 5894 } 5895 } 5896 } 5897 } 5898 5899 return this; 5900 } 5901}); 5902 5903jQuery.each({ 5904 appendTo: "append", 5905 prependTo: "prepend", 5906 insertBefore: "before", 5907 insertAfter: "after", 5908 replaceAll: "replaceWith" 5909}, function( name, original ) { 5910 jQuery.fn[ name ] = function( selector ) { 5911 var elems, 5912 ret = [], 5913 insert = jQuery( selector ), 5914 last = insert.length - 1, 5915 i = 0; 5916 5917 for ( ; i <= last; i++ ) { 5918 elems = i === last ? this : this.clone( true ); 5919 jQuery( insert[ i ] )[ original ]( elems ); 5920 5921 // Support: QtWebKit 5922 // .get() because push.apply(_, arraylike) throws 5923 push.apply( ret, elems.get() ); 5924 } 5925 5926 return this.pushStack( ret ); 5927 }; 5928}); 5929 5930 5931var iframe, 5932 elemdisplay = {}; 5933 5934/** 5935 * Retrieve the actual display of a element 5936 * @param {String} name nodeName of the element 5937 * @param {Object} doc Document object 5938 */ 5939// Called only from within defaultDisplay 5940function actualDisplay( name, doc ) { 5941 var style, 5942 elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), 5943 5944 // getDefaultComputedStyle might be reliably used only on attached element 5945 display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? 5946 5947 // Use of this method is a temporary fix (more like optimization) until something better comes along, 5948 // since it was removed from specification and supported only in FF 5949 style.display : jQuery.css( elem[ 0 ], "display" ); 5950 5951 // We don't have any data stored on the element, 5952 // so use "detach" method as fast way to get rid of the element 5953 elem.detach(); 5954 5955 return display; 5956} 5957 5958/** 5959 * Try to determine the default display value of an element 5960 * @param {String} nodeName 5961 */ 5962function defaultDisplay( nodeName ) { 5963 var doc = document, 5964 display = elemdisplay[ nodeName ]; 5965 5966 if ( !display ) { 5967 display = actualDisplay( nodeName, doc ); 5968 5969 // If the simple way fails, read from inside an iframe 5970 if ( display === "none" || !display ) { 5971 5972 // Use the already-created iframe if possible 5973 iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); 5974 5975 // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse 5976 doc = iframe[ 0 ].contentDocument; 5977 5978 // Support: IE 5979 doc.write(); 5980 doc.close(); 5981 5982 display = actualDisplay( nodeName, doc ); 5983 iframe.detach(); 5984 } 5985 5986 // Store the correct default display 5987 elemdisplay[ nodeName ] = display; 5988 } 5989 5990 return display; 5991} 5992var rmargin = (/^margin/); 5993 5994var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 5995 5996var getStyles = function( elem ) { 5997 // Support: IE<=11+, Firefox<=30+ (#15098, #14150) 5998 // IE throws on elements created in popups 5999 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6000 if ( elem.ownerDocument.defaultView.opener ) { 6001 return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 6002 } 6003 6004 return window.getComputedStyle( elem, null ); 6005 }; 6006 6007 6008 6009function curCSS( elem, name, computed ) { 6010 var width, minWidth, maxWidth, ret, 6011 style = elem.style; 6012 6013 computed = computed || getStyles( elem ); 6014 6015 // Support: IE9 6016 // getPropertyValue is only needed for .css('filter') (#12537) 6017 if ( computed ) { 6018 ret = computed.getPropertyValue( name ) || computed[ name ]; 6019 } 6020 6021 if ( computed ) { 6022 6023 if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { 6024 ret = jQuery.style( elem, name ); 6025 } 6026
6027 // Support: iOS < 6 6028 // A tribute to the "awesome hack by Dean Edwards" 6029 // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels 6030 // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values 6031 if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { 6032 6033 // Remember the original values 6034 width = style.width; 6035 minWidth = style.minWidth; 6036 maxWidth = style.maxWidth; 6037 6038 // Put in the new values to get a computed value out 6039 style.minWidth = style.maxWidth = style.width = ret; 6040 ret = computed.width; 6041 6042 // Revert the changed values 6043 style.width = width; 6044 style.minWidth = minWidth; 6045 style.maxWidth = maxWidth; 6046 } 6047 } 6048 6049 return ret !== undefined ? 6050 // Support: IE 6051 // IE returns zIndex value as an integer. 6052 ret + "" : 6053 ret; 6054} 6055 6056 6057function addGetHookIf( conditionFn, hookFn ) { 6058 // Define the hook, we'll check on the first run if it's really needed. 6059 return { 6060 get: function() { 6061 if ( conditionFn() ) { 6062 // Hook not needed (or it's not possible to use it due 6063 // to missing dependency), remove it. 6064 delete this.get; 6065 return; 6066 } 6067 6068 // Hook needed; redefine it so that the support test is not executed again. 6069 return (this.get = hookFn).apply( this, arguments ); 6070 } 6071 }; 6072} 6073 6074 6075(function() { 6076 var pixelPositionVal, boxSizingReliableVal, 6077 docElem = document.documentElement, 6078 container = document.createElement( "div" ), 6079 div = document.createElement( "div" ); 6080 6081 if ( !div.style ) { 6082 return; 6083 } 6084 6085 // Support: IE9-11+ 6086 // Style of cloned element affects source element cloned (#8908) 6087 div.style.backgroundClip = "content-box"; 6088 div.cloneNode( true ).style.backgroundClip = ""; 6089 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 6090 6091 container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + 6092 "position:absolute"; 6093 container.appendChild( div ); 6094 6095 // Executing both pixelPosition & boxSizingReliable tests require only one layout 6096 // so they're executed at the same time to save the second computation. 6097 function computePixelPositionAndBoxSizingReliable() { 6098 div.style.cssText = 6099 // Support: Firefox<29, Android 2.3 6100 // Vendor-prefix box-sizing 6101 "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + 6102 "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + 6103 "border:1px;padding:1px;width:4px;position:absolute"; 6104 div.innerHTML = ""; 6105 docElem.appendChild( container ); 6106 6107 var divStyle = window.getComputedStyle( div, null ); 6108 pixelPositionVal = divStyle.top !== "1%"; 6109 boxSizingReliableVal = divStyle.width === "4px"; 6110 6111 docElem.removeChild( container ); 6112 } 6113 6114 // Support: node.js jsdom 6115 // Don't assume that getComputedStyle is a property of the global object 6116 if ( window.getComputedStyle ) { 6117 jQuery.extend( support, { 6118 pixelPosition: function() { 6119 6120 // This test is executed only once but we still do memoizing 6121 // since we can use the boxSizingReliable pre-computing. 6122 // No need to check if the test was already performed, though. 6123 computePixelPositionAndBoxSizingReliable(); 6124 return pixelPositionVal; 6125 }, 6126 boxSizingReliable: function() { 6127 if ( boxSizingReliableVal == null ) { 6128 computePixelPositionAndBoxSizingReliable(); 6129 } 6130 return boxSizingReliableVal; 6131 }, 6132 reliableMarginRight: function() { 6133 6134 // Support: Android 2.3 6135 // Check if div with explicit width and no margin-right incorrectly 6136 // gets computed margin-right based on width of container. (#3333) 6137 // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right 6138 // This support function is only executed once so no memoizing is needed. 6139 var ret, 6140 marginDiv = div.appendChild( document.createElement( "div" ) ); 6141 6142 // Reset CSS: box-sizing; display; margin; border; padding 6143 marginDiv.style.cssText = div.style.cssText = 6144 // Support: Firefox<29, Android 2.3 6145 // Vendor-prefix box-sizing 6146 "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + 6147 "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; 6148 marginDiv.style.marginRight = marginDiv.style.width = "0"; 6149 div.style.width = "1px"; 6150 docElem.appendChild( container ); 6151 6152 ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); 6153 6154 docElem.removeChild( container ); 6155 div.removeChild( marginDiv ); 6156 6157 return ret; 6158 } 6159 }); 6160 } 6161})(); 6162 6163 6164// A method for quickly swapping in/out CSS properties to get correct calculations. 6165jQuery.swap = function( elem, options, callback, args ) { 6166 var ret, name,
6167 old = {}; 6168 6169 // Remember the old values, and insert the new ones 6170 for ( name in options ) { 6171 old[ name ] = elem.style[ name ]; 6172 elem.style[ name ] = options[ name ]; 6173 } 6174 6175 ret = callback.apply( elem, args || [] ); 6176 6177 // Revert the old values 6178 for ( name in options ) { 6179 elem.style[ name ] = old[ name ]; 6180 } 6181 6182 return ret; 6183}; 6184 6185 6186var 6187 // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption" 6188 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display 6189 rdisplayswap = /^(none|table(?!-c[ea]).+)/, 6190 rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), 6191 rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ), 6192 6193 cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 6194 cssNormalTransform = { 6195 letterSpacing: "0", 6196 fontWeight: "400" 6197 }, 6198 6199 cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; 6200 6201// Return a css property mapped to a potentially vendor prefixed property 6202function vendorPropName( style, name ) { 6203 6204 // Shortcut for names that are not vendor prefixed 6205 if ( name in style ) { 6206 return name; 6207 } 6208 6209 // Check for vendor prefixed names 6210 var capName = name[0].toUpperCase() + name.slice(1), 6211 origName = name, 6212 i = cssPrefixes.length; 6213 6214 while ( i-- ) { 6215 name = cssPrefixes[ i ] + capName; 6216 if ( name in style ) { 6217 return name; 6218 } 6219 } 6220 6221 return origName; 6222} 6223 6224function setPositiveNumber( elem, value, subtract ) { 6225 var matches = rnumsplit.exec( value ); 6226 return matches ? 6227 // Guard against undefined "subtract", e.g., when used as in cssHooks 6228 Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : 6229 value; 6230} 6231 6232function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { 6233 var i = extra === ( isBorderBox ? "border" : "content" ) ? 6234 // If we already have the right measurement, avoid augmentation 6235 4 : 6236 // Otherwise initialize for horizontal or vertical properties 6237 name === "width" ? 1 : 0, 6238 6239 val = 0; 6240 6241 for ( ; i < 4; i += 2 ) { 6242 // Both box models exclude margin, so add it if we want it 6243 if ( extra === "margin" ) { 6244 val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); 6245 } 6246 6247 if ( isBorderBox ) { 6248 // border-box includes padding, so remove it if we want content 6249 if ( extra === "content" ) { 6250 val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6251 } 6252 6253 // At this point, extra isn't border nor margin, so remove border 6254 if ( extra !== "margin" ) { 6255 val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6256 } 6257 } else { 6258 // At this point, extra isn't content, so add padding 6259 val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6260 6261 // At this point, extra isn't content nor padding, so add border 6262 if ( extra !== "padding" ) { 6263 val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6264 } 6265 } 6266 } 6267 6268 return val; 6269} 6270 6271function getWidthOrHeight( elem, name, extra ) { 6272 6273 // Start with offset property, which is equivalent to the border-box value 6274 var valueIsBorderBox = true, 6275 val = name === "width" ? elem.offsetWidth : elem.offsetHeight, 6276 styles = getStyles( elem ), 6277 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; 6278 6279 // Some non-html elements return undefined for offsetWidth, so check for null/undefined 6280 // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 6281 // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 6282 if ( val <= 0 || val == null ) { 6283 // Fall back to computed then uncomputed css if necessary 6284 val = curCSS( elem, name, styles ); 6285 if ( val < 0 || val == null ) { 6286 val = elem.style[ name ]; 6287 } 6288 6289 // Computed unit is not pixels. Stop here and return. 6290 if ( rnumnonpx.test(val) ) { 6291 return val; 6292 } 6293 6294 // Check for style in case a browser which returns unreliable values 6295 // for getComputedStyle silently falls back to the reliable elem.style 6296 valueIsBorderBox = isBorderBox && 6297 ( support.boxSizingReliable() || val === elem.style[ name ] ); 6298 6299 // Normalize "", auto, and prepare for extra 6300 val = parseFloat( val ) || 0; 6301 } 6302 6303 // Use the active box-sizing model to add/subtract irrelevant styles 6304 return ( val + 6305 augmentWidthOrHeight( 6306 elem, 6307 name, 6308 extra || ( isBorderBox ? "border" : "content" ), 6309 valueIsBorderBox, 6310 styles 6311 ) 6312 ) + "px"; 6313} 6314 6315function showHide( elements, show ) { 6316 var display, elem, hidden, 6317 values = [], 6318 index = 0, 6319 length = elements.length; 6320 6321 for ( ; index < length; index++ ) { 6322 elem = elements[ index ]; 6323 if ( !elem.style ) { 6324 continue; 6325 } 6326 6327 values[ index ] = data_priv.get( elem, "olddisplay" ); 6328 display = elem.style.display; 6329 if ( show ) { 6330 // Reset the inline display of this element to learn if it is 6331 // being hidden by cascaded rules or not 6332 if ( !values[ index ] && display === "none" ) { 6333 elem.style.display = ""; 6334 } 6335 6336 // Set elements which have been overridden with display: none 6337 // in a stylesheet to whatever the default browser style is 6338 // for such an element 6339 if ( elem.style.display === "" && isHidden( elem ) ) { 6340 values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) ); 6341 } 6342 } else { 6343 hidden = isHidden( elem ); 6344 6345 if ( display !== "none" || !hidden ) { 6346 data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "dis
6346play" ) ); 6347 } 6348 } 6349 } 6350 6351 // Set the display of most of the elements in a second loop 6352 // to avoid the constant reflow 6353 for ( index = 0; index < length; index++ ) { 6354 elem = elements[ index ]; 6355 if ( !elem.style ) { 6356 continue; 6357 } 6358 if ( !show || elem.style.display === "none" || elem.style.display === "" ) { 6359 elem.style.display = show ? values[ index ] || "" : "none"; 6360 } 6361 } 6362 6363 return elements; 6364} 6365 6366jQuery.extend({ 6367 6368 // Add in style property hooks for overriding the default 6369 // behavior of getting and setting a style property 6370 cssHooks: { 6371 opacity: { 6372 get: function( elem, computed ) { 6373 if ( computed ) { 6374 6375 // We should always get a number back from opacity 6376 var ret = curCSS( elem, "opacity" ); 6377 return ret === "" ? "1" : ret; 6378 } 6379 } 6380 } 6381 }, 6382 6383 // Don't automatically add "px" to these possibly-unitless properties 6384 cssNumber: { 6385 "columnCount": true, 6386 "fillOpacity": true, 6387 "flexGrow": true, 6388 "flexShrink": true, 6389 "fontWeight": true, 6390 "lineHeight": true, 6391 "opacity": true, 6392 "order": true, 6393 "orphans": true, 6394 "widows": true, 6395 "zIndex": true, 6396 "zoom": true 6397 }, 6398 6399 // Add in properties whose names you wish to fix before 6400 // setting or getting the value 6401 cssProps: { 6402 "float": "cssFloat" 6403 }, 6404 6405 // Get and set the style property on a DOM Node 6406 style: function( elem, name, value, extra ) { 6407 6408 // Don't set styles on text and comment nodes 6409 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 6410 return; 6411 } 6412 6413 // Make sure that we're working with the right name 6414 var ret, type, hooks, 6415 origName = jQuery.camelCase( name ), 6416 style = elem.style; 6417 6418 name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); 6419 6420 // Gets hook for the prefixed version, then unprefixed version 6421 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6422 6423 // Check if we're setting a value 6424 if ( value !== undefined ) { 6425 type = typeof value; 6426 6427 // Convert "+=" or "-=" to relative numbers (#7345) 6428 if ( type === "string" && (ret = rrelNum.exec( value )) ) { 6429 value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); 6430 // Fixes bug #9237 6431 type = "number"; 6432 } 6433 6434 // Make sure that null and NaN values aren't set (#7116) 6435 if ( value == null || value !== value ) { 6436 return; 6437 } 6438 6439 // If a number, add 'px' to the (except for certain CSS properties) 6440 if ( type === "number" && !jQuery.cssNumber[ origName ] ) { 6441 value += "px"; 6442 } 6443 6444 // Support: IE9-11+ 6445 // background-* props affect original clone's values 6446 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { 6447 style[ name ] = "inherit"; 6448 } 6449 6450 // If a hook was provided, use that value, otherwise just set the specified value 6451 if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { 6452 style[ name ] = value; 6453 } 6454 6455 } else { 6456 // If a hook was provided get the non-computed value from there 6457 if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { 6458 return ret; 6459 } 6460 6461 // Otherwise just get the value from the style object 6462 return style[ name ]; 6463 } 6464 }, 6465 6466 css: function( elem, name, extra, styles ) { 6467 var val, num, hooks, 6468 origName = jQuery.camelCase( name ); 6469 6470 // Make sure that we're working with the right name 6471 name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); 6472 6473 // Try prefixed name followed by the unprefixed name 6474 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6475 6476 // If a hook was provided get the computed value from there 6477 if ( hooks && "get" in hooks ) { 6478 val = hooks.get( elem, true, extra ); 6479 } 6480 6481 // Otherwise, if a way to get the computed value exists, use that 6482 if ( val === undefined ) { 6483 val = curCSS( elem, name, styles ); 6484 } 6485 6486 // Convert "normal" to computed value 6487 if ( val === "normal" && name in cssNormalTransform ) { 6488 val = cssNormalTransform[ name ]; 6489 } 6490 6491 // Make numeric if forced or a qualifier was provided and val looks numeric 6492 if ( extra === "" || extra ) { 6493 num = parseFloat( val ); 6494 return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; 6495 } 6496 return val; 6497 } 6498}); 6499 6500jQuery.each([ "height", "width" ], function( i, name ) { 6501 jQuery.cssHooks[ name ] = { 6502 get: function( elem, computed, extra ) { 6503 if ( computed ) { 6504 6505 // Certain elements can have dimension info if we invisibly show them 6506 // but it must have a current display style that would benefit
6507 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? 6508 jQuery.swap( elem, cssShow, function() { 6509 return getWidthOrHeight( elem, name, extra ); 6510 }) : 6511 getWidthOrHeight( elem, name, extra ); 6512 } 6513 }, 6514 6515 set: function( elem, value, extra ) { 6516 var styles = extra && getStyles( elem ); 6517 return setPositiveNumber( elem, value, extra ? 6518 augmentWidthOrHeight( 6519 elem, 6520 name, 6521 extra, 6522 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 6523 styles 6524 ) : 0 6525 ); 6526 } 6527 }; 6528}); 6529 6530// Support: Android 2.3 6531jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, 6532 function( elem, computed ) { 6533 if ( computed ) { 6534 return jQuery.swap( elem, { "display": "inline-block" }, 6535 curCSS, [ elem, "marginRight" ] ); 6536 } 6537 } 6538); 6539 6540// These hooks are used by animate to expand properties 6541jQuery.each({ 6542 margin: "", 6543 padding: "", 6544 border: "Width" 6545}, function( prefix, suffix ) { 6546 jQuery.cssHooks[ prefix + suffix ] = { 6547 expand: function( value ) { 6548 var i = 0, 6549 expanded = {}, 6550 6551 // Assumes a single number if not a string 6552 parts = typeof value === "string" ? value.split(" ") : [ value ]; 6553 6554 for ( ; i < 4; i++ ) { 6555 expanded[ prefix + cssExpand[ i ] + suffix ] = 6556 parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; 6557 } 6558 6559 return expanded; 6560 } 6561 }; 6562 6563 if ( !rmargin.test( prefix ) ) { 6564 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; 6565 } 6566}); 6567 6568jQuery.fn.extend({ 6569 css: function( name, value ) { 6570 return access( this, function( elem, name, value ) { 6571 var styles, len, 6572 map = {}, 6573 i = 0; 6574 6575 if ( jQuery.isArray( name ) ) { 6576 styles = getStyles( elem ); 6577 len = name.length; 6578 6579 for ( ; i < len; i++ ) { 6580 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); 6581 } 6582 6583 return map; 6584 } 6585 6586 return value !== undefined ? 6587 jQuery.style( elem, name, value ) : 6588 jQuery.css( elem, name ); 6589 }, name, value, arguments.length > 1 ); 6590 }, 6591 show: function() { 6592 return showHide( this, true ); 6593 }, 6594 hide: function() { 6595 return showHide( this ); 6596 }, 6597 toggle: function( state ) { 6598 if ( typeof state === "boolean" ) { 6599 return state ? this.show() : this.hide(); 6600 } 6601 6602 return this.each(function() { 6603 if ( isHidden( this ) ) { 6604 jQuery( this ).show(); 6605 } else { 6606 jQuery( this ).hide(); 6607 } 6608 }); 6609 } 6610}); 6611 6612 6613function Tween( elem, options, prop, end, easing ) { 6614 return new Tween.prototype.init( elem, options, prop, end, easing ); 6615} 6616jQuery.Tween = Tween; 6617 6618Tween.prototype = { 6619 constructor: Tween, 6620 init: function( elem, options, prop, end, easing, unit ) { 6621 this.elem = elem; 6622 this.prop = prop; 6623 this.easing = easing || "swing"; 6624 this.options = options; 6625 this.start = this.now = this.cur(); 6626 this.end = end; 6627 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 6628 }, 6629 cur: function() { 6630 var hooks = Tween.propHooks[ this.prop ]; 6631 6632 return hooks && hooks.get ? 6633 hooks.get( this ) : 6634 Tween.propHooks._default.get( this ); 6635 }, 6636 run: function( percent ) { 6637 var eased, 6638 hooks = Tween.propHooks[ this.prop ]; 6639 6640 if ( this.options.duration ) { 6641 this.pos = eased = jQuery.easing[ this.easing ]( 6642 percent, this.options.duration * percent, 0, 1, this.options.duration 6643 ); 6644 } else { 6645 this.pos = eased = percent; 6646 } 6647 this.now = ( this.end - this.start ) * eased + this.start; 6648 6649 if ( this.options.step ) { 6650 this.options.step.call( this.elem, this.now, this ); 6651 } 6652 6653 if ( hooks && hooks.set ) { 6654 hooks.set( this ); 6655 } else { 6656 Tween.propHooks._default.set( this ); 6657 } 6658 return this; 6659 } 6660}; 6661 6662Tween.prototype.init.prototype = Tween.prototype; 6663 6664Tween.propHooks = { 6665 _default: { 6666 get: function( tween ) { 6667 var result; 6668 6669 if ( tween.elem[ tween.prop ] != null && 6670 (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { 6671 return tween.elem[ tween.prop ]; 6672 } 6673 6674 // Passing an empty string as a 3rd parameter to .css will automatically 6675 // attempt a parseFloat and fallback to a string if the parse fails. 6676 // Simple values such as "10px" are parsed to Float; 6677 // complex values such as "rotate(1rad)" are returned as-is. 6678 result = jQuery.css( tween.elem, tween.prop, "" ); 6679 // Empty strings, null, undefined and "auto" are converted to 0. 6680 return !result || result === "auto" ? 0 : result; 6681 }, 6682 set: function( tween ) { 6683 // Use step hook for back compat. 6684 // Use cssHook if its there. 6685 // Use .style if available and use plain properties where available. 6686 if ( jQuery.fx.step[ tween.prop ] ) { 6687 jQuery.fx.step[ tween.prop ]( tween ); 6688 } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { 6689 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 6690 } else { 6691 tween.elem[ tween.prop ] = tween.now; 6692 } 6693 } 6694 } 6695}; 6696 6697// Support: IE9
6698// Panic based approach to setting things on disconnected nodes 6699Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 6700 set: function( tween ) { 6701 if ( tween.elem.nodeType && tween.elem.parentNode ) { 6702 tween.elem[ tween.prop ] = tween.now; 6703 } 6704 } 6705}; 6706 6707jQuery.easing = { 6708 linear: function( p ) { 6709 return p; 6710 }, 6711 swing: function( p ) { 6712 return 0.5 - Math.cos( p * Math.PI ) / 2; 6713 } 6714}; 6715 6716jQuery.fx = Tween.prototype.init; 6717 6718// Back Compat <1.8 extension point 6719jQuery.fx.step = {}; 6720 6721 6722 6723 6724var 6725 fxNow, timerId, 6726 rfxtypes = /^(?:toggle|show|hide)$/, 6727 rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), 6728 rrun = /queueHooks$/, 6729 animationPrefilters = [ defaultPrefilter ], 6730 tweeners = { 6731 "*": [ function( prop, value ) { 6732 var tween = this.createTween( prop, value ), 6733 target = tween.cur(), 6734 parts = rfxnum.exec( value ), 6735 unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), 6736 6737 // Starting value computation is required for potential unit mismatches 6738 start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && 6739 rfxnum.exec( jQuery.css( tween.elem, prop ) ), 6740 scale = 1, 6741 maxIterations = 20; 6742 6743 if ( start && start[ 3 ] !== unit ) { 6744 // Trust units reported by jQuery.css 6745 unit = unit || start[ 3 ]; 6746 6747 // Make sure we update the tween properties later on 6748 parts = parts || []; 6749 6750 // Iteratively approximate from a nonzero starting point 6751 start = +target || 1; 6752 6753 do { 6754 // If previous iteration zeroed out, double until we get *something*. 6755 // Use string for doubling so we don't accidentally see scale as unchanged below 6756 scale = scale || ".5"; 6757 6758 // Adjust and apply 6759 start = start / scale; 6760 jQuery.style( tween.elem, prop, start + unit ); 6761 6762 // Update scale, tolerating zero or NaN from tween.cur(), 6763 // break the loop if scale is unchanged or perfect, or if we've just had enough 6764 } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); 6765 } 6766 6767 // Update tween properties 6768 if ( parts ) { 6769 start = tween.start = +start || +target || 0; 6770 tween.unit = unit; 6771 // If a +=/-= token was provided, we're doing a relative animation 6772 tween.end = parts[ 1 ] ? 6773 start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : 6774 +parts[ 2 ]; 6775 } 6776 6777 return tween; 6778 } ] 6779 }; 6780 6781// Animations created synchronously will run synchronously 6782function createFxNow() { 6783 setTimeout(function() { 6784 fxNow = undefined; 6785 }); 6786 return ( fxNow = jQuery.now() ); 6787} 6788 6789// Generate parameters to create a standard animation 6790function genFx( type, includeWidth ) { 6791 var which, 6792 i = 0, 6793 attrs = { height: type }; 6794 6795 // If we include width, step value is 1 to do all cssExpand values, 6796 // otherwise step value is 2 to skip over Left and Right 6797 includeWidth = includeWidth ? 1 : 0; 6798 for ( ; i < 4 ; i += 2 - includeWidth ) { 6799 which = cssExpand[ i ]; 6800 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; 6801 } 6802 6803 if ( includeWidth ) { 6804 attrs.opacity = attrs.width = type; 6805 } 6806 6807 return attrs; 6808} 6809 6810function createTween( value, prop, animation ) { 6811 var tween, 6812 collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), 6813 index = 0, 6814 length = collection.length; 6815 for ( ; index < length; index++ ) { 6816 if ( (tween = collection[ index ].call( animation, prop, value )) ) { 6817 6818 // We're done with this property 6819 return tween; 6820 } 6821 } 6822} 6823 6824function defaultPrefilter( elem, props, opts ) { 6825 /* jshint validthis: true */ 6826 var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, 6827 anim = this, 6828 orig = {}, 6829 style = elem.style, 6830 hidden = elem.nodeType && isHidden( elem ), 6831 dataShow = data_priv.get( elem, "fxshow" ); 6832 6833 // Handle queue: false promises 6834 if ( !opts.queue ) { 6835 hooks = jQuery._queueHooks( elem, "fx" ); 6836 if ( hooks.unqueued == null ) { 6837 hooks.unqueued = 0; 6838 oldfire = hooks.empty.fire; 6839 hooks.empty.fire = function() { 6840 if ( !hooks.unqueued ) { 6841 oldfire(); 6842 } 6843 }; 6844 } 6845 hooks.unqueued++; 6846 6847 anim.always(function() { 6848 // Ensure the complete handler is called before this completes 6849 anim.always(function() { 6850 hooks.unqueued--; 6851 if ( !jQuery.queue( elem, "fx" ).length ) { 6852 hooks.empty.fire(); 6853 } 6854 }); 6855 }); 6856 } 6857 6858 // Height/width overflow pass 6859 if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { 6860 // Make sure that nothing sneaks out
6861 // Record all 3 overflow attributes because IE9-10 do not 6862 // change the overflow attribute when overflowX and 6863 // overflowY are set to the same value 6864 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; 6865 6866 // Set display property to inline-block for height/width 6867 // animations on inline elements that are having width/height animated 6868 display = jQuery.css( elem, "display" ); 6869 6870 // Test default display if display is currently "none" 6871 checkDisplay = display === "none" ? 6872 data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; 6873 6874 if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { 6875 style.display = "inline-block"; 6876 } 6877 } 6878 6879 if ( opts.overflow ) { 6880 style.overflow = "hidden"; 6881 anim.always(function() { 6882 style.overflow = opts.overflow[ 0 ]; 6883 style.overflowX = opts.overflow[ 1 ]; 6884 style.overflowY = opts.overflow[ 2 ]; 6885 }); 6886 } 6887 6888 // show/hide pass 6889 for ( prop in props ) { 6890 value = props[ prop ]; 6891 if ( rfxtypes.exec( value ) ) { 6892 delete props[ prop ]; 6893 toggle = toggle || value === "toggle"; 6894 if ( value === ( hidden ? "hide" : "show" ) ) { 6895 6896 // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden 6897 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { 6898 hidden = true; 6899 } else { 6900 continue; 6901 } 6902 } 6903 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); 6904 6905 // Any non-fx value stops us from restoring the original display value 6906 } else { 6907 display = undefined; 6908 } 6909 } 6910 6911 if ( !jQuery.isEmptyObject( orig ) ) { 6912 if ( dataShow ) { 6913 if ( "hidden" in dataShow ) { 6914 hidden = dataShow.hidden; 6915 } 6916 } else { 6917 dataShow = data_priv.access( elem, "fxshow", {} ); 6918 } 6919 6920 // Store state if its toggle - enables .stop().toggle() to "reverse" 6921 if ( toggle ) { 6922 dataShow.hidden = !hidden; 6923 } 6924 if ( hidden ) { 6925 jQuery( elem ).show(); 6926 } else { 6927 anim.done(function() { 6928 jQuery( elem ).hide(); 6929 }); 6930 } 6931 anim.done(function() { 6932 var prop; 6933 6934 data_priv.remove( elem, "fxshow" ); 6935 for ( prop in orig ) { 6936 jQuery.style( elem, prop, orig[ prop ] ); 6937 } 6938 }); 6939 for ( prop in orig ) { 6940 tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); 6941 6942 if ( !( prop in dataShow ) ) { 6943 dataShow[ prop ] = tween.start; 6944 if ( hidden ) { 6945 tween.end = tween.start; 6946 tween.start = prop === "width" || prop === "height" ? 1 : 0; 6947 } 6948 } 6949 } 6950 6951 // If this is a noop like .hide().hide(), restore an overwritten display value 6952 } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { 6953 style.display = display; 6954 } 6955} 6956 6957function propFilter( props, specialEasing ) { 6958 var index, name, easing, value, hooks; 6959 6960 // camelCase, specialEasing and expand cssHook pass 6961 for ( index in props ) { 6962 name = jQuery.camelCase( index ); 6963 easing = specialEasing[ name ]; 6964 value = props[ index ]; 6965 if ( jQuery.isArray( value ) ) { 6966 easing = value[ 1 ]; 6967 value = props[ index ] = value[ 0 ]; 6968 } 6969 6970 if ( index !== name ) { 6971 props[ name ] = value; 6972 delete props[ index ]; 6973 } 6974 6975 hooks = jQuery.cssHooks[ name ]; 6976 if ( hooks && "expand" in hooks ) { 6977 value = hooks.expand( value ); 6978 delete props[ name ]; 6979 6980 // Not quite $.extend, this won't overwrite existing keys. 6981 // Reusing 'index' because we have the correct "name" 6982 for ( index in value ) { 6983 if ( !( index in props ) ) { 6984 props[ index ] = value[ index ]; 6985 specialEasing[ index ] = easing; 6986 } 6987 } 6988 } else { 6989 specialEasing[ name ] = easing; 6990 } 6991 } 6992} 6993 6994function Animation( elem, properties, options ) { 6995 var result, 6996 stopped, 6997 index = 0, 6998 length = animationPrefilters.length, 6999 deferred = jQuery.Deferred().always( function() { 7000 // Don't match elem in the :animated selector 7001 delete tick.elem; 7002 }), 7003 tick = function() { 7004 if ( stopped ) { 7005 return false; 7006 } 7007 var currentTime = fxNow || createFxNow(), 7008 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), 7009 // Support: Android 2.3
7010 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) 7011 temp = remaining / animation.duration || 0, 7012 percent = 1 - temp, 7013 index = 0, 7014 length = animation.tweens.length; 7015 7016 for ( ; index < length ; index++ ) { 7017 animation.tweens[ index ].run( percent ); 7018 } 7019 7020 deferred.notifyWith( elem, [ animation, percent, remaining ]); 7021 7022 if ( percent < 1 && length ) { 7023 return remaining; 7024 } else { 7025 deferred.resolveWith( elem, [ animation ] ); 7026 return false; 7027 } 7028 }, 7029 animation = deferred.promise({ 7030 elem: elem, 7031 props: jQuery.extend( {}, properties ), 7032 opts: jQuery.extend( true, { specialEasing: {} }, options ), 7033 originalProperties: properties, 7034 originalOptions: options, 7035 startTime: fxNow || createFxNow(), 7036 duration: options.duration, 7037 tweens: [], 7038 createTween: function( prop, end ) { 7039 var tween = jQuery.Tween( elem, animation.opts, prop, end, 7040 animation.opts.specialEasing[ prop ] || animation.opts.easing ); 7041 animation.tweens.push( tween ); 7042 return tween; 7043 }, 7044 stop: function( gotoEnd ) { 7045 var index = 0, 7046 // If we are going to the end, we want to run all the tweens 7047 // otherwise we skip this part 7048 length = gotoEnd ? animation.tweens.length : 0; 7049 if ( stopped ) { 7050 return this; 7051 } 7052 stopped = true; 7053 for ( ; index < length ; index++ ) { 7054 animation.tweens[ index ].run( 1 ); 7055 } 7056 7057 // Resolve when we played the last frame; otherwise, reject 7058 if ( gotoEnd ) { 7059 deferred.resolveWith( elem, [ animation, gotoEnd ] ); 7060 } else { 7061 deferred.rejectWith( elem, [ animation, gotoEnd ] ); 7062 } 7063 return this; 7064 } 7065 }), 7066 props = animation.props; 7067 7068 propFilter( props, animation.opts.specialEasing ); 7069 7070 for ( ; index < length ; index++ ) { 7071 result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); 7072 if ( result ) { 7073 return result; 7074 } 7075 } 7076 7077 jQuery.map( props, createTween, animation ); 7078 7079 if ( jQuery.isFunction( animation.opts.start ) ) { 7080 animation.opts.start.call( elem, animation ); 7081 } 7082 7083 jQuery.fx.timer( 7084 jQuery.extend( tick, { 7085 elem: elem, 7086 anim: animation, 7087 queue: animation.opts.queue 7088 }) 7089 ); 7090 7091 // attach callbacks from options 7092 return animation.progress( animation.opts.progress ) 7093 .done( animation.opts.done, animation.opts.complete ) 7094 .fail( animation.opts.fail ) 7095 .always( animation.opts.always ); 7096} 7097 7098jQuery.Animation = jQuery.extend( Animation, { 7099 7100 tweener: function( props, callback ) { 7101 if ( jQuery.isFunction( props ) ) { 7102 callback = props; 7103 props = [ "*" ]; 7104 } else { 7105 props = props.split(" "); 7106 } 7107 7108 var prop, 7109 index = 0, 7110 length = props.length; 7111 7112 for ( ; index < length ; index++ ) { 7113 prop = props[ index ]; 7114 tweeners[ prop ] = tweeners[ prop ] || []; 7115 tweeners[ prop ].unshift( callback ); 7116 } 7117 }, 7118 7119 prefilter: function( callback, prepend ) { 7120 if ( prepend ) { 7121 animationPrefilters.unshift( callback ); 7122 } else { 7123 animationPrefilters.push( callback ); 7124 } 7125 } 7126}); 7127 7128jQuery.speed = function( speed, easing, fn ) { 7129 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { 7130 complete: fn || !fn && easing || 7131 jQuery.isFunction( speed ) && speed, 7132 duration: speed, 7133 easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing 7134 }; 7135 7136 opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : 7137 opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; 7138 7139 // Normalize opt.queue - true/undefined/null -> "fx" 7140 if ( opt.queue == null || opt.queue === true ) { 7141 opt.queue = "fx"; 7142 } 7143 7144 // Queueing 7145 opt.old = opt.complete; 7146 7147 opt.complete = function() { 7148 if ( jQuery.isFunction( opt.old ) ) { 7149 opt.old.call( this ); 7150 } 7151 7152 if ( opt.queue ) { 7153 jQuery.dequeue( this, opt.queue ); 7154 } 7155 }; 7156 7157 return opt; 7158}; 7159 7160jQuery.fn.extend({ 7161 fadeTo: function( speed, to, easing, callback ) { 7162 7163 // Show any hidden elements after setting opacity to 0 7164 return this.filter( isHidden ).css( "opacity", 0 ).show() 7165 7166 // Animate to the value specified 7167 .end().animate({ opacity: to }, speed, easing, callback ); 7168 }, 7169 animate: function( prop, speed, easing, callback ) { 7170 var empty = jQuery.isEmptyObject( prop ), 7171 optall = jQuery.speed( speed, easing, callback ), 7172 doAnimation = function() { 7173 // Operate on a copy of prop so per-property easing won't be lost 7174 var anim = Animation( this, jQuery.extend( {}, prop ), optall ); 7175 7176 // Empty animations, or finishing resolves immediately 7177 if ( empty || data_priv.get( this, "finish" ) ) { 7178 anim.stop( true ); 7179 } 7180 }; 7181 doAnimation.finish = doAnimation; 7182 7183 return empty || optall.queue === false ? 7184 this.each( doAnimation ) : 7185 this.queue( optall.queue, doAnimation ); 7186 }, 7187 stop: function( type, clearQueue, gotoEnd ) { 7188 var stopQueue = function( hooks ) { 7189 var stop = hooks.stop; 7190 delete hooks.stop; 7191 stop( gotoEnd ); 7192 }; 7193 7194 if ( typeof type !== "string" ) { 7195 gotoEnd = clearQueue; 7196 clearQueue = type; 7197 type = undefined; 7198 } 7199 if ( clearQueue && type !== false ) { 7200 this.queue( type || "fx", [] ); 7201 } 7202 7203 return this.each(function() { 7204 var dequeue = true, 7205 index = type != null && type + "queueHooks", 7206 timers = jQuery.timers, 7207 data = data_priv.get( this ); 7208 7209 if ( index ) { 7210 if ( data[ index ] && data[ index ].stop ) { 7211 stopQueue( data[ index ] ); 7212 } 7213 } else { 7214 for ( index in data ) { 7215 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { 7216 stopQueue( data[ index ] ); 7217 } 7218 } 7219 } 7220 7221 for ( index = timers.length; index--; ) { 7222 if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { 7223 timers[ index ].anim.stop( gotoEnd ); 7224 dequeue = false;
vendor: 3,033 bytes, lines 7225-7356
7225 timers.splice( index, 1 ); 7226 } 7227 } 7228 7229 // Start the next in the queue if the last step wasn't forced. 7230 // Timers currently will call their complete callbacks, which 7231 // will dequeue but only if they were gotoEnd. 7232 if ( dequeue || !gotoEnd ) { 7233 jQuery.dequeue( this, type ); 7234 } 7235 }); 7236 }, 7237 finish: function( type ) { 7238 if ( type !== false ) { 7239 type = type || "fx"; 7240 } 7241 return this.each(function() { 7242 var index, 7243 data = data_priv.get( this ), 7244 queue = data[ type + "queue" ], 7245 hooks = data[ type + "queueHooks" ], 7246 timers = jQuery.timers, 7247 length = queue ? queue.length : 0; 7248 7249 // Enable finishing flag on private data 7250 data.finish = true; 7251 7252 // Empty the queue first 7253 jQuery.queue( this, type, [] ); 7254 7255 if ( hooks && hooks.stop ) { 7256 hooks.stop.call( this, true ); 7257 } 7258 7259 // Look for any active animations, and finish them 7260 for ( index = timers.length; index--; ) { 7261 if ( timers[ index ].elem === this && timers[ index ].queue === type ) { 7262 timers[ index ].anim.stop( true ); 7263 timers.splice( index, 1 ); 7264 } 7265 } 7266 7267 // Look for any animations in the old queue and finish them 7268 for ( index = 0; index < length; index++ ) { 7269 if ( queue[ index ] && queue[ index ].finish ) { 7270 queue[ index ].finish.call( this ); 7271 } 7272 } 7273 7274 // Turn off finishing flag 7275 delete data.finish; 7276 }); 7277 } 7278}); 7279 7280jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { 7281 var cssFn = jQuery.fn[ name ]; 7282 jQuery.fn[ name ] = function( speed, easing, callback ) { 7283 return speed == null || typeof speed === "boolean" ? 7284 cssFn.apply( this, arguments ) : 7285 this.animate( genFx( name, true ), speed, easing, callback ); 7286 }; 7287}); 7288 7289// Generate shortcuts for custom animations 7290jQuery.each({ 7291 slideDown: genFx("show"), 7292 slideUp: genFx("hide"), 7293 slideToggle: genFx("toggle"), 7294 fadeIn: { opacity: "show" }, 7295 fadeOut: { opacity: "hide" }, 7296 fadeToggle: { opacity: "toggle" } 7297}, function( name, props ) { 7298 jQuery.fn[ name ] = function( speed, easing, callback ) { 7299 return this.animate( props, speed, easing, callback ); 7300 }; 7301}); 7302 7303jQuery.timers = []; 7304jQuery.fx.tick = function() { 7305 var timer, 7306 i = 0, 7307 timers = jQuery.timers; 7308 7309 fxNow = jQuery.now(); 7310 7311 for ( ; i < timers.length; i++ ) { 7312 timer = timers[ i ]; 7313 // Checks the timer has not already been removed 7314 if ( !timer() && timers[ i ] === timer ) { 7315 timers.splice( i--, 1 ); 7316 } 7317 } 7318 7319 if ( !timers.length ) { 7320 jQuery.fx.stop(); 7321 } 7322 fxNow = undefined; 7323}; 7324 7325jQuery.fx.timer = function( timer ) { 7326 jQuery.timers.push( timer ); 7327 if ( timer() ) { 7328 jQuery.fx.start(); 7329 } else { 7330 jQuery.timers.pop(); 7331 } 7332}; 7333 7334jQuery.fx.interval = 13; 7335 7336jQuery.fx.start = function() { 7337 if ( !timerId ) { 7338 timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); 7339 } 7340}; 7341 7342jQuery.fx.stop = function() { 7343 clearInterval( timerId ); 7344 timerId = null; 7345}; 7346 7347jQuery.fx.speeds = { 7348 slow: 600, 7349 fast: 200, 7350 // Default speed 7351 _default: 400 7352}; 7353 7354 7355// Based off of the plugin by Clint Helfers, with permission. 7356// http://blindsignals.com/index.php/2009/07/jquery-delay/
7357jQuery.fn.delay = function( time, type ) { 7358 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 7359 type = type || "fx"; 7360 7361 return this.queue( type, function( next, hooks ) { 7362 var timeout = setTimeout( next, time ); 7363 hooks.stop = function() { 7364 clearTimeout( timeout ); 7365 }; 7366 }); 7367}; 7368 7369 7370(function() { 7371 var input = document.createElement( "input" ), 7372 select = document.createElement( "select" ), 7373 opt = select.appendChild( document.createElement( "option" ) ); 7374 7375 input.type = "checkbox"; 7376 7377 // Support: iOS<=5.1, Android<=4.2+ 7378 // Default value for a checkbox should be "on" 7379 support.checkOn = input.value !== ""; 7380 7381 // Support: IE<=11+ 7382 // Must access selectedIndex to make default options select 7383 support.optSelected = opt.selected; 7384 7385 // Support: Android<=2.3 7386 // Options inside disabled selects are incorrectly marked as disabled 7387 select.disabled = true; 7388 support.optDisabled = !opt.disabled; 7389 7390 // Support: IE<=11+ 7391 // An input loses its value after becoming a radio 7392 input = document.createElement( "input" ); 7393 input.value = "t"; 7394 input.type = "radio"; 7395 support.radioValue = input.value === "t"; 7396})(); 7397 7398 7399var nodeHook, boolHook, 7400 attrHandle = jQuery.expr.attrHandle; 7401 7402jQuery.fn.extend({ 7403 attr: function( name, value ) { 7404 return access( this, jQuery.attr, name, value, arguments.length > 1 ); 7405 }, 7406 7407 removeAttr: function( name ) { 7408 return this.each(function() { 7409 jQuery.removeAttr( this, name ); 7410 }); 7411 } 7412}); 7413 7414jQuery.extend({ 7415 attr: function( elem, name, value ) { 7416 var hooks, ret, 7417 nType = elem.nodeType; 7418 7419 // don't get/set attributes on text, comment and attribute nodes 7420 if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { 7421 return; 7422 } 7423 7424 // Fallback to prop when attributes are not supported 7425 if ( typeof elem.getAttribute === strundefined ) { 7426 return jQuery.prop( elem, name, value ); 7427 } 7428 7429 // All attributes are lowercase 7430 // Grab necessary hook if one is defined 7431 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 7432 name = name.toLowerCase(); 7433 hooks = jQuery.attrHooks[ name ] || 7434 ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); 7435 } 7436 7437 if ( value !== undefined ) { 7438 7439 if ( value === null ) { 7440 jQuery.removeAttr( elem, name ); 7441 7442 } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { 7443 return ret; 7444 7445 } else { 7446 elem.setAttribute( name, value + "" ); 7447 return value; 7448 } 7449 7450 } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { 7451 return ret; 7452 7453 } else { 7454 ret = jQuery.find.attr( elem, name ); 7455 7456 // Non-existent attributes return null, we normalize to undefined 7457 return ret == null ? 7458 undefined : 7459 ret; 7460 } 7461 }, 7462 7463 removeAttr: function( elem, value ) { 7464 var name, propName, 7465 i = 0, 7466 attrNames = value && value.match( rnotwhite ); 7467 7468 if ( attrNames && elem.nodeType === 1 ) { 7469 while ( (name = attrNames[i++]) ) { 7470 propName = jQuery.propFix[ name ] || name; 7471 7472 // Boolean attributes get special treatment (#10870) 7473 if ( jQuery.expr.match.bool.test( name ) ) { 7474 // Set corresponding property to false 7475 elem[ propName ] = false; 7476 } 7477 7478 elem.removeAttribute( name ); 7479 } 7480 } 7481 }, 7482 7483 attrHooks: { 7484 type: { 7485 set: function( elem, value ) { 7486 if ( !support.radioValue && value === "radio" && 7487 jQuery.nodeName( elem, "input" ) ) { 7488 var val = elem.value; 7489 elem.setAttribute( "type", value ); 7490 if ( val ) { 7491 elem.value = val; 7492 } 7493 return value; 7494 } 7495 } 7496 } 7497 } 7498}); 7499 7500// Hooks for boolean attributes 7501boolHook = { 7502 set: function( elem, value, name ) { 7503 if ( value === false ) { 7504 // Remove boolean attributes when set to false 7505 jQuery.removeAttr( elem, name ); 7506 } else { 7507 elem.setAttribute( name, name ); 7508 } 7509 return name; 7510 } 7511}; 7512jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { 7513 var getter = attrHandle[ name ] || jQuery.find.attr; 7514 7515 attrHandle[ name ] = function( elem, name, isXML ) { 7516 var ret, handle; 7517 if ( !isXML ) { 7518 // Avoid an infinite loop by temporarily removing this function from the getter 7519 handle = attrHandle[ name ]; 7520 attrHandle[ name ] = ret; 7521 ret = getter( elem, name, isXML ) != null ? 7522 name.toLowerCase() : 7523 null; 7524 attrHandle[ name ] = handle; 7525 } 7526 return ret; 7527 }; 7528}); 7529 7530 7531 7532 7533var rfocusable = /^(?:input|select|textarea|button)$/i; 7534 7535jQuery.fn.extend({ 7536 prop: function( name, value ) { 7537 return access( this, jQuery.prop, name, value, arguments.length > 1 ); 7538 }, 7539 7540 removeProp: function( name ) { 7541 return this.each(function() { 7542 delete this[ jQuery.propFix[ name ] || name ]; 7543 }); 7544 } 7545}); 7546 7547jQuery.extend({ 7548 propFix: { 7549 "for": "htmlFor", 7550 "class": "className" 7551 }, 7552 7553 prop: function( elem, name, value ) { 7554 var ret, hooks, notxml, 7555 nType = elem.nodeType; 7556 7557 // Don't get/set properties on text, comment and attribute nodes 7558 if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { 7559 return; 7560 } 7561 7562 notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); 7563 7564 if ( notxml ) { 7565 // Fix name and attach hooks 7566 name = jQuery.propFix[ name ] || name; 7567 hooks = jQuery.propHooks[ name ]; 7568 } 7569 7570 if ( value !== undefined ) { 7571 return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? 7572 ret : 7573 ( elem[ name ] = value ); 7574 7575 } else { 7576 return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? 7577 ret : 7578 elem[ name ]; 7579 } 7580 }, 7581 7582 propHooks: { 7583 tabIndex: { 7584 get: function( elem ) { 7585 return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? 7586 elem.tabIndex : 7587 -1; 7588 } 7589 } 7590 } 7591}); 7592 7593if ( !support.optSelected ) { 7594 jQuery.propHooks.selected = { 7595 get: function( elem ) { 7596 var parent = elem.parentNode; 7597 if ( parent && parent.parentNode ) { 7598 parent.parentNode.selectedIndex; 7599 } 7600 return null; 7601 } 7602 }; 7603} 7604 7605jQuery.each([ 7606 "tabIndex", 7607 "readOnly", 7608 "maxLength", 7609 "cellSpacing", 7610 "cellPadding", 7611 "rowSpan", 7612 "colSpan", 7613 "useMap", 7614 "frameBorder", 7615 "contentEditable" 7616], function() { 7617 jQuery.propFix[ this.toLowerCase() ] = this; 7618}); 7619 7620 7621 7622 7623var rclass = /[\t\r\n\f]/g; 7624 7625jQuery.fn.extend({ 7626 addClass: function( value ) { 7627 var classes, elem, cur, clazz, j, finalValue, 7628 proceed = typeof value === "string" && value, 7629 i = 0, 7630 len = this.length; 7631 7632 if ( jQuery.isFunction( value ) ) { 7633 return this.each(function( j ) { 7634 jQuery( this ).addClass( value.call( this, j, this.className ) ); 7635 }); 7636 } 7637 7638 if ( proceed ) { 7639 // The disjunction here is for better compressibility (see removeClass) 7640 classes = ( value || "" ).match( rnotwhite ) || []; 7641 7642 for ( ; i < len; i++ ) { 7643 elem = this[ i ]; 7644 cur = elem.nodeType === 1 && ( elem.className ? 7645 ( " " + elem.className + " " ).replace( rclass, " " ) : 7646 " " 7647 ); 7648 7649 if ( cur ) { 7650 j = 0; 7651 while ( (clazz = classes[j++]) ) { 7652 if ( cur.indexOf( " " + clazz + " " ) < 0 ) { 7653 cur += clazz + " "; 7654 } 7655 } 7656 7657 // only assign if different to avoid unneeded rendering. 7658 finalValue = jQuery.trim( cur ); 7659 if ( elem.className !== finalValue ) { 7660 elem.className = finalValue; 7661 } 7662 } 7663 } 7664 } 7665 7666 return this; 7667 }, 7668 7669 removeClass: function( value ) { 7670 var classes, elem, cur, clazz, j, finalValue, 7671 proceed = arguments.length === 0 || typeof value === "string" && value, 7672 i = 0, 7673 len = this.length; 7674 7675 if ( jQuery.isFunction( value ) ) { 7676 return this.each(function( j ) { 7677 jQuery( this ).removeClass( value.call( this, j, this.className ) ); 7678 }); 7679 } 7680 if ( proceed ) { 7681 classes = ( value || "" ).match( rnotwhite ) || []; 7682 7683 for ( ; i < len; i++ ) { 7684 elem = this[ i ]; 7685 // This expression is here for better compressibility (see addClass) 7686 cur = elem.nodeType === 1 && ( elem.className ? 7687 ( " " + elem.className + " " ).replace( rclass, " " ) : 7688 "" 7689 ); 7690 7691 if ( cur ) { 7692 j = 0; 7693 while ( (clazz = classes[j++]) ) {
7694 // Remove *all* instances 7695 while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { 7696 cur = cur.replace( " " + clazz + " ", " " ); 7697 } 7698 } 7699 7700 // Only assign if different to avoid unneeded rendering. 7701 finalValue = value ? jQuery.trim( cur ) : ""; 7702 if ( elem.className !== finalValue ) { 7703 elem.className = finalValue; 7704 } 7705 } 7706 } 7707 } 7708 7709 return this; 7710 }, 7711 7712 toggleClass: function( value, stateVal ) { 7713 var type = typeof value; 7714 7715 if ( typeof stateVal === "boolean" && type === "string" ) { 7716 return stateVal ? this.addClass( value ) : this.removeClass( value ); 7717 } 7718 7719 if ( jQuery.isFunction( value ) ) { 7720 return this.each(function( i ) { 7721 jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); 7722 }); 7723 } 7724 7725 return this.each(function() { 7726 if ( type === "string" ) { 7727 // Toggle individual class names 7728 var className, 7729 i = 0, 7730 self = jQuery( this ), 7731 classNames = value.match( rnotwhite ) || []; 7732 7733 while ( (className = classNames[ i++ ]) ) { 7734 // Check each className given, space separated list 7735 if ( self.hasClass( className ) ) { 7736 self.removeClass( className ); 7737 } else { 7738 self.addClass( className ); 7739 } 7740 } 7741 7742 // Toggle whole class name 7743 } else if ( type === strundefined || type === "boolean" ) { 7744 if ( this.className ) { 7745 // store className if set 7746 data_priv.set( this, "__className__", this.className ); 7747 } 7748 7749 // If the element has a class name or if we're passed `false`, 7750 // then remove the whole classname (if there was one, the above saved it). 7751 // Otherwise bring back whatever was previously saved (if anything), 7752 // falling back to the empty string if nothing was stored. 7753 this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || ""; 7754 } 7755 }); 7756 }, 7757 7758 hasClass: function( selector ) { 7759 var className = " " + selector + " ", 7760 i = 0, 7761 l = this.length; 7762 for ( ; i < l; i++ ) { 7763 if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { 7764 return true; 7765 } 7766 } 7767 7768 return false; 7769 } 7770}); 7771 7772 7773 7774 7775var rreturn = /\r/g; 7776 7777jQuery.fn.extend({ 7778 val: function( value ) { 7779 var hooks, ret, isFunction, 7780 elem = this[0]; 7781 7782 if ( !arguments.length ) { 7783 if ( elem ) { 7784 hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 7785 7786 if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { 7787 return ret; 7788 } 7789 7790 ret = elem.value; 7791 7792 return typeof ret === "string" ? 7793 // Handle most common string cases 7794 ret.replace(rreturn, "") : 7795 // Handle cases where value is null/undef or number 7796 ret == null ? "" : ret; 7797 } 7798 7799 return; 7800 } 7801 7802 isFunction = jQuery.isFunction( value ); 7803 7804 return this.each(function( i ) { 7805 var val; 7806 7807 if ( this.nodeType !== 1 ) { 7808 return; 7809 } 7810 7811 if ( isFunction ) { 7812 val = value.call( this, i, jQuery( this ).val() ); 7813 } else { 7814 val = value; 7815 } 7816 7817 // Treat null/undefined as ""; convert numbers to string 7818 if ( val == null ) { 7819 val = ""; 7820 7821 } else if ( typeof val === "number" ) { 7822 val += ""; 7823 7824 } else if ( jQuery.isArray( val ) ) { 7825 val = jQuery.map( val, function( value ) { 7826 return value == null ? "" : value + ""; 7827 }); 7828 } 7829 7830 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; 7831 7832 // If set returns undefined, fall back to normal setting 7833 if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { 7834 this.value = val; 7835 } 7836 }); 7837 } 7838}); 7839 7840jQuery.extend({ 7841 valHooks: { 7842 option: { 7843 get: function( elem ) { 7844 var val = jQuery.find.attr( elem, "value" ); 7845 return val != null ? 7846 val : 7847 // Support: IE10-11+ 7848 // option.text throws exceptions (#14686, #14858) 7849 jQuery.trim( jQuery.text( elem ) ); 7850 } 7851 }, 7852 select: { 7853 get: function( elem ) { 7854 var value, option, 7855 options = elem.options, 7856 index = elem.selectedIndex, 7857 one = elem.type === "select-one" || index < 0, 7858 values = one ? null : [], 7859 max = one ? index + 1 : options.length, 7860 i = index < 0 ? 7861 max : 7862 one ? index : 0; 7863 7864 // Loop through all the selected options 7865 for ( ; i < max; i++ ) { 7866 option = options[ i ]; 7867 7868 // IE6-9 doesn't update selected after form reset (#2551) 7869 if ( ( option.selected || i === index ) && 7870 // Don't return options that are disabled or in a disabled optgroup 7871 ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) && 7872 ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { 7873 7874 // Get the specific value for the option 7875 value = jQuery( option ).val(); 7876 7877 // We don't need an array for one selects 7878 if ( one ) { 7879 return value; 7880 } 7881 7882 // Multi-Selects return an array 7883 values.push( value ); 7884 } 7885 } 7886 7887 return values; 7888 }, 7889 7890 set: function( elem, value ) { 7891 var optionSet, option, 7892 options = elem.options, 7893 values = jQuery.makeArray( value ), 7894 i = options.length; 7895 7896 while ( i-- ) { 7897 option = options[ i ]; 7898 if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) { 7899 optionSet = true; 7900 } 7901 } 7902 7903 // Force browsers to behave consistently when non-matching value is set 7904 if ( !optionSet ) { 7905 elem.selectedIndex = -1; 7906 } 7907 return values; 7908 } 7909 } 7910 } 7911}); 7912 7913// Radios and checkboxes getter/setter 7914jQuery.each([ "radio", "checkbox" ], function() { 7915 jQuery.valHooks[ this ] = { 7916 set: function( elem, value ) { 7917 if ( jQuery.isArray( value ) ) { 7918 return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); 7919 } 7920 } 7921 }; 7922 if ( !support.checkOn ) { 7923 jQuery.valHooks[ this ].get = function( elem ) { 7924 return elem.getAttribute("value") === null ? "on" : elem.value; 7925 }; 7926 } 7927}); 7928 7929 7930 7931 7932// Return jQuery for attributes-only inclusion 7933 7934 7935jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 7936 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 7937 "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 7938 7939 // Handle event binding 7940 jQuery.fn[ name ] = function( data, fn ) { 7941 return arguments.length > 0 ? 7942 this.on( name, null, data, fn ) : 7943 this.trigger( name ); 7944 }; 7945}); 7946 7947jQuery.fn.extend({ 7948 hover: function( fnOver, fnOut ) { 7949 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 7950 }, 7951 7952 bind: function( types, data, fn ) { 7953 return this.on( types, null, data, fn ); 7954 }, 7955 unbind: function( types, fn ) { 7956 return this.off( types, null, fn ); 7957 }, 7958 7959 delegate: function( selector, types, data, fn ) { 7960 return this.on( types, selector, data, fn ); 7961 }, 7962 undelegate: function( selector, types, fn ) { 7963 // ( namespace ) or ( selector, types [, fn] ) 7964 return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); 7965 } 7966}); 7967 7968 7969var nonce = jQuery.now(); 7970 7971var rquery = (/\?/); 7972 7973 7974 7975// Support: Android 2.3 7976// Workaround failure to string-cast null input 7977jQuery.parseJSON = function( data ) { 7978 return JSON.parse( data + "" ); 7979}; 7980 7981 7982// Cross-browser xml parsing
vendor: 4,742 bytes, lines 7983-8148
7983jQuery.parseXML = function( data ) { 7984 var xml, tmp; 7985 if ( !data || typeof data !== "string" ) { 7986 return null; 7987 } 7988 7989 // Support: IE9 7990 try { 7991 tmp = new DOMParser(); 7992 xml = tmp.parseFromString( data, "text/xml" ); 7993 } catch ( e ) { 7994 xml = undefined; 7995 } 7996 7997 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 7998 jQuery.error( "Invalid XML: " + data ); 7999 } 8000 return xml; 8001}; 8002 8003 8004var 8005 rhash = /#.*$/, 8006 rts = /([?&])_=[^&]*/, 8007 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, 8008 // #7653, #8125, #8152: local protocol detection 8009 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, 8010 rnoContent = /^(?:GET|HEAD)$/, 8011 rprotocol = /^\/\//, 8012 rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, 8013 8014 /* Prefilters 8015 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 8016 * 2) These are called: 8017 * - BEFORE asking for a transport 8018 * - AFTER param serialization (s.data is a string if s.processData is true) 8019 * 3) key is the dataType 8020 * 4) the catchall symbol "*" can be used 8021 * 5) execution will start with transport dataType and THEN continue down to "*" if needed 8022 */ 8023 prefilters = {}, 8024 8025 /* Transports bindings 8026 * 1) key is the dataType 8027 * 2) the catchall symbol "*" can be used 8028 * 3) selection will start with transport dataType and THEN go to "*" if needed 8029 */ 8030 transports = {}, 8031 8032 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression 8033 allTypes = "*/".concat( "*" ), 8034 8035 // Document location 8036 ajaxLocation = window.location.href, 8037 8038 // Segment location into parts 8039 ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; 8040 8041// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 8042function addToPrefiltersOrTransports( structure ) { 8043 8044 // dataTypeExpression is optional and defaults to "*" 8045 return function( dataTypeExpression, func ) { 8046 8047 if ( typeof dataTypeExpression !== "string" ) { 8048 func = dataTypeExpression; 8049 dataTypeExpression = "*"; 8050 } 8051 8052 var dataType, 8053 i = 0, 8054 dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; 8055 8056 if ( jQuery.isFunction( func ) ) { 8057 // For each dataType in the dataTypeExpression 8058 while ( (dataType = dataTypes[i++]) ) { 8059 // Prepend if requested 8060 if ( dataType[0] === "+" ) { 8061 dataType = dataType.slice( 1 ) || "*"; 8062 (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); 8063 8064 // Otherwise append 8065 } else { 8066 (structure[ dataType ] = structure[ dataType ] || []).push( func ); 8067 } 8068 } 8069 } 8070 }; 8071} 8072 8073// Base inspection function for prefilters and transports 8074function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { 8075 8076 var inspected = {}, 8077 seekingTransport = ( structure === transports ); 8078 8079 function inspect( dataType ) { 8080 var selected; 8081 inspected[ dataType ] = true; 8082 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { 8083 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); 8084 if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { 8085 options.dataTypes.unshift( dataTypeOrTransport ); 8086 inspect( dataTypeOrTransport ); 8087 return false; 8088 } else if ( seekingTransport ) { 8089 return !( selected = dataTypeOrTransport ); 8090 } 8091 }); 8092 return selected; 8093 } 8094 8095 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); 8096} 8097 8098// A special extend for ajax options 8099// that takes "flat" options (not to be deep extended) 8100// Fixes #9887 8101function ajaxExtend( target, src ) { 8102 var key, deep, 8103 flatOptions = jQuery.ajaxSettings.flatOptions || {}; 8104 8105 for ( key in src ) { 8106 if ( src[ key ] !== undefined ) { 8107 ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; 8108 } 8109 } 8110 if ( deep ) { 8111 jQuery.extend( true, target, deep ); 8112 } 8113 8114 return target; 8115} 8116 8117/* Handles responses to an ajax request: 8118 * - finds the right dataType (mediates between content-type and expected dataType) 8119 * - returns the corresponding response 8120 */ 8121function ajaxHandleResponses( s, jqXHR, responses ) { 8122 8123 var ct, type, finalDataType, firstDataType, 8124 contents = s.contents, 8125 dataTypes = s.dataTypes; 8126 8127 // Remove auto dataType and get content-type in the process 8128 while ( dataTypes[ 0 ] === "*" ) { 8129 dataTypes.shift(); 8130 if ( ct === undefined ) { 8131 ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); 8132 } 8133 } 8134 8135 // Check if we're dealing with a known content-type 8136 if ( ct ) { 8137 for ( type in contents ) { 8138 if ( contents[ type ] && contents[ type ].test( ct ) ) { 8139 dataTypes.unshift( type ); 8140 break; 8141 } 8142 } 8143 } 8144 8145 // Check to see if we have a response for the expected dataType 8146 if ( dataTypes[ 0 ] in responses ) { 8147 finalDataType = dataTypes[ 0 ]; 8148 } else {
8149 // Try convertible dataTypes 8150 for ( type in responses ) { 8151 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { 8152 finalDataType = type; 8153 break; 8154 } 8155 if ( !firstDataType ) { 8156 firstDataType = type; 8157 } 8158 } 8159 // Or just use first one 8160 finalDataType = finalDataType || firstDataType; 8161 } 8162 8163 // If we found a dataType 8164 // We add the dataType to the list if needed 8165 // and return the corresponding response 8166 if ( finalDataType ) { 8167 if ( finalDataType !== dataTypes[ 0 ] ) { 8168 dataTypes.unshift( finalDataType ); 8169 } 8170 return responses[ finalDataType ]; 8171 } 8172} 8173 8174/* Chain conversions given the request and the original response 8175 * Also sets the responseXXX fields on the jqXHR instance 8176 */ 8177function ajaxConvert( s, response, jqXHR, isSuccess ) { 8178 var conv2, current, conv, tmp, prev, 8179 converters = {}, 8180 // Work with a copy of dataTypes in case we need to modify it for conversion 8181 dataTypes = s.dataTypes.slice(); 8182 8183 // Create converters map with lowercased keys 8184 if ( dataTypes[ 1 ] ) { 8185 for ( conv in s.converters ) { 8186 converters[ conv.toLowerCase() ] = s.converters[ conv ]; 8187 } 8188 } 8189 8190 current = dataTypes.shift(); 8191 8192 // Convert to each sequential dataType 8193 while ( current ) { 8194 8195 if ( s.responseFields[ current ] ) { 8196 jqXHR[ s.responseFields[ current ] ] = response; 8197 } 8198 8199 // Apply the dataFilter if provided 8200 if ( !prev && isSuccess && s.dataFilter ) { 8201 response = s.dataFilter( response, s.dataType ); 8202 } 8203 8204 prev = current; 8205 current = dataTypes.shift(); 8206 8207 if ( current ) { 8208 8209 // There's only work to do if current dataType is non-auto 8210 if ( current === "*" ) { 8211 8212 current = prev; 8213 8214 // Convert response if prev dataType is non-auto and differs from current 8215 } else if ( prev !== "*" && prev !== current ) { 8216 8217 // Seek a direct converter 8218 conv = converters[ prev + " " + current ] || converters[ "* " + current ]; 8219 8220 // If none found, seek a pair 8221 if ( !conv ) { 8222 for ( conv2 in converters ) { 8223 8224 // If conv2 outputs current 8225 tmp = conv2.split( " " ); 8226 if ( tmp[ 1 ] === current ) { 8227 8228 // If prev can be converted to accepted input 8229 conv = converters[ prev + " " + tmp[ 0 ] ] || 8230 converters[ "* " + tmp[ 0 ] ]; 8231 if ( conv ) { 8232 // Condense equivalence converters 8233 if ( conv === true ) { 8234 conv = converters[ conv2 ]; 8235 8236 // Otherwise, insert the intermediate dataType 8237 } else if ( converters[ conv2 ] !== true ) { 8238 current = tmp[ 0 ]; 8239 dataTypes.unshift( tmp[ 1 ] ); 8240 } 8241 break; 8242 } 8243 } 8244 } 8245 } 8246 8247 // Apply converter (if not an equivalence) 8248 if ( conv !== true ) { 8249 8250 // Unless errors are allowed to bubble, catch and return them 8251 if ( conv && s[ "throws" ] ) { 8252 response = conv( response ); 8253 } else { 8254 try { 8255 response = conv( response ); 8256 } catch ( e ) { 8257 return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; 8258 } 8259 } 8260 } 8261 } 8262 } 8263 } 8264 8265 return { state: "success", data: response }; 8266} 8267 8268jQuery.extend({ 8269 8270 // Counter for holding the number of active queries 8271 active: 0, 8272 8273 // Last-Modified header cache for next request 8274 lastModified: {}, 8275 etag: {}, 8276 8277 ajaxSettings: { 8278 url: ajaxLocation, 8279 type: "GET", 8280 isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), 8281 global: true, 8282 processData: true, 8283 async: true, 8284 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 8285 /* 8286 timeout: 0, 8287 data: null, 8288 dataType: null, 8289 username: null, 8290 password: null, 8291 cache: null, 8292 throws: false, 8293 traditional: false, 8294 headers: {}, 8295 */ 8296 8297 accepts: { 8298 "*": allTypes, 8299 text: "text/plain", 8300 html: "text/html", 8301 xml: "application/xml, text/xml", 8302 json: "application/json, text/javascript" 8303 }, 8304 8305 contents: { 8306 xml: /xml/, 8307 html: /html/, 8308 json: /json/ 8309 }, 8310 8311 responseFields: { 8312 xml: "responseXML", 8313 text: "responseText", 8314 json: "responseJSON" 8315 }, 8316 8317 // Data converters 8318 // Keys separate source (or catchall "*") and destination types with a single space 8319 converters: { 8320 8321 // Convert anything to text 8322 "* text": String, 8323 8324 // Text to html (true = no transformation) 8325 "text html": true, 8326 8327 // Evaluate text as a json expression 8328 "text json": jQuery.parseJSON, 8329 8330 // Parse text as xml 8331 "text xml": jQuery.parseXML 8332 }, 8333 8334 // For options that shouldn't be deep extended: 8335 // you can add your own custom options here if 8336 // and when you create one that shouldn't be 8337 // deep extended (see ajaxExtend) 8338 flatOptions: { 8339 url: true, 8340 context: true 8341 } 8342 }, 8343 8344 // Creates a full fledged settings object into target 8345 // with both ajaxSettings and settings fields. 8346 // If target is omitted, writes into ajaxSettings. 8347 ajaxSetup: function( target, settings ) { 8348 return settings ? 8349 8350 // Building a settings object 8351 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : 8352 8353 // Extending ajaxSettings 8354 ajaxExtend( jQuery.ajaxSettings, target ); 8355 }, 8356 8357 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 8358 ajaxTransport: addToPrefiltersOrTransports( transports ), 8359 8360 // Main method 8361 ajax: function( url, options ) { 8362 8363 // If url is an object, simulate pre-1.5 signature 8364 if ( typeof url === "object" ) { 8365 options = url; 8366 url = undefined; 8367 } 8368 8369 // Force options to be an object 8370 options = options || {}; 8371 8372 var transport, 8373 // URL without anti-cache param 8374 cacheURL, 8375 // Response headers 8376 responseHeadersString, 8377 responseHeaders, 8378 // timeout handle 8379 timeoutTimer, 8380 // Cross-domain detection vars 8381 parts, 8382 // To know if global events are to be dispatched 8383 fireGlobals, 8384 // Loop variable 8385 i, 8386 // Create the final options object 8387 s = jQuery.ajaxSetup( {}, options ), 8388 // Callbacks context 8389 callbackContext = s.context || s, 8390 // Context for global events is callbackContext if it is a DOM node or jQuery collection 8391 globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? 8392 jQuery( callbackContext ) : 8393 jQuery.event, 8394 // Deferreds 8395 deferred = jQuery.Deferred(), 8396 completeDeferred = jQuery.Callbacks("once memory"), 8397 // Status-dependent callbacks 8398 statusCode = s.statusCode || {}, 8399 // Headers (they are sent all at once) 8400 requestHeaders = {}, 8401 requestHeadersNames = {}, 8402 // The jqXHR state 8403 state = 0, 8404 // Default abort message 8405 strAbort = "canceled", 8406 // Fake xhr 8407 jqXHR = { 8408 readyState: 0, 8409 8410 // Builds headers hashtable if needed 8411 getResponseHeader: function( key ) { 8412 var match; 8413 if ( state === 2 ) { 8414 if ( !responseHeaders ) { 8415 responseHeaders = {}; 8416 while ( (match = rheaders.exec( responseHeadersString )) ) { 8417 responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; 8418 } 8419 } 8420 match = responseHeaders[ key.toLowerCase() ]; 8421 } 8422 return match == null ? null : match; 8423 }, 8424 8425 // Raw string 8426 getAllResponseHeaders: function() { 8427 return state === 2 ? responseHeadersString : null; 8428 }, 8429 8430 // Caches the header 8431 setRequestHeader: function( name, value ) { 8432 var lname = name.toLowerCase(); 8433 if ( !state ) { 8434 name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; 8435 requestHeaders[ name ] = value; 8436 } 8437 return this; 8438 }, 8439 8440 // Overrides response content-type header 8441 overrideMimeType: function( type ) { 8442 if ( !state ) { 8443 s.mimeType = type; 8444 } 8445 return this; 8446 }, 8447 8448 // Status-dependent callbacks 8449 statusCode: function( map ) { 8450 var code; 8451 if ( map ) { 8452 if ( state < 2 ) { 8453 for ( code in map ) { 8454 // Lazy-add the new callback in a way that preserves old ones 8455 statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; 8456 } 8457 } else { 8458 // Execute the appropriate callbacks 8459 jqXHR.always( map[ jqXHR.status ] ); 8460 } 8461 } 8462 return this; 8463 }, 8464 8465 // Cancel the request 8466 abort: function( statusText ) { 8467 var finalText = statusText || strAbort; 8468 if ( transport ) { 8469 transport.abort( finalText ); 8470 } 8471 done( 0, finalText ); 8472 return this; 8473 } 8474 }; 8475 8476 // Attach deferreds 8477 deferred.promise( jqXHR ).complete = completeDeferred.add; 8478 jqXHR.success = jqXHR.done; 8479 jqXHR.error = jqXHR.fail; 8480 8481 // Remove hash character (#7531: and string promotion) 8482 // Add protocol if not provided (prefilters might expect it) 8483 // Handle falsy url in the settings object (#10093: consistency with old signature) 8484 // We also use the url parameter if available 8485 s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ) 8486 .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); 8487 8488 // Alias method option to type as per ticket #12004 8489 s.type = options.method || options.type || s.method || s.type; 8490 8491 // Extract dataTypes list 8492 s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; 8493 8494 // A cross-domain request is in order when we have a protocol:host:port mismatch 8495 if ( s.crossDomain == null ) { 8496 parts = rurl.exec( s.url.toLowerCase() ); 8497 s.crossDomain = !!( parts && 8498 ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || 8499 ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== 8500 ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) 8501 ); 8502 } 8503 8504 // Convert data if not already a string 8505 if ( s.data && s.processData && typeof s.data !== "string" ) { 8506 s.data = jQuery.param( s.data, s.traditional ); 8507 } 8508 8509 // Apply prefilters 8510 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 8511 8512 // If request was aborted inside a prefilter, stop there 8513 if ( state === 2 ) { 8514 return jqXHR; 8515 } 8516 8517 // We can fire global events as of now if asked to 8518 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) 8519 fireGlobals = jQuery.event && s.global; 8520 8521 // Watch for a new set of requests 8522 if ( fireGlobals && jQuery.active++ === 0 ) { 8523 jQuery.event.trigger("ajaxStart"); 8524 } 8525 8526 // Uppercase the type 8527 s.type = s.type.toUpperCase(); 8528 8529 // Determine if request has content 8530 s.hasContent = !rnoContent.test( s.type ); 8531 8532 // Save the URL in case we're toying with the If-Modified-Since 8533 // and/or If-None-Match header later on 8534 cacheURL = s.url; 8535 8536 // More options handling for requests with no content 8537 if ( !s.hasContent ) { 8538 8539 // If data is available, append data to url 8540 if ( s.data ) {
8541 cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); 8542 // #9682: remove data so that it's not used in an eventual retry 8543 delete s.data; 8544 } 8545 8546 // Add anti-cache in url if needed 8547 if ( s.cache === false ) { 8548 s.url = rts.test( cacheURL ) ? 8549 8550 // If there is already a '_' parameter, set its value 8551 cacheURL.replace( rts, "$1_=" + nonce++ ) : 8552 8553 // Otherwise add one to the end 8554 cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; 8555 } 8556 } 8557 8558 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 8559 if ( s.ifModified ) { 8560 if ( jQuery.lastModified[ cacheURL ] ) { 8561 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); 8562 } 8563 if ( jQuery.etag[ cacheURL ] ) { 8564 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); 8565 } 8566 } 8567 8568 // Set the correct header, if data is being sent 8569 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 8570 jqXHR.setRequestHeader( "Content-Type", s.contentType ); 8571 } 8572 8573 // Set the Accepts header for the server, depending on the dataType 8574 jqXHR.setRequestHeader( 8575 "Accept", 8576 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? 8577 s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 8578 s.accepts[ "*" ] 8579 ); 8580 8581 // Check for headers option 8582 for ( i in s.headers ) { 8583 jqXHR.setRequestHeader( i, s.headers[ i ] ); 8584 } 8585 8586 // Allow custom headers/mimetypes and early abort 8587 if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { 8588 // Abort if not done already and return 8589 return jqXHR.abort(); 8590 } 8591 8592 // Aborting is no longer a cancellation 8593 strAbort = "abort"; 8594 8595 // Install callbacks on deferreds 8596 for ( i in { success: 1, error: 1, complete: 1 } ) { 8597 jqXHR[ i ]( s[ i ] ); 8598 } 8599 8600 // Get transport 8601 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 8602 8603 // If no transport, we auto-abort 8604 if ( !transport ) { 8605 done( -1, "No Transport" ); 8606 } else { 8607 jqXHR.readyState = 1; 8608 8609 // Send global event 8610 if ( fireGlobals ) { 8611 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 8612 } 8613 // Timeout 8614 if ( s.async && s.timeout > 0 ) { 8615 timeoutTimer = setTimeout(function() { 8616 jqXHR.abort("timeout"); 8617 }, s.timeout ); 8618 } 8619 8620 try { 8621 state = 1; 8622 transport.send( requestHeaders, done ); 8623 } catch ( e ) { 8624 // Propagate exception as error if not done 8625 if ( state < 2 ) { 8626 done( -1, e ); 8627 // Simply rethrow otherwise 8628 } else { 8629 throw e; 8630 } 8631 } 8632 } 8633 8634 // Callback for when everything is done 8635 function done( status, nativeStatusText, responses, headers ) { 8636 var isSuccess, success, error, response, modified, 8637 statusText = nativeStatusText; 8638 8639 // Called once 8640 if ( state === 2 ) { 8641 return; 8642 } 8643 8644 // State is "done" now 8645 state = 2; 8646 8647 // Clear timeout if it exists 8648 if ( timeoutTimer ) { 8649 clearTimeout( timeoutTimer ); 8650 } 8651 8652 // Dereference transport for early garbage collection 8653 // (no matter how long the jqXHR object will be used) 8654 transport = undefined; 8655 8656 // Cache response headers 8657 responseHeadersString = headers || ""; 8658 8659 // Set readyState 8660 jqXHR.readyState = status > 0 ? 4 : 0; 8661 8662 // Determine if successful 8663 isSuccess = status >= 200 && status < 300 || status === 304; 8664 8665 // Get response data 8666 if ( responses ) { 8667 response = ajaxHandleResponses( s, jqXHR, responses ); 8668 } 8669 8670 // Convert no matter what (that way responseXXX fields are always set) 8671 response = ajaxConvert( s, response, jqXHR, isSuccess ); 8672 8673 // If successful, handle type chaining 8674 if ( isSuccess ) { 8675 8676 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 8677 if ( s.ifModified ) { 8678 modified = jqXHR.getResponseHeader("Last-Modified"); 8679 if ( modified ) { 8680 jQuery.lastModified[ cacheURL ] = modified; 8681 } 8682 modified = jqXHR.getResponseHeader("etag"); 8683 if ( modified ) { 8684 jQuery.etag[ cacheURL ] = modified; 8685 } 8686 } 8687 8688 // if no content 8689 if ( status === 204 || s.type === "HEAD" ) { 8690 statusText = "nocontent"; 8691 8692 // if not modified 8693 } else if ( status === 304 ) { 8694 statusText = "notmodified"; 8695 8696 // If we have data, let's convert it 8697 } else { 8698 statusText = response.state; 8699 success = response.data; 8700 error = response.error; 8701 isSuccess = !error; 8702 } 8703 } else { 8704 // Extract error from statusText and normalize for non-aborts 8705 error = statusText; 8706 if ( status || !statusText ) { 8707 statusText = "error"; 8708 if ( status < 0 ) { 8709 status = 0; 8710 } 8711 } 8712 } 8713 8714 // Set data for the fake xhr object 8715 jqXHR.status = status; 8716 jqXHR.statusText = ( nativeStatusText || statusText ) + ""; 8717 8718 // Success/Error 8719 if ( isSuccess ) { 8720 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 8721 } else { 8722 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 8723 } 8724 8725 // Status-dependent callbacks 8726 jqXHR.statusCode( statusCode ); 8727 statusCode = undefined; 8728 8729 if ( fireGlobals ) { 8730 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", 8731 [ jqXHR, s, isSuccess ? success : error ] ); 8732 } 8733 8734 // Complete 8735 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); 8736 8737 if ( fireGlobals ) { 8738 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 8739 // Handle the global AJAX counter 8740 if ( !( --jQuery.active ) ) { 8741 jQuery.event.trigger("ajaxStop"); 8742 } 8743 } 8744 } 8745 8746 return jqXHR; 8747 }, 8748 8749 getJSON: function( url, data, callback ) { 8750 return jQuery.get( url, data, callback, "json" ); 8751 }, 8752 8753 getScript: function( url, callback ) { 8754 return jQuery.get( url, undefined, callback, "script" ); 8755 } 8756}); 8757 8758jQuery.each( [ "get", "post" ], function( i, method ) { 8759 jQuery[ method ] = function( url, data, callback, type ) { 8760 // Shift arguments if data argument was omitted 8761 if ( jQuery.isFunction( data ) ) { 8762 type = type || callback; 8763 callback = data; 8764 data = undefined; 8765 } 8766 8767 return jQuery.ajax({ 8768 url: url, 8769 type: method, 8770 dataType: type, 8771 data: data, 8772 success: callback 8773 }); 8774 }; 8775}); 8776 8777 8778jQuery._evalUrl = function( url ) { 8779 return jQuery.ajax({ 8780 url: url, 8781 type: "GET", 8782 dataType: "script", 8783 async: false, 8784 global: false, 8785 "throws": true 8786 }); 8787}; 8788 8789 8790jQuery.fn.extend({ 8791 wrapAll: function( html ) { 8792 var wrap; 8793 8794 if ( jQuery.isFunction( html ) ) { 8795 return this.each(function( i ) { 8796 jQuery( this ).wrapAll( html.call(this, i) ); 8797 }); 8798 } 8799 8800 if ( this[ 0 ] ) { 8801 8802 // The elements to wrap the target around 8803 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 8804 8805 if ( this[ 0 ].parentNode ) { 8806 wrap.insertBefore( this[ 0 ] ); 8807 } 8808 8809 wrap.map(function() { 8810 var elem = this; 8811 8812 while ( elem.firstElementChild ) { 8813 elem = elem.firstElementChild; 8814 } 8815 8816 return elem; 8817 }).append( this ); 8818 } 8819 8820 return this; 8821 }, 8822 8823 wrapInner: function( html ) { 8824 if ( jQuery.isFunction( html ) ) { 8825 return this.each(function( i ) { 8826 jQuery( this ).wrapInner( html.call(this, i) ); 8827 }); 8828 } 8829 8830 return this.each(function() { 8831 var self = jQuery( this ), 8832 contents = self.contents(); 8833 8834 if ( contents.length ) { 8835 contents.wrapAll( html ); 8836 8837 } else { 8838 self.append( html ); 8839 } 8840 }); 8841 }, 8842 8843 wrap: function( html ) { 8844 var isFunction = jQuery.isFunction( html ); 8845 8846 return this.each(function( i ) { 8847 jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); 8848 }); 8849 }, 8850 8851 unwrap: function() { 8852 return this.parent().each(function() { 8853 if ( !jQuery.nodeName( this, "body" ) ) { 8854 jQuery( this ).replaceWith( this.childNodes ); 8855 } 8856 }).end(); 8857 } 8858}); 8859 8860 8861jQuery.expr.filters.hidden = function( elem ) { 8862 // Support: Opera <= 12.12 8863 // Opera reports offsetWidths and offsetHeights less than zero on some elements 8864 return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 8865}; 8866jQuery.expr.filters.visible = function( elem ) { 8867 return !jQuery.expr.filters.hidden( elem ); 8868}; 8869 8870 8871 8872 8873var r20 = /%20/g, 8874 rbracket = /\[\]$/, 8875 rCRLF = /\r?\n/g, 8876 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 8877 rsubmittable = /^(?:input|select|textarea|keygen)/i; 8878 8879function buildParams( prefix, obj, traditional, add ) { 8880 var name; 8881 8882 if ( jQuery.isArray( obj ) ) { 8883 // Serialize array item. 8884 jQuery.each( obj, function( i, v ) { 8885 if ( traditional || rbracket.test( prefix ) ) { 8886 // Treat each array item as a scalar. 8887 add( prefix, v ); 8888 8889 } else { 8890 // Item is non-scalar (array or object), encode its numeric index. 8891 buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); 8892 } 8893 }); 8894 8895 } else if ( !traditional && jQuery.type( obj ) === "object" ) { 8896 // Serialize object item. 8897 for ( name in obj ) { 8898 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 8899 } 8900 8901 } else { 8902 // Serialize scalar item. 8903 add( prefix, obj ); 8904 } 8905} 8906 8907// Serialize an array of form elements or a set of 8908// key/values into a query string 8909jQuery.param = function( a, traditional ) { 8910 var prefix, 8911 s = [], 8912 add = function( key, value ) { 8913 // If value is a function, invoke it and return its value
8914 value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); 8915 s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); 8916 }; 8917 8918 // Set traditional to true for jQuery <= 1.3.2 behavior. 8919 if ( traditional === undefined ) { 8920 traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; 8921 } 8922 8923 // If an array was passed in, assume that it is an array of form elements. 8924 if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 8925 // Serialize the form elements 8926 jQuery.each( a, function() { 8927 add( this.name, this.value ); 8928 }); 8929 8930 } else { 8931 // If traditional, encode the "old" way (the way 1.3.2 or older 8932 // did it), otherwise encode params recursively. 8933 for ( prefix in a ) { 8934 buildParams( prefix, a[ prefix ], traditional, add ); 8935 } 8936 } 8937 8938 // Return the resulting serialization 8939 return s.join( "&" ).replace( r20, "+" ); 8940}; 8941 8942jQuery.fn.extend({ 8943 serialize: function() { 8944 return jQuery.param( this.serializeArray() ); 8945 }, 8946 serializeArray: function() { 8947 return this.map(function() { 8948 // Can add propHook for "elements" to filter or add form elements 8949 var elements = jQuery.prop( this, "elements" ); 8950 return elements ? jQuery.makeArray( elements ) : this; 8951 }) 8952 .filter(function() { 8953 var type = this.type; 8954 8955 // Use .is( ":disabled" ) so that fieldset[disabled] works 8956 return this.name && !jQuery( this ).is( ":disabled" ) && 8957 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 8958 ( this.checked || !rcheckableType.test( type ) ); 8959 }) 8960 .map(function( i, elem ) { 8961 var val = jQuery( this ).val(); 8962 8963 return val == null ? 8964 null : 8965 jQuery.isArray( val ) ? 8966 jQuery.map( val, function( val ) { 8967 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 8968 }) : 8969 { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 8970 }).get(); 8971 } 8972}); 8973 8974 8975jQuery.ajaxSettings.xhr = function() { 8976 try { 8977 return new XMLHttpRequest(); 8978 } catch( e ) {} 8979}; 8980 8981var xhrId = 0, 8982 xhrCallbacks = {}, 8983 xhrSuccessStatus = { 8984 // file protocol always yields status code 0, assume 200 8985 0: 200,
8986 // Support: IE9 8987 // #1450: sometimes IE returns 1223 when it should be 204 8988 1223: 204 8989 }, 8990 xhrSupported = jQuery.ajaxSettings.xhr(); 8991 8992// Support: IE9 8993// Open requests must be manually aborted on unload (#5280) 8994// See https://support.microsoft.com/kb/2856746 for more info 8995if ( window.attachEvent ) { 8996 window.attachEvent( "onunload", function() { 8997 for ( var key in xhrCallbacks ) { 8998 xhrCallbacks[ key ](); 8999 } 9000 }); 9001} 9002 9003support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); 9004support.ajax = xhrSupported = !!xhrSupported; 9005 9006jQuery.ajaxTransport(function( options ) { 9007 var callback; 9008 9009 // Cross domain only allowed if supported through XMLHttpRequest 9010 if ( support.cors || xhrSupported && !options.crossDomain ) { 9011 return { 9012 send: function( headers, complete ) { 9013 var i, 9014 xhr = options.xhr(), 9015 id = ++xhrId; 9016 9017 xhr.open( options.type, options.url, options.async, options.username, options.password ); 9018 9019 // Apply custom fields if provided 9020 if ( options.xhrFields ) { 9021 for ( i in options.xhrFields ) { 9022 xhr[ i ] = options.xhrFields[ i ]; 9023 } 9024 } 9025 9026 // Override mime type if needed 9027 if ( options.mimeType && xhr.overrideMimeType ) { 9028 xhr.overrideMimeType( options.mimeType ); 9029 } 9030 9031 // X-Requested-With header 9032 // For cross-domain requests, seeing as conditions for a preflight are 9033 // akin to a jigsaw puzzle, we simply never set it to be sure. 9034 // (it can always be set on a per-request basis or even using ajaxSetup)
9035 // For same-domain requests, won't change header if already provided. 9036 if ( !options.crossDomain && !headers["X-Requested-With"] ) { 9037 headers["X-Requested-With"] = "XMLHttpRequest"; 9038 } 9039 9040 // Set headers 9041 for ( i in headers ) { 9042 xhr.setRequestHeader( i, headers[ i ] ); 9043 } 9044 9045 // Callback 9046 callback = function( type ) { 9047 return function() { 9048 if ( callback ) { 9049 delete xhrCallbacks[ id ]; 9050 callback = xhr.onload = xhr.onerror = null; 9051 9052 if ( type === "abort" ) { 9053 xhr.abort(); 9054 } else if ( type === "error" ) { 9055 complete( 9056 // file: protocol always yields status 0; see #8605, #14207 9057 xhr.status, 9058 xhr.statusText 9059 ); 9060 } else { 9061 complete( 9062 xhrSuccessStatus[ xhr.status ] || xhr.status, 9063 xhr.statusText, 9064 // Support: IE9 9065 // Accessing binary-data responseText throws an exception 9066 // (#11426) 9067 typeof xhr.responseText === "string" ? { 9068 text: xhr.responseText 9069 } : undefined, 9070 xhr.getAllResponseHeaders() 9071 ); 9072 } 9073 } 9074 }; 9075 }; 9076 9077 // Listen to events 9078 xhr.onload = callback(); 9079 xhr.onerror = callback("error"); 9080 9081 // Create the abort callback 9082 callback = xhrCallbacks[ id ] = callback("abort"); 9083 9084 try { 9085 // Do send the request (this may raise an exception) 9086 xhr.send( options.hasContent && options.data || null ); 9087 } catch ( e ) { 9088 // #14683: Only rethrow if this hasn't been notified as an error yet 9089 if ( callback ) { 9090 throw e; 9091 } 9092 } 9093 }, 9094 9095 abort: function() { 9096 if ( callback ) { 9097 callback(); 9098 } 9099 } 9100 }; 9101 } 9102}); 9103 9104 9105 9106 9107// Install script dataType 9108jQuery.ajaxSetup({ 9109 accepts: { 9110 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 9111 }, 9112 contents: { 9113 script: /(?:java|ecma)script/ 9114 }, 9115 converters: { 9116 "text script": function( text ) { 9117 jQuery.globalEval( text ); 9118 return text; 9119 } 9120 } 9121}); 9122 9123// Handle cache's special case and crossDomain 9124jQuery.ajaxPrefilter( "script", function( s ) { 9125 if ( s.cache === undefined ) { 9126 s.cache = false; 9127 } 9128 if ( s.crossDomain ) { 9129 s.type = "GET"; 9130 } 9131}); 9132 9133// Bind script tag hack transport 9134jQuery.ajaxTransport( "script", function( s ) { 9135 // This transport only deals with cross domain requests 9136 if ( s.crossDomain ) { 9137 var script, callback; 9138 return { 9139 send: function( _, complete ) { 9140 script = jQuery("<script>").prop({ 9141 async: true, 9142 charset: s.scriptCharset, 9143 src: s.url 9144 }).on( 9145 "load error", 9146 callback = function( evt ) { 9147 script.remove(); 9148 callback = null; 9149 if ( evt ) { 9150 complete( evt.type === "error" ? 404 : 200, evt.type ); 9151 } 9152 } 9153 ); 9154 document.head.appendChild( script[ 0 ] ); 9155 }, 9156 abort: function() { 9157 if ( callback ) { 9158 callback(); 9159 } 9160 } 9161 }; 9162 } 9163}); 9164 9165 9166 9167 9168var oldCallbacks = [], 9169 rjsonp = /(=)\?(?=&|$)|\?\?/; 9170 9171// Default jsonp settings 9172jQuery.ajaxSetup({ 9173 jsonp: "callback", 9174 jsonpCallback: function() { 9175 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); 9176 this[ callback ] = true; 9177 return callback; 9178 } 9179}); 9180 9181// Detect, normalize options and install callbacks for jsonp requests 9182jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 9183 9184 var callbackName, overwritten, responseContainer, 9185 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 9186 "url" : 9187 typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" 9188 ); 9189 9190 // Handle iff the expected data type is "jsonp" or we have a parameter to set 9191 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 9192 9193 // Get callback name, remembering preexisting value associated with it 9194 callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? 9195 s.jsonpCallback() : 9196 s.jsonpCallback; 9197 9198 // Insert callback into url or form data 9199 if ( jsonProp ) { 9200 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 9201 } else if ( s.jsonp !== false ) { 9202 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 9203 } 9204 9205 // Use data converter to retrieve json after script execution 9206 s.converters["script json"] = function() { 9207 if ( !responseContainer ) { 9208 jQuery.error( callbackName + " was not called" ); 9209 } 9210 return responseContainer[ 0 ]; 9211 }; 9212 9213 // force json dataType 9214 s.dataTypes[ 0 ] = "json"; 9215 9216 // Install callback 9217 overwritten = window[ callbackName ]; 9218 window[ callbackName ] = function() { 9219 responseContainer = arguments; 9220 }; 9221 9222 // Clean-up function (fires after converters) 9223 jqXHR.always(function() { 9224 // Restore preexisting value 9225 window[ callbackName ] = overwritten; 9226 9227 // Save back as free 9228 if ( s[ callbackName ] ) { 9229 // make sure that re-using the options doesn't screw things around 9230 s.jsonpCallback = originalSettings.jsonpCallback; 9231 9232 // save the callback name for future use 9233 oldCallbacks.push( callbackName ); 9234 } 9235 9236 // Call if it was a function and we have a response 9237 if ( responseContainer && jQuery.isFunction( overwritten ) ) { 9238 overwritten( responseContainer[ 0 ] ); 9239 } 9240 9241 responseContainer = overwritten = undefined; 9242 }); 9243 9244 // Delegate to script 9245 return "script"; 9246 } 9247}); 9248 9249 9250 9251 9252// data: string of html 9253// context (optional): If specified, the fragment will be created in this context, defaults to document 9254// keepScripts (optional): If true, will include scripts passed in the html string 9255jQuery.parseHTML = function( data, context, keepScripts ) { 9256 if ( !data || typeof data !== "string" ) { 9257 return null; 9258 } 9259 if ( typeof context === "boolean" ) { 9260 keepScripts = context; 9261 context = false;
9262 } 9263 context = context || document; 9264 9265 var parsed = rsingleTag.exec( data ), 9266 scripts = !keepScripts && []; 9267 9268 // Single tag 9269 if ( parsed ) { 9270 return [ context.createElement( parsed[1] ) ]; 9271 } 9272 9273 parsed = jQuery.buildFragment( [ data ], context, scripts ); 9274 9275 if ( scripts && scripts.length ) { 9276 jQuery( scripts ).remove(); 9277 } 9278 9279 return jQuery.merge( [], parsed.childNodes ); 9280}; 9281 9282 9283// Keep a copy of the old load method 9284var _load = jQuery.fn.load; 9285 9286/** 9287 * Load a url into a page 9288 */ 9289jQuery.fn.load = function( url, params, callback ) { 9290 if ( typeof url !== "string" && _load ) { 9291 return _load.apply( this, arguments ); 9292 } 9293 9294 var selector, type, response, 9295 self = this, 9296 off = url.indexOf(" "); 9297 9298 if ( off >= 0 ) { 9299 selector = jQuery.trim( url.slice( off ) ); 9300 url = url.slice( 0, off ); 9301 } 9302 9303 // If it's a function 9304 if ( jQuery.isFunction( params ) ) { 9305 9306 // We assume that it's the callback 9307 callback = params; 9308 params = undefined; 9309 9310 // Otherwise, build a param string 9311 } else if ( params && typeof params === "object" ) { 9312 type = "POST"; 9313 } 9314 9315 // If we have elements to modify, make the request 9316 if ( self.length > 0 ) { 9317 jQuery.ajax({ 9318 url: url, 9319 9320 // if "type" variable is undefined, then "GET" method will be used 9321 type: type, 9322 dataType: "html", 9323 data: params 9324 }).done(function( responseText ) { 9325 9326 // Save response for use in complete callback 9327 response = arguments; 9328 9329 self.html( selector ? 9330 9331 // If a selector was specified, locate the right elements in a dummy div 9332 // Exclude scripts to avoid IE 'Permission Denied' errors 9333 jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : 9334 9335 // Otherwise use the full result 9336 responseText ); 9337 9338 }).complete( callback && function( jqXHR, status ) { 9339 self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); 9340 }); 9341 } 9342 9343 return this; 9344}; 9345 9346 9347 9348 9349// Attach a bunch of functions for handling common AJAX events 9350jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { 9351 jQuery.fn[ type ] = function( fn ) { 9352 return this.on( type, fn ); 9353 }; 9354}); 9355 9356 9357 9358 9359jQuery.expr.filters.animated = function( elem ) { 9360 return jQuery.grep(jQuery.timers, function( fn ) { 9361 return elem === fn.elem; 9362 }).length; 9363}; 9364 9365 9366 9367 9368var docElem = window.document.documentElement; 9369 9370/** 9371 * Gets a window from an element 9372 */ 9373function getWindow( elem ) { 9374 return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; 9375} 9376 9377jQuery.offset = { 9378 setOffset: function( elem, options, i ) { 9379 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, 9380 position = jQuery.css( elem, "position" ), 9381 curElem = jQuery( elem ), 9382 props = {}; 9383 9384 // Set position first, in-case top/left are set even on static elem 9385 if ( position === "static" ) { 9386 elem.style.position = "relative"; 9387 } 9388 9389 curOffset = curElem.offset(); 9390 curCSSTop = jQuery.css( elem, "top" ); 9391 curCSSLeft = jQuery.css( elem, "left" ); 9392 calculatePosition = ( position === "absolute" || position === "fixed" ) && 9393 ( curCSSTop + curCSSLeft ).indexOf("auto") > -1; 9394 9395 // Need to be able to calculate position if either 9396 // top or left is auto and position is either absolute or fixed 9397 if ( calculatePosition ) { 9398 curPosition = curElem.position(); 9399 curTop = curPosition.top; 9400 curLeft = curPosition.left; 9401 9402 } else { 9403 curTop = parseFloat( curCSSTop ) || 0; 9404 curLeft = parseFloat( curCSSLeft ) || 0; 9405 } 9406 9407 if ( jQuery.isFunction( options ) ) { 9408 options = options.call( elem, i, curOffset ); 9409 } 9410 9411 if ( options.top != null ) { 9412 props.top = ( options.top - curOffset.top ) + curTop; 9413 } 9414 if ( options.left != null ) { 9415 props.left = ( options.left - curOffset.left ) + curLeft; 9416 } 9417 9418 if ( "using" in options ) { 9419 options.using.call( elem, props ); 9420 9421 } else { 9422 curElem.css( props ); 9423 } 9424 } 9425}; 9426 9427jQuery.fn.extend({ 9428 offset: function( options ) { 9429 if ( arguments.length ) { 9430 return options === undefined ? 9431 this : 9432 this.each(function( i ) { 9433 jQuery.offset.setOffset( this, options, i ); 9434 }); 9435 } 9436 9437 var docElem, win, 9438 elem = this[ 0 ], 9439 box = { top: 0, left: 0 }, 9440 doc = elem && elem.ownerDocument; 9441 9442 if ( !doc ) { 9443 return; 9444 } 9445 9446 docElem = doc.documentElement; 9447 9448 // Make sure it's not a disconnected DOM node 9449 if ( !jQuery.contains( docElem, elem ) ) { 9450 return box; 9451 } 9452
9453 // Support: BlackBerry 5, iOS 3 (original iPhone) 9454 // If we don't have gBCR, just use 0,0 rather than error 9455 if ( typeof elem.getBoundingClientRect !== strundefined ) { 9456 box = elem.getBoundingClientRect(); 9457 } 9458 win = getWindow( doc ); 9459 return { 9460 top: box.top + win.pageYOffset - docElem.clientTop, 9461 left: box.left + win.pageXOffset - docElem.clientLeft 9462 }; 9463 }, 9464 9465 position: function() { 9466 if ( !this[ 0 ] ) { 9467 return; 9468 } 9469 9470 var offsetParent, offset, 9471 elem = this[ 0 ], 9472 parentOffset = { top: 0, left: 0 }; 9473 9474 // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent 9475 if ( jQuery.css( elem, "position" ) === "fixed" ) { 9476 // Assume getBoundingClientRect is there when computed position is fixed 9477 offset = elem.getBoundingClientRect(); 9478 9479 } else { 9480 // Get *real* offsetParent 9481 offsetParent = this.offsetParent(); 9482 9483 // Get correct offsets 9484 offset = this.offset(); 9485 if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { 9486 parentOffset = offsetParent.offset(); 9487 } 9488 9489 // Add offsetParent borders 9490 parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); 9491 parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); 9492 } 9493 9494 // Subtract parent offsets and element margins 9495 return { 9496 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), 9497 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) 9498 }; 9499 }, 9500 9501 offsetParent: function() { 9502 return this.map(function() { 9503 var offsetParent = this.offsetParent || docElem; 9504 9505 while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) { 9506 offsetParent = offsetParent.offsetParent; 9507 } 9508 9509 return offsetParent || docElem; 9510 }); 9511 } 9512}); 9513 9514// Create scrollLeft and scrollTop methods 9515jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { 9516 var top = "pageYOffset" === prop; 9517 9518 jQuery.fn[ method ] = function( val ) { 9519 return access( this, function( elem, method, val ) { 9520 var win = getWindow( elem ); 9521 9522 if ( val === undefined ) { 9523 return win ? win[ prop ] : elem[ method ]; 9524 } 9525 9526 if ( win ) { 9527 win.scrollTo( 9528 !top ? val : window.pageXOffset, 9529 top ? val : window.pageYOffset 9530 ); 9531 9532 } else { 9533 elem[ method ] = val; 9534 } 9535 }, method, val, arguments.length, null ); 9536 }; 9537}); 9538 9539// Support: Safari<7+, Chrome<37+ 9540// Add the top/left cssHooks using jQuery.fn.position 9541// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 9542// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280 9543// getComputedStyle returns percent when specified for top/left/bottom/right; 9544// rather than make the css module depend on the offset module, just check for it here 9545jQuery.each( [ "top", "left" ], function( i, prop ) { 9546 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, 9547 function( elem, computed ) { 9548 if ( computed ) { 9549 computed = curCSS( elem, prop ); 9550 // If curCSS returns percentage, fallback to offset 9551 return rnumnonpx.test( computed ) ? 9552 jQuery( elem ).position()[ prop ] + "px" : 9553 computed; 9554 } 9555 } 9556 ); 9557}); 9558 9559 9560// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 9561jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 9562 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { 9563 // Margin is only for outerHeight, outerWidth 9564 jQuery.fn[ funcName ] = function( margin, value ) { 9565 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 9566 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 9567 9568 return access( this, function( elem, type, value ) { 9569 var doc; 9570 9571 if ( jQuery.isWindow( elem ) ) { 9572 // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there 9573 // isn't a whole lot we can do. See pull request at this URL for discussion: 9574 // https://github.com/jquery/jquery/pull/764 9575 return elem.document.documentElement[ "client" + name ]; 9576 } 9577 9578 // Get document width or height 9579 if ( elem.nodeType === 9 ) { 9580 doc = elem.documentElement; 9581 9582 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 9583 // whichever is greatest 9584 return Math.max( 9585 elem.body[ "scroll" + name ], doc[ "scroll" + name ], 9586 elem.body[ "offset" + name ], doc[ "offset" + name ], 9587 doc[ "client" + name ] 9588 ); 9589 } 9590 9591 return value === undefined ? 9592 // Get width or height on the element, requesting but not forcing parseFloat 9593 jQuery.css( elem, type, extra ) : 9594 9595 // Set width or height on the element 9596 jQuery.style( elem, type, value, extra ); 9597 }, type, chainable ? margin : undefined, chainable, null ); 9598 }; 9599 }); 9600}); 9601 9602 9603// The number of elements contained in the matched element set 9604jQuery.fn.size = function() { 9605 return this.length; 9606}; 9607 9608jQuery.fn.andSelf = jQuery.fn.addBack; 9609 9610 9611 9612 9613// Register as a named AMD module, since jQuery can be concatenated with other 9614// files that may use define, but not via a proper concatenation script that 9615// understands anonymous AMD modules. A named AMD is safest and most robust 9616// way to register. Lowercase jquery is used because AMD module names are 9617// derived from file names, and jQuery is normally delivered in a lowercase 9618// file name. Do this after creating the global so that if an AMD module wants 9619// to call noConflict to hide this version of jQuery, it will work. 9620 9621// Note that for maximum portability, libraries that are not jQuery should 9622// declare themselves as anonymous modules, and avoid setting a global if an 9623// AMD loader is present. jQuery is a special case. For more information, see
9624// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 9625 9626if ( typeof define === "function" && define.amd ) { 9627 define( "jquery", [], function() { 9628 return jQuery; 9629 }); 9630} 9631 9632 9633 9634 9635var 9636 // Map over jQuery in case of overwrite 9637 _jQuery = window.jQuery, 9638 9639 // Map over the $ in case of overwrite 9640 _$ = window.$; 9641 9642jQuery.noConflict = function( deep ) { 9643 if ( window.$ === jQuery ) { 9644 window.$ = _$; 9645 } 9646 9647 if ( deep && window.jQuery === jQuery ) { 9648 window.jQuery = _jQuery; 9649 } 9650 9651 return jQuery; 9652}; 9653 9654// Expose jQuery and $ identifiers, even in AMD 9655// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 9656// and CommonJS for browser emulators (#13566) 9657if ( typeof noGlobal === strundefined ) { 9658 window.jQuery = window.$ = jQuery; 9659} 9660 9661 9662 9663 9664return jQuery; 9665 9666})); 9667 9668; browserify_shim__define__module__export__(typeof $ != "undefined" ? $ : window.$); 9669 9670}).call(global, undefined, undefined, undefined, undefined, function defineExport(ex) { module.exports = ex; }); 9671 9672}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 9673//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ
9673TtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ
9673UNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO
96730FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIjsgdmFyIF9fYnJvd3NlcmlmeV9zaGltX3JlcXVpcmVfXz1yZXF1aXJlOyhmdW5jdGlvbiBicm93c2VyaWZ5U2hpbShtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUsIGRlZmluZSwgYnJvd3NlcmlmeV9zaGltX19kZWZpbmVfX21vZHVsZV9fZXhwb3J0X18pIHtcbi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2Mi4xLjRcbiAqIGh0dHA6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgMjAwNSwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE1LTA0LTI4VDE2OjAxWlxuICovXG5cbihmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkge1xuXG5cdGlmICggdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggMTgrXG4vLyBDYW4ndCBiZSBpbiBzdHJpY3QgbW9kZSwgc2V2ZXJhbCBsaWJzIGluY2x1ZGluZyBBU1AuTkVUIHRyYWNlXG4vLyB0aGUgc3RhY2sgdmlhIGFyZ3VtZW50cy5jYWxsZXIuY2FsbGVlIGFuZCBGaXJlZm94IGRpZXMgaWZcbi8vIHlvdSB0cnkgdG8gdHJhY2UgdGhyb3VnaCBcInVzZSBzdHJpY3RcIiBjYWxsIGNoYWlucy4gKCMxMzMzNSlcbi8vXG5cbnZhciBhcnIgPSBbXTtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgY29uY2F0ID0gYXJyLmNvbmNhdDtcblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBzdXBwb3J0ID0ge307XG5cblxuXG52YXJcblx0Ly8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdpdGggd2luZG93IGFyZ3VtZW50IChzYW5kYm94KVxuXHRkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudCxcblxuXHR2ZXJzaW9uID0gXCIyLjEuNFwiLFxuXG5cdC8vI
9673ERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHQvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCdcblx0XHQvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxlZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKVxuXHRcdHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjFcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLFxuXG5cdC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xuXHRybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW1xcZGEtel0pL2dpLFxuXG5cdC8vIFVzZWQgYnkgalF1ZXJ5LmNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKClcblx0ZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHtcblx0XHRyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG5cdH07XG5cbmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7XG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gU3RhcnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvclxuXHRzZWxlY3RvcjogXCJcIixcblxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcblx0bGVuZ3RoOiAwLFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxuXHQvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheVxuXHRnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7XG5cdFx0cmV0dXJuIG51bSAhPSBudWxsID9cblxuXHRcdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9uZSBlbGVtZW50IGZyb20gdGhlIHNldFxuXHRcdFx0KCBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdICkgOlxuXG5cdFx0XHQvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5XG5cdFx0XHRzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFja1xuXHQvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldClcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cblx0XHQvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldFxuXHRcdHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTtcblxuXHRcdC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpXG5cdFx0cmV0LnByZXZPYmplY3QgPSB0aGlzO1xuXHRcdHJldC5jb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG5cdC8vIChZb3UgY2FuIHNlZWQgdGhlIGFyZ3VtZW50cyB3aXRoIGFuIGFycmF5IG9mIGFyZ3MsIGJ1dCB0aGlzIGlzXG5cdC8vIG9ubHkgdXNlZCBpbnRlcm5hbGx5Lilcblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrLCBhcmdzICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0pKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzW2pdIF0gOiBbXSApO1xuXHR9LFxuXG5cdGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKG51bGwpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24odGFyZ2V0KSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoIChvcHRpb25zID0gYXJndW1lbnRzWyBpIF0pICE9IG51bGwgKSB7XG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdChjb3B5KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheShjb3B5KSkgKSApIHtcblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICkge1xuXHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc0FycmF
96735KHNyYykgPyBzcmMgOiBbXTtcblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnR5cGUob2JqKSA9PT0gXCJmdW5jdGlvblwiO1xuXHR9LFxuXG5cdGlzQXJyYXk6IEFycmF5LmlzQXJyYXksXG5cblx0aXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fSxcblxuXHRpc051bWVyaWM6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKG51bGx8dHJ1ZXxmYWxzZXxcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQvLyBhZGRpbmcgMSBjb3JyZWN0cyBsb3NzIG9mIHByZWNpc2lvbiBmcm9tIHBhcnNlRmxvYXQgKCMxNTEwMClcblx0XHRyZXR1cm4gIWpRdWVyeS5pc0FycmF5KCBvYmogKSAmJiAob2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKyAxKSA+PSAwO1xuXHR9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0Ly8gTm90IHBsYWluIG9iamVjdHM6XG5cdFx0Ly8gLSBBbnkgb2JqZWN0IG9yIHZhbHVlIHdob3NlIGludGVybmFsIFtbQ2xhc3NdXSBwcm9wZXJ0eSBpcyBub3QgXCJbb2JqZWN0IE9iamVjdF1cIlxuXHRcdC8vIC0gRE9NIG5vZGVzXG5cdFx0Ly8gLSB3aW5kb3dcblx0XHRpZiAoIGpRdWVyeS50eXBlKCBvYmogKSAhPT0gXCJvYmplY3RcIiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoIG9iai5jb25zdHJ1Y3RvciAmJlxuXHRcdFx0XHQhaGFzT3duLmNhbGwoIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIFwiaXNQcm90b3R5cGVPZlwiICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlIGZ1bmN0aW9uIGhhc24ndCByZXR1cm5lZCBhbHJlYWR5LCB3ZSdyZSBjb25maWRlbnQgdGhhdFxuXHRcdC8vIHxvYmp8IGlzIGEgcGxhaW4gb2JqZWN0LCBjcmVhdGVkIGJ5IHt9IG9yIGNvbnN0cnVjdGVkIHdpdGggbmV3IE9iamVjdFxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdHR5cGU6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBvYmogKyBcIlwiO1xuXHRcdH1cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMCwgaU9TPDYgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0XHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdFx0Y2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbChvYmopIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0XHR0eXBlb2Ygb2JqO1xuXHR9LFxuXG5cdC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0XG5cdGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2RlICkge1xuXHRcdHZhciBzY3JpcHQsXG5cdFx0XHRpbmRpcmVjdCA9IGV2YWw7XG5cblx0XHRjb2RlID0galF1ZXJ5LnRyaW0oIGNvZGUgKTtcblxuXHRcdGlmICggY29kZSApIHtcblx0XHRcdC8vIElmIHRoZSBjb2RlIGluY2x1ZGVzIGEgdmFsaWQsIHByb2xvZ3VlIHBvc2l0aW9uXG5cdFx0XHQvLyBzdHJpY3QgbW9kZSBwcmFnbWEsIGV4ZWN1dGUgY29kZSBieSBpbmplY3RpbmcgYVxuXHRcdFx0Ly8gc2NyaXB0IHRhZyBpbnRvIHRoZSBkb2N1bWVudC5cblx0XHRcdGlmICggY29kZS5pbmRleE9mKFwidXNlIHN0cmljdFwiKSA9PT0gMSApIHtcblx0XHRcdFx0c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblx0XHRcdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBPdGhlcndpc2UsIGF2b2lkIHRoZSBET00gbm9kZSBjcmVhdGlvbiwgaW5zZXJ0aW9uXG5cdFx0XHQvLyBhbmQgcmVtb3ZhbCBieSB1c2luZyBhbiBpbmRpcmVjdCBnbG9iYWwgZXZhbFxuXHRcdFx0XHRpbmRpcmVjdCggY29kZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxuXHRjYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7XG5cdFx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG5cdH0sXG5cblx0bm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdHJldHVybi
9673BlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHR9LFxuXG5cdC8vIGFyZ3MgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0ZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdFx0dmFyIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoLFxuXHRcdFx0aXNBcnJheSA9IGlzQXJyYXlsaWtlKCBvYmogKTtcblxuXHRcdGlmICggYXJncyApIHtcblx0XHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrLmFwcGx5KCBvYmpbIGkgXSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEEgc3BlY2lhbCwgZmFzdCwgY2FzZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBvZiBlYWNoXG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4xXG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlsaWtlKCBPYmplY3QoYXJyKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRpc0FycmF5ID0gaXNBcnJheWxpa2UoIGVsZW1zICksXG5cdFx0XHRyZXQgPSBbXTtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzXG5cdFx0aWYgKCBpc0FycmF
96735ICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcblx0Ly8gYXJndW1lbnRzLlxuXHRwcm94eTogZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHRcdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0XHRjb250ZXh0ID0gZm47XG5cdFx0XHRmbiA9IHRtcDtcblx0XHR9XG5cblx0XHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHRcdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXG5cdFx0aWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFNpbXVsYXRlZCBiaW5kXG5cdFx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRcdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcblx0XHR9O1xuXG5cdFx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdFx0cHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7XG5cblx0XHRyZXR1cm4gcHJveHk7XG5cdH0sXG5cblx0bm93OiBEYXRlLm5vdyxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSk7XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yXCIuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbihpLCBuYW1lKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSk7XG5cbmZ1bmN0aW9uIGlzQXJyYXlsaWtlKCBvYmogKSB7XG5cblx0Ly8gU3VwcG9ydDogaU9TIDguMiAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9IFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblxuXHRpZiAoIHR5cGUgPT09IFwiZnVuY3Rpb25cIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggb2JqLm5vZGVUeXBlID09PSAxICYmIGxlbmd0aCApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4yLjAtcHJlXG4gKiBodHRwOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCAyMDA4LCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTQtMTItMTZcbiAqL1xuKGZ1bmN0aW9uKCB3aW5kb3cgKSB7XG5cbnZhciBpLFxuXHRzdXBwb3J0LFxuXHRFeHByLFxuXHRnZXRUZXh0LFxuXHRpc1hNTCxcblx0dG9rZW5pemUsXG5cdGNvbXBpbGUsXG5cdHNlbGVjdCxcblx0b3V0ZXJtb3N0Q29udGV4dCxcblx0c29ydElucHV0LFxuXHRoYXNEdXBsaWNhdGUsXG5cblx0Ly8gTG9jYWwgZG9jdW1lbnQgdmFyc1xuXHRzZXREb2N1bWVudCxcblx0ZG9jdW1lbnQsXG5cdGRvY0VsZW0sXG5cdGRvY3VtZW50SXNIVE1MLFxuXHRyYnVnZ3lRU0EsXG5cdHJidWdneU1hdGNoZXMsXG5cdG1hdGNoZXMsXG5cdGNvbnRhaW5zLFxuXG5cdC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGFcblx0ZXhwYW5kbyA9IFwic2l6emxlXCIgKyAxICogbmV3IERhdGUoKSxcblx0cHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LFxuXHRkaXJydW5zID0gMCxcblx0ZG9uZSA9IDAsXG5cdGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHR0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0Y29tcGlsZXJDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEdlbmVyYWwtcHVycG9zZSBjb25zdGFudHNcblx0TUFYX05FR0FUSVZFID0gMSA8PCAzMSxcblxuXHQvLyBJbnN0YW5jZSBtZXRob2RzXG5cdGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHksXG5cdGFyciA9IFtdLFxuXHRwb3AgPSBhcnIucG9wLFxuXHRwdXNoX25hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXHQvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0Ly8gaHR0cDovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAtMTtcblx0fSxcblxuXHRib29sZWFucyA9IFwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixcblxuXHQvLyBSZWd1bGFyIGV4cHJlc3Npb25zXG5cblx0Ly8gV2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlXG5cdHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzXG5cdGNoYXJhY3RlckVuY29
9673kaW5nID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXFxceDAwLVxcXFx4YTBdKStcIixcblxuXHQvLyBMb29zZWx5IG1vZGVsZWQgb24gQ1NTIGlkZW50aWZpZXIgY2hhcmFjdGVyc1xuXHQvLyBBbiB1bnF1b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBDU1MgaWRlbnRpZmllciBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHQvLyBQcm9wZXIgc3ludGF4OiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXJcblx0aWRlbnRpZmllciA9IGNoYXJhY3RlckVuY29kaW5nLnJlcGxhY2UoIFwid1wiLCBcIncjXCIgKSxcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gT3BlcmF0b3IgKGNhcHR1cmUgMilcblx0XHRcIiooWypeJHwhfl0/PSlcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIFwiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGNoYXJhY3RlckVuY29kaW5nICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKVwiICksXG5cdFx0XCJDTEFTU1wiOiBuZXcgUmVnRXhwKCBcIl5cXFxcLihcIiArIGNoYXJhY3RlckVuY29kaW5nICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCBcIndcIiwgXCJ3KlwiICkgKyBcIilcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgP
9673SAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblx0cmVzY2FwZSA9IC8nfFxcXFwvZyxcblxuXHQvLyBDU1MgZXNjYXBlcyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gVXNlZCBmb3IgaWZyYW1lc1xuXHQvLyBTZWUgc2V0RG9jdW1lbnQoKVxuXHQvLyBSZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSBcIlBlcm1pc3Npb24gRGVuaWVkXCJcblx0Ly8gZXJyb3IgaW4gSUVcblx0dW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHNldERvY3VtZW50KCk7XG5cdH07XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG1hdGNoLCBlbGVtLCBtLCBub2RlVHlwZSxcblx0XHQvLyBRU0EgdmFyc1xuXHRcdGksIGdyb3Vwcywgb2xkLCBuaWQsIG5ld0NvbnRleHQsIG5ld1NlbGVjdG9yO1xuXG5cdGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXG5cdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblx0bm9kZVR5cGUgPSBjb250ZXh0Lm5vZGVUeXBlO1xuXG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0aWYgKCAhc2VlZCAmJiBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgd2hlbiBwb3NzaWJsZSAoZS5nLiwgbm90IHVuZGVyIERvY3VtZW50RnJhZ21lbnQpXG5cdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHtcblx0XHRcdC8vIFNwZWVkLXVwOiBTaXp6bGUoXCIjSURcIilcblx0XHRcdGlmICggKG0gPSBtYXRjaFsxXSkgKSB7XG5cdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKTtcblx0XHRcdFx0XHQvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJuc1xuXHRcdFx0XHRcdC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgKGpRdWVyeSAjNjk2Mylcblx0XHRcdFx0XHRpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFLCBPcGVyYSwgYW5kIFdlYmtpdCByZXR1cm4gaXRlbXNcblx0XHRcdFx0XHRcdC8vIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBDb250ZXh0IGlzIG5vdCBhIGRvY3VtZW50XG5cdFx0XHRcdFx0aWYgKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgJiYgKGVsZW0gPSBjb250ZXh0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiZcblx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFNwZWVkLXVwOiBTaXp6bGUoXCJUQUdcIilcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzJdICkge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdHJldHVybi
9673ByZXN1bHRzO1xuXG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiLkNMQVNTXCIpXG5cdFx0XHR9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFFTQSBwYXRoXG5cdFx0aWYgKCBzdXBwb3J0LnFzYSAmJiAoIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkge1xuXHRcdFx0bmlkID0gb2xkID0gZXhwYW5kbztcblx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0bmV3U2VsZWN0b3IgPSBub2RlVHlwZSAhPT0gMSAmJiBzZWxlY3RvcjtcblxuXHRcdFx0Ly8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBxdWVyaWVzXG5cdFx0XHQvLyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBieSBzcGVjaWZ5aW5nIGFuIGV4dHJhIElEIG9uIHRoZSByb290XG5cdFx0XHQvLyBhbmQgd29ya2luZyB1cCBmcm9tIHRoZXJlIChUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhlIHRlY2huaXF1ZSlcblx0XHRcdC8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gMSAmJiBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXG5cdFx0XHRcdGlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIikpICkge1xuXHRcdFx0XHRcdG5pZCA9IG9sZC5yZXBsYWNlKCByZXNjYXBlLCBcIlxcXFwkJlwiICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgbmlkICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bmlkID0gXCJbaWQ9J1wiICsgbmlkICsgXCInXSBcIjtcblxuXHRcdFx0XHRpID0gZ3JvdXBzLmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0Z3JvdXBzW2ldID0gbmlkICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQ7XG5cdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oXCIsXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1
9673ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9IGNhdGNoKHFzYUVycm9yKSB7XG5cdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0aWYgKCAhb2xkICkge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge0Z1bmN0aW9uKHN0cmluZywgT2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuIChjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBkaXYgYW5kIGV4cGVjdHMgYSBib29sZWFuIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc3NlcnQoIGZuICkge1xuXHR2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBkaXYgKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblx0XHQvLyBSZW1vdmUgZnJvbSBpdHMgcGFyZW50IGJ5IGRlZmF1bHRcblx0XHRpZiAoIGRpdi5wYXJlbnROb2RlICkge1xuXHRcdFx0ZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGRpdiApO1xuXHRcdH1cblx0XHQvLyByZWxlYXNlIG1lbW9yeSBpbiBJRVxuXHRcdGRpdiA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KFwifFwiKSxcblx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdEV4cHIuYXR0ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5kbGVyO1xuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGRvY3VtZW50IG9yZGVyIG9mIHR3byBzaWJsaW5nc1xuICogQHBhcmFtIHtFbGVtZW50fSBhXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYlxuICovXG5mdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIgKSB7XG5cdHZhciBjdXIgPSBiICYmIGEsXG5cdFx0ZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdCggfmIuc291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICkgLVxuXHRcdFx0KCB+YS5zb3VyY2VJbmRleCB8fCBNQVhfTkVHQVRJVkUgKTtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAobmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0Vs
9673ZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgcGFyZW50LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBJZiBubyBkb2N1bWVudCBhbmQgZG9jdW1lbnRFbGVtZW50IGlzIGF2YWlsYWJsZSwgcmV0dXJuXG5cdGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gU2V0IG91ciBkb2N1bWVudFxuXHRkb2N1bWVudCA9IGRvYztcblx0ZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdHBhcmVudCA9IGRvYy5kZWZhdWx0VmlldztcblxuXHQvLyBTdXBwb3J0OiBJRT44XG5cdC8vIElmIGlmcmFtZSBkb2N1bWVudCBpcyBhc3NpZ25lZCB0byBcImRvY3VtZW50XCIgdmFyaWFibGUgYW5kIGlmIGlmcmFtZSBoYXMgYmVlbiByZWxvYWRlZCxcblx0Ly8gSUUgd2lsbCB0aHJvdyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBhY2Nlc3NpbmcgXCJkb2N1bWVudFwiIHZhcmlhYmxlLCBzZWUgalF1ZXJ5ICMxMzkzNlxuXHQvLyBJRTYtOCBkbyBub3Qgc3VwcG9ydCB0aGUgZGVmYXVsdFZpZXcgcHJvcGVydHkgc28gcGFyZW50IHdpbGwgYmUgdW5kZWZpbmVkXG5cdGlmICggcGFyZW50ICYmIHBhcmVudCAhPT0gcGFyZW50LnRvcCApIHtcblx0XHQvLyBJRTExIGRvZXMgbm90IGhhdmUgYXR0YWNoRXZlbnQsIHNvIGFsbCBtdXN0IHN1ZmZlclxuXHRcdGlmICggcGFyZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblx0XHR9IGVsc2UgaWYgKCBwYXJlbnQuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRwYXJlbnQuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN1cHBvcnQgdGVzdHNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jICk7XG5cblx0LyogQXR0cmlidXRlc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gU3VwcG9ydDogSUU8OFxuXHQvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXNcblx0Ly8gKGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpXG5cdHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRpdi5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWRpdi5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIik7XG5cdH0pO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRpdi5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUNvbW1lbnQoXCJcIikgKTtcblx0XHRyZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbWF0aWNhbGx5LXNldCBuYW1lcyxcblx0Ly8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0XG5cdHN1cHBvcnQuZ2V0QnlJZCA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGRpdiApLmlkID0gZXhwYW5kbztcblx0XHRyZXR1cm4gIWRvYy5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jLmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaW5kIGFuZCBmaWx0ZXJcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zXG5cdFx0XHRcdC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjNcblx0XHRcdFx0cmV0dXJuIG0gJiYgbS5wYXJlbnROb2RlID8gWyBtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybi
9673BmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHQvLyBTdXBwb3J0OiBJRTYvN1xuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRkZWxldGUgRXhwci5maW5kW1wiSURcIl07XG5cblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0fVxuXG5cdC8vIFRhZ1xuXHRFeHByLmZpbmRbXCJUQUdcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHQvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAoYnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vXG5cdFx0XHRcdHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50c1xuXHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFtcIkNMQVNTXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7XG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0XG5cblx0Ly8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSlcblx0cmJ1Z2d5TWF0Y2hlcyA9IFtdO1xuXG5cdC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpXG5cdC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvclxuXHQvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lXG5cdC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhlIHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yXG5cdC8vIFNlZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM3OFxuXHRyYnVnZ3lRU0EgPSBbXTtcblxuXHRpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jLnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7XG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZGl2ICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxmXScgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFt
9673cIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuMissIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS43K1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiOmNoZWNrZWRcIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIjpjaGVja2VkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4K1xuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MVxuXHRcdFx0Ly8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2liaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCggXCJhI1wiICsgZXhwYW5kbyArIFwiKypcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzXG5cdFx0XHQvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnRcblx0XHRcdHZhciBpbnB1dCA9IGRvYy5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIipbKl4kfCF+XT89XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZClcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqLDp4XCIpO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIsLio6XCIpO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkge1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3Jcblx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXG5cdFx0XHRzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBkaXYsIFwiZGl2XCIgKTtcblxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvblxuXHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxuXHRcdFx0bWF0Y2hlcy5jYWxsKCBkaXYsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgZG9lcyBub3QgaW1wbGVtZW50IGluY2x1c2l2ZSBkZXNjZW5kZW50XG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybi
9673BhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkpO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCghc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHRpZiAoIGEgPT09IGRvYyB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEpICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPT09IGRvYyB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jID8gLTEgOlxuXHRcdFx0XHRiID09PSBkb2MgPyAxIDpcblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YXAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXHRcdGN1ciA9IGI7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YnAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3lcblx0XHR3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHtcblx0XHRcdGkrKztcblx0XHR9XG5cblx0XHRyZXR1cm4gaSA/XG5cdFx0XHQvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3Jcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3Rcblx0XHRcdGFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6XG5cdFx0XHQwO1xuXHR9O1xuXG5cdHJldHVybi
9673Bkb2M7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybi
9673BtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybi
9673BmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIGRpZmYsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gcGFyZW50WyBleHBhbmRvIF0gfHwgKHBhcmVudFsgZXhwYW5kbyBdID0ge30pO1xuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IG91dGVyQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMV07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBjYWNoZVswXSA9PT0gZGlycnVucyAmJiBjYWNoZVsyXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB1c2VDYWNoZSAmJiAoY2FjaGUgPSAoZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSkpWyB0eXBlIF0pICYmIGNhY2hlWzBdID09PSBkaXJydW5zICkge1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gY2FjaGVbMV07XG5cblx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLikgb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOiBub2RlLm5vZGVUeXBlID09PSAxICkgJiYgKytkaWZmICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybi
9673BmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WzBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFswXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8IFwiXCIpICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7XG5cdFx0fSxcblxuXHRcdFwiZGlzYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybi
9673Bib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0pLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1tcIm50aFwiXSA9IEV4cHIucHNldWRvc1tcImVxXCJdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybi
9673BwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9KTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCBvdXRlckNhY2hlLFxuXHRcdFx0XHRuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTtcblxuXHRcdFx0Ly8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gZGlyIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXHRcdFx0XHRcdFx0aWYgKCAob2xkQ2FjaGUgPSBvdXRlckNhY2hlWyBkaXIgXSkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZVsgZGlyIF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaG
9673VbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
9673BpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ICE9PSBkb2N1bWVudCAmJiBjb250ZXh0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gS2VlcCBgaWAgYSBzdHJpbmcgaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHNvIGBtYXRjaGVkQ291bnRgIHdpbGwgYmUgXCIwMFwiIGJlbG93XG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCB
9673oYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBubyBzZWVkIGFuZCBvbmx5IG9uZSBncm91cFxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFRha2UgYSBzaG9ydGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0c3VwcG9ydC5nZXRCeUlkICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHRcdFx0RXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kW1wiSURcIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS
96735sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwcltcIm5lZWRzQ29udGV4dFwiXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0b2tlbiA9IHRva2Vuc1tpXTtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvclxuXHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdKSApIHtcblx0XHRcdFx0Ly8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzXG5cdFx0XHRcdGlmICggKHNlZWQgPSBmaW5kKFxuXHRcdFx0XHRcdHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSxcblx0XHRcdFx0XHRyc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdFx0XHRcdCkpICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5XG5cdFx0XHRcdFx0dG9rZW5zLnNwbGljZSggaSwgMSApO1xuXHRcdFx0XHRcdHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7XG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZWVkICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuXHQvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlXG5cdCggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKShcblx0XHRzZWVkLFxuXHRcdGNvbnRleHQsXG5cdFx0IWRvY3VtZW50SXNIVE1MLFxuXHRcdHJlc3VsdHMsXG5cdFx0cnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHQpO1xuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIE9uZS10aW1lIGFzc2lnbm1lbnRzXG5cbi8vIFNvcnQgc3RhYmlsaXR5XG5zdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KFwiXCIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oXCJcIikgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYxICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGRpdjEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRkaXYuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XG5cdHJldHVybiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIiNcIiA7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRkaXYuaW5uZXJIVE1MID0gXCI8aW5wdXQvPlwiO1xuXHRkaXYuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRyZXR1cm4gZGl2LmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpID09IG51bGw7XG59KSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbW
9673UsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9KTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5qUXVlcnkuZXhwcltcIjpcIl0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xualF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcblxuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG52YXIgcnNpbmdsZVRhZyA9ICgvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPnwpJC8pO1xuXG5cblxudmFyIHJpc1NpbXBsZSA9IC9eLlteOiNcXFtcXC4sXSokLztcblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdC8qIGpzaGludCAtVzAxOCAqL1xuXHRcdFx0cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90O1xuXHRcdH0pO1xuXG5cdH1cblxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSk7XG5cblx0fVxuXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcblx0XHR9XG5cblx0XHRxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID49IDAgKSAhPT0gbm90O1xuXHR9KTtcbn1cblxualF1ZXJ5LmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xuXHR2YXIgZWxlbSA9IGVsZW1zWyAwIF07XG5cblx0aWYgKCBub3QgKSB7XG5cdFx0ZXhwciA9IFwiOm5vdChcIiArIGV4cHIgKyBcIilcIjtcblx0fVxuXG5cdHJldHVybiBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSA/XG5cdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdIDpcblx0XHRqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdFx0fSkpO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSkgKTtcblx0XHR9XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdC8vIE5lZWRlZCBiZWNhdXNlICQoIHNlbGVjdG9yLCBjb250ZXh0ICkgYmVjb21lcyAkKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKVxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZSggcmV0ICkgOiByZXQgKTtcblx0XHRyZXQuc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArIFwiIFwiICsgc2VsZWN0b3IgOiBzZWxlY3Rvcjtcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UpICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0pO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKikpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJ
9673Ch1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0aWYgKCBzZWxlY3RvclswXSA9PT0gXCI8XCIgJiYgc2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAobWF0Y2hbMV0gfHwgIWNvbnRleHQpICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWzFdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFswXSA6IGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTChcblx0XHRcdFx0XHRcdG1hdGNoWzFdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWzFdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGVcblx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWzJdICk7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBCbGFja2JlcnJ5IDQuNlxuXHRcdFx0XHRcdC8vIGdFQklEIHJldHVybnMgbm9kZXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAoIzY5NjMpXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHR0aGlzWzBdID0gZWxlbTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLmNvbnRleHQgPSBkb2N1bWVudDtcblx0XHRcdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVlcnkgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiB0eXBlb2Ygcm9vdGpRdWVyeS5yZWFkeSAhPT0gXCJ1bmRlZmluZWRcIiA/XG5cdFx0XHRcdHJvb3RqUXVlcnkucmVhZHkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0O1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaX
9673ZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cdC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0XG5cdGd1YXJhbnRlZWRVbmlxdWUgPSB7XG5cdFx0Y2hpbGRyZW46IHRydWUsXG5cdFx0Y29udGVudHM6IHRydWUsXG5cdFx0bmV4dDogdHJ1ZSxcblx0XHRwcmV2OiB0cnVlXG5cdH07XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRkaXI6IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkge1xuXHRcdHZhciBtYXRjaGVkID0gW10sXG5cdFx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtYXRjaGVkO1xuXHR9LFxuXG5cdHNpYmxpbmc6IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHRcdHZhciBtYXRjaGVkID0gW107XG5cblx0XHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRcdG1hdGNoZWQucHVzaCggbiApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVkO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksXG5cdFx0XHRsID0gdGFyZ2V0cy5sZW5ndGg7XG5cblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzW2ldICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkge1xuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdG1hdGNoZWQgPSBbXSxcblx0XHRcdHBvcyA9IHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgfHwgdHlwZW9mIHNlbGVjdG9ycyAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3JzLCBjb250ZXh0IHx8IHRoaXMuY29udGV4dCApIDpcblx0XHRcdFx0MDtcblxuXHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdGZvciAoIGN1ciA9IHRoaXNbaV07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAocG9zID9cblx0XHRcdFx0XHRwb3MuaW5kZXgoY3VyKSA+IC0xIDpcblxuXHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGN1ciwgc2VsZWN0b3JzKSkgKSB7XG5cblx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCBtYXRjaGVkICkgOiBtYXRjaGVkICk7XG5cdH0sXG5cblx0Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0XG5cdGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50XG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcblx0XHR9XG5cblx0XHQvLyBJbmRleCBpbiBzZWxlY3RvclxuXHRcdGlmICggdHlwZW9mIGVsZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50XG5cdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcyxcblxuXHRcdFx0Ly8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkXG5cdFx0XHRlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW1cblx0XHQpO1xuXHR9LFxuXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayhcblx0XHRcdGpRdWVyeS51bmlxdWUoXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdGFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxlY3Rvcilcblx0XHQpO1xuXHR9XG59KTtcblxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XG5cdHdoaWxlICggKGN1ciA9IGN1cltkaXJdKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCh7XG5cdHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xuXHR9LFxuXHRwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybi
9673BzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0cHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnNpYmxpbmcoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xuXHR9LFxuXHRjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQgKTtcblx0fSxcblx0Y29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBlbGVtLmNvbnRlbnREb2N1bWVudCB8fCBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZSggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0pO1xudmFyIHJub3R3aGl0ZSA9ICgvXFxTKy9nKTtcblxuXG5cbi8vIFN0cmluZyB0byBPYmplY3Qgb3B0aW9ucyBmb3JtYXQgY2FjaGVcbnZhciBvcHRpb25zQ2FjaGUgPSB7fTtcblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXMgYW5kIHN0b3JlIGluIGNhY2hlXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0gb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHtcblx0XHRvYmplY3RbIGZsYWcgXSA9IHRydWU7XG5cdH0pO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdCggb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOlxuXHRcdGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIC8vIExhc3QgZmlyZSB2YWx1ZSAoZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cylcblx0XHRtZW1vcnksXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXHRcdC8vIEZpcnN0IGNhbGxiYWNrIHRvIGZpcmUgKHVzZWQgaW50ZXJuYWxseSBieSBhZGQgYW5kIGZpcmVXaXRoKVxuXHRcdGZpcmluZ1N0YXJ0LFxuXHRcdC8vIEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmluZ1xuXHRcdGZpcmluZ0xlbmd0aCxcblx0XHQvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSByZW1vdmUgaWYgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4LFxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXHRcdC8vIFN0YWNrIG9mIGZpcmUgY2FsbHMgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRzdGFjayA9ICFvcHRpb25zLm9uY2UgJiYgW10sXG5cdFx0Ly8gRmlyZSBjYWxsYmFja3Ncblx0XHRmaXJlID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdFx0XHRtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhO1xuXHRcdFx0ZmlyZWQgPSB0cnVlO1xuXHRcdFx0ZmlyaW5nSW5kZXggPSBmaXJpbmdTdGFydCB8fCAwO1xuXHRcdFx0ZmlyaW5nU3RhcnQgPSAwO1xuXHRcdFx0ZmlyaW5nTGVuZ3RoID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwgZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIGRhdGFbIDAgXSwgZGF0YVsgMSBdICkgPT09IGZhbHNlICYmIG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cdFx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7IC8vIFRvIHByZXZlbnQgZnVydGhlciBjYWxscyB1c2luZyBhZGRcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XG5cdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdGlmICggc3RhY2sgKSB7XG5cdFx0XHRcdFx0aWYgKCBzdGFjay5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCBzdGFjay5zaGlmdCgpICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNlbGYuZGlzYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIH
9673RoZSBsaXN0XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0Ly8gRmlyc3QsIHdlIHNhdmUgdGhlIGN1cnJlbnQgbGVuZ3RoXG5cdFx0XHRcdFx0dmFyIHN0YXJ0ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0KGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0Ly8gRG8gd2UgbmVlZCB0byBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGVcblx0XHRcdFx0XHQvLyBjdXJyZW50IGZpcmluZyBiYXRjaD9cblx0XHRcdFx0XHRpZiAoIGZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdC8vIFdpdGggbWVtb3J5LCBpZiB3ZSdyZSBub3QgZmlyaW5nIHRoZW5cblx0XHRcdFx0XHQvLyB3ZSBzaG91bGQgY2FsbCByaWdodCBhd2F5XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nU3RhcnQgPSBzdGFydDtcblx0XHRcdFx0XHRcdGZpcmUoIG1lbW9yeSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XG5cdFx0XHRyZW1vdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdHZhciBpbmRleDtcblx0XHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nTGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlyaW5nTGVuZ3RoLS07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gPyBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDogISEoIGxpc3QgJiYgbGlzdC5sZW5ndGggKTtcblx0XHRcdH0sXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0ZmlyaW5nTGVuZ3RoID0gMDtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gSGF2ZSB0aGUgbGlzdCBkbyBub3RoaW5nIGFueW1vcmVcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsaXN0ID0gc3RhY2sgPSBtZW1vcnkgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIElzIGl0IGRpc2FibGVkP1xuXHRcdFx0ZGlzYWJsZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gTG9jayB0aGUgbGlzdCBpbiBpdHMgY3VycmVudCBzdGF0ZVxuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHN0YWNrID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgKSB7XG5cdFx0XHRcdFx0c2VsZi5kaXNhYmxlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gSXMgaXQgbG9ja2VkP1xuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFzdGFjaztcblx0XHRcdH0sXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggbGlzdCAmJiAoICFmaXJlZCB8fCBzdGFjayApICkge1xuXHRcdFx0XHRcdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRcdFx0XHRcdGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07XG5cdFx0XHRcdFx0aWYgKCBmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRzdGFjay5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGZpcmUoIGFyZ3MgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmpRdWVyeS5leHRlbmQoe1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgbGlzdGVuZXIgbGlzdCwgZmluYWwgc3RhdGVcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSwgXCJyZWplY3RlZFwiIF0sXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKFwibWVtb3J5XCIpIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybi
9673BzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZChmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIGkgXSApICYmIGZuc1sgaSBdO1xuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZFsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdIGZvciBmb3J3YXJkaW5nIGFjdGlvbnMgdG8gbmV3RGVmZXJcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzFdIF0oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oIHRoaXMgPT09IHByb21pc2UgPyBuZXdEZWZlci5wcm9taXNlKCkgOiB0aGlzLCBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdHByb21pc2UucGlwZSA9IHByb21pc2UudGhlbjtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDMgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZVsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWzFdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQvLyBzdGF0ZSA9IFsgcmVzb2x2ZWQgfCByZWplY3RlZCBdXG5cdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblxuXHRcdFx0XHQvLyBbIHJlamVjdF9saXN0IHwgcmVzb2x2ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5sb2NrXG5cdFx0XHRcdH0sIHR1cGxlc1sgaSBeIDEgXVsgMiBdLmRpc2FibGUsIHR1cGxlc1sgMiBdWyAyIF0ubG9jayApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBkZWZlcnJlZFsgcmVzb2x2ZSB8IHJlamVjdCB8IG5vdGlmeSBdXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbMF0gXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbMF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHByb21pc2UgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdICsgXCJXaXRoXCIgXSA9IGxpc3QuZmlyZVdpdGg7XG5cdFx0fSk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzdWJvcmRpbmF0ZSAvKiAsIC4uLiwgc3Vib3JkaW5hdGVOICovICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblx0XHRcdGxlbmd0aCA9IHJlc29sdmVWYWx1ZXMubGVuZ3RoLFxuXG5cdFx0XHQvLyB0aGUgY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBsZW5ndGggIT09IDEgfHwgKCBzdWJvcmRpbmF0ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggc3Vib3JkaW5hdGUucHJvbWlzZSApICkgPyBsZW5ndGggOiAwLFxuXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkLiBJZiByZXNvbHZlVmFsdWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNpbmdsZSBEZWZlcnJlZCwganVzdCB1c2UgdGhhdC5cblx0XHRcdGRlZmVycmVkID0gcmVtYWluaW5nID09PSAxID8gc3Vib3JkaW5hdGUgOiBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gVXBkYXRlIGZ1bmN0aW9uIGZvciBib3RoIHJl
9673c29sdmUgYW5kIHByb2dyZXNzIHZhbHVlc1xuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpLCBjb250ZXh0cywgdmFsdWVzICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdGNvbnRleHRzWyBpIF0gPSB0aGlzO1xuXHRcdFx0XHRcdHZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggdmFsdWVzID09PSBwcm9ncmVzc1ZhbHVlcyApIHtcblx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGNvbnRleHRzLCB2YWx1ZXMgKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNvbnRleHRzLCB2YWx1ZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXG5cdFx0XHRwcm9ncmVzc1ZhbHVlcywgcHJvZ3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNvbnRleHRzO1xuXG5cdFx0Ly8gQWRkIGxpc3RlbmVycyB0byBEZWZlcnJlZCBzdWJvcmRpbmF0ZXM7IHRyZWF0IG90aGVycyBhcyByZXNvbHZlZFxuXHRcdGlmICggbGVuZ3RoID4gMSApIHtcblx0XHRcdHByb2dyZXNzVmFsdWVzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdHByb2dyZXNzQ29udGV4dHMgPSBuZXcgQXJyYXkoIGxlbmd0aCApO1xuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0ucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHQuZG9uZSggdXBkYXRlRnVuYyggaSwgcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICkgKVxuXHRcdFx0XHRcdFx0LmZhaWwoIGRlZmVycmVkLnJlamVjdCApXG5cdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIHVwZGF0ZUZ1bmMoIGksIHByb2dyZXNzQ29udGV4dHMsIHByb2dyZXNzVmFsdWVzICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQtLXJlbWFpbmluZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElmIHdlJ3JlIG5vdCB3YWl0aW5nIG9uIGFueXRoaW5nLCByZXNvbHZlIHRoZSBtYXN0ZXJcblx0XHRpZiAoICFyZW1haW5pbmcgKSB7XG5cdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTtcblx0fVxufSk7XG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0O1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cdC8vIEFkZCB0aGUgY2FsbGJhY2tcblx0alF1ZXJ5LnJlYWR5LnByb21pc2UoKS5kb25lKCBmbiApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVudFxuXHRob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkge1xuXHRcdGlmICggaG9sZCApIHtcblx0XHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0XHR9IGVsc2Uge1xuXHRcdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2ZW50c1xuXHRcdGlmICggalF1ZXJ5LmZuLnRyaWdnZXJIYW5kbGVyICkge1xuXHRcdFx0alF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXJIYW5kbGVyKCBcInJlYWR5XCIgKTtcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS5vZmYoIFwicmVhZHlcIiApO1xuXHRcdH1cblx0fVxufSk7XG5cbi8qKlxuICogVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbiAqL1xuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkLCBmYWxzZSApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbmpRdWVyeS5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24oIG9iaiApIHtcblx0aWYgKCAhcmVhZHlMaXN0ICkge1xuXG5cdFx0cmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cblx0XHQvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZCBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cblx0XHQvLyBXZSBvbmNlIHRyaWVkIHRvIHVzZSByZWFkeVN0YXRlIFwiaW50ZXJhY3RpdmVcIiBoZXJlLCBidXQgaXQgY2F1c2VkIGlzc3VlcyBsaWtlIHRoZSBvbmVcblx0XHQvLyBkaXNjb3ZlcmVkIGJ5IENocmlzUyBoZXJlOiBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjI4MiNjb21tZW50OjE1XG5cdFx0aWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgKSB7XG5cdFx0XHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0XHRcdHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRcdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblxuXHRcdFx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0XHRcdHdpbmRvdy5hZGR
9673FdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVhZHlMaXN0LnByb21pc2UoIG9iaiApO1xufTtcblxuLy8gS2ljayBvZmYgdGhlIERPTSByZWFkeSBjaGVjayBldmVuIGlmIHRoZSB1c2VyIGRvZXMgbm90XG5qUXVlcnkucmVhZHkucHJvbWlzZSgpO1xuXG5cblxuXG4vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cbi8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvblxudmFyIGFjY2VzcyA9IGpRdWVyeS5hY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblx0XHRmb3IgKCBpIGluIGtleSApIHtcblx0XHRcdGpRdWVyeS5hY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5W2ldLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmF3ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGJ1bGsgKSB7XG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbiggZWxlbXNbaV0sIGtleSwgcmF3ID8gdmFsdWUgOiB2YWx1ZS5jYWxsKCBlbGVtc1tpXSwgaSwgZm4oIGVsZW1zW2ldLCBrZXkgKSApICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNoYWluYWJsZSA/XG5cdFx0ZWxlbXMgOlxuXG5cdFx0Ly8gR2V0c1xuXHRcdGJ1bGsgP1xuXHRcdFx0Zm4uY2FsbCggZWxlbXMgKSA6XG5cdFx0XHRsZW4gPyBmb
9673iggZWxlbXNbMF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVjdCBjYW4gaGF2ZSBkYXRhXG4gKi9cbmpRdWVyeS5hY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0LyoganNoaW50IC1XMDE4ICovXG5cdHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTtcbn07XG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LFxuXHQvLyBPbGQgV2ViS2l0IGRvZXMgbm90IGhhdmUgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zL2ZyZWV6ZSBtZXRob2QsXG5cdC8vIHJldHVybiBuZXcgZW1wdHkgb2JqZWN0IGluc3RlYWQgd2l0aCBubyBbW3NldF1dIGFjY2Vzc29yXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcy5jYWNoZSA9IHt9LCAwLCB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cdH0pO1xuXG5cdHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKztcbn1cblxuRGF0YS51aWQgPSAxO1xuRGF0YS5hY2NlcHRzID0galF1ZXJ5LmFjY2VwdERhdGE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXHRrZXk6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHQvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2Vycyxcblx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LlxuXHRcdC8vIEFsd2F5cyByZXR1cm4gdGhlIGtleSBmb3IgYSBmcm96ZW4gb2JqZWN0LlxuXHRcdGlmICggIURhdGEuYWNjZXB0cyggb3duZXIgKSApIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBkZXNjcmlwdG9yID0ge30sXG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGUga2V5XG5cdFx0XHR1bmxvY2sgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF1bmxvY2sgKSB7XG5cdFx0XHR1bmxvY2sgPSBEYXRhLnVpZCsrO1xuXG5cdFx0XHQvLyBTZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSwgbm9uLXdyaXRhYmxlIHByb3BlcnR5XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkZXNjcmlwdG9yWyB0aGlzLmV4cGFuZG8gXSA9IHsgdmFsdWU6IHVubG9jayB9O1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggb3duZXIsIGRlc2NyaXB0b3IgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0XG5cdFx0XHQvLyBGYWxsYmFjayB0byBhIGxlc3Mgc2VjdXJlIGRlZmluaXRpb25cblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRkZXNjcmlwdG9yWyB0aGlzLmV4cGFuZG8gXSA9IHVubG9jaztcblx0XHRcdFx0alF1ZXJ5LmV4dGVuZCggb3duZXIsIGRlc2NyaXB0b3IgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgdGhlIGNhY2hlIG9iamVjdFxuXHRcdGlmICggIXRoaXMuY2FjaGVbIHVubG9jayBdICkge1xuXHRcdFx0dGhpcy5jYWNoZVsgdW5sb2NrIF0gPSB7fTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdW5sb2NrO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHQvLyBUaGVyZSBtYXkgYmUgYW4gdW5sb2NrIGFzc2lnbmVkIHRvIHRoaXMgbm9kZSxcblx0XHRcdC8vIGlmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciB0aGlzIFwib3duZXJcIiwgY3JlYXRlIG9uZSBpbmxpbmVcblx0XHRcdC8vIGFuZCBzZXQgdGhlIHVubG9jayBhcyB0aG91Z2ggYW4gb3duZXIgZW50cnkgaGFkIGFsd2F5cyBleGlzdGVkXG5cdFx0XHR1bmxvY2sgPSB0aGlzLmtleSggb3duZXIgKSxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZVsgdW5sb2NrIF07XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUg
9673XSBhcmdzXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBkYXRhIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEZyZXNoIGFzc2lnbm1lbnRzIGJ5IG9iamVjdCBhcmUgc2hhbGxvdyBjb3BpZWRcblx0XHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5leHRlbmQoIHRoaXMuY2FjaGVbIHVubG9jayBdLCBkYXRhICk7XG5cdFx0XHQvLyBPdGhlcndpc2UsIGNvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBwcm9wIGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0Y2FjaGVbIHByb3AgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGU7XG5cdH0sXG5cdGdldDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0Ly8gRWl0aGVyIGEgdmFsaWQgY2FjaGUgaXMgZm91bmQsIG9yIHdpbGwgYmUgY3JlYXRlZC5cblx0XHQvLyBOZXcgY2FjaGVzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlIHVubG9jayByZXR1cm5lZCxcblx0XHQvLyBhbGxvd2luZyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkXG5cdFx0Ly8gZW1wdHkgZGF0YSBvYmplY3QuIEEgdmFsaWQgb3duZXIgb2JqZWN0IG11c3QgYmUgcHJvdmlkZWQuXG5cdFx0dmFyIGNhY2hlID0gdGhpcy5jYWNoZVsgdGhpcy5rZXkoIG93bmVyICkgXTtcblxuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRjYWNoZSA6IGNhY2hlWyBrZXkgXTtcblx0fSxcblx0YWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIHN0b3JlZDtcblx0XHQvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkXG5cdFx0Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkXG5cdFx0Ly9cblx0XHQvLyBUYWtlIHRoZSBcInJlYWRcIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmVcblx0XHQvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0XG5cdFx0Ly8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleVxuXHRcdC8vXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQoKGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSApIHtcblxuXHRcdFx0c3RvcmVkID0gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblxuXHRcdFx0cmV0dXJuIHN0b3JlZCAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0c3RvcmVkIDogdGhpcy5nZXQoIG93bmVyLCBqUXVlcnkuY2FtZWxDYXNlKGtleSkgKTtcblx0XHR9XG5cblx0XHQvLyBbKl1XaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGNhbWVsLFxuXHRcdFx0dW5sb2NrID0gdGhpcy5rZXkoIG93bmVyICksXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGVbIHVubG9jayBdO1xuXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHRoaXMuY2FjaGVbIHVubG9jayBdID0ge307XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIGtleSApICkge1xuXHRcdFx0XHQvLyBJZiBcIm5hbWVcIiBpcyBhbiBhcnJheSBvZiBrZXlzLi4uXG5cdFx0XHRcdC8vIFdoZW4gZGF0YSBpcyBpbml0aWFsbHkgY3JlYXRlZCwgdmlhIChcImtleVwiLCBcInZhbFwiKSBzaWduYXR1cmUsXG5cdFx0XHRcdC8vIGtleXMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlLlxuXHRcdFx0XHQvLyBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gdGVsbCBfaG93XyBhIGtleSB3YXMgYWRkZWQsIHJlbW92ZVxuXHRcdFx0XHQvLyBib3RoIHBsYWluIGtleSBhbmQgY2FtZWxDYXNlIGtleS4gIzEyNzg2XG5cdFx0XHRcdC8vIFRoaXMgd2lsbCBvbmx5IHBlbmFsaXplIHRoZSBhcnJheSBhcmd1bWVudCBwYXRoLlxuXHRcdFx0XHRuYW1lID0ga2V5LmNvbmNhdCgga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjYW1lbCA9IGpRdWVyeS5jYW1lbENhc2UoIGtleSApO1xuXHRcdFx0XHQvLyBUcnkgdGhlIHN0cmluZyBhcyBhIGtleSBiZWZvcmUgYW55IG1hbmlwdWxhdGlvblxuXHRcdFx0XHRpZiAoIGtleSBpbiBjYWNoZSApIHtcblx0XHRcdFx0XHRuYW1lID0gWyBrZXksIGNhbWVsIF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0bmFtZSA9IGNhbWVsO1xuXHRcdFx0XHRcdG5hbW
9673UgPSBuYW1lIGluIGNhY2hlID9cblx0XHRcdFx0XHRcdFsgbmFtZSBdIDogKCBuYW1lLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBuYW1lLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIG5hbWVbIGkgXSBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHJldHVybiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoXG5cdFx0XHR0aGlzLmNhY2hlWyBvd25lclsgdGhpcy5leHBhbmRvIF0gXSB8fCB7fVxuXHRcdCk7XG5cdH0sXG5cdGRpc2NhcmQ6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHRpZiAoIG93bmVyWyB0aGlzLmV4cGFuZG8gXSApIHtcblx0XHRcdGRlbGV0ZSB0aGlzLmNhY2hlWyBvd25lclsgdGhpcy5leHBhbmRvIF0gXTtcblx0XHR9XG5cdH1cbn07XG52YXIgZGF0YV9wcml2ID0gbmV3IERhdGEoKTtcblxudmFyIGRhdGFfdXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvKFtBLVpdKS9nO1xuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJDFcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGRhdGEgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6XG5cdFx0XHRcdFx0ZGF0YSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOlxuXHRcdFx0XHRcdGRhdGEgPT09IFwibnVsbFwiID8gbnVsbCA6XG5cdFx0XHRcdFx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0XHRcdFx0XHQrZGF0YSArIFwiXCIgPT09IGRhdGEgPyArZGF0YSA6XG5cdFx0XHRcdFx0cmJyYWNlLnRlc3QoIGRhdGEgKSA/IGpRdWVyeS5wYXJzZUpTT04oIGRhdGEgKSA6XG5cdFx0XHRcdFx0ZGF0YTtcblx0XHRcdH0gY2F0Y2goIGUgKSB7fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXJcblx0XHRcdGRhdGFfdXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkYXRhX3VzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFfcHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFfdXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhX3VzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YV9wcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFfdXNlci5nZXQoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFfcHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTExK1xuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbW
9673UgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSg1KSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhX3ByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhX3VzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhLFxuXHRcdFx0XHRjYW1lbEtleSA9IGpRdWVyeS5jYW1lbENhc2UoIGtleSApO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gd2l0aCB0aGUga2V5IGFzLWlzXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIHdpdGggdGhlIGtleSBjYW1lbGl6ZWRcblx0XHRcdFx0ZGF0YSA9IGRhdGFfdXNlci5nZXQoIGVsZW0sIGNhbWVsS2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGNhbWVsS2V5LCB1bmRlZmluZWQgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIEZpcnN0LCBhdHRlbXB0IHRvIHN0b3JlIGEgY29weSBvciByZWZlcmVuY2Ugb2YgYW55XG5cdFx0XHRcdC8vIGRhdGEgdGhhdCBtaWdodCd2ZSBiZWVuIHN0b3JlIHdpdGggYSBjYW1lbENhc2VkIGtleS5cblx0XHRcdFx0dmFyIGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCB0aGlzLCBjYW1lbEtleSApO1xuXG5cdFx0XHRcdC8vIEZvciBIVE1MNSBkYXRhLSogYXR0cmlidXRlIGludGVyb3AsIHdlIGhhdmUgdG9cblx0XHRcdFx0Ly8gc3RvcmUgcHJvcGVydHkgbmFtZXMgd2l0aCBkYXNoZXMgaW4gYSBjYW1lbENhc2UgZm9ybS5cblx0XHRcdFx0Ly8gVGhpcyBtaWdodCBub3QgYXBwbHkgdG8gYWxsIHByb3BlcnRpZXMuLi4qXG5cdFx0XHRcdGRhdGFfdXNlci5zZXQoIHRoaXMsIGNhbWVsS2V5LCB2YWx1ZSApO1xuXG5cdFx0XHRcdC8vICouLi4gSW4gdGhlIGNhc2Ugb2YgcHJvcGVydGllcyB0aGF0IG1pZ2h0IF9hY3R1YWxseV9cblx0XHRcdFx0Ly8gaGF2ZSBkYXNoZXMsIHdlIG5lZWQgdG8gYWxzbyBzdG9yZSBhIGNvcHkgb2YgdGhhdFxuXHRcdFx0XHQvLyB1bmNoYW5nZWQgcHJvcGVydHkuXG5cdFx0XHRcdGlmICgga2V5LmluZGV4T2YoXCItXCIpICE9PSAtMSAmJiBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0ZGF0YV91c2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhX3VzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9KTtcblx0fVxufSk7XG5cblxualF1ZXJ5LmV4dGVuZCh7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhX3ByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoZGF0YSkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybi
9673BxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YV9wcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YV9wcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLmFkZChmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSlcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1swXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWzBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhX3ByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59KTtcbnZhciBwbnVtID0gKC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvKS5zb3VyY2U7XG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXHRcdC8vIGlzSGlkZGVuIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgPT09IFwibm9uZVwiIHx8ICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXHR9O1xuXG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoL14oPzpjaGVja2JveHxyYWRpbykkL2kpO1xuXG5cblxuKGZ1bmN0aW9uKCkge1xuXHR2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0ZGl2ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApLFxuXHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cblx0Ly8gU3VwcG9ydDogU2FmYXJpPD01LjFcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWR
9673pb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaTw9NS4xLCBBbmRyb2lkPDQuMlxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0pKCk7XG52YXIgc3RydW5kZWZpbmVkID0gdHlwZW9mIHVuZGVmaW5lZDtcblxuXG5cbnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXJcblx0cmtleUV2ZW50ID0gL15rZXkvLFxuXHRybW91c2VFdmVudCA9IC9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLFxuXHRyZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxcblx0cnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcXC4oLispfCkkLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyICkgeyB9XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YV9wcml2LmdldCggZWxlbSApO1xuXG5cdFx0Ly8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cylcblx0XHRpZiAoICFlbGVtRGF0YSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXJcblx0XHRpZiAoIGhhbmRsZXIuaGFuZGxlciApIHtcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcblx0XHRcdGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyO1xuXHRcdFx0c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rvcjtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoICEoZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUpICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gc3RydW5kZWZpbmVkICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWzJdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eX
9673BlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoe1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbihcIi5cIilcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHwgc3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUsIGZhbHNlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YV9wcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhX3ByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWzJdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudFxuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTtcblx0XHRcdHRtcCA9IHRtcFsyXSAmJiBuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8IHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgZXZlbnRzWyB0eXBlIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcblx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHtcblx0XHRcdGRlbGV0ZSBlbGVtRGF0YS5oYW5kbGU7XG5cdFx0XHRkYXRhX3ByaXYucmVtb3ZlKCBlbGVtLCBcImV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdChcIi5cIikgOiBbXTtcblxuXHRcdGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3dcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoXCIuXCIpID49IDAgKSB7XG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eX
9673BlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdChcIi5cIik7XG5cdFx0XHR0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpO1xuXHRcdFx0bmFtZXNwYWNlcy5zb3J0KCk7XG5cdFx0fVxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZihcIjpcIikgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbihcIi5cIik7XG5cdFx0ZXZlbnQubmFtZXNwYWNlX3JlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09IChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKGN1ciA9IGV2ZW50UGF0aFtpKytdKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YV9wcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmIGRhdGFfcHJpdi5nZXQoIGN1ciwgXCJoYW5kbGVcIiApO1xuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XG5cdFx0XHRcdGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5hdGl2ZSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTtcblx0XHRcdGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgKSB7XG5cdFx0XHRcdGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGV2ZW50LnR5cGUgPSB0eXBlO1xuXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cblx0XHRcdGlmICggKCFzcGVjaWFsLl9kZWZhdWx0IHx8IHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSkgJiZcblx0XHRcdFx0alF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHtcblxuXHRcdFx0XHQvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2Rcblx0XHRcdFx0XHR0bXAgPSBlbGVtWyBvbnR5cGUgXTtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7XG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApO1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cdFx0XHRoYW5kbGVycyA9ICggZGF0YV9wcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgP
9673SBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWzBdID0gZXZlbnQ7XG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAobWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0pICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoIChoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSkgJiYgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdFx0Ly8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvciAyKSBoYXZlIG5hbWVzcGFjZShzKVxuXHRcdFx0XHQvLyBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNlKS5cblx0XHRcdFx0aWYgKCAhZXZlbnQubmFtZXNwYWNlX3JlIHx8IGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9KS5oYW5kbGUgfHwgaGFuZGxlT2JqLmhhbmRsZXIgKVxuXHRcdFx0XHRcdFx0XHQuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKGV2ZW50LnJlc3VsdCA9IHJldCkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXG5cdFx0aWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHtcblx0XHRcdHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgaSwgbWF0Y2hlcywgc2VsLCBoYW5kbGVPYmosXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICgjMTMxODApXG5cdFx0Ly8gQXZvaWQgbm9uLWxlZnQtY2xpY2sgYnViYmxpbmcgaW4gRmlyZWZveCAoIzM4NjEpXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmIGN1ci5ub2RlVHlwZSAmJiAoIWV2ZW50LmJ1dHRvbiB8fCBldmVudC50eXBlICE9PSBcImNsaWNrXCIpICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIuZGlzYWJsZWQgIT09IHRydWUgfHwgZXZlbnQudHlwZSAhPT0gXCJjbGlja1wiICkge1xuXHRcdFx0XHRcdG1hdGNoZXMgPSBbXTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID49IDAgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZXMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVzIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFkZCB0aGUgcmVtYWluaW5nIC
9673hkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnNcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCh7IGVsZW06IHRoaXMsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYW5kbGVyUXVldWU7XG5cdH0sXG5cblx0Ly8gSW5jbHVkZXMgc29tZSBldmVudCBwcm9wcyBzaGFyZWQgYnkgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnRcblx0cHJvcHM6IFwiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoXCIuc3BsaXQoXCIgXCIpLFxuXG5cdGZpeEhvb2tzOiB7fSxcblxuXHRrZXlIb29rczoge1xuXHRcdHByb3BzOiBcImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGVcIi5zcGxpdChcIiBcIiksXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xuXG5cdFx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRcdGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCApIHtcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXHR9LFxuXG5cdG1vdXNlSG9va3M6IHtcblx0XHRwcm9wczogXCJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnRcIi5zcGxpdChcIiBcIiksXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xuXHRcdFx0dmFyIGV2ZW50RG9jLCBkb2MsIGJvZHksXG5cdFx0XHRcdGJ1dHRvbiA9IG9yaWdpbmFsLmJ1dHRvbjtcblxuXHRcdFx0Ly8gQ2FsY3VsYXRlIHBhZ2VYL1kgaWYgbWlzc2luZyBhbmQgY2xpZW50WC9ZIGF2YWlsYWJsZVxuXHRcdFx0aWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIG9yaWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHtcblx0XHRcdFx0ZXZlbnREb2MgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcblx0XHRcdFx0ZG9jID0gZXZlbnREb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0XHRib2R5ID0gZXZlbnREb2MuYm9keTtcblxuXHRcdFx0XHRldmVudC5wYWdlWCA9IG9yaWdpbmFsLmNsaWVudFggKyAoIGRvYyAmJiBkb2Muc2Nyb2xsTGVmdCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAwICk7XG5cdFx0XHRcdGV2ZW50LnBhZ2VZID0gb3JpZ2luYWwuY2xpZW50WSArICggZG9jICYmIGRvYy5zY3JvbGxUb3AgIHx8IGJvZHkgJiYgYm9keS5zY3JvbGxUb3AgIHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRUb3AgIHx8IGJvZHkgJiYgYm9keS5jbGllbnRUb3AgIHx8IDAgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodFxuXHRcdFx0Ly8gTm90ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBkb24ndCB1c2UgaXRcblx0XHRcdGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRldmVudC53aGljaCA9ICggYnV0dG9uICYgMSA/IDEgOiAoIGJ1dHRvbiAmIDIgPyAzIDogKCBidXR0b24gJiA0ID8gMiA6IDAgKSApICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBldmVudDtcblx0XHR9XG5cdH0sXG5cblx0Zml4OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0aWYgKCBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSApIHtcblx0XHRcdHJldHVybiBldmVudDtcblx0XHR9XG5cblx0XHQvLyBDcmVhdGUgYSB3cml0YWJsZSBjb3B5IG9mIHRoZSBldmVudCBvYmplY3QgYW5kIG5vcm1hbGl6ZSBzb21lIHByb3BlcnRpZXNcblx0XHR2YXIgaSwgcHJvcCwgY29weSxcblx0XHRcdHR5cGUgPSBldmVudC50eXBlLFxuXHRcdFx0b3JpZ2luYWxFdmVudCA9IGV2ZW50LFxuXHRcdFx0Zml4SG9vayA9IHRoaXMuZml4SG9va3NbIHR5cGUgXTtcblxuXHRcdGlmICggIWZpeEhvb2sgKSB7XG5cdFx0XHR0aGlzLmZpeEhvb2tzWyB0eXBlIF0gPSBmaXhIb29rID1cblx0XHRcdFx0cm1vdXNlRXZlbnQudGVzdCggdHlwZSApID8gdGhpcy5tb3VzZUhvb2tzIDpcblx0XHRcdFx0cmtleUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMua2V5SG9va3MgOlxuXHRcdFx0XHR7fTtcblx0XHR9XG5cdFx0Y29weSA9IGZpeEhvb2sucHJvcHMgPyB0aGlzLnByb3BzLmNvbmNhdCggZml4SG9vay5wcm9wcyApIDogdGhpcy5wcm9wcztcblxuXHRcdGV2ZW50ID0gbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApO1xuXG5cdFx0aSA9IGNvcHkubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0cHJvcCA9IGNvcHlbIGkgXTtcblx0XHRcdGV2ZW50WyBwcm9wIF0gPSBvcmlnaW5hbEV2ZW50WyBwcm9wIF07XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogQ29yZG92YSAyLjUgKFdlYktpdCkgKCMxMzI1NSlcblx0XHQvLyBBbGwgZXZlbnRzIHNob3VsZCBoYXZlIGEgdGFyZ2V0OyBDb3Jkb3ZhIGRldmljZXJlYWR5IGRvZXNuJ3Rcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBkb2N1bWVudDtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgNi4wKywgQ2hyb21lPDI4XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0Mylcblx0XHRpZiAoIGV2ZW50LnRhcmdldC5ub2RlVHlwZSA9PT0gMyApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGV2ZW50LnRhcmdldC5wYXJlbnROb2RlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmaXhIb29rLmZpbHRlciA/IGZpeEhvb2suZmlsdGVyKCBldmVudCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcblx0XHRcdG5vQnViYmxlOiB0cnVlXG5cdFx0fSxcblx0XHRmb2N1czoge1xuXHRcdFx0Ly8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0XHRcdHJldHVybi
9673BmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c2luXCJcblx0XHR9LFxuXHRcdGJsdXI6IHtcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkge1xuXHRcdFx0XHRcdHRoaXMuYmx1cigpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c291dFwiXG5cdFx0fSxcblx0XHRjbGljazoge1xuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR0aGlzLmNsaWNrKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgZG9uJ3QgZmlyZSBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQsIGJ1YmJsZSApIHtcblx0XHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmUuXG5cdFx0Ly8gRmFrZSBvcmlnaW5hbEV2ZW50IHRvIGF2b2lkIGRvbm9yJ3Mgc3RvcFByb3BhZ2F0aW9uLCBidXQgaWYgdGhlXG5cdFx0Ly8gc2ltdWxhdGVkIGV2ZW50IHByZXZlbnRzIGRlZmF1bHQgdGhlbiB3ZSBkbyB0aGUgc2FtZSBvbiB0aGUgZG9ub3IuXG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlLFxuXHRcdFx0XHRvcmlnaW5hbEV2ZW50OiB7fVxuXHRcdFx0fVxuXHRcdCk7XG5cdFx0aWYgKCBidWJibGUgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guY2FsbCggZWxlbSwgZSApO1xuXHRcdH1cblx0XHRpZiAoIGUuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUsIGZhbHNlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQpICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGlzRGVmYXVsdFByZXZlbn
9673RlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnByZXZlbnREZWZhdWx0ICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmIGUuc3RvcFByb3BhZ2F0aW9uICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTUrXG5qUXVlcnkuZWFjaCh7XG5cdG1vdXNlZW50ZXI6IFwibW91c2VvdmVyXCIsXG5cdG1vdXNlbGVhdmU6IFwibW91c2VvdXRcIixcblx0cG9pbnRlcmVudGVyOiBcInBvaW50ZXJvdmVyXCIsXG5cdHBvaW50ZXJsZWF2ZTogXCJwb2ludGVyb3V0XCJcbn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7XG5cdFx0ZGVsZWdhdGVUeXBlOiBmaXgsXG5cdFx0YmluZFR5cGU6IGZpeCxcblxuXHRcdGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIHJldCxcblx0XHRcdFx0dGFyZ2V0ID0gdGhpcyxcblx0XHRcdFx0cmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQsXG5cdFx0XHRcdGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajtcblxuXHRcdFx0Ly8gRm9yIG1vdXNlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LlxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcblx0XHRcdGlmICggIXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSkgKSB7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7XG5cdFx0XHRcdHJldCA9IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGZpeDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3gsIENocm9tZSwgU2FmYXJpXG4vLyBDcmVhdGUgXCJidWJibGluZ1wiIGZvY3VzIGFuZCBibHVyIGV2ZW50c1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luQnViYmxlcyApIHtcblx0alF1ZXJ5LmVhY2goeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSwgdHJ1ZSApO1xuXHRcdFx0fTtcblxuXHRcdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHtcblx0XHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YV9wcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSk7XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgLypJTlRFUk5BTCovIG9uZSApIHtcblx0XHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdFx0Ly8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzXG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdFx0ZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7XG5cdFx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdFx0dGhpcy5vbiggdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0aWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHtcblx0XHRcdC8vICggdHlwZXMsIGZuIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcblx0XHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRcdGZuID0gZGF0YTtcblx0XHRcdFx0ZGF0YSA9IHNlbGVjdG9yO1xuXHRcdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoICFmbiApIHtcblx0XHRcdHJldHVybi
9673B0aGlzO1xuXHRcdH1cblxuXHRcdGlmICggb25lID09PSAxICkge1xuXHRcdFx0b3JpZ0ZuID0gZm47XG5cdFx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRcdGpRdWVyeSgpLm9mZiggZXZlbnQgKTtcblx0XHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHR9O1xuXHRcdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRcdGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTtcblx0XHR9KTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApO1xuXHR9LFxuXHRvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkge1xuXHRcdHZhciBoYW5kbGVPYmosIHR5cGU7XG5cdFx0aWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7XG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID8gaGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDogaGFuZGxlT2JqLm9yaWdUeXBlLFxuXHRcdFx0XHRoYW5kbGVPYmouc2VsZWN0b3IsXG5cdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSk7XG5cdH0sXG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSk7XG5cdH0sXG5cdHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgZWxlbSA9IHRoaXNbMF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59KTtcblxuXG52YXJcblx0cnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1xcdzpdKylbXj5dKilcXC8+L2dpLFxuXHRydGFnTmFtZSA9IC88KFtcXHc6XSspLyxcblx0cmh0bWwgPSAvPHwmIz9cXHcrOy8sXG5cdHJub0lubmVyaHRtbCA9IC88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksXG5cdC8vIGNoZWNrZWQ9XCJjaGVja2VkXCIgb3IgY2hlY2tlZFxuXHRyY2hlY2tlZCA9IC9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2ksXG5cdHJzY3JpcHRUeXBlID0gL14kfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxcblx0cnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcXC8oLiopLyxcblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nLFxuXG5cdC8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICgjMTMyMDApXG5cdHdyYXBNYXAgPSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRTlcblx0XHRvcHRpb246IFsgMSwgXCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+XCIsIFwiPC9zZWxlY3Q+XCIgXSxcblxuXHRcdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0XHRjb2w6IFsgMiwgXCI8dGFibGU+PGNvbGdyb3VwPlwiLCBcIjwvY29sZ3JvdXA+PC90YWJsZT5cIiBdLFxuXHRcdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0XHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0XHRfZGVmYXVsdDogWyAwLCBcIlwiLCBcIlwiIF1cblx0fTtcblxuLy8gU3VwcG9ydDogSUU5XG53cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247XG5cbndyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7XG53cmFwTWFwLnRoID0gd3JhcE1hcC50ZDtcblxuLy8gU3VwcG9ydDogMS54IGNvbXBhdGliaWxpdHlcbi8vIE1hbmlwdWxhdGluZyB0YWJsZXMgcmVxdWlyZXMgYSB0Ym9keVxuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdGpRdWVyeS5ub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSA/XG5cblx0XHRlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGJvZHlcIilbMF0gfHxcblx0XHRcdGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGJvZHlcIikgKSA6XG5cdFx0ZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSAhPT0gbnVsbCkgKyBcIi9cIiArIGVsZW0udHlwZTtcblx0cmV0dXJuIGVsZW07XG59XG5mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkge1xuXHR2YXIgbWF0Y2ggPSByc2NyaXB0VHlwZU1hc2tlZC5leGVjKCBlbGVtLnR5cGUgKTtcblxuXHRpZiAoIG1hdGNoICkge1xuXHRcdGVsZW0udHlwZSA9IG1hdGNoWyAxIF07XG5cdH0gZWxzZSB7XG5cdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YV9wcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sIFwiZ2xvYmFsRXZhbFwiLCAhcmVmRWxlbWVudHMgfHwgZGF0YV9wcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywgZGVzdCApIHtcblx0dmFyIGksIGwsIHR5cGUsIHBkYXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7XG5cblx0aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuXG5cdGlmICggZGF0YV9wcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YV9wcml2LmFjY2Vzcyggc3JjICk7XG5cdFx0cGRhdGFDdXIgPSBkYXRhX3ByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApO1xuXHRcdGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50cztcblxuXHRcdGlmICggZXZlbnRzICkge1xuXHRcdFx0ZGVsZXRlIHBkYXRhQ3VyLmhhbmRsZTtcblx0XHRcdHBkYXRhQ3VyLmV2ZW50cyA9IHt9O1xuXG5cdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gMi4gQ29weSB1c2VyIGRhdGFcblx0aWYgKCBkYXRhX3VzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhX3VzZXIuYWNjZXNzKCBzcmMgKTtcblx0XHR1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApO1xuXG5cdFx0ZGF0YV91c2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHtcblx0dmFyIHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKSA6XG5cdFx0XHRjb250ZXh0LnF1
9673ZXJ5U2VsZWN0b3JBbGwgPyBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApIDpcblx0XHRcdFtdO1xuXG5cdHJldHVybiB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSA/XG5cdFx0alF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICkgOlxuXHRcdHJldDtcbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cdGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0dmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsXG5cdFx0XHRjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksXG5cdFx0XHRpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cDovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRidWlsZEZyYWdtZW50OiBmdW5jdGlvbiggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiApIHtcblx0XHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLFxuXHRcdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRcdG5vZGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdFx0Ly8gQWRkIG5vZGVzIGRpcmVjdGx5XG5cdFx0XHRcdGlmICggalF1ZXJ5LnR5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBRdFdlYktpdCwgUGhhbnRvbUpTXG5cdFx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0XHQvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGVcblx0XHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0XHQvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXNcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudChcImRpdlwiKSApO1xuXG5cdFx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O
96731xuXHRcdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBlbGVtLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdFx0Ly8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50XG5cdFx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHRcdHRtcCA9IHRtcC5sYXN0Q2hpbGQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXQsIFBoYW50b21KU1xuXHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApO1xuXG5cdFx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdFx0Ly8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAoIzEyMzkyKVxuXHRcdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50XG5cdFx0ZnJhZ21lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoZWxlbSA9IG5vZGVzWyBpKysgXSkgKSB7XG5cblx0XHRcdC8vICM0MDg3IC0gSWYgb3JpZ2luIGFuZCBkZXN0aW5hdGlvbiBlbGVtZW50cyBhcmUgdGhlIHNhbWUsIGFuZCB0aGlzIGlzXG5cdFx0XHQvLyB0aGF0IGVsZW1lbnQsIGRvIG5vdCBkbyBhbnl0aGluZ1xuXHRcdFx0aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApICE9PSAtMSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0XHR0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksIFwic2NyaXB0XCIgKTtcblxuXHRcdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdFx0aWYgKCBjb250YWlucyApIHtcblx0XHRcdFx0c2V0R2xvYmFsRXZhbCggdG1wICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRcdGlmICggc2NyaXB0cyApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSB0bXBbIGorKyBdKSApIHtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZnJhZ21lbnQ7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsIGtleSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IGVsZW1zWyBpIF0pICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdFx0a2V5ID0gZWxlbVsgZGF0YV9wcml2LmV4cGFuZG8gXTtcblxuXHRcdFx0XHRpZiAoIGtleSAmJiAoZGF0YSA9IGRhdGFfcHJpdi5jYWNoZVsga2V5IF0pICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIGRhdGFfcHJpdi5jYWNoZVsga2V5IF0gKSB7XG5cdFx0XHRcdFx0XHQvLyBEaXNjYXJkIGFueSByZW1haW5pbmcgYHByaXZhdGVgIGRhdGFcblx0XHRcdFx0XHRcdGRlbGV0ZSBkYXRhX3ByaXYuY2FjaGVbIGtleSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gRGlzY2FyZCBhbnkgcmVtYWluaW5nIGB1c2VyYCBkYXRhXG5cdFx0XHRkZWxldGUgZGF0YV91c2VyLmNhY2hlWyBlbGVtWyBkYXRhX3VzZXIuZXhwYW5kbyBdIF07XG5cdFx0fVxuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
9673B0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGVsZW1zID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgdGhpcyApIDogdGhpcyxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoICFrZWVwRGF0YSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0gKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggZWxlbSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IChlbGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBhcmcgPSBhcmd1bWVudHNbIDAgXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRhcmcgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cblx0XHRcdGlmICggYXJnICkge1xuXHRcdFx0XHRhcmcucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyBGb3JjZSByZW1vdmFsIGlmIHRoZXJlIHdhcyBubyBuZXcgY29udGVudCAoZS5nLiwgZnJvbSBlbXB0eSBhcmd1bWVudHMpXG5cdFx0cmV0dXJuIGFyZyAmJiAoYXJnLmxlbmd0aCB8fCBhcmcubm9kZVR5cGUpID8gdGhpcyA6IHRoaXMucmVtb3ZlKCk7XG5cdH0sXG5cblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucmVtb3ZlKCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdGRvbU1hbmlwOiBmdW5jdGlvbiggYXJncywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHRcdHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYyxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2V0ID0gdGhpcyxcblx0XHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0XHR2YWx1ZSA9IGFyZ3NbIDAgXSxcblx0XHRcdGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHRcdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRcdGlmICggaXNGdW5jdGlvbiB8fFxuXHRcdFx0XHQoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0XHRcdHZhciBzZWxmID0gc2V0LmVxKCBpbmRleCApO1xuXHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5kb21NYW5pcCggYXJncywgY2FsbGJhY2sgKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICggbCApIHtcblx0XHRcdGZyYWdtZW50ID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIGFyZ3MsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgdGh
9673pcyApO1xuXHRcdFx0Zmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGZpcnN0ICkge1xuXHRcdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTtcblxuXHRcdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBRdFdlYktpdFxuXHRcdFx0XHRcdFx0XHQvLyBqUXVlcnkubWVyZ2UgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjYWxsYmFjay5jYWxsKCB0aGlzWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdFx0Ly8gUmVlbmFibGUgc2NyaXB0c1xuXHRcdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdFx0IWRhdGFfcHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiYgalF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgXCJcIiApICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXRcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Ncblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSk7XG5cblxudmFyIGlmcmFtZSxcblx0ZWxlbWRpc3BsYXkgPSB7fTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgYWN0dWFsIGRpc3BsYXkgb2YgYSBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBub2RlTmFtZSBvZiB0aGUgZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IGRvYyBEb2N1bWVudCBvYmplY3RcbiAqL1xuLy8gQ2FsbGVkIG9ubHkgZnJvbSB3aXRoaW4gZGVmYXVsdERpc3BsYXlcbmZ1bmN0aW9uIGFjdHVhbERpc3BsYXkoIG5hbWUsIGRvYyApIHtcblx0dmFyIHN0eWxlLFxuXHRcdGVsZW0gPSBqUXVlcnkoIGRvYy5jcmVhdGVFbGVtZW50KCBuYW1lICkgKS5hcHBlbmRUbyggZG9jLmJvZHkgKSxcblxuXHRcdC8vIGdldERlZmF1bHRDb21wdXRlZFN0eWxlIG1pZ2h0IGJlIHJlbGlhYmx5IHVzZWQgb25seSBvbiBhdHRhY2hlZCBlbGVtZW50XG5cdFx0ZGlzcGxheSA9IHdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSAmJiAoIHN0eWxlID0gd2luZG93LmdldERlZmF1bHRDb21wdXRlZFN0eWxlKCBlbGVtWyAwIF0gKSApID9cblxuXHRcdFx0Ly8gVXNlIG9mIHRoaXMgbWV0aG9kIGlzIGEgdGVtcG9yYXJ5IGZpeCAobW9yZSBsaWtlIG9wdGltaXphdGlvbikgdW50aWwgc29tZXRoaW5nIGJldHRlciBjb21lcyBhbG9uZyxcblx0XHRcdC8vIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gc3BlY2lmaWNhdGlvbiBhbmQgc3VwcG9ydGVkIG9ubHkgaW4gRkZcblx0XHRcdHN0eWxlLmRpc3BsYXkgOiBqUXVlcnkuY3NzKCBlbGVtWyAwIF0sIFwiZGlzcGxheVwiICk7XG5cblx0Ly8gV2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSBzdG9yZWQgb24gdGhlIGVsZW1lbnQsXG5cdC8vIHNvIHVzZSBcImRldGFjaFwiIG1ldGhvZCBhcyBmYXN0IHdheSB0byBnZXQgcmlkIG9mIHRoZSBlbGVtZW50XG5cdGVsZW0uZGV0YWNoKCk7XG5cblx0cmV0dXJuIGRpc3BsYXk7XG59XG5cbi8qKlxuICogVHJ5IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBub2RlTmFtZVxuICovXG5mdW5jdGlvbiBkZWZh
9673dWx0RGlzcGxheSggbm9kZU5hbWUgKSB7XG5cdHZhciBkb2MgPSBkb2N1bWVudCxcblx0XHRkaXNwbGF5ID0gZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF07XG5cblx0aWYgKCAhZGlzcGxheSApIHtcblx0XHRkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApO1xuXG5cdFx0Ly8gSWYgdGhlIHNpbXBsZSB3YXkgZmFpbHMsIHJlYWQgZnJvbSBpbnNpZGUgYW4gaWZyYW1lXG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiB8fCAhZGlzcGxheSApIHtcblxuXHRcdFx0Ly8gVXNlIHRoZSBhbHJlYWR5LWNyZWF0ZWQgaWZyYW1lIGlmIHBvc3NpYmxlXG5cdFx0XHRpZnJhbWUgPSAoaWZyYW1lIHx8IGpRdWVyeSggXCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+XCIgKSkuYXBwZW5kVG8oIGRvYy5kb2N1bWVudEVsZW1lbnQgKTtcblxuXHRcdFx0Ly8gQWx3YXlzIHdyaXRlIGEgbmV3IEhUTUwgc2tlbGV0b24gc28gV2Via2l0IGFuZCBGaXJlZm94IGRvbid0IGNob2tlIG9uIHJldXNlXG5cdFx0XHRkb2MgPSBpZnJhbWVbIDAgXS5jb250ZW50RG9jdW1lbnQ7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0XHRkb2Mud3JpdGUoKTtcblx0XHRcdGRvYy5jbG9zZSgpO1xuXG5cdFx0XHRkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApO1xuXHRcdFx0aWZyYW1lLmRldGFjaCgpO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIHRoZSBjb3JyZWN0IGRlZmF1bHQgZGlzcGxheVxuXHRcdGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdID0gZGlzcGxheTtcblx0fVxuXG5cdHJldHVybiBkaXNwbGF5O1xufVxudmFyIHJtYXJnaW4gPSAoL15tYXJnaW4vKTtcblxudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0Ly8gU3VwcG9ydDogSUU8PTExKywgRmlyZWZveDw9MzArICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHRpZiAoIGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5vcGVuZXIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKTtcblx0fTtcblxuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gU3VwcG9ydDogSUU5XG5cdC8vIGdldFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpICgjMTI1MzcpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cdH1cblxuXHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgKSB7XG5cdFx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBpT1MgPCA2XG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIGlPUyA8IDYgKGF0IGxlYXN0KSByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIGEgbGFyZ2VyIHNldCBvZiB2YWx1ZXMsIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHNcblx0XHQvLyB0aGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cdFx0Ly8gU3VwcG9ydDogSUVcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOy
9673ByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICh0aGlzLmdldCA9IGhvb2tGbikuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG4oZnVuY3Rpb24oKSB7XG5cdHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCxcblx0XHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KVxuXHRkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcImNvbnRlbnQtYm94XCI7XG5cdGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiXCI7XG5cdHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSBcImNvbnRlbnQtYm94XCI7XG5cblx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4O1wiICtcblx0XHRcInBvc2l0aW9uOmFic29sdXRlXCI7XG5cdGNvbnRhaW5lci5hcHBlbmRDaGlsZCggZGl2ICk7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVQaXhlbFBvc2l0aW9uQW5kQm94U2l6aW5nUmVsaWFibGUoKSB7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyOSwgQW5kcm9pZCAyLjNcblx0XHRcdC8vIFZlbmRvci1wcmVmaXggYm94LXNpemluZ1xuXHRcdFx0XCItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtcIiArXG5cdFx0XHRcImJveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO1wiICtcblx0XHRcdFwiYm9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGVcIjtcblx0XHRkaXYuaW5uZXJIVE1MID0gXCJcIjtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYsIG51bGwgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gXCI0cHhcIjtcblxuXHRcdGRvY0VsZW0ucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogbm9kZS5qcyBqc2RvbVxuXHQvLyBEb24ndCBhc3N1bWUgdGhhdCBnZXRDb21wdXRlZFN0eWxlIGlzIGEgcHJvcGVydHkgb2YgdGhlIGdsb2JhbCBvYmplY3Rcblx0aWYgKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBUaGlzIHRlc3QgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGJ1dCB3ZSBzdGlsbCBkbyBtZW1vaXppbmdcblx0XHRcdFx0Ly8gc2luY2Ugd2UgY2FuIHVzZSB0aGUgYm94U2l6aW5nUmVsaWFibGUgcHJlLWNvbXB1dGluZy5cblx0XHRcdFx0Ly8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgdGVzdCB3YXMgYWxyZWFkeSBwZXJmb3JtZWQsIHRob3VnaC5cblx0XHRcdFx0Y29tcHV0ZVBpeGVsUG9zaXRpb25BbmRCb3hTaXppbmdSZWxpYWJsZSgpO1xuXHRcdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHRcdH0sXG5cdFx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggYm94U2l6aW5nUmVsaWFibGVWYWwgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRjb21wdXRlUGl4ZWxQb3NpdGlvbkFuZEJveFNpemluZ1JlbGlhYmxlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdFx0fSxcblx0XHRcdHJlbGlhYmxlTWFyZ2luUmlnaHQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHlcblx0XHRcdFx0Ly8gZ2V0cyBjb21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVyLiAoIzMzMzMpXG5cdFx0XHRcdC8vIFdlYktpdCBCdWcgMTMzNDMgLSBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgd3JvbmcgdmFsdWUgZm9yIG1hcmdpbi1yaWdodFxuXHRcdFx0XHQvLyBUaGlzIHN1cHBvcnQgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBvbmNlIHNvIG5vIG1lbW9pemluZyBpcyBuZWVkZWQuXG5cdFx0XHRcdHZhciByZXQsXG5cdFx0XHRcdFx0bWFyZ2luRGl2ID0gZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblxuXHRcdFx0XHQvLyBSZXNldCBDU1M6IGJveC1zaXppbmc7IGRpc3BsYXk7IG1hcmdpbjsgYm9yZGVyOyBwYWRkaW5nXG5cdFx0XHRcdG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjksIEFuZHJvaWQgMi4zXG5cdFx0XHRcdFx0Ly8gVmVuZG9yLXByZWZpeCBib3gtc2l6aW5nXG5cdFx0XHRcdFx0XCItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O1wiICtcblx0XHRcdFx0XHRcImJveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjBcIjtcblx0XHRcdFx0bWFyZ2luRGl2LnN0eWxlLm1hcmdpblJpZ2h0ID0gbWFy
9673Z2luRGl2LnN0eWxlLndpZHRoID0gXCIwXCI7XG5cdFx0XHRcdGRpdi5zdHlsZS53aWR0aCA9IFwiMXB4XCI7XG5cdFx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApO1xuXG5cdFx0XHRcdHJldCA9ICFwYXJzZUZsb2F0KCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkubWFyZ2luUmlnaHQgKTtcblxuXHRcdFx0XHRkb2NFbGVtLnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblx0XHRcdFx0ZGl2LnJlbW92ZUNoaWxkKCBtYXJnaW5EaXYgKTtcblxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KSgpO1xuXG5cbi8vIEEgbWV0aG9kIGZvciBxdWlja2x5IHN3YXBwaW5nIGluL291dCBDU1MgcHJvcGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxjdWxhdGlvbnMuXG5qUXVlcnkuc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHtcblx0dmFyIHJldCwgbmFtZSxcblx0XHRvbGQgPSB7fTtcblxuXHQvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTtcblx0fVxuXG5cdHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7XG5cblx0Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59O1xuXG5cbnZhclxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRybnVtc3BsaXQgPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKC4qKSRcIiwgXCJpXCIgKSxcblx0cnJlbE51bSA9IG5ldyBSZWdFeHAoIFwiXihbKy1dKT0oXCIgKyBwbnVtICsgXCIpXCIsIFwiaVwiICksXG5cblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiT1wiLCBcIk1velwiLCBcIm1zXCIgXTtcblxuLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBuYW1lICkge1xuXG5cdC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkXG5cdGlmICggbmFtZSBpbiBzdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpLFxuXHRcdG9yaWdOYW1lID0gbmFtZSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3JpZ05hbWU7XG59XG5cbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7XG5cdHZhciBtYXRjaGVzID0gcm51bXNwbGl0LmV4ZWMoIHZhbHVlICk7XG5cdHJldHVybiBtYXRjaGVzID9cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAxIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAyIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMgKSB7XG5cdHZhciBpID0gZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSA/XG5cdFx0Ly8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uXG5cdFx0NCA6XG5cdFx0Ly8gT3RoZXJ3aXNlIGluaXRpYWxpemUgZm9yIGhvcml6b250YWwgb3IgdmVydGljYWwgcHJvcGVydGllc1xuXHRcdG5hbWUgPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXG5cdFx0dmFsID0gMDtcblxuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7XG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBpdFxuXHRcdGlmICggZXh0cmEgPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHR2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0JvcmRlckJveCApIHtcblx0XHRcdC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudFxuXHRcdFx0aWYgKCBleHRyYSA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXJcblx0XHRcdGlmICggZXh0cmEgIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50LCBzbyBhZGQgcGFkZGluZ1xuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGV4dHJhICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWVcblx0dmFyIHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlLFxuXHRcdHZhbCA9IG5hbWUgPT09IFwid2lkdGhcIiA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVtLm9mZnNldEhlaWdodCxcblx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCI7XG5cblx0Ly8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVkIGZvciBvZmZzZXRXaWR0aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkXG5cdC8vIHN2ZyAtIGh0dHBzOi8vYnVnemlsbGEubW96
9673aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTI4NVxuXHQvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2Njhcblx0aWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHtcblx0XHQvLyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3Nhcnlcblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdGlmICggdmFsIDwgMCB8fCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdHZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLlxuXHRcdGlmICggcm51bW5vbnB4LnRlc3QodmFsKSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXG5cdFx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0XHQvLyBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0eWxlXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94ICYmXG5cdFx0XHQoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVsZW0uc3R5bGVbIG5hbWUgXSApO1xuXG5cdFx0Ly8gTm9ybWFsaXplIFwiXCIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBleHRyYVxuXHRcdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cdH1cblxuXHQvLyBVc2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlc1xuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxuXHRcdFx0ZWxlbSxcblx0XHRcdG5hbWUsXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLCBoaWRkZW4sXG5cdFx0dmFsdWVzID0gW10sXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YV9wcml2LmdldCggZWxlbSwgXCJvbGRkaXNwbGF5XCIgKTtcblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblx0XHRcdC8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQgaXNcblx0XHRcdC8vIGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBydWxlcyBvciBub3Rcblx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSAmJiBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGVsZW1lbnRzIHdoaWNoIGhhdmUgYmVlbiBvdmVycmlkZGVuIHdpdGggZGlzcGxheTogbm9uZVxuXHRcdFx0Ly8gaW4gYSBzdHlsZXNoZWV0IHRvIHdoYXRldmVyIHRoZSBkZWZhdWx0IGJyb3dzZXIgc3R5bGUgaXNcblx0XHRcdC8vIGZvciBzdWNoIGFuIGVsZW1lbnRcblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuKCBlbGVtICkgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIFwib2xkZGlzcGxheVwiLCBkZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRoaWRkZW4gPSBpc0hpZGRlbiggZWxlbSApO1xuXG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiIHx8ICFoaWRkZW4gKSB7XG5cdFx0XHRcdGRhdGFfcHJpdi5zZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiLCBoaWRkZW4gPyBkaXNwbGF5IDogalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFNldCB0aGUgZGlzcGxheSBvZiBtb3N0IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wXG5cdC8vIHRvIGF2b2lkIHRoZSBjb25zdGFudCByZWZsb3dcblx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRpZiAoICFzaG93IHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHwgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gc2hvdyA/IHZhbHVlc1sgaW5kZXggXSB8fCBcIlwiIDogXCJub25lXCI7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aG
9673VzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHtcblx0XHRcImZsb2F0XCI6IFwiY3NzRmxvYXRcIlxuXHR9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG9yaWdOYW1lICkgKTtcblxuXHRcdC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWVcblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG5cdFx0XHQvLyBDb252ZXJ0IFwiKz1cIiBvciBcIi09XCIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgKHJldCA9IHJyZWxOdW0uZXhlYyggdmFsdWUgKSkgKSB7XG5cdFx0XHRcdHZhbHVlID0gKCByZXRbMV0gKyAxICkgKiByZXRbMl0gKyBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICkgKTtcblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciwgYWRkICdweCcgdG8gdGhlIChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gKSB7XG5cdFx0XHRcdHZhbHVlICs9IFwicHhcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgIShcInNldFwiIGluIGhvb2tzKSB8fCAodmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XG5cdFx0XHRyZXR1cm4gc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0Y3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHtcblx0XHR2YXIgdmFsLCBudW0sIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWVcblx0XHRuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIGVsZW0uc3R5bGUsIG9yaWdOYW1lICkgKTtcblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgalF1ZXJ5LmlzTnVtZXJpYyggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKFsgXCJoZWlnaHRcIiwgXCJ3aWR0aFwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbV
9673xuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJiBlbGVtLm9mZnNldFdpZHRoID09PSAwID9cblx0XHRcdFx0XHRqUXVlcnkuc3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTtcblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgZXh0cmEgP1xuXHRcdFx0XHRhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0KSA6IDBcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luUmlnaHQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnN3YXAoIGVsZW0sIHsgXCJkaXNwbGF5XCI6IFwiaW5saW5lLWJsb2NrXCIgfSxcblx0XHRcdFx0Y3VyQ1NTLCBbIGVsZW0sIFwibWFyZ2luUmlnaHRcIiBdICk7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCh7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdChcIiBcIikgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoICFybWFyZ2luLnRlc3QoIHByZWZpeCApICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHtcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7XG5cdFx0XHRcdGxlbiA9IG5hbWUubGVuZ3RoO1xuXG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdG1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNlLCBzdHlsZXMgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBtYXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1ZSApIDpcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApO1xuXHRcdH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW4oIHRoaXMgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgXCJzd2luZ1wiO1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGh
9673pcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJlxuXHRcdFx0XHQoIXR3ZWVuLmVsZW0uc3R5bGUgfHwgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwpICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cdFx0XHQvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kIFwiYXV0b1wiIGFyZSBjb252ZXJ0ZWQgdG8gMC5cblx0XHRcdHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gXCJhdXRvXCIgPyAwIDogcmVzdWx0O1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLnN0eWxlICYmICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8IGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUU5XG4vLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHtcblx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5lYXNpbmcgPSB7XG5cdGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH0sXG5cdHN3aW5nOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyO1xuXHR9XG59O1xuXG5qUXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDtcblxuLy8gQmFjayBDb21wYXQgPDEuOCBleHRlbnNpb24gcG9pbnRcbmpRdWVyeS5meC5zdGVwID0ge307XG5cblxuXG5cbnZhclxuXHRmeE5vdywgdGltZXJJZCxcblx0cmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sXG5cdHJmeG51bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICksXG5cdHJydW4gPSAvcXVldWVIb29rcyQvLFxuXHRhbmltYXRpb25QcmVmaWx0ZXJzID0gWyBkZWZhdWx0UHJlZmlsdGVyIF0sXG5cdHR3ZWVuZXJzID0ge1xuXHRcdFwiKlwiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRcdHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksXG5cdFx0XHRcdHRhcmdldCA9IHR3ZWVuLmN1cigpLFxuXHRcdFx0XHRwYXJ0cyA9IHJmeG51bS5leGVjKCB2YWx1ZSApLFxuXHRcdFx0XHR1bml0ID0gcGFydHMgJiYgcGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdFx0XHQvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlc1xuXHRcdFx0XHRzdGFydCA9ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiArdGFyZ2V0ICkgJiZcblx0XHRcdFx0XHRyZnhudW0uZXhlYyggalF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgcHJvcCApICksXG5cdFx0XHRcdHNjYWxlID0gMSxcblx0XHRcdFx0bWF4SXRlcmF0aW9ucyA9IDIwO1xuXG5cdFx0XHRpZiAoIHN0YXJ0ICYmIHN0YXJ0WyAzIF0gIT09IHVuaXQgKSB7XG5cdFx0XHRcdC8vIFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3Ncblx0XHRcdFx0dW5pdCA9IHVuaXQgfHwgc3RhcnRbIDMgXTtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0XHRcdHBhcnRzID0gcGFydHMgfHwgW107XG5cblx0XHRcdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vb
9673nplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRcdFx0c3RhcnQgPSArdGFyZ2V0IHx8IDE7XG5cblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdC8vIElmIHByZXZpb3VzIGl0ZXJhdGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqLlxuXHRcdFx0XHRcdC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93XG5cdFx0XHRcdFx0c2NhbGUgPSBzY2FsZSB8fCBcIi41XCI7XG5cblx0XHRcdFx0XHQvLyBBZGp1c3QgYW5kIGFwcGx5XG5cdFx0XHRcdFx0c3RhcnQgPSBzdGFydCAvIHNjYWxlO1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgcHJvcCwgc3RhcnQgKyB1bml0ICk7XG5cblx0XHRcdFx0Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCksXG5cdFx0XHRcdC8vIGJyZWFrIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2hcblx0XHRcdFx0fSB3aGlsZSAoIHNjYWxlICE9PSAoc2NhbGUgPSB0d2Vlbi5jdXIoKSAvIHRhcmdldCkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFVwZGF0ZSB0d2VlbiBwcm9wZXJ0aWVzXG5cdFx0XHRpZiAoIHBhcnRzICkge1xuXHRcdFx0XHRzdGFydCA9IHR3ZWVuLnN0YXJ0ID0gK3N0YXJ0IHx8ICt0YXJnZXQgfHwgMDtcblx0XHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHRcdC8vIElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFuaW1hdGlvblxuXHRcdFx0XHR0d2Vlbi5lbmQgPSBwYXJ0c1sgMSBdID9cblx0XHRcdFx0XHRzdGFydCArICggcGFydHNbIDEgXSArIDEgKSAqIHBhcnRzWyAyIF0gOlxuXHRcdFx0XHRcdCtwYXJ0c1sgMiBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH07XG5cbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcbmZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkge1xuXHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9KTtcblx0cmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNCA7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHtcblx0XHR3aGljaCA9IGNzc0V4cGFuZFsgaSBdO1xuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xuXHR9XG5cblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XG5cdFx0YXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTtcblx0fVxuXG5cdHJldHVybiBhdHRycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBhbmltYXRpb24gKSB7XG5cdHZhciB0d2Vlbixcblx0XHRjb2xsZWN0aW9uID0gKCB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCB0d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICh0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBwcm9wLCB2YWx1ZSApKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIHR3ZWVuLCBob29rcywgb2xkZmlyZSwgZGlzcGxheSwgY2hlY2tEaXNwbGF5LFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbiggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YV9wcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIEhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXNcblx0aWYgKCAhb3B0cy5xdWV1ZSApIHtcblx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgXCJmeFwiICk7XG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xuXHRcdFx0aG9va3MudW5xdWV1ZWQgPSAwO1xuXHRcdFx0b2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggIWhvb2tzLnVucXVldWVkICkge1xuXHRcdFx0XHRcdG9sZGZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aG9va3MudW5xdWV1ZWQrKztcblxuXHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXNcblx0XHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gSGVpZ2h0L3dpZHRoIG92ZXJmbG93IHBhc3Ncblx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCJoZWlnaHRcIiBpbiBwcm9wcyB8fCBcIndpZHRoXCIgaW4gcHJvcHMgKSApIHtcblx0XHQvLyBNYWtlIHN1cmUgdGhhdCBub3RoaW5nIHNuZWFrcyBvdXRcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFOS0xMCBkbyBub3Rcblx0XHQvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBhbmRcblx0XHQvLyBvdmVyZmxvd1kgYXJlIHNldCB0byB0aGUgc2FtZSB2YWx1ZVxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2NrIGZvciBoZWlnaHQvd2lkdGhcblx0XHQvLyBhbmltYXRpb25zIG9uIGlubGluZSBlbGVtZW50cyB0aGF0IGFyZSBoYXZpbmcgd2lkdGgvaGVpZ2h0IGFuaW1hdGVkXG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cblx0XHQvLyBUZXN0IGRlZmF1bHQgZGlzcGxheSBpZiBkaXNwbGF5IGlzIGN1cnJlbnRseSBcIm5vbmVcIlxuXHRcdGNoZWNrRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID9cblx0XHRcdGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiICkgfHwgZGVmYXVsdERpc3BsYXkoIGVsZW0ubm9kZU5hbWUgKSA6IGRpc3BsYXk7XG5cblx0XHRpZiAoIGNoZWNrRGlzcGxheSA9PT0gXCJpbmxpbmVcIiAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBzaG93L2hpZGUgcGFzc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLmV4ZWMoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGRhdGFTaG93IGxlZnQgb3ZlciBmcm9tIGEgc3RvcHBlZCBoaWRlIG9yIHNob3cgYW5kIHdlIGFyZSBnb2luZyB0byBwcm9jZWVkIHdpdGggc2hvdywgd2Ugc2hvdWxkIHByZXRlbmQgdG8gYmUgaGlkZGVuXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09I
9673HVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXG5cdFx0Ly8gQW55IG5vbi1meCB2YWx1ZSBzdG9wcyB1cyBmcm9tIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXNwbGF5ID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0aWYgKCBkYXRhU2hvdyApIHtcblx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhU2hvdyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIFwiZnhzaG93XCIsIHt9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3RvcmUgc3RhdGUgaWYgaXRzIHRvZ2dsZSAtIGVuYWJsZXMgLnN0b3AoKS50b2dnbGUoKSB0byBcInJldmVyc2VcIlxuXHRcdGlmICggdG9nZ2xlICkge1xuXHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHR9XG5cdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRqUXVlcnkoIGVsZW0gKS5zaG93KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFuaW0uZG9uZShmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5KCBlbGVtICkuaGlkZSgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGFuaW0uZG9uZShmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcm9wO1xuXG5cdFx0XHRkYXRhX3ByaXYucmVtb3ZlKCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cdFx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0dHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblxuXHRcdFx0aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7XG5cdFx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSB0d2Vlbi5zdGFydDtcblx0XHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdFx0dHdlZW4uZW5kID0gdHdlZW4uc3RhcnQ7XG5cdFx0XHRcdFx0dHdlZW4uc3RhcnQgPSBwcm9wID09PSBcIndpZHRoXCIgfHwgcHJvcCA9PT0gXCJoZWlnaHRcIiA/IDEgOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdC8vIElmIHRoaXMgaXMgYSBub29wIGxpa2UgLmhpZGUoKS5oaWRlKCksIHJlc3RvcmUgYW4gb3ZlcndyaXR0ZW4gZGlzcGxheSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCAoZGlzcGxheSA9PT0gXCJub25lXCIgPyBkZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApIDogZGlzcGxheSkgPT09IFwiaW5saW5lXCIgKSB7XG5cdFx0c3R5bGUuZGlzcGxheSA9IGRpc3BsYXk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRlYXNpbmcgPSB2YWx1ZVsgMSBdO1xuXHRcdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07XG5cdFx0fVxuXG5cdFx0aWYgKCBpbmRleCAhPT0gbmFtZSApIHtcblx0XHRcdHByb3BzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgaW5kZXggXTtcblx0XHR9XG5cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdO1xuXHRcdGlmICggaG9va3MgJiYgXCJleHBhbmRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBuYW1lIF07XG5cblx0XHRcdC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5cy5cblx0XHRcdC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3QgXCJuYW1lXCJcblx0XHRcdGZvciAoIGluZGV4IGluIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7XG5cdFx0XHRcdFx0cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5kZXggXTtcblx0XHRcdFx0XHRzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25zICkge1xuXHR2YXIgcmVzdWx0LFxuXHRcdHN0b3BwZWQsXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGFuaW1hdGlvblByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvclxuXHRcdFx0ZGVsZXRlIHRpY2suZWxlbTtcblx0XHR9KSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCAyLjNcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4I
9673F0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSk7XG5cblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSh7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7IHNwZWNpYWxFYXNpbmc6IHt9IH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXHRcdFx0XHRcdC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVuc1xuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxuXHRcdFx0XHRcdGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0XHRzdG9wcGVkID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9KSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdHJlc3VsdCA9IGFuaW1hdGlvblByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9KVxuXHQpO1xuXG5cdC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdHJldHVybiBhbmltYXRpb24ucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzIClcblx0XHQuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKVxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcblx0XHQuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5zcGxpdChcIiBcIik7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdHR3ZWVuZXJzWyBwcm9wIF0gPSB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xuXHRcdFx0dHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRhbmltYXRpb25QcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFuaW1hdGlvblByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH1cbn0pO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0alF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gXCJudW1iZXJcIiA/IG9wdC5kdXJhdGlvbiA6XG5cdFx0b3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgPyBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybi
9673BvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbiApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFfcHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmICh0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlKSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YV9wcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4I
9673F0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKHtcblx0c2xpZGVEb3duOiBnZW5GeChcInNob3dcIiksXG5cdHNsaWRlVXA6IGdlbkZ4KFwiaGlkZVwiKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KFwidG9nZ2xlXCIpLFxuXHRmYWRlSW46IHsgb3BhY2l0eTogXCJzaG93XCIgfSxcblx0ZmFkZU91dDogeyBvcGFjaXR5OiBcImhpZGVcIiB9LFxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxufSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0pO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IGpRdWVyeS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblx0XHQvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlbW92ZWRcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRpZiAoIHRpbWVyKCkgKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnRpbWVycy5wb3AoKTtcblx0fVxufTtcblxualF1ZXJ5LmZ4LmludGVydmFsID0gMTM7XG5cbmpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuXHRpZiAoICF0aW1lcklkICkge1xuXHRcdHRpbWVySWQgPSBzZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHR9XG59O1xuXG5qUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRjbGVhckludGVydmFsKCB0aW1lcklkICk7XG5cdHRpbWVySWQgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cdC8vIERlZmF1bHQgc3BlZWRcblx0X2RlZmF1bHQ6IDQwMFxufTtcblxuXG4vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uXG4vLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7XG5cdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSk7XG59O1xuXG5cbihmdW5jdGlvbigpIHtcblx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICksXG5cdFx0c2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzZWxlY3RcIiApLFxuXHRcdG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvcHRpb25cIiApICk7XG5cblx0aW5wdXQudHlwZSA9IFwiY2hlY2tib3hcIjtcblxuXHQvLyBTdXBwb3J0OiBpT1M8PTUuMSwgQW5kcm9pZDw9NC4yK1xuXHQvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSBcIm9uXCJcblx0c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09IFwiXCI7XG5cblx0Ly8gU3VwcG9ydDogSUU8PTExK1xuXHQvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdFxuXHRzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8PTIuM1xuXHQvLyBPcHRpb25zIGluc2lkZSBkaXNhYmxlZCBzZWxlY3RzIGFyZSBpbmNvcnJlY3RseSBtYXJrZWQgYXMgZGlzYWJsZWRcblx0c2VsZWN0LmRpc2FibGVkID0gdHJ1ZTtcblx0c3VwcG9ydC5vcHREaXNhYmxlZCA9ICFvcHQuZGlzYWJsZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUU8PTExK1xuXHQvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpb1xuXHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRpbnB1dC52YWx1ZSA9IFwidFwiO1xuXHRpbnB1dC50eXBlID0gXCJyYWR
9673pb1wiO1xuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XG59KSgpO1xuXG5cbnZhciBub2RlSG9vaywgYm9vbEhvb2ssXG5cdGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBzdHJ1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGF0dHJpYnV0ZXMgYXJlIGxvd2VyY2FzZVxuXHRcdC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWRcblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblx0XHRcdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSB8fFxuXHRcdFx0XHQoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiBub2RlSG9vayApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyBcIlwiICk7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxuXHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID9cblx0XHRcdFx0dW5kZWZpbmVkIDpcblx0XHRcdFx0cmV0O1xuXHRcdH1cblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0dmFyIG5hbWUsIHByb3BOYW1lLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdHdoaXRlICk7XG5cblx0XHRpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0d2hpbGUgKCAobmFtZSA9IGF0dHJOYW1lc1tpKytdKSApIHtcblx0XHRcdFx0cHJvcE5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cblx0XHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGdldCBzcGVjaWFsIHRyZWF0bWVudCAoIzEwODcwKVxuXHRcdFx0XHRpZiAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRcdC8vIFNldCBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlXG5cdFx0XHRcdFx0ZWxlbVsgcHJvcE5hbWUgXSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0YXR0ckhvb2tzOiB7XG5cdFx0dHlwZToge1xuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmXG5cdFx0XHRcdFx0alF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcbmpRdWVyeS5lYWNoKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1xcdysvZyApLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyO1xuXG5cdGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgcmV0LCBoYW5kbGU7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHQvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyXG5cdFx0XHRoYW5kbGUgPSBhdHRySGFuZGxlWyBuYW1lIF0
96737XG5cdFx0XHRhdHRySGFuZGxlWyBuYW1lIF0gPSByZXQ7XG5cdFx0XHRyZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/XG5cdFx0XHRcdG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0XHRhdHRySGFuZGxlWyBuYW1lIF0gPSBoYW5kbGU7XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH07XG59KTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdO1xuXHRcdH0pO1xuXHR9XG59KTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fSxcblxuXHRwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsIG5vdHhtbCxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoICFlbGVtIHx8IG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG5vdHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTtcblxuXHRcdGlmICggbm90eG1sICkge1xuXHRcdFx0Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rc1xuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybiBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkpICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyZXQgOlxuXHRcdFx0XHQoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCA/XG5cdFx0XHRcdHJldCA6XG5cdFx0XHRcdGVsZW1bIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmhhc0F0dHJpYnV0ZSggXCJ0YWJpbmRleFwiICkgfHwgcmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHwgZWxlbS5ocmVmID9cblx0XHRcdFx0XHRlbGVtLnRhYkluZGV4IDpcblx0XHRcdFx0XHQtMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKFtcblx0XCJ0YWJJbmRleFwiLFxuXHRcInJlYWRPbmx5XCIsXG5cdFwibWF4TGVuZ3RoXCIsXG5cdFwiY2VsbFNwYWNpbmdcIixcblx0XCJjZWxsUGFkZGluZ1wiLFxuXHRcInJvd1NwYW5cIixcblx0XCJjb2xTcGFuXCIsXG5cdFwidXNlTWFwXCIsXG5cdFwiZnJhbWVCb3JkZXJcIixcblx0XCJjb250ZW50RWRpdGFibGVcIlxuXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7XG59KTtcblxuXG5cblxudmFyIHJjbGFzcyA9IC9bXFx0XFxyXFxuXFxmXS9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdHByb2NlZWQgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCB0aGlzLmNsYXNzTmFtZSApICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIHByb2NlZWQgKSB7XG5cdFx0XHQvLyBUaGUgZGlzanVuY3Rpb24gaGVyZSBpcyBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIHJlbW92ZUNsYXNzKVxuXHRcdFx0Y2xhc3NlcyA9ICggdmFsdWUgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF07XG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBlbGVtLmNsYXNzTmFtZSA/XG5cdFx0XHRcdFx0KCBcIiBcIiArIGVsZW0uY2xhc3NOYW1lICsgXCIgXCIgKS5yZXBsYWNlKCByY2xhc3MsIFwiIFwiICkgOlxuXHRcdFx0XHRcdFwiIFwiXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoY2xhenogPSBjbGFzc2VzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBvbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBqUXVlcnkudHJpbSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmNsYXNzTmFtZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uY2xhc3NOYW1lID0gZmluYWxWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0cHJvY2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgdGh
9673pcy5jbGFzc05hbWUgKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICggcHJvY2VlZCApIHtcblx0XHRcdGNsYXNzZXMgPSAoIHZhbHVlIHx8IFwiXCIgKS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW107XG5cblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdO1xuXHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKVxuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggZWxlbS5jbGFzc05hbWUgP1xuXHRcdFx0XHRcdCggXCIgXCIgKyBlbGVtLmNsYXNzTmFtZSArIFwiIFwiICkucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApIDpcblx0XHRcdFx0XHRcIlwiXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoY2xhenogPSBjbGFzc2VzW2orK10pICkge1xuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPj0gMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSB2YWx1ZSA/IGpRdWVyeS50cmltKCBjdXIgKSA6IFwiXCI7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmNsYXNzTmFtZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uY2xhc3NOYW1lID0gZmluYWxWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGksIHRoaXMuY2xhc3NOYW1lLCBzdGF0ZVZhbCksIHN0YXRlVmFsICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHR2YXIgY2xhc3NOYW1lLFxuXHRcdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0XHRjbGFzc05hbWVzID0gdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHRcdHdoaWxlICggKGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdKSApIHtcblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gc3RydW5kZWZpbmVkIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0XHRpZiAoIHRoaXMuY2xhc3NOYW1lICkge1xuXHRcdFx0XHRcdC8vIHN0b3JlIGNsYXNzTmFtZSBpZiBzZXRcblx0XHRcdFx0XHRkYXRhX3ByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgdGhpcy5jbGFzc05hbWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsXG5cdFx0XHRcdC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksXG5cdFx0XHRcdC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cblx0XHRcdFx0dGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPyBcIlwiIDogZGF0YV9wcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdGlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSAmJiAoXCIgXCIgKyB0aGlzW2ldLmNsYXNzTmFtZSArIFwiIFwiKS5yZXBsYWNlKHJjbGFzcywgXCIgXCIpLmluZGV4T2YoIGNsYXNzTmFtZSApID49IDAgKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1swXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0ID0gZWxlbS52YWx1ZTtcblxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIHJldCA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRcdHJldC5yZXBsYWNlKHJyZXR1cm4sIFwiXCIpIDpcblx0XHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0XHRyZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0dmFyIHZhbDtcblxuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO
96731xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoXCJzZXRcIiBpbiBob29rcykgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWwgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInZhbHVlXCIgKTtcblx0XHRcdFx0cmV0dXJuIHZhbCAhPSBudWxsID9cblx0XHRcdFx0XHR2YWwgOlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFMTAtMTErXG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdGpRdWVyeS50cmltKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIiB8fCBpbmRleCA8IDAsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLFxuXHRcdFx0XHRcdGkgPSBpbmRleCA8IDAgP1xuXHRcdFx0XHRcdFx0bWF4IDpcblx0XHRcdFx0XHRcdG9uZSA/IGluZGV4IDogMDtcblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIElFNi05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXHRcdFx0XHRcdFx0XHQvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHRcdFx0XHRcdCggc3VwcG9ydC5vcHREaXNhYmxlZCA/ICFvcHRpb24uZGlzYWJsZWQgOiBvcHRpb24uZ2V0QXR0cmlidXRlKCBcImRpc2FibGVkXCIgKSA9PT0gbnVsbCApICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCBcIm9wdGdyb3VwXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XG5cblx0XHRcdFx0XHRcdC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheVxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgb3B0aW9uU2V0LCBvcHRpb24sXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHR2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLFxuXHRcdFx0XHRcdGkgPSBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cdFx0XHRcdFx0aWYgKCAob3B0aW9uLnNlbGVjdGVkID0galF1ZXJ5LmluQXJyYXkoIG9wdGlvbi52YWx1ZSwgdmFsdWVzICkgPj0gMCkgKSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaChbIFwicmFkaW9cIiwgXCJjaGVja2JveFwiIF0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCksIHZhbHVlICkgPj0gMCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwidmFsdWVcIikgPT09IG51bGwgPyBcIm9uXCIgOiBlbGVtLnZhbHVlO1xuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxualF1ZXJ5LmVhY2goIChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudVwiKS5zcGxpdChcIiBcIiksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybi
9673Bhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH0sXG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyB0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDogdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XG5cdH1cbn0pO1xuXG5cbnZhciBub25jZSA9IGpRdWVyeS5ub3coKTtcblxudmFyIHJxdWVyeSA9ICgvXFw/Lyk7XG5cblxuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xuLy8gV29ya2Fyb3VuZCBmYWlsdXJlIHRvIHN0cmluZy1jYXN0IG51bGwgaW5wdXRcbmpRdWVyeS5wYXJzZUpTT04gPSBmdW5jdGlvbiggZGF0YSApIHtcblx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKyBcIlwiICk7XG59O1xuXG5cbi8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmdcbmpRdWVyeS5wYXJzZVhNTCA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHR2YXIgeG1sLCB0bXA7XG5cdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRTlcblx0dHJ5IHtcblx0XHR0bXAgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0eG1sID0gdG1wLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyaGFzaCA9IC8jLiokLyxcblx0cnRzID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXHRydXJsID0gL14oW1xcdy4rLV0rOikoPzpcXC9cXC8oPzpbXlxcLz8jXSpAfCkoW15cXC8/IzpdKikoPzo6KFxcZCspfCl8KS8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBEb2N1bWVudCBsb2NhdGlvblxuXHRhamF4TG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24uaHJlZixcblxuXHQvLyBTZWdtZW50IGxvY2F0aW9uIGludG8gcGFydHNcblx0YWpheExvY1BhcnRzID0gcnVybC5leGVjKCBhamF4TG9jYXRpb24udG9Mb3dlckNhc2UoKSApIHx8IFtdO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9I
9673FwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkge1xuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoZGF0YVR5cGUgPSBkYXRhVHlwZXNbaSsrXSkgKSB7XG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbMF0gPT09IFwiK1wiICkge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gZGF0YVR5cGUuc2xpY2UoIDEgKSB8fCBcIipcIjtcblx0XHRcdFx0XHQoc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdChzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiYgIXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXHRcdFx0XHRvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHtcblx0XHRcdFx0cmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoZGVlcCA9IHt9KSApIClbIGtleSBdID0gc3JjWyBrZXkgXTtcblx0XHR9XG5cdH1cblx0aWYgKCBkZWVwICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xuXHR9XG5cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OlxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcbiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuICovXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xuXG5cdHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSxcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7XG5cblx0Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3Ncblx0d2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gXCIqXCIgKSB7XG5cdFx0ZGF0YVR5cGVzLnNoaWZ0KCk7XG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWzBdIF0gKSB7XG5cdFx0XHRcdGZpbmFsRGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggIWZpcnN0RGF0YVR5cGUgKSB7XG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhV
9673HlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXG5cdFx0XHRpZiAoIGN1cnJlbnQgPT09IFwiKlwiICkge1xuXG5cdFx0XHRcdGN1cnJlbnQgPSBwcmV2O1xuXG5cdFx0XHQvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50XG5cdFx0XHR9IGVsc2UgaWYgKCBwcmV2ICE9PSBcIipcIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXG5cdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgXCIqIFwiICsgY3VycmVudCBdO1xuXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXG5cdFx0XHRcdGlmICggIWNvbnYgKSB7XG5cdFx0XHRcdFx0Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50XG5cdFx0XHRcdFx0XHR0bXAgPSBjb252Mi5zcGxpdCggXCIgXCIgKTtcblx0XHRcdFx0XHRcdGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0XG5cdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyB0bXBbIDAgXSBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjb252ICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgY29udjIgXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudCA9IHRtcFsgMCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpXG5cdFx0XHRcdGlmICggY29udiAhPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRcdC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW1cblx0XHRcdFx0XHRpZiAoIGNvbnYgJiYgc1sgXCJ0aHJvd3NcIiBdICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHsgc3RhdGU6IFwicGFyc2VyZXJyb3JcIiwgZXJyb3I6IGNvbnYgPyBlIDogXCJObyBjb252ZXJzaW9uIGZyb20gXCIgKyBwcmV2ICsgXCIgdG8gXCIgKyBjdXJyZW50IH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xufVxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcblx0YWN0aXZlOiAwLFxuXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3Rcblx0bGFzdE1vZGlmaWVkOiB7fSxcblx0ZXRhZzoge30sXG5cblx0YWpheFNldHRpbmdzOiB7XG5cdFx0dXJsOiBhamF4TG9jYXRpb24sXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBhamF4TG9jUGFydHNbIDEgXSApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhV
9673HlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL3htbC8sXG5cdFx0XHRodG1sOiAvaHRtbC8sXG5cdFx0XHRqc29uOiAvanNvbi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogalF1ZXJ5LnBhcnNlSlNPTixcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXHRcdFx0Ly8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbVxuXHRcdFx0Y2FjaGVVUkwsXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXHRcdFx0Ly8gQ3Jvc3MtZG9tYWluIGRldGVjdGlvbiB2YXJzXG5cdFx0XHRwYXJ0cyxcblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cdFx0XHQvLyBMb29wIHZhcmlhYmxlXG5cdFx0XHRpLFxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cdFx0XHQvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uXG5cdFx0XHRnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiYgKCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID9cblx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdGpRdWVyeS5ldmVudCxcblx0XHRcdC8vIERlZmVycmVkc1xuXHRcdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblx0XHRcdC8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpXG5cdFx0XHRyZXF1
9673ZXN0SGVhZGVycyA9IHt9LFxuXHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LFxuXHRcdFx0Ly8gVGhlIGpxWEhSIHN0YXRlXG5cdFx0XHRzdGF0ZSA9IDAsXG5cdFx0XHQvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2Vcblx0XHRcdHN0ckFib3J0ID0gXCJjYW5jZWxlZFwiLFxuXHRcdFx0Ly8gRmFrZSB4aHJcblx0XHRcdGpxWEhSID0ge1xuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxuXG5cdFx0XHRcdC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWRcblx0XHRcdFx0Z2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXHRcdFx0XHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHt9O1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlID09PSAyID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxuXHRcdFx0XHRzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0dmFyIGxuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdGlmICggIXN0YXRlICkge1xuXHRcdFx0XHRcdFx0bmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdGlmICggIXN0YXRlICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIHN0YXRlIDwgMiApIHtcblx0XHRcdFx0XHRcdFx0Zm9yICggY29kZSBpbiBtYXAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFjayBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lc1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5hZGQ7XG5cdFx0anFYSFIuc3VjY2VzcyA9IGpxWEhSLmRvbmU7XG5cdFx0anFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsO1xuXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgjNzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgYWpheExvY2F0aW9uICkgKyBcIlwiICkucmVwbGFjZSggcmhhc2gsIFwiXCIgKVxuXHRcdFx0LnJlcGxhY2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0gKyBcIi8vXCIgKTtcblxuXHRcdC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNFxuXHRcdHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7XG5cblx0XHQvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0XG5cdFx0cy5kYXRhVHlwZXMgPSBqUXVlcnkudHJpbSggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdW
9673VzdCBpcyBpbiBvcmRlciB3aGVuIHdlIGhhdmUgYSBwcm90b2NvbDpob3N0OnBvcnQgbWlzbWF0Y2hcblx0XHRpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHtcblx0XHRcdHBhcnRzID0gcnVybC5leGVjKCBzLnVybC50b0xvd2VyQ2FzZSgpICk7XG5cdFx0XHRzLmNyb3NzRG9tYWluID0gISEoIHBhcnRzICYmXG5cdFx0XHRcdCggcGFydHNbIDEgXSAhPT0gYWpheExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAhPT0gYWpheExvY1BhcnRzWyAyIF0gfHxcblx0XHRcdFx0XHQoIHBhcnRzWyAzIF0gfHwgKCBwYXJ0c1sgMSBdID09PSBcImh0dHA6XCIgPyBcIjgwXCIgOiBcIjQ0M1wiICkgKSAhPT1cblx0XHRcdFx0XHRcdCggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gXCI4MFwiIDogXCI0NDNcIiApICkgKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICgjMTUxMTgpXG5cdFx0ZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7XG5cblx0XHQvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzXG5cdFx0aWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdGFydFwiKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHRjYWNoZVVSTCA9IHMudXJsO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9ICggcy51cmwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YSApO1xuXHRcdFx0XHQvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5XG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWRcblx0XHRcdGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdHMudXJsID0gcnRzLnRlc3QoIGNhY2hlVVJMICkgP1xuXG5cdFx0XHRcdFx0Ly8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhICdfJyBwYXJhbWV0ZXIsIHNldCBpdHMgdmFsdWVcblx0XHRcdFx0XHRjYWNoZVVSTC5yZXBsYWNlKCBydHMsIFwiJDFfPVwiICsgbm9uY2UrKyApIDpcblxuXHRcdFx0XHRcdC8vIE90aGVyd2lzZSBhZGQgb25lIHRvIHRoZSBlbmRcblx0XHRcdFx0XHRjYWNoZVVSTCArICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyBub25jZSsrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gP1xuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gKyAoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJiAoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IHN0YXRlID09PSA
9673yICkgKSB7XG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Zm9yICggaSBpbiB7IHN1Y2Nlc3M6IDEsIGVycm9yOiAxLCBjb21wbGV0ZTogMSB9ICkge1xuXHRcdFx0anFYSFJbIGkgXSggc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KFwidGltZW91dFwiKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHN0YXRlID0gMTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0Ly8gUHJvcGFnYXRlIGV4Y2VwdGlvbiBhcyBlcnJvciBpZiBub3QgZG9uZVxuXHRcdFx0XHRpZiAoIHN0YXRlIDwgMiApIHtcblx0XHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0XHQvLyBTaW1wbHkgcmV0aHJvdyBvdGhlcndpc2Vcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gQ2FsbGVkIG9uY2Vcblx0XHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdGUgaXMgXCJkb25lXCIgbm93XG5cdFx0XHRzdGF0ZSA9IDI7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb25cblx0XHRcdC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcblxuXHRcdFx0Ly8gU2V0IHJlYWR5U3RhdGVcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XG5cblx0XHRcdC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsXG5cdFx0XHRpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDtcblxuXHRcdFx0Ly8gR2V0IHJlc3BvbnNlIGRhdGFcblx0XHRcdGlmICggcmVzcG9uc2VzICkge1xuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJldGFnXCIpO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdG9wXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO
96731xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59KTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7XG5cdFx0XHRjYWxsYmFjayA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkuYWpheCh7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSk7XG5cdH07XG59KTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoe1xuXHRcdHVybDogdXJsLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cdFx0XCJ0aHJvd3NcIjogdHJ1ZVxuXHR9KTtcbn07XG5cblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbC5jYWxsKHRoaXMsIGkpICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcblx0XHRcdHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApO1xuXG5cdFx0XHRpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHdyYXAubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IHRoaXM7XG5cblx0XHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkge1xuXHRcdFx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVsZW07XG5cdFx0XHR9KS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKHRoaXMsIGkpICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0Y29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7XG5cblx0XHRcdGlmICggY29udGVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250ZW50cy53cmFwQWxsKCBodG1sICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKCBodG1sICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwodGhpcywgaSkgOiBodG1sICk7XG5cdFx0fSk7XG5cdH0sXG5cblx0dW53cmFwOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImJvZHlcIiApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7XG5cdFx0XHR9XG5cdFx0fSkuZW5kKCk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdC8vIFN1cHBvcnQ6IE9wZXJhIDw9IDEyLjEyXG5cdC8vIE9wZXJhIHJlcG9ydHMgb2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRIZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxlbWVudHNcblx0cmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGggPD0gMCAmJiBlbGVtLm9mZnNldEhlaWdodCA8PSAwO1xufTtcbmpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuKCBlbGVtICk7XG59O1xuXG5cblxuXG52YXIgcjIwID0gLyUyMC9nLFxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIGpRdWVyeS5pc0FycmF
96735KCBvYmogKSApIHtcblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyBpIDogXCJcIiApICsgXCJdXCIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSBcIm9iamVjdFwiICkge1xuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHJldHVybiBpdHMgdmFsdWVcblx0XHRcdHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgPyB2YWx1ZSgpIDogKCB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICk7XG5cdFx0XHRzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSApO1xuXHRcdH07XG5cblx0Ly8gU2V0IHRyYWRpdGlvbmFsIHRvIHRydWUgZm9yIGpRdWVyeSA8PSAxLjMuMiBiZWhhdmlvci5cblx0aWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdHRyYWRpdGlvbmFsID0galF1ZXJ5LmFqYXhTZXR0aW5ncyAmJiBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsO1xuXHR9XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0pO1xuXG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApO1xuXHR9LFxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuXHRcdFx0dmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsIFwiZWxlbWVudHNcIiApO1xuXHRcdFx0cmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7XG5cdFx0fSlcblx0XHQuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9KVxuXHRcdC5tYXAoZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdHJldHVybiB2YWwgPT0gbnVsbCA/XG5cdFx0XHRcdG51bGwgOlxuXHRcdFx0XHRqUXVlcnkuaXNBcnJheSggdmFsICkgP1xuXHRcdFx0XHRcdGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9KS5nZXQoKTtcblx0fVxufSk7XG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IFhNTEh0dHBSZXF1
9673ZXN0KCk7XG5cdH0gY2F0Y2goIGUgKSB7fVxufTtcblxudmFyIHhocklkID0gMCxcblx0eGhyQ2FsbGJhY2tzID0ge30sXG5cdHhoclN1Y2Nlc3NTdGF0dXMgPSB7XG5cdFx0Ly8gZmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0Ly8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbi8vIFN1cHBvcnQ6IElFOVxuLy8gT3BlbiByZXF1ZXN0cyBtdXN0IGJlIG1hbnVhbGx5IGFib3J0ZWQgb24gdW5sb2FkICgjNTI4MClcbi8vIFNlZSBodHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8yODU2NzQ2IGZvciBtb3JlIGluZm9cbmlmICggd2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHR3aW5kb3cuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgZnVuY3Rpb24oKSB7XG5cdFx0Zm9yICggdmFyIGtleSBpbiB4aHJDYWxsYmFja3MgKSB7XG5cdFx0XHR4aHJDYWxsYmFja3NbIGtleSBdKCk7XG5cdFx0fVxuXHR9KTtcbn1cblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHR2YXIgY2FsbGJhY2s7XG5cblx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxuXHRpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0dmFyIGksXG5cdFx0XHRcdFx0eGhyID0gb3B0aW9ucy54aHIoKSxcblx0XHRcdFx0XHRpZCA9ICsreGhySWQ7XG5cblx0XHRcdFx0eGhyLm9wZW4oIG9wdGlvbnMudHlwZSwgb3B0aW9ucy51cmwsIG9wdGlvbnMuYXN5bmMsIG9wdGlvbnMudXNlcm5hbWUsIG9wdGlvbnMucGFzc3dvcmQgKTtcblxuXHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRcdHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcblx0XHRcdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXJcblx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxuXHRcdFx0XHQvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLlxuXHRcdFx0XHQvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cClcblx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXG5cdFx0XHRcdGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIHhockNhbGxiYWNrc1sgaWQgXTtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSB4aHIub25sb2FkID0geGhyLm9uZXJyb3IgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJhYm9ydFwiICkge1xuXHRcdFx0XHRcdFx0XHRcdHhoci5hYm9ydCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcImVycm9yXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBmaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEFjY2Vzc2luZyBiaW5hcnktZGF0YSByZXNwb25zZVRleHQgdGhyb3dzIGFuIGV4Y2VwdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gKCMxMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ID09PSBcInN0cmluZ1wiID8ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiB4aHIucmVzcG9uc2VUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHR9IDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0eGhyLm9uZXJyb3IgPSBjYWxsYmFjayhcImVycm9yXCIpO1xuXG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSB4aHJDYWxsYmFja3NbIGlkIF0gPSBjYWxsYmFjayhcImFib3J0XCIpO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0Ly8gIzE0NjgzOiBPbmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXRcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSk7XG5cblxuXG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbn
9673RzOiB7XG5cdFx0c2NyaXB0OiAvKD86amF2YXxlY21hKXNjcmlwdC9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59KTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0pO1xuXG4vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnRcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KFwiPHNjcmlwdD5cIikucHJvcCh7XG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSkub24oXG5cdFx0XHRcdFx0XCJsb2FkIGVycm9yXCIsXG5cdFx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0LnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBudWxsO1xuXHRcdFx0XHRcdFx0aWYgKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCBldnQudHlwZSA9PT0gXCJlcnJvclwiID8gNDA0IDogMjAwLCBldnQudHlwZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0WyAwIF0gKTtcblx0XHRcdH0sXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoe1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0pO1xuXG4vLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHNcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xuXG5cdHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lcixcblx0XHRqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgP1xuXHRcdFx0XCJ1cmxcIiA6XG5cdFx0XHR0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICYmICEoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikgJiYgcmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbXCJzY3JpcHQganNvblwiXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIGZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoZnVuY3Rpb24oKSB7XG5cdFx0XHQvLyBSZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXHRcdFx0XHQvLyBtYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIHNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSk7XG5cblxuXG5cbi8vIGRhdGE6IHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybi
9673BudWxsO1xuXHR9XG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGtlZXBTY3JpcHRzID0gY29udGV4dDtcblx0XHRjb250ZXh0ID0gZmFsc2U7XG5cdH1cblx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0dmFyIHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApLFxuXHRcdHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107XG5cblx0Ly8gU2luZ2xlIHRhZ1xuXHRpZiAoIHBhcnNlZCApIHtcblx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsxXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLy8gS2VlcCBhIGNvcHkgb2YgdGhlIG9sZCBsb2FkIG1ldGhvZFxudmFyIF9sb2FkID0galF1ZXJ5LmZuLmxvYWQ7XG5cbi8qKlxuICogTG9hZCBhIHVybCBpbnRvIGEgcGFnZVxuICovXG5qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7XG5cdGlmICggdHlwZW9mIHVybCAhPT0gXCJzdHJpbmdcIiAmJiBfbG9hZCApIHtcblx0XHRyZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHR9XG5cblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZihcIiBcIik7XG5cblx0aWYgKCBvZmYgPj0gMCApIHtcblx0XHRzZWxlY3RvciA9IGpRdWVyeS50cmltKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoe1xuXHRcdFx0dXJsOiB1cmwsXG5cblx0XHRcdC8vIGlmIFwidHlwZVwiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiBcIkdFVFwiIG1ldGhvZCB3aWxsIGJlIHVzZWRcblx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9KS5kb25lKGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7XG5cblx0XHRcdC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFja1xuXHRcdFx0cmVzcG9uc2UgPSBhcmd1bWVudHM7XG5cblx0XHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xuXG5cdFx0XHRcdC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdlxuXHRcdFx0XHQvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnNcblx0XHRcdFx0alF1ZXJ5KFwiPGRpdj5cIikuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0fSkuY29tcGxldGUoIGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXHRcdFx0c2VsZi5lYWNoKCBjYWxsYmFjaywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFsgXCJhamF4U3RhcnRcIiwgXCJhamF4U3RvcFwiLCBcImFqYXhDb21wbGV0ZVwiLCBcImFqYXhFcnJvclwiLCBcImFqYXhTdWNjZXNzXCIsIFwiYWpheFNlbmRcIiBdLCBmdW5jdGlvbiggaSwgdHlwZSApIHtcblx0alF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7XG5cdH07XG59KTtcblxuXG5cblxualF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9KS5sZW5ndGg7XG59O1xuXG5cblxuXG52YXIgZG9jRWxlbSA9IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbi8qKlxuICogR2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmlzV2luZG93KCBlbGVtICkgPyBlbGVtIDogZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3O1xufVxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgP
9673SB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoXCJhdXRvXCIpID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0dGhpcyA6XG5cdFx0XHRcdHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0XHR2YXIgZG9jRWxlbSwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGJveCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sXG5cdFx0XHRkb2MgPSBlbGVtICYmIGVsZW0ub3duZXJEb2N1bWVudDtcblxuXHRcdGlmICggIWRvYyApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZVxuXHRcdGlmICggIWpRdWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkge1xuXHRcdFx0cmV0dXJuIGJveDtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBCbGFja0JlcnJ5IDUsIGlPUyAzIChvcmlnaW5hbCBpUGhvbmUpXG5cdFx0Ly8gSWYgd2UgZG9uJ3QgaGF2ZSBnQkNSLCBqdXN0IHVzZSAwLDAgcmF0aGVyIHRoYW4gZXJyb3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gc3RydW5kZWZpbmVkICkge1xuXHRcdFx0Ym94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHR9XG5cdFx0d2luID0gZ2V0V2luZG93KCBkb2MgKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBib3gudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRUb3AsXG5cdFx0XHRsZWZ0OiBib3gubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtIGRvY0VsZW0uY2xpZW50TGVmdFxuXHRcdH07XG5cdH0sXG5cblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblxuXHRcdC8vIEZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB3aW5kb3cgKHBhcmVudE9mZnNldCA9IHt0b3A6MCwgbGVmdDogMH0sIGJlY2F1c2UgaXQgaXMgaXRzIG9ubHkgb2Zmc2V0IHBhcmVudFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblx0XHRcdC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudFxuXHRcdFx0b2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTtcblxuXHRcdFx0Ly8gR2V0IGNvcnJlY3Qgb2Zmc2V0c1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblx0XHRcdGlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sIFwiaHRtbFwiICkgKSB7XG5cdFx0XHRcdHBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzXG5cdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCBcImJvcmRlclRvcFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCBcImJvcmRlckxlZnRXaWR0aFwiLCB0cnVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2luc1xuXHRcdHJldHVybi
9673B7XG5cdFx0XHR0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5Ub3BcIiwgdHJ1ZSApLFxuXHRcdFx0bGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luTGVmdFwiLCB0cnVlIClcblx0XHR9O1xuXHR9LFxuXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50IHx8IGRvY0VsZW07XG5cblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50LCBcImh0bWxcIiApICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2NFbGVtO1xuXHRcdH0pO1xuXHR9XG59KTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXHRcdFx0dmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApO1xuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luZG93LnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbmRvdy5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApO1xuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaTw3KywgQ2hyb21lPDM3K1xuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MjgwXG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsIFwiXCI6IFwib3V0ZXJcIiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkge1xuXHRcdFx0XHRcdC8vIEFzIG9mIDUvOC8yMDEyIHRoaXMgd2lsbCB5aWVsZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3IgTW9iaWxlIFNhZmFyaSwgYnV0IHRoZXJlXG5cdFx0XHRcdFx0Ly8gaXNuJ3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRoaXMgVVJMIGZvciBkaXNjdXNzaW9uOlxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNzY0XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBcImNsaWVudFwiICsgbmFtZSBdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodFxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sXG5cdFx0XHRcdFx0Ly8gd2hpY2hldmVyIGlzIGdy
9673ZWF0ZXN0XG5cdFx0XHRcdFx0cmV0dXJuIE1hdGgubWF4KFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwib2Zmc2V0XCIgKyBuYW1lIF0sIGRvY1sgXCJvZmZzZXRcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGRvY1sgXCJjbGllbnRcIiArIG5hbWUgXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSwgbnVsbCApO1xuXHRcdH07XG5cdH0pO1xufSk7XG5cblxuLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBjb250YWluZWQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXRcbmpRdWVyeS5mbi5zaXplID0gZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzLmxlbmd0aDtcbn07XG5cbmpRdWVyeS5mbi5hbmRTZWxmID0galF1ZXJ5LmZuLmFkZEJhY2s7XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSk7XG59XG5cblxuXG5cbnZhclxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoIHR5cGVvZiBub0dsb2JhbCA9PT0gc3RydW5kZWZpbmVkICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cblxuXG5cbnJldHVybiBqUXVlcnk7XG5cbn0pKTtcblxuOyBicm93c2VyaWZ5X3NoaW1fX2RlZmluZV9fbW9kdWxlX19leHBvcnRfXyh0eXBlb2YgJCAhPSBcInVuZGVmaW5lZFwiID8gJCA6IHdpbmRvdy4kKTtcblxufSkuY2FsbChnbG9iYWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24gZGVmaW5lRXhwb3J0KGV4KSB7IG1vZHVsZS5leHBvcnRzID0gZXg7IH0pO1xuIl19 9674},{}],3:[function(require,module,exports){ 9675/* 9676 _ _ _ _ 9677 ___| (_) ___| | __ (_)___ 9678/ __| | |/ __| |/ / | / __| 9679\__ \ | | (__| < _ | \__ \ 9680|___/_|_|\___|_|\_(_)/ |___/ 9681 |__/ 9682 9683 Version: 1.8.0 9684 Author: Ken Wheeler 9685 Website: http://kenwheeler.github.io 9686 Docs: http://kenwheeler.github.io/slick 9687 Repo: http://github.com/kenwheeler/slick 9688 Issues: http://github.com/kenwheeler/slick/issues 9689 9690 */ 9691/* global window, document, define, jQuery, setInterval, clearInterval */ 9692;(function(factory) { 9693 'use strict'; 9694 if (typeof define === 'function' && define.amd) { 9695 define(['jquery'], factory); 9696 } else if (typeof exports !== 'undefined') { 9697 module.exports = factory(require('jquery')); 9698 } else { 9699 factory(jQuery); 9700 } 9701 9702}(function($) { 9703 'use strict'; 9704 var Slick = window.Slick || {}; 9705 9706 Slick = (function() { 9707 9708 var instanceUid = 0; 9709 9710 function Slick(element, settings) { 9711 9712 var _ = this, dataSettings; 9713 9714 _.defaults = { 9715 accessibility: true, 9716 adaptiveHeight: false, 9717 appendArrows: $(element), 9718 appendDots: $(element), 9719 arrows: true, 9720 asNavFor: null, 9721 prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 9722 nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 9723 autoplay: false, 9724 autoplaySpeed: 3000, 9725 centerMode: false, 9726 centerPadding: '50px', 9727 cssEase: 'ease', 9728 customPaging: function(slider, i) { 9729 return $('<button type="button" />').text(i + 1); 9730 }, 9731 dots: false, 9732 dotsClass: 'slick-dots', 9733 draggable: true, 9734 easing: 'linear', 9735 edgeFriction: 0.35, 9736 fade: false, 9737 focusOnSelect: false, 9738 focusOnChange: false, 9739 infinite: true, 9740 initialSlide: 0, 9741 lazyLoad: 'ondemand', 9742 mobileFirst: false, 9743 pauseOnHover: true, 9744 pauseOnFocus: true, 9745 pauseOnDotsHover: false, 9746 respondTo: 'window', 9747 responsive: null, 9748 rows: 1, 9749 rtl: false, 9750 slide: '', 9751 slidesPerRow: 1, 9752 slidesToShow: 1, 9753 slidesToScroll: 1, 9754 speed: 500, 9755 swipe: true, 9756 swipeToSlide: false, 9757 touchMove: true, 9758 touchThreshold: 5, 9759 useCSS: true, 9760 useTransform: true, 9761 variableWidth: false, 9762 vertical: false, 9763 verticalSwiping: false, 9764 waitForAnimate: true, 9765 zIndex: 1000 9766 }; 9767 9768 _.initials = { 9769 animating: false, 9770 dragging: false, 9771 autoPlayTimer: null, 9772 currentDirection: 0, 9773 currentLeft: null, 9774 currentSlide: 0, 9775 direction: 1, 9776 $dots: null, 9777 listWidth: null, 9778 listHeight: null, 9779 loadIndex: 0, 9780 $nextArrow: null, 9781 $prevArrow: null, 9782 scrolling: false, 9783 slideCount: null, 9784 slideWidth: null, 9785 $slideTrack: null, 9786 $slides: null, 9787 sliding: false, 9788 slideOffset: 0, 9789 swipeLeft: null, 9790 swiping: false, 9791 $list: null, 9792 touchObject: {}, 9793 transformsEnabled: false,
9794 unslicked: false 9795 }; 9796 9797 $.extend(_, _.initials); 9798 9799 _.activeBreakpoint = null; 9800 _.animType = null; 9801 _.animProp = null; 9802 _.breakpoints = []; 9803 _.breakpointSettings = []; 9804 _.cssTransitions = false; 9805 _.focussed = false; 9806 _.interrupted = false; 9807 _.hidden = 'hidden'; 9808 _.paused = true; 9809 _.positionProp = null; 9810 _.respondTo = null; 9811 _.rowCount = 1; 9812 _.shouldClick = true; 9813 _.$slider = $(element); 9814 _.$slidesCache = null; 9815 _.transformType = null; 9816 _.transitionType = null; 9817 _.visibilityChange = 'visibilitychange'; 9818 _.windowWidth = 0; 9819 _.windowTimer = null; 9820 9821 dataSettings = $(element).data('slick') || {}; 9822 9823 _.options = $.extend({}, _.defaults, settings, dataSettings); 9824 9825 _.currentSlide = _.options.initialSlide; 9826 9827 _.originalSettings = _.options; 9828 9829 if (typeof document.mozHidden !== 'undefined') { 9830 _.hidden = 'mozHidden'; 9831 _.visibilityChange = 'mozvisibilitychange'; 9832 } else if (typeof document.webkitHidden !== 'undefined') { 9833 _.hidden = 'webkitHidden'; 9834 _.visibilityChange = 'webkitvisibilitychange'; 9835 } 9836 9837 _.autoPlay = $.proxy(_.autoPlay, _); 9838 _.autoPlayClear = $.proxy(_.autoPlayClear, _); 9839 _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); 9840 _.changeSlide = $.proxy(_.changeSlide, _); 9841 _.clickHandler = $.proxy(_.clickHandler, _); 9842 _.selectHandler = $.proxy(_.selectHandler, _); 9843 _.setPosition = $.proxy(_.setPosition, _); 9844 _.swipeHandler = $.proxy(_.swipeHandler, _); 9845 _.dragHandler = $.proxy(_.dragHandler, _); 9846 _.keyHandler = $.proxy(_.keyHandler, _); 9847 9848 _.instanceUid = instanceUid++; 9849 9850 // A simple way to check for HTML strings 9851 // Strict HTML recognition (must start with <) 9852 // Extracted from jQuery v1.11 source 9853 _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 9854 9855 9856 _.registerBreakpoints(); 9857 _.init(true); 9858 9859 } 9860 9861 return Slick; 9862 9863 }()); 9864 9865 Slick.prototype.activateADA = function() { 9866 var _ = this; 9867 9868 _.$slideTrack.find('.slick-active').attr({ 9869 'aria-hidden': 'false' 9870 }).find('a, input, button, select').attr({ 9871 'tabindex': '0' 9872 }); 9873 9874 }; 9875 9876 Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 9877 9878 var _ = this; 9879 9880 if (typeof(index) === 'boolean') { 9881 addBefore = index; 9882 index = null; 9883 } else if (index < 0 || (index >= _.slideCount)) { 9884 return false; 9885 } 9886 9887 _.unload(); 9888 9889 if (typeof(index) === 'number') { 9890 if (index === 0 && _.$slides.length === 0) { 9891 $(markup).appendTo(_.$slideTrack); 9892 } else if (addBefore) { 9893 $(markup).insertBefore(_.$slides.eq(index)); 9894 } else { 9895 $(markup).insertAfter(_.$slides.eq(index)); 9896 } 9897 } else { 9898 if (addBefore === true) { 9899 $(markup).prependTo(_.$slideTrack); 9900 } else { 9901 $(markup).appendTo(_.$slideTrack); 9902 } 9903 } 9904 9905 _.$slides = _.$slideTrack.children(this.options.slide); 9906 9907 _.$slideTrack.children(this.options.slide).detach(); 9908 9909 _.$slideTrack.append(_.$slides); 9910 9911 _.$slides.each(function(index, element) { 9912 $(element).attr('data-slick-index', index); 9913 }); 9914 9915 _.$slidesCache = _.$slides; 9916 9917 _.reinit(); 9918 9919 }; 9920 9921 Slick.prototype.animateHeight = function() { 9922 var _ = this; 9923 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 9924 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 9925 _.$list.animate({ 9926 height: targetHeight 9927 }, _.options.speed); 9928 } 9929 }; 9930 9931 Slick.prototype.animateSlide = function(targetLeft, callback) { 9932 9933 var animProps = {}, 9934 _ = this; 9935 9936 _.animateHeight(); 9937 9938 if (_.options.rtl === true && _.options.vertical === false) { 9939 targetLeft = -targetLeft; 9940 } 9941 if (_.transformsEnabled === false) { 9942 if (_.options.vertical === false) { 9943 _.$slideTrack.animate({ 9944 left: targetLeft 9945 }, _.options.speed, _.options.easing, callback); 9946 } else { 9947 _.$slideTrack.animate({ 9948 top: targetLeft 9949 }, _.options.speed, _.options.easing, callback); 9950 } 9951 9952 } else { 9953 9954 if (_.cssTransitions === false) { 9955 if (_.options.rtl === true) { 9956 _.currentLeft = -(_.currentLeft); 9957 } 9958 $({ 9959 animStart: _.currentLeft 9960 }).animate({ 9961 animStart: targetLeft 9962 }, { 9963 duration: _.options.speed, 9964 easing: _.options.easing, 9965 step: function(now) { 9966 now = Math.ceil(now); 9967 if (_.options.vertical === false) { 9968 animProps[_.animType] = 'translate(' + 9969 now + 'px, 0px)'; 9970 _.$slideTrack.css(animProps); 9971 } else { 9972 animProps[_.animType] = 'translate(0px,' + 9973 now + 'px)'; 9974 _.$slideTrack.css(animProps); 9975 } 9976 }, 9977 complete: function() { 9978 if (callback) { 9979 callback.call(); 9980 } 9981 } 9982 }); 9983 9984 } else { 9985 9986 _.applyTransition();
9987 targetLeft = Math.ceil(targetLeft); 9988 9989 if (_.options.vertical === false) { 9990 animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; 9991 } else { 9992 animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; 9993 } 9994 _.$slideTrack.css(animProps); 9995 9996 if (callback) { 9997 setTimeout(function() { 9998 9999 _.disableTransition(); 10000 10001 callback.call(); 10002 }, _.options.speed); 10003 } 10004 10005 } 10006 10007 } 10008 10009 }; 10010 10011 Slick.prototype.getNavTarget = function() { 10012 10013 var _ = this, 10014 asNavFor = _.options.asNavFor; 10015 10016 if ( asNavFor && asNavFor !== null ) { 10017 asNavFor = $(asNavFor).not(_.$slider); 10018 } 10019 10020 return asNavFor; 10021 10022 }; 10023 10024 Slick.prototype.asNavFor = function(index) { 10025 10026 var _ = this, 10027 asNavFor = _.getNavTarget(); 10028 10029 if ( asNavFor !== null && typeof asNavFor === 'object' ) { 10030 asNavFor.each(function() { 10031 var target = $(this).slick('getSlick'); 10032 if(!target.unslicked) { 10033 target.slideHandler(index, true); 10034 } 10035 }); 10036 } 10037 10038 }; 10039 10040 Slick.prototype.applyTransition = function(slide) { 10041 10042 var _ = this, 10043 transition = {}; 10044 10045 if (_.options.fade === false) { 10046 transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; 10047 } else { 10048 transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; 10049 } 10050 10051 if (_.options.fade === false) { 10052 _.$slideTrack.css(transition); 10053 } else { 10054 _.$slides.eq(slide).css(transition); 10055 } 10056 10057 }; 10058 10059 Slick.prototype.autoPlay = function() { 10060 10061 var _ = this; 10062 10063 _.autoPlayClear(); 10064 10065 if ( _.slideCount > _.options.slidesToShow ) { 10066 _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed ); 10067 } 10068 10069 }; 10070 10071 Slick.prototype.autoPlayClear = function() { 10072 10073 var _ = this; 10074 10075 if (_.autoPlayTimer) { 10076 clearInterval(_.autoPlayTimer); 10077 } 10078 10079 }; 10080 10081 Slick.prototype.autoPlayIterator = function() { 10082 10083 var _ = this, 10084 slideTo = _.currentSlide + _.options.slidesToScroll; 10085 10086 if ( !_.paused && !_.interrupted && !_.focussed ) { 10087 10088 if ( _.options.infinite === false ) { 10089 10090 if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) { 10091 _.direction = 0; 10092 } 10093 10094 else if ( _.direction === 0 ) { 10095 10096 slideTo = _.currentSlide - _.options.slidesToScroll; 10097 10098 if ( _.currentSlide - 1 === 0 ) { 10099 _.direction = 1; 10100 } 10101 10102 } 10103 10104 } 10105 10106 _.slideHandler( slideTo ); 10107 10108 } 10109 10110 }; 10111 10112 Slick.prototype.buildArrows = function() { 10113 10114 var _ = this; 10115 10116 if (_.options.arrows === true ) { 10117 10118 _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow'); 10119 _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow'); 10120 10121 if( _.slideCount > _.options.slidesToShow ) { 10122 10123 _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 10124 _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 10125 10126 if (_.htmlExpr.test(_.options.prevArrow)) { 10127 _.$prevArrow.prependTo(_.options.appendArrows); 10128 } 10129 10130 if (_.htmlExpr.test(_.options.nextArrow)) { 10131 _.$nextArrow.appendTo(_.options.appendArrows); 10132 } 10133 10134 if (_.options.infinite !== true) { 10135 _.$prevArrow 10136 .addClass('slick-disabled') 10137 .attr('aria-disabled', 'true'); 10138 } 10139 10140 } else { 10141 10142 _.$prevArrow.add( _.$nextArrow ) 10143 10144 .addClass('slick-hidden') 10145 .attr({ 10146 'aria-disabled': 'true', 10147 'tabindex': '-1' 10148 }); 10149 10150 } 10151 10152 } 10153 10154 }; 10155 10156 Slick.prototype.buildDots = function() { 10157 10158 var _ = this, 10159 i, dot; 10160 10161 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 10162 10163 _.$slider.addClass('slick-dotted'); 10164 10165 dot = $('<ul />').addClass(_.options.dotsClass); 10166 10167 for (i = 0; i <= _.getDotCount(); i += 1) { 10168 dot.append($('<li />').append(_.options.customPaging.call(this, _, i))); 10169 } 10170 10171 _.$dots = dot.appendTo(_.options.appendDots); 10172 10173 _.$dots.find('li').first().addClass('slick-active'); 10174 10175 } 10176 10177 }; 10178 10179 Slick.prototype.buildOut = function() { 10180 10181 var _ = this; 10182 10183 _.$slides = 10184 _.$slider 10185 .children( _.options.slide + ':not(.slick-cloned)') 10186 .addClass('slick-slide'); 10187 10188 _.slideCount = _.$slides.length; 10189 10190 _.$slides.each(function(index, element) { 10191 $(element) 10192 .attr('data-slick-index', index) 10193 .data('originalStyling', $(element).attr('style') || ''); 10194 }); 10195 10196 _.$slider.addClass('slick-slider'); 10197 10198 _.$slideTrack = (_.slideCount === 0) ? 10199 $('<div class="slick-track"/>').appendTo(_.$slider) : 10200 _.$slides.wrapAll('<div class="slick-track"/>').parent(); 10201 10202 _.$list = _.$slideTrack.wrap( 10203 '<div class="slick-list"/>').parent(); 10204 _.$slideTrack.css('opacity', 0); 10205 10206 if (_.options.centerMode === true || _.options.swipeToSlide === true) {
10207 _.options.slidesToScroll = 1; 10208 } 10209 10210 $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); 10211 10212 _.setupInfinite(); 10213 10214 _.buildArrows(); 10215 10216 _.buildDots(); 10217 10218 _.updateDots(); 10219 10220 10221 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 10222 10223 if (_.options.draggable === true) { 10224 _.$list.addClass('draggable'); 10225 } 10226 10227 }; 10228 10229 Slick.prototype.buildRows = function() { 10230 10231 var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection; 10232 10233 newSlides = document.createDocumentFragment(); 10234 originalSlides = _.$slider.children(); 10235 10236 if(_.options.rows > 0) { 10237 10238 slidesPerSection = _.options.slidesPerRow * _.options.rows; 10239 numOfSlides = Math.ceil( 10240 originalSlides.length / slidesPerSection 10241 ); 10242 10243 for(a = 0; a < numOfSlides; a++){ 10244 var slide = document.createElement('div'); 10245 for(b = 0; b < _.options.rows; b++) { 10246 var row = document.createElement('div'); 10247 for(c = 0; c < _.options.slidesPerRow; c++) { 10248 var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); 10249 if (originalSlides.get(target)) { 10250 row.appendChild(originalSlides.get(target)); 10251 } 10252 } 10253 slide.appendChild(row); 10254 } 10255 newSlides.appendChild(slide); 10256 } 10257 10258 _.$slider.empty().append(newSlides); 10259 _.$slider.children().children().children() 10260 .css({ 10261 'width':(100 / _.options.slidesPerRow) + '%', 10262 'display': 'inline-block' 10263 }); 10264 10265 } 10266 10267 }; 10268 10269 Slick.prototype.checkResponsive = function(initial, forceUpdate) { 10270 10271 var _ = this, 10272 breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 10273 var sliderWidth = _.$slider.width(); 10274 var windowWidth = window.innerWidth || $(window).width(); 10275 10276 if (_.respondTo === 'window') { 10277 respondToWidth = windowWidth; 10278 } else if (_.respondTo === 'slider') { 10279 respondToWidth = sliderWidth; 10280 } else if (_.respondTo === 'min') { 10281 respondToWidth = Math.min(windowWidth, sliderWidth); 10282 } 10283 10284 if ( _.options.responsive && 10285 _.options.responsive.length && 10286 _.options.responsive !== null) { 10287 10288 targetBreakpoint = null; 10289 10290 for (breakpoint in _.breakpoints) { 10291 if (_.breakpoints.hasOwnProperty(breakpoint)) { 10292 if (_.originalSettings.mobileFirst === false) { 10293 if (respondToWidth < _.breakpoints[breakpoint]) { 10294 targetBreakpoint = _.breakpoints[breakpoint]; 10295 } 10296 } else { 10297 if (respondToWidth > _.breakpoints[breakpoint]) { 10298 targetBreakpoint = _.breakpoints[breakpoint]; 10299 } 10300 } 10301 } 10302 } 10303 10304 if (targetBreakpoint !== null) { 10305 if (_.activeBreakpoint !== null) { 10306 if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 10307 _.activeBreakpoint = 10308 targetBreakpoint; 10309 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 10310 _.unslick(targetBreakpoint); 10311 } else { 10312 _.options = $.extend({}, _.originalSettings, 10313 _.breakpointSettings[ 10314 targetBreakpoint]); 10315 if (initial === true) { 10316 _.currentSlide = _.options.initialSlide; 10317 } 10318 _.refresh(initial); 10319 }
10320 triggerBreakpoint = targetBreakpoint; 10321 } 10322 } else { 10323 _.activeBreakpoint = targetBreakpoint; 10324 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 10325 _.unslick(targetBreakpoint); 10326 } else { 10327 _.options = $.extend({}, _.originalSettings, 10328 _.breakpointSettings[ 10329 targetBreakpoint]); 10330 if (initial === true) { 10331 _.currentSlide = _.options.initialSlide; 10332 } 10333 _.refresh(initial); 10334 } 10335 triggerBreakpoint = targetBreakpoint; 10336 } 10337 } else { 10338 if (_.activeBreakpoint !== null) { 10339 _.activeBreakpoint = null; 10340 _.options = _.originalSettings; 10341 if (initial === true) { 10342 _.currentSlide = _.options.initialSlide; 10343 } 10344 _.refresh(initial); 10345 triggerBreakpoint = targetBreakpoint; 10346 } 10347 } 10348 10349 // only trigger breakpoints during an actual break. not on initialize. 10350 if( !initial && triggerBreakpoint !== false ) { 10351 _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); 10352 } 10353 } 10354 10355 }; 10356 10357 Slick.prototype.changeSlide = function(event, dontAnimate) { 10358 10359 var _ = this, 10360 $target = $(event.currentTarget), 10361 indexOffset, slideOffset, unevenOffset; 10362 10363 // If target is a link, prevent default action. 10364 if($target.is('a')) { 10365 event.preventDefault(); 10366 } 10367 10368 // If target is not the <li> element (ie: a child), find the <li>. 10369 if(!$target.is('li')) { 10370 $target = $target.closest('li'); 10371 } 10372 10373 unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); 10374 indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 10375 10376 switch (event.data.message) { 10377 10378 case 'previous': 10379 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 10380 if (_.slideCount > _.options.slidesToShow) { 10381 _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 10382 } 10383 break; 10384 10385 case 'next': 10386 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 10387 if (_.slideCount > _.options.slidesToShow) { 10388 _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 10389 } 10390 break; 10391 10392 case 'index': 10393 var index = event.data.index === 0 ? 0 : 10394 event.data.index || $target.index() * _.options.slidesToScroll; 10395 10396 _.slideHandler(_.checkNavigable(index), false, dontAnimate); 10397 $target.children().trigger('focus'); 10398 break; 10399 10400 default: 10401 return; 10402 } 10403 10404 }; 10405 10406 Slick.prototype.checkNavigable = function(index) { 10407 10408 var _ = this, 10409 navigables, prevNavigable; 10410 10411 navigables = _.getNavigableIndexes(); 10412 prevNavigable = 0; 10413 if (index > navigables[navigables.length - 1]) { 10414 index = navigables[navigables.length - 1]; 10415 } else { 10416 for (var n in navigables) { 10417 if (index < navigables[n]) { 10418 index = prevNavigable; 10419 break; 10420 } 10421 prevNavigable = navigables[n]; 10422 } 10423 } 10424 10425 return index; 10426 }; 10427 10428 Slick.prototype.cleanUpEvents = function() { 10429 10430 var _ = this; 10431 10432 if (_.options.dots && _.$dots !== null) { 10433 10434 $('li', _.$dots) 10435 .off('click.slick', _.changeSlide) 10436 .off('mouseenter.slick', $.proxy(_.interrupt, _, true)) 10437 .off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 10438 10439 if (_.options.accessibility === true) { 10440 _.$dots.off('keydown.slick', _.keyHandler); 10441 } 10442 } 10443 10444 _.$slider.off('focus.slick blur.slick'); 10445 10446 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 10447 _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); 10448 _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); 10449 10450 if (_.options.accessibility === true) { 10451 _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler); 10452 _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler); 10453 } 10454 } 10455 10456 _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); 10457 _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); 10458 _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
10459 _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); 10460 10461 _.$list.off('click.slick', _.clickHandler); 10462 10463 $(document).off(_.visibilityChange, _.visibility); 10464 10465 _.cleanUpSlideEvents(); 10466 10467 if (_.options.accessibility === true) { 10468 _.$list.off('keydown.slick', _.keyHandler); 10469 } 10470 10471 if (_.options.focusOnSelect === true) { 10472 $(_.$slideTrack).children().off('click.slick', _.selectHandler); 10473 } 10474 10475 $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); 10476 10477 $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); 10478 10479 $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); 10480 10481 $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); 10482 10483 }; 10484 10485 Slick.prototype.cleanUpSlideEvents = function() { 10486 10487 var _ = this; 10488 10489 _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true)); 10490 _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 10491 10492 }; 10493 10494 Slick.prototype.cleanUpRows = function() { 10495 10496 var _ = this, originalSlides; 10497 10498 if(_.options.rows > 0) { 10499 originalSlides = _.$slides.children().children(); 10500 originalSlides.removeAttr('style'); 10501 _.$slider.empty().append(originalSlides); 10502 } 10503 10504 }; 10505 10506 Slick.prototype.clickHandler = function(event) { 10507 10508 var _ = this; 10509 10510 if (_.shouldClick === false) { 10511 event.stopImmediatePropagation(); 10512 event.stopPropagation(); 10513 event.preventDefault(); 10514 } 10515 10516 }; 10517 10518 Slick.prototype.destroy = function(refresh) { 10519 10520 var _ = this; 10521 10522 _.autoPlayClear(); 10523 10524 _.touchObject = {}; 10525 10526 _.cleanUpEvents(); 10527 10528 $('.slick-cloned', _.$slider).detach(); 10529 10530 if (_.$dots) { 10531 _.$dots.remove(); 10532 } 10533 10534 if ( _.$prevArrow && _.$prevArrow.length ) { 10535 10536 _.$prevArrow 10537 .removeClass('slick-disabled slick-arrow slick-hidden') 10538 .removeAttr('aria-hidden aria-disabled tabindex') 10539 .css('display',''); 10540 10541 if ( _.htmlExpr.test( _.options.prevArrow )) { 10542 _.$prevArrow.remove(); 10543 } 10544 } 10545 10546 if ( _.$nextArrow && _.$nextArrow.length ) { 10547 10548 _.$nextArrow 10549 .removeClass('slick-disabled slick-arrow slick-hidden') 10550 .removeAttr('aria-hidden aria-disabled tabindex') 10551 .css('display',''); 10552 10553 if ( _.htmlExpr.test( _.options.nextArrow )) { 10554 _.$nextArrow.remove(); 10555 } 10556 } 10557 10558 10559 if (_.$slides) { 10560 10561 _.$slides 10562 .removeClass('slick-slide slick-active slick-center slick-visible slick-current') 10563 .removeAttr('aria-hidden') 10564 .removeAttr('data-slick-index') 10565 .each(function(){ 10566 $(this).attr('style', $(this).data('originalStyling')); 10567 }); 10568 10569 _.$slideTrack.children(this.options.slide).detach(); 10570 10571 _.$slideTrack.detach(); 10572 10573 _.$list.detach(); 10574 10575 _.$slider.append(_.$slides); 10576 } 10577 10578 _.cleanUpRows(); 10579 10580 _.$slider.removeClass('slick-slider'); 10581 _.$slider.removeClass('slick-initialized'); 10582 _.$slider.removeClass('slick-dotted'); 10583 10584 _.unslicked = true; 10585 10586 if(!refresh) { 10587 _.$slider.trigger('destroy', [_]); 10588 } 10589 10590 }; 10591 10592 Slick.prototype.disableTransition = function(slide) { 10593 10594 var _ = this, 10595 transition = {}; 10596 10597 transition[_.transitionType] = ''; 10598 10599 if (_.options.fade === false) { 10600 _.$slideTrack.css(transition); 10601 } else { 10602 _.$slides.eq(slide).css(transition); 10603 } 10604 10605 }; 10606 10607 Slick.prototype.fadeSlide = function(slideIndex, callback) { 10608 10609 var _ = this; 10610 10611 if (_.cssTransitions === false) { 10612 10613 _.$slides.eq(slideIndex).css({ 10614 zIndex: _.options.zIndex 10615 }); 10616 10617 _.$slides.eq(slideIndex).animate({ 10618 opacity: 1 10619 }, _.options.speed, _.options.easing, callback); 10620 10621 } else { 10622 10623 _.applyTransition(slideIndex); 10624 10625 _.$slides.eq(slideIndex).css({ 10626 opacity: 1, 10627 zIndex: _.options.zIndex 10628 }); 10629 10630 if (callback) { 10631 setTimeout(function() { 10632 10633 _.disableTransition(slideIndex); 10634 10635 callback.call(); 10636 }, _.options.speed); 10637 } 10638 10639 } 10640 10641 }; 10642 10643 Slick.prototype.fadeSlideOut = function(slideIndex) { 10644 10645 var _ = this; 10646 10647 if (_.cssTransitions === false) { 10648 10649 _.$slides.eq(slideIndex).animate({ 10650 opacity: 0, 10651 zIndex: _.options.zIndex - 2 10652 }, _.options.speed, _.options.easing); 10653 10654 } else { 10655 10656 _.applyTransition(slideIndex); 10657 10658 _.$slides.eq(slideIndex).css({ 10659 opacity: 0, 10660 zIndex: _.options.zIndex - 2 10661 }); 10662 10663 } 10664 10665 }; 10666
10667 Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 10668 10669 var _ = this; 10670 10671 if (filter !== null) { 10672 10673 _.$slidesCache = _.$slides; 10674 10675 _.unload(); 10676 10677 _.$slideTrack.children(this.options.slide).detach(); 10678 10679 _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 10680 10681 _.reinit(); 10682 10683 } 10684 10685 }; 10686 10687 Slick.prototype.focusHandler = function() { 10688 10689 var _ = this; 10690 10691 _.$slider 10692 .off('focus.slick blur.slick') 10693 .on('focus.slick blur.slick', '*', function(event) { 10694 10695 event.stopImmediatePropagation(); 10696 var $sf = $(this); 10697 10698 setTimeout(function() { 10699 10700 if( _.options.pauseOnFocus ) { 10701 _.focussed = $sf.is(':focus'); 10702 _.autoPlay(); 10703 } 10704 10705 }, 0); 10706 10707 }); 10708 }; 10709 10710 Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 10711 10712 var _ = this; 10713 return _.currentSlide; 10714 10715 }; 10716 10717 Slick.prototype.getDotCount = function() { 10718 10719 var _ = this; 10720 10721 var breakPoint = 0; 10722 var counter = 0; 10723 var pagerQty = 0; 10724 10725 if (_.options.infinite === true) { 10726 if (_.slideCount <= _.options.slidesToShow) { 10727 ++pagerQty; 10728 } else { 10729 while (breakPoint < _.slideCount) { 10730 ++pagerQty; 10731 breakPoint = counter + _.options.slidesToScroll; 10732 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 10733 } 10734 } 10735 } else if (_.options.centerMode === true) { 10736 pagerQty = _.slideCount; 10737 } else if(!_.options.asNavFor) { 10738 pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); 10739 }else { 10740 while (breakPoint < _.slideCount) { 10741 ++pagerQty; 10742 breakPoint = counter + _.options.slidesToScroll; 10743 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 10744 } 10745 } 10746 10747 return pagerQty - 1; 10748 10749 }; 10750 10751 Slick.prototype.getLeft = function(slideIndex) { 10752 10753 var _ = this, 10754 targetLeft, 10755 verticalHeight, 10756 verticalOffset = 0, 10757 targetSlide, 10758 coef; 10759 10760 _.slideOffset = 0; 10761 verticalHeight = _.$slides.first().outerHeight(true); 10762 10763 if (_.options.infinite === true) { 10764 if (_.slideCount > _.options.slidesToShow) { 10765 _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; 10766 coef = -1 10767 10768 if (_.options.vertical === true && _.options.centerMode === true) { 10769 if (_.options.slidesToShow === 2) { 10770 coef = -1.5; 10771 } else if (_.options.slidesToShow === 1) { 10772 coef = -2 10773 } 10774 } 10775 verticalOffset = (verticalHeight * _.options.slidesToShow) * coef; 10776 } 10777 if (_.slideCount % _.options.slidesToScroll !== 0) { 10778 if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 10779 if (slideIndex > _.slideCount) { 10780 _.slideOffset = ((_.options.slidesToShow - (sl
10780ideIndex - _.slideCount)) * _.slideWidth) * -1; 10781 verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; 10782 } else { 10783 _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; 10784 verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; 10785 } 10786 } 10787 } 10788 } else { 10789 if (slideIndex + _.options.slidesToShow > _.slideCount) { 10790 _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; 10791 verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; 10792 } 10793 } 10794 10795 if (_.slideCount <= _.options.slidesToShow) { 10796 _.slideOffset = 0; 10797 verticalOffset = 0; 10798 } 10799 10800 if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) { 10801 _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2); 10802 } else if (_.options.centerMode === true && _.options.infinite === true) { 10803 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 10804 } else if (_.options.centerMode === true) { 10805 _.slideOffset = 0; 10806 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 10807 } 10808 10809 if (_.options.vertical === false) { 10810 targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; 10811 } else { 10812 targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; 10813 } 10814 10815 if (_.options.variableWidth === true) { 10816
10817 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 10818 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 10819 } else { 10820 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); 10821 } 10822 10823 if (_.options.rtl === true) { 10824 if (targetSlide[0]) { 10825 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 10826 } else { 10827 targetLeft = 0; 10828 } 10829 } else { 10830 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 10831 } 10832 10833 if (_.options.centerMode === true) { 10834 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 10835 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 10836 } else { 10837 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); 10838 } 10839 10840 if (_.options.rtl === true) { 10841 if (targetSlide[0]) { 10842 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 10843 } else { 10844 targetLeft = 0; 10845 } 10846 } else { 10847 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 10848 } 10849 10850 targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 10851 } 10852 } 10853 10854 return targetLeft; 10855 10856 }; 10857 10858 Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 10859 10860 var _ = this; 10861 10862 return _.options[option]; 10863 10864 }; 10865 10866 Slick.prototype.getNavigableIndexes = function() { 10867 10868 var _ = this, 10869 breakPoint = 0, 10870 counter = 0, 10871 indexes = [], 10872 max; 10873 10874 if (_.options.infinite === false) { 10875 max = _.slideCount; 10876 } else { 10877 breakPoint = _.options.slidesToScroll * -1; 10878 counter = _.options.slidesToScroll * -1; 10879 max = _.slideCount * 2; 10880 } 10881 10882 while (breakPoint < max) { 10883 indexes.push(breakPoint); 10884 breakPoint = counter + _.options.slidesToScroll; 10885 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 10886 } 10887 10888 return indexes; 10889 10890 }; 10891 10892 Slick.prototype.getSlick = function() { 10893 10894 return this; 10895 10896 }; 10897 10898 Slick.prototype.getSlideCount = function() { 10899 10900 var _ = this, 10901 slidesTraversed, swipedSlide, centerOffset; 10902 10903 centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 10904 10905 if (_.options.swipeToSlide === true) { 10906 _.$slideTrack.find('.slick-slide').each(function(index, slide) { 10907 if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { 10908 swipedSlide = slide; 10909 return false; 10910 } 10911 }); 10912 10913 slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; 10914 10915 return slidesTraversed; 10916 10917 } else { 10918 return _.options.slidesToScroll; 10919 } 10920 10921 }; 10922 10923 Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 10924 10925 var _ = this; 10926 10927 _.changeSlide({ 10928 data: { 10929 message: 'index', 10930 index: parseInt(slide) 10931 } 10932 }, dontAnimate); 10933 10934 }; 10935 10936 Slick.prototype.init = function(creation) { 10937 10938 var _ = this; 10939 10940 if (!$(_.$slider).hasClass('slick-initialized')) { 10941 10942 $(_.$slider).addClass('slick-initialized'); 10943 10944 _.buildRows(); 10945 _.buildOut(); 10946 _.setProps(); 10947 _.startLoad(); 10948 _.loadSlider(); 10949 _.initializeEvents(); 10950 _.updateArrows(); 10951 _.updateDots(); 10952 _.checkResponsive(true); 10953 _.focusHandler(); 10954 10955 } 10956 10957 if (creation) { 10958 _.$slider.trigger('init', [_]); 10959 } 10960 10961 if (_.options.accessibility === true) { 10962 _.initADA(); 10963 } 10964 10965 if ( _.options.autoplay ) { 10966 10967 _.paused = false;
10968 _.autoPlay(); 10969 10970 } 10971 10972 }; 10973 10974 Slick.prototype.initADA = function() { 10975 var _ = this, 10976 numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow), 10977 tabControlIndexes = _.getNavigableIndexes().filter(function(val) { 10978 return (val >= 0) && (val < _.slideCount); 10979 }); 10980 10981 _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({ 10982 'aria-hidden': 'true', 10983 'tabindex': '-1' 10984 }).find('a, input, button, select').attr({ 10985 'tabindex': '-1' 10986 }); 10987 10988 if (_.$dots !== null) { 10989 _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) { 10990 var slideControlIndex = tabControlIndexes.indexOf(i); 10991 10992 $(this).attr({ 10993 'role': 'tabpanel', 10994 'id': 'slick-slide' + _.instanceUid + i, 10995 'tabindex': -1 10996 }); 10997 10998 if (slideControlIndex !== -1) { 10999 var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex 11000 if ($('#' + ariaButtonControl).length) { 11001 $(this).attr({ 11002 'aria-describedby': ariaButtonControl 11003 }); 11004 } 11005 } 11006 }); 11007 11008 _.$dots.attr('role', 'tablist').find('li').each(function(i) { 11009 var mappedSlideIndex = tabControlIndexes[i]; 11010 11011 $(this).attr({ 11012 'role': 'presentation' 11013 }); 11014 11015 $(this).find('button').first().attr({ 11016 'role': 'tab', 11017 'id': 'slick-slide-control' + _.instanceUid + i, 11018 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex, 11019 'aria-label': (i + 1) + ' of ' + numDotGroups, 11020 'aria-selected': null, 11021 'tabindex': '-1' 11022 }); 11023 11024 }).eq(_.currentSlide).find('button').attr({ 11025 'aria-selected': 'true', 11026 'tabindex': '0' 11027 }).end(); 11028 } 11029 11030 for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) { 11031 if (_.options.focusOnChange) { 11032 _.$slides.eq(i).attr({'tabindex': '0'}); 11033 } else { 11034 _.$slides.eq(i).removeAttr('tabindex'); 11035 } 11036 } 11037 11038 _.activateADA(); 11039 11040 }; 11041 11042 Slick.prototype.initArrowEvents = function() { 11043 11044 var _ = this; 11045 11046 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 11047 _.$prevArrow 11048 .off('click.slick') 11049 .on('click.slick', { 11050 message: 'previous' 11051 }, _.changeSlide); 11052 _.$nextArrow 11053 .off('click.slick') 11054 .on('click.slick', { 11055 message: 'next' 11056 }, _.changeSlide); 11057 11058 if (_.options.accessibility === true) { 11059 _.$prevArrow.on('keydown.slick', _.keyHandler); 11060 _.$nextArrow.on('keydown.slick', _.keyHandler); 11061 } 11062 } 11063 11064 }; 11065 11066 Slick.prototype.initDotEvents = function() { 11067 11068 var _ = this; 11069 11070 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 11071 $('li', _.$dots).on('click.slick', { 11072 message: 'index' 11073 }, _.changeSlide); 11074 11075 if (_.options.accessibility === true) { 11076 _.$dots.on('keydown.slick', _.keyHandler); 11077 } 11078 } 11079 11080 if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) { 11081 11082 $('li', _.$dots) 11083 .on('mouseenter.slick', $.proxy(_.interrupt, _, true)) 11084 .on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 11085 11086 } 11087 11088 }; 11089 11090 Slick.prototype.initSlideEvents = function() { 11091 11092 var _ = this; 11093 11094 if ( _.options.pauseOnHover ) { 11095 11096 _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
11097 _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 11098 11099 } 11100 11101 }; 11102 11103 Slick.prototype.initializeEvents = function() { 11104 11105 var _ = this; 11106 11107 _.initArrowEvents(); 11108 11109 _.initDotEvents(); 11110 _.initSlideEvents(); 11111 11112 _.$list.on('touchstart.slick mousedown.slick', { 11113 action: 'start' 11114 }, _.swipeHandler); 11115 _.$list.on('touchmove.slick mousemove.slick', { 11116 action: 'move' 11117 }, _.swipeHandler); 11118 _.$list.on('touchend.slick mouseup.slick', { 11119 action: 'end' 11120 }, _.swipeHandler); 11121 _.$list.on('touchcancel.slick mouseleave.slick', { 11122 action: 'end' 11123 }, _.swipeHandler); 11124 11125 _.$list.on('click.slick', _.clickHandler); 11126 11127 $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); 11128 11129 if (_.options.accessibility === true) { 11130 _.$list.on('keydown.slick', _.keyHandler); 11131 } 11132 11133 if (_.options.focusOnSelect === true) { 11134 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 11135 } 11136 11137 $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); 11138 11139 $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); 11140 11141 $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); 11142 11143 $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); 11144 $(_.setPosition); 11145 11146 }; 11147 11148 Slick.prototype.initUI = function() { 11149 11150 var _ = this; 11151 11152 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 11153 11154 _.$prevArrow.show(); 11155 _.$nextArrow.show(); 11156 11157 } 11158 11159 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 11160 11161 _.$dots.show(); 11162 11163 } 11164 11165 }; 11166 11167 Slick.prototype.keyHandler = function(event) { 11168 11169 var _ = this; 11170 //Dont slide if the cursor is inside the form fields and arrow keys are pressed 11171 if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) { 11172 if (event.keyCode === 37 && _.options.accessibility === true) { 11173 _.changeSlide({ 11174 data: { 11175 message: _.options.rtl === true ? 'next' : 'previous' 11176 } 11177 }); 11178 } else if (event.keyCode === 39 && _.options.accessibility === true) { 11179 _.changeSlide({ 11180 data: { 11181 message: _.options.rtl === true ? 'previous' : 'next' 11182 } 11183 }); 11184 } 11185 } 11186 11187 }; 11188 11189 Slick.prototype.lazyLoad = function() { 11190 11191 var _ = this, 11192 loadRange, cloneRange, rangeStart, rangeEnd; 11193 11194 function loadImages(imagesScope) { 11195 11196 $('img[data-lazy]', imagesScope).each(function() { 11197 11198 var image = $(this), 11199 imageSource = $(this).attr('data-lazy'), 11200 imageSrcSet = $(this).attr('data-srcset'), 11201 imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'), 11202 imageToLoad = document.createElement('img'); 11203 11204 imageToLoad.onload = function() { 11205 11206 image 11207 .animate({ opacity: 0 }, 100, function() { 11208 11209 if (imageSrcSet) { 11210 image 11211 .attr('srcset', imageSrcSet ); 11212 11213 if (imageSizes) { 11214 image 11215 .attr('sizes', imageSizes ); 11216 } 11217 } 11218 11219 image 11220 .attr('src', imageSource) 11221 .animate({ opacity: 1 }, 200, function() { 11222 image 11223 .removeAttr('data-lazy data-srcset data-sizes') 11224 .removeClass('slick-loading'); 11225 }); 11226 _.$slider.trigger('lazyLoaded', [_, image, imageSource]); 11227 }); 11228 11229 }; 11230 11231 imageToLoad.onerror = function() { 11232 11233 image 11234 .removeAttr( 'data-lazy' ) 11235 .removeClass( 'slick-loading' ) 11236 .addClass( 'slick-lazyload-error' ); 11237 11238 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 11239 11240 }; 11241 11242 imageToLoad.src = imageSource; 11243 11244 }); 11245 11246 } 11247 11248 if (_.options.centerMode === true) { 11249 if (_.options.infinite === true) { 11250 rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 11251 rangeEnd = rangeStart + _.options.slidesToShow + 2; 11252 } else { 11253 rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 11254 rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 11255 } 11256 } else {
11257 rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 11258 rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); 11259 if (_.options.fade === true) { 11260 if (rangeStart > 0) rangeStart--; 11261 if (rangeEnd <= _.slideCount) rangeEnd++; 11262 } 11263 } 11264 11265 loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); 11266 11267 if (_.options.lazyLoad === 'anticipated') { 11268 var prevSlide = rangeStart - 1, 11269 nextSlide = rangeEnd, 11270 $slides = _.$slider.find('.slick-slide'); 11271 11272 for (var i = 0; i < _.options.slidesToScroll; i++) { 11273 if (prevSlide < 0) prevSlide = _.slideCount - 1; 11274 loadRange = loadRange.add($slides.eq(prevSlide)); 11275 loadRange = loadRange.add($slides.eq(nextSlide)); 11276 prevSlide--; 11277 nextSlide++; 11278 } 11279 } 11280 11281 loadImages(loadRange); 11282 11283 if (_.slideCount <= _.options.slidesToShow) { 11284 cloneRange = _.$slider.find('.slick-slide'); 11285 loadImages(cloneRange); 11286 } else 11287 if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 11288 cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); 11289 loadImages(cloneRange); 11290 } else if (_.currentSlide === 0) { 11291 cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); 11292 loadImages(cloneRange); 11293 } 11294 11295 }; 11296 11297 Slick.prototype.loadSlider = function() { 11298 11299 var _ = this; 11300 11301 _.setPosition(); 11302 11303 _.$slideTrack.css({ 11304 opacity: 1 11305 }); 11306 11307 _.$slider.removeClass('slick-loading'); 11308 11309 _.initUI(); 11310 11311 if (_.options.lazyLoad === 'progressive') { 11312 _.progressiveLazyLoad(); 11313 } 11314 11315 }; 11316 11317 Slick.prototype.next = Slick.prototype.slickNext = function() { 11318 11319 var _ = this; 11320 11321 _.changeSlide({ 11322 data: { 11323 message: 'next' 11324 } 11325 }); 11326 11327 }; 11328 11329 Slick.prototype.orientationChange = function() { 11330 11331 var _ = this; 11332 11333 _.checkResponsive(); 11334 _.setPosition(); 11335 11336 }; 11337 11338 Slick.prototype.pause = Slick.prototype.slickPause = function() { 11339 11340 var _ = this; 11341 11342 _.autoPlayClear(); 11343 _.paused = true; 11344 11345 }; 11346 11347 Slick.prototype.play = Slick.prototype.slickPlay = function() { 11348 11349 var _ = this; 11350 11351 _.autoPlay(); 11352 _.options.autoplay = true; 11353 _.paused = false; 11354 _.focussed = false; 11355 _.interrupted = false; 11356 11357 }; 11358 11359 Slick.prototype.postSlide = function(index) { 11360 11361 var _ = this; 11362 11363 if( !_.unslicked ) { 11364 11365 _.$slider.trigger('afterChange', [_, index]); 11366 11367 _.animating = false; 11368 11369 if (_.slideCount > _.options.slidesToShow) { 11370 _.setPosition(); 11371 } 11372 11373 _.swipeLeft = null; 11374 11375 if ( _.options.autoplay ) { 11376 _.autoPlay(); 11377 } 11378 11379 if (_.options.accessibility === true) { 11380 _.initADA(); 11381 11382 if (_.options.focusOnChange) { 11383 var $currentSlide = $(_.$slides.get(_.currentSlide)); 11384 $currentSlide.attr('tabindex', 0).focus(); 11385 } 11386 } 11387 11388 } 11389 11390 }; 11391 11392 Slick.prototype.prev = Slick.prototype.slickPrev = function() { 11393 11394 var _ = this; 11395 11396 _.changeSlide({ 11397 data: { 11398 message: 'previous' 11399 } 11400 }); 11401 11402 }; 11403 11404 Slick.prototype.preventDefault = function(event) { 11405 11406 event.preventDefault(); 11407 11408 }; 11409 11410 Slick.prototype.progressiveLazyLoad = function( tryCount ) { 11411 11412 tryCount = tryCount || 1; 11413 11414 var _ = this, 11415 $imgsToLoad = $( 'img[data-lazy]', _.$slider ), 11416 image, 11417 imageSource, 11418 imageSrcSet, 11419 imageSizes, 11420 imageToLoad; 11421 11422 if ( $imgsToLoad.length ) { 11423 11424 image = $imgsToLoad.first(); 11425 imageSource = image.attr('data-lazy'); 11426 imageSrcSet = image.attr('data-srcset'); 11427 imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes'); 11428 imageToLoad = document.createElement('img'); 11429 11430 imageToLoad.onload = function() { 11431 11432 if (imageSrcSet) { 11433 image 11434 .attr('srcset', imageSrcSet ); 11435 11436 if (imageSizes) { 11437 image 11438 .attr('sizes', imageSizes ); 11439 } 11440 } 11441 11442 image 11443 .attr( 'src', imageSource ) 11444 .removeAttr('data-lazy data-srcset data-sizes') 11445 .removeClass('slick-loading'); 11446 11447 if ( _.options.adaptiveHeight === true ) { 11448 _.setPosition(); 11449 } 11450 11451 _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]); 11452 _.progressiveLazyLoad(); 11453 11454 }; 11455 11456 imageToLoad.onerror = function() { 11457 11458 if ( tryCount < 3 ) { 11459 11460 /** 11461 * try to load the image 3 times, 11462 * leave a slight delay so we don't get 11463 * servers blocking the request. 11464 */ 11465 setTimeout( function() { 11466 _.progressiveLazyLoad( tryCount + 1 ); 11467 }, 500 ); 11468 11469 } else { 11470 11471 image 11472 .removeAttr( 'data-lazy' ) 11473 .removeClass( 'slick-loading' ) 11474 .addClass( 'slick-lazyload-error' ); 11475 11476 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 11477 11478 _.progressiveLazyLoad(); 11479 11480 } 11481 11482 }; 11483 11484 imageToLoad.src = imageSource; 11485 11486 } else { 11487 11488 _.$slider.trigger('allImagesLoaded', [ _ ]); 11489 11490 } 11491 11492 }; 11493 11494 Slick.prototype.refresh = function( initializing ) { 11495 11496 var _ = this, currentSlide, lastVisibleIndex; 11497 11498 lastVisibleIndex = _.slideCount - _.options.slidesToShow; 11499 11500 // in non-infinite sliders, we don't want to go past the 11501 // last visible index. 11502 if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) { 11503 _.currentSlide = lastVisibleIndex; 11504 } 11505 11506 // if less slides than to show, go to start. 11507 if ( _.slideCount <= _.options.slidesToShow ) { 11508 _.currentSlide = 0; 11509 11510 } 11511 11512 currentSlide = _.currentSlide; 11513 11514 _.destroy(true); 11515 11516 $.extend(_, _.initials, { currentSlide: currentSlide }); 11517
11518 _.init(); 11519 11520 if( !initializing ) { 11521 11522 _.changeSlide({ 11523 data: { 11524 message: 'index', 11525 index: currentSlide 11526 } 11527 }, false); 11528 11529 } 11530 11531 }; 11532 11533 Slick.prototype.registerBreakpoints = function() { 11534 11535 var _ = this, breakpoint, currentBreakpoint, l, 11536 responsiveSettings = _.options.responsive || null; 11537 11538 if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) { 11539 11540 _.respondTo = _.options.respondTo || 'window'; 11541 11542 for ( breakpoint in responsiveSettings ) { 11543 11544 l = _.breakpoints.length-1; 11545 11546 if (responsiveSettings.hasOwnProperty(breakpoint)) { 11547 currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 11548 11549 // loop through the breakpoints and cut out any existing 11550 // ones with the same breakpoint number, we don't want dupes. 11551 while( l >= 0 ) { 11552 if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) { 11553 _.breakpoints.splice(l,1); 11554 } 11555 l--; 11556 } 11557 11558 _.breakpoints.push(currentBreakpoint); 11559 _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 11560 11561 } 11562 11563 } 11564 11565 _.breakpoints.sort(function(a, b) { 11566 return ( _.options.mobileFirst ) ? a-b : b-a; 11567 }); 11568 11569 } 11570 11571 }; 11572 11573 Slick.prototype.reinit = function() { 11574 11575 var _ = this; 11576 11577 _.$slides = 11578 _.$slideTrack 11579 .children(_.options.slide) 11580 .addClass('slick-slide'); 11581 11582 _.slideCount = _.$slides.length; 11583 11584 if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 11585 _.currentSlide = _.currentSlide - _.options.slidesToScroll; 11586 } 11587 11588 if (_.slideCount <= _.options.slidesToShow) { 11589 _.currentSlide = 0; 11590 } 11591 11592 _.registerBreakpoints(); 11593 11594 _.setProps(); 11595 _.setupInfinite(); 11596 _.buildArrows(); 11597 _.updateArrows(); 11598 _.initArrowEvents(); 11599 _.buildDots(); 11600 _.updateDots(); 11601 _.initDotEvents(); 11602 _.cleanUpSlideEvents(); 11603 _.initSlideEvents(); 11604 11605 _.checkResponsive(false, true); 11606 11607 if (_.options.focusOnSelect === true) { 11608 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 11609 } 11610 11611 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 11612 11613 _.setPosition(); 11614 _.focusHandler(); 11615 11616 _.paused = !_.options.autoplay; 11617 _.autoPlay(); 11618 11619 _.$slider.trigger('reInit', [_]); 11620 11621 }; 11622 11623 Slick.prototype.resize = function() { 11624 11625 var _ = this; 11626 11627 if ($(window).width() !== _.windowWidth) { 11628 clearTimeout(_.windowDelay); 11629 _.windowDelay = window.setTimeout(function() { 11630 _.windowWidth = $(window).width(); 11631 _.checkResponsive(); 11632 if( !_.unslicked ) { _.setPosition(); } 11633 }, 50); 11634 } 11635 }; 11636 11637 Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 11638 11639 var _ = this; 11640 11641 if (typeof(index) === 'boolean') { 11642 removeBefore = index; 11643 index = removeBefore === true ? 0 : _.slideCount - 1; 11644 } else { 11645 index = removeBefore === true ? --index : index; 11646 } 11647 11648 if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 11649 return false; 11650 } 11651 11652 _.unload(); 11653 11654 if (removeAll === true) { 11655 _.$slideTrack.children().remove(); 11656 } else { 11657 _.$slideTrack.children(this.options.slide).eq(index).remove(); 11658 } 11659 11660 _.$slides = _.$slideTrack.children(this.options.slide); 11661 11662 _.$slideTrack.children(this.options.slide).detach(); 11663 11664 _.$slideTrack.append(_.$slides); 11665 11666 _.$slidesCache = _.$slides; 11667 11668 _.reinit(); 11669 11670 }; 11671 11672 Slick.prototype.setCSS = function(position) { 11673 11674 var _ = this, 11675 positionProps = {}, 11676 x, y; 11677 11678 if (_.options.rtl === true) { 11679 position = -position; 11680 } 11681 x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; 11682 y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; 11683 11684 positionProps[_.positionProp] = position; 11685 11686 if (_.transformsEnabled === false) { 11687 _.$slideTrack.css(positionProps); 11688 } else { 11689 positionProps = {}; 11690 if (_.cssTransitions === false) { 11691 positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; 11692 _.$slideTrack.css(positionProps); 11693 } else { 11694 positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; 11695 _.$slideTrack.css(positionProps); 11696 } 11697 } 11698 11699 }; 11700 11701 Slick.prototype.setDimensions = function() { 11702 11703 var _ = this; 11704 11705 if (_.options.vertical === false) { 11706 if (_.options.centerMode === true) { 11707 _.$list.css({ 11708 padding: ('0px ' + _.options.centerPadding) 11709 }); 11710 } 11711 } else { 11712 _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 11713 if (_.options.centerMode === true) { 11714 _.$list.css({ 11715 padding: (_.options.centerPadding + ' 0px') 11716 }); 11717 } 11718 } 11719 11720 _.listWidth = _.$list.width(); 11721 _.listHeight = _.$list.height(); 11722 11723 11724 if (_.options.vertical === false && _.options.variableWidth === false) { 11725 _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 11726 _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); 11727 11728 } else if (_.options.variableWidth === true) { 11729 _.$slideTrack.width(5000 * _.slideCount); 11730 } else { 11731 _.slideWidth = Math.ceil(_.listWidth); 11732 _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); 11733 } 11734 11735 var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 11736 if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); 11737 11738 }; 11739 11740 Slick.prototype.setFade = function() { 11741 11742 var _ = this, 11743 targetLeft; 11744 11745 _.$slides.each(function(index, element) { 11746 targetLeft = (_.slideWidth * index) * -1; 11747 if (_.options.rtl === true) { 11748 $(element).css({ 11749 position: 'relative', 11750 right: targetLeft, 11751 top: 0, 11752 zIndex: _.options.zIndex - 2, 11753 opacity: 0 11754 }); 11755 } else { 11756 $(element).css({ 11757 position: 'relative', 11758 left: targetLeft, 11759 top: 0, 11760 zIndex: _.options.zIndex - 2, 11761 opacity: 0 11762 }); 11763 } 11764 }); 11765 11766 _.$slides.eq(_.currentSlide).css({ 11767 zIndex: _.options.zIndex - 1, 11768 opacity: 1 11769 }); 11770 11771 }; 11772 11773 Slick.prototype.setHeight = function() { 11774 11775 var _ = this; 11776 11777 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 11778 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 11779 _.$list.css('height', targetHeight); 11780 } 11781 11782 }; 11783 11784 Slick.prototype.setOption = 11785 Slick.prototype.slickSetOption = function() { 11786 11787 /** 11788 * accepts arguments in format of: 11789 * 11790 * - for changing a single option's value: 11791 * .slick("setOption", option, value, refresh ) 11792 * 11793 * - for changing a set of responsive options: 11794 * .slick("setOption", 'responsive', [{}, ...], refresh ) 11795 * 11796 * - for updating multiple values at once (not responsive) 11797 * .slick("setOption", { 'option': value, ... }, refresh ) 11798 */ 11799 11800 var _ = this, l, item, option, value, refresh = false, t
11800ype; 11801 11802 if( $.type( arguments[0] ) === 'object' ) { 11803 11804 option = arguments[0]; 11805 refresh = arguments[1]; 11806 type = 'multiple'; 11807 11808 } else if ( $.type( arguments[0] ) === 'string' ) { 11809 11810 option = arguments[0]; 11811 value = arguments[1]; 11812 refresh = arguments[2]; 11813 11814 if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) { 11815 11816 type = 'responsive'; 11817 11818 } else if ( typeof arguments[1] !== 'undefined' ) { 11819 11820 type = 'single'; 11821 11822 } 11823 11824 } 11825 11826 if ( type === 'single' ) { 11827 11828 _.options[option] = value; 11829 11830 11831 } else if ( type === 'multiple' ) { 11832 11833 $.each( option , function( opt, val ) { 11834 11835 _.options[opt] = val; 11836 11837 }); 11838 11839 11840 } else if ( type === 'responsive' ) { 11841 11842 for ( item in value ) { 11843 11844 if( $.type( _.options.responsive ) !== 'array' ) { 11845 11846 _.options.responsive = [ value[item] ]; 11847 11848 } else { 11849 11850 l = _.options.responsive.length-1; 11851 11852 // loop through the responsive object and splice out duplicates. 11853 while( l >= 0 ) { 11854 11855 if( _.options.responsive[l].breakpoint === value[item].breakpoint ) { 11856 11857 _.options.responsive.splice(l,1); 11858 11859 } 11860 11861 l--; 11862 11863 } 11864 11865 _.options.responsive.push( value[item] ); 11866 11867 } 11868 11869 } 11870 11871 } 11872 11873 if ( refresh ) { 11874 11875 _.unload(); 11876 _.reinit(); 11877 11878 } 11879 11880 }; 11881 11882 Slick.prototype.setPosition = function() { 11883 11884 var _ = this; 11885 11886 _.setDimensions(); 11887 11888 _.setHeight(); 11889 11890 if (_.options.fade === false) { 11891 _.setCSS(_.getLeft(_.currentSlide)); 11892 } else { 11893 _.setFade(); 11894 } 11895 11896 _.$slider.trigger('setPosition', [_]); 11897 11898 }; 11899 11900 Slick.prototype.setProps = function() { 11901 11902 var _ = this, 11903 bodyStyle = document.body.style; 11904 11905 _.positionProp = _.options.vertical === true ? 'top' : 'left'; 11906 11907 if (_.positionProp === 'top') { 11908 _.$slider.addClass('slick-vertical'); 11909 } else { 11910 _.$slider.removeClass('slick-vertical'); 11911 } 11912 11913 if (bodyStyle.WebkitTransition !== undefined || 11914 bodyStyle.MozTransition !== undefined || 11915 bodyStyle.msTransition !== undefined) { 11916 if (_.options.useCSS === true) { 11917 _.cssTransitions = true; 11918 } 11919 } 11920 11921 if ( _.options.fade ) { 11922 if ( typeof _.options.zIndex === 'number' ) { 11923 if( _.options.zIndex < 3 ) { 11924 _.options.zIndex = 3; 11925 } 11926 } else { 11927 _.options.zIndex = _.defaults.zIndex; 11928 } 11929 } 11930 11931 if (bodyStyle.OTransform !== undefined) { 11932 _.animType = 'OTransform'; 11933 _.transformType = '-o-transform'; 11934 _.transitionType = 'OTransition'; 11935 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
11936 } 11937 if (bodyStyle.MozTransform !== undefined) { 11938 _.animType = 'MozTransform'; 11939 _.transformType = '-moz-transform'; 11940 _.transitionType = 'MozTransition'; 11941 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; 11942 } 11943 if (bodyStyle.webkitTransform !== undefined) { 11944 _.animType = 'webkitTransform'; 11945 _.transformType = '-webkit-transform'; 11946 _.transitionType = 'webkitTransition'; 11947 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 11948 } 11949 if (bodyStyle.msTransform !== undefined) { 11950 _.animType = 'msTransform'; 11951 _.transformType = '-ms-transform'; 11952 _.transitionType = 'msTransition'; 11953 if (bodyStyle.msTransform === undefined) _.animType = false; 11954 } 11955 if (bodyStyle.transform !== undefined && _.animType !== false) { 11956 _.animType = 'transform'; 11957 _.transformType = 'transform'; 11958 _.transitionType = 'transition'; 11959 } 11960 _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); 11961 }; 11962 11963 11964 Slick.prototype.setSlideClasses = function(index) { 11965 11966 var _ = this, 11967 centerOffset, allSlides, indexOffset, remainder; 11968 11969 allSlides = _.$slider 11970 .find('.slick-slide') 11971 .removeClass('slick-active slick-center slick-current') 11972 .attr('aria-hidden', 'true'); 11973 11974 _.$slides 11975 .eq(index) 11976 .addClass('slick-current'); 11977 11978 if (_.options.centerMode === true) { 11979 11980 var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0; 11981 11982 centerOffset = Math.floor(_.options.slidesToShow / 2); 11983 11984 if (_.options.infinite === true) { 11985 11986 if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { 11987 _.$slides 11988 .slice(index - centerOffset + evenCoef, index + centerOffset + 1) 11989 .addClass('slick-active') 11990 .attr('aria-hidden', 'false'); 11991 11992 } else { 11993 11994 indexOffset = _.options.slidesToShow + index; 11995 allSlides 11996 .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2) 11997 .addClass('slick-active') 11998 .attr('aria-hidden', 'false'); 11999 12000 } 12001 12002 if (index === 0) { 12003 12004 allSlides 12005 .eq(allSlides.length - 1 - _.options.slidesToShow) 12006 .addClass('slick-center'); 12007 12008 } else if (index === _.slideCount - 1) { 12009 12010 allSlides 12011 .eq(_.options.slidesToShow) 12012 .addClass('slick-center'); 12013 12014 } 12015 12016 } 12017 12018 _.$slides 12019 .eq(index) 12020 .addClass('slick-center'); 12021 12022 } else { 12023 12024 if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { 12025 12026 _.$slides 12027 .slice(index, index + _.options.slidesToShow) 12028 .addClass('slick-active') 12029 .attr('aria-hidden', 'false'); 12030 12031 } else if (allSlides.length <= _.options.slidesToShow) { 12032 12033 allSlides 12034 .addClass('slick-active') 12035 .attr('aria-hidden', 'false'); 12036 12037 } else { 12038 12039 remainder = _.slideCount % _.options.slidesToShow; 12040 indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 12041 12042 if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { 12043 12044 allSlides 12045 .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder) 12046 .addClass('slick-active') 12047 .attr('aria-hidden', 'false'); 12048 12049 } else { 12050 12051 allSlides 12052 .slice(indexOffset, indexOffset + _.options.slidesToShow) 12053 .addClass('slick-active') 12054 .attr('aria-hidden', 'false'); 12055 12056 } 12057 12058 } 12059 12060 } 12061 12062 if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') { 12063 _.lazyLoad(); 12064 } 12065 }; 12066 12067 Slick.prototype.setupInfinite = function() { 12068 12069 var _ = this, 12070 i, slideIndex, infiniteCount; 12071 12072 if (_.options.fade === true) {
12073 _.options.centerMode = false; 12074 } 12075 12076 if (_.options.infinite === true && _.options.fade === false) { 12077 12078 slideIndex = null; 12079 12080 if (_.slideCount > _.options.slidesToShow) { 12081 12082 if (_.options.centerMode === true) { 12083 infiniteCount = _.options.slidesToShow + 1; 12084 } else { 12085 infiniteCount = _.options.slidesToShow; 12086 } 12087 12088 for (i = _.slideCount; i > (_.slideCount - 12089 infiniteCount); i -= 1) { 12090 slideIndex = i - 1; 12091 $(_.$slides[slideIndex]).clone(true).attr('id', '') 12092 .attr('data-slick-index', slideIndex - _.slideCount) 12093 .prependTo(_.$slideTrack).addClass('slick-cloned'); 12094 } 12095 for (i = 0; i < infiniteCount + _.slideCount; i += 1) { 12096 slideIndex = i; 12097 $(_.$slides[slideIndex]).clone(true).attr('id', '') 12098 .attr('data-slick-index', slideIndex + _.slideCount) 12099 .appendTo(_.$slideTrack).addClass('slick-cloned'); 12100 } 12101 _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { 12102 $(this).attr('id', ''); 12103 }); 12104 12105 } 12106 12107 } 12108 12109 }; 12110 12111 Slick.prototype.interrupt = function( toggle ) { 12112 12113 var _ = this; 12114 12115 if( !toggle ) { 12116 _.autoPlay(); 12117 } 12118 _.interrupted = toggle; 12119 12120 }; 12121 12122 Slick.prototype.selectHandler = function(event) { 12123 12124 var _ = this; 12125 12126 var targetElement = 12127 $(event.target).is('.slick-slide') ? 12128 $(event.target) : 12129 $(event.target).parents('.slick-slide'); 12130 12131 var index = parseInt(targetElement.attr('data-slick-index')); 12132 12133 if (!index) index = 0; 12134 12135 if (_.slideCount <= _.options.slidesToShow) { 12136 12137 _.slideHandler(index, false, true); 12138 return; 12139 12140 } 12141 12142 _.slideHandler(index); 12143 12144 }; 12145 12146 Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 12147 12148 var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, 12149 _ = this, navTarget; 12150 12151 sync = sync || false; 12152 12153 if (_.animating === true && _.options.waitForAnimate === true) { 12154 return; 12155 } 12156 12157 if (_.options.fade === true && _.currentSlide === index) { 12158 return; 12159 } 12160 12161 if (sync === false) { 12162 _.asNavFor(index); 12163 } 12164 12165 targetSlide = index; 12166 targetLeft = _.getLeft(targetSlide); 12167 slideLeft = _.getLeft(_.currentSlide); 12168 12169 _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 12170 12171 if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 12172 if (_.options.fade === false) { 12173 targetSlide = _.currentSlide; 12174 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 12175 _.animateSlide(slideLeft, function() { 12176 _.postSlide(targetSlide); 12177 }); 12178 } else { 12179 _.postSlide(targetSlide); 12180 } 12181 } 12182 return; 12183 } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { 12184 if (_.options.fade === false) { 12185 targetSlide = _.currentSlide; 12186 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 12187 _.animateSlide(slideLeft, function() { 12188 _.postSlide(targetSlide); 12189 }); 12190 } else { 12191 _.postSlide(targetSlide); 12192 } 12193 } 12194 return; 12195 } 12196 12197 if ( _.options.autoplay ) { 12198 clearInterval(_.autoPlayTimer); 12199 } 12200 12201 if (targetSlide < 0) { 12202 if (_.slideCount % _.options.slidesToScroll !== 0) { 12203 animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); 12204 } else { 12205 animSlide = _.slideCount + targetSlide; 12206 } 12207 }
12207 else if (targetSlide >= _.slideCount) { 12208 if (_.slideCount % _.options.slidesToScroll !== 0) { 12209 animSlide = 0; 12210 } else { 12211 animSlide = targetSlide - _.slideCount; 12212 } 12213 } else { 12214 animSlide = targetSlide; 12215 } 12216 12217 _.animating = true; 12218 12219 _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]); 12220 12221 oldSlide = _.currentSlide; 12222 _.currentSlide = animSlide; 12223 12224 _.setSlideClasses(_.currentSlide); 12225 12226 if ( _.options.asNavFor ) { 12227 12228 navTarget = _.getNavTarget(); 12229 navTarget = navTarget.slick('getSlick'); 12230 12231 if ( navTarget.slideCount <= navTarget.options.slidesToShow ) { 12232 navTarget.setSlideClasses(_.currentSlide); 12233 } 12234 12235 } 12236 12237 _.updateDots(); 12238 _.updateArrows(); 12239 12240 if (_.options.fade === true) { 12241 if (dontAnimate !== true) { 12242 12243 _.fadeSlideOut(oldSlide); 12244 12245 _.fadeSlide(animSlide, function() { 12246 _.postSlide(animSlide); 12247 }); 12248 12249 } else { 12250 _.postSlide(animSlide); 12251 } 12252 _.animateHeight(); 12253 return; 12254 } 12255 12256 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 12257 _.animateSlide(targetLeft, function() { 12258 _.postSlide(animSlide); 12259 }); 12260 } else { 12261 _.postSlide(animSlide); 12262 } 12263 12264 }; 12265 12266 Slick.prototype.startLoad = function() { 12267 12268 var _ = this; 12269 12270 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 12271 12272 _.$prevArrow.hide(); 12273 _.$nextArrow.hide(); 12274 12275 } 12276 12277 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 12278 12279 _.$dots.hide(); 12280 12281 } 12282 12283 _.$slider.addClass('slick-loading'); 12284 12285 }; 12286 12287 Slick.prototype.swipeDirection = function() { 12288 12289 var xDist, yDist, r, swipeAngle, _ = this; 12290 12291 xDist = _.touchObject.startX - _.touchObject.curX; 12292 yDist = _.touchObject.startY - _.touchObject.curY; 12293 r = Math.atan2(yDist, xDist); 12294 12295 swipeAngle = Math.round(r * 180 / Math.PI); 12296 if (swipeAngle < 0) { 12297 swipeAngle = 360 - Math.abs(swipeAngle); 12298 } 12299 12300 if ((swipeAngle <= 45) && (swipeAngle >= 0)) { 12301 return (_.options.rtl === false ? 'left' : 'right'); 12302 } 12303 if ((swipeAngle <= 360) && (swipeAngle >= 315)) { 12304 return (_.options.rtl === false ? 'left' : 'right'); 12305 } 12306 if ((swipeAngle >= 135) && (swipeAngle <= 225)) { 12307 return (_.options.rtl === false ? 'right' : 'left'); 12308 } 12309 if (_.options.verticalSwiping === true) { 12310 if ((swipeAngle >= 35) && (swipeAngle <= 135)) { 12311 return 'down'; 12312 } else { 12313 return 'up'; 12314 } 12315 } 12316 12317 return 'vertical'; 12318 12319 }; 12320 12321 Slick.prototype.swipeEnd = function(event) { 12322 12323 var _ = this, 12324 slideCount, 12325 direction; 12326 12327 _.dragging = false; 12328 _.swiping = false; 12329 12330 if (_.scrolling) { 12331 _.scrolling = false; 12332 return false; 12333 } 12334 12335 _.interrupted = false; 12336 _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true; 12337 12338 if ( _.touchObject.curX === undefined ) { 12339 return false; 12340 } 12341 12342 if ( _.touchObject.edgeHit === true ) { 12343 _.$slider.trigger('edge', [_, _.swipeDirection() ]); 12344 } 12345 12346 if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) { 12347 12348 direction = _.swipeDirection(); 12349 12350 switch ( direction ) { 12351 12352 case 'left': 12353 case 'down': 12354 12355 slideCount = 12356 _.options.swipeToSlide ? 12357 _.checkNavigable( _.currentSlide + _.getSlideCount() ) : 12358 _.currentSlide + _.getSlideCount(); 12359 12360 _.currentDirection = 0; 12361 12362 break; 12363 12364 case 'right': 12365 case 'up': 12366 12367 slideCount =
12368 _.options.swipeToSlide ? 12369 _.checkNavigable( _.currentSlide - _.getSlideCount() ) : 12370 _.currentSlide - _.getSlideCount(); 12371 12372 _.currentDirection = 1; 12373 12374 break; 12375 12376 default: 12377 12378 12379 } 12380 12381 if( direction != 'vertical' ) { 12382 12383 _.slideHandler( slideCount ); 12384 _.touchObject = {}; 12385 _.$slider.trigger('swipe', [_, direction ]); 12386 12387 } 12388 12389 } else { 12390 12391 if ( _.touchObject.startX !== _.touchObject.curX ) { 12392 12393 _.slideHandler( _.currentSlide ); 12394 _.touchObject = {}; 12395 12396 } 12397 12398 } 12399 12400 }; 12401 12402 Slick.prototype.swipeHandler = function(event) { 12403 12404 var _ = this; 12405 12406 if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) { 12407 return; 12408 } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { 12409 return; 12410 } 12411 12412 _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? 12413 event.originalEvent.touches.length : 1; 12414 12415 _.touchObject.minSwipe = _.listWidth / _.options 12416 .touchThreshold; 12417 12418 if (_.options.verticalSwiping === true) { 12419 _.touchObject.minSwipe = _.listHeight / _.options 12420 .touchThreshold; 12421 } 12422 12423 switch (event.data.action) { 12424 12425 case 'start': 12426 _.swipeStart(event); 12427 break; 12428 12429 case 'move': 12430 _.swipeMove(event); 12431 break; 12432 12433 case 'end': 12434 _.swipeEnd(event); 12435 break; 12436 12437 } 12438 12439 }; 12440 12441 Slick.prototype.swipeMove = function(event) { 12442 12443 var _ = this, 12444 edgeWasHit = false, 12445 curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength; 12446 12447 touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; 12448 12449 if (!_.dragging || _.scrolling || touches && touches.length !== 1) { 12450 return false; 12451 } 12452 12453 curLeft = _.getLeft(_.currentSlide); 12454 12455 _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; 12456 _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; 12457 12458 _.touchObject.swipeLength = Math.round(Math.sqrt( 12459 Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); 12460 12461 verticalSwipeLength = Math.round(Math.sqrt( 12462 Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); 12463 12464 if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) { 12465 _.scrolling = true; 12466 return false; 12467 } 12468 12469 if (_.options.verticalSwiping === true) { 12470 _.touchObject.swipeLength = verticalSwipeLength; 12471 } 12472 12473 swipeDirection = _.swipeDirection(); 12474 12475 if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { 12476 _.swiping = true; 12477 event.preventDefault(); 12478 } 12479 12480 positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 12481 if (_.options.verticalSwiping === true) { 12482 positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 12483 } 12484 12485 12486 swipeLength = _.touchObject.swipeLength; 12487 12488 _.touchObject.edgeHit = false; 12489 12490 if (_.options.infinite === false) { 12491 if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) { 12492 swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 12493 _.touchObject.edgeHit = true; 12494 } 12495 } 12496 12497 if (_.options.vertical === false) { 12498 _.swipeLeft = curLeft + swipeLength * positionOffset; 12499 } else { 12500 _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; 12501 } 12502 if (_.options.verticalSwiping === true) { 12503 _.swipeLeft = curLeft + swipeLength * positionOffset; 12504 } 12505 12506 if (_.options.fade === true || _.options.touchMove === false) { 12507 return false;
12508 } 12509 12510 if (_.animating === true) { 12511 _.swipeLeft = null; 12512 return false; 12513 } 12514 12515 _.setCSS(_.swipeLeft); 12516 12517 }; 12518 12519 Slick.prototype.swipeStart = function(event) { 12520 12521 var _ = this, 12522 touches; 12523 12524 _.interrupted = true; 12525 12526 if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 12527 _.touchObject = {}; 12528 return false; 12529 } 12530 12531 if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { 12532 touches = event.originalEvent.touches[0]; 12533 } 12534 12535 _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; 12536 _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; 12537 12538 _.dragging = true; 12539 12540 }; 12541 12542 Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 12543 12544 var _ = this; 12545 12546 if (_.$slidesCache !== null) { 12547 12548 _.unload(); 12549 12550 _.$slideTrack.children(this.options.slide).detach(); 12551 12552 _.$slidesCache.appendTo(_.$slideTrack); 12553 12554 _.reinit(); 12555 12556 } 12557 12558 }; 12559 12560 Slick.prototype.unload = function() { 12561 12562 var _ = this; 12563 12564 $('.slick-cloned', _.$slider).remove(); 12565 12566 if (_.$dots) { 12567 _.$dots.remove(); 12568 } 12569 12570 if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 12571 _.$prevArrow.remove(); 12572 } 12573 12574 if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 12575 _.$nextArrow.remove(); 12576 } 12577 12578 _.$slides 12579 .removeClass('slick-slide slick-active slick-visible slick-current') 12580 .attr('aria-hidden', 'true') 12581 .css('width', ''); 12582 12583 }; 12584 12585 Slick.prototype.unslick = function(fromBreakpoint) { 12586 12587 var _ = this; 12588 _.$slider.trigger('unslick', [_, fromBreakpoint]); 12589 _.destroy(); 12590 12591 }; 12592 12593 Slick.prototype.updateArrows = function() { 12594 12595 var _ = this, 12596 centerOffset; 12597 12598 centerOffset = Math.floor(_.options.slidesToShow / 2); 12599 12600 if ( _.options.arrows === true && 12601 _.slideCount > _.options.slidesToShow && 12602 !_.options.infinite ) { 12603 12604 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 12605 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 12606 12607 if (_.currentSlide === 0) { 12608 12609 _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 12610 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 12611 12612 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 12613 12614 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 12615 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 12616 12617 } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 12618 12619 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 12620 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 12621 12622 } 12623 12624 } 12625 12626 }; 12627 12628 Slick.prototype.updateDots = function() { 12629 12630 var _ = this; 12631 12632 if (_.$dots !== null) { 12633 12634 _.$dots 12635 .find('li') 12636 .removeClass('slick-active') 12637 .end(); 12638 12639 _.$dots 12640 .find('li') 12641 .eq(Math.floor(_.currentSlide / _.options.slidesToScroll)) 12642 .addClass('slick-active'); 12643 12644 } 12645 12646 }; 12647 12648 Slick.prototype.visibility = function() { 12649 12650 var _ = this; 12651 12652 if ( _.options.autoplay ) { 12653 12654 if ( document[_.hidden] ) { 12655 12656 _.interrupted = true; 12657 12658 } else { 12659 12660 _.interrupted = false; 12661 12662 } 12663 12664 } 12665 12666 }; 12667 12668 $.fn.slick = function() { 12669 var _ = this, 12670 opt = arguments[0], 12671 args = Array.prototype.slice.call(arguments, 1), 12672 l = _.length, 12673 i, 12674 ret; 12675 for (i = 0; i < l; i++) { 12676 if (typeof opt == 'object' || typeof opt == 'undefined') 12677 _[i].slick = new Slick(_[i], opt); 12678 else 12679 ret = _[i].slick[opt].apply(_[i].slick, args); 12680 if (typeof ret != 'undefined') return ret; 12681 } 12682 return _; 12683 }; 12684 12685})); 12686 12687},{"jquery":2}],4:[function(require,module,exports){ 12688(function (global
vendor: 68,394 bytes, lines 12688-14732
12688){ 12689(function (global, factory) { 12690 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 12691 typeof define === 'function' && define.amd ? define('underscore', factory) : 12692 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { 12693 var current = global._; 12694 var exports = global._ = factory(); 12695 exports.noConflict = function () { global._ = current; return exports; }; 12696 }())); 12697}(this, (function () { 12698 // Underscore.js 1.13.1 12699 // https://underscorejs.org 12700 // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors 12701 // Underscore may be freely distributed under the MIT license. 12702 12703 // Current version. 12704 var VERSION = '1.13.1'; 12705 12706 // Establish the root object, `window` (`self`) in the browser, `global` 12707 // on the server, or `this` in some virtual machines. We use `self` 12708 // instead of `window` for `WebWorker` support. 12709 var root = typeof self == 'object' && self.self === self && self || 12710 typeof global == 'object' && global.global === global && global || 12711 Function('return this')() || 12712 {}; 12713 12714 // Save bytes in the minified (but not gzipped) version: 12715 var ArrayProto = Array.prototype, ObjProto = Object.prototype; 12716 var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; 12717 12718 // Create quick reference variables for speed access to core prototypes. 12719 var push = ArrayProto.push, 12720 slice = ArrayProto.slice, 12721 toString = ObjProto.toString, 12722 hasOwnProperty = ObjProto.hasOwnProperty; 12723 12724 // Modern feature detection. 12725 var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', 12726 supportsDataView = typeof DataView !== 'undefined'; 12727 12728 // All **ECMAScript 5+** native function implementations that we hope to use 12729 // are declared here. 12730 var nativeIsArray = Array.isArray, 12731 nativeKeys = Object.keys, 12732 nativeCreate = Object.create, 12733 nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; 12734 12735 // Create references to these builtin functions because we override them. 12736 var _isNaN = isNaN, 12737 _isFinite = isFinite; 12738 12739 // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. 12740 var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); 12741 var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 12742 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; 12743 12744 // The largest integer that can be represented exactly. 12745 var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; 12746 12747 // Some functions take a variable number of arguments, or a few expected 12748 // arguments at the beginning and then a variable number of values to operate 12749 // on. This helper accumulates all remaining arguments past the function’s 12750 // argument length (or an explicit `startIndex`), into an array that becomes 12751 // the last argument. Similar to ES6’s "rest parameter". 12752 function restArguments(func, startIndex) { 12753 startIndex = startIndex == null ? func.length - 1 : +startIndex; 12754 return function() { 12755 var length = Math.max(arguments.length - startIndex, 0), 12756 rest = Array(length), 12757 index = 0; 12758 for (; index < length; index++) { 12759 rest[index] = arguments[index + startIndex]; 12760 } 12761 switch (startIndex) { 12762 case 0: return func.call(this, rest); 12763 case 1: return func.call(this, arguments[0], rest); 12764 case 2: return func.call(this, arguments[0], arguments[1], rest); 12765 } 12766 var args = Array(startIndex + 1); 12767 for (index = 0; index < startIndex; index++) { 12768 args[index] = arguments[index]; 12769 } 12770 args[startIndex] = rest; 12771 return func.apply(this, args); 12772 }; 12773 } 12774 12775 // Is a given variable an object? 12776 function isObject(obj) { 12777 var type = typeof obj; 12778 return type === 'function' || type === 'object' && !!obj; 12779 } 12780 12781 // Is a given value equal to null? 12782 function isNull(obj) { 12783 return obj === null; 12784 } 12785 12786 // Is a given variable undefined? 12787 function isUndefined(obj) { 12788 return obj === void 0; 12789 } 12790 12791 // Is a given value a boolean? 12792 function isBoolean(obj) { 12793 return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; 12794 } 12795 12796 // Is a given value a DOM element? 12797 function isElement(obj) { 12798 return !!(obj && obj.nodeType === 1); 12799 } 12800 12801 // Internal function for creating a `toString`-based type tester. 12802 function tagTester(name) { 12803 var tag = '[object ' + name + ']'; 12804 return function(obj) { 12805 return toString.call(obj) === tag; 12806 }; 12807 } 12808 12809 var isString = tagTester('String'); 12810 12811 var isNumber = tagTester('Number'); 12812 12813 var isDate = tagTester('Date'); 12814 12815 var isRegExp = tagTester('RegExp'); 12816 12817 var isError = tagTester('Error'); 12818 12819 var isSymbol = tagTester('Symbol'); 12820 12821 var isArrayBuffer = tagTester('ArrayBuffer'); 12822 12823 var isFunction = tagTester('Function'); 12824 12825 // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old 12826 // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). 12827 var nodelist = root.document && root.document.childNodes; 12828 if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { 12829 isFunction = function(obj) { 12830 return typeof obj == 'function' || false; 12831 }; 12832 } 12833 12834 var isFunction$1 = isFunction; 12835 12836 var hasObjectTag = tagTester('Object'); 12837 12838 // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. 12839 // In IE 11, the most common among them, this problem also applies to 12840 // `Map`, `WeakMap` and `Set`. 12841 var hasStringTagBug = ( 12842 supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) 12843 ), 12844 isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); 12845 12846 var isDataView = tagTester('DataView'); 12847 12848 // In IE 10 - Edge 13, we need a different heuristic 12849 // to determine whether an object is a `DataView`. 12850 function ie10IsDataView(obj) { 12851 return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); 12852 } 12853 12854 var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); 12855 12856 // Is a given value an array? 12857 // Delegates to ECMA5's native `Array.isArray`. 12858 var isArray = nativeIsArray || tagTester('Array'); 12859 12860 // Internal function to check whether `key` is an own property name of `obj`. 12861 function has$1(obj, key) { 12862 return obj != null && hasOwnProperty.call(obj, key); 12863 } 12864 12865 var isArguments = tagTester('Arguments'); 12866 12867 // Define a fallback version of the method in browsers (ahem, IE < 9), where 12868 // there isn't any inspectable "Arguments" type. 12869 (function() { 12870 if (!isArguments(arguments)) { 12871 isArguments = function(obj) { 12872 return has$1(obj, 'callee'); 12873 }; 12874 } 12875 }()); 12876 12877 var isArguments$1 = isArguments; 12878 12879 // Is a given object a finite number? 12880 function isFinite$1(obj) { 12881 return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); 12882 } 12883 12884 // Is the given value `NaN`? 12885 function isNaN$1(obj) { 12886 return isNumber(obj) && _isNaN(obj); 12887 } 12888 12889 // Predicate-generating function. Often useful outside of Underscore. 12890 function constant(value) { 12891 return function() { 12892 return value; 12893 }; 12894 } 12895 12896 // Common internal logic for `isArrayLike` and `isBufferLike`. 12897 function createSizePropertyCheck(getSizeProperty) { 12898 return function(collection) { 12899 var sizeProperty = getSizeProperty(collection); 12900 return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; 12901 } 12902 } 12903 12904 // Internal helper to generate a function to obtain property `key` from `obj`. 12905 function shallowProperty(key) { 12906 return function(obj) { 12907 return obj == null ? void 0 : obj[key]; 12908 }; 12909 } 12910 12911 // Internal helper to obtain the `byteLength` property of an object. 12912 var getByteLength = shallowProperty('byteLength'); 12913 12914 // Internal helper to determine whether we should spend extensive checks against 12915 // `ArrayBuffer` et al. 12916 var isBufferLike = createSizePropertyCheck(getByteLength); 12917 12918 // Is a given value a typed array? 12919 var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; 12920 function isTypedArray(obj) { 12921 // `ArrayBuffer.isView` is the most future-proof, so use it when available. 12922 // Otherwise, fall back on the above regular expression. 12923 return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : 12924 isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); 12925 } 12926 12927 var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); 12928 12929 // Internal helper to obtain the `length` property of an object. 12930 var getLength = shallowProperty('length'); 12931 12932 // Internal helper to create a simple lookup structure. 12933 // `collectNonEnumProps` used to depend on `_.contains`, but this led to 12934 // circular imports. `emulatedSet` is a one-off solution that only works for 12935 // arrays of strings. 12936 function emulatedSet(keys) { 12937 var hash = {}; 12938 for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; 12939 return { 12940 contains: function(key) { return hash[key]; }, 12941 push: function(key) { 12942 hash[key] = true; 12943 return keys.push(key); 12944 } 12945 }; 12946 } 12947 12948 // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't 12949 // be iterated by `for key in ...` and thus missed. Extends `keys` in place if 12950 // needed. 12951 function collectNonEnumProps(obj, keys) { 12952 keys = emulatedSet(keys); 12953 var nonEnumIdx = nonEnumerableProps.length; 12954 var constructor = obj.constructor; 12955 var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; 12956 12957 // Constructor is a special case. 12958 var prop = 'constructor'; 12959 if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); 12960 12961 while (nonEnumIdx--) { 12962 prop = nonEnumerableProps[nonEnumIdx]; 12963 if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { 12964 keys.push(prop); 12965 } 12966 } 12967 } 12968 12969 // Retrieve the names of an object's own properties. 12970 // Delegates to **ECMAScript 5**'s native `Object.keys`. 12971 function keys(obj) { 12972 if (!isObject(obj)) return []; 12973 if (nativeKeys) return nativeKeys(obj); 12974 var keys = []; 12975 for (var key in obj) if (has$1(obj, key)) keys.push(key); 12976 // Ahem, IE < 9. 12977 if (hasEnumBug) collectNonEnumProps(obj, keys); 12978 return keys; 12979 } 12980 12981 // Is a given array, string, or object empty? 12982 // An "empty" object has no enumerable own-properties. 12983 function isEmpty(obj) { 12984 if (obj == null) return true; 12985 // Skip the more expensive `toString`-based type checks if `obj` has no 12986 // `.length`. 12987 var length = getLength(obj); 12988 if (typeof length == 'number' && ( 12989 isArray(obj) || isString(obj) || isArguments$1(obj) 12990 )) return length === 0; 12991 return getLength(keys(obj)) === 0; 12992 } 12993 12994 // Returns whether an object has a given set of `key:value` pairs. 12995 function isMatch(object, attrs) { 12996 var _keys = keys(attrs), length = _keys.length; 12997 if (object == null) return !length; 12998 var obj = Object(object); 12999 for (var i = 0; i < length; i++) { 13000 var key = _keys[i]; 13001 if (attrs[key] !== obj[key] || !(key in obj)) return false; 13002 } 13003 return true; 13004 } 13005 13006 // If Underscore is called as a function, it returns a wrapped object that can 13007 // be used OO-style. This wrapper holds altered versions of all functions added 13008 // through `_.mixin`. Wrapped objects may be chained. 13009 function _$1(obj) { 13010 if (obj instanceof _$1) return obj; 13011 if (!(this instanceof _$1)) return new _$1(obj); 13012 this._wrapped = obj; 13013 } 13014 13015 _$1.VERSION = VERSION; 13016 13017 // Extracts the result from a wrapped and chained object. 13018 _$1.prototype.value = function() { 13019 return this._wrapped; 13020 }; 13021 13022 // Provide unwrapping proxies for some methods used in engine operations 13023 // such as arithmetic and JSON stringification. 13024 _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; 13025 13026 _$1.prototype.toString = function() { 13027 return String(this._wrapped); 13028 }; 13029 13030 // Internal function to wrap or shallow-copy an ArrayBuffer, 13031 // typed array or DataView to a new view, reusing the buffer. 13032 function toBufferView(bufferSource) { 13033 return new Uint8Array( 13034 bufferSource.buffer || bufferSource, 13035 bufferSource.byteOffset || 0, 13036 getByteLength(bufferSource) 13037 ); 13038 } 13039 13040 // We use this string twice, so give it a name for minification. 13041 var tagDataView = '[object DataView]'; 13042 13043 // Internal recursive comparison function for `_.isEqual`. 13044 function eq(a, b, aStack, bStack) { 13045 // Identical objects are equal. `0 === -0`, but they aren't identical. 13046 // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). 13047 if (a === b) return a !== 0 || 1 / a === 1 / b; 13048 // `null` or `undefined` only equal to itself (strict comparison). 13049 if (a == null || b == null) return false; 13050 // `NaN`s are equivalent, but non-reflexive. 13051 if (a !== a) return b !== b; 13052 // Exhaust primitive checks 13053 var type = typeof a; 13054 if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; 13055 return deepEq(a, b, aStack, bStack); 13056 } 13057 13058 // Internal recursive comparison function for `_.isEqual`. 13059 function deepEq(a, b, aStack, bStack) { 13060 // Unwrap any wrapped objects. 13061 if (a instanceof _$1) a = a._wrapped; 13062 if (b instanceof _$1) b = b._wrapped; 13063 // Compare `[[Class]]` names. 13064 var className = toString.call(a); 13065 if (className !== toString.call(b)) return false; 13066 // Work around a bug in IE 10 - Edge 13. 13067 if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { 13068 if (!isDataView$1(b)) return false; 13069 className = tagDataView; 13070 } 13071 switch (className) { 13072 // These types are compared by value. 13073 case '[object RegExp]': 13074 // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') 13075 case '[object String]': 13076 // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is 13077 // equivalent to `new String("5")`. 13078 return '' + a === '' + b; 13079 case '[object Number]': 13080 // `NaN`s are equivalent, but non-reflexive. 13081 // Object(NaN) is equivalent to NaN. 13082 if (+a !== +a) return +b !== +b; 13083 // An `egal` comparison is performed for other numeric values. 13084 return +a === 0 ? 1 / +a === 1 / b : +a === +b; 13085 case '[object Date]': 13086 case '[object Boolean]': 13087 // Coerce dates and booleans to numeric primitive values. Dates are compared by their 13088 // millisecond representations. Note that invalid dates with millisecond representations 13089 // of `NaN` are not equivalent. 13090 return +a === +b; 13091 case '[object Symbol]': 13092 return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); 13093 case '[object ArrayBuffer]': 13094 case tagDataView: 13095 // Coerce to typed array so we can fall through. 13096 return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); 13097 } 13098 13099 var areArrays = className === '[object Array]'; 13100 if (!areArrays && isTypedArray$1(a)) { 13101 var byteLength = getByteLength(a); 13102 if (byteLength !== getByteLength(b)) return false; 13103 if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; 13104 areArrays = true; 13105 } 13106 if (!areArrays) { 13107 if (typeof a != 'object' || typeof b != 'object') return false; 13108 13109 // Objects with different constructors are not equivalent, but `Object`s or `Array`s 13110 // from different frames are. 13111 var aCtor = a.constructor, bCtor = b.constructor; 13112 if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && 13113 isFunction$1(bCtor) && bCtor instanceof bCtor) 13114 && ('constructor' in a && 'constructor' in b)) { 13115 return false; 13116 } 13117 } 13118 // Assume equality for cyclic structures. The algorithm for detecting cyclic 13119 // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. 13120 13121 // Initializing stack of traversed objects. 13122 // It's done here since we only need them for objects and arrays comparison. 13123 aStack = aStack || []; 13124 bStack = bStack || []; 13125 var length = aStack.length; 13126 while (length--) { 13127 // Linear search. Performance is inversely proportional to the number of 13128 // unique nested structures. 13129 if (aStack[length] === a) return bStack[length] === b; 13130 } 13131 13132 // Add the first object to the stack of traversed objects. 13133 aStack.push(a); 13134 bStack.push(b); 13135 13136 // Recursively compare objects and arrays. 13137 if (areArrays) { 13138 // Compare array lengths to determine if a deep comparison is necessary. 13139 length = a.length; 13140 if (length !== b.length) return false; 13141 // Deep compare the contents, ignoring non-numeric properties. 13142 while (length--) { 13143 if (!eq(a[length], b[length], aStack, bStack)) return false; 13144 } 13145 } else { 13146 // Deep compare objects. 13147 var _keys = keys(a), key; 13148 length = _keys.length; 13149 // Ensure that both objects contain the same number of properties before comparing deep equality. 13150 if (keys(b).length !== length) return false; 13151 while (length--) { 13152 // Deep compare each member 13153 key = _keys[length]; 13154 if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; 13155 } 13156 } 13157 // Remove the first object from the stack of traversed objects. 13158 aStack.pop(); 13159 bStack.pop(); 13160 return true; 13161 } 13162 13163 // Perform a deep comparison to check if two objects are equal. 13164 function isEqual(a, b) { 13165 return eq(a, b); 13166 } 13167 13168 // Retrieve all the enumerable property names of an object. 13169 function allKeys(obj) { 13170 if (!isObject(obj)) return []; 13171 var keys = []; 13172 for (var key in obj) keys.push(key); 13173 // Ahem, IE < 9. 13174 if (hasEnumBug) collectNonEnumProps(obj, keys); 13175 return keys; 13176 } 13177 13178 // Since the regular `Object.prototype.toString` type tests don't work for 13179 // some types in IE 11, we use a fingerprinting heuristic instead, based 13180 // on the methods. It's not great, but it's the best we got. 13181 // The fingerprint method lists are defined below. 13182 function ie11fingerprint(methods) { 13183 var length = getLength(methods); 13184 return function(obj) { 13185 if (obj == null) return false; 13186 // `Map`, `WeakMap` and `Set` have no enumerable keys. 13187 var keys = allKeys(obj); 13188 if (getLength(keys)) return false; 13189 for (var i = 0; i < length; i++) { 13190 if (!isFunction$1(obj[methods[i]])) return false; 13191 } 13192 // If we are testing against `WeakMap`, we need to ensure that 13193 // `obj` doesn't have a `forEach` method in order to distinguish 13194 // it from a regular `Map`. 13195 return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); 13196 }; 13197 } 13198 13199 // In the interest of compact minification, we write 13200 // each string in the fingerprints only once. 13201 var forEachName = 'forEach', 13202 hasName = 'has', 13203 commonInit = ['clear', 'delete'], 13204 mapTail = ['get', hasName, 'set']; 13205 13206 // `Map`, `WeakMap` and `Set` each have slightly different 13207 // combinations of the above sublists. 13208 var mapMethods = commonInit.concat(forEachName, mapTail), 13209 weakMapMethods = commonInit.concat(mapTail), 13210 setMethods = ['add'].concat(commonInit, forEachName, hasName); 13211 13212 var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); 13213 13214 var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); 13215 13216 var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); 13217 13218 var isWeakSet = tagTester('WeakSet'); 13219 13220 // Retrieve the values of an object's properties. 13221 function values(obj) { 13222 var _keys = keys(obj); 13223 var length = _keys.length; 13224 var values = Array(length); 13225 for (var i = 0; i < length; i++) { 13226 values[i] = obj[_keys[i]]; 13227 } 13228 return values; 13229 } 13230 13231 // Convert an object into a list of `[key, value]` pairs. 13232 // The opposite of `_.object` with one argument. 13233 function pairs(obj) { 13234 var _keys = keys(obj); 13235 var length = _keys.length; 13236 var pairs = Array(length); 13237 for (var i = 0; i < length; i++) { 13238 pairs[i] = [_keys[i], obj[_keys[i]]]; 13239 } 13240 return pairs; 13241 } 13242 13243 // Invert the keys and values of an object. The values must be serializable. 13244 function invert(obj) { 13245 var result = {}; 13246 var _keys = keys(obj); 13247 for (var i = 0, length = _keys.length; i < length; i++) { 13248 result[obj[_keys[i]]] = _keys[i]; 13249 } 13250 return result; 13251 } 13252 13253 // Return a sorted list of the function names available on the object. 13254 function functions(obj) { 13255 var names = []; 13256 for (var key in obj) { 13257 if (isFunction$1(obj[key])) names.push(key); 13258 } 13259 return names.sort(); 13260 } 13261 13262 // An internal function for creating assigner functions. 13263 function createAssigner(keysFunc, defaults) { 13264 return function(obj) { 13265 var length = arguments.length; 13266 if (defaults) obj = Object(obj); 13267 if (length < 2 || obj == null) return obj; 13268 for (var index = 1; index < length; index++) { 13269 var source = arguments[index], 13270 keys = keysFunc(source), 13271 l = keys.length; 13272 for (var i = 0; i < l; i++) { 13273 var key = keys[i]; 13274 if (!defaults || obj[key] === void 0) obj[key] = source[key]; 13275 } 13276 } 13277 return obj; 13278 }; 13279 } 13280 13281 // Extend a given object with all the properties in passed-in object(s). 13282 var extend = createAssigner(allKeys); 13283 13284 // Assigns a given object with all the own properties in the passed-in 13285 // object(s). 13286 // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) 13287 var extendOwn = createAssigner(keys); 13288 13289 // Fill in a given object with default properties. 13290 var defaults = createAssigner(allKeys, true); 13291 13292 // Create a naked function reference for surrogate-prototype-swapping. 13293 function ctor() { 13294 return function(){}; 13295 } 13296 13297 // An internal function for creating a new object that inherits from another. 13298 function baseCreate(prototype) { 13299 if (!isObject(prototype)) return {}; 13300 if (nativeCreate) return nativeCreate(prototype); 13301 var Ctor = ctor(); 13302 Ctor.prototype = prototype; 13303 var result = new Ctor; 13304 Ctor.prototype = null; 13305 return result; 13306 } 13307 13308 // Creates an object that inherits from the given prototype object. 13309 // If additional properties are provided then they will be added to the 13310 // created object. 13311 function create(prototype, props) { 13312 var result = baseCreate(prototype); 13313 if (props) extendOwn(result, props); 13314 return result; 13315 } 13316 13317 // Create a (shallow-cloned) duplicate of an object. 13318 function clone(obj) { 13319 if (!isObject(obj)) return obj; 13320 return isArray(obj) ? obj.slice() : extend({}, obj); 13321 } 13322 13323 // Invokes `interceptor` with the `obj` and then returns `obj`. 13324 // The primary purpose of this method is to "tap into" a method chain, in 13325 // order to perform operations on intermediate results within the chain. 13326 function tap(obj, interceptor) { 13327 interceptor(obj); 13328 return obj; 13329 } 13330 13331 // Normalize a (deep) property `path` to array. 13332 // Like `_.iteratee`, this function can be customized. 13333 function toPath$1(path) { 13334 return isArray(path) ? path : [path]; 13335 } 13336 _$1.toPath = toPath$1; 13337 13338 // Internal wrapper for `_.toPath` to enable minification. 13339 // Similar to `cb` for `_.iteratee`. 13340 function toPath(path) { 13341 return _$1.toPath(path); 13342 } 13343 13344 // Internal function to obtain a nested property in `obj` along `path`. 13345 function deepGet(obj, path) { 13346 var length = path.length; 13347 for (var i = 0; i < length; i++) { 13348 if (obj == null) return void 0; 13349 obj = obj[path[i]]; 13350 } 13351 return length ? obj : void 0; 13352 } 13353 13354 // Get the value of the (deep) property on `path` from `object`. 13355 // If any property in `path` does not exist or if the value is 13356 // `undefined`, return `defaultValue` instead. 13357 // The `path` is normalized through `_.toPath`. 13358 function get(object, path, defaultValue) { 13359 var value = deepGet(object, toPath(path)); 13360 return isUndefined(value) ? defaultValue : value; 13361 } 13362 13363 // Shortcut function for checking if an object has a given property directly on 13364 // itself (in other words, not on a prototype). Unlike the internal `has` 13365 // function, this public version can also traverse nested properties. 13366 function has(obj, path) { 13367 path = toPath(path); 13368 var length = path.length; 13369 for (var i = 0; i < length; i++) { 13370 var key = path[i]; 13371 if (!has$1(obj, key)) return false; 13372 obj = obj[key]; 13373 } 13374 return !!length; 13375 } 13376 13377 // Keep the identity function around for default iteratees. 13378 function identity(value) { 13379 return value; 13380 } 13381 13382 // Returns a predicate for checking whether an object has a given set of 13383 // `key:value` pairs. 13384 function matcher(attrs) { 13385 attrs = extendOwn({}, attrs); 13386 return function(obj) { 13387 return isMatch(obj, attrs); 13388 }; 13389 } 13390 13391 // Creates a function that, when passed an object, will traverse that object’s 13392 // properties down the given `path`, specified as an array of keys or indices. 13393 function property(path) { 13394 path = toPath(path); 13395 return function(obj) { 13396 return deepGet(obj, path); 13397 }; 13398 } 13399 13400 // Internal function that returns an efficient (for current engines) version 13401 // of the passed-in callback, to be repeatedly applied in other Underscore 13402 // functions. 13403 function optimizeCb(func, context, argCount) { 13404 if (context === void 0) return func; 13405 switch (argCount == null ? 3 : argCount) { 13406 case 1: return function(value) { 13407 return func.call(context, value); 13408 }; 13409 // The 2-argument case is omitted because we’re not using it. 13410 case 3: return function(value, index, collection) { 13411 return func.call(context, value, index, collection); 13412 }; 13413 case 4: return function(accumulator, value, index, collection) { 13414 return func.call(context, accumulator, value, index, collection); 13415 }; 13416 } 13417 return function() { 13418 return func.apply(context, arguments); 13419 }; 13420 } 13421 13422 // An internal function to generate callbacks that can be applied to each 13423 // element in a collection, returning the desired result — either `_.identity`, 13424 // an arbitrary callback, a property matcher, or a property accessor. 13425 function baseIteratee(value, context, argCount) { 13426 if (value == null) return identity; 13427 if (isFunction$1(value)) return optimizeCb(value, context, argCount); 13428 if (isObject(value) && !isArray(value)) return matcher(value); 13429 return property(value); 13430 } 13431 13432 // External wrapper for our callback generator. Users may customize 13433 // `_.iteratee` if they want additional predicate/iteratee shorthand styles. 13434 // This abstraction hides the internal-only `argCount` argument. 13435 function iteratee(value, context) { 13436 return baseIteratee(value, context, Infinity); 13437 } 13438 _$1.iteratee = iteratee; 13439 13440 // The function we call internally to generate a callback. It invokes 13441 // `_.iteratee` if overridden, otherwise `baseIteratee`. 13442 function cb(value, context, argCount) { 13443 if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); 13444 return baseIteratee(value, context, argCount); 13445 } 13446 13447 // Returns the results of applying the `iteratee` to each element of `obj`. 13448 // In contrast to `_.map` it returns an object. 13449 function mapObject(obj, iteratee, context) { 13450 iteratee = cb(iteratee, context); 13451 var _keys = keys(obj), 13452 length = _keys.length, 13453 results = {}; 13454 for (var index = 0; index < length; index++) { 13455 var currentKey = _keys[index]; 13456 results[currentKey] = iteratee(obj[currentKey], currentKey, obj); 13457 } 13458 return results; 13459 } 13460 13461 // Predicate-generating function. Often useful outside of Underscore. 13462 function noop(){} 13463 13464 // Generates a function for a given object that returns a given property. 13465 function propertyOf(obj) { 13466 if (obj == null) return noop; 13467 return function(path) { 13468 return get(obj, path); 13469 }; 13470 } 13471 13472 // Run a function **n** times. 13473 function times(n, iteratee, context) { 13474 var accum = Array(Math.max(0, n)); 13475 iteratee = optimizeCb(iteratee, context, 1); 13476 for (var i = 0; i < n; i++) accum[i] = iteratee(i); 13477 return accum; 13478 } 13479 13480 // Return a random integer between `min` and `max` (inclusive). 13481 function random(min, max) { 13482 if (max == null) { 13483 max = min; 13484 min = 0; 13485 } 13486 return min + Math.floor(Math.random() * (max - min + 1)); 13487 } 13488 13489 // A (possibly faster) way to get the current timestamp as an integer. 13490 var now = Date.now || function() { 13491 return new Date().getTime(); 13492 }; 13493 13494 // Internal helper to generate functions for escaping and unescaping strings 13495 // to/from HTML interpolation. 13496 function createEscaper(map) { 13497 var escaper = function(match) { 13498 return map[match]; 13499 }; 13500 // Regexes for identifying a key that needs to be escaped. 13501 var source = '(?:' + keys(map).join('|') + ')'; 13502 var testRegexp = RegExp(source); 13503 var replaceRegexp = RegExp(source, 'g'); 13504 return function(string) { 13505 string = string == null ? '' : '' + string; 13506 return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; 13507 }; 13508 } 13509 13510 // Internal list of HTML entities for escaping. 13511 var escapeMap = { 13512 '&': '&', 13513 '<': '<', 13514 '>': '>', 13515 '"': '"', 13516 "'": ''', 13517 '`': '`' 13518 }; 13519 13520 // Function for escaping strings to HTML interpolation. 13521 var _escape = createEscaper(escapeMap); 13522 13523 // Internal list of HTML entities for unescaping. 13524 var unescapeMap = invert(escapeMap); 13525 13526 // Function for unescaping strings from HTML interpolation. 13527 var _unescape = createEscaper(unescapeMap); 13528 13529 // By default, Underscore uses ERB-style template delimiters. Change the 13530 // following template settings to use alternative delimiters. 13531 var templateSettings = _$1.templateSettings = { 13532 evaluate: /<%([\s\S]+?)%>/g, 13533 interpolate: /<%=([\s\S]+?)%>/g, 13534 escape: /<%-([\s\S]+?)%>/g 13535 }; 13536 13537 // When customizing `_.templateSettings`, if you don't want to define an 13538 // interpolation, evaluation or escaping regex, we need one that is 13539 // guaranteed not to match. 13540 var noMatch = /(.)^/; 13541 13542 // Certain characters need to be escaped so that they can be put into a 13543 // string literal. 13544 var escapes = { 13545 "'": "'", 13546 '\\': '\\', 13547 '\r': 'r', 13548 '\n': 'n', 13549 '\u2028': 'u2028', 13550 '\u2029': 'u2029' 13551 }; 13552 13553 var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; 13554 13555 function escapeChar(match) { 13556 return '\\' + escapes[match]; 13557 } 13558 13559 // In order to prevent third-party code injection through 13560 // `_.templateSettings.variable`, we test it against the following regular 13561 // expression. It is intentionally a bit more liberal than just matching valid 13562 // identifiers, but still prevents possible loopholes through defaults or 13563 // destructuring assignment. 13564 var bareIdentifier = /^\s*(\w|\$)+\s*$/; 13565 13566 // JavaScript micro-templating, similar to John Resig's implementation. 13567 // Underscore templating handles arbitrary delimiters, preserves whitespace, 13568 // and correctly escapes quotes within interpolated code. 13569 // NB: `oldSettings` only exists for backwards compatibility. 13570 function template(text, settings, oldSettings) { 13571 if (!settings && oldSettings) settings = oldSettings; 13572 settings = defaults({}, settings, _$1.templateSettings); 13573 13574 // Combine delimiters into one regular expression via alternation. 13575 var matcher = RegExp([ 13576 (settings.escape || noMatch).source, 13577 (settings.interpolate || noMatch).source, 13578 (settings.evaluate || noMatch).source 13579 ].join('|') + '|$', 'g'); 13580 13581 // Compile the template source, escaping string literals appropriately. 13582 var index = 0; 13583 var source = "__p+='"; 13584 text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { 13585 source += text.slice(index, offset).replace(escapeRegExp, escapeChar); 13586 index = offset + match.length; 13587 13588 if (escape) { 13589 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; 13590 } else if (interpolate) { 13591 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; 13592 } else if (evaluate) { 13593 source += "';\n" + evaluate + "\n__p+='"; 13594 } 13595 13596 // Adobe VMs need the match returned to produce the correct offset. 13597 return match; 13598 }); 13599 source += "';\n"; 13600 13601 var argument = settings.variable; 13602 if (argument) { 13603 // Insure against third-party code injection. (CVE-2021-23358) 13604 if (!bareIdentifier.test(argument)) throw new Error( 13605 'variable is not a bare identifier: ' + argument 13606 ); 13607 } else { 13608 // If a variable is not specified, place data values in local scope. 13609 source = 'with(obj||{}){\n' + source + '}\n'; 13610 argument = 'obj'; 13611 } 13612 13613 source = "var __t,__p='',__j=Array.prototype.join," + 13614 "print=function(){__p+=__j.call(arguments,'');};\n" + 13615 source + 'return __p;\n'; 13616 13617 var render; 13618 try { 13619 render = new Function(argument, '_', source); 13620 } catch (e) { 13621 e.source = source; 13622 throw e; 13623 } 13624 13625 var template = function(data) { 13626 return render.call(this, data, _$1); 13627 }; 13628 13629 // Provide the compiled source as a convenience for precompilation. 13630 template.source = 'function(' + argument + '){\n' + source + '}'; 13631 13632 return template; 13633 } 13634 13635 // Traverses the children of `obj` along `path`. If a child is a function, it 13636 // is invoked with its parent as context. Returns the value of the final 13637 // child, or `fallback` if any child is undefined. 13638 function result(obj, path, fallback) { 13639 path = toPath(path); 13640 var length = path.length; 13641 if (!length) { 13642 return isFunction$1(fallback) ? fallback.call(obj) : fallback; 13643 } 13644 for (var i = 0; i < length; i++) { 13645 var prop = obj == null ? void 0 : obj[path[i]]; 13646 if (prop === void 0) { 13647 prop = fallback; 13648 i = length; // Ensure we don't continue iterating. 13649 } 13650 obj = isFunction$1(prop) ? prop.call(obj) : prop; 13651 } 13652 return obj; 13653 } 13654 13655 // Generate a unique integer id (unique within the entire client session). 13656 // Useful for temporary DOM ids. 13657 var idCounter = 0; 13658 function uniqueId(prefix) { 13659 var id = ++idCounter + ''; 13660 return prefix ? prefix + id : id; 13661 } 13662 13663 // Start chaining a wrapped Underscore object. 13664 function chain(obj) { 13665 var instance = _$1(obj); 13666 instance._chain = true; 13667 return instance; 13668 } 13669 13670 // Internal function to execute `sourceFunc` bound to `context` with optional 13671 // `args`. Determines whether to execute a function as a constructor or as a 13672 // normal function. 13673 function executeBound(sourceFunc, boundFunc, context, callingContext, args) { 13674 if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); 13675 var self = baseCreate(sourceFunc.prototype); 13676 var result = sourceFunc.apply(self, args); 13677 if (isObject(result)) return result; 13678 return self; 13679 } 13680 13681 // Partially apply a function by creating a version that has had some of its 13682 // arguments pre-filled, without changing its dynamic `this` context. `_` acts 13683 // as a placeholder by default, allowing any combination of arguments to be 13684 // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. 13685 var partial = restArguments(function(func, boundArgs) { 13686 var placeholder = partial.placeholder; 13687 var bound = function() { 13688 var position = 0, length = boundArgs.length; 13689 var args = Array(length); 13690 for (var i = 0; i < length; i++) { 13691 args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; 13692 } 13693 while (position < arguments.length) args.push(arguments[position++]); 13694 return executeBound(func, bound, this, this, args); 13695 }; 13696 return bound; 13697 }); 13698 13699 partial.placeholder = _$1; 13700 13701 // Create a function bound to a given object (assigning `this`, and arguments, 13702 // optionally). 13703 var bind = restArguments(function(func, context, args) { 13704 if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); 13705 var bound = restArguments(function(callArgs) { 13706 return executeBound(func, bound, context, this, args.concat(callArgs)); 13707 }); 13708 return bound; 13709 }); 13710 13711 // Internal helper for collection methods to determine whether a collection 13712 // should be iterated as an array or as an object. 13713 // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength 13714 // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 13715 var isArrayLike = createSizePropertyCheck(getLength); 13716 13717 // Internal implementation of a recursive `flatten` function. 13718 function flatten$1(input, depth, strict, output) { 13719 output = output || []; 13720 if (!depth && depth !== 0) { 13721 depth = Infinity; 13722 } else if (depth <= 0) { 13723 return output.concat(input); 13724 } 13725 var idx = output.length; 13726 for (var i = 0, length = getLength(input); i < length; i++) { 13727 var value = input[i]; 13728 if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { 13729 // Flatten current level of array or arguments object. 13730 if (depth > 1) { 13731 flatten$1(value, depth - 1, strict, output); 13732 idx = output.length; 13733 } else { 13734 var j = 0, len = value.length; 13735 while (j < len) output[idx++] = value[j++]; 13736 } 13737 } else if (!strict) { 13738 output[idx++] = value; 13739 } 13740 } 13741 return output; 13742 } 13743 13744 // Bind a number of an object's methods to that object. Remaining arguments 13745 // are the method names to be bound. Useful for ensuring that all callbacks 13746 // defined on an object belong to it. 13747 var bindAll = restArguments(function(obj, keys) { 13748 keys = flatten$1(keys, false, false); 13749 var index = keys.length; 13750 if (index < 1) throw new Error('bindAll must be passed function names'); 13751 while (index--) { 13752 var key = keys[index]; 13753 obj[key] = bind(obj[key], obj); 13754 } 13755 return obj; 13756 }); 13757 13758 // Memoize an expensive function by storing its results. 13759 function memoize(func, hasher) { 13760 var memoize = function(key) { 13761 var cache = memoize.cache; 13762 var address = '' + (hasher ? hasher.apply(this, arguments) : key); 13763 if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); 13764 return cache[address]; 13765 }; 13766 memoize.cache = {}; 13767 return memoize; 13768 } 13769 13770 // Delays a function for the given number of milliseconds, and then calls 13771 // it with the arguments supplied. 13772 var delay = restArguments(function(func, wait, args) { 13773 return setTimeout(function() { 13774 return func.apply(null, args); 13775 }, wait); 13776 }); 13777 13778 // Defers a function, scheduling it to run after the current call stack has 13779 // cleared. 13780 var defer = partial(delay, _$1, 1); 13781 13782 // Returns a function, that, when invoked, will only be triggered at most once 13783 // during a given window of time. Normally, the throttled function will run 13784 // as much as it can, without ever going more than once per `wait` duration; 13785 // but if you'd like to disable the execution on the leading edge, pass 13786 // `{leading: false}`. To disable execution on the trailing edge, ditto. 13787 function throttle(func, wait, options) { 13788 var timeout, context, args, result; 13789 var previous = 0; 13790 if (!options) options = {}; 13791 13792 var later = function() { 13793 previous = options.leading === false ? 0 : now(); 13794 timeout = null; 13795 result = func.apply(context, args); 13796 if (!timeout) context = args = null; 13797 }; 13798 13799 var throttled = function() { 13800 var _now = now(); 13801 if (!previous && options.leading === false) previous = _now; 13802 var remaining = wait - (_now - previous); 13803 context = this; 13804 args = arguments; 13805 if (remaining <= 0 || remaining > wait) { 13806 if (timeout) { 13807 clearTimeout(timeout); 13808 timeout = null; 13809 } 13810 previous = _now; 13811 result = func.apply(context, args); 13812 if (!timeout) context = args = null; 13813 } else if (!timeout && options.trailing !== false) { 13814 timeout = setTimeout(later, remaining); 13815 } 13816 return result; 13817 }; 13818 13819 throttled.cancel = function() { 13820 clearTimeout(timeout); 13821 previous = 0; 13822 timeout = context = args = null; 13823 }; 13824 13825 return throttled; 13826 } 13827 13828 // When a sequence of calls of the returned function ends, the argument 13829 // function is triggered. The end of a sequence is defined by the `wait` 13830 // parameter. If `immediate` is passed, the argument function will be 13831 // triggered at the beginning of the sequence instead of at the end. 13832 function debounce(func, wait, immediate) { 13833 var timeout, previous, args, result, context; 13834 13835 var later = function() { 13836 var passed = now() - previous; 13837 if (wait > passed) { 13838 timeout = setTimeout(later, wait - passed); 13839 } else { 13840 timeout = null; 13841 if (!immediate) result = func.apply(context, args); 13842 // This check is needed because `func` can recursively invoke `debounced`. 13843 if (!timeout) args = context = null; 13844 } 13845 }; 13846 13847 var debounced = restArguments(function(_args) { 13848 context = this; 13849 args = _args; 13850 previous = now(); 13851 if (!timeout) { 13852 timeout = setTimeout(later, wait); 13853 if (immediate) result = func.apply(context, args); 13854 } 13855 return result; 13856 }); 13857 13858 debounced.cancel = function() { 13859 clearTimeout(timeout); 13860 timeout = args = context = null; 13861 }; 13862 13863 return debounced; 13864 } 13865 13866 // Returns the first function passed as an argument to the second, 13867 // allowing you to adjust arguments, run code before and after, and 13868 // conditionally execute the original function. 13869 function wrap(func, wrapper) { 13870 return partial(wrapper, func); 13871 } 13872 13873 // Returns a negated version of the passed-in predicate. 13874 function negate(predicate) { 13875 return function() { 13876 return !predicate.apply(this, arguments); 13877 }; 13878 } 13879 13880 // Returns a function that is the composition of a list of functions, each 13881 // consuming the return value of the function that follows. 13882 function compose() { 13883 var args = arguments; 13884 var start = args.length - 1; 13885 return function() { 13886 var i = start; 13887 var result = args[start].apply(this, arguments); 13888 while (i--) result = args[i].call(this, result); 13889 return result; 13890 }; 13891 } 13892 13893 // Returns a function that will only be executed on and after the Nth call. 13894 function after(times, func) { 13895 return function() { 13896 if (--times < 1) { 13897 return func.apply(this, arguments); 13898 } 13899 }; 13900 } 13901 13902 // Returns a function that will only be executed up to (but not including) the 13903 // Nth call. 13904 function before(times, func) { 13905 var memo; 13906 return function() { 13907 if (--times > 0) { 13908 memo = func.apply(this, arguments); 13909 } 13910 if (times <= 1) func = null; 13911 return memo; 13912 }; 13913 } 13914 13915 // Returns a function that will be executed at most one time, no matter how 13916 // often you call it. Useful for lazy initialization. 13917 var once = partial(before, 2); 13918 13919 // Returns the first key on an object that passes a truth test. 13920 function findKey(obj, predicate, context) { 13921 predicate = cb(predicate, context); 13922 var _keys = keys(obj), key; 13923 for (var i = 0, length = _keys.length; i < length; i++) { 13924 key = _keys[i]; 13925 if (predicate(obj[key], key, obj)) return key; 13926 } 13927 } 13928 13929 // Internal function to generate `_.findIndex` and `_.findLastIndex`. 13930 function createPredicateIndexFinder(dir) { 13931 return function(array, predicate, context) { 13932 predicate = cb(predicate, context); 13933 var length = getLength(array); 13934 var index = dir > 0 ? 0 : length - 1; 13935 for (; index >= 0 && index < length; index += dir) { 13936 if (predicate(array[index], index, array)) return index; 13937 } 13938 return -1; 13939 }; 13940 } 13941 13942 // Returns the first index on an array-like that passes a truth test. 13943 var findIndex = createPredicateIndexFinder(1); 13944 13945 // Returns the last index on an array-like that passes a truth test. 13946 var findLastIndex = createPredicateIndexFinder(-1); 13947 13948 // Use a comparator function to figure out the smallest index at which 13949 // an object should be inserted so as to maintain order. Uses binary search. 13950 function sortedIndex(array, obj, iteratee, context) { 13951 iteratee = cb(iteratee, context, 1); 13952 var value = iteratee(obj); 13953 var low = 0, high = getLength(array); 13954 while (low < high) { 13955 var mid = Math.floor((low + high) / 2); 13956 if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; 13957 } 13958 return low; 13959 } 13960 13961 // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. 13962 function createIndexFinder(dir, predicateFind, sortedIndex) { 13963 return function(array, item, idx) { 13964 var i = 0, length = getLength(array); 13965 if (typeof idx == 'number') { 13966 if (dir > 0) { 13967 i = idx >= 0 ? idx : Math.max(idx + length, i); 13968 } else { 13969 length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; 13970 } 13971 } else if (sortedIndex && idx && length) { 13972 idx = sortedIndex(array, item); 13973 return array[idx] === item ? idx : -1; 13974 } 13975 if (item !== item) { 13976 idx = predicateFind(slice.call(array, i, length), isNaN$1); 13977 return idx >= 0 ? idx + i : -1; 13978 } 13979 for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { 13980 if (array[idx] === item) return idx; 13981 } 13982 return -1; 13983 }; 13984 } 13985 13986 // Return the position of the first occurrence of an item in an array, 13987 // or -1 if the item is not included in the array. 13988 // If the array is large and already in sort order, pass `true` 13989 // for **isSorted** to use binary search. 13990 var indexOf = createIndexFinder(1, findIndex, sortedIndex); 13991 13992 // Return the position of the last occurrence of an item in an array, 13993 // or -1 if the item is not included in the array. 13994 var lastIndexOf = createIndexFinder(-1, findLastIndex); 13995 13996 // Return the first value which passes a truth test. 13997 function find(obj, predicate, context) { 13998 var keyFinder = isArrayLike(obj) ? findIndex : findKey; 13999 var key = keyFinder(obj, predicate, context); 14000 if (key !== void 0 && key !== -1) return obj[key]; 14001 } 14002 14003 // Convenience version of a common use case of `_.find`: getting the first 14004 // object containing specific `key:value` pairs. 14005 function findWhere(obj, attrs) { 14006 return find(obj, matcher(attrs)); 14007 } 14008 14009 // The cornerstone for collection functions, an `each` 14010 // implementation, aka `forEach`. 14011 // Handles raw objects in addition to array-likes. Treats all 14012 // sparse array-likes as if they were dense. 14013 function each(obj, iteratee, context) { 14014 iteratee = optimizeCb(iteratee, context); 14015 var i, length; 14016 if (isArrayLike(obj)) { 14017 for (i = 0, length = obj.length; i < length; i++) { 14018 iteratee(obj[i], i, obj); 14019 } 14020 } else { 14021 var _keys = keys(obj); 14022 for (i = 0, length = _keys.length; i < length; i++) { 14023 iteratee(obj[_keys[i]], _keys[i], obj); 14024 } 14025 } 14026 return obj; 14027 } 14028 14029 // Return the results of applying the iteratee to each element. 14030 function map(obj, iteratee, context) { 14031 iteratee = cb(iteratee, context); 14032 var _keys = !isArrayLike(obj) && keys(obj), 14033 length = (_keys || obj).length, 14034 results = Array(length); 14035 for (var index = 0; index < length; index++) { 14036 var currentKey = _keys ? _keys[index] : index; 14037 results[index] = iteratee(obj[currentKey], currentKey, obj); 14038 } 14039 return results; 14040 } 14041 14042 // Internal helper to create a reducing function, iterating left or right. 14043 function createReduce(dir) { 14044 // Wrap code that reassigns argument variables in a separate function than 14045 // the one that accesses `arguments.length` to avoid a perf hit. (#1991) 14046 var reducer = function(obj, iteratee, memo, initial) { 14047 var _keys = !isArrayLike(obj) && keys(obj), 14048 length = (_keys || obj).length, 14049 index = dir > 0 ? 0 : length - 1; 14050 if (!initial) { 14051 memo = obj[_keys ? _keys[index] : index]; 14052 index += dir; 14053 } 14054 for (; index >= 0 && index < length; index += dir) { 14055 var currentKey = _keys ? _keys[index] : index; 14056 memo = iteratee(memo, obj[currentKey], currentKey, obj); 14057 } 14058 return memo; 14059 }; 14060 14061 return function(obj, iteratee, memo, context) { 14062 var initial = arguments.length >= 3; 14063 return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); 14064 }; 14065 } 14066 14067 // **Reduce** builds up a single result from a list of values, aka `inject`, 14068 // or `foldl`. 14069 var reduce = createReduce(1); 14070 14071 // The right-associative version of reduce, also known as `foldr`. 14072 var reduceRight = createReduce(-1); 14073 14074 // Return all the elements that pass a truth test. 14075 function filter(obj, predicate, context) { 14076 var results = []; 14077 predicate = cb(predicate, context); 14078 each(obj, function(value, index, list) { 14079 if (predicate(value, index, list)) results.push(value); 14080 }); 14081 return results; 14082 } 14083 14084 // Return all the elements for which a truth test fails. 14085 function reject(obj, predicate, context) { 14086 return filter(obj, negate(cb(predicate)), context); 14087 } 14088 14089 // Determine whether all of the elements pass a truth test. 14090 function every(obj, predicate, context) { 14091 predicate = cb(predicate, context); 14092 var _keys = !isArrayLike(obj) && keys(obj), 14093 length = (_keys || obj).length; 14094 for (var index = 0; index < length; index++) { 14095 var currentKey = _keys ? _keys[index] : index; 14096 if (!predicate(obj[currentKey], currentKey, obj)) return false; 14097 } 14098 return true; 14099 } 14100 14101 // Determine if at least one element in the object passes a truth test. 14102 function some(obj, predicate, context) { 14103 predicate = cb(predicate, context); 14104 var _keys = !isArrayLike(obj) && keys(obj), 14105 length = (_keys || obj).length; 14106 for (var index = 0; index < length; index++) { 14107 var currentKey = _keys ? _keys[index] : index; 14108 if (predicate(obj[currentKey], currentKey, obj)) return true; 14109 } 14110 return false; 14111 } 14112 14113 // Determine if the array or object contains a given item (using `===`). 14114 function contains(obj, item, fromIndex, guard) { 14115 if (!isArrayLike(obj)) obj = values(obj); 14116 if (typeof fromIndex != 'number' || guard) fromIndex = 0; 14117 return indexOf(obj, item, fromIndex) >= 0; 14118 } 14119 14120 // Invoke a method (with arguments) on every item in a collection. 14121 var invoke = restArguments(function(obj, path, args) { 14122 var contextPath, func; 14123 if (isFunction$1(path)) { 14124 func = path; 14125 } else { 14126 path = toPath(path); 14127 contextPath = path.slice(0, -1); 14128 path = path[path.length - 1]; 14129 } 14130 return map(obj, function(context) { 14131 var method = func; 14132 if (!method) { 14133 if (contextPath && contextPath.length) { 14134 context = deepGet(context, contextPath); 14135 } 14136 if (context == null) return void 0; 14137 method = context[path]; 14138 } 14139 return method == null ? method : method.apply(context, args); 14140 }); 14141 }); 14142 14143 // Convenience version of a common use case of `_.map`: fetching a property. 14144 function pluck(obj, key) { 14145 return map(obj, property(key)); 14146 } 14147 14148 // Convenience version of a common use case of `_.filter`: selecting only 14149 // objects containing specific `key:value` pairs. 14150 function where(obj, attrs) { 14151 return filter(obj, matcher(attrs)); 14152 } 14153 14154 // Return the maximum element (or element-based computation). 14155 function max(obj, iteratee, context) { 14156 var result = -Infinity, lastComputed = -Infinity, 14157 value, computed; 14158 if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { 14159 obj = isArrayLike(obj) ? obj : values(obj); 14160 for (var i = 0, length = obj.length; i < length; i++) { 14161 value = obj[i]; 14162 if (value != null && value > result) { 14163 result = value; 14164 } 14165 } 14166 } else { 14167 iteratee = cb(iteratee, context); 14168 each(obj, function(v, index, list) { 14169 computed = iteratee(v, index, list); 14170 if (computed > lastComputed || computed === -Infinity && result === -Infinity) { 14171 result = v; 14172 lastComputed = computed; 14173 } 14174 }); 14175 } 14176 return result; 14177 } 14178 14179 // Return the minimum element (or element-based computation). 14180 function min(obj, iteratee, context) { 14181 var result = Infinity, lastComputed = Infinity, 14182 value, computed; 14183 if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { 14184 obj = isArrayLike(obj) ? obj : values(obj); 14185 for (var i = 0, length = obj.length; i < length; i++) { 14186 value = obj[i]; 14187 if (value != null && value < result) { 14188 result = value; 14189 } 14190 } 14191 } else { 14192 iteratee = cb(iteratee, context); 14193 each(obj, function(v, index, list) { 14194 computed = iteratee(v, index, list); 14195 if (computed < lastComputed || computed === Infinity && result === Infinity) { 14196 result = v; 14197 lastComputed = computed; 14198 } 14199 }); 14200 } 14201 return result; 14202 } 14203 14204 // Sample **n** random values from a collection using the modern version of the 14205 // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). 14206 // If **n** is not specified, returns a single random element. 14207 // The internal `guard` argument allows it to work with `_.map`. 14208 function sample(obj, n, guard) { 14209 if (n == null || guard) { 14210 if (!isArrayLike(obj)) obj = values(obj); 14211 return obj[random(obj.length - 1)]; 14212 } 14213 var sample = isArrayLike(obj) ? clone(obj) : values(obj); 14214 var length = getLength(sample); 14215 n = Math.max(Math.min(n, length), 0); 14216 var last = length - 1; 14217 for (var index = 0; index < n; index++) { 14218 var rand = random(index, last); 14219 var temp = sample[index]; 14220 sample[index] = sample[rand]; 14221 sample[rand] = temp; 14222 } 14223 return sample.slice(0, n); 14224 } 14225 14226 // Shuffle a collection. 14227 function shuffle(obj) { 14228 return sample(obj, Infinity); 14229 } 14230 14231 // Sort the object's values by a criterion produced by an iteratee. 14232 function sortBy(obj, iteratee, context) { 14233 var index = 0; 14234 iteratee = cb(iteratee, context); 14235 return pluck(map(obj, function(value, key, list) { 14236 return { 14237 value: value, 14238 index: index++, 14239 criteria: iteratee(value, key, list) 14240 }; 14241 }).sort(function(left, right) { 14242 var a = left.criteria; 14243 var b = right.criteria; 14244 if (a !== b) { 14245 if (a > b || a === void 0) return 1; 14246 if (a < b || b === void 0) return -1; 14247 } 14248 return left.index - right.index; 14249 }), 'value'); 14250 } 14251 14252 // An internal function used for aggregate "group by" operations. 14253 function group(behavior, partition) { 14254 return function(obj, iteratee, context) { 14255 var result = partition ? [[], []] : {}; 14256 iteratee = cb(iteratee, context); 14257 each(obj, function(value, index) { 14258 var key = iteratee(value, index, obj); 14259 behavior(result, value, key); 14260 }); 14261 return result; 14262 }; 14263 } 14264 14265 // Groups the object's values by a criterion. Pass either a string attribute 14266 // to group by, or a function that returns the criterion. 14267 var groupBy = group(function(result, value, key) { 14268 if (has$1(result, key)) result[key].push(value); else result[key] = [value]; 14269 }); 14270 14271 // Indexes the object's values by a criterion, similar to `_.groupBy`, but for 14272 // when you know that your index values will be unique. 14273 var indexBy = group(function(result, value, key) { 14274 result[key] = value; 14275 }); 14276 14277 // Counts instances of an object that group by a certain criterion. Pass 14278 // either a string attribute to count by, or a function that returns the 14279 // criterion. 14280 var countBy = group(function(result, value, key) { 14281 if (has$1(result, key)) result[key]++; else result[key] = 1; 14282 }); 14283 14284 // Split a collection into two arrays: one whose elements all pass the given 14285 // truth test, and one whose elements all do not pass the truth test. 14286 var partition = group(function(result, value, pass) { 14287 result[pass ? 0 : 1].push(value); 14288 }, true); 14289 14290 // Safely create a real, live array from anything iterable. 14291 var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; 14292 function toArray(obj) { 14293 if (!obj) return []; 14294 if (isArray(obj)) return slice.call(obj); 14295 if (isString(obj)) { 14296 // Keep surrogate pair characters together. 14297 return obj.match(reStrSymbol); 14298 } 14299 if (isArrayLike(obj)) return map(obj, identity); 14300 return values(obj); 14301 } 14302 14303 // Return the number of elements in a collection. 14304 function size(obj) { 14305 if (obj == null) return 0; 14306 return isArrayLike(obj) ? obj.length : keys(obj).length; 14307 } 14308 14309 // Internal `_.pick` helper function to determine whether `key` is an enumerable 14310 // property name of `obj`. 14311 function keyInObj(value, key, obj) { 14312 return key in obj; 14313 } 14314 14315 // Return a copy of the object only containing the allowed properties. 14316 var pick = restArguments(function(obj, keys) { 14317 var result = {}, iteratee = keys[0]; 14318 if (obj == null) return result; 14319 if (isFunction$1(iteratee)) { 14320 if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); 14321 keys = allKeys(obj); 14322 } else { 14323 iteratee = keyInObj; 14324 keys = flatten$1(keys, false, false); 14325 obj = Object(obj); 14326 } 14327 for (var i = 0, length = keys.length; i < length; i++) { 14328 var key = keys[i]; 14329 var value = obj[key]; 14330 if (iteratee(value, key, obj)) result[key] = value; 14331 } 14332 return result; 14333 }); 14334 14335 // Return a copy of the object without the disallowed properties. 14336 var omit = restArguments(function(obj, keys) { 14337 var iteratee = keys[0], context; 14338 if (isFunction$1(iteratee)) { 14339 iteratee = negate(iteratee); 14340 if (keys.length > 1) context = keys[1]; 14341 } else { 14342 keys = map(flatten$1(keys, false, false), String); 14343 iteratee = function(value, key) { 14344 return !contains(keys, key); 14345 }; 14346 } 14347 return pick(obj, iteratee, context); 14348 }); 14349 14350 // Returns everything but the last entry of the array. Especially useful on 14351 // the arguments object. Passing **n** will return all the values in 14352 // the array, excluding the last N. 14353 function initial(array, n, guard) { 14354 return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); 14355 } 14356 14357 // Get the first element of an array. Passing **n** will return the first N 14358 // values in the array. The **guard** check allows it to work with `_.map`. 14359 function first(array, n, guard) { 14360 if (array == null || array.length < 1) return n == null || guard ? void 0 : []; 14361 if (n == null || guard) return array[0]; 14362 return initial(array, array.length - n); 14363 } 14364 14365 // Returns everything but the first entry of the `array`. Especially useful on 14366 // the `arguments` object. Passing an **n** will return the rest N values in the 14367 // `array`. 14368 function rest(array, n, guard) { 14369 return slice.call(array, n == null || guard ? 1 : n); 14370 } 14371 14372 // Get the last element of an array. Passing **n** will return the last N 14373 // values in the array. 14374 function last(array, n, guard) { 14375 if (array == null || array.length < 1) return n == null || guard ? void 0 : []; 14376 if (n == null || guard) return array[array.length - 1]; 14377 return rest(array, Math.max(0, array.length - n)); 14378 } 14379 14380 // Trim out all falsy values from an array. 14381 function compact(array) { 14382 return filter(array, Boolean); 14383 } 14384 14385 // Flatten out an array, either recursively (by default), or up to `depth`. 14386 // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. 14387 function flatten(array, depth) { 14388 return flatten$1(array, depth, false); 14389 } 14390 14391 // Take the difference between one array and a number of other arrays. 14392 // Only the elements present in just the first array will remain. 14393 var difference = restArguments(function(array, rest) { 14394 rest = flatten$1(rest, true, true); 14395 return filter(array, function(value){ 14396 return !contains(rest, value); 14397 }); 14398 }); 14399 14400 // Return a version of the array that does not contain the specified value(s). 14401 var without = restArguments(function(array, otherArrays) { 14402 return difference(array, otherArrays); 14403 }); 14404 14405 // Produce a duplicate-free version of the array. If the array has already 14406 // been sorted, you have the option of using a faster algorithm. 14407 // The faster algorithm will not work with an iteratee if the iteratee 14408 // is not a one-to-one function, so providing an iteratee will disable 14409 // the faster algorithm. 14410 function uniq(array, isSorted, iteratee, context) { 14411 if (!isBoolean(isSorted)) { 14412 context = iteratee; 14413 iteratee = isSorted; 14414 isSorted = false; 14415 } 14416 if (iteratee != null) iteratee = cb(iteratee, context); 14417 var result = []; 14418 var seen = []; 14419 for (var i = 0, length = getLength(array); i < length; i++) { 14420 var value = array[i], 14421 computed = iteratee ? iteratee(value, i, array) : value; 14422 if (isSorted && !iteratee) { 14423 if (!i || seen !== computed) result.push(value); 14424 seen = computed; 14425 } else if (iteratee) { 14426 if (!contains(seen, computed)) { 14427 seen.push(computed); 14428 result.push(value); 14429 } 14430 } else if (!contains(result, value)) { 14431 result.push(value); 14432 } 14433 } 14434 return result; 14435 } 14436 14437 // Produce an array that contains the union: each distinct element from all of 14438 // the passed-in arrays. 14439 var union = restArguments(function(arrays) { 14440 return uniq(flatten$1(arrays, true, true)); 14441 }); 14442 14443 // Produce an array that contains every item shared between all the 14444 // passed-in arrays. 14445 function intersection(array) { 14446 var result = []; 14447 var argsLength = arguments.length; 14448 for (var i = 0, length = getLength(array); i < length; i++) { 14449 var item = array[i]; 14450 if (contains(result, item)) continue; 14451 var j; 14452 for (j = 1; j < argsLength; j++) { 14453 if (!contains(arguments[j], item)) break; 14454 } 14455 if (j === argsLength) result.push(item); 14456 } 14457 return result; 14458 } 14459 14460 // Complement of zip. Unzip accepts an array of arrays and groups 14461 // each array's elements on shared indices. 14462 function unzip(array) { 14463 var length = array && max(array, getLength).length || 0; 14464 var result = Array(length); 14465 14466 for (var index = 0; index < length; index++) { 14467 result[index] = pluck(array, index); 14468 } 14469 return result; 14470 } 14471 14472 // Zip together multiple lists into a single array -- elements that share 14473 // an index go together. 14474 var zip = restArguments(unzip); 14475 14476 // Converts lists into objects. Pass either a single array of `[key, value]` 14477 // pairs, or two parallel arrays of the same length -- one of keys, and one of 14478 // the corresponding values. Passing by pairs is the reverse of `_.pairs`. 14479 function object(list, values) { 14480 var result = {}; 14481 for (var i = 0, length = getLength(list); i < length; i++) { 14482 if (values) { 14483 result[list[i]] = values[i]; 14484 } else { 14485 result[list[i][0]] = list[i][1]; 14486 } 14487 } 14488 return result; 14489 } 14490 14491 // Generate an integer Array containing an arithmetic progression. A port of 14492 // the native Python `range()` function. See 14493 // [the Python documentation](https://docs.python.org/library/functions.html#range). 14494 function range(start, stop, step) { 14495 if (stop == null) { 14496 stop = start || 0; 14497 start = 0; 14498 } 14499 if (!step) { 14500 step = stop < start ? -1 : 1; 14501 } 14502 14503 var length = Math.max(Math.ceil((stop - start) / step), 0); 14504 var range = Array(length); 14505 14506 for (var idx = 0; idx < length; idx++, start += step) { 14507 range[idx] = start; 14508 } 14509 14510 return range; 14511 } 14512 14513 // Chunk a single array into multiple arrays, each containing `count` or fewer 14514 // items. 14515 function chunk(array, count) { 14516 if (count == null || count < 1) return []; 14517 var result = []; 14518 var i = 0, length = array.length; 14519 while (i < length) { 14520 result.push(slice.call(array, i, i += count)); 14521 } 14522 return result; 14523 } 14524 14525 // Helper function to continue chaining intermediate results. 14526 function chainResult(instance, obj) { 14527 return instance._chain ? _$1(obj).chain() : obj; 14528 } 14529 14530 // Add your own custom functions to the Underscore object. 14531 function mixin(obj) { 14532 each(functions(obj), function(name) { 14533 var func = _$1[name] = obj[name]; 14534 _$1.prototype[name] = function() { 14535 var args = [this._wrapped]; 14536 push.apply(args, arguments); 14537 return chainResult(this, func.apply(_$1, args)); 14538 }; 14539 }); 14540 return _$1; 14541 } 14542 14543 // Add all mutator `Array` functions to the wrapper. 14544 each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { 14545 var method = ArrayProto[name]; 14546 _$1.prototype[name] = function() { 14547 var obj = this._wrapped; 14548 if (obj != null) { 14549 method.apply(obj, arguments); 14550 if ((name === 'shift' || name === 'splice') && obj.length === 0) { 14551 delete obj[0]; 14552 } 14553 } 14554 return chainResult(this, obj); 14555 }; 14556 }); 14557 14558 // Add all accessor `Array` functions to the wrapper. 14559 each(['concat', 'join', 'slice'], function(name) { 14560 var method = ArrayProto[name]; 14561 _$1.prototype[name] = function() { 14562 var obj = this._wrapped; 14563 if (obj != null) obj = method.apply(obj, arguments); 14564 return chainResult(this, obj); 14565 }; 14566 }); 14567 14568 // Named Exports 14569 14570 var allExports = { 14571 __proto__: null, 14572 VERSION: VERSION, 14573 restArguments: restArguments, 14574 isObject: isObject, 14575 isNull: isNull, 14576 isUndefined: isUndefined, 14577 isBoolean: isBoolean, 14578 isElement: isElement, 14579 isString: isString, 14580 isNumber: isNumber, 14581 isDate: isDate, 14582 isRegExp: isRegExp, 14583 isError: isError, 14584 isSymbol: isSymbol, 14585 isArrayBuffer: isArrayBuffer, 14586 isDataView: isDataView$1, 14587 isArray: isArray, 14588 isFunction: isFunction$1, 14589 isArguments: isArguments$1, 14590 isFinite: isFinite$1, 14591 isNaN: isNaN$1, 14592 isTypedArray: isTypedArray$1, 14593 isEmpty: isEmpty, 14594 isMatch: isMatch, 14595 isEqual: isEqual, 14596 isMap: isMap, 14597 isWeakMap: isWeakMap, 14598 isSet: isSet, 14599 isWeakSet: isWeakSet, 14600 keys: keys, 14601 allKeys: allKeys, 14602 values: values, 14603 pairs: pairs, 14604 invert: invert, 14605 functions: functions, 14606 methods: functions, 14607 extend: extend, 14608 extendOwn: extendOwn, 14609 assign: extendOwn, 14610 defaults: defaults, 14611 create: create, 14612 clone: clone, 14613 tap: tap, 14614 get: get, 14615 has: has, 14616 mapObject: mapObject, 14617 identity: identity, 14618 constant: constant, 14619 noop: noop, 14620 toPath: toPath$1, 14621 property: property, 14622 propertyOf: propertyOf, 14623 matcher: matcher, 14624 matches: matcher, 14625 times: times, 14626 random: random, 14627 now: now, 14628 escape: _escape, 14629 unescape: _unescape, 14630 templateSettings: templateSettings, 14631 template: template, 14632 result: result, 14633 uniqueId: uniqueId, 14634 chain: chain, 14635 iteratee: iteratee, 14636 partial: partial, 14637 bind: bind, 14638 bindAll: bindAll, 14639 memoize: memoize, 14640 delay: delay, 14641 defer: defer, 14642 throttle: throttle, 14643 debounce: debounce, 14644 wrap: wrap, 14645 negate: negate, 14646 compose: compose, 14647 after: after, 14648 before: before, 14649 once: once, 14650 findKey: findKey, 14651 findIndex: findIndex, 14652 findLastIndex: findLastIndex, 14653 sortedIndex: sortedIndex, 14654 indexOf: indexOf, 14655 lastIndexOf: lastIndexOf, 14656 find: find, 14657 detect: find, 14658 findWhere: findWhere, 14659 each: each, 14660 forEach: each, 14661 map: map, 14662 collect: map, 14663 reduce: reduce, 14664 foldl: reduce, 14665 inject: reduce, 14666 reduceRight: reduceRight, 14667 foldr: reduceRight, 14668 filter: filter, 14669 select: filter, 14670 reject: reject, 14671 every: every, 14672 all: every, 14673 some: some, 14674 any: some, 14675 contains: contains, 14676 includes: contains, 14677 include: contains, 14678 invoke: invoke, 14679 pluck: pluck, 14680 where: where, 14681 max: max, 14682 min: min, 14683 shuffle: shuffle, 14684 sample: sample, 14685 sortBy: sortBy, 14686 groupBy: groupBy, 14687 indexBy: indexBy, 14688 countBy: countBy, 14689 partition: partition, 14690 toArray: toArray, 14691 size: size, 14692 pick: pick, 14693 omit: omit, 14694 first: first, 14695 head: first, 14696 take: first, 14697 initial: initial, 14698 last: last, 14699 rest: rest, 14700 tail: rest, 14701 drop: rest, 14702 compact: compact, 14703 flatten: flatten, 14704 without: without, 14705 uniq: uniq, 14706 unique: uniq, 14707 union: union, 14708 intersection: intersection, 14709 difference: difference, 14710 unzip: unzip, 14711 transpose: unzip, 14712 zip: zip, 14713 object: object, 14714 range: range, 14715 chunk: chunk, 14716 mixin: mixin, 14717 'default': _$1 14718 }; 14719 14720 // Default Export 14721 14722 // Add all of the Underscore functions to the wrapper object. 14723 var _ = mixin(allExports); 14724 // Legacy Node.js API. 14725 _._ = _; 14726 14727 return _; 14728 14729}))); 14730 14731 14732}).call(this
14732,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 14733//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUtdW1kLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKCd1bmRlcnNjb3JlJywgZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGh
14733pcyA6IGdsb2JhbCB8fCBzZWxmLCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBjdXJyZW50ID0gZ2xvYmFsLl87XG4gICAgdmFyIGV4cG9ydHMgPSBnbG9iYWwuXyA9IGZhY3RvcnkoKTtcbiAgICBleHBvcnRzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7IGdsb2JhbC5fID0gY3VycmVudDsgcmV0dXJuIGV4cG9ydHM7IH07XG4gIH0oKSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkge1xuICAvLyAgICAgVW5kZXJzY29yZS5qcyAxLjEzLjFcbiAgLy8gICAgIGh0dHBzOi8vdW5kZXJzY29yZWpzLm9yZ1xuICAvLyAgICAgKGMpIDIwMDktMjAyMSBKZXJlbXkgQXNoa2VuYXMsIEp1bGlhbiBHb25nZ3JpanAsIGFuZCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAgLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbiAgLy8gQ3VycmVudCB2ZXJzaW9uLlxuICB2YXIgVkVSU0lPTiA9ICcxLjEzLjEnO1xuXG4gIC8vIEVzdGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIChgc2VsZmApIGluIHRoZSBicm93c2VyLCBgZ2xvYmFsYFxuICAvLyBvbiB0aGUgc2VydmVyLCBvciBgdGhpc2AgaW4gc29tZSB2aXJ0dWFsIG1hY2hpbmVzLiBXZSB1c2UgYHNlbGZgXG4gIC8vIGluc3RlYWQgb2YgYHdpbmRvd2AgZm9yIGBXZWJXb3JrZXJgIHN1cHBvcnQuXG4gIHZhciByb290ID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZi5zZWxmID09PSBzZWxmICYmIHNlbGYgfHxcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsLmdsb2JhbCA9PT0gZ2xvYmFsICYmIGdsb2JhbCB8fFxuICAgICAgICAgICAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKSB8fFxuICAgICAgICAgICAge307XG5cbiAgLy8gU2F2ZSBieXRlcyBpbiB0aGUgbWluaWZpZWQgKGJ1dCBub3QgZ3ppcHBlZCkgdmVyc2lvbjpcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsIE9ialByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIFN5bWJvbFByb3RvID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2wucHJvdG90eXBlIDogbnVsbDtcblxuICAvLyBDcmVhdGUgcXVpY2sgcmVmZXJlbmNlIHZhcmlhYmxlcyBmb3Igc3BlZWQgYWNjZXNzIHRvIGNvcmUgcHJvdG90eXBlcy5cbiAgdmFyIHB1c2ggPSBBcnJheVByb3RvLnB1c2gsXG4gICAgICBzbGljZSA9IEFycmF5UHJvdG8uc2xpY2UsXG4gICAgICB0b1N0cmluZyA9IE9ialByb3RvLnRvU3RyaW5nLFxuICAgICAgaGFzT3duUHJvcGVydHkgPSBPYmpQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAvLyBNb2Rlcm4gZmVhdHVyZSBkZXRlY3Rpb24uXG4gIHZhciBzdXBwb3J0c0FycmF5QnVmZmVyID0gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyxcbiAgICAgIHN1cHBvcnRzRGF0YVZpZXcgPSB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnO1xuXG4gIC8vIEFsbCAqKkVDTUFTY3JpcHQgNSsqKiBuYXRpdmUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIHRoYXQgd2UgaG9wZSB0byB1c2VcbiAgLy8gYXJlIGRlY2xhcmVkIGhlcmUuXG4gIHZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheSxcbiAgICAgIG5hdGl2ZUtleXMgPSBPYmplY3Qua2V5cyxcbiAgICAgIG5hdGl2ZUNyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICBuYXRpdmVJc1ZpZXcgPSBzdXBwb3J0c0FycmF5QnVmZmVyICYmIEFycmF5QnVmZmVyLmlzVmlldztcblxuICAvLyBDcmVhdGUgcmVmZXJlbmNlcyB0byB0aGVzZSBidWlsdGluIGZ1bmN0aW9ucyBiZWNhdXNlIHdlIG92ZXJyaWRlIHRoZW0uXG4gIHZhciBfaXNOYU4gPSBpc05hTixcbiAgICAgIF9pc0Zpbml0ZSA9IGlzRmluaXRlO1xuXG4gIC8vIEtleXMgaW4gSUUgPCA5IHRoYXQgd29uJ3QgYmUgaXRlcmF0ZWQgYnkgYGZvciBrZXkgaW4gLi4uYCBhbmQgdGh1cyBtaXNzZWQuXG4gIHZhciBoYXNFbnVtQnVnID0gIXt0b1N0cmluZzogbnVsbH0ucHJvcGVydHlJc0VudW1lcmFibGUoJ3RvU3RyaW5nJyk7XG4gIHZhciBub25FbnVtZXJhYmxlUHJvcHMgPSBbJ3ZhbHVlT2YnLCAnaXNQcm90b3R5cGVPZicsICd0b1N0cmluZycsXG4gICAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ2hhc093blByb3BlcnR5JywgJ3RvTG9jYWxlU3RyaW5nJ107XG5cbiAgLy8gVGhlIGxhcmdlc3QgaW50ZWdlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBleGFjdGx5LlxuICB2YXIgTUFYX0FSUkFZX0lOREVYID0gTWF0aC5wb3coMiwgNTMpIC0gMTtcblxuICAvLyBTb21lIGZ1bmN0aW9ucyB0YWtlIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgb3IgYSBmZXcgZXhwZWN0ZWRcbiAgLy8gYXJndW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHRoZW4gYSB2YXJpYWJsZSBudW1iZXIgb2YgdmFsdWVzIHRvIG9wZXJhdGVcbiAgLy8gb24uIFRoaXMgaGVscGVyIGFjY3VtdWxhdGVzIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIHBhc3QgdGhlIGZ1bmN0aW9u4oCZc1xuICAvLyBhcmd1bWVudCBsZW5ndGggKG9yIGFuIGV4cGxpY2l0IGBzdGFydEluZGV4YCksIGludG8gYW4gYXJyYXkgdGhhdCBiZWNvbWVzXG4gIC8vIHRoZSBsYXN0IGFyZ3VtZW50LiBTaW1pbGFyIHRvIEVTNuKAmXMgXCJyZXN0IHBhcmFtZXRlclwiLlxuICBmdW5jdGlvbiByZXN0QXJndW1lbnRzKGZ1bmMsIHN0YXJ0SW5kZXgpIHtcbiAgICBzdGFydEluZGV4ID0gc3RhcnRJbmRleCA9PSBudWxsID8gZnVuYy5sZW5ndGggLSAxIDogK3N0YXJ0SW5kZXg7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KGFyZ3VtZW50cy5sZW5ndGggLSBzdGFydEluZGV4LCAwKSxcbiAgICAgICAgICByZXN0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdFtpbmRleF0gPSBhcmd1bWVudHNbaW5kZXggKyBzdGFydEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoc3RhcnRJbmRleCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybi
14733BmdW5jLmNhbGwodGhpcywgcmVzdCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBhcmd1bWVudHNbMF0sIHJlc3QpO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sIHJlc3QpO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShzdGFydEluZGV4ICsgMSk7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzdGFydEluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIGFyZ3Nbc3RhcnRJbmRleF0gPSByZXN0O1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgYW4gb2JqZWN0P1xuICBmdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgISFvYmo7XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/XG4gIGZ1bmN0aW9uIGlzTnVsbChvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSBudWxsO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YXJpYWJsZSB1bmRlZmluZWQ/XG4gIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHZvaWQgMDtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBib29sZWFuP1xuICBmdW5jdGlvbiBpc0Jvb2xlYW4ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gdHJ1ZSB8fCBvYmogPT09IGZhbHNlIHx8IHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIERPTSBlbGVtZW50P1xuICBmdW5jdGlvbiBpc0VsZW1lbnQob2JqKSB7XG4gICAgcmV0dXJuICEhKG9iaiAmJiBvYmoubm9kZVR5cGUgPT09IDEpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgYHRvU3RyaW5nYC1iYXNlZCB0eXBlIHRlc3Rlci5cbiAgZnVuY3Rpb24gdGFnVGVzdGVyKG5hbWUpIHtcbiAgICB2YXIgdGFnID0gJ1tvYmplY3QgJyArIG5hbWUgKyAnXSc7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gdGFnO1xuICAgIH07XG4gIH1cblxuICB2YXIgaXNTdHJpbmcgPSB0YWdUZXN0ZXIoJ1N0cmluZycpO1xuXG4gIHZhciBpc051bWJlciA9IHRhZ1Rlc3RlcignTnVtYmVyJyk7XG5cbiAgdmFyIGlzRGF0ZSA9IHRhZ1Rlc3RlcignRGF0ZScpO1xuXG4gIHZhciBpc1JlZ0V4cCA9IHRhZ1Rlc3RlcignUmVnRXhwJyk7XG5cbiAgdmFyIGlzRXJyb3IgPSB0YWdUZXN0ZXIoJ0Vycm9yJyk7XG5cbiAgdmFyIGlzU3ltYm9sID0gdGFnVGVzdGVyKCdTeW1ib2wnKTtcblxuICB2YXIgaXNBcnJheUJ1ZmZlciA9IHRhZ1Rlc3RlcignQXJyYXlCdWZmZXInKTtcblxuICB2YXIgaXNGdW5jdGlvbiA9IHRhZ1Rlc3RlcignRnVuY3Rpb24nKTtcblxuICAvLyBPcHRpbWl6ZSBgaXNGdW5jdGlvbmAgaWYgYXBwcm9wcmlhdGUuIFdvcmsgYXJvdW5kIHNvbWUgYHR5cGVvZmAgYnVncyBpbiBvbGRcbiAgLy8gdjgsIElFIDExICgjMTYyMSksIFNhZmFyaSA4ICgjMTkyOSksIGFuZCBQaGFudG9tSlMgKCMyMjM2KS5cbiAgdmFyIG5vZGVsaXN0ID0gcm9vdC5kb2N1bWVudCAmJiByb290LmRvY3VtZW50LmNoaWxkTm9kZXM7XG4gIGlmICh0eXBlb2YgLy4vICE9ICdmdW5jdGlvbicgJiYgdHlwZW9mIEludDhBcnJheSAhPSAnb2JqZWN0JyAmJiB0eXBlb2Ygbm9kZWxpc3QgIT0gJ2Z1bmN0aW9uJykge1xuICAgIGlzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBpc0Z1bmN0aW9uJDEgPSBpc0Z1bmN0aW9uO1xuXG4gIHZhciBoYXNPYmplY3RUYWcgPSB0YWdUZXN0ZXIoJ09iamVjdCcpO1xuXG4gIC8vIEluIElFIDEwIC0gRWRnZSAxMywgYERhdGFWaWV3YCBoYXMgc3RyaW5nIHRhZyBgJ1tvYmplY3QgT2JqZWN0XSdgLlxuICAvLyBJbiBJRSAxMSwgdGhlIG1vc3QgY29tbW9uIGFtb25nIHRoZW0sIHRoaXMgcHJvYmxlbSBhbHNvIGFwcGxpZXMgdG9cbiAgLy8gYE1hcGAsIGBXZWFrTWFwYCBhbmQgYFNldGAuXG4gIHZhciBoYXNTdHJpbmdUYWdCdWcgPSAoXG4gICAgICAgIHN1cHBvcnRzRGF0YVZpZXcgJiYgaGFzT2JqZWN0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoOCkpKVxuICAgICAgKSxcbiAgICAgIGlzSUUxMSA9ICh0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJiBoYXNPYmplY3RUYWcobmV3IE1hcCkpO1xuXG4gIHZhciBpc0RhdGFWaWV3ID0gdGFnVGVzdGVyKCdEYXRhVmlldycpO1xuXG4gIC8vIEluIElFIDEwIC0gRWRnZSAxMywgd2UgbmVlZCBhIGRpZmZlcmVudCBoZXVyaXN0aWNcbiAgLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGEgYERhdGFWaWV3YC5cbiAgZnVuY3Rpb24gaWUxMElzRGF0YVZpZXcob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGlzRnVuY3Rpb24kMShvYmouZ2V0SW50OCkgJiYgaXNBcnJheUJ1ZmZlcihvYmouYnVmZmVyKTtcbiAgfVxuXG4gIHZhciBpc0RhdGFWaWV3JDEgPSAoaGFzU3RyaW5nVGFnQnVnID8gaWUxMElzRGF0YVZpZXcgOiBpc0RhdGFWaWV3KTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGFuIGFycmF5P1xuICAvLyBEZWxlZ2F0ZXMgdG8gRUNNQTUncyBuYXRpdmUgYEFycmF5LmlzQXJyYXlgLlxuICB2YXIgaXNBcnJheSA9IG5hdGl2ZUlzQXJyYXkgfHwgdGFnVGVzdGVyKCdBcnJheScpO1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgYGtleWAgaXMgYW4gb3duIHByb3BlcnR5IG5hbWUgb2YgYG9iamAuXG4gIGZ1bmN0aW9uIGhhcyQxKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xuICB9XG5cbiAgdmFyIGlzQXJndW1lbnRzID0gdGFnVGVzdGVyKCdBcmd1bWVudHMnKTtcblxuICAvLyBEZWZpbmUgYSBmYWxsYmFjayB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaW4gYnJvd3NlcnMgKGFoZW0sIElFIDwgOSksIHdoZXJlXG4gIC8vIHRoZXJlIGlzbid0IGFueSBpbnNwZWN0YWJsZSBcIkFyZ3VtZW50c1wiIHR5cGUuXG4gIChmdW5jdGlvbigpIHtcbiAgICBpZiAoIWlzQXJndW1lbnRzKGFyZ3VtZW50cykpIHtcbiAgICAgIGlzQXJndW1lbnRzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgI
14733HJldHVybiBoYXMkMShvYmosICdjYWxsZWUnKTtcbiAgICAgIH07XG4gICAgfVxuICB9KCkpO1xuXG4gIHZhciBpc0FyZ3VtZW50cyQxID0gaXNBcmd1bWVudHM7XG5cbiAgLy8gSXMgYSBnaXZlbiBvYmplY3QgYSBmaW5pdGUgbnVtYmVyP1xuICBmdW5jdGlvbiBpc0Zpbml0ZSQxKG9iaikge1xuICAgIHJldHVybiAhaXNTeW1ib2wob2JqKSAmJiBfaXNGaW5pdGUob2JqKSAmJiAhaXNOYU4ocGFyc2VGbG9hdChvYmopKTtcbiAgfVxuXG4gIC8vIElzIHRoZSBnaXZlbiB2YWx1ZSBgTmFOYD9cbiAgZnVuY3Rpb24gaXNOYU4kMShvYmopIHtcbiAgICByZXR1cm4gaXNOdW1iZXIob2JqKSAmJiBfaXNOYU4ob2JqKTtcbiAgfVxuXG4gIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9uLiBPZnRlbiB1c2VmdWwgb3V0c2lkZSBvZiBVbmRlcnNjb3JlLlxuICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQ29tbW9uIGludGVybmFsIGxvZ2ljIGZvciBgaXNBcnJheUxpa2VgIGFuZCBgaXNCdWZmZXJMaWtlYC5cbiAgZnVuY3Rpb24gY3JlYXRlU2l6ZVByb3BlcnR5Q2hlY2soZ2V0U2l6ZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBzaXplUHJvcGVydHkgPSBnZXRTaXplUHJvcGVydHkoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gdHlwZW9mIHNpemVQcm9wZXJ0eSA9PSAnbnVtYmVyJyAmJiBzaXplUHJvcGVydHkgPj0gMCAmJiBzaXplUHJvcGVydHkgPD0gTUFYX0FSUkFZX0lOREVYO1xuICAgIH1cbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRvIG9idGFpbiBwcm9wZXJ0eSBga2V5YCBmcm9tIGBvYmpgLlxuICBmdW5jdGlvbiBzaGFsbG93UHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiA9PSBudWxsID8gdm9pZCAwIDogb2JqW2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBvYnRhaW4gdGhlIGBieXRlTGVuZ3RoYCBwcm9wZXJ0eSBvZiBhbiBvYmplY3QuXG4gIHZhciBnZXRCeXRlTGVuZ3RoID0gc2hhbGxvd1Byb3BlcnR5KCdieXRlTGVuZ3RoJyk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBzcGVuZCBleHRlbnNpdmUgY2hlY2tzIGFnYWluc3RcbiAgLy8gYEFycmF5QnVmZmVyYCBldCBhbC5cbiAgdmFyIGlzQnVmZmVyTGlrZSA9IGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldEJ5dGVMZW5ndGgpO1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSB0eXBlZCBhcnJheT9cbiAgdmFyIHR5cGVkQXJyYXlQYXR0ZXJuID0gL1xcW29iamVjdCAoKEl8VWkpbnQoOHwxNnwzMil8RmxvYXQoMzJ8NjQpfFVpbnQ4Q2xhbXBlZHxCaWcoSXxVaSludDY0KUFycmF5XFxdLztcbiAgZnVuY3Rpb24gaXNUeXBlZEFycmF5KG9iaikge1xuICAgIC8vIGBBcnJheUJ1ZmZlci5pc1ZpZXdgIGlzIHRoZSBtb3N0IGZ1dHVyZS1wcm9vZiwgc28gdXNlIGl0IHdoZW4gYXZhaWxhYmxlLlxuICAgIC8vIE90aGVyd2lzZSwgZmFsbCBiYWNrIG9uIHRoZSBhYm92ZSByZWd1bGFyIGV4cHJlc3Npb24uXG4gICAgcmV0dXJuIG5hdGl2ZUlzVmlldyA/IChuYXRpdmVJc1ZpZXcob2JqKSAmJiAhaXNEYXRhVmlldyQxKG9iaikpIDpcbiAgICAgICAgICAgICAgICAgIGlzQnVmZmVyTGlrZShvYmopICYmIHR5cGVkQXJyYXlQYXR0ZXJuLnRlc3QodG9TdHJpbmcuY2FsbChvYmopKTtcbiAgfVxuXG4gIHZhciBpc1R5cGVkQXJyYXkkMSA9IHN1cHBvcnRzQXJyYXlCdWZmZXIgPyBpc1R5cGVkQXJyYXkgOiBjb25zdGFudChmYWxzZSk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIG9idGFpbiB0aGUgYGxlbmd0aGAgcHJvcGVydHkgb2YgYW4gb2JqZWN0LlxuICB2YXIgZ2V0TGVuZ3RoID0gc2hhbGxvd1Byb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gY3JlYXRlIGEgc2ltcGxlIGxvb2t1cCBzdHJ1Y3R1cmUuXG4gIC8vIGBjb2xsZWN0Tm9uRW51bVByb3BzYCB1c2VkIHRvIGRlcGVuZCBvbiBgXy5jb250YWluc2AsIGJ1dCB0aGlzIGxlZCB0b1xuICAvLyBjaXJj
14733dWxhciBpbXBvcnRzLiBgZW11bGF0ZWRTZXRgIGlzIGEgb25lLW9mZiBzb2x1dGlvbiB0aGF0IG9ubHkgd29ya3MgZm9yXG4gIC8vIGFycmF5cyBvZiBzdHJpbmdzLlxuICBmdW5jdGlvbiBlbXVsYXRlZFNldChrZXlzKSB7XG4gICAgdmFyIGhhc2ggPSB7fTtcbiAgICBmb3IgKHZhciBsID0ga2V5cy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgKytpKSBoYXNoW2tleXNbaV1dID0gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbnM6IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gaGFzaFtrZXldOyB9LFxuICAgICAgcHVzaDogZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGhhc2hba2V5XSA9IHRydWU7XG4gICAgICAgIHJldHVybiBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyLiBDaGVja3MgYGtleXNgIGZvciB0aGUgcHJlc2VuY2Ugb2Yga2V5cyBpbiBJRSA8IDkgdGhhdCB3b24ndFxuICAvLyBiZSBpdGVyYXRlZCBieSBgZm9yIGtleSBpbiAuLi5gIGFuZCB0aHVzIG1pc3NlZC4gRXh0ZW5kcyBga2V5c2AgaW4gcGxhY2UgaWZcbiAgLy8gbmVlZGVkLlxuICBmdW5jdGlvbiBjb2xsZWN0Tm9uRW51bVByb3BzKG9iaiwga2V5cykge1xuICAgIGtleXMgPSBlbXVsYXRlZFNldChrZXlzKTtcbiAgICB2YXIgbm9uRW51bUlkeCA9IG5vbkVudW1lcmFibGVQcm9wcy5sZW5ndGg7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVjdG9yO1xuICAgIHZhciBwcm90byA9IGlzRnVuY3Rpb24kMShjb25zdHJ1Y3RvcikgJiYgY29uc3RydWN0b3IucHJvdG90eXBlIHx8IE9ialByb3RvO1xuXG4gICAgLy8gQ29uc3RydWN0b3IgaXMgYSBzcGVjaWFsIGNhc2UuXG4gICAgdmFyIHByb3AgPSAnY29uc3RydWN0b3InO1xuICAgIGlmIChoYXMkMShvYmosIHByb3ApICYmICFrZXlzLmNvbnRhaW5zKHByb3ApKSBrZXlzLnB1c2gocHJvcCk7XG5cbiAgICB3aGlsZSAobm9uRW51bUlkeC0tKSB7XG4gICAgICBwcm9wID0gbm9uRW51bWVyYWJsZVByb3BzW25vbkVudW1JZHhdO1xuICAgICAgaWYgKHByb3AgaW4gb2JqICYmIG9ialtwcm9wXSAhPT0gcHJvdG9bcHJvcF0gJiYgIWtleXMuY29udGFpbnMocHJvcCkpIHtcbiAgICAgICAga2V5cy5wdXNoKHByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHJpZXZlIHRoZSBuYW1lcyBvZiBhbiBvYmplY3QncyBvd24gcHJvcGVydGllcy5cbiAgLy8gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYE9iamVjdC5rZXlzYC5cbiAgZnVuY3Rpb24ga2V5cyhvYmopIHtcbiAgICBpZiAoIWlzT2JqZWN0KG9iaikpIHJldHVybiBbXTtcbiAgICBpZiAobmF0aXZlS2V5cykgcmV0dXJuIG5hdGl2ZUtleXMob2JqKTtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIGlmIChoYXMkMShvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICAgIC8vIEFoZW0sIElFIDwgOS5cbiAgICBpZiAoaGFzRW51bUJ1ZykgY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpO1xuICAgIHJldHVybiBrZXlzO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiBhcnJheSwgc3RyaW5nLCBvciBvYmplY3QgZW1wdHk/XG4gIC8vIEFuIFwiZW1wdHlcIiBvYmplY3QgaGFzIG5vIGVudW1lcmFibGUgb3duLXByb3BlcnRpZXMuXG4gIGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTa2lwIHRoZSBtb3JlIGV4cGVuc2l2ZSBgdG9TdHJpbmdgLWJhc2VkIHR5cGUgY2hlY2tzIGlmIGBvYmpgIGhhcyBub1xuICAgIC8vIGAubGVuZ3RoYC5cbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKG9iaik7XG4gICAgaWYgKHR5cGVvZiBsZW5ndGggPT0gJ251bWJlcicgJiYgKFxuICAgICAgaXNBcnJheShvYmopIHx8IGlzU3RyaW5nKG9iaikgfHwgaXNBcmd1bWVudHMkMShvYmopXG4gICAgKSkgcmV0dXJuIGxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gZ2V0TGVuZ3RoKGtleXMob2JqKSkgPT09IDA7XG4gIH1cblxuICAvLyBSZXR1cm5zIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZiBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gaXNNYXRjaChvYmplY3QsIGF0dHJzKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhhdHRycyksIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAhbGVuZ3RoO1xuICAgIHZhciBvYmogPSBPYmplY3Qob2JqZWN0KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14733XIga2V5ID0gX2tleXNbaV07XG4gICAgICBpZiAoYXR0cnNba2V5XSAhPT0gb2JqW2tleV0gfHwgIShrZXkgaW4gb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIElmIFVuZGVyc2NvcmUgaXMgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGl0IHJldHVybnMgYSB3cmFwcGVkIG9iamVjdCB0aGF0IGNhblxuICAvLyBiZSB1c2VkIE9PLXN0eWxlLiBUaGlzIHdyYXBwZXIgaG9sZHMgYWx0ZXJlZCB2ZXJzaW9ucyBvZiBhbGwgZnVuY3Rpb25zIGFkZGVkXG4gIC8vIHRocm91Z2ggYF8ubWl4aW5gLiBXcmFwcGVkIG9iamVjdHMgbWF5IGJlIGNoYWluZWQuXG4gIGZ1bmN0aW9uIF8kMShvYmopIHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgXyQxKSByZXR1cm4gb2JqO1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBfJDEpKSByZXR1cm4gbmV3IF8kMShvYmopO1xuICAgIHRoaXMuX3dyYXBwZWQgPSBvYmo7XG4gIH1cblxuICBfJDEuVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmplY3QuXG4gIF8kMS5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JhcHBlZDtcbiAgfTtcblxuICAvLyBQcm92aWRlIHVud3JhcHBpbmcgcHJveGllcyBmb3Igc29tZSBtZXRob2RzIHVzZWQgaW4gZW5naW5lIG9wZXJhdGlvbnNcbiAgLy8gc3VjaCBhcyBhcml0aG1ldGljIGFuZCBKU09OIHN0cmluZ2lmaWNhdGlvbi5cbiAgXyQxLnByb3RvdHlwZS52YWx1ZU9mID0gXyQxLnByb3RvdHlwZS50b0pTT04gPSBfJDEucHJvdG90eXBlLnZhbHVlO1xuXG4gIF8kMS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3dyYXBwZWQpO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyYXAgb3Igc2hhbGxvdy1jb3B5IGFuIEFycmF5QnVmZmVyLFxuICAvLyB0eXBlZCBhcnJheSBvciBEYXRhVmlldyB0byBhIG5ldyB2aWV3LCByZXVzaW5nIHRoZSBidWZmZXIuXG4gIGZ1bmN0aW9uIHRvQnVmZmVyVmlldy
14733hidWZmZXJTb3VyY2UpIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBidWZmZXJTb3VyY2UuYnVmZmVyIHx8IGJ1ZmZlclNvdXJjZSxcbiAgICAgIGJ1ZmZlclNvdXJjZS5ieXRlT2Zmc2V0IHx8IDAsXG4gICAgICBnZXRCeXRlTGVuZ3RoKGJ1ZmZlclNvdXJjZSlcbiAgICApO1xuICB9XG5cbiAgLy8gV2UgdXNlIHRoaXMgc3RyaW5nIHR3aWNlLCBzbyBnaXZlIGl0IGEgbmFtZSBmb3IgbWluaWZpY2F0aW9uLlxuICB2YXIgdGFnRGF0YVZpZXcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4gIC8vIEludGVybmFsIHJlY3Vyc2l2ZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBgXy5pc0VxdWFsYC5cbiAgZnVuY3Rpb24gZXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBJZGVudGljYWwgb2JqZWN0cyBhcmUgZXF1YWwuIGAwID09PSAtMGAsIGJ1dCB0aGV5IGFyZW4ndCBpZGVudGljYWwuXG4gICAgLy8gU2VlIHRoZSBbSGFybW9ueSBgZWdhbGAgcHJvcG9zYWxdKGh0dHBzOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmVnYWwpLlxuICAgIGlmIChhID09PSBiKSByZXR1cm4gYSAhPT0gMCB8fCAxIC8gYSA9PT0gMSAvIGI7XG4gICAgLy8gYG51bGxgIG9yIGB1bmRlZmluZWRgIG9ubHkgZXF1YWwgdG8gaXRzZWxmIChzdHJpY3QgY29tcGFyaXNvbikuXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAvLyBgTmFOYHMgYXJlIGVxdWl2YWxlbnQsIGJ1dCBub24tcmVmbGV4aXZlLlxuICAgIGlmIChhICE9PSBhKSByZXR1cm4gYiAhPT0gYjtcbiAgICAvLyBFeGhhdXN0IHByaW1pdGl2ZSBjaGVja3NcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBhO1xuICAgIGlmICh0eXBlICE9PSAnZnVuY3Rpb24nICYmIHR5cGUgIT09ICdvYmplY3QnICYmIHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGRlZXBFcShhLCBiLCBhU3RhY2ssIGJTdGFjayk7XG4gIH1cblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYF8uaXNFcXVhbGAuXG4gIGZ1bmN0aW9uIGRlZXBFcShhLCBiLCBhU3RhY2ssIGJTdGFjaykge1xuICAgIC8vIFVud3JhcCBhbnkgd3JhcHBlZCBvYmplY3RzLlxuICAgIGlmIChhIGluc3RhbmNlb2YgXyQxKSBhID0gYS5fd3JhcHBlZDtcbiAgICBpZiAoYiBpbnN0YW5jZW9mIF8kMSkgYiA9IGIuX3dyYXBwZWQ7XG4gICAgLy8gQ29tcGFyZSBgW1tDbGFzc11dYCBuYW1lcy5cbiAgICB2YXIgY2xhc3NOYW1lID0gdG9TdHJpbmcuY2FsbChhKTtcbiAgICBpZiAoY2xhc3NOYW1lICE9PSB0b1N0cmluZy5jYWxsKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gV29yayBhcm91bmQgYSBidWcgaW4gSUUgMTAgLSBFZGdlIDEzLlxuICAgIGlmIChoYXNTdHJpbmdUYWdCdWcgJiYgY2xhc3NOYW1lID09ICdbb2JqZWN0IE9iamVjdF0nICYmIGlzRGF0YVZpZXckMShhKSkge1xuICAgICAgaWYgKCFpc0RhdGFWaWV3JDEoYikpIHJldHVybiBmYWxzZTtcbiAgICAgIGNsYXNzTmFtZSA9IHRhZ0RhdGFWaWV3O1xuICAgIH1cbiAgICBzd2l0Y2ggKGNsYXNzTmFtZSkge1xuICAgICAgLy8gVGhlc2UgdHlwZXMgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlLlxuICAgICAgY2FzZSAnW29iamVjdCBSZWdFeHBdJzpcbiAgICAgICAgLy8gUmVnRXhwcyBhcmUgY29lcmNlZCB0byBzdHJpbmdzIGZvciBjb21wYXJpc29uIChOb3RlOiAnJyArIC9hL2kgPT09ICcvYS9pJylcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3RyaW5nXSc6XG4gICAgICAgIC8vIFByaW1pdGl2ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHdyYXBwZXJzIGFyZSBlcXVpdmFsZW50OyB0aHVzLCBgXCI1XCJgIGlzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gYG5ldyBTdHJpbmcoXCI1XCIpYC5cbiAgICAgICAgcmV0dXJuICcnICsgYSA9PT0gJycgKyBiO1xuICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcbiAgICAgICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICAgICAgLy8gT2JqZWN0KE5hTikgaXMgZXF1aXZhbGVudCB0byBOYU4uXG4gICAgICAgIGlmICgrYSAhPT0gK2EpIHJldHVybiArYiAhPT0gK2I7XG4gICAgICAgIC8vIEFuIGBlZ2FsYCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBmb3Igb3RoZXIgbnVtZXJpYyB2YWx1ZXMuXG4gICAgICAgIHJldHVybiArYSA9PT0gMCA/IDEgLyArYSA9PT0gMSAvIGIgOiArYSA9PT0gK2I7XG4gICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcbiAgICAgIGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxuICAgICAgICAvLyBDb2VyY2UgZGF0ZXMgYW5kIGJvb2xlYW5zIHRvIG51bWVyaWMgcHJpbWl0aXZlIHZhbHVlcy4gRGF0ZXMgYXJlIGNvbXBhcmVkIGJ5IHRoZWlyXG4gICAgICAgIC8vIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9ucy4gTm90ZSB0aGF0IGludmFsaWQgZGF0ZXMgd2l0aCBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnNcbiAgICAgICAgLy8gb2YgYE5hTmAgYXJlIG5vdCBlcXVpdmFsZW50LlxuICAgICAgICByZXR1cm4gK2EgPT09ICtiO1xuICAgICAgY2FzZSAnW29iamVjdCBTeW1ib2xdJzpcbiAgICAgICAgcmV0dXJuIFN5bWJvbFByb3RvLnZhbHVlT2YuY2FsbChhKSA9PT0gU3ltYm9sUHJvdG8udmFsdWVPZi5jYWxsKGIpO1xuICAgICAgY2FzZSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nOlxuICAgICAgY2FzZSB0YWdEYXRhVmlldzpcbiAgICAgICAgLy8gQ29lcmNlIHRvIHR5cGVkIGFycmF5IHNvIHdlIGNhbiBmYWxsIHRocm91Z2guXG4gICAgICAgIHJldHVybiBkZWVwRXEodG9CdWZmZXJWaWV3KGEpLCB0b0J1ZmZlclZpZXcoYiksIGFTdGFjaywgYlN0YWNrKTtcbiAgICB9XG5cbiAgICB2YXIgYXJlQXJyYXlzID0gY2xhc3NOYW1lID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIGlmICghYXJlQXJyYXlzICYmIGlzVHlwZWRBcnJheSQxKGEpKSB7XG4gICAgICAgIHZhciBieXRlTGVuZ3RoID0gZ2V0Qnl0ZUxlbmd0aChhKTtcbiAgICAgICAgaWYgKGJ5dGVMZW5ndGggIT09IGdldEJ5dGVMZW5ndGgoYikpIHJldHVybi
14733BmYWxzZTtcbiAgICAgICAgaWYgKGEuYnVmZmVyID09PSBiLmJ1ZmZlciAmJiBhLmJ5dGVPZmZzZXQgPT09IGIuYnl0ZU9mZnNldCkgcmV0dXJuIHRydWU7XG4gICAgICAgIGFyZUFycmF5cyA9IHRydWU7XG4gICAgfVxuICAgIGlmICghYXJlQXJyYXlzKSB7XG4gICAgICBpZiAodHlwZW9mIGEgIT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgIT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gT2JqZWN0cyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVpdmFsZW50LCBidXQgYE9iamVjdGBzIG9yIGBBcnJheWBzXG4gICAgICAvLyBmcm9tIGRpZmZlcmVudCBmcmFtZXMgYXJlLlxuICAgICAgdmFyIGFDdG9yID0gYS5jb25zdHJ1Y3RvciwgYkN0b3IgPSBiLmNvbnN0cnVjdG9yO1xuICAgICAgaWYgKGFDdG9yICE9PSBiQ3RvciAmJiAhKGlzRnVuY3Rpb24kMShhQ3RvcikgJiYgYUN0b3IgaW5zdGFuY2VvZiBhQ3RvciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRnVuY3Rpb24kMShiQ3RvcikgJiYgYkN0b3IgaW5zdGFuY2VvZiBiQ3RvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCdjb25zdHJ1Y3RvcicgaW4gYSAmJiAnY29uc3RydWN0b3InIGluIGIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQXNzdW1lIGVxdWFsaXR5IGZvciBjeWNsaWMgc3RydWN0dXJlcy4gVGhlIGFsZ29yaXRobSBmb3IgZGV0ZWN0aW5nIGN5Y2xpY1xuICAgIC8vIHN0cnVjdHVyZXMgaXMgYWRhcHRlZCBmcm9tIEVTIDUuMSBzZWN0aW9uIDE1LjEyLjMsIGFic3RyYWN0IG9wZXJhdGlvbiBgSk9gLlxuXG4gICAgLy8gSW5pdGlhbGl6aW5nIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIC8vIEl0J3MgZG9uZSBoZXJlIHNpbmNlIHdlIG9ubHkgbmVlZCB0aGVtIGZvciBvYmplY3RzIGFuZCBhcnJheXMgY29tcGFyaXNvbi5cbiAgICBhU3RhY2sgPSBhU3RhY2sgfHwgW107XG4gICAgYlN0YWNrID0gYlN0YWNrIHx8IFtdO1xuICAgIHZhciBsZW5ndGggPSBhU3RhY2subGVuZ3RoO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgLy8gTGluZWFyIHNlYXJjaC4gUGVyZm9ybWFuY2UgaXMgaW52ZXJzZWx5IHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mXG4gICAgICAvLyB1bmlxdWUgbmVzdGVkIHN0cnVjdHVyZXMuXG4gICAgICBpZiAoYVN0YWNrW2xlbmd0aF0gPT09IGEpIHJldHVybiBiU3RhY2tbbGVuZ3RoXSA9PT0gYjtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGZpcnN0IG9iamVjdCB0byB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnB1c2goYSk7XG4gICAgYlN0YWNrLnB1c2goYik7XG5cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgYW5kIGFycmF5cy5cbiAgICBpZiAoYXJlQXJyYXlzKSB7XG4gICAgICAvLyBDb21wYXJlIGFycmF5IGxlbmd0aHMgdG8gZGV0ZXJtaW5lIGlmIGEgZGVlcCBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeS5cbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIERlZXAgY29tcGFyZSB0aGUgY29udGVudHMsIGlnbm9yaW5nIG5vbi1udW1lcmljIHByb3BlcnRpZXMuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKCFlcShhW2xlbmd0aF0sIGJbbGVuZ3RoXSwgYVN0YWNrLCBiU3RhY2spKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZXAgY29tcGFyZSBvYmplY3RzLlxuICAgICAgdmFyIF9rZXlzID0ga2V5cyhhKSwga2V5O1xuICAgICAgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgICAgLy8gRW5zdXJlIHRoYXQgYm90aCBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUgbnVtYmVyIG9mIHByb3BlcnRpZXMgYmVmb3JlIGNvbXBhcmluZyBkZWVwIGVxdWFsaXR5LlxuICAgICAgaWYgKGtleXMoYikubGVuZ3RoICE9PSBsZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXJcbiAgICAgICAga2V5ID0gX2tleXNbbGVuZ3RoXTtcbiAgICAgICAgaWYgKCEoaGFzJDEoYiwga2V5KSAmJiBlcShhW2tleV0sIGJba2V5XSwgYVN0YWNrLCBiU3RhY2spKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgdGhlIGZpcnN0IG9iamVjdCBmcm9tIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICBhU3RhY2sucG9wKCk7XG4gICAgYlN0YWNrLnBvcCgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gUGVyZm9ybSBhIGRlZXAgY29tcGFyaXNvbiB0byBjaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZXF1YWwuXG4gIGZ1bmN0aW9uIGlzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBlcShhLCBiKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlIGFsbCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIGFsbEtleXMob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBrZXlzLnB1c2goa2V5KTtcbiAgICAvLyBBaGVtLCBJRSA8IDkuXG4gICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfVxuXG4gIC8vIFNpbmNlIHRoZSByZWd1bGFyIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCB0eXBlIHRlc3RzIGRvbid0IHdvcmsgZm9yXG4gIC8vIHNvbWUgdHlwZXMgaW4gSUUgMTEsIHdlIHVzZSBhIGZpbmdlcnByaW50aW5nIGhldXJpc3RpYyBpbnN0ZWFkLCBiYXNlZFxuICAvLyBvbiB0aGUgbWV0aG9kcy4gSXQncyBub3QgZ3JlYXQsIGJ1dCBpdCdzIHRoZSBiZXN0IHdlIGdvdC5cbiAgLy8gVGhlIGZpbmdlcnByaW50IG1ldGhvZCBsaXN0cyBhcmUgZGVmaW5lZCBiZWxvdy5cbiAgZnVuY3Rpb24gaWUxMWZpbmdlcnByaW50KG1ldGhvZHMpIHtcbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKG1ldGhvZHMpO1xuICAgIHJldHVybi
14733BmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gYE1hcGAsIGBXZWFrTWFwYCBhbmQgYFNldGAgaGF2ZSBubyBlbnVtZXJhYmxlIGtleXMuXG4gICAgICB2YXIga2V5cyA9IGFsbEtleXMob2JqKTtcbiAgICAgIGlmIChnZXRMZW5ndGgoa2V5cykpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uJDEob2JqW21ldGhvZHNbaV1dKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gSWYgd2UgYXJlIHRlc3RpbmcgYWdhaW5zdCBgV2Vha01hcGAsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXRcbiAgICAgIC8vIGBvYmpgIGRvZXNuJ3QgaGF2ZSBhIGBmb3JFYWNoYCBtZXRob2QgaW4gb3JkZXIgdG8gZGlzdGluZ3Vpc2hcbiAgICAgIC8vIGl0IGZyb20gYSByZWd1bGFyIGBNYXBgLlxuICAgICAgcmV0dXJuIG1ldGhvZHMgIT09IHdlYWtNYXBNZXRob2RzIHx8ICFpc0Z1bmN0aW9uJDEob2JqW2ZvckVhY2hOYW1lXSk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEluIHRoZSBpbnRlcmVzdCBvZiBjb21wYWN0IG1pbmlmaWNhdGlvbiwgd2Ugd3JpdGVcbiAgLy8gZWFjaCBzdHJpbmcgaW4gdGhlIGZpbmdlcnByaW50cyBvbmx5IG9uY2UuXG4gIHZhciBmb3JFYWNoTmFtZSA9ICdmb3JFYWNoJyxcbiAgICAgIGhhc05hbWUgPSAnaGFzJyxcbiAgICAgIGNvbW1vbkluaXQgPSBbJ2NsZWFyJywgJ2RlbGV0ZSddLFxuICAgICAgbWFwVGFpbCA9IFsnZ2V0JywgaGFzTmFtZSwgJ3NldCddO1xuXG4gIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgIGVhY2ggaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnRcbiAgLy8gY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSBzdWJsaXN0cy5cbiAgdmFyIG1hcE1ldGhvZHMgPSBjb21tb25Jbml0LmNvbmNhdChmb3JFYWNoTmFtZSwgbWFwVGFpbCksXG4gICAgICB3ZWFrTWFwTWV0aG9kcyA9IGNvbW1vbkluaXQuY29uY2F0KG1hcFRhaWwpLFxuICAgICAgc2V0TWV0aG9kcyA9IFsnYWRkJ10uY29uY2F0KGNvbW1vbkluaXQsIGZvckVhY2hOYW1lLCBoYXNOYW1lKTtcblxuICB2YXIgaXNNYXAgPSBpc0lFMTEgPyBpZTExZmluZ2VycHJpbnQobWFwTWV0aG9kcykgOiB0YWdUZXN0ZXIoJ01hcCcpO1xuXG4gIHZhciBpc1dlYWtNYXAgPSBpc0lFMTEgPyBpZTExZmluZ2VycHJpbnQod2Vha01hcE1ldGhvZHMpIDogdGFnVGVzdGVyKCdXZWFrTWFwJyk7XG5cbiAgdmFyIGlzU2V0ID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KHNldE1ldGhvZHMpIDogdGFnVGVzdGVyKCdTZXQnKTtcblxuICB2YXIgaXNXZWFrU2V0ID0gdGFnVGVzdGVyKCdXZWFrU2V0Jyk7XG5cbiAgLy8gUmV0cmlldmUgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiB2YWx1ZXMob2JqKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgdmFyIHZhbHVlcyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWVzW2ldID0gb2JqW19rZXlzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8vIENvbnZlcnQgYW4gb2JqZWN0IGludG8gYSBsaXN0IG9mIGBba2V5LCB2YWx1ZV1gIHBhaXJzLlxuICAvLyBUaGUgb3Bwb3NpdGUgb2YgYF8ub2JqZWN0YCB3aXRoIG9uZSBhcmd1bWVudC5cbiAgZnVuY3Rpb24gcGFpcnMob2JqKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgdmFyIHBhaXJzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBwYWlyc1tpXSA9IFtfa2V5c1tpXSwgb2JqW19rZXlzW2ldXV07XG4gICAgfVxuICAgIHJldHVybiBwYWlycztcbiAgfVxuXG4gIC8vIEludmVydCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGFuIG9iamVjdC4gVGhlIHZhbHVlcyBtdXN0IGJlIHNlcmlhbGl6YWJsZS5cbiAgZnVuY3Rpb24gaW52ZXJ0KG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgX2tleXMgPSBrZXlzKG9iaik7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRbb2JqW19rZXlzW2ldXV0gPSBfa2V5c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lcyBhdmFpbGFibGUgb24gdGhlIG9iamVjdC5cbiAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iaikge1xuICAgIHZhciBuYW1lcyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChpc0Z1bmN0aW9uJDEob2JqW2tleV0pKSBuYW1lcy5wdXNoKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBuYW1lcy5zb3J0KCk7XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYXNzaWduZXIgZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihrZXlzRnVuYywgZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICB2Y
14733XIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmIChkZWZhdWx0cykgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgICBpZiAobGVuZ3RoIDwgMiB8fCBvYmogPT0gbnVsbCkgcmV0dXJuIG9iajtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF0sXG4gICAgICAgICAgICBrZXlzID0ga2V5c0Z1bmMoc291cmNlKSxcbiAgICAgICAgICAgIGwgPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoIWRlZmF1bHRzIHx8IG9ialtrZXldID09PSB2b2lkIDApIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEV4dGVuZCBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgcHJvcGVydGllcyBpbiBwYXNzZWQtaW4gb2JqZWN0KHMpLlxuICB2YXIgZXh0ZW5kID0gY3JlYXRlQXNzaWduZXIoYWxsS2V5cyk7XG5cbiAgLy8gQXNzaWducyBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgb3duIHByb3BlcnRpZXMgaW4gdGhlIHBhc3NlZC1pblxuICAvLyBvYmplY3QocykuXG4gIC8vIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduKVxuICB2YXIgZXh0ZW5kT3duID0gY3JlYXRlQXNzaWduZXIoa2V5cyk7XG5cbiAgLy8gRmlsbCBpbiBhIGdpdmVuIG9iamVjdCB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgdmFyIGRlZmF1bHRzID0gY3JlYXRlQXNzaWduZXIoYWxsS2V5cywgdHJ1ZSk7XG5cbiAgLy8gQ3JlYXRlIGEgbmFrZWQgZnVuY3Rpb24gcmVmZXJlbmNlIGZvciBzdXJyb2dhdGUtcHJvdG90eXBlLXN3YXBwaW5nLlxuICBmdW5jdGlvbiBjdG9yKCkge1xuICAgIHJldHVybiBmdW5jdGlvbigpe307XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSBhbm90aGVyLlxuICBmdW5jdGlvbiBiYXNlQ3JlYXRlKHByb3RvdHlwZSkge1xuICAgIGlmICghaXNPYmplY3QocHJvdG90eXBlKSkgcmV0dXJuIHt9O1xuICAgIGlmIChuYXRpdmVDcmVhdGUpIHJldHVybiBuYXRpdmVDcmVhdGUocHJvdG90eXBlKTtcbiAgICB2YXIgQ3RvciA9IGN0b3IoKTtcbiAgICBDdG9yLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IEN0b3I7XG4gICAgQ3Rvci5wcm90b3R5cGUgPSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGdpdmVuIHByb3RvdHlwZSBvYmplY3QuXG4gIC8vIElmIGFkZGl0aW9uYWwgcHJvcGVydGllcyBhcmUgcHJvdmlkZWQgdGhlbiB0aGV5IHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4gIC8vIGNyZWF0ZWQgb2JqZWN0LlxuICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wcykge1xuICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgaWYgKHByb3BzKSBleHRlbmRPd24ocmVzdWx0LCBwcm9wcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIChzaGFsbG93LWNsb25lZCkgZHVwbGljYXRlIG9mIGFuIG9iamVjdC5cbiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIHJldHVybiBpc0FycmF5KG9iaikgPyBvYmouc2xpY2UoKSA6IGV4dGVuZCh7fSwgb2JqKTtcbiAgfVxuXG4gIC8vIEludm9rZXMgYGludGVyY2VwdG9yYCB3aXRoIHRoZSBgb2JqYCBhbmQgdGhlbiByZXR1cm5zIGBvYmpgLlxuICAvLyBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiwgaW5cbiAgLy8gb3JkZXIgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIGludGVybWVkaWF0ZSByZXN1bHRzIHdpdGhpbiB0aGUgY2hhaW4uXG4gIGZ1bmN0aW9uIHRhcChvYmosIGludGVyY2VwdG9yKSB7XG4gICAgaW50ZXJjZXB0b3Iob2JqKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGEgKGRlZXApIHByb3BlcnR5IGBwYXRoYCB0byBhcnJheS5cbiAgLy8gTGlrZSBgXy5pdGVyYXRlZWAsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQuXG4gIGZ1bmN0aW9uIHRvUGF0aCQxKHBhdGgpIHtcbiAgICByZXR1cm4gaXNBcnJheShwYXRoKSA/IHBhdGggOiBbcGF0aF07XG4gIH1cbiAgXyQxLnRvUGF0aCA9IHRvUGF0aCQxO1xuXG4gIC8vIEludGVybmFsIHdyYXBwZXIgZm9yIGBfLnRvUGF0aGAgdG8gZW5hYmxlIG1pbmlmaWNhdGlvbi5cbiAgLy8gU2ltaWxhciB0byBgY2JgIGZvciBgXy5pdGVyYXRlZWAuXG4gIGZ1bmN0aW9uIHRvUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIF8kMS50b1BhdGgocGF0aCk7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBvYnRhaW4gYSBuZXN0ZWQgcHJvcGVydHkgaW4gYG9iamAgYWxvbmcgYHBhdGhgLlxuICBmdW5jdGlvbiBkZWVwR2V0KG9iaiwgcGF0aCkge1xuICAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgICBvYmogPSBvYmpbcGF0aFtpXV07XG4gICAgfVxuICAgIHJldHVybiBsZW5ndGggPyBvYmogOiB2b2lkIDA7XG4gIH1cblxuICAvLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSAoZGVlcCkgcHJvcGVydHkgb24gYHBhdGhgIGZyb20gYG9iamVjdGAuXG4gIC8vIElmIGFueSBwcm9wZXJ0eSBpbiBgcGF0aGAgZG9lcyBub3QgZXhpc3Qgb3IgaWYgdGhlIHZhbHVlIGlzXG4gIC8vIGB1bmRlZmluZWRgLCByZXR1cm4gYGRlZmF1bHRWYWx1ZWAgaW5zdGVhZC5cbiAgLy8gVGhlIGBwYXRoYCBpcyBub3JtYWxpem
14733VkIHRocm91Z2ggYF8udG9QYXRoYC5cbiAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gZGVlcEdldChvYmplY3QsIHRvUGF0aChwYXRoKSk7XG4gICAgcmV0dXJuIGlzVW5kZWZpbmVkKHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBwcm9wZXJ0eSBkaXJlY3RseSBvblxuICAvLyBpdHNlbGYgKGluIG90aGVyIHdvcmRzLCBub3Qgb24gYSBwcm90b3R5cGUpLiBVbmxpa2UgdGhlIGludGVybmFsIGBoYXNgXG4gIC8vIGZ1bmN0aW9uLCB0aGlzIHB1YmxpYyB2ZXJzaW9uIGNhbiBhbHNvIHRyYXZlcnNlIG5lc3RlZCBwcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiBoYXMob2JqLCBwYXRoKSB7XG4gICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHBhdGhbaV07XG4gICAgICBpZiAoIWhhcyQxKG9iaiwga2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfVxuICAgIHJldHVybiAhIWxlbmd0aDtcbiAgfVxuXG4gIC8vIEtlZXAgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGFyb3VuZCBmb3IgZGVmYXVsdCBpdGVyYXRlZXMuXG4gIGZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIHByZWRpY2F0ZSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gc2V0IG9mXG4gIC8vIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiBtYXRjaGVyKGF0dHJzKSB7XG4gICAgYXR0cnMgPSBleHRlbmRPd24oe30sIGF0dHJzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gaXNNYXRjaChvYmosIGF0dHJzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gcGFzc2VkIGFuIG9iamVjdCwgd2lsbCB0cmF2ZXJzZSB0aGF0IG9iamVjdOKAmXNcbiAgLy8gcHJvcGVydGllcyBkb3duIHRoZSBnaXZlbiBgcGF0aGAsIHNwZWNpZmllZCBhcyBhbiBhcnJheSBvZiBrZXlzIG9yIGluZGljZXMuXG4gIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBkZWVwR2V0KG9iaiwgcGF0aCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlZmZpY2llbnQgKGZvciBjdXJyZW50IGVuZ2luZXMpIHZlcnNpb25cbiAgLy8gb2YgdGhlIHBhc3NlZC1pbiBjYWxsYmFjaywgdG8gYmUgcmVwZWF0ZWRseSBhcHBsaWVkIGluIG90aGVyIFVuZGVyc2NvcmVcbiAgLy8gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBvcHRpbWl6ZUNiKGZ1bmMsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgcmV0dXJuIGZ1bmM7XG4gICAgc3dpdGNoIChhcmdDb3VudCA9PSBudWxsID8gMyA6IGFyZ0NvdW50KSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlKTtcbiAgICAgIH07XG4gICAgICAvLyBUaGUgMi1hcmd1bWVudCBjYXNlIGlzIG9taXR0ZWQgYmVjYXVzZSB3ZeKAmXJlIG5vdCB1c2luZyBpdC5cbiAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICB9O1xuICAgICAgY2FzZSA0OiByZXR1cm4gZnVuY3Rpb24oYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgY2FsbGJhY2tzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gZWFjaFxuICAvLyBlbGVtZW50IGluIGEgY29sbGVjdGlvbiwgcmV0dXJuaW5nIHRoZSBkZXNpcmVkIHJlc3VsdCDigJQgZWl0aGVyIGBfLmlkZW50aXR5YCxcbiAgLy8gYW4gYXJiaXRyYXJ5IGNhbGxiYWNrLCBhIHByb3BlcnR5IG1hdGNoZXIsIG9yIGEgcHJvcGVydHkgYWNjZXNzb3IuXG4gIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGlkZW50aXR5O1xuICAgIGlmIChpc0Z1bmN0aW9uJDEodmFsdWUpKSByZXR1cm4gb3B0aW1pemVDYih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpO1xuICAgIGlmIChpc09iamVjdCh2YWx1ZSkgJiYgIWlzQXJyYXkodmFsdWUpKSByZXR1cm4gbWF0Y2hlcih2YWx1ZSk7XG4gICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8vIEV4dGVybmFsIHdyYXBwZXIgZm9yIG91ciBjYWxsYmFjayBnZW5lcmF0b3IuIFVzZXJzIG1heSBjdXN0b21pemVcbiAgLy8gYF8uaXRlcmF0ZWVgIGlmIHRoZXkgd2FudCBhZGRpdGlvbmFsIHByZWRpY2F0ZS9pdGVyYXRlZSBzaG9ydGhhbmQgc3R5bGVzLlxuICAvLyBUaGlzIGFic3RyYWN0aW9uIGhpZGVzIHRoZSBpbnRlcm5hbC1vbmx5IGBhcmdDb3VudGAgYXJndW1lbnQuXG4gIGZ1bmN0aW9uIGl0ZXJhdGVlKHZhbHVlLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgSW5maW5pdHkpO1xuICB9XG4gIF8kMS5pdGVyYXRlZSA9IGl0ZXJhdGVlO1xuXG4gIC8vIFRoZSBmdW5jdGlvbiB3ZSBjYWxsIGludGVybmFsbHkgdG8gZ2VuZXJhdGUgYSBjYWxsYmFjay4gSXQgaW52b2tlc1xuICAvLyBgXy5pdGVyYXRlZWAgaWYgb3ZlcnJpZGRlbiwgb3RoZXJ3aXNlIGBiYXNlSXRlcmF0ZWVgLlxuICBmdW5jdGlvbiBjYih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAoXyQxLml0ZXJhdGVlICE9PSBpdGVyYXRlZSkgcmV0dXJuIF8kMS5pdGVyYXRlZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgcmV0dXJuIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpO1xuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgYGl0ZXJhdGVlYCB0byBlYWNoIGVsZW1lbnQgb2YgYG9iamAuXG4gIC8vIEluIGNvbnRyYXN0IHRvIGBfLm1hcGAgaXQgcmV0dXJucyBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIG1hcE9iamVjdChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSBfa2V5cy5sZW5ndGgsXG4gICAgICAgI
14733HJlc3VsdHMgPSB7fTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IF9rZXlzW2luZGV4XTtcbiAgICAgIHJlc3VsdHNbY3VycmVudEtleV0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLy8gUHJlZGljYXRlLWdlbmVyYXRpbmcgZnVuY3Rpb24uIE9mdGVuIHVzZWZ1bCBvdXRzaWRlIG9mIFVuZGVyc2NvcmUuXG4gIGZ1bmN0aW9uIG5vb3AoKXt9XG5cbiAgLy8gR2VuZXJhdGVzIGEgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IHRoYXQgcmV0dXJucyBhIGdpdmVuIHByb3BlcnR5LlxuICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG5vb3A7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiBnZXQob2JqLCBwYXRoKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gUnVuIGEgZnVuY3Rpb24gKipuKiogdGltZXMuXG4gIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIGFjY3VtID0gQXJyYXkoTWF0aC5tYXgoMCwgbikpO1xuICAgIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIGFjY3VtW2ldID0gaXRlcmF0ZWUoaSk7XG4gICAgcmV0dXJuIGFjY3VtO1xuICB9XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiBgbWluYCBhbmQgYG1heGAgKGluY2x1c2l2ZSkuXG4gIGZ1bmN0aW9uIHJhbmRvbShtaW4sIG1heCkge1xuICAgIGlmIChtYXggPT0gbnVsbCkge1xuICAgICAgbWF4ID0gbWluO1xuICAgICAgbWluID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIG1pbiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSk7XG4gIH1cblxuICAvLyBBIChwb3NzaWJseSBmYXN0ZXIpIHdheSB0byBnZXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGFzIGFuIGludGVnZXIuXG4gIHZhciBub3cgPSBEYXRlLm5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5nc1xuICAvLyB0by9mcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgZnVuY3Rpb24gY3JlYXRlRXNjYXBlcihtYXApIHtcbiAgICB2YXIgZXNjYXBlciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWFwW21hdGNoXTtcbiAgICB9O1xuICAgIC8vIFJlZ2V4ZXMgZm9yIGlkZW50aWZ5aW5nIGEga2V5IHRoYXQgbmVlZHMgdG8gYmUgZXNjYXBlZC5cbiAgICB2YXIgc291cmNlID0gJyg/OicgKyBrZXlzKG1hcCkuam9pbignfCcpICsgJyknO1xuICAgIHZhciB0ZXN0UmVnZXhwID0gUmVnRXhwKHNvdXJjZSk7XG4gICAgdmFyIHJlcGxhY2VSZWdleHAgPSBSZWdFeHAoc291cmNlLCAnZycpO1xuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyA9PSBudWxsID8gJycgOiAnJyArIHN0cmluZztcbiAgICAgIHJldHVybiB0ZXN0UmVnZXhwLnRlc3Qoc3RyaW5nKSA/IHN0cmluZy5yZXBsYWNlKHJlcGxhY2VSZWdleHAsIGVzY2FwZXIpIDogc3RyaW5nO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBsaXN0IG9mIEhUTUwgZW50aXRpZXMgZm9yIGVzY2FwaW5nLlxuICB2YXIgZXNjYXBlTWFwID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjeDI3OycsXG4gICAgJ2AnOiAnJiN4NjA7J1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIGZvciBlc2NhcGluZyBzdHJpbmdzIHRvIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIF9lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKGVzY2FwZU1hcCk7XG5cbiAgLy8gSW50ZXJuYWwgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGZvciB1bmVzY2FwaW5nLlxuICB2YXIgdW5lc2NhcGVNYXAgPSBpbnZlcnQoZXNjYXBlTWFwKTtcblxuICAvLyBGdW5jdGlvbiBmb3IgdW5lc2NhcGluZyBzdHJpbmdzIGZyb20gSFRNTCBpbnRlcnBvbGF0aW9uLlxuICB2YXIgX3VuZXNjYXBlID0gY3JlYXRlRXNjYXBlcih1bmVzY2FwZU1hcCk7XG5cbiAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiBDaGFuZ2UgdGhlXG4gIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgdmFyIHRlbXBsYXRlU2V0dGluZ3MgPSBfJDEudGVtcGxhdGVTZXR0aW5ncyA9IHtcbiAgICBldmFsdWF0ZTogLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICBpbnRlcnBvbGF0ZTogLzwlPShbXFxzXFxTXSs/KSU+L2csXG4gICAgZXNjYXBlOiAvPCUtKFtcXHNcXFNdKz8pJT4vZ1xuICB9O1xuXG4gIC8vIFdoZW4gY3VzdG9taXppbmcgYF8udGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhblxuICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzXG4gIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLlxuICB2YXIgbm9NYXRjaCA9IC8oLileLztcblxuICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYVxuICAvLyBzdHJpbmcgbGl0ZXJhbC5cbiAgdmFyIGVzY2FwZXMgPSB7XG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcbic6ICduJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgdmFyIGVzY2FwZVJlZ0V4cCA9IC9cXFxcfCd8XFxyfFxcbnxcXHUyMDI4fFxcdTIwMjkvZztcblxuICBmdW5jdGlvbiBlc2NhcGVDaGFyKG1hdGNoKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIGVzY2FwZXNbbWF0Y2hdO1xuICB9XG5cbiAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlyZC1wYXJ0eSBjb2RlIGluamVjdGlvbiB0aHJvdWdoXG4gIC8vIGBfLnRlbXBsYXRlU2V0dGluZ3MudmFyaWFibGVgLCB3ZSB0ZXN0IGl0IGFnYWluc3QgdGhlIGZvbGxvd2luZyByZWd1bGFyXG4gIC8vIGV4cHJlc3Npb24uIEl0IGlzIGludGVudGlvbmFsbHkgYSBiaXQgbW9yZSBsaWJlcmFsIHRoYW4ganVzdCBtYXRjaGluZyB2YWxpZFxuICAvLyBpZGVudGlmaWVycywgYnV0IHN0aWxsIHByZXZlbn
14733RzIHBvc3NpYmxlIGxvb3Bob2xlcyB0aHJvdWdoIGRlZmF1bHRzIG9yXG4gIC8vIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudC5cbiAgdmFyIGJhcmVJZGVudGlmaWVyID0gL15cXHMqKFxcd3xcXCQpK1xccyokLztcblxuICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLlxuICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsXG4gIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLlxuICAvLyBOQjogYG9sZFNldHRpbmdzYCBvbmx5IGV4aXN0cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIGZ1bmN0aW9uIHRlbXBsYXRlKHRleHQsIHNldHRpbmdzLCBvbGRTZXR0aW5ncykge1xuICAgIGlmICghc2V0dGluZ3MgJiYgb2xkU2V0dGluZ3MpIHNldHRpbmdzID0gb2xkU2V0dGluZ3M7XG4gICAgc2V0dGluZ3MgPSBkZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8kMS50ZW1wbGF0ZVNldHRpbmdzKTtcblxuICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLlxuICAgIHZhciBtYXRjaGVyID0gUmVnRXhwKFtcbiAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLFxuICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2VcbiAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7XG5cbiAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LlxuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHNvdXJjZSA9IFwiX19wKz0nXCI7XG4gICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7XG4gICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKGVzY2FwZVJlZ0V4cCwgZXNjYXBlQ2hhcik7XG4gICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGVzY2FwZSArIFwiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXFxuJ1wiO1xuICAgICAgfSBlbHNlIGlmIChpbnRlcnBvbGF0ZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGludGVycG9sYXRlICsgXCIpKT09bnVsbD8nJzpfX3QpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlICsgXCJcXG5fX3ArPSdcIjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRvYmUgVk1zIG5lZWQgdGhlIG1hdGNoIHJldHVybmVkIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3Qgb2Zmc2V0LlxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pO1xuICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICB2YXIgYXJndW1lbnQgPSBzZXR0aW5ncy52YXJpYWJsZTtcbiAgICBpZiAoYXJndW1lbnQpIHtcbiAgICAgIC8vIEluc3VyZSBhZ2FpbnN0IHRoaXJkLXBhcnR5IGNvZGUgaW5qZWN0aW9uLiAoQ1ZFLTIwMjEtMjMzNTgpXG4gICAgICBpZiAoIWJhcmVJZGVudGlmaWVyLnRlc3QoYXJndW1lbnQpKSB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICd2YXJpYWJsZSBpcyBub3QgYSBiYXJlIGlkZW50aWZpZXI6ICcgKyBhcmd1bWVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS5cbiAgICAgIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xcbicgKyBzb3VyY2UgKyAnfVxcbic7XG4gICAgICBhcmd1bWVudCA9ICdvYmonO1xuICAgIH1cblxuICAgIHNvdXJjZSA9IFwidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLFwiICtcbiAgICAgIFwicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcXG5cIiArXG4gICAgICBzb3VyY2UgKyAncmV0dXJuIF9fcDtcXG4nO1xuXG4gICAgdmFyIHJlbmRlcjtcbiAgICB0cnkge1xuICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKGFyZ3VtZW50LCAnXycsIHNvdXJjZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfJDEpO1xuICAgIH07XG5cbiAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uXG4gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyBhcmd1bWVudCArICcpe1xcbicgKyBzb3VyY2UgKyAnfSc7XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH1cblxuICAvLyBUcmF2ZXJzZXMgdGhlIGNoaWxkcmVuIG9mIGBvYmpgIGFsb25nIGBwYXRoYC4gSWYgYSBjaGlsZCBpcyBhIGZ1bmN0aW9uLCBpdFxuICAvLyBpcyBpbnZva2VkIHdpdGggaXRzIHBhcmVudCBhcyBjb250ZXh0LiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmluYWxcbiAgLy8gY2hpbGQsIG9yIGBmYWxsYmFja2AgaWYgYW55IGNoaWxkIGlzIHVuZGVmaW5lZC5cbiAgZnVuY3Rpb24gcmVzdWx0KG9iaiwgcGF0aCwgZmFsbGJhY2spIHtcbiAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aDtcbiAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgcmV0dXJuIGlzRnVuY3Rpb24kMShmYWxsYmFjaykgPyBmYWxsYmFjay5jYWxsKG9iaikgOiBmYWxsYmFjaztcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHByb3AgPSBvYmogPT0gbnVsbCA/IHZvaWQgMCA6IG9ialtwYXRoW2ldXTtcbiAgICAgIGlmIChwcm9wID09PSB2b2lkIDApIHtcbiAgICAgICAgcHJvcCA9IGZhbGxiYWNrO1xuICAgICAgICBpID0gbGVuZ3RoOyAvLyBFbnN1cmUgd2UgZG9uJ3QgY29udGludWUgaXRlcmF0aW5nLlxuICAgICAgfVxuICAgICAgb2JqID0gaXNGdW5jdGlvbiQxKHByb3ApID8gcHJvcC5jYWxsKG9iaikgOiBwcm9wO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gR2VuZXJhdGUgYSB1bmlxdWUgaW50ZWdlciBpZCAodW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIGNsaWVudCBzZXNzaW9uKS5cbiAgLy8gVXNlZnVsIGZvciB0ZW1wb3JhcnkgRE9NIGlkcy5cbiAgdmFyIGlkQ291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgIHZhciBpZCA9ICsraWRDb3VudGVyICsgJyc7XG4gICAgcmV0dXJuIHByZWZpeCA/IHByZWZpeCArIGlkIDogaWQ7XG4gIH1cblxuICAvLyBTdGFydCBjaGFpbmluZyBhIHdyYXBwZWQgVW5kZXJzY29yZSBvYmplY3QuXG4gIGZ1bmN0aW9uIGNoYWluKG9iaikge1xuICAgIHZhciBpbnN0YW5jZSA9IF8kMShvYmopO1xuICAgIGluc3RhbmNlLl9jaGFpbiA9IHRydWU7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gZXhlY3V0ZSBgc291cmNlRnVuY2AgYm91bmQgdG8gYGNvbnRleHRgIHdpdGggb3B0aW9uYWxcbiAgLy8gYGFyZ3NgLiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIGFzIGEgY29uc3RydWN0b3Igb3IgYXMgYVxuICAvLyBub3JtYWwgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIGV4ZWN1dGVCb3VuZChzb3VyY2VGdW5jLCBib3VuZEZ1bmMsIGNvbnRleHQsIGNhbGxpbmdDb250ZXh0LCBhcmdzKSB7XG4gICAgaWYgKCEoY2FsbGluZ0NvbnRleHQgaW5zdGFuY2VvZiBib3VuZEZ1bmMpKSByZXR1cm4gc291cmNlRnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB2YXIgc2VsZiA9IGJhc2VDcmVhdGUoc291cmNlRnVuYy5wcm90b3R5cGUpO1xuICAgIHZhciByZXN1bHQgPSBzb3VyY2VGdW5jLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgIGlmIChpc09iamVjdChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgIHJldHVybi
14733BzZWxmO1xuICB9XG5cbiAgLy8gUGFydGlhbGx5IGFwcGx5IGEgZnVuY3Rpb24gYnkgY3JlYXRpbmcgYSB2ZXJzaW9uIHRoYXQgaGFzIGhhZCBzb21lIG9mIGl0c1xuICAvLyBhcmd1bWVudHMgcHJlLWZpbGxlZCwgd2l0aG91dCBjaGFuZ2luZyBpdHMgZHluYW1pYyBgdGhpc2AgY29udGV4dC4gYF9gIGFjdHNcbiAgLy8gYXMgYSBwbGFjZWhvbGRlciBieSBkZWZhdWx0LCBhbGxvd2luZyBhbnkgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIHRvIGJlXG4gIC8vIHByZS1maWxsZWQuIFNldCBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCBmb3IgYSBjdXN0b20gcGxhY2Vob2xkZXIgYXJndW1lbnQuXG4gIHZhciBwYXJ0aWFsID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCBib3VuZEFyZ3MpIHtcbiAgICB2YXIgcGxhY2Vob2xkZXIgPSBwYXJ0aWFsLnBsYWNlaG9sZGVyO1xuICAgIHZhciBib3VuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gMCwgbGVuZ3RoID0gYm91bmRBcmdzLmxlbmd0aDtcbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJnc1tpXSA9IGJvdW5kQXJnc1tpXSA9PT0gcGxhY2Vob2xkZXIgPyBhcmd1bWVudHNbcG9zaXRpb24rK10gOiBib3VuZEFyZ3NbaV07XG4gICAgICB9XG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBhcmd1bWVudHMubGVuZ3RoKSBhcmdzLnB1c2goYXJndW1lbnRzW3Bvc2l0aW9uKytdKTtcbiAgICAgIHJldHVybiBleGVjdXRlQm91bmQoZnVuYywgYm91bmQsIHRoaXMsIHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9KTtcblxuICBwYXJ0aWFsLnBsYWNlaG9sZGVyID0gXyQxO1xuXG4gIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIGJvdW5kIHRvIGEgZ2l2ZW4gb2JqZWN0IChhc3NpZ25pbmcgYHRoaXNgLCBhbmQgYXJndW1lbnRzLFxuICAvLyBvcHRpb25hbGx5KS5cbiAgdmFyIGJpbmQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIGNvbnRleHQsIGFyZ3MpIHtcbiAgICBpZiAoIWlzRnVuY3Rpb24kMShmdW5jKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1bmN0aW9uJyk7XG4gICAgdmFyIGJvdW5kID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihjYWxsQXJncykge1xuICAgICAgcmV0dXJuIGV4ZWN1dGVCb3VuZChmdW5jLCBib3VuZCwgY29udGV4dCwgdGhpcywgYXJncy5jb25jYXQoY2FsbEFyZ3MpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYm91bmQ7XG4gIH0pO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciBmb3IgY29sbGVjdGlvbiBtZXRob2RzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgY29sbGVjdGlvblxuICAvLyBzaG91bGQgYmUgaXRlcmF0ZWQgYXMgYW4gYXJyYXkgb3IgYXMgYW4gb2JqZWN0LlxuICAvLyBSZWxhdGVkOiBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9sZW5ndGhcbiAgLy8gQXZvaWRzIGEgdmVyeSBuYXN0eSBpT1MgOCBKSVQgYnVnIG9uIEFSTS02NC4gIzIwOTRcbiAgdmFyIGlzQXJyYXlMaWtlID0gY3JlYXRlU2l6ZVByb3BlcnR5Q2hlY2soZ2V0TGVuZ3RoKTtcblxuICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBhIHJlY3Vyc2l2ZSBgZmxhdHRlbmAgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIGZsYXR0ZW4kMShpbnB1dCwgZGVwdGgsIHN0cmljdCwgb3V0cHV0KSB7XG4gICAgb3V0cHV0ID0gb3V0cHV0IHx8IFtdO1xuICAgIGlmICghZGVwdGggJiYgZGVwdGggIT09IDApIHtcbiAgICAgIGRlcHRoID0gSW5maW5pdHk7XG4gICAgfSBlbHNlIGlmIChkZXB0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChpbnB1dCk7XG4gICAgfVxuICAgIHZhciBpZHggPSBvdXRwdXQubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoaW5wdXQpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJiAoaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHMkMSh2YWx1ZSkpKSB7XG4gICAgICAgIC8vIEZsYXR0ZW4gY3VycmVudCBsZXZlbCBvZiBhcnJheSBvciBhcmd1bWVudHMgb2JqZWN0LlxuICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgZmxh
14733dHRlbiQxKHZhbHVlLCBkZXB0aCAtIDEsIHN0cmljdCwgb3V0cHV0KTtcbiAgICAgICAgICBpZHggPSBvdXRwdXQubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBqID0gMCwgbGVuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChqIDwgbGVuKSBvdXRwdXRbaWR4KytdID0gdmFsdWVbaisrXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghc3RyaWN0KSB7XG4gICAgICAgIG91dHB1dFtpZHgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIC8vIEJpbmQgYSBudW1iZXIgb2YgYW4gb2JqZWN0J3MgbWV0aG9kcyB0byB0aGF0IG9iamVjdC4gUmVtYWluaW5nIGFyZ3VtZW50c1xuICAvLyBhcmUgdGhlIG1ldGhvZCBuYW1lcyB0byBiZSBib3VuZC4gVXNlZnVsIGZvciBlbnN1cmluZyB0aGF0IGFsbCBjYWxsYmFja3NcbiAgLy8gZGVmaW5lZCBvbiBhbiBvYmplY3QgYmVsb25nIHRvIGl0LlxuICB2YXIgYmluZEFsbCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24ob2JqLCBrZXlzKSB7XG4gICAga2V5cyA9IGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBpbmRleCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChpbmRleCA8IDEpIHRocm93IG5ldyBFcnJvcignYmluZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1lcycpO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpbmRleF07XG4gICAgICBvYmpba2V5XSA9IGJpbmQob2JqW2tleV0sIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0pO1xuXG4gIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0b3JpbmcgaXRzIHJlc3VsdHMuXG4gIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgaGFzaGVyKSB7XG4gICAgdmFyIG1lbW9pemUgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBjYWNoZSA9IG1lbW9pemUuY2FjaGU7XG4gICAgICB2Y
14733XIgYWRkcmVzcyA9ICcnICsgKGhhc2hlciA/IGhhc2hlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDoga2V5KTtcbiAgICAgIGlmICghaGFzJDEoY2FjaGUsIGFkZHJlc3MpKSBjYWNoZVthZGRyZXNzXSA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjYWNoZVthZGRyZXNzXTtcbiAgICB9O1xuICAgIG1lbW9pemUuY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gbWVtb2l6ZTtcbiAgfVxuXG4gIC8vIERlbGF5cyBhIGZ1bmN0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgYW5kIHRoZW4gY2FsbHNcbiAgLy8gaXQgd2l0aCB0aGUgYXJndW1lbnRzIHN1cHBsaWVkLlxuICB2YXIgZGVsYXkgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0sIHdhaXQpO1xuICB9KTtcblxuICAvLyBEZWZlcnMgYSBmdW5jdGlvbiwgc2NoZWR1bGluZyBpdCB0byBydW4gYWZ0ZXIgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXNcbiAgLy8gY2xlYXJlZC5cbiAgdmFyIGRlZmVyID0gcGFydGlhbChkZWxheSwgXyQxLCAxKTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tlZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2VcbiAgLy8gZHVyaW5nIGEgZ2l2ZW4gd2luZG93IG9mIHRpbWUuIE5vcm1hbGx5LCB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHdpbGwgcnVuXG4gIC8vIGFzIG11Y2ggYXMgaXQgY2FuLCB3aXRob3V0IGV2ZXIgZ29pbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGB3YWl0YCBkdXJhdGlvbjtcbiAgLy8gYnV0IGlmIHlvdSdkIGxpa2UgdG8gZGlzYWJsZSB0aGUgZXhlY3V0aW9uIG9uIHRoZSBsZWFkaW5nIGVkZ2UsIHBhc3NcbiAgLy8gYHtsZWFkaW5nOiBmYWxzZX1gLiBUbyBkaXNhYmxlIGV4ZWN1dGlvbiBvbiB0aGUgdHJhaWxpbmcgZWRnZSwgZGl0dG8uXG4gIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGltZW91dCwgY29udGV4dCwgYXJncywgcmVzdWx0O1xuICAgIHZhciBwcmV2aW91cyA9IDA7XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiBub3coKTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG5cbiAgICB2YXIgdGhyb3R0bGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14733XIgX25vdyA9IG5vdygpO1xuICAgICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlKSBwcmV2aW91cyA9IF9ub3c7XG4gICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChfbm93IC0gcHJldmlvdXMpO1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwIHx8IHJlbWFpbmluZyA+IHdhaXQpIHtcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcHJldmlvdXMgPSBfbm93O1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoIXRpbWVvdXQgJiYgb3B0aW9ucy50cmFpbGluZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICB0aHJvdHRsZWQuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICBwcmV2aW91cyA9IDA7XG4gICAgICB0aW1lb3V0ID0gY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhyb3R0bGVkO1xuICB9XG5cbiAgLy8gV2hlbiBhIHNlcXVlbmNlIG9mIGNhbGxzIG9mIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBlbmRzLCB0aGUgYXJndW1lbnRcbiAgLy8gZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLiBUaGUgZW5kIG9mIGEgc2VxdWVuY2UgaXMgZGVmaW5lZCBieSB0aGUgYHdhaXRgXG4gIC8vIHBhcmFtZXRlci4gSWYgYGltbWVkaWF0ZWAgaXMgcGFzc2VkLCB0aGUgYXJndW1lbnQgZnVuY3Rpb24gd2lsbCBiZVxuICAvLyB0cmlnZ2VyZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UgaW5zdGVhZCBvZiBhdCB0aGUgZW5kLlxuICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgICB2YXIgdGltZW91dCwgcHJldmlvdXMsIGFyZ3MsIHJlc3VsdCwgY29udGV4dDtcblxuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHBhc3NlZCA9IG5vdygpIC0gcHJldmlvdXM7XG4gICAgICBpZiAod2FpdCA+IHBhc3NlZCkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIHBhc3NlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKCFpbW1lZGlhdGUpIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgYGZ1bmNgIGNhbiByZWN1cnNpdmVseSBpbnZva2UgYGRlYm91bmNlZGAuXG4gICAgICAgIGlmICghdGltZW91dCkgYXJncyA9IGNvbnRleHQgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZGVib3VuY2VkID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihfYXJncykge1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gX2FyZ3M7XG4gICAgICBwcmV2aW91cyA9IG5vdygpO1xuICAgICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgICAgICAgaWYgKGltbWVkaWF0ZSkgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICBkZWJvdW5jZWQuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gYXJncyA9IGNvbnRleHQgPSBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVib3VuY2VkO1xuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3QgZnVuY3Rpb24gcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBzZWNvbmQsXG4gIC8vIGFsbG93aW5nIHlvdSB0byBhZGp1c3QgYXJndW1lbnRzLCBydW4gY29kZSBiZWZvcmUgYW5kIGFmdGVyLCBhbmRcbiAgLy8gY29uZGl0aW9uYWxseSBleGVjdXRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAgZnVuY3Rpb24gd3JhcChmdW5jLCB3cmFwcGVyKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwod3JhcHBlciwgZnVuYyk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgbmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBwYXNzZWQtaW4gcHJlZGljYXRlLlxuICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIGEgbGlzdCBvZiBmdW5jdGlvbnMsIGVhY2hcbiAgLy8gY29uc3VtaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgZm9sbG93cy5cbiAgZnVuY3Rpb24gY29tcG9zZSgpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgc3RhcnQgPSBhcmdzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGkgPSBzdGFydDtcbiAgICAgIHZhciByZXN1bHQgPSBhcmdzW3N0YXJ0XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgd2hpbGUgKGktLSkgcmVzdWx0ID0gYXJnc1tpXS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb24gYW5kIGFmdGVyIHRoZSBOdGggY2FsbC5cbiAgZnVuY3Rpb24gYWZ0ZXIodGltZXMsIGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA8IDEpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIHVwIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlXG4gIC8vIE50aCBjYWxsLlxuICBmdW5jdGlvbiBiZWZvcmUo
14733dGltZXMsIGZ1bmMpIHtcbiAgICB2YXIgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA+IDApIHtcbiAgICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aW1lcyA8PSAxKSBmdW5jID0gbnVsbDtcbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGF0IG1vc3Qgb25lIHRpbWUsIG5vIG1hdHRlciBob3dcbiAgLy8gb2Z0ZW4geW91IGNhbGwgaXQuIFVzZWZ1bCBmb3IgbGF6eSBpbml0aWFsaXphdGlvbi5cbiAgdmFyIG9uY2UgPSBwYXJ0aWFsKGJlZm9yZSwgMik7XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3Qga2V5IG9uIGFuIG9iamVjdCB0aGF0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbmRLZXkob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKSwga2V5O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gX2tleXNbaV07XG4gICAgICBpZiAocHJlZGljYXRlKG9ialtrZXldLCBrZXksIG9iaikpIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKGRpcikge1xuICAgIHJldHVybiBmdW5jdGlvbihhcnJheSwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgICB2Y
14733XIgaW5kZXggPSBkaXIgPiAwID8gMCA6IGxlbmd0aCAtIDE7XG4gICAgICBmb3IgKDsgaW5kZXggPj0gMCAmJiBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gZGlyKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGluZGV4IG9uIGFuIGFycmF5LWxpa2UgdGhhdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICB2YXIgZmluZEluZGV4ID0gY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIoMSk7XG5cbiAgLy8gUmV0dXJucyB0aGUgbGFzdCBpbmRleCBvbiBhbiBhcnJheS1saWtlIHRoYXQgcGFzc2VzIGEgdHJ1dGggdGVzdC5cbiAgdmFyIGZpbmRMYXN0SW5kZXggPSBjcmVhdGVQcmVkaWNhdGVJbmRleEZpbmRlcigtMSk7XG5cbiAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHRoZSBzbWFsbGVzdCBpbmRleCBhdCB3aGljaFxuICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluc2VydGVkIHNvIGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guXG4gIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCBvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgdmFyIHZhbHVlID0gaXRlcmF0ZWUob2JqKTtcbiAgICB2YXIgbG93ID0gMCwgaGlnaCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgIHZhciBtaWQgPSBNYXRoLmZsb29yKChsb3cgKyBoaWdoKSAvIDIpO1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W21pZF0pIDwgdmFsdWUpIGxvdyA9IG1pZCArIDE7IGVsc2UgaGlnaCA9IG1pZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHRoZSBgXy5pbmRleE9mYCBhbmQgYF8ubGFzdEluZGV4T2ZgIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gY3JlYXRlSW5kZXhGaW5kZXIoZGlyLCBwcmVkaWNhdGVGaW5kLCBzb3J0ZWRJbmRleCkge1xuICAgIHJldHVybiBmdW5jdGlvbihhcnJheSwgaXRlbSwgaWR4KSB7XG4gICAgICB2Y
14733XIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgICBpZiAodHlwZW9mIGlkeCA9PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoZGlyID4gMCkge1xuICAgICAgICAgIGkgPSBpZHggPj0gMCA/IGlkeCA6IE1hdGgubWF4KGlkeCArIGxlbmd0aCwgaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVuZ3RoID0gaWR4ID49IDAgPyBNYXRoLm1pbihpZHggKyAxLCBsZW5ndGgpIDogaWR4ICsgbGVuZ3RoICsgMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb3J0ZWRJbmRleCAmJiBpZHggJiYgbGVuZ3RoKSB7XG4gICAgICAgIGlkeCA9IHNvcnRlZEluZGV4KGFycmF5LCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGFycmF5W2lkeF0gPT09IGl0ZW0gPyBpZHggOiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtICE9PSBpdGVtKSB7XG4gICAgICAgIGlkeCA9IHByZWRpY2F0ZUZpbmQoc2xpY2UuY2FsbChhcnJheSwgaSwgbGVuZ3RoKSwgaXNOYU4kMSk7XG4gICAgICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCArIGkgOiAtMTtcbiAgICAgIH1cbiAgICAgIGZvciAoaWR4ID0gZGlyID4gMCA/IGkgOiBsZW5ndGggLSAxOyBpZHggPj0gMCAmJiBpZHggPCBsZW5ndGg7IGlkeCArPSBkaXIpIHtcbiAgICAgICAgaWYgKGFycmF5W2lkeF0gPT09IGl0ZW0pIHJldHVybiBpZHg7XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gaXRlbSBpbiBhbiBhcnJheSxcbiAgLy8gb3IgLTEgaWYgdGhlIGl0ZW0gaXMgbm90IGluY2x1ZGVkIGluIHRoZSBhcnJheS5cbiAgLy8gSWYgdGhlIGFycmF5IGlzIGxhcmdlIGFuZCBhbHJlYWR5IGluIHNvcnQgb3JkZXIsIHBhc3MgYHRydWVgXG4gIC8vIGZvciAqKmlzU29ydGVkKiogdG8gdXNlIGJpbmFyeSBzZWFyY2guXG4gIHZhciBpbmRleE9mID0gY3JlYXRlSW5kZXhGaW5kZXIoMSwgZmluZEluZGV4LCBzb3J0ZWRJbmRleCk7XG5cbiAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXksXG4gIC8vIG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuXG4gIHZhciBsYXN0SW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKC0xLCBmaW5kTGFzdEluZGV4KTtcblxuICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbmQob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIga2V5RmluZGVyID0gaXNBcnJheUxpa2Uob2JqKSA/IGZpbmRJbmRleCA6IGZpbmRLZXk7XG4gICAgdmFyIGtleSA9IGtleUZpbmRlcihvYmosIHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgaWYgKGtleSAhPT0gdm9pZCAwICYmIGtleSAhPT0gLTEpIHJldHVybiBvYmpba2V5XTtcbiAgfVxuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8uZmluZGA6IGdldHRpbmcgdGhlIGZpcnN0XG4gIC8vIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiBmaW5kV2hlcmUob2JqLCBhdHRycykge1xuICAgIHJldHVybiBmaW5kKG9iaiwgbWF0Y2hlcihhdHRycykpO1xuICB9XG5cbiAgLy8gVGhlIGNvcm5lcnN0b25lIGZvciBjb2xsZWN0aW9uIGZ1bmN0aW9ucywgYW4gYGVhY2hgXG4gIC8vIGltcGxlbWVudGF0aW9uLCBha2EgYGZvckVhY2hgLlxuICAvLyBIYW5kbGVzIHJhdyBvYmplY3RzIGluIGFkZGl0aW9uIHRvIGFycmF5LWxpa2VzLiBUcmVhdHMgYWxsXG4gIC8vIHNwYXJzZSBhcnJheS1saWtlcyBhcyBpZiB0aGV5IHdlcmUgZGVuc2UuXG4gIGZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGksIGxlbmd0aDtcbiAgICBpZiAoaXNBcnJheUxpa2Uob2JqKSkge1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtpXSwgaSwgb2JqKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gX2tleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW19rZXlzW2ldXSwgX2tleXNbaV0sIG9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGl0ZXJhdGVlIHRvIGVhY2ggZWxlbWVudC5cbiAgZnVuY3Rpb24gbWFwKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgcmVzdWx0cyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5cyA/IF9rZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgcmVzdWx0c1tpbmRleF0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGNyZWF0ZSBhIHJlZHVjaW5nIGZ1bmN0aW9uLCBpdGVyYXRpbmcgbGVmdCBvciByaWdodC5cbiAgZnVuY3Rpb24gY3JlYXRlUmVkdWNlKGRpcikge1xuICAgIC8vIFdyYXAgY29kZSB0aGF0IHJlYXNzaWducyBhcmd1bWVudCB2YXJpYWJsZXMgaW4gYSBzZXBhcmF0ZSBmdW5jdGlvbiB0aGFuXG4gICAgLy8gdGhlIG9uZSB0aGF0IGFjY2Vzc2VzIGBhcmd1bWVudHMubGVuZ3RoYCB0byBhdm9pZCBhIHBlcmYgaGl0LiAoIzE5OTEpXG4gICAgdmFyIHJlZHVjZXIgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBpbml0aWFsKSB7XG4gICAgICB2Y
14733XIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZGlyID4gMCA/IDAgOiBsZW5ndGggLSAxO1xuICAgICAgaWYgKCFpbml0aWFsKSB7XG4gICAgICAgIG1lbW8gPSBvYmpbX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGRpcjtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpbmRleCA+PSAwICYmIGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSBkaXIpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5cyA/IF9rZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBjb250ZXh0KSB7XG4gICAgICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPj0gMztcbiAgICAgIHJldHVybiByZWR1Y2VyKG9iaiwgb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCwgNCksIG1lbW8sIGluaXRpYWwpO1xuICAgIH07XG4gIH1cblxuICAvLyAqKlJlZHVjZSoqIGJ1aWxkcyB1cCBhIHNpbmdsZSByZXN1bHQgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBha2EgYGluamVjdGAsXG4gIC8vIG9yIGBmb2xkbGAuXG4gIHZhciByZWR1Y2UgPSBjcmVhdGVSZWR1Y2UoMSk7XG5cbiAgLy8gVGhlIHJpZ2h0LWFzc29jaWF0aXZlIHZlcnNpb24gb2YgcmVkdWNlLCBhbHNvIGtub3duIGFzIGBmb2xkcmAuXG4gIHZhciByZWR1Y2VSaWdodCA9IGNyZWF0ZVJlZHVjZSgtMSk7XG5cbiAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgZnVuY3Rpb24gZmlsdGVyKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBsaXN0KSkgcmVzdWx0cy5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuXG4gIGZ1bmN0aW9uIHJlamVjdChvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBmaWx0ZXIob2JqLCBuZWdhdGUoY2IocHJlZGljYXRlKSksIGNvbnRleHQpO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYWxsIG9mIHRoZSBlbGVtZW50cyBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgZnVuY3Rpb24gZXZlcnkob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmICghcHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIERldGVybWluZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgb2JqZWN0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIHNvbWUob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmIChwcmVkaWNhdGUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJheSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiBpdGVtICh1c2luZyBgPT09YCkuXG4gIGZ1bmN0aW9uIGNvbnRhaW5zKG9iaiwgaXRlbSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgIGlmICghaXNBcnJheUxpa2Uob2JqKSkgb2JqID0gdmFsdWVzKG9iaik7XG4gICAgaWYgKHR5cGVvZiBmcm9tSW5kZXggIT0gJ251bWJlcicgfHwgZ3VhcmQpIGZyb21JbmRleCA9IDA7XG4gICAgcmV0dXJuIGluZGV4T2Yob2JqLCBpdGVtLCBmcm9tSW5kZXgpID49IDA7XG4gIH1cblxuICAvLyBJbnZva2UgYSBtZXRob2QgKHdpdGggYXJndW1lbnRzKSBvbiBldmVyeSBpdGVtIGluIGEgY29sbGVjdGlvbi5cbiAgdmFyIGludm9rZSA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24ob2JqLCBwYXRoLCBhcmdzKSB7XG4gICAgdmFyIGNvbnRleHRQYXRoLCBmdW5jO1xuICAgIGlmIChpc0Z1bmN0aW9uJDEocGF0aCkpIHtcbiAgICAgIGZ1bmMgPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgICAgY29udGV4dFBhdGggPSBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICAgIHBhdGggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBtYXAob2JqLCBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgICB2Y
14733XIgbWV0aG9kID0gZnVuYztcbiAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgIGlmIChjb250ZXh0UGF0aCAmJiBjb250ZXh0UGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb250ZXh0ID0gZGVlcEdldChjb250ZXh0LCBjb250ZXh0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgbWV0aG9kID0gY29udGV4dFtwYXRoXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZXRob2QgPT0gbnVsbCA/IG1ldGhvZCA6IG1ldGhvZC5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgXy5tYXBgOiBmZXRjaGluZyBhIHByb3BlcnR5LlxuICBmdW5jdGlvbiBwbHVjayhvYmosIGtleSkge1xuICAgIHJldHVybiBtYXAob2JqLCBwcm9wZXJ0eShrZXkpKTtcbiAgfVxuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8uZmlsdGVyYDogc2VsZWN0aW5nIG9ubHlcbiAgLy8gb2JqZWN0cyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiB3aGVyZShvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIGZpbHRlcihvYmosIG1hdGNoZXIoYXR0cnMpKTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbWF4aW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgZnVuY3Rpb24gbWF4KG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gLUluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSAtSW5maW5pdHksXG4gICAgICAgIHZhbHVlLCBjb21wdXRlZDtcbiAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCB8fCB0eXBlb2YgaXRlcmF0ZWUgPT0gJ251bWJlcicgJiYgdHlwZW9mIG9ialswXSAhPSAnb2JqZWN0JyAmJiBvYmogIT0gbnVsbCkge1xuICAgICAgb2JqID0gaXNBcnJheUxpa2Uob2JqKSA/IG9iaiA6IHZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgPiByZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGVhY2gob2JqLCBmdW5jdGlvbih2LCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHYsIGluZGV4LCBsaXN0KTtcbiAgICAgICAgaWYgKGNvbXB1dGVkID4gbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSAtSW5maW5pdHkgJiYgcmVzdWx0ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2O1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgZnVuY3Rpb24gbWluKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gSW5maW5pdHksIGxhc3RDb21wdXRlZCA9IEluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgfHwgdHlwZW9mIGl0ZXJhdGVlID09ICdudW1iZXInICYmIHR5cGVvZiBvYmpbMF0gIT0gJ29iamVjdCcgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IGlzQXJyYXlMaWtlKG9iaikgPyBvYmogOiB2YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlIDwgcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odiwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2LCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA8IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gSW5maW5pdHkgJiYgcmVzdWx0ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHY7XG4gICAgICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gU2FtcGxlICoqbioqIHJhbmRvbSB2YWx1ZXMgZnJvbSBhIGNvbGxlY3Rpb24gdXNpbmcgdGhlIG1vZGVybiB2ZXJzaW9uIG9mIHRoZVxuICAvLyBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlcuKAk1lhdGVzX3NodWZmbGUpLlxuICAvLyBJZiAqKm4qKiBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIGEgc2luZ2xlIHJhbmRvbSBlbGVtZW50LlxuICAvLyBUaGUgaW50ZXJuYWwgYGd1YXJkYCBhcmd1bWVudCBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIGZ1bmN0aW9uIHNhbXBsZShvYmosIG4sIGd1YXJkKSB7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkge1xuICAgICAgaWYgKCFpc0FycmF5TGlrZShvYmopKSBvYmogPSB2YWx1ZXMob2JqKTtcbiAgICAgIHJldHVybiBvYmpbcmFuZG9tKG9iai5sZW5ndGggLSAxKV07XG4gICAgfVxuICAgIHZhciBzYW1wbGUgPSBpc0FycmF5TGlrZShvYmopID8gY2xvbmUob2JqKSA6IHZhbHVlcyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBnZXRMZW5ndGgoc2FtcGxlKTtcbiAgICBuID0gTWF0aC5tYXgoTWF0aC5taW4obiwgbGVuZ3RoKSwgMCk7XG4gICAgdmFyIGxhc3QgPSBsZW5ndGggLSAxO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBuOyBpbmRleCsrKSB7XG4gICAgICB2Y
14733XIgcmFuZCA9IHJhbmRvbShpbmRleCwgbGFzdCk7XG4gICAgICB2YXIgdGVtcCA9IHNhbXBsZVtpbmRleF07XG4gICAgICBzYW1wbGVbaW5kZXhdID0gc2FtcGxlW3JhbmRdO1xuICAgICAgc2FtcGxlW3JhbmRdID0gdGVtcDtcbiAgICB9XG4gICAgcmV0dXJuIHNhbXBsZS5zbGljZSgwLCBuKTtcbiAgfVxuXG4gIC8vIFNodWZmbGUgYSBjb2xsZWN0aW9uLlxuICBmdW5jdGlvbiBzaHVmZmxlKG9iaikge1xuICAgIHJldHVybiBzYW1wbGUob2JqLCBJbmZpbml0eSk7XG4gIH1cblxuICAvLyBTb3J0IHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24gcHJvZHVjZWQgYnkgYW4gaXRlcmF0ZWUuXG4gIGZ1bmN0aW9uIHNvcnRCeShvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gcGx1Y2sobWFwKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSwgbGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBpbmRleDogaW5kZXgrKyxcbiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGxpc3QpXG4gICAgICB9O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYTtcbiAgICAgIHZhciBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAoYSA+IGIgfHwgYSA9PT0gdm9pZCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgPCBiIHx8IGIgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlZnQuaW5kZXggLSByaWdodC5pbmRleDtcbiAgICB9KSwgJ3ZhbHVlJyk7XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiB1c2VkIGZvciBhZ2dyZWdhdGUgXCJncm91cCBieVwiIG9wZXJhdGlvbnMuXG4gIGZ1bmN0aW9uIGdyb3VwKGJlaGF2aW9yLCBwYXJ0aXRpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgICAgdmFyIHJlc3VsdCA9IHBhcnRpdGlvbiA/IFtbXSwgW11dIDoge307XG4gICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGtleSA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgb2JqKTtcbiAgICAgICAgYmVoYXZpb3IocmVzdWx0LCB2YWx1ZSwga2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG5cbiAgLy8gR3JvdXBzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24uIFBhc3MgZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZVxuICAvLyB0byBncm91cCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGNyaXRlcmlvbi5cbiAgdmFyIGdyb3VwQnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoaGFzJDEocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTsgZWxzZSByZXN1bHRba2V5XSA9IFt2YWx1ZV07XG4gIH0pO1xuXG4gIC8vIEluZGV4ZXMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiwgc2ltaWxhciB0byBgXy5ncm91cEJ5YCwgYnV0IGZvclxuICAvLyB3aGVuIHlvdSBrbm93IHRoYXQgeW91ciBpbmRleCB2YWx1ZXMgd2lsbCBiZSB1bmlxdWUuXG4gIHZhciBpbmRleEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgLy8gQ291bnRzIGluc3RhbmNlcyBvZiBhbiBvYmplY3QgdGhhdCBncm91cCBieSBhIGNlcnRhaW4gY3JpdGVyaW9uLiBQYXNzXG4gIC8vIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGUgdG8gY291bnQgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAvLyBjcml0ZXJpb24uXG4gIHZhciBjb3VudEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKGhhcyQxKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0rKzsgZWxzZSByZXN1bHRba2V5XSA9IDE7XG4gIH0pO1xuXG4gIC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgcGFzcyB0aGUgZ2l2ZW5cbiAgLy8gdHJ1dGggdGVzdCwgYW5kIG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgZG8gbm90IHBhc3MgdGhlIHRydXRoIHRlc3QuXG4gIHZhciBwYXJ0aXRpb24gPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBwYXNzKSB7XG4gICAgcmVzdWx0W3Bhc3MgPyAwIDogMV0ucHVzaCh2YWx1ZSk7XG4gIH0sIHRydWUpO1xuXG4gIC8vIFNhZmVseSBjcmVhdGUgYSByZWFsLCBsaXZlIGFycmF5IGZyb20gYW55dGhpbmcgaXRlcmFibGUuXG4gIHZhciByZVN0clN5bWJvbCA9IC9bXlxcdWQ4MDAtXFx1ZGZmZl18W1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXXxbXFx1ZDgwMC1cXHVkZmZmXS9nO1xuICBmdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gW107XG4gICAgaWYgKGlzQXJyYXkob2JqKSkgcmV0dXJuIHNsaWNlLmNhbGwob2JqKTtcbiAgICBpZiAoaXNTdHJpbmcob2JqKSkge1xuICAgICAgLy8gS2VlcCBzdXJyb2dhdGUgcGFpciBjaGFyYWN0ZXJzIHRvZ2V0aGVyLlxuICAgICAgcmV0dXJuIG9iai5tYXRjaChyZVN0clN5bWJvbCk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5TGlrZShvYmopKSByZXR1cm4gbWFwKG9iaiwgaWRlbnRpdHkpO1xuICAgIHJldHVybiB2YWx1ZXMob2JqKTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29sbGVjdGlvbi5cbiAgZnVuY3Rpb24gc2l6ZShvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiAwO1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmopID8gb2JqLmxlbmd0aCA6IGtleXMob2JqKS5sZW5ndGg7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBgXy5waWNrYCBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYGtleWAgaXMgYW4gZW51bWVyYWJsZVxuICAvLyBwcm9wZXJ0eSBuYW1lIG9mIGBvYmpgLlxuICBmdW5jdGlvbiBrZXlJbk9iaih2YWx1ZSwga2V5LCBvYmopIHtcbiAgICByZXR1cm4ga2V5IGluIG9iajtcbiAgfVxuXG4gIC8vIFJldHVybi
14733BhIGNvcHkgb2YgdGhlIG9iamVjdCBvbmx5IGNvbnRhaW5pbmcgdGhlIGFsbG93ZWQgcHJvcGVydGllcy5cbiAgdmFyIHBpY2sgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIHZhciByZXN1bHQgPSB7fSwgaXRlcmF0ZWUgPSBrZXlzWzBdO1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgICBpZiAoaXNGdW5jdGlvbiQxKGl0ZXJhdGVlKSkge1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkgaXRlcmF0ZWUgPSBvcHRpbWl6ZUNiKGl0ZXJhdGVlLCBrZXlzWzFdKTtcbiAgICAgIGtleXMgPSBhbGxLZXlzKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0ga2V5SW5PYmo7XG4gICAgICBrZXlzID0gZmxhdHRlbiQxKGtleXMsIGZhbHNlLCBmYWxzZSk7XG4gICAgICBvYmogPSBPYmplY3Qob2JqKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG4gICAgICBpZiAoaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqKSkgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG5cbiAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IHdpdGhvdXQgdGhlIGRpc2FsbG93ZWQgcHJvcGVydGllcy5cbiAgdmFyIG9taXQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIHZhciBpdGVyYXRlZSA9IGtleXNbMF0sIGNvbnRleHQ7XG4gICAgaWYgKGlzRnVuY3Rpb24kMShpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gbmVnYXRlKGl0ZXJhdGVlKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIGNvbnRleHQgPSBrZXlzWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzID0gbWFwKGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpLCBTdHJpbmcpO1xuICAgICAgaXRlcmF0ZWUgPSBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICAgIHJldHVybiAhY29udGFpbnMoa2V5cywga2V5KTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwaWNrKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpO1xuICB9KTtcblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBsYXN0IGVudHJ5IG9mIHRoZSBhcnJheS4gRXNwZWNpYWxseSB1c2VmdWwgb25cbiAgLy8gdGhlIGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gYWxsIHRoZSB2YWx1ZXMgaW5cbiAgLy8gdGhlIGFycmF5LCBleGNsdWRpbmcgdGhlIGxhc3QgTi5cbiAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gKG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKSkpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBmdW5jdGlvbiBmaXJzdChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCB8fCBhcnJheS5sZW5ndGggPCAxKSByZXR1cm4gbiA9PSBudWxsIHx8IGd1YXJkID8gdm9pZCAwIDogW107XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFycmF5WzBdO1xuICAgIHJldHVybiBpbml0aWFsKGFycmF5LCBhcnJheS5sZW5ndGggLSBuKTtcbiAgfVxuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBgYXJyYXlgLiBFc3BlY2lhbGx5IHVzZWZ1bCBvblxuICAvLyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBQYXNzaW5nIGFuICoqbioqIHdpbGwgcmV0dXJuIHRoZSByZXN0IE4gdmFsdWVzIGluIHRoZVxuICAvLyBgYXJyYXlgLlxuICBmdW5jdGlvbiByZXN0KGFycmF5LCBuLCBndWFyZCkge1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCBuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbik7XG4gIH1cblxuICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgbGFzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuXG4gIGZ1bmN0aW9uIGxhc3QoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoIDwgMSkgcmV0dXJuIG4gPT0gbnVsbCB8fCBndWFyZCA/IHZvaWQgMCA6IFtdO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gcmVzdChhcnJheSwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gbikpO1xuICB9XG5cbiAgLy8gVHJpbSBvdXQgYWxsIGZhbHN5IHZhbHVlcyBmcm9tIGFuIGFycmF5LlxuICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgcmV0dXJuIGZpbHRlcihhcnJheSwgQm9vbGVhbik7XG4gIH1cblxuICAvLyBGbGF0dGVuIG91dCBhbiBhcnJheSwgZWl0aGVyIHJlY3Vyc2l2ZWx5IChieSBkZWZhdWx0KSwgb3IgdXAgdG8gYGRlcHRoYC5cbiAgLy8gUGFzc2luZyBgdHJ1ZWAgb3IgYGZhbHNlYCBhcyBgZGVwdGhgIG1lYW5zIGAxYCBvciBgSW5maW5pdHlgLCByZXNwZWN0aXZlbHkuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXksIGRlcHRoKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW4kMShhcnJheSwgZGVwdGgsIGZhbHNlKTtcbiAgfVxuXG4gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy5cbiAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi5cbiAgdmFyIGRpZmZlcmVuY2UgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGFycmF5LCByZXN0KSB7XG4gICAgcmVzdCA9IGZsYXR0ZW4kMShyZXN0LCB0cnVlLCB0cnVlKTtcbiAgICByZXR1cm4gZmlsdGVyKGFycmF5LCBmdW5jdGlvbih2YWx1ZSl7XG4gICAgICByZXR1cm4gIWNvbnRhaW5zKHJlc3QsIHZhbHVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgdmFsdWUocykuXG4gI
14733HZhciB3aXRob3V0ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheSwgb3RoZXJBcnJheXMpIHtcbiAgICByZXR1cm4gZGlmZmVyZW5jZShhcnJheSwgb3RoZXJBcnJheXMpO1xuICB9KTtcblxuICAvLyBQcm9kdWNlIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiB0aGUgYXJyYXkuIElmIHRoZSBhcnJheSBoYXMgYWxyZWFkeVxuICAvLyBiZWVuIHNvcnRlZCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhIGZhc3RlciBhbGdvcml0aG0uXG4gIC8vIFRoZSBmYXN0ZXIgYWxnb3JpdGhtIHdpbGwgbm90IHdvcmsgd2l0aCBhbiBpdGVyYXRlZSBpZiB0aGUgaXRlcmF0ZWVcbiAgLy8gaXMgbm90IGEgb25lLXRvLW9uZSBmdW5jdGlvbiwgc28gcHJvdmlkaW5nIGFuIGl0ZXJhdGVlIHdpbGwgZGlzYWJsZVxuICAvLyB0aGUgZmFzdGVyIGFsZ29yaXRobS5cbiAgZnVuY3Rpb24gdW5pcShhcnJheSwgaXNTb3J0ZWQsIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKCFpc0Jvb2xlYW4oaXNTb3J0ZWQpKSB7XG4gICAgICBjb250ZXh0ID0gaXRlcmF0ZWU7XG4gICAgICBpdGVyYXRlZSA9IGlzU29ydGVkO1xuICAgICAgaXNTb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGl0ZXJhdGVlICE9IG51bGwpIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgc2VlbiA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldLFxuICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSwgaSwgYXJyYXkpIDogdmFsdWU7XG4gICAgICBpZiAoaXNTb3J0ZWQgJiYgIWl0ZXJhdGVlKSB7XG4gICAgICAgIGlmICghaSB8fCBzZWVuICE9PSBjb21wdXRlZCkgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICBzZWVuID0gY29tcHV0ZWQ7XG4gICAgICB9IGVsc2UgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIGlmICghY29udGFpbnMoc2VlbiwgY29tcHV0ZWQpKSB7XG4gICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWNvbnRhaW5zKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgdW5pb246IGVhY2ggZGlzdGluY3QgZWxlbWVudCBmcm9tIGFsbCBvZlxuICAvLyB0aGUgcGFzc2VkLWluIGFycmF5cy5cbiAgdmFyIHVuaW9uID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheXMpIHtcbiAgICByZXR1cm4gdW5pcShmbGF0dGVuJDEoYXJyYXlzLCB0cnVlLCB0cnVlKSk7XG4gIH0pO1xuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyBldmVyeSBpdGVtIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGVcbiAgLy8gcGFzc2VkLWluIGFycmF5cy5cbiAgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGFycmF5KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14733XIgaXRlbSA9IGFycmF5W2ldO1xuICAgICAgaWYgKGNvbnRhaW5zKHJlc3VsdCwgaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgdmFyIGo7XG4gICAgICBmb3IgKGogPSAxOyBqIDwgYXJnc0xlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmICghY29udGFpbnMoYXJndW1lbnRzW2pdLCBpdGVtKSkgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaiA9PT0gYXJnc0xlbmd0aCkgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDb21wbGVtZW50IG9mIHppcC4gVW56aXAgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgYW5kIGdyb3Vwc1xuICAvLyBlYWNoIGFycmF5J3MgZWxlbWVudHMgb24gc2hhcmVkIGluZGljZXMuXG4gIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ICYmIG1heChhcnJheSwgZ2V0TGVuZ3RoKS5sZW5ndGggfHwgMDtcbiAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBwbHVjayhhcnJheSwgaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gWmlwIHRvZ2V0aGVyIG11bHRpcGxlIGxpc3RzIGludG8gYSBzaW5nbGUgYXJyYXkgLS0gZWxlbWVudHMgdGhhdCBzaGFyZVxuICAvLyBhbiBpbmRleCBnbyB0b2dldGhlci5cbiAgdmFyIHppcCA9IHJlc3RBcmd1bWVudHModW56aXApO1xuXG4gIC8vIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy4gUGFzcyBlaXRoZXIgYSBzaW5nbGUgYXJyYXkgb2YgYFtrZXksIHZhbHVlXWBcbiAgLy8gcGFpcnMsIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy4gUGFzc2luZyBieSBwYWlycyBpcyB0aGUgcmV2ZXJzZSBvZiBgXy5wYWlyc2AuXG4gIGZ1bmN0aW9uIG9iamVjdChsaXN0LCB2YWx1ZXMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChsaXN0KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldXSA9IHZhbHVlc1tpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIEFycmF5IGNvbnRhaW5pbmcgYW4gYXJpdGhtZXRpYyBwcm9ncmVzc2lvbi4gQSBwb3J0IG9mXG4gIC8vIHRoZSBuYXRpdmUgUHl0aG9uIGByYW5nZSgpYCBmdW5jdGlvbi4gU2VlXG4gIC8vIFt0aGUgUHl0aG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvZnVuY3Rpb25zLmh0bWwjcmFuZ2UpLlxuICBmdW5jdGlvbiByYW5nZShzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIGlmIChzdG9wID09IG51bGwpIHtcbiAgICAgIHN0b3AgPSBzdGFydCB8fCAwO1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cbiAgICBpZiAoIXN0ZXApIHtcbiAgICAgIHN0ZXAgPSBzdG9wIDwgc3RhcnQgPyAtMSA6IDE7XG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApLCAwKTtcbiAgICB2YXIgcmFuZ2UgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbGVuZ3RoOyBpZHgrKywgc3RhcnQgKz0gc3RlcCkge1xuICAgICAgcmFuZ2VbaWR4XSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZTtcbiAgfVxuXG4gIC8vIENodW5rIGEgc2luZ2xlIGFycmF5IGludG8gbXVsdGlwbGUgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYGNvdW50YCBvciBmZXdlclxuICAvLyBpdGVtcy5cbiAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwgfHwgY291bnQgPCAxKSByZXR1cm4gW107XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHQucHVzaChzbGljZS5jYWxsKGFycmF5LCBpLCBpICs9IGNvdW50KSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udGludWUgY2hhaW5pbmcgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gIGZ1bmN0aW9uIGNoYWluUmVzdWx0KGluc3RhbmNlLCBvYmopIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuX2NoYWluID8gXyQxKG9iaikuY2hhaW4oKSA6IG9iajtcbiAgfVxuXG4gIC8vIEFkZCB5b3VyIG93biBjdXN0b20gZnVuY3Rpb25zIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdC5cbiAgZnVuY3Rpb24gbWl4aW4ob2JqKSB7XG4gICAgZWFjaChmdW5jdGlvbnMob2JqKSwgZnVuY3Rpb24obmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBfJDFbbmFtZV0gPSBvYmpbbmFtZV07XG4gICAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW3RoaXMuX3dyYXBwZWRdO1xuICAgICAgICBwdXNoLmFwcGx5KGFyZ3MsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBjaGFpblJlc3VsdCh0aGlzLCBmdW5jLmFwcGx5KF8kMSwgYXJncykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gXyQxO1xuICB9XG5cbiAgLy8gQWRkIGFsbCBtdXRhdG9yIGBBcnJheWAgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBlYWNoKFsncG9wJywgJ3B1c2gnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14733XIgb2JqID0gdGhpcy5fd3JhcHBlZDtcbiAgICAgIGlmIChvYmogIT0gbnVsbCkge1xuICAgICAgICBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoKG5hbWUgPT09ICdzaGlmdCcgfHwgbmFtZSA9PT0gJ3NwbGljZScpICYmIG9iai5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgb2JqWzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2hhaW5SZXN1bHQodGhpcywgb2JqKTtcbiAgICB9O1xuICB9KTtcblxuICAvLyBBZGQgYWxsIGFjY2Vzc29yIGBBcnJheWAgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBlYWNoKFsnY29uY2F0JywgJ2pvaW4nLCAnc2xpY2UnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdO1xuICAgIF8kMS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvYmogPSB0aGlzLl93cmFwcGVkO1xuICAgICAgaWYgKG9iaiAhPSBudWxsKSBvYmogPSBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gTmFtZWQgRXhwb3J0c1xuXG4gIHZhciBhbGxFeHBvcnRzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBWRVJTSU9OOiBWRVJTSU9OLFxuICAgIHJlc3RBcmd1bWVudHM6IHJlc3RBcmd1bWVudHMsXG4gICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgIGlzTnVsbDogaXNOdWxsLFxuICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgICBpc0VsZW1lbnQ6IGlzRWxlbWVudCxcbiAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICAgIGlzRGF0ZTogaXNEYXRlLFxuICAgIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgICBpc0Vycm9yOiBpc0Vycm9yLFxuICAgIGlzU3ltYm9sOiBpc1N5bWJvbCxcbiAgICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICAgIGlzRGF0YVZpZXc6IGlzRGF0YVZpZXckMSxcbiAgICBpc0FycmF5OiBpc0FycmF5LFxuICAgIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24kMSxcbiAgICBpc0FyZ3VtZW50czogaXNBcmd1bWVudHMkMSxcbiAgICBpc0Zpbml0ZTogaXNGaW5pdGUkMSxcbiAgICBpc05hTjogaXNOYU4kMSxcbiAgICBpc1R5cGVkQXJyYXk6IGlzVHlwZWRBcnJheSQxLFxuICAgIGlzRW1wdHk6IGlzRW1wdHksXG4gICAgaXNNYXRjaDogaXNNYXRjaCxcbiAgICBpc0VxdWFsOiBpc0VxdWFsLFxuICAgIGlzTWFwOiBpc01hcCxcbiAgICBpc1dlYWtNYXA6IGlzV2Vha01hcCxcbiAgICBpc1NldDogaXNTZXQsXG4gICAgaXNXZWFrU2V0OiBpc1dlYWtTZXQsXG4gICAga2V5czoga2V5cyxcbiAgICBhbGxLZXlzOiBhbGxLZXlzLFxuICAgIHZhbHVlczogdmFsdWVzLFxuICAgIHBhaXJzOiBwYWlycyxcbiAgICBpbnZlcnQ6IGludmVydCxcbiAgICBmdW5jdGlvbnM6IGZ1bmN0aW9ucyxcbiAgICBtZXRob2RzOiBmdW5jdGlvbnMsXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgZXh0ZW5kT3duOiBleHRlbmRPd24sXG4gICAgYXNzaWduOiBleHRlbmRPd24sXG4gICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgIGNyZWF0ZTogY3JlYXRlLFxuICAgIGNsb25lOiBjbG9uZSxcbiAgICB0YXA6IHRhcCxcbiAgICBnZXQ6IGdldCxcbiAgICBoYXM6IGhhcyxcbiAgICBtYXBPYmplY3Q6IG1hcE9iamVjdCxcbiAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgY29uc3RhbnQ6IGNvbnN0YW50LFxuICAgIG5vb3A6IG5vb3AsXG4gICAgdG9QYXRoOiB0b1BhdGgkMSxcbiAgICBwcm9wZXJ0eTogcHJvcGVydHksXG4gICAgcHJvcGVydHlPZjogcHJvcGVydHlPZixcbiAgICBtYXRjaGVyOiBtYXRjaGVyLFxuICAgIG1hdGNoZXM6IG1hdGNoZXIsXG4gICAgdGltZXM6IHRpbWVzLFxuICAgIHJhbmRvbTogcmFuZG9tLFxuICAgIG5vdzogbm93LFxuICAgIGVzY2FwZTogX2VzY2FwZSxcbiAgICB1bmVzY2FwZTogX3VuZXNjYXBlLFxuICAgIHRlbXBsYXRlU2V0dGluZ3M6IHRlbXBsYXRlU2V0dGluZ3MsXG4gICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIHJlc3VsdDogcmVzdWx0LFxuICAgIHVuaXF1ZUlkOiB1bmlxdWVJZCxcbiAgICBjaGFpbjogY2hhaW4sXG4gICAgaXRlcmF0ZWU6IGl0ZXJhdGVlLFxuICAgIHBhcnRpYWw6IHBhcnRpYWwsXG4gICAgYmluZDogYmluZCxcbiAgICBiaW5kQWxsOiBiaW5kQWxsLFxuICAgIG1lbW9pemU6IG1lbW9pemUsXG4gICAgZGVsYXk6IGRlbGF5LFxuICAgIGRlZmVyOiBkZWZlcixcbiAgICB0aHJvdHRsZTogdGhyb3R0bGUsXG4gICAgZGVib3VuY2U6IGRlYm91bmNlLFxuICAgIHdyYXA6IHdyYXAsXG4gICAgbmVnYXRlOiBuZWdhdGUsXG4gICAgY29tcG9zZTogY29tcG9zZSxcbiAgICBhZnRlcjogYWZ0ZXIsXG4gICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgb25jZTogb25jZSxcbiAgICBmaW5kS2V5OiBmaW5kS2V5LFxuICAgIGZpbmRJbmRleDogZmluZEluZGV4LFxuICAgIGZpbmRMYXN0SW5kZXg6IGZpbmRMYXN0SW5kZXgsXG4gICAgc29ydGVkSW5kZXg6IHNvcnRlZEluZGV4LFxuICAgIGluZGV4T2Y6IGluZGV4T2YsXG4gICAgbGFzdEluZGV4T2Y6IGxhc3RJbmRleE9mLFxuICAgIGZpbmQ6IGZpbmQsXG4gICAgZGV0ZWN0OiBmaW5kLFxuICAgIGZpbmRXaGVyZTogZmluZFdoZXJlLFxuICAgIGVhY2g6IGVhY2gsXG4gICAgZm9yRWFjaDogZWFjaCxcbiAgICBtYXA6IG1hcCxcbiAgICBjb2xsZWN0OiBtYXAsXG4gICAgcmVkdWNlOiByZWR1Y2UsXG4gICAgZm9sZGw6IHJlZHVjZSxcbiAgICBpbmplY3Q6IHJlZHVjZSxcbiAgICByZWR1Y2VSaWdodDogcmVkdWNlUmlnaHQsXG4gICAgZm9sZHI6IHJlZHVjZVJpZ2h0LFxuICAgIGZpbHRlcjogZmlsdGVyLFxuICAgIHNlbGVjdDogZmlsdGVyLFxuICAgIHJlamVjdDogcmVqZWN0LFxuICAgIGV2ZXJ5OiBldmVyeSxcbiAgICBhbGw6IGV2ZXJ5LFxuICAgIHNvbWU6IHNvbWUsXG4gICAgYW55OiBzb21lLFxuICAgIGNvbnRhaW5zOiBjb250YWlucyxcbiAgICBpbmNsdWRlczogY29udGFpbnMsXG4gICAgaW5jbHVkZTogY29udGFpbnMsXG4gICAgaW52b2tlOiBpbnZva2UsXG4gICAgcGx1Y2s6IHBsdWNrLFxuICAgIHdoZXJlOiB3aGVyZSxcbiAgICBtYXg6IG1heCxcbiAgICBtaW46IG1pbixcbiAgICBzaHVmZmxlOiBzaHVmZmxlLFxuICAgIHNhbXBsZTogc2FtcGxlLFxuICAgIHNvcnRCeTogc29ydEJ5LFxuICAgIGdyb3VwQnk6IGdyb3VwQnksXG4gICAgaW5kZXhCeTogaW5kZXhCeSxcbiAgICBjb3VudEJ5OiBjb3VudEJ5LFxuICAgIHBhcnRpdGlvbjogcGFydGl0aW9uLFxuICAgIHRvQXJyYXk6IHRvQXJyYXksXG4gICAgc2l6ZTogc2l6ZSxcbiAgICBwaWNrOiBwaWNrLFxuICAgIG9taXQ6IG9taXQsXG4gICAgZmlyc3Q6IGZpcnN0LFxuICAgIGhlYWQ6IGZpcnN0LFxuICAgIHRha2U6IGZpcnN0LFxuICAgIGluaXRpYWw6IGluaXRpYWwsXG4gICAgbGFzdDogbGFzdCxcbiAgICByZXN0OiByZXN0LFxuICAgIHRhaWw6IHJlc3QsXG4gICAgZHJvcDogcmVzdCxcbiAgICBjb21wYWN0OiBjb21wYWN0LFxuICAgIGZsYXR0ZW46IGZsYXR0ZW4sXG4gICAgd2l0aG91dDogd2l0aG91dCxcbiAgICB1bmlxOiB1bmlxLFxuICAgIHVuaXF1ZTogdW5pcSxcbiAgICB1bmlvbjogdW5pb24sXG4gICAgaW50ZXJzZWN0aW9uOiBpbnRlcnNlY3Rpb24sXG4gICAgZGlmZmVyZW5jZTogZGlmZmVyZW5jZSxcbiAgICB1bnppcDogdW56aXAsXG4gICAgdHJhbnNwb3NlOiB1bnppcCxcbiAgICB6aXA6IHppcCxcbiAgICBvYmplY3Q6IG9iamVjdCxcbiAgICByYW5nZTogcmFuZ2UsXG4gICAgY2h1bms6IGNodW5rLFxuICAgIG1peGluOiBtaXhpbixcbiAgICAnZGVmYXVsdCc6IF8kMVxuICB9O1xuXG4gIC8vIERlZmF1bHQgRXhwb3J0XG5cbiAgLy8gQWRkIGFsbCBvZiB0aGUgVW5kZXJzY29yZSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIgb2JqZWN0LlxuICB2YXIgXyA9IG1peGluKGFsbEV4cG9ydHMpO1xuICAvLyBMZWdhY3kgTm9kZS5qcyBBUEkuXG4gIF8uXyA9IF87XG5cbiAgcmV0dXJuIF87XG5cbn0pKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmRlcnNjb3JlLXVtZC5qcy5tYXBcbiJdfQ== 14734},{}],5:[function(require,module,exports){ 14735var $ = require('jquery'); 14736var breakpoint = require("./app-breakpoints"); 14737 14738$(function(){ 14739 $('.accordion').find('.accordion-toggle').click(function(){ 14740 if(!$(this).hasClass('accordion-toggle--open')) { 14741 $('.accordion').find('.accordion-toggle--open').removeClass("accordion-toggle--open").next().slideToggle('fast'); 14742 14743 $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast', function(){ 14744 if(breakpoint() != "smartphone") { 14745 $('html, body').animate({ 14746 scrollTop: $(this).offset().top - ( ($('.c-navigation').outerHeight(true) * 2) + ($(this).prev().outerHeight(true) * 2)) 14747 }, 500); 14748 } 14749 }); 14750 } else { 14751 $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast'); 14752 } 14753 14754 }); 14755}); 14756 14757/* 14758var breakpoint = require("./app-breakpoints"); 14759 14760jQuery( document ).ready(function( $ ) { 14761 $('.accordion').find('.accordion-toggle').click(function(){ 14762 14763 if(!$(this).hasClass('accordion-toggle--open')) { 14764 $('.accordion').find('.accordion-toggle--open').removeClass("accordion-toggle--open").next().slideToggle('fast'); 14765 14766 $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast', function(){ 14767 if(breakpoint() != "smartphone") { 14768 $('html, body').animate({ 14769 scrollTop: $(this).offset().top - ( ($('.navigation').outerHeight(true) * 2) + ($(this).prev().outerHeight(true) * 2)) 14770 }, 500); 14771 } 14772 }); 14773 } else { 14774 $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast'); 14775 } 14776 14777 }); 14778}); 14779 14780 */ 14781},{"./app-breakpoints":6,"jquery":2}],6:[function(require,module,exports){ 14782module.exports = function(selector) { 14783 return window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content'); 14784}; 14785 14786},{}],7:[function(require,module,exports){ 14787var styles = [ 14788 { 14789 "featureType": "administrative", 14790 "elementType": "labels.text.fill", 14791 "stylers": [ 14792 { 14793 "color": "#444444" 14794 } 14795 ] 14796 }, 14797 { 14798 "featureType": "landscape", 14799 "elementType": "all", 14800 "stylers": [ 14801 { 14802 "color": "#f2f2f2" 14803 } 14804 ] 14805 }, 14806 { 14807 "featureType": "poi", 14808 "elementType": "all", 14809 "stylers": [ 14810 { 14811 "visibility": "off" 14812 } 14813 ] 14814 }, 14815 { 14816 "featureType": "road", 14817 "elementType": "all", 14818 "stylers": [ 14819 { 14820 "saturation": -100 14821 }, 14822 { 14823 "lightness": 45 14824 } 14825 ] 14826 }, 14827 { 14828 "featureType": "road.highway", 14829 "elementType": "all", 14830 "stylers": [ 14831 { 14832 "visibility": "simplified" 14833 } 14834 ] 14835 }, 14836 { 14837 "featureType": "road.arterial", 14838 "elementType": "labels.icon", 14839 "stylers": [ 14840 { 14841 "visibility": "off" 14842 } 14843 ] 14844 }, 14845 { 14846 "featureType": "transit", 14847 "elementType": "all", 14848 "stylers": [ 14849 { 14850 "visibility": "off" 14851 } 14852 ] 14853 }, 14854 { 14855 "featureType": "water", 14856 "elementType": "all", 14857 "stylers": [ 14858 {
14859 "color": "#46bcec" 14860 }, 14861 { 14862 "visibility": "on" 14863 } 14864 ] 14865 } 14866] 14867; 14868 14869window.initialize = function() { 14870 var pin = []; 14871 var infowindow = new google.maps.InfoWindow({ 14872 content: "" 14873 }); 14874 var bounds = new google.maps.LatLngBounds(); 14875 var zoom = 8; 14876 14877 var styledMap = new google.maps.StyledMapType(styles, {name: "custom-map"}); 14878 14879 14880 var options = { 14881 zoom : zoom, 14882 // center : latLng, 14883 scrollwheel: false, 14884 mapTypeId : google.maps.MapTypeId.TERRAIN, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN 14885 maxZoom : 20, 14886 mapTypeControlOptions: { 14887 mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style'] 14888 }, 14889 zoomControl: true 14890 }; 14891 14892 if($('.pin').length) { 14893 $('.pin').each(function(){ 14894 var data = { 14895 "lat": $(this).attr("data-lat"), 14896 "lng": $(this).attr("data-_lng"), 14897 "pin": $(this).attr("data-pin") 14898 }; 14899 14900 pin.push(data); 14901 }); 14902 } 14903 14904 if(pin.length) { 14905 var lat = pin[0]['lat']; 14906 var latLng = new google.maps.LatLng(pin[0]['lat'], pin[0]['lng']); 14907 var marker_pin = pin[0]['pin']; 14908 options.center = latLng; 14909 } 14910 14911 map = new google.maps.Map(document.getElementById('google'), options); 14912 map.mapTypes.set('map_style', styledMap); 14913 map.setMapTypeId('map_style'); 14914 14915 if(pin.length) { 14916 for (var i = 0; i < pin.length; i++) { 14917 var marker = new google.maps.Marker({ 14918 map: map, 14919 position: new google.maps.LatLng(pin[i]['lat'], pin[i]['lng']), 14920 icon: new google.maps.MarkerImage(pin[i]['pin']) 14921 }); 14922 } 14923 } 14924} 14925 14926function loadScript() { 14927 var script = document.createElement('script'); 14928 script.type = 'text/javascript'; 14929 script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp' + 14930 '&callback=initialize&key=AIzaSyD8QupjQlwa8RvnBHFITw436BvRgBgdbN4'; 14931 document.body.appendChild(script); 14932} 14933 14934if (document.getElementById("google")) { 14935 window.onload = loadScript; 14936} 14937},{}]},{},[1]) 14938//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvamF2YXNjcmlwdHMvY29tbW9uLmpzIiwiYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvZGlzdC9qcXVlcnkuanMiLCJib3dlcl9jb21wb25lbnRzL3NsaWNrLWNhcm91c2VsL3NsaWNrL3NsaWNrLmpzIiwibm9kZV9tb2R1bGVzL3VuZGVyc2NvcmUvdW5kZXJzY29yZS11bWQuanMiLCJzcmMvamF2YXNjcmlwdHMvYXBwLWFjY29yZGlvbi5qcyIsInNyYy9qYXZhc2NyaXB0cy9hcHAtYnJlYWtwb2ludHMuanMiLCJzcmMvamF2YXNjcmlwdHMvYXBwLW1hcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbmNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD
14938QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB
14938QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB
14938O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsZ1NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuOEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3L0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdDQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfS
14938xsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwidmFyICQgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xyXG52YXIgYnJlYWtwb2ludCA9IHJlcXVpcmUoJy4vYXBwLWJyZWFrcG9pbnRzJyk7XHJcbnJlcXVpcmUoJy4vYXBwLWFjY29yZGlvbicpO1xyXG52YXIgc2xpY2sgPSByZXF1aXJlKFwic2xpY2tcIik7XHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG52YXIgX2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcbnZhciBfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG52YXJcdF9ncmlkTGFiZWwgPSBicmVha3BvaW50KCkucmVwbGFjZSgvXFxkKy9nLCAnJykucmVwbGFjZShcIiBcIiwgXCJcIikucmVwbGFjZSgvXFxcIi9nLCBcIlwiKTtcclxuXHJcbnZhciBzdGlja3kgPSAkKCcuYy1uYXZpZ2F0aW9uJykub2Zmc2V0KCkudG9wO1xyXG5cclxucmVxdWlyZSgnLi9hcHAtbWFwJyk7XHJcblxyXG4kKGZ1bmN0aW9uKCkge1xyXG5cdCQoJy5jYXJvdXNlbCcpLnNsaWNrKHtcclxuXHRcdGF1dG9wbGF5OiB0cnVlLFxyXG5cdFx0cmVzcG9uc2l2ZTogZmFsc2UsXHJcblx0XHRmYWRlOiB0cnVlLFxyXG5cdFx0ZG90czogZmFsc2UsXHJcblx0XHRhdXRvcGxheVNwZWVkOiA4NTAwLFxyXG5cdFx0YXJyb3dzOiBmYWxzZVxyXG5cdH0pO1xyXG5cclxuXHQkKCcuY2Fyb3VzZWwtZWxlbWVudCcpLnNsaWNrKHtcclxuXHRcdGF1dG9wbGF5OiB0cnVlLFxyXG5cdFx0cmVzcG9uc2l2ZTogW1xyXG5cdFx0e1xyXG5cdFx0IGJyZWFrcG9pbnQ6IDc2NyxcclxuXHQgICAgICBzZXR0aW5nczoge1xyXG5cdCAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxyXG5cdCAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDFcclxuXHQgICAgICB9XHJcblx0XHR9XSxcclxuXHRcdC8vZmFkZTogdHJ1ZSxcclxuXHRcdGRvdHM6IHRydWUsXHJcblx0XHRzbGlkZXNUb1Nob3c6IDIsXHJcbiBcdFx0c2xpZGVzVG9TY3JvbGw6IDIsXHJcblx0XHRhcnJvd3M6IGZhbHNlXHJcblx0fSk7XHJcblxyXG5cclxuXHQkKFwiLnBvc3QgLml0ZW0gLml0ZW0tbWVkaWFcIikuY2xpY2soZnVuY3Rpb24oKSB7XHJcblx0XHRpZiggJCh0aGlzKS5maW5kKFwiYVwiKS5hdHRyKFwiaHJlZlwiKSApIHtcclxuXHQgXHRcdCB3aW5kb3cubG9jYXRpb24gPSAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpO1xyXG5cdFx0fVxyXG5cdCAgcmV0dXJuIGZhbHNlO1xyXG5cdH0pO1xyXG5cclxuXHQkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkge1xyXG5cdFx0Y29uc29sZS5sb2coX2dyaWRMYWJlbCk7XHJcblxyXG5cdFx0aWYoX2dyaWRMYWJlbCAhPSBcInNtYXJ0cGhvbmVcIikge1xyXG5cdFx0XHRpZiAoJCh0aGlzKS5zY3JvbGxUb3AoKSA+IHN0aWNreSl7XHJcblx0XHQgICBcdCAkKCcuYy1uYXZpZ2F0aW9uJykuYWRkQ2xhc3MoXCJzdGlja3lcIik7XHJcblx0XHRcdCAgfSBlbHNlIHtcclxuXHRcdFx0ICAgICQoJy5jLW5hdmlnYXRpb24nKS5yZW1vdmVDbGFzcyhcInN0aWNreVwiKTtcclxuXHRcdFx0ICB9XHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubmF2LXRyaWdnZXInLCBmdW5jdGlvbihlKSB7XHJcblx0XHQkKHRoaXMpLnRvZ2dsZUNsYXNzKCdpcy1hY3RpdmUnKTtcclxuXHRcdCQoJyNtZW51LW1vYmlsZScpLnNsaWRlVG9nZ2xlKCk7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fSk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmV3LXdpbmRvd1wiLCBmdW5jdGlvbiAoKSB7XHJcblxyXG5cdFx0dmFyIHcgPSA1MDA7XHJcblx0XHR2YXIgaCA9IDUwMDtcclxuXHJcblx0XHR2YXIgZHVhbFNjcmVlbkxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCAhPSB1bmRlZmluZWQgPyB3aW5kb3cuc2NyZWVuTGVmdCA6IHNjcmVlbi5sZWZ0O1xyXG5cdFx0dmFyIGR1YWxTY3JlZW5Ub3AgPSB3aW5kb3cuc2NyZWVuVG9wICE9IHVuZGVmaW5lZCA/IHdpbmRvdy5zY3JlZW5Ub3AgOiBzY3JlZW4udG9wO1xyXG5cclxuXHRcdHZhciB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoID8gd2luZG93LmlubmVyV2lkdGggOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiBzY3JlZW4ud2lkdGg7XHJcbiAgIFx0XHR2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgOiBzY3JlZW4uaGVpZ2h0O1xyXG5cclxuICAgXHRcdHZhciB0aXRsZSA9ICQodGhpcykuYXR0cignZGF0YS10aXRsZScpO1xyXG4gICBcdFx0dmFyIHVybCA9ICQodGhpcykuYXR0cignaHJlZicpO1xyXG5cclxuXHRcdHZhciBsZWZ0ID0gKCh3aWR0aCAvIDIpIC0gKHcgLyAyKSkgKyBkdWFsU2NyZWVuTGVmdDtcclxuXHRcdHZhciB0b3AgPSAoKGhlaWdodCAvIDIpIC0gKGggLyAyKSkgKyBkdWFsU2NyZWVuVG9wO1xyXG5cdFx0dmFyIG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgdGl0bGUsICdzY3JvbGxiYXJzPXllcywgd2lkdGg9JyArIHcgKyAnLCBoZWlnaHQ9JyArIGggKyA
14938nLCB0b3A9JyArIHRvcCArICcsIGxlZnQ9JyArIGxlZnQpO1xyXG5cclxuXHRcdGlmICh3aW5kb3cuZm9jdXMpIHtcclxuXHQgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcblx0ICAgIH1cclxuXHJcbiAgIFx0XHRyZXR1cm4gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XHJcblx0XHRfZ3JpZFNpemUgPSBicmVha3BvaW50KCkubWF0Y2goLyhcXGQrKS9nKTtcclxuXHRcdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0XHRfbWFyZ2luID0gKF93aW5TaXplIC0gX2dyaWRTaXplKSAvIDI7XHJcblxyXG5cdFx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKCcgJywnJyk7XHJcblxyXG5cdFx0aWYoX2dyaWRMYWJlbCA9PSBcInNtYXJ0cGhvbmVcIikge1xyXG5cdFx0XHQkKCcuYy1uYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoXCJzdGlja3lcIik7XHJcblx0XHR9XHJcblxyXG5cdH0pLnJlc2l6ZSgpO1xyXG5cclxuXHJcblx0XHJcblx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGFcIikuY2xpY2soZnVuY3Rpb24gKCkge1xyXG5cdFx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGxpXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLFxyXG5cdFx0JCh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSxcclxuXHRcdCQoXCIuYy1hbGltZW50YWlyZSAuY29udGVudEJveFwiKS5oaWRlKCksXHJcblx0XHQkKFwiLmMtYWxpbWVudGFpcmUgLmNvbnRlbnRCb3hbZGF0YS1pZD1cIiArICQodGhpcykuYXR0cihcImRhdGEtaWRcIikgKyBcIl1cIikuZmFkZUluKCk7XHJcblx0fSk7XHJcblx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGxpOmVxKDApIGFcIikudHJpZ2dlcihcImNsaWNrXCIpO1xyXG5cdCQoXCIuY2Fyb3VzZWxcIikuc2xpY2soeyBhdXRvcGxheTogITAsIHJlc3BvbnNpdmU6ICExLCBmYWRlOiAhMCwgZG90czogITEsIGF1dG9wbGF5U3BlZWQ6IDg1MDAsIGFycm93czogITEgfSk7XHJcblx0JChcIi5jYXJvdXNlbC1lbGVtZW50XCIpLnNsaWNrKHsgYXV0b3BsYXk6ICEwLCByZXNwb25zaXZlOiBbeyBicmVha3BvaW50OiA3NjcsIHNldHRpbmdzOiB7IHNsaWRlc1RvU2hvdzogMSwgc2xpZGVzVG9TY3JvbGw6IDEgfSB9XSwgZG90czogITAsIHNsaWRlc1RvU2hvdzogMiwgc2xpZGVzVG9TY3JvbGw6IDIsIGFycm93czogITEgfSk7XHJcblx0JChcIi5wb3N0IC5pdGVtIC5pdGVtLW1lZGlhXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcclxuXHRcdHJldHVybiAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpICYmICh3aW5kb3cubG9jYXRpb24gPSAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpKSwgITE7XHJcblx0fSk7XHJcblx0JCh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbiAoKSB7XHJcblx0XHRcInNtYXJ0cGhvbmVcIiAhPSBhICYmICgkKHRoaXMpLnNjcm9sbFRvcCgpID4gbCA/ICQoXCIuYy1uYXZpZ2F0aW9uXCIpLmFkZENsYXNzKFwic3RpY2t5XCIpIDogJChcIi5jLW5hdmlnYXRpb25cIikucmVtb3ZlQ2xhc3MoXCJzdGlja3lcIikpO1xyXG5cdH0pO1xyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmF2LXRyaWdnZXJcIiwgZnVuY3Rpb24gKGUpIHtcclxuXHRcdHJldHVybiAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiaXMtYWN0aXZlXCIpLCAkKFwiI21lbnUtbW9iaWxlXCIpLnNsaWRlVG9nZ2xlKCksICExO1xyXG5cdH0pO1xyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmV3LXdpbmRvd1wiLCBmdW5jdGlvbiAoKSB7XHJcblx0XHR2YXIgZSA9IDUwMCxcclxuXHRcdFx0dCA9IDUwMCxcclxuXHRcdFx0biA9IHZvaWQgMCAhPSB3aW5kb3cuc2NyZWVuTGVmdCA/IHdpbmRvdy5zY3JlZW5MZWZ0IDogc2NyZWVuLmxlZnQsXHJcblx0XHRcdG8gPSB2b2lkIDAgIT0gd2luZG93LnNjcmVlblRvcCA/IHdpbmRvdy5zY3JlZW5Ub3AgOiBzY3JlZW4udG9wLFxyXG5cdFx0XHRyID0gd2luZG93LmlubmVyV2lkdGggPyB3aW5kb3cuaW5uZXJXaWR0aCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA6IHNjcmVlbi53aWR0aCxcclxuXHRcdFx0cyA9IHdpbmRvdy5pbm5lckhlaWdodCA/IHdpbmRvdy5pbm5lckhlaWdodCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IDogc2NyZWVuLmhlaWdodCxcclxuXHRcdFx0YSA9ICQodGhpcykuYXR0cihcImRhdGEtdGl0bGVcIiksXHJcblx0XHRcdGwgPSAkKHRoaXMpLmF0dHIoXCJocmVmXCIpLFxyXG5cdFx0XHRjID0gciAvIDIgLSBlIC8gMiArIG4sXHJcblx0XHRcdHUgPSBzIC8gMiAtIHQgLyAyICsgbyxcclxuXHRcdFx0ZCA9IHdpbmRvdy5vcGVuKGwsIGEsIFwic2Nyb2xsYmFycz15ZXMsIHdpZHRoPVwiICsgZSArIFwiLCBoZWlnaHQ9XCIgKyB0ICsgXCIsIHRvcD1cIiArIHUgKyBcIiwgbGVmdD1cIiArIGMpO1xyXG5cdFx0cmV0dXJuIHdpbmRvdy5mb2N1cyAmJiBkLmZvY3VzKCksICExO1xyXG5cdH0pO1xyXG5cdCQod2luZG93KS5yZXNpemUoZnVuY3Rpb24gKCkge1xyXG5cdFx0XHQociA9IG8oKS5tYXRjaCgvKFxcZCspL2cpKSwgKHMgPSBpKHdpbmRvdykud2lkdGgoKSksIChfbWFyZ2luID0gKHMgLSByKSAvID
14938IpLCAoYSA9IG8oKS5yZXBsYWNlKC9cXGQrL2csIFwiXCIpLnJlcGxhY2UoXCIgXCIsIFwiXCIpKSwgXCJzbWFydHBob25lXCIgPT0gYSAmJiBpKFwiLmMtbmF2aWdhdGlvblwiKS5yZW1vdmVDbGFzcyhcInN0aWNreVwiKTtcclxuXHR9KS5yZXNpemUoKTtcclxuXHRcdFxyXG5cdC8qXHJcblx0ZnVuY3Rpb24gUG9wdXBDZW50ZXIodXJsLCB0aXRsZSwgdywgaCkge1xyXG4gICAgLy8gRml4ZXMgZHVhbC1zY3JlZW4gcG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgTW9zdCBicm93c2VycyAgICAgIEZpcmVmb3hcclxuXHJcbiAgICAvLyBQdXRzIGZvY3VzIG9uIHRoZSBuZXdXaW5kb3dcclxuICAgIGlmICh3aW5kb3cuZm9jdXMpIHtcclxuICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgIH1cclxufVxyXG5cdCAqL1xyXG59KTtcclxuXHJcbi8qdmFyICQgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xyXG52YXIgc3RpY2tfaW5fcGFyZW50ID0gcmVxdWlyZShcInN0aWNreS1raXRcIik7XHJcbnZhciBzbGljayA9IHJlcXVpcmUoXCJzbGlja1wiKTtcclxudmFyIGJyZWFrcG9pbnQgPSByZXF1aXJlKCcuL2FwcC1icmVha3BvaW50cycpO1xyXG52YXIgc2FtZWhlaWdodCA9IHJlcXVpcmUoJy4vYXBwLXNhbWVoZWlnaHQnKTtcclxudmFyIFR3ZWVuTWF4ID0gcmVxdWlyZSgnVHdlZW5NYXgnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcblxyXG52YXIgX2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcbnZhciBfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG52YXIgY3VycmVudCA9IDA7XHJcbnZhciBuZXh0ID0gMDtcclxudmFyIHByZXYgPSAwO1xyXG52YXJcdF9ncmlkTGFiZWwgPSBicmVha3BvaW50KCkucmVwbGFjZSgvXFxkKy9nLCAnJykucmVwbGFjZShcIiBcIiwgXCJcIikucmVwbGFjZSgvXFxcIi9nLCBcIlwiKTtcclxudmFyIGRlYm91bmNlZExheW91dCA9IF8uZGVib3VuY2UoX3Jlc2l6ZSwgMzAwKTtcclxuXHJcbnZhciBzbGlja1ZhciA9IHtcclxuXHRjZW50ZXJNb2RlOiB0cnVlLFxyXG5cdGF1dG9wbGF5OiAoKF9ncmlkU2l6ZSA+IDc2OCkgPyB0cnVlIDogZmFsc2UpLFxyXG5cdHZhcmlhYmxlV2lkdGg6IHRydWUsXHJcblx0c2xpZGVzVG9TaG93OiAoKF9ncmlkU2l6ZSA+IDc2OCkgPyAzIDogMSksXHJcblx0aW5maW5pdGU6IGZhbHNlLFxyXG5cdGluaXRpYWxTbGlkZTogMSxcclxuXHRjZW50ZXJQYWRkaW5nOiAnMCcsXHJcblx0ZHJhZ2dhYmxlOiBmYWxzZVxyXG59O1xyXG5cclxuJChmdW5jdGlvbigpIHtcclxuXHRfZ3JpZFNpemUgPSBicmVha3BvaW50KCkubWF0Y2goLyhcXGQrKS9nKTtcclxuXHRfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG5cdHZhciBfbWFyZ2luID0gKF93aW5TaXplIC0gX2dyaWRTaXplKSAvIDI7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cclxuXHQkKCcuZmItc2hhcmUnKS5jbGljayhmdW5jdGlvbihlKSB7XHJcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3aW5kb3cub3BlbigkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ2ZiU2hhcmVXaW5kb3cnLFxyXG5cdFx0XHQnaGVpZ2h0PTQ1MCwgd2lkdGg9NTUwLCB0b3A9JyArICgkKHdpbmRvdykuaGVpZ2h0KCkgLyAyIC0gMjc1KSArXHJcblx0XHRcdCcsIGxlZnQ9JyArICgkKHdpbmRvdykud2lkdGgoKSAvIDIgLSAyMjUpICtcclxuXHRcdFx0JywgdG9vbGJhcj0wLCBsb2NhdGlvbj0wLCBtZW51YmFyPTAsIGRpcmVjdG9yaWVzPTAsIHNjcm9sbGJhcnM9MCcpO1xyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH0pO1xyXG5cclxuY29uc29sZS5sb2coX2dyaWRMYWJlbCk7XHJcblxyXG5cdGlmIChfZ3JpZExhYmVsICE9PSBcInNtYXJ0cGhvbmVcIiAmJiBfZ3JpZExhYmVsICE9PSBcInRhYmxldFwiICkge1xyXG5cdFx0JChcIiNzdGljay1pbi1wYXJlbnRcIikuc3RpY2tfaW5fcGFyZW50KHtcclxuXHRcdFx0cGFyZW50OiAnLnNvdXJjZS1fcHJvZHVjdF9jYXQnLFxyXG5cdFx0XHRzdGlja3lfY2xhc3M6ICdpcy1zdHVjaycsXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCQod2luZG93KS5yZXNpemUoZGVib3VuY2VkTGF5b3V0KTtcclxuXHRfcmVzaXplKCk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubmF2LXRyaWdnZXInLCBmdW5jdGlvbihlKSB7XHJcblxyXG5cdFx0JCh0aGlzKS50b2dnbGVDbGFzcygnaXMtYWN0aXZlJyk7XHJcblx0XHQkKCcjbWVudS1tb2JpbGUnKS5zbGlkZVRvZ2dsZSgpO1xyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9KTtcclxuXHJcblx0JChkb2N1bWVudCkub24oJ21vdXNlZW50ZXInLCAnLm1lbnUtaXRlbScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHR2YXIgaGVpZ2h0ID0gJCgnLnN1Yi1tZW51IHVsJywgdGhpcykub3V0ZXJIZWlnaHQodHJ1ZSk7XHJcblxyXG5cdFx0XHRpZiAoaGVpZ2h0KSB7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFsnLm1lbnUtZGVwdGgtMScsICcubWVudS1kZXB0aC0yJ10sIHtcclxuXHRcdFx0XHRcdGhlaWdodDogaGVpZ2h0XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0JChkb2N1bWVudCkub24oJ21vdXNlZW50ZXInLCAnLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4nLCBmdW5jdGlvbigpIHtcclxuXHRcdGlmIChfZ3JpZFNpemUgPiA3NjgpIHtcclxuXHRcdFx0dmFyIHBhZGRpbmcgPSAkKHRoaXMpLm9mZnNldCgpLmxlZnQ7XHJcblx0XHRcdHZhciBncmlkID0gJCgnI21lbnUtbWVudS1wcmltYWlyZScpLm91dGVyV2lkdGgoKTtcclxuXHJcblx0XHRcdCQodGhpcykuY2hpbGRyZW4oJ2Rpdi5tZW51LWRlcHRoLTEnKS5jc3Moe1xyXG5cdFx0XHRcdHBhZGRpbmdMZWZ0OiBwYWRkaW5nXHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0JCgnLm1lbnUtaXRlbS1kZXB0aC0xJykuY3NzKHtcclxuXHRcdFx0XHR3aWR0aDogZ3JpZCAqIDAuM1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdCQoJy5tZW51LWRlcHRoLTInKS5jc3Moe1xyXG5cdFx0XHRcdGxlZnQ6IGdyaWQgKiAwLjNcclxuXHRcdFx0fSkuY2hpbGRyZW4oJ3VsJykuY3NzKHtcclxuXHRcdFx0XHR3aWR0aDogZ3JpZCAqIDAuN1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblxyXG5cdCQoJy5zbGlkZXInKS5zbGljayh7XHJcblx0XHRhdXRvcGxheTogdHJ1ZSxcclxuXHRcdGZhZGU6IHRydWUsXHJcblx0XHRkb3RzOiB0cnVlLFxyXG5cdFx0YXJyb3dzOiBmYWxzZVxyXG5cdH0pO1xyXG5cclxuXHQkKCcucHJvZHVjdC1mb3JtYXRzLXNsaWRlcicpLnNsaWNrKHtcclxuXHRcdHNsaWRlc1RvU2hvdzogMSxcclxuXHRcdHNsaWRlc1RvU2Nyb2xsOiAxLFxyXG5cdFx0ZmFkZTogdHJ1ZSxcclxuXHRcdGNlbnRlck1vZGU6IHRydWUsXHJcblx0XHRhc05hdkZvcjogJy5wcm9kdWN0LWZvcm1hdHMtbmF2JyxcclxuXHR9KTtcclxuXHJcblx0JCgnLnByb2R1Y3QtZm9ybWF0cy1uYXYnKS5zbGljayh7XHJcblx0XHRzbGlkZXNUb1Nob3c6IDQsXHJcblx0XHRzbGlkZXNUb1Njcm9sbDogNCxcclxuXHRcdGNlbnRlclBhZGRpbmc6IDAsXHJcblx0XHRhc05hdkZvcjogJy5wcm9kdWN0LWZvcm1hdHMtc2xpZGVyJyxcclxuXHRcdGZvY3VzT25TZWxlY3Q6IHRydWUsXHJcblx0XHR2YXJpYWJsZVdpZHRoOiB0cnVlLFxyXG5cdFx0dXNlVHJhbnNmb3JtOiBmYWxzZSxcclxuXHR9KTtcclxuXHJcblx0JCgnLnJlbGF0ZWQtcHJvZHVjdHMtc2xpZGVyJykuc2xpY2soe1xyXG5cdFx0YWRhcH
14938RpdmVIZWlnaHQ6IHRydWUsXHJcblx0XHRkb3RzOiB0cnVlLFxyXG5cdH0pO1xyXG5cclxuXHQkKCcucmVsYXRlZC1wcm9kdWN0cy1zbGlkZXInKS5vbignc2V0UG9zaXRpb24nLCBmdW5jdGlvbihldmVudCwgc2xpY2ssXHJcblx0XHRkaXJlY3Rpb24pIHtcclxuXHRcdF9yZXNpemUoKTtcclxuXHR9KTtcclxuXHJcbn0pO1xyXG5cclxudmFyIHJ1blNsaWNrID0gZnVuY3Rpb24oKSB7XHJcblx0Y3VycmVudCA9IDA7XHJcblx0bmV4dCA9IDA7XHJcblx0cHJldiA9IDA7XHJcblxyXG5cdGlmICgkKCcuY2Fyb3VzZWwnKS5maW5kKCcuYy1saXN0LWl0ZW0tY2Fyb3VzZWwnKS5sZW5ndGggPj0gMykge1xyXG5cdFx0dmFyIGNhcm91c2VsID0gJCgnLmNhcm91c2VsJyk7XHJcblx0XHRpZiAoJChjYXJvdXNlbCkuaGFzQ2xhc3MoJ3NsaWNrLXNsaWRlcicpKSBjYXJvdXNlbC5zbGljaygndW5zbGljaycpO1xyXG5cclxuXHRcdGNhcm91c2VsLm9uKCdpbml0JywgZnVuY3Rpb24oc2xpY2spIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHRcdGN1cnJlbnQgPSBjYXJvdXNlbC5maW5kKCcuc2xpY2stY3VycmVudCcpO1xyXG5cdFx0XHRcdHByZXYgPSBjdXJyZW50LnByZXYoKTtcclxuXHRcdFx0XHRuZXh0ID0gY3VycmVudC5uZXh0KCk7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFtwcmV2LCBuZXh0XSwge1xyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxLFxyXG5cdFx0XHRcdFx0c2NhbGU6IDAuN1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFR3ZWVuTWF4LnNldChjdXJyZW50LCB7XHJcblx0XHRcdFx0XHRzY2FsZTogMSxcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjYXJvdXNlbC5zbGljayhzbGlja1Zhcikub24oJ2JlZm9yZUNoYW5nZScsIGZ1bmN0aW9uKGV2ZW50LCBzbGljayxcclxuXHRcdFx0Y3VycmVudFNsaWRlLCBuZXh0U2xpZGUpIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cclxuXHRcdFx0XHRpZiAoTWF0aC5hYnMobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlKSA9PSAxKSB7XHJcblx0XHRcdFx0XHRkaXJlY3Rpb24gPSAobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlID4gMCkgPyBcInJpZ2h0XCIgOiBcImxlZnRcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZGlyZWN0aW9uID0gKG5leHRTbGlkZSAtIGN1cnJlbnRTbGlkZSA+IDApID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRzY2FsZTogMC43LFxyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUpLCAwLjEsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMSxcclxuXHRcdFx0XHRcdHNjYWxlOiAxXHJcblx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIikge1xyXG5cdFx0XHRcdFx0Ly9lZGdlXHJcblx0XHRcdFx0XHRUd2Vlbk1heC50byhzbGljay4kc2xpZGVzLmVxKGN1cnJlbnRTbGlkZSAtIDEpLCAwLjEsIHtcclxuXHRcdFx0XHRcdFx0YXV0b0FscGhhOiAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlICsgMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDEsXHJcblx0XHRcdFx0XHRcdHNjYWxlOiAwLjdcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRUd2Vlbk1heC50byhzbGljay4kc2xpZGVzLmVxKGN1cnJlbnRTbGlkZSArIDEpLCAwLjEsIHtcclxuXHRcdFx0XHRcdFx0YXV0b0FscGhhOiAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlIC0gMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDEsXHJcblx0XHRcdFx0XHRcdHNjYWxlOiAwLjdcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdH0gZWxzZSBpZiAoJCgnLmMtc2VjdGlvbi5oYXMtc291cmNlIC5jLWxpc3RpbmcgLmMtbGlzdC1pdGVtJykubGVuZ3RoID49IDMpIHtcclxuXHJcblx0XHR2YXIgY2Fyb3VzZWwgPSAkKCcuYy1zZWN0aW9uLmhhcy1zb3VyY2UgLmMtbGlzdGluZ19fd3JhcHBlcicpO1xyXG5cdFx0aWYgKCQoY2Fyb3VzZWwpLmhhc0NsYXNzKCdzbGljay1zbGlkZXInKSkgY2Fyb3VzZWwuc2xpY2soJ3Vuc2xpY2snKTtcclxuXHJcblx0XHQvLyBpZiggJChjYXJvdXNlbCkuZmluZCgnLmMtbGlzdC1pdGVtLWNhcm91c2VsJykubGVuZ3RoID4gMykge1xyXG5cdFx0Y2Fyb3VzZWwub24oJ2luaXQnLCBmdW5jdGlvbihzbGljaykge1xyXG5cdFx0XHRpZiAoX2dyaWRTaXplID4gNzY4KSB7XHJcblx0XHRcdFx0Y3VycmVudCA9IGNhcm91c2VsLmZpbmQoJy5zbGljay1jdXJyZW50Jyk7XHJcblx0XHRcdFx0cHJldiA9IGN1cnJlbnQucHJldigpO1xyXG5cdFx0XHRcdG5leHQgPSBjdXJyZW50Lm5leHQoKTtcclxuXHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFtwcmV2LCBuZXh0XSwge1xyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KGN1cnJlbnQsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjYXJvdXNlbC5zbGljayhzbGlja1Zhcikub24oJ2JlZm9yZUNoYW5nZScsIGZ1bmN0aW9uKGV2ZW50LCBzbGljayxcclxuXHRcdFx0Y3VycmVudFNsaWRlLCBuZXh0U2xpZGUpIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHRcdGlmIChNYXRoLmFicyhuZXh0U2xpZGUgLSBjdXJyZW50U2xpZGUpID09IDEpIHtcclxuXHRcdFx0XHRcdGRpcmVjdGlvbiA9IChuZXh0U2xpZGUgLSBjdXJyZW50U2xpZGUgPiAwKSA/IFwicmlnaHRcIiA6IFwibGVmdFwiO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRkaXJlY3Rpb24gPSAobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlID4gMCkgPyBcImxlZnRcIiA6IFwicmlnaHRcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShjdXJyZW50U2xpZGUpLCAwLjEsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRhdXRvQWxwaGE6IDFcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0aWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiKSB7XHJcblx0XHRcdFx0XHQvL2VkZ2VcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlIC0gMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDBcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUgKyAxKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlICsgMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDBcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUgLSAxKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblx0Ly8gfVxyXG59XHJcblxyXG4kKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XHJcblx0X2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0X21hcmdpbiA9IChfd2luU2l6ZSAtIF9ncmlkU2l6ZSkgLyAyO1xyXG5cdG1heEhlaWdodCA9IC0xO1xyXG5cclxuXHRpZiAoX2dyaWRTaXplID4gMTIwMCkge1xyXG5cdFx0JCgnLmMtc2VjdGlvbi0taGVhZGVyLmhhcy10aHVtYm5haWwgLmMtc2VjdGlvbl9fd3JhcHBlcicpLmNzcyh7XHJcblx0XHRcdHBhZGRpbmdMZWZ0OiBfbWFyZ2luXHJcblx0XHR9KTtcclxuXHR9XHJcbn0pXHJcblxyXG5mdW5jdGlvbiBfcmVzaXplKCkge1xyXG5cdGNvbnNvbGUubG9nKFwicmVzaXplIG9uY2VcIik7XHJcblx0X2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0X21hcmdpbiA9IChfd2luU2l6ZSAtIF9ncmlkU2l6ZSkgLyAyO1xyXG5cdG1heEhlaWdodCA9IC0xO1xyXG5cclxuXHQvL1Jlc2V0XHJcblx0JCgnLmMtc2VjdGlvbi0taGVhZGVyLmhhcy10aHVtYm5haWwgLmMtc2VjdGlvbl9fd3JhcHBlcicpLmNzcygncGFkZGluZ0xlZnQnLFxyXG5cdFx0JycpO1xyXG5cclxuXHQkKCcubWVudS1kZXB0aC0xLCAubWVudS1kZXB0aC0yJykuY3NzKHtcclxuXHRcdG1pbkhlaWdodDogJCgnLm1lbnUtZGVwdGgtMScpLmZpbmQoJ3VsJykuZXEoMCkub3V0ZXJIZWlnaHQodHJ1ZSlcclxuXHR9KTtcclxuXHJcblx0aWYgKF9ncmlkU2l6ZSA+IDEyMDApIHtcclxuXHRcdCQoJy5jLXNlY3Rpb24tLWhlYWRlci5oYXMtdGh1bWJuYWlsIC5jLXNlY3Rpb25fX3dyYXBwZXInKS5jc3Moe1xyXG5cdFx0XHRwYWRkaW5nTGVmdDogX21hcmdpblxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRpZiAoJCgnLnNhbWUtaGVpZ2h0JykubGVuZ3RoICYmIF9ncmlkTGFiZWwgIT09IFwic21hcnRwaG9uZVwiKSB7XHJcblx0XHQkKCcuc2FtZS1oZWlnaHQnKS5lcXVhbFJvd0hlaWdodHMoKTtcclxuXHR9XHJcblxyXG5cdHJ1blNsaWNrKCk7XHJcbn1cclxuKi8iLCIoZnVuY3Rpb24gKGdsb2JhbCl7XG47IHZhciBfX2Jyb3dzZXJpZnlfc2hpbV9yZXF1aXJlX189cmVxdWlyZTsoZnVuY3Rpb24gYnJvd3NlcmlmeVNoaW0obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlLCBkZWZpbmUsIGJyb3dzZXJpZnlfc2hpbV9fZGVmaW5lX19tb2R1bGVfX2V4cG9ydF9fKSB7XG4vKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjIuMS40XG4gKiBodHRwOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHA6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNS0wNC0yOFQxNjowMVpcbiAqL1xuXG4oZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVud
14938HMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0odHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBTdXBwb3J0OiBGaXJlZm94IDE4K1xuLy8gQ2FuJ3QgYmUgaW4gc3RyaWN0IG1vZGUsIHNldmVyYWwgbGlicyBpbmNsdWRpbmcgQVNQLk5FVCB0cmFjZVxuLy8gdGhlIHN0YWNrIHZpYSBhcmd1bWVudHMuY2FsbGVyLmNhbGxlZSBhbmQgRmlyZWZveCBkaWVzIGlmXG4vLyB5b3UgdHJ5IHRvIHRyYWNlIHRocm91Z2ggXCJ1c2Ugc3RyaWN0XCIgY2FsbCBjaGFpbnMuICgjMTMzMzUpXG4vL1xuXG52YXIgYXJyID0gW107XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG5cblxudmFyXG5cdC8vIFVzZSB0aGUgY29ycmVjdCBkb2N1bWVudCBhY2NvcmRpbmdseSB3aXRoIHdpbmRvdyBhcmd1bWVudCAoc2FuZGJveClcblx0ZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQsXG5cblx0dmVyc2lvbiA9I
14938FwiMi4xLjRcIixcblxuXHQvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeVxuXHRqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4xXG5cdC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUFxuXHRydHJpbSA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZyxcblxuXHQvLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmdcblx0cm1zUHJlZml4ID0gL14tbXMtLyxcblx0cmRhc2hBbHBoYSA9IC8tKFtcXGRhLXpdKS9naSxcblxuXHQvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5cdGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7XG5cdFx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuXHR9O1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3Jcblx0c2VsZWN0b3I6IFwiXCIsXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXHRcdHJldHVybiBudW0gIT0gbnVsbCA/XG5cblx0XHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRcdCggbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXSApIDpcblxuXHRcdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdFx0c2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblx0XHRyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDtcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHQvLyAoWW91IGNhbiBzZWVkIHRoZSBhcmd1bWVudHMgd2l0aCBhbiBhcnJheSBvZiBhcmdzLCBidXQgdGhpcyBpc1xuXHQvLyBvbmx5IHVzZWQgaW50ZXJuYWxseS4pXG5cdGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjaywgYXJncyApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrLCBhcmdzICk7XG5cdH0sXG5cblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9KSk7XG5cdH0sXG5cblx0c2xpY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7XG5cdH0sXG5cblx0Zmlyc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XG5cdH0sXG5cblx0bGFzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIC0xICk7XG5cdH0sXG5cblx0ZXE6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1tqXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcihudWxsKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWzBdIHx8IHt9LFxuXHRcdGkgPSAxLFxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0ZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKCB0eXBlb2YgdGFyZ2V0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXG5cdFx0Ly8gU2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlI
14938HRhcmdldFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgaSBdIHx8IHt9O1xuXHRcdGkrKztcblx0fVxuXG5cdC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgIT09IFwib2JqZWN0XCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKCAob3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdKSAhPSBudWxsICkge1xuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoY29weSkgfHwgKGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoY29weSkpICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShzcmMpID8gc3JjIDogW107XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3Qoc3JjKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzRnVuY3Rpb246IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09IFwiZnVuY3Rpb25cIjtcblx0fSxcblxuXHRpc0FycmF5OiBBcnJheS5pc0FycmF5LFxuXG5cdGlzV2luZG93OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH0sXG5cblx0aXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChudWxsfHRydWV8ZmFsc2V8XCJcIilcblx0XHQvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzIChcIjB4Li4uXCIpXG5cdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0Ly8gYWRkaW5nIDEgY29ycmVjdHMgbG9zcyBvZiBwcmVjaXNpb24gZnJvbSBwYXJzZUZsb2F0ICgjMTUxMDApXG5cdFx0cmV0dXJuICFqUXVlcnkuaXNBcnJheSggb2JqICkgJiYgKG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICsgMSkgPj0gMDtcblx0fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdC8vIE5vdCBwbGFpbiBvYmplY3RzOlxuXHRcdC8vIC0gQW55IG9iamVjdCBvciB2YWx1ZSB3aG9zZSBpbnRlcm5hbCBbW0NsYXNzXV0gcHJvcGVydHkgaXMgbm90IFwiW29iamVjdCBPYmplY3RdXCJcblx0XHQvLyAtIERPTSBub2Rlc1xuXHRcdC8vIC0gd2luZG93XG5cdFx0aWYgKCBqUXVlcnkudHlwZSggb2JqICkgIT09IFwib2JqZWN0XCIgfHwgb2JqLm5vZGVUeXBlIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCBvYmouY29uc3RydWN0b3IgJiZcblx0XHRcdFx0IWhhc093bi5jYWxsKCBvYmouY29uc3RydWN0b3IucHJvdG90eXBlLCBcImlzUHJvdG90eXBlT2ZcIiApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZSBmdW5jdGlvbiBoYXNuJ3QgcmV0dXJuZWQgYWxyZWFkeSwgd2UncmUgY29uZmlkZW50IHRoYXRcblx0XHQvLyB8b2JqfCBpcyBhIHBsYWluIG9iamVjdCwgY3JlYXRlZCBieSB7fSBvciBjb25zdHJ1Y3RlZCB3aXRoIG5ldyBPYmplY3Rcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBuYW1lO1xuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHR0eXBlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0XHR9XG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjAsIGlPUzw2IChmdW5jdGlvbmlzaCBSZWdFeHApXG5cdFx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwob2JqKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdFx0dHlwZW9mIG9iajtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHtcblx0XHR2YXIgc2NyaXB0LFxuXHRcdFx0aW5kaXJlY3QgPSBldmFsO1xuXG5cdFx0Y29kZSA9IGpRdWVyeS50cmltKCBjb2RlICk7XG5cblx0XHRpZiAoIGNvZGUgKSB7XG5cdFx0XHQvLyBJZiB0aGUgY29kZSBpbmNsdWRlcyBhIHZhbGlkLCBwcm9sb2d1ZSBwb3NpdGlvblxuXHRcdFx0Ly8gc3RyaWN0IG1vZGUgcHJhZ21hLCBleGVjdXRlIGNvZGUgYnkgaW5qZWN0aW5nIGFcblx0XHRcdC8vIHNjcmlwdCB0YWcgaW50byB0aGUgZG9jdW1lbnQuXG5cdFx0XHRpZiAoIGNvZGUuaW5kZXhPZihcInVzZSBzdHJpY3RcIikgPT09IDEgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG5cdFx0XHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBhdm9pZCB0aGUgRE9NIG5vZGUgY3JlYXRpb24sIGluc2VydGlvblxuXHRcdFx0Ly8gYW5kIHJlbW92YWwgYnkgdXNpbmcgYW4gaW5kaXJlY3QgZ2xvYmFsIGV2YWxcblx0XHRcdFx0aW5kaXJlY3QoIGNvZGUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuXHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdC8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3Milcblx0Y2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkge1xuXHRcdHJldHVybi
14938BzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xuXHR9LFxuXG5cdG5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0fSxcblxuXHQvLyBhcmdzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdzICkge1xuXHRcdHZhciB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aCxcblx0XHRcdGlzQXJyYXkgPSBpc0FycmF5bGlrZSggb2JqICk7XG5cblx0XHRpZiAoIGFyZ3MgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXkgKSB7XG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdHZhbHVlID0gY2FsbGJhY2suYXBwbHkoIG9ialsgaSBdLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBIHNwZWNpYWwsIGZhc3QsIGNhc2UgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2Ugb2YgZWFjaFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGlzQXJyYXkgKSB7XG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdHZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICk7XG5cblx0XHRcdFx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9iajtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMVxuXHR0cmltOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcdFwiXCIgOlxuXHRcdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIlwiICk7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF
149385bGlrZSggT2JqZWN0KGFycikgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0WyBhcnIgXSA6IGFyclxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5jYWxsKCByZXQsIGFyciApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcblx0XHRyZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XG5cdH0sXG5cblx0bWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkge1xuXHRcdHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCxcblx0XHRcdGogPSAwLFxuXHRcdFx0aSA9IGZpcnN0Lmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07XG5cdFx0fVxuXG5cdFx0Zmlyc3QubGVuZ3RoID0gaTtcblxuXHRcdHJldHVybiBmaXJzdDtcblx0fSxcblxuXHRncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7XG5cdFx0dmFyIGNhbGxiYWNrSW52ZXJzZSxcblx0XHRcdG1hdGNoZXMgPSBbXSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0Y2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0O1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xuXHRcdC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uXG5cdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTtcblx0XHRcdGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVjdCApIHtcblx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hdGNoZXM7XG5cdH0sXG5cblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkge1xuXHRcdHZhciB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0aXNBcnJheSA9IGlzQXJyYXlsaWtlKCBlbGVtcyApLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gZWxlbXMgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0XHRyZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7XG5cdH0sXG5cblx0Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzXG5cdGd1aWQ6IDEsXG5cblx0Ly8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55XG5cdC8vIGFyZ3VtZW50cy5cblx0cHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcblx0XHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRcdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0bXAgPSBmblsgY29udGV4dCBdO1xuXHRcdFx0Y29udGV4dCA9IGZuO1xuXHRcdFx0Zm4gPSB0bXA7XG5cdFx0fVxuXG5cdFx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0XHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRcdGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBTaW11bGF0ZWQgYmluZFxuXHRcdGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTtcblx0XHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdFx0fTtcblxuXHRcdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRcdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdFx0cmV0dXJuIHByb3h5O1xuXHR9LFxuXG5cdG5vdzogRGF0ZS5ub3csXG5cblx0Ly8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyXG5cdC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuXG5cdHN1cHBvcnQ6IHN1cHBvcnRcbn0pO1xuXG4vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXBcbmpRdWVyeS5lYWNoKFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvclwiLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24oaSwgbmFtZSkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0FycmF
149385bGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IGlPUyA4LjIgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKVxuXHQvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpXG5cdC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlc1xuXHQvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFXG5cdHZhciBsZW5ndGggPSBcImxlbmd0aFwiIGluIG9iaiAmJiBvYmoubGVuZ3RoLFxuXHRcdHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7XG5cblx0aWYgKCB0eXBlID09PSBcImZ1bmN0aW9uXCIgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIG9iai5ub2RlVHlwZSA9PT0gMSAmJiBsZW5ndGggKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMi4wLXByZVxuICogaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgMjAwOCwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE0LTEyLTE2XG4gKi9cbihmdW5jdGlvbiggd2luZG93ICkge1xuXG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gMDtcblx0fSxcblxuXHQvLyBHZW5lcmFsLXB1cnBvc2UgY29uc3RhbnRzXG5cdE1BWF9ORUdBVElWRSA9IDEgPDwgMzEsXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHA6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNVxuXHRpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0bGVuID0gbGlzdC5sZW5ndGg7XG5cdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gLTE7XG5cdH0sXG5cblx0Ym9vbGVhbnMgPSBcImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsXG5cblx0Ly8gUmVndWxhciBleHByZXNzaW9uc1xuXG5cdC8vIFdoaXRlc3BhY2UgY2hhcmFjdGVycyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY2hhcmFjdGVyc1xuXHRjaGFyYWN0ZXJFbmNvZGluZyA9IFwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFxcXHgwMC1cXFxceGEwXSkrXCIsXG5cblx0Ly8gTG9vc2VseSBtb2RlbGVkIG9uIENTUyBpZGVudGlmaWVyIGNoYXJhY3RlcnNcblx0Ly8gQW4gdW5xdW90ZWQgdmFsdWUgc2hvdWxkIGJlIGEgQ1NTIGlkZW50aWZpZXIgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0Ly8gUHJvcGVyIHN5bnRheDogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVyXG5cdGlkZW50aWZpZXIgPSBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCBcIndcIiwgXCJ3I1wiICksXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKSg/OlxcXFwoKFwiICtcblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblxuXHRyYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggXCI9XCIgKyB3aGl0ZXNwYWNlICsgXCIqKFteXFxcXF0nXFxcIl0qPylcIiArIH
14938doaXRlc3BhY2UgKyBcIipcXFxcXVwiLCBcImdcIiApLFxuXG5cdHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksXG5cdHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBpZGVudGlmaWVyICsgXCIkXCIgKSxcblxuXHRtYXRjaEV4cHIgPSB7XG5cdFx0XCJJRFwiOiBuZXcgUmVnRXhwKCBcIl4jKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZSggXCJ3XCIsIFwidypcIiApICsgXCIpXCIgKSxcblx0XHRcIkFUVFJcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBhdHRyaWJ1dGVzICksXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXG5cdFx0XCJDSElMRFwiOiBuZXcgUmVnRXhwKCBcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooXFxcXGQrKXwpKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfClcIiwgXCJpXCIgKSxcblx0XHRcImJvb2xcIjogbmV3IFJlZ0V4cCggXCJeKD86XCIgKyBib29sZWFucyArIFwiKSRcIiwgXCJpXCIgKSxcblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooKD86LVxcXFxkKT9cXFxcZCopXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KSg/PVteLV18JClcIiwgXCJpXCIgKVxuXHR9LFxuXG5cdHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyaGVhZGVyID0gL15oXFxkJC9pLFxuXG5cdHJuYXRpdmUgPSAvXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLFxuXG5cdC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9yc1xuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXG5cblx0cnNpYmxpbmcgPSAvWyt+XS8sXG5cdHJlc2NhcGUgPSAvJ3xcXFxcL2csXG5cblx0Ly8gQ1NTIGVzY2FwZXMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xuXHRydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCBcIlxcXFxcXFxcKFtcXFxcZGEtZl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3woXCIgKyB3aGl0ZXNwYWNlICsgXCIpfC4pXCIsIFwiaWdcIiApLFxuXHRmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7XG5cdFx0dmFyIGhpZ2ggPSBcIjB4XCIgKyBlc2NhcGVkIC0gMHgxMDAwMDtcblx0XHQvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludFxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjRcblx0XHQvLyBXb3JrYXJvdW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICtcIjB4XCJcblx0XHRyZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/XG5cdFx0XHRlc2NhcGVkIDpcblx0XHRcdGhpZ2ggPCAwID9cblx0XHRcdFx0Ly8gQk1QIGNvZGVwb2ludFxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDpcblx0XHRcdFx0Ly8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9O1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtYXRjaCwgZWxlbSwgbSwgbm9kZVR5cGUsXG5cdFx0Ly8gUVNBIHZhcnNcblx0XHRpLCBncm91cHMsIG9sZCwgbmlkLCBuZXdDb250ZXh0LCBuZXdTZWxlY3RvcjtcblxuXHRpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblxuXHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cdG5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZTtcblxuXHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiB8fCAhc2VsZWN0b3IgfHxcblx0XHRub2RlVHlwZSAhPT0gMSAmJi
14938Bub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdGlmICggIXNlZWQgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cblx0XHQvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIHdoZW4gcG9zc2libGUgKGUuZy4sIG5vdCB1bmRlciBEb2N1bWVudEZyYWdtZW50KVxuXHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiI0lEXCIpXG5cdFx0XHRpZiAoIChtID0gbWF0Y2hbMV0pICkge1xuXHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICk7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVuIEJsYWNrYmVycnkgNC42IHJldHVybnNcblx0XHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50IChqUXVlcnkgIzY5NjMpXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBJRSwgT3BlcmEsIGFuZCBXZWJraXQgcmV0dXJuIGl0ZW1zXG5cdFx0XHRcdFx0XHQvLyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQ29udGV4dCBpcyBub3QgYSBkb2N1bWVudFxuXHRcdFx0XHRcdGlmICggY29udGV4dC5vd25lckRvY3VtZW50ICYmIChlbGVtID0gY29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRjb250YWlucyggY29udGV4dCwgZWxlbSApICYmIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiVEFHXCIpXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gU3BlZWQtdXA6IFNpenpsZShcIi5DTEFTU1wiKVxuXHRcdFx0fSBlbHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBRU0EgcGF0aFxuXHRcdGlmICggc3VwcG9ydC5xc2EgJiYgKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHtcblx0XHRcdG5pZCA9IG9sZCA9IGV4cGFuZG87XG5cdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdG5ld1NlbGVjdG9yID0gbm9kZVR5cGUgIT09IDEgJiYgc2VsZWN0b3I7XG5cblx0XHRcdC8vIHFTQSB3b3JrcyBzdHJhbmdlbHkgb24gRWxlbWVudC1yb290ZWQgcXVlcmllc1xuXHRcdFx0Ly8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3BlY2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdFxuXHRcdFx0Ly8gYW5kIHdvcmtpbmcgdXAgZnJvbSB0aGVyZSAoVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoZSB0ZWNobmlxdWUpXG5cdFx0XHQvLyBJRSA4IGRvZXNuJ3Qgd29yayBvbiBvYmplY3QgZWxlbWVudHNcblx0XHRcdGlmICggbm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXHRcdFx0XHRncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblxuXHRcdFx0XHRpZiAoIChvbGQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpKSApIHtcblx0XHRcdFx0XHRuaWQgPSBvbGQucmVwbGFjZSggcmVzY2FwZSwgXCJcXFxcJCZcIiApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRleHQuc2V0QXR0cmlidXRlKCBcImlkXCIsIG5pZCApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5pZCA9IFwiW2lkPSdcIiArIG5pZCArIFwiJ10gXCI7XG5cblx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGdyb3Vwc1tpXSA9IG5pZCArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0O1xuXHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKFwiLFwiKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBuZXdTZWxlY3RvciApIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fSBjYXRjaChxc2FFcnJvcikge1xuXHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdGlmICggIW9sZCApIHtcblx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKFwiaWRcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtGdW5jdGlvbihzdHJpbmcsIE9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZGl2IGFuZCBleHBlY3RzIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gISFmbiggZGl2ICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZh
14938dWx0XG5cdFx0aWYgKCBkaXYucGFyZW50Tm9kZSApIHtcblx0XHRcdGRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBkaXYgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRkaXYgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGF0dHJzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHQoIH5iLnNvdXJjZUluZGV4IHx8IE1BWF9ORUdBVElWRSApIC1cblx0XHRcdCggfmEuc291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICk7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkge1xuXHRcdGFyZ3VtZW50ID0gK2FyZ3VtZW50O1xuXHRcdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHR2YXIgaixcblx0XHRcdFx0bWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSxcblx0XHRcdFx0aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7XG5cblx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlc1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBhIG5vZGUgZm9yIHZhbGlkaXR5IGFzIGEgU2l6emxlIGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3Q9fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7RWxlbWVudHxPYmplY3R8Qm9vbGVhbn0gVGhlIGlucHV0IG5vZGUgaWYgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGEgZmFsc3kgdmFsdWVcbiAqL1xuZnVuY3Rpb24gdGVzdENvbnRleHQoIGNvbnRleHQgKSB7XG5cdHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnRleHQ7XG59XG5cbi8vIEV4cG9zZSBzdXBwb3J0IHZhcnMgZm9yIGNvbnZlbmllbmNlXG5zdXBwb3J0ID0gU2l6emxlLnN1cHBvcnQgPSB7fTtcblxuLyoqXG4gKiBEZXRlY3RzIFhNTCBub2Rlc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBlbGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGVcbiAqL1xuaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdFxuXHQvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMylcblx0dmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7XG5cdHJldHVybi
14938Bkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09IFwiSFRNTFwiIDogZmFsc2U7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHBhcmVudCxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gSWYgbm8gZG9jdW1lbnQgYW5kIGRvY3VtZW50RWxlbWVudCBpcyBhdmFpbGFibGUsIHJldHVyblxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFNldCBvdXIgZG9jdW1lbnRcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRwYXJlbnQgPSBkb2MuZGVmYXVsdFZpZXc7XG5cblx0Ly8gU3VwcG9ydDogSUU+OFxuXHQvLyBJZiBpZnJhbWUgZG9jdW1lbnQgaXMgYXNzaWduZWQgdG8gXCJkb2N1bWVudFwiIHZhcmlhYmxlIGFuZCBpZiBpZnJhbWUgaGFzIGJlZW4gcmVsb2FkZWQsXG5cdC8vIElFIHdpbGwgdGhyb3cgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gYWNjZXNzaW5nIFwiZG9jdW1lbnRcIiB2YXJpYWJsZSwgc2VlIGpRdWVyeSAjMTM5MzZcblx0Ly8gSUU2LTggZG8gbm90IHN1cHBvcnQgdGhlIGRlZmF1bHRWaWV3IHByb3BlcnR5IHNvIHBhcmVudCB3aWxsIGJlIHVuZGVmaW5lZFxuXHRpZiAoIHBhcmVudCAmJiBwYXJlbnQgIT09IHBhcmVudC50b3AgKSB7XG5cdFx0Ly8gSUUxMSBkb2VzIG5vdCBoYXZlIGF0dGFjaEV2ZW50LCBzbyBhbGwgbXVzdCBzdWZmZXJcblx0XHRpZiAoIHBhcmVudC5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cdFx0fSBlbHNlIGlmICggcGFyZW50LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0cGFyZW50LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBTdXBwb3J0IHRlc3RzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0ZG9jdW1lbnRJc0hUTUwgPSAhaXNYTUwoIGRvYyApO1xuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFkaXYuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpO1xuXHR9KTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVDb21tZW50KFwiXCIpICk7XG5cdFx0cmV0dXJuICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBkaXYgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2MuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvYy5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gSUQgZmluZCBhbmQgZmlsdGVyXG5cdGlmICggc3VwcG9ydC5nZXRCeUlkICkge1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHQvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJuc1xuXHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzXG5cdFx0XHRcdHJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFsgbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0Ly8gU3VwcG9ydDogSUU2Lzdcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0ZGVsZXRlIEV4cHIuZmluZFtcIklEXCJdO1xuXG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9ICBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kW1wiVEFHXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/XG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROXG5cdFx0XHR9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdHRtcCA9IFtdLFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0Ly8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvb1xuXHRcdFx0XHRyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHNcblx0XHRcdGlmICggdGFnID09PSBcIipcIiApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0dG1wLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdG1wO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fTtcblxuXHQvLyBDbGFzc1xuXHRFeHByLmZpbmRbXCJDTEFTU1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkge1xuXHRcdGlmICggZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvYy5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2Vcblx0XHRcdC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseVxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXG5cdFx0XHQvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaFxuXHRcdFx0Ly8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGRpdiApLmlubmVySFRNTCA9IFwiPGEgaWQ9J1wiICsgZXhwYW5kbyArIFwiJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgaWQ9J1wiICsgZXhwYW5kbyArIFwiLVxcZl0nIG1zYWxsb3djYXB0dXJlPScnPlwiICtcblx0XHRcdFx0XCI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2XG5cdFx0XHQvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9y
14938ICo9XG5cdFx0XHQvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCBcInNhZmVcIiBmb3IgV2luUlRcblx0XHRcdC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBhbmQgXCJ2YWx1ZVwiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86dmFsdWV8XCIgKyBib29sZWFucyArIFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjIrLCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuNytcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIn49XCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCtcblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTFcblx0XHRcdC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlsc1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIFwiYSNcIiArIGV4cGFuZG8gKyBcIisqXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiLiMuK1srfl1cIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2MuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGID
14938MuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKFwiLC4qOlwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZGl2LCBcImRpdlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZGl2LCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbihcInxcIikgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IGRvZXMgbm90IGltcGxlbWVudCBpbmNsdXNpdmUgZGVzY2VuZGVudFxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpKTtcblx0XHR9IDpcblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdGlmICggYiApIHtcblx0XHRcdFx0d2hpbGUgKCAoYiA9IGIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/XG5cdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5IGFyZSBkaXNjb25uZWN0ZWRcblx0XHRcdDE7XG5cblx0XHQvLyBEaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRpZiAoIGNvbXBhcmUgJiAxIHx8XG5cdFx0XHQoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0aWYgKCBhID09PSBkb2MgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2MgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybi
14938Bjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXHRcdFx0cmV0dXJuIGEgPT09IGRvYyA/IC0xIDpcblx0XHRcdFx0YiA9PT0gZG9jID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jO1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZFxuXHRleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCBcIj0nJDEnXVwiICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHd
14938oaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkge1xuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzJdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWzNdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSBcImV2ZW5cIiB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwcltcIkNISUxEXCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7XG5cdFx0XHRcdHJldHVybi
14938BudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiZcblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQocGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkpICYmXG5cdFx0XHRcdGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIgKTtcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBkaWZmLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbW
14938UgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGU7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6IG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IHBhcmVudFsgZXhwYW5kbyBdIHx8IChwYXJlbnRbIGV4cGFuZG8gXSA9IHt9KTtcblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSBvdXRlckNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWzBdID09PSBkaXJydW5zICYmIGNhY2hlWzFdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMl07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdXNlQ2FjaGUgJiYgKGNhY2hlID0gKGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdKSAmJiBjYWNoZVswXSA9PT0gZGlycnVucyApIHtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IGNhY2hlWzFdO1xuXG5cdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmICsrZGlmZiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KSlbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybi
14938BFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFswXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCBcIlwiKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
14938BlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlO1xuXHRcdH0sXG5cblx0XHRcImRpc2FibGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbXCJlbXB0eVwiXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9KSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9KSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938BtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbXCJudGhcIl0gPSBFeHByLnBzZXVkb3NbXCJlcVwiXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYgZGlyID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybi
14938BtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGRpciBjYWNoaW5nXG5cdFx0XHRpZiAoIHhtbCApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KTtcblx0XHRcdFx0XHRcdGlmICggKG9sZENhY2hlID0gb3V0ZXJDYWNoZVsgZGlyIF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGVbIGRpciBdID0gbmV3Q2FjaGU7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nXG5cdFx0XHRcdFx0XHRcdGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSA6XG5cdFx0bWF0Y2hlcnNbMF07XG59XG5cbmZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yLCBjb250ZXh0cywgcmVzdWx0cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGNvbnRleHRzLmxlbmd0aDtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRpZiAoIG1hcHBlZCApIHtcblx0XHRcdFx0XHRtYXAucHVzaCggaSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ld1VubWF0Y2hlZDtcbn1cblxuZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkge1xuXHRpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApO1xuXHR9XG5cdGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTtcblx0fVxuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0dmFyIHRlbXAsIGksIGVsZW0sXG5cdFx0XHRwcmVNYXAgPSBbXSxcblx0XHRcdHBvc3RNYXAgPSBbXSxcblx0XHRcdHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsXG5cblx0XHRcdC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0XG5cdFx0XHRlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgXCIqXCIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG
149381hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cyxcblx0XHRcdFx0cG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgP1xuXG5cdFx0XHRcdFx0Ly8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0W10gOlxuXG5cdFx0XHRcdFx0Ly8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5XG5cdFx0XHRcdFx0cmVzdWx0cyA6XG5cdFx0XHRcdG1hdGNoZXJJbjtcblxuXHRcdC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzXG5cdFx0aWYgKCBtYXRjaGVyICkge1xuXHRcdFx0bWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwb3N0RmlsdGVyXG5cdFx0aWYgKCBwb3N0RmlsdGVyICkge1xuXHRcdFx0dGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7XG5cdFx0XHRwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7XG5cblx0XHRcdC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW5cblx0XHRcdGkgPSB0ZW1wLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0c1xuXHRcdFx0XHRcdHRlbXAgPSBbXTtcblx0XHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoXG5cdFx0XHRcdFx0XHRcdHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0gW10pLCB0ZW1wLCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkXG5cdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmXG5cdFx0XHRcdFx0XHQodGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7XG5cblx0XHRcdFx0XHRcdHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBlbGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyT3V0ID0gY29uZGVuc2UoXG5cdFx0XHRcdG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgP1xuXHRcdFx0XHRcdG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6XG5cdFx0XHRcdFx0bWF0Y2hlck91dFxuXHRcdFx0KTtcblx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHtcblx0dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaixcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sXG5cdFx0aW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlW1wiIFwiXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91
14938dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID9cblx0XHRcdFx0XHRtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0XHRtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7XG5cdFx0XHQvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdGNoZWNrQ29udGV4dCA9IG51bGw7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0gXTtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChtYXRjaGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7XG5cdFx0XHRtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlclxuXHRcdFx0aWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZ1xuXHRcdFx0XHRqID0gKytpO1xuXHRcdFx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3Rvcihcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0XHR0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9KVxuXHRcdFx0XHRcdCkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLFxuXHRcdFx0XHRcdG1hdGNoZXIsXG5cdFx0XHRcdFx0aSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXHRcdFx0XHQvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0XG5cdFx0XHRcdGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kW1wiVEFHXCJdKCBcIipcIiwgb3V0ZXJtb3N0ICksXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLFxuXHRcdFx0XHRsZW4gPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCAhPT0gZG9jdW1lbnQgJiYgY29udGV4dDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIEtlZXAgYGlgIGEgc3RyaW5nIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyBzbyBgbWF0Y2hlZENvdW50YCB3aWxsIGJlIFwiMDBcIiBiZWxvd1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50c1xuXHRcdFx0bWF0Y2hlZENvdW50ICs9IGk7XG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgP
14938SBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgbm8gc2VlZCBhbmQgb25seSBvbmUgZ3JvdXBcblx0aWYgKCBtY
14938XRjaC5sZW5ndGggPT09IDEgKSB7XG5cblx0XHQvLyBUYWtlIGEgc2hvcnRjdXQgYW5kIHNldCB0aGUgY29udGV4dCBpZiB0aGUgcm9vdCBzZWxlY3RvciBpcyBhbiBJRFxuXHRcdHRva2VucyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTtcblx0XHRpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICh0b2tlbiA9IHRva2Vuc1swXSkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRcdHN1cHBvcnQuZ2V0QnlJZCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0XHRcdEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFtcIklEXCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLCBmdW5lc2NhcGUpLCBjb250ZXh0ICkgfHwgW10gKVswXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbXCJuZWVkc0NvbnRleHRcIl0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbaV07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoIChzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHRcdFx0XHQpKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKFwiXCIpID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZGl2MSApIHtcblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBkaXYxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpICkgJiAxO1xufSk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0ZGl2LmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0ZGl2LmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZGl2LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IFwiXCI7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVzXG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0cmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xualF1ZXJ5LmV4cHJbXCI6XCJdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5cblxuXG52YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtcblxudmFyIHJzaW5nbGVUYWcgPSAoL148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvKTtcblxuXG5cbnZhciByaXNTaW1wbGUgPSAvXi5bXjojXFxbXFwuLF0qJC87XG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9KTtcblxuXHR9XG5cblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0pO1xuXG5cdH1cblxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0aWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG5cdFx0fVxuXG5cdFx0cXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cyApO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+PSAwICkgIT09IG5vdDtcblx0fSk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRyZXR1cm4gZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgP1xuXHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXSA6XG5cdFx0alF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHRcdH0pKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlcihmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pICk7XG5cdFx0fVxuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHQvLyBOZWVkZWQgYmVjYXVzZSAkKCBzZWxlY3RvciwgY29udGV4dCApIGJlY29tZXMgJCggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yIClcblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggbGVuID4gMSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0ICk7XG5cdFx0cmV0LnNlbGVjdG9yID0gdGh
14938pcy5zZWxlY3RvciA/IHRoaXMuc2VsZWN0b3IgKyBcIiBcIiArIHNlbGVjdG9yIDogc2VsZWN0b3I7XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59KTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0cnF1aWNrRXhwciA9IC9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSopKSQvLFxuXG5cdGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHR2YXIgbWF0Y2gsIGVsZW07XG5cblx0XHQvLyBIQU5ETEU6ICQoXCJcIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSlcblx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbMF0gPT09IFwiPFwiICYmIHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmIHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXHRcdFx0XHQvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVja1xuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcblx0XHRcdGlmICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsxXSApIHtcblx0XHRcdFx0XHRjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbMF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsxXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsxXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkge1xuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQmxhY2tiZXJyeSA0LjZcblx0XHRcdFx0XHQvLyBnRUJJRCByZXR1cm5zIG5vZGVzIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgKCM2OTYzKVxuXHRcdFx0XHRcdGlmICggZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0dGhpc1swXSA9IGVsZW07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHRcdFx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290alF1ZXJ5ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpcy5jb250ZXh0ID0gdGhpc1swXSA9IHNlbGVjdG9yO1xuXHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHQvLyBIQU5ETEU6ICQoZnVuY3Rpb24pXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5XG5cdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XG5cdFx0XHRyZXR1cm4gdHlwZW9mIHJvb3RqUXVlcnkucmVhZHkgIT09IFwidW5kZWZpbmVkXCIgP1xuXHRcdFx0XHRyb290alF1ZXJ5LnJlYWR5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0Ly8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRzZWxlY3RvciggalF1ZXJ5ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3Rvci5zZWxlY3RvciAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yO1xuXHRcdFx0dGhpcy5jb250ZXh0ID0gc2VsZWN0b3IuY29udGV4dDtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTtcblx0fTtcblxuLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IH
14938Byb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvblxuaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47XG5cbi8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2VcbnJvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7XG5cblxudmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxuXHQvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldFxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xuXHRcdGNoaWxkcmVuOiB0cnVlLFxuXHRcdGNvbnRlbnRzOiB0cnVlLFxuXHRcdG5leHQ6IHRydWUsXG5cdFx0cHJldjogdHJ1ZVxuXHR9O1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0ZGlyOiBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IFtdLFxuXHRcdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbWF0Y2hlZDtcblx0fSxcblxuXHRzaWJsaW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdFx0Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHtcblx0XHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlZDtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0Y2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHtcblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRtYXRjaGVkID0gW10sXG5cdFx0XHRwb3MgPSBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApIHx8IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRmb3IgKCBjdXIgPSB0aGlzW2ldOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKHBvcyA/XG5cdFx0XHRcdFx0cG9zLmluZGV4KGN1cikgPiAtMSA6XG5cblx0XHRcdFx0XHQvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGVcblx0XHRcdFx0XHRjdXIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihjdXIsIHNlbGVjdG9ycykpICkge1xuXG5cdFx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZSggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlKFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID9cblx0XHRcdHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoc2VsZWN0b3IpXG5cdFx0KTtcblx0fVxufSk7XG5cbmZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkge1xuXHR3aGlsZSAoIChjdXIgPSBjdXJbZGlyXSkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge31cblx0cmV0dXJuIGN1cjtcbn1cblxualF1ZXJ5LmVhY2goe1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiICk7XG5cdH0sXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybi
14938BqUXVlcnkuZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiwgdW50aWwgKTtcblx0fSxcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5zaWJsaW5nKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuc2libGluZyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgalF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWUoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59KTtcbnZhciBybm90d2hpdGUgPSAoL1xcUysvZyk7XG5cblxuXG4vLyBTdHJpbmcgdG8gT2JqZWN0IG9wdGlvbnMgZm9ybWF0IGNhY2hlXG52YXIgb3B0aW9uc0NhY2hlID0ge307XG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzIGFuZCBzdG9yZSBpbiBjYWNoZVxuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9KTtcblx0cmV0dXJuIG9iamVjdDtcbn1cblxuLypcbiAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICpcbiAqXHRvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93XG4gKlx0XHRcdHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3RcbiAqXG4gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZVxuICogXCJmaXJlZFwiIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFBvc3NpYmxlIG9wdGlvbnM6XG4gKlxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHRtZW1vcnk6XHRcdFx0d2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZFxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxuICpcdFx0XHRcdFx0dmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcbiAqXG4gKlx0c3RvcE9uRmFsc2U6XHRpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2VcbiAqXG4gKi9cbmpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHQvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkXG5cdC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdClcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHQoIG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdIHx8IGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBMYXN0IGZpcmUgdmFsdWUgKGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMpXG5cdFx0bWVtb3J5LFxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXG5cdFx0ZmlyZWQsXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblx0XHQvLyBGaXJzdCBjYWxsYmFjayB0byBmaXJlICh1c2VkIGludGVybmFsbHkgYnkgYWRkIGFuZCBmaXJlV2l0aClcblx0XHRmaXJpbmdTdGFydCxcblx0XHQvLyBFbmQgb2YgdGhlIGxvb3Agd2hlbiBmaXJpbmdcblx0XHRmaXJpbmdMZW5ndGgsXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgcmVtb3ZlIGlmIG5lZWRlZClcblx0XHRmaXJpbmdJbmRleCxcblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblx0XHQvLyBTdGFjayBvZiBmaXJlIGNhbGxzIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0c3RhY2sgPSAhb3B0aW9ucy5vbmNlICYmIFtdLFxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHRcdFx0bWVtb3J5ID0gb3B0aW9ucy5tZW1vcnkgJiYgZGF0YTtcblx0XHRcdGZpcmVkID0gdHJ1ZTtcblx0XHRcdGZpcmluZ0luZGV4ID0gZmlyaW5nU3RhcnQgfHwgMDtcblx0XHRcdGZpcmluZ1N0YXJ0ID0gMDtcblx0XHRcdGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0ZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgbGlzdCAmJiBmaXJpbmdJbmRleCA8IGZpcmluZ0xlbmd0aDsgZmlyaW5nSW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBkYXRhWyAwIF0sIGRhdGFbIDEgXSApID09PSBmYWxzZSAmJiBvcHRpb25zLnN0b3BPbkZhbHNlICkge1xuXHRcdFx0XHRcdG1lbW9yeSA9IGZ
14938hbHNlOyAvLyBUbyBwcmV2ZW50IGZ1cnRoZXIgY2FsbHMgdXNpbmcgYWRkXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRpZiAoIHN0YWNrICkge1xuXHRcdFx0XHRcdGlmICggc3RhY2subGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0ZmlyZSggc3RhY2suc2hpZnQoKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLmRpc2FibGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3Rcblx0XHRzZWxmID0ge1xuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdC8vIEZpcnN0LCB3ZSBzYXZlIHRoZSBjdXJyZW50IGxlbmd0aFxuXHRcdFx0XHRcdHZhciBzdGFydCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdChmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHR5cGUgPSBqUXVlcnkudHlwZSggYXJnICk7XG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSkoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdC8vIERvIHdlIG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFja3MgdG8gdGhlXG5cdFx0XHRcdFx0Ly8gY3VycmVudCBmaXJpbmcgYmF0Y2g/XG5cdFx0XHRcdFx0aWYgKCBmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHQvLyBXaXRoIG1lbW9yeSwgaWYgd2UncmUgbm90IGZpcmluZyB0aGVuXG5cdFx0XHRcdFx0Ly8gd2Ugc2hvdWxkIGNhbGwgcmlnaHQgYXdheVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRcdGZpcmluZ1N0YXJ0ID0gc3RhcnQ7XG5cdFx0XHRcdFx0XHRmaXJlKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0XHRpZiAoIGZpcmluZyApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0xlbmd0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZpcmluZ0xlbmd0aC0tO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID8galF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6ICEhKCBsaXN0ICYmIGxpc3QubGVuZ3RoICk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdFxuXHRcdFx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdGZpcmluZ0xlbmd0aCA9IDA7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIEhhdmUgdGhlIGxpc3QgZG8gbm90aGluZyBhbnltb3JlXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bGlzdCA9IHN0YWNrID0gbWVtb3J5ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBJcyBpdCBkaXNhYmxlZD9cblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblx0XHRcdC8vIExvY2sgdGhlIGxpc3QgaW4gaXRzIGN1cnJlbnQgc3RhdGVcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzdGFjayA9IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICkge1xuXHRcdFx0XHRcdHNlbGYuZGlzYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIElzIGl0IGxvY2tlZD9cblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhc3RhY2s7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoIGxpc3QgJiYgKCAhZmlyZWQgfHwgc3RhY2sgKSApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0c3RhY2sucHVzaCggYXJncyApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRmaXJlKCBhcmdzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRcdFx0ZmlyZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdHJldHVybiBzZWxmO1xufTtcblxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblx0XHRcdFx0Ly8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGxpc3RlbmVyIGxpc3QsIGZpbmFsIHN0YXRlXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksIFwicmVzb2x2ZWRcIiBdLFxuXHRcdFx0XHRbIFwicmVqZWN0XCIsIFwiZmFpbFwiLCBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksIFwicmVqZWN0ZWRcIiBdLFxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyhcIm1lbW9yeVwiKSBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHtcblx0XHRcdFx0XHR2YXIgZm5zID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBqUXVlcnkuaXNGdW5jdGlvbiggZm5zWyBpIF0gKSAmJiBmbnNbIGkgXTtcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWRbIGRvbmUgfCBmYWlsIHwgcHJvZ3Jlc3MgXSBmb3IgZm9yd2FyZGluZyBhY3Rpb25zIHRvIG5ld0RlZmVyXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsxXSBdKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBwcm9taXNlID8gbmV3RGVmZXIucHJvbWlzZSgpIDogdGhpcywgZm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0pLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZFxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XG5cdFx0XHRcdHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcblxuXHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRwcm9taXNlLnBpcGUgPSBwcm9taXNlLnRoZW47XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyAzIF07XG5cblx0XHRcdC8vIHByb21pc2VbIGRvbmUgfCBmYWlsIHwgcHJvZ3Jlc3MgXSA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsxXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0Ly8gc3RhdGUgPSBbIHJlc29sdmVkIHwgcmVqZWN0ZWQgXVxuXHRcdFx0XHRcdHN0YXRlID0gc3RhdGVTdHJpbmc7XG5cblx0XHRcdFx0Ly8gWyByZWplY3RfbGlzdCB8IHJlc29sdmVfbGlzdCBdLmRpc2FibGU7IHByb2dyZXNzX2xpc3QubG9ja1xuXHRcdFx0XHR9LCB0dXBsZXNbIGkgXiAxIF1bIDIgXS5kaXNhYmxlLCB0dXBsZXNbIDIgXVsgMiBdLmxvY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gZGVmZXJyZWRbIHJlc29sdmUgfCByZWplY3QgfCBub3RpZnkgXVxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdICsgXCJXaXRoXCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyBwcm9taXNlIDogdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fTtcblx0XHRcdGRlZmVycmVkWyB0dXBsZVswXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0pO1xuXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXG5cdFx0cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApO1xuXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxuXHRcdGlmICggZnVuYyApIHtcblx0XHRcdGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGRvbmUhXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xuXHR9LFxuXG5cdC8vIERlZmVycmVkIGhlbHBlclxuXHR3aGVuOiBmdW5jdGlvbiggc3Vib3JkaW5hdGUgLyogLCAuLi4sIHN1Ym9yZGluYX
14938RlTiAqLyApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cdFx0XHRsZW5ndGggPSByZXNvbHZlVmFsdWVzLmxlbmd0aCxcblxuXHRcdFx0Ly8gdGhlIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlc1xuXHRcdFx0cmVtYWluaW5nID0gbGVuZ3RoICE9PSAxIHx8ICggc3Vib3JkaW5hdGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHN1Ym9yZGluYXRlLnByb21pc2UgKSApID8gbGVuZ3RoIDogMCxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZC4gSWYgcmVzb2x2ZVZhbHVlcyBjb25zaXN0IG9mIG9ubHkgYSBzaW5nbGUgRGVmZXJyZWQsIGp1c3QgdXNlIHRoYXQuXG5cdFx0XHRkZWZlcnJlZCA9IHJlbWFpbmluZyA9PT0gMSA/IHN1Ym9yZGluYXRlIDogalF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIFVwZGF0ZSBmdW5jdGlvbiBmb3IgYm90aCByZXNvbHZlIGFuZCBwcm9ncmVzcyB2YWx1ZXNcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSwgY29udGV4dHMsIHZhbHVlcyApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRjb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHR2YWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoIHZhbHVlcyA9PT0gcHJvZ3Jlc3NWYWx1ZXMgKSB7XG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblxuXHRcdFx0cHJvZ3Jlc3NWYWx1ZXMsIHByb2dyZXNzQ29udGV4dHMsIHJlc29sdmVDb250ZXh0cztcblxuXHRcdC8vIEFkZCBsaXN0ZW5lcnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWRcblx0XHRpZiAoIGxlbmd0aCA+IDEgKSB7XG5cdFx0XHRwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0LmRvbmUoIHVwZGF0ZUZ1bmMoIGksIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApIClcblx0XHRcdFx0XHRcdC5mYWlsKCBkZWZlcnJlZC5yZWplY3QgKVxuXHRcdFx0XHRcdFx0LnByb2dyZXNzKCB1cGRhdGVGdW5jKCBpLCBwcm9ncmVzc0NvbnRleHRzLCBwcm9ncmVzc1ZhbHVlcyApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LS1yZW1haW5pbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB3ZSdyZSBub3Qgd2FpdGluZyBvbiBhbnl0aGluZywgcmVzb2x2ZSB0aGUgbWFzdGVyXG5cdFx0aWYgKCAhcmVtYWluaW5nICkge1xuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkZWZlcnJlZC5wcm9taXNlKCk7XG5cdH1cbn0pO1xuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdDtcblxualF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkge1xuXHQvLyBBZGQgdGhlIGNhbGxiYWNrXG5cdGpRdWVyeS5yZWFkeS5wcm9taXNlKCkuZG9uZSggZm4gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoe1xuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIb2xkIChvciByZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnRcblx0aG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHtcblx0XHRpZiAoIGhvbGQgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpRdWVyeS5yZWFkeSggdHJ1ZSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cblx0XHQvLyBUcmlnZ2VyIGFueSBib3VuZCByZWFkeSBldmVudHNcblx0XHRpZiAoIGpRdWVyeS5mbi50cmlnZ2VySGFuZGxlciApIHtcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS50cmlnZ2VySGFuZGxlciggXCJyZWFkeVwiICk7XG5cdFx0XHRqUXVlcnkoIGRvY3VtZW50ICkub2ZmKCBcInJlYWR5XCIgKTtcblx0XHR9XG5cdH1cbn0pO1xuXG4vKipcbiAqIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXG4gKi9cbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9h
14938ZFwiLCBjb21wbGV0ZWQsIGZhbHNlICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG5qUXVlcnkucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cdGlmICggIXJlYWR5TGlzdCApIHtcblxuXHRcdHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5cdFx0Ly8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG5cdFx0Ly8gV2Ugb25jZSB0cmllZCB0byB1c2UgcmVhZHlTdGF0ZSBcImludGVyYWN0aXZlXCIgaGVyZSwgYnV0IGl0IGNhdXNlZCBpc3N1ZXMgbGlrZSB0aGUgb25lXG5cdFx0Ly8gZGlzY292ZXJlZCBieSBDaHJpc1MgaGVyZTogaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNVxuXHRcdGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiICkge1xuXHRcdFx0Ly8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5XG5cdFx0XHRzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQsIGZhbHNlICk7XG5cblx0XHRcdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlYWR5TGlzdC5wcm9taXNlKCBvYmogKTtcbn07XG5cbi8vIEtpY2sgb2ZmIHRoZSBET00gcmVhZHkgY2hlY2sgZXZlbiBpZiB0aGUgdXNlciBkb2VzIG5vdFxualF1ZXJ5LnJlYWR5LnByb21pc2UoKTtcblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBqUXVlcnkuYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRqUXVlcnkuYWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVtpXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApO1xuXHRcdH1cblxuXHQvLyBTZXRzIG9uZSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoICFqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oIGVsZW1zW2ldLCBrZXksIHJhdyA/IHZhbHVlIDogdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjaGFpbmFibGUgP1xuXHRcdGVsZW1zIDpcblxuXHRcdC8vIEdldHNcblx0XHRidWxrID9cblx0XHRcdGZuLmNhbGwoIGVsZW1zICkgOlxuXHRcdFx0bGVuID8gZm4oIGVsZW1zWzBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcblxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhbiBvYmplY3QgY2FuIGhhdmUgZGF0YVxuICovXG5qUXVlcnkuYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdC8qIGpzaGludCAtVzAxOCAqL1xuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cbmZ1bmN0aW9uIERhdGEoKSB7XG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NCxcblx0Ly8gT2xkIFdlYktpdCBkb2VzIG5vdCBoYXZlIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucy9mcmVlemUgbWV0aG9kLFxuXHQvLyByZXR1cm4gbmV3IGVtcHR5IG9iamVjdCBpbnN0ZWFkIHdpdGggbm8gW1tzZXRdXSBhY2Nlc3NvclxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMuY2FjaGUgPSB7fSwgMCwge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fVxuXHR9KTtcblxuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcbkRhdGEuYWNjZXB0cyA9IGpRdWVyeS5hY2NlcHREYXRhO1xuXG5EYXRhLnByb3RvdHlwZSA9IHtcblx0a2V5OiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHQvLyBBbHdheXMgcmV0dXJuIHRoZSBrZXkgZm9yIGEgZnJvemVuIG9iamVjdC5cblx0XHRpZiAoICFEYXRhLmFjY2VwdHMoIG93bmVyICkgKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgZGVzY3JpcHRvciA9IHt9LFxuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlIGtleVxuXHRcdFx0dW5sb2NrID0gb3duZXJbI
14938HRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0Ly8gSWYgbm90LCBjcmVhdGUgb25lXG5cdFx0aWYgKCAhdW5sb2NrICkge1xuXHRcdFx0dW5sb2NrID0gRGF0YS51aWQrKztcblxuXHRcdFx0Ly8gU2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUsIG5vbi13cml0YWJsZSBwcm9wZXJ0eVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGVzY3JpcHRvclsgdGhpcy5leHBhbmRvIF0gPSB7IHZhbHVlOiB1bmxvY2sgfTtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIG93bmVyLCBkZXNjcmlwdG9yICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NFxuXHRcdFx0Ly8gRmFsbGJhY2sgdG8gYSBsZXNzIHNlY3VyZSBkZWZpbml0aW9uXG5cdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0ZGVzY3JpcHRvclsgdGhpcy5leHBhbmRvIF0gPSB1bmxvY2s7XG5cdFx0XHRcdGpRdWVyeS5leHRlbmQoIG93bmVyLCBkZXNjcmlwdG9yICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRpZiAoICF0aGlzLmNhY2hlWyB1bmxvY2sgXSApIHtcblx0XHRcdHRoaXMuY2FjaGVbIHVubG9jayBdID0ge307XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVubG9jaztcblx0fSxcblx0c2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkge1xuXHRcdHZhciBwcm9wLFxuXHRcdFx0Ly8gVGhlcmUgbWF5IGJlIGFuIHVubG9jayBhc3NpZ25lZCB0byB0aGlzIG5vZGUsXG5cdFx0XHQvLyBpZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgdGhpcyBcIm93bmVyXCIsIGNyZWF0ZSBvbmUgaW5saW5lXG5cdFx0XHQvLyBhbmQgc2V0IHRoZSB1bmxvY2sgYXMgdGhvdWdoIGFuIG93bmVyIGVudHJ5IGhhZCBhbHdheXMgZXhpc3RlZFxuXHRcdFx0dW5sb2NrID0gdGhpcy5rZXkoIG93bmVyICksXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGVbIHVubG9jayBdO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJnc1xuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgZGF0YSBdID0gdmFsdWU7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJnc1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBGcmVzaCBhc3NpZ25tZW50cyBieSBvYmplY3QgYXJlIHNoYWxsb3cgY29waWVkXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXHRcdFx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLmNhY2hlWyB1bmxvY2sgXSwgZGF0YSApO1xuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGNhY2hlWyBwcm9wIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdC8vIEVpdGhlciBhIHZhbGlkIGNhY2hlIGlzIGZvdW5kLCBvciB3aWxsIGJlIGNyZWF0ZWQuXG5cdFx0Ly8gTmV3IGNhY2hlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZSB1bmxvY2sgcmV0dXJuZWQsXG5cdFx0Ly8gYWxsb3dpbmcgZGlyZWN0IGFjY2VzcyB0byB0aGUgbmV3bHkgY3JlYXRlZFxuXHRcdC8vIGVtcHR5IGRhdGEgb2JqZWN0LiBBIHZhbGlkIG93bmVyIG9iamVjdCBtdXN0IGJlIHByb3ZpZGVkLlxuXHRcdHZhciBjYWNoZSA9IHRoaXMuY2FjaGVbIHRoaXMua2V5KCBvd25lciApIF07XG5cblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0Y2FjaGUgOiBjYWNoZVsga2V5IF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBzdG9yZWQ7XG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KChrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIikgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgKSB7XG5cblx0XHRcdHN0b3JlZCA9IHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cblx0XHRcdHJldHVybiBzdG9yZWQgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHN0b3JlZCA6IHRoaXMuZ2V0KCBvd25lciwgalF1ZXJ5LmNhbWVsQ2FzZShrZXkpICk7XG5cdFx0fVxuXG5cdFx0Ly8gWypdV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLCBuYW1lLCBjYW1lbCxcblx0XHRcdHVubG9jayA9IHRoaXMua2V5KCBvd25lciApLFxuXHRcdFx0Y2FjaGUgPSB0aGlzLmNhY2hlWyB1bmxvY2sgXTtcblxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLmNhY2hlWyB1bmxvY2sgXSA9IHt9O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF
149385KCBrZXkgKSApIHtcblx0XHRcdFx0Ly8gSWYgXCJuYW1lXCIgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXaGVuIGRhdGEgaXMgaW5pdGlhbGx5IGNyZWF0ZWQsIHZpYSAoXCJrZXlcIiwgXCJ2YWxcIikgc2lnbmF0dXJlLFxuXHRcdFx0XHQvLyBrZXlzIHdpbGwgYmUgY29udmVydGVkIHRvIGNhbWVsQ2FzZS5cblx0XHRcdFx0Ly8gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgX2hvd18gYSBrZXkgd2FzIGFkZGVkLCByZW1vdmVcblx0XHRcdFx0Ly8gYm90aCBwbGFpbiBrZXkgYW5kIGNhbWVsQ2FzZSBrZXkuICMxMjc4NlxuXHRcdFx0XHQvLyBUaGlzIHdpbGwgb25seSBwZW5hbGl6ZSB0aGUgYXJyYXkgYXJndW1lbnQgcGF0aC5cblx0XHRcdFx0bmFtZSA9IGtleS5jb25jYXQoIGtleS5tYXAoIGpRdWVyeS5jYW1lbENhc2UgKSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2FtZWwgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTtcblx0XHRcdFx0Ly8gVHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBtYW5pcHVsYXRpb25cblx0XHRcdFx0aWYgKCBrZXkgaW4gY2FjaGUgKSB7XG5cdFx0XHRcdFx0bmFtZSA9IFsga2V5LCBjYW1lbCBdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC5cblx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRcdG5hbWUgPSBjYW1lbDtcblx0XHRcdFx0XHRuYW1lID0gbmFtZSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0XHRbIG5hbWUgXSA6ICggbmFtZS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW10gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpID0gbmFtZS5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBuYW1lWyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHRyZXR1cm4gIWpRdWVyeS5pc0VtcHR5T2JqZWN0KFxuXHRcdFx0dGhpcy5jYWNoZVsgb3duZXJbIHRoaXMuZXhwYW5kbyBdIF0gfHwge31cblx0XHQpO1xuXHR9LFxuXHRkaXNjYXJkOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0aWYgKCBvd25lclsgdGhpcy5leHBhbmRvIF0gKSB7XG5cdFx0XHRkZWxldGUgdGhpcy5jYWNoZVsgb3duZXJbIHRoaXMuZXhwYW5kbyBdIF07XG5cdFx0fVxuXHR9XG59O1xudmFyIGRhdGFfcHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhX3VzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gLyhbQS1aXSkvZztcblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQxXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhID09PSBcInRydWVcIiA/IHRydWUgOlxuXHRcdFx0XHRcdGRhdGEgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDpcblx0XHRcdFx0XHRkYXRhID09PSBcIm51bGxcIiA/IG51bGwgOlxuXHRcdFx0XHRcdC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nXG5cdFx0XHRcdFx0K2RhdGEgKyBcIlwiID09PSBkYXRhID8gK2RhdGEgOlxuXHRcdFx0XHRcdHJicmFjZS50ZXN0KCBkYXRhICkgPyBqUXVlcnkucGFyc2VKU09OKCBkYXRhICkgOlxuXHRcdFx0XHRcdGRhdGE7XG5cdFx0XHR9IGNhdGNoKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhX3VzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YV91c2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhX3ByaXYuaGFzRGF0YSggZWxlbSApO1xuXHR9LFxuXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhX3VzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbW
14938UgKSB7XG5cdFx0ZGF0YV91c2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFfcHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC5cblx0X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFfcHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaSwgbmFtZSwgZGF0YSxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRhdHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzO1xuXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdGhpcy5sZW5ndGggKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhX3ByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUxMStcblx0XHRcdFx0XHRcdC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAoIzE0ODk0KVxuXHRcdFx0XHRcdFx0aWYgKCBhdHRyc1sgaSBdICkge1xuXHRcdFx0XHRcdFx0XHRuYW1lID0gYXR0cnNbIGkgXS5uYW1lO1xuXHRcdFx0XHRcdFx0XHRpZiAoIG5hbWUuaW5kZXhPZiggXCJkYXRhLVwiICkgPT09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUuc2xpY2UoNSkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YV91c2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YSxcblx0XHRcdFx0Y2FtZWxLZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIHdpdGggdGhlIGtleSBhcy1pc1xuXHRcdFx0XHRkYXRhID0gZGF0YV91c2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyB3aXRoIHRoZSBrZXkgY2FtZWxpemVkXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtLCBjYW1lbEtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBjYW1lbEtleSwgdW5kZWZpbmVkICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBGaXJzdCwgYXR0ZW1wdCB0byBzdG9yZSBhIGNvcHkgb3IgcmVmZXJlbmNlIG9mIGFueVxuXHRcdFx0XHQvLyBkYXRhIHRoYXQgbWlnaHQndmUgYmVlbiBzdG9yZSB3aXRoIGEgY2FtZWxDYXNlZCBrZXkuXG5cdFx0XHRcdHZhciBkYXRhID0gZGF0YV91c2VyLmdldCggdGhpcywgY2FtZWxLZXkgKTtcblxuXHRcdFx0XHQvLyBGb3IgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZSBpbnRlcm9wLCB3ZSBoYXZlIHRvXG5cdFx0XHRcdC8vIHN0b3JlIHByb3BlcnR5IG5hbWVzIHdpdGggZGFzaGVzIGluIGEgY2FtZWxDYXNlIGZvcm0uXG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgbm90IGFwcGx5IHRvIGFsbCBwcm9wZXJ0aWVzLi4uKlxuXHRcdFx0XHRkYXRhX3VzZXIuc2V0KCB0aGlzLCBjYW1lbEtleSwgdmFsdWUgKTtcblxuXHRcdFx0XHQvLyAqLi4uIEluIHRoZSBjYXNlIG9mIHByb3BlcnRpZXMgdGhhdCBtaWdodCBfYWN0dWFsbHlfXG5cdFx0XHRcdC8vIGhhdmUgZGFzaGVzLCB3ZSBuZWVkIHRvIGFsc28gc3RvcmUgYSBjb3B5IG9mIHRoYXRcblx0XHRcdFx0Ly8gdW5jaGFuZ2VkIHByb3BlcnR5LlxuXHRcdFx0XHRpZiAoIGtleS5pbmRleE9mKFwiLVwiKSAhPT0gLTEgJiYgZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGRhdGFfdXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YV91c2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5leHRlbmQoe1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YV9wcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF
149385KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KGRhdGEpICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFfcHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKS5hZGQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFfcHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0pXG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVswXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0pO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YV9wcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSk7XG52YXIgcG51bSA9ICgvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLykuc291cmNlO1xuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBpc0hpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblx0XHQvLyBpc0hpZGRlbiBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXHRcdHJldHVybi
14938BqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIiB8fCAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblx0fTtcblxudmFyIHJjaGVja2FibGVUeXBlID0gKC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pKTtcblxuXG5cbihmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaTw9NS4xXG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBTYWZhcmk8PTUuMSwgQW5kcm9pZDw0LjJcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRTw9MTErXG5cdC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkXG5cdGRpdi5pbm5lckhUTUwgPSBcIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT5cIjtcblx0c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7XG59KSgpO1xudmFyIHN0cnVuZGVmaW5lZCA9IHR5cGVvZiB1bmRlZmluZWQ7XG5cblxuXG5zdXBwb3J0LmZvY3VzaW5CdWJibGVzID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxudmFyXG5cdHJrZXlFdmVudCA9IC9ea2V5Lyxcblx0cm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLyxcblx0cmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpJC87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG4vKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy5cbiAqL1xualF1ZXJ5LmV2ZW50ID0ge1xuXG5cdGdsb2JhbDoge30sXG5cblx0YWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkge1xuXG5cdFx0dmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCAhKGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRcdC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kXG5cdFx0XHRcdC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWRcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IHN0cnVuZGVmaW5lZCAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHd
14938oaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oXCIuXCIpXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0pICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlLCBmYWxzZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZF
14938R5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFfcHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YV9wcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgIShldmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbMl0gJiYgbmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbihcIlxcXFwuKD86LipcXFxcLnwpXCIpICsgXCIoXFxcXC58JClcIiApO1xuXG5cdFx0XHQvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzXG5cdFx0XHRvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07XG5cblx0XHRcdFx0aWYgKCAoIG1hcHBlZF
14938R5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJlxuXHRcdFx0XHRcdCggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmXG5cdFx0XHRcdFx0KCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxuXHRcdFx0XHRcdCggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fCBzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkZWxldGUgZWxlbURhdGEuaGFuZGxlO1xuXHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgXCJldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHtcblxuXHRcdHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoXCIuXCIpIDogW107XG5cblx0XHRjdXIgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKFwiLlwiKSA+PSAwICkge1xuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxuXHRcdFx0bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoXCIuXCIpO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoXCI6XCIpIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oXCIuXCIpO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZV9yZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikgKyBcIihcXFxcLnwkKVwiICkgOlxuXHRcdFx0bnVsbDtcblxuXHRcdC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZFxuXHRcdGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBlbGVtO1xuXHRcdH1cblxuXHRcdC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3Rcblx0XHRkYXRhID0gZGF0YSA9PSBudWxsID9cblx0XHRcdFsgZXZlbnQgXSA6XG5cdFx0XHRqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTtcblxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcblx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgZXZlbnQgcHJv
14938cGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSlcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGhcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoIChjdXIgPSBldmVudFBhdGhbaSsrXSkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFfcHJpdi5nZXQoIGN1ciwgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJiBkYXRhX3ByaXYuZ2V0KCBjdXIsIFwiaGFuZGxlXCIgKTtcblx0XHRcdGlmICggaGFuZGxlICkge1xuXHRcdFx0XHRoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOYXRpdmUgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07XG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICghc3BlY2lhbC5fZGVmYXVsdCB8fCBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UpICYmXG5cdFx0XHRcdGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cblx0XHRcdFx0Ly8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0ZGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxuXHRcdGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaixcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTtcblxuXHRcdC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50XG5cdFx0YXJnc1swXSA9IGV2ZW50O1xuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHd
14938oaWxlICggKG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XG5cblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0pICYmICFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50Lm5hbWVzcGFjZV9yZSB8fCBldmVudC5uYW1lc3BhY2VfcmUudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSkuaGFuZGxlIHx8IGhhbmRsZU9iai5oYW5kbGVyIClcblx0XHRcdFx0XHRcdFx0LmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChldmVudC5yZXN1bHQgPSByZXQpID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIG1hdGNoZXMsIHNlbCwgaGFuZGxlT2JqLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcblx0XHRcdGN1ciA9IGV2ZW50LnRhcmdldDtcblxuXHRcdC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnNcblx0XHQvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAoIzEzMTgwKVxuXHRcdC8vIEF2b2lkIG5vbi1sZWZ0LWNsaWNrIGJ1YmJsaW5nIGluIEZpcmVmb3ggKCMzODYxKVxuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJiBjdXIubm9kZVR5cGUgJiYgKCFldmVudC5idXR0b24gfHwgZXZlbnQudHlwZSAhPT0gXCJjbGlja1wiKSApIHtcblxuXHRcdFx0Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpXG5cdFx0XHRcdGlmICggY3VyLmRpc2FibGVkICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09IFwiY2xpY2tcIiApIHtcblx0XHRcdFx0XHRtYXRjaGVzID0gW107XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdO1xuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKVxuXHRcdFx0XHRcdFx0c2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgXCIgXCI7XG5cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID9cblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+PSAwIDpcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVzWyBzZWwgXSApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiB0aGlzLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdC8vIEluY2x1ZGVzIHNvbWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50XG5cdHByb3BzOiBcImFsdEtleSBidWJibGVzIGNhbmNlbGFibG
14938UgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaFwiLnNwbGl0KFwiIFwiKSxcblxuXHRmaXhIb29rczoge30sXG5cblx0a2V5SG9va3M6IHtcblx0XHRwcm9wczogXCJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlXCIuc3BsaXQoXCIgXCIpLFxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcblxuXHRcdFx0Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzXG5cdFx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7XG5cdFx0XHRcdGV2ZW50LndoaWNoID0gb3JpZ2luYWwuY2hhckNvZGUgIT0gbnVsbCA/IG9yaWdpbmFsLmNoYXJDb2RlIDogb3JpZ2luYWwua2V5Q29kZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV2ZW50O1xuXHRcdH1cblx0fSxcblxuXHRtb3VzZUhvb2tzOiB7XG5cdFx0cHJvcHM6IFwiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50XCIuc3BsaXQoXCIgXCIpLFxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcblx0XHRcdHZhciBldmVudERvYywgZG9jLCBib2R5LFxuXHRcdFx0XHRidXR0b24gPSBvcmlnaW5hbC5idXR0b247XG5cblx0XHRcdC8vIENhbGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgvWSBhdmFpbGFibGVcblx0XHRcdGlmICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBvcmlnaW5hbC5jbGllbnRYICE9IG51bGwgKSB7XG5cdFx0XHRcdGV2ZW50RG9jID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG5cdFx0XHRcdGRvYyA9IGV2ZW50RG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHRcdFx0Ym9keSA9IGV2ZW50RG9jLmJvZHk7XG5cblx0XHRcdFx0ZXZlbnQucGFnZVggPSBvcmlnaW5hbC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExlZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBib2R5LmNsaWVudExlZnQgfHwgMCApO1xuXHRcdFx0XHRldmVudC5wYWdlWSA9IG9yaWdpbmFsLmNsaWVudFkgKyAoIGRvYyAmJiBkb2Muc2Nyb2xsVG9wICB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wICB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50VG9wICB8fCBib2R5ICYmIGJvZHkuY2xpZW50VG9wICB8fCAwICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRcdC8vIE5vdGU6IGJ1dHRvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3QgdXNlIGl0XG5cdFx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSAoIGJ1dHRvbiAmIDEgPyAxIDogKCBidXR0b24gJiAyID8gMyA6ICggYnV0dG9uICYgNCA/IDIgOiAwICkgKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gKSB7XG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQgb2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzXG5cdFx0dmFyIGksIHByb3AsIGNvcHksXG5cdFx0XHR0eXBlID0gZXZlbnQudHlwZSxcblx0XHRcdG9yaWdpbmFsRXZlbnQgPSBldmVudCxcblx0XHRcdGZpeEhvb2sgPSB0aGlzLmZpeEhvb2tzWyB0eXBlIF07XG5cblx0XHRpZiAoICFmaXhIb29rICkge1xuXHRcdFx0dGhpcy5maXhIb29rc1sgdHlwZSBdID0gZml4SG9vayA9XG5cdFx0XHRcdHJtb3VzZUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMubW91c2VIb29rcyA6XG5cdFx0XHRcdHJrZXlFdmVudC50ZXN0KCB0eXBlICkgPyB0aGlzLmtleUhvb2tzIDpcblx0XHRcdFx0e307XG5cdFx0fVxuXHRcdGNvcHkgPSBmaXhIb29rLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQoIGZpeEhvb2sucHJvcHMgKSA6IHRoaXMucHJvcHM7XG5cblx0XHRldmVudCA9IG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcblxuXHRcdGkgPSBjb3B5Lmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHByb3AgPSBjb3B5WyBpIF07XG5cdFx0XHRldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsgcHJvcCBdO1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IENvcmRvdmEgMi41IChXZWJLaXQpICgjMTMyNTUpXG5cdFx0Ly8gQWxsIGV2ZW50cyBzaG91bGQgaGF2ZSBhIHRhcmdldDsgQ29yZG92YSBkZXZpY2VyZWFkeSBkb2Vzbid0XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZG9jdW1lbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDYuMCssIENocm9tZTwyOFxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0aWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUgPT09IDMgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBldmVudC50YXJnZXQucGFyZW50Tm9kZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZml4SG9vay5maWx0ZXIgPyBmaXhIb29rLmZpbHRlciggZXZlbnQsIG9yaWdpbmFsRXZlbnQgKSA6IGV2ZW50O1xuXHR9LFxuXG5cdHNwZWNpYWw6IHtcblx0XHRsb2FkOiB7XG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Zm9jdXM6IHtcblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJi
14938B0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblx0XHRcdC8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwiY2hlY2tib3hcIiAmJiB0aGlzLmNsaWNrICYmIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dGhpcy5jbGljaygpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50LCBidWJibGUgKSB7XG5cdFx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLlxuXHRcdC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZVxuXHRcdC8vIHNpbXVsYXRlZCBldmVudCBwcmV2ZW50cyBkZWZhdWx0IHRoZW4gd2UgZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9yLlxuXHRcdHZhciBlID0galF1ZXJ5LmV4dGVuZChcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoKSxcblx0XHRcdGV2ZW50LFxuXHRcdFx0e1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRpc1NpbXVsYXRlZDogdHJ1ZSxcblx0XHRcdFx0b3JpZ2luYWxFdmVudDoge31cblx0XHRcdH1cblx0XHQpO1xuXHRcdGlmICggYnViYmxlICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUgKTtcblx0XHR9XG5cdFx0aWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlLCBmYWxzZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISh0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50KSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wXG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHQvLyBFdmVudCB0eXBlXG5cdH0gZWxzZSB7XG5cdFx0dGhpcy50eXBlID0gc3JjO1xuXHR9XG5cblx0Ly8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3Rcblx0aWYgKCBwcm9wcyApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblx0dGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLF
14938xuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnN0b3BQcm9wYWdhdGlvbiApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gU3VwcG9ydDogQ2hyb21lIDE1K1xualF1ZXJ5LmVhY2goe1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC5cblx0XHRcdC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93XG5cdFx0XHRpZiAoICFyZWxhdGVkIHx8IChyZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkpICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBGaXJlZm94LCBDaHJvbWUsIFNhZmFyaVxuLy8gQ3JlYXRlIFwiYnViYmxpbmdcIiBmb2N1cyBhbmQgYmx1ciBldmVudHNcbmlmICggIXN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7XG5cdGpRdWVyeS5lYWNoKHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblxuXHRcdC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0XG5cdFx0dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICksIHRydWUgKTtcblx0XHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFfcHJpdi5yZW1vdmUoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0pO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIC8qSU5URVJOQUwqLyBvbmUgKSB7XG5cdFx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHRcdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhIClcblx0XHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub24oIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdH1cblxuXHRcdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cdFx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcblx0XHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gKCB0eXBlcywgZGF0YSwgZm4gKVxuXHRcdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRcdG9yaWdGbiA9IGZuO1xuXHRcdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0fTtcblx0XHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdFx0fSk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/IGhhbmRsZU9iai5vcmlnVHlwZSArIFwiLlwiICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6IGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0XHRcdC8vICggdHlwZXMgWywgZm5dIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0pO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWzBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSk7XG5cblxudmFyXG5cdHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcXHc6XSspW14+XSopXFwvPi9naSxcblx0cnRhZ05hbWUgPSAvPChbXFx3Ol0rKS8sXG5cdHJodG1sID0gLzx8JiM/XFx3KzsvLFxuXHRybm9Jbm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLFxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyc2NyaXB0VHlwZSA9IC9eJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksXG5cdHJzY3JpcHRUeXBlTWFza2VkID0gL150cnVlXFwvKC4qKS8sXG5cdHJjbGVhblNjcmlwdCA9IC9eXFxzKjwhKD86XFxbQ0RBVEFcXFt8LS0pfCg/OlxcXVxcXXwtLSk+XFxzKiQvZyxcblxuXHQvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxuXHR3cmFwTWFwID0ge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0XHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdFx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0XHR0cjogWyAyLCBcIjx0YWJsZT48dGJvZHk+XCIsIFwiPC90Ym9keT48L3RhYmxlPlwiIF0sXG5cdFx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdFx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG5cdH07XG5cbi8vIFN1cHBvcnQ6IElFOVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cbi8vIFN1cHBvcnQ6IDEueCBjb21wYXRpYmlsaXR5XG4vLyBNYW5pcHVsYXRpbmcgdGFibGVzIHJlcXVpcmVzIGEgdGJvZHlcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0cmV0dXJuIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRqUXVlcnkubm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgXCJ0clwiICkgP1xuXG5cdFx0ZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpWzBdIHx8XG5cdFx0XHRlbGVtLmFwcGVuZENoaWxkKCBlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRib2R5XCIpICkgOlxuXHRcdGVsZW07XG59XG5cbi8vIFJlcGxhY2UvcmVzdG9yZSB0aGUgdHlwZSBhdHRyaWJ1dGUgb2Ygc2NyaXB0IGVsZW1lbnRzIGZvciBzYWZlIERPTSBtYW5pcHVsYXRpb25cbmZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoIGVsZW0gKSB7XG5cdGVsZW0udHlwZSA9IChlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikgIT09IG51bGwpICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybi
14938BlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0dmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYyggZWxlbS50eXBlICk7XG5cblx0aWYgKCBtYXRjaCApIHtcblx0XHRlbGVtLnR5cGUgPSBtYXRjaFsgMSBdO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKFwidHlwZVwiKTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFfcHJpdi5zZXQoXG5cdFx0XHRlbGVtc1sgaSBdLCBcImdsb2JhbEV2YWxcIiwgIXJlZkVsZW1lbnRzIHx8IGRhdGFfcHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFfcHJpdi5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHRwZGF0YU9sZCA9IGRhdGFfcHJpdi5hY2Nlc3MoIHNyYyApO1xuXHRcdHBkYXRhQ3VyID0gZGF0YV9wcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YV91c2VyLmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHVkYXRhT2xkID0gZGF0YV91c2VyLmFjY2Vzcyggc3JjICk7XG5cdFx0dWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTtcblxuXHRcdGRhdGFfdXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cdHZhciByZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICkgOlxuXHRcdFx0Y29udGV4dC5xdWVyeVNlbGVjdG9yQWxsID8gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgXCIqXCIgKSA6XG5cdFx0XHRbXTtcblxuXHRyZXR1cm4gdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgP1xuXHRcdGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApIDpcblx0XHRyZXQ7XG59XG5cbi8vIEZpeCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0c1xuZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHtcblx0dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLlxuXHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHtcblx0XHRkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDtcblxuXHQvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9uc1xuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgKSB7XG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHA6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiB
14938oaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0YnVpbGRGcmFnbWVudDogZnVuY3Rpb24oIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24gKSB7XG5cdFx0dmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFwLCBjb250YWlucywgaixcblx0XHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0XHRub2RlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0ZWxlbSA9IGVsZW1zWyBpIF07XG5cblx0XHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0XHRpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXQsIFBoYW50b21KU1xuXHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHRcdH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XG5cdFx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgKTtcblxuXHRcdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcblx0XHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgZWxlbS5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRcdGogPSB3cmFwWyAwIF07XG5cdFx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFF0V2ViS2l0LCBQaGFudG9tSlNcblx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHRcdC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyXG5cdFx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5Milcblx0XHRcdFx0XHR0bXAudGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRcdGZyYWdtZW50LnRleHRDb250ZW50ID0gXCJcIjtcblxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKGVsZW0gPSBub2Rlc1sgaSsrIF0pICkge1xuXG5cdFx0XHQvLyAjNDA4NyAtIElmIG9yaWdpbiBhbmQgZGVzdGluYXRpb24gZWxlbWVudHMgYXJlIHRoZSBzYW1lLCBhbmQgdGhpcyBpc1xuXHRcdFx0Ly8gdGhhdCBlbGVtZW50LCBkbyBub3QgZG8gYW55dGhpbmdcblx0XHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSAhPT0gLTEgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRcdGogPSAwO1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gdG1wWyBqKysgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZyYWdtZW50O1xuXHR9LFxuXG5cdGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBkYXRhLCBlbGVtLCB0eXBlLCBrZXksXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKGVsZW0gPSBlbGVtc1sgaSBdKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGtleSA9IGVsZW1bIGRhdGFfcHJpdi5leHBhbmRvIF07XG5cblx0XHRcdFx0aWYgKCBrZXkgJiYgKGRhdGEgPSBkYXRhX3ByaXYuY2FjaGVbIGtleSBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0Zm9yICggdHlwZSBpbiBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBkYXRhX3ByaXYuY2FjaGVbIGtleSBdICkge1xuXHRcdFx0XHRcdFx0Ly8gRGlzY2FyZCBhbnkgcmVtYWluaW5nIGBwcml2YXRlYCBkYXRhXG5cdFx0XHRcdFx0XHRkZWxldGUgZGF0YV9wcml2LmNhY2hlWyBrZXkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIERpc2NhcmQgYW55IHJlbWFpbmluZyBgdXNlcmAgZGF0YVxuXHRcdFx0ZGVsZXRlIGRhdGFfdXNlci5jYWNoZVsgZWxlbVsgZGF0YV91c2VyLmV4cGFuZG8gXSBdO1xuXHRcdH1cblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
14938B0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRlbGVtcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIHRoaXMgKSA6IHRoaXMsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCAha2VlcERhdGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtICkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9KTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgYXJnID0gYXJndW1lbnRzWyAwIF07XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHR0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0YXJnID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXG5cdFx0XHRpZiAoIGFyZyApIHtcblx0XHRcdFx0YXJnLnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gRm9yY2UgcmVtb3ZhbCBpZiB0aGVyZSB3YXMgbm8gbmV3IGNvbnRlbnQgKGUuZy4sIGZyb20gZW1wdHkgYXJndW1lbnRzKVxuXHRcdHJldHVybiBhcmcgJiYgKGFyZy5sZW5ndGggfHwgYXJnLm5vZGVUeXBlKSA/IHRoaXMgOiB0aGlzLnJlbW92ZSgpO1xuXHR9LFxuXG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybi
14938B0aGlzLnJlbW92ZSggc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdGFyZ3MgPSBjb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7XG5cblx0XHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHNldCA9IHRoaXMsXG5cdFx0XHRpTm9DbG9uZSA9IGwgLSAxLFxuXHRcdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0XHRpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0XHRpZiAoIGlzRnVuY3Rpb24gfHxcblx0XHRcdFx0KCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0XHQhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGluZGV4ICkge1xuXHRcdFx0XHR2YXIgc2VsZiA9IHNldC5lcSggaW5kZXggKTtcblx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRcdGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGYuZG9tTWFuaXAoIGFyZ3MsIGNhbGxiYWNrICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIGwgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGpRdWVyeS5idWlsZEZyYWdtZW50KCBhcmdzLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIHRoaXMgKTtcblx0XHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBmaXJzdCApIHtcblx0XHRcdFx0c2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsIFwic2NyaXB0XCIgKSwgZGlzYWJsZVNjcmlwdCApO1xuXHRcdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXBcblx0XHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBmcmFnbWVudDtcblxuXHRcdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHRcdC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb25cblx0XHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXRcblx0XHRcdFx0XHRcdFx0Ly8galF1ZXJ5Lm1lcmdlIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93c1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y2FsbGJhY2suY2FsbCggdGhpc1sgaSBdLCBub2Rl
14938LCBpICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cdFx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0XHRqUXVlcnkubWFwKCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0ICk7XG5cblx0XHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0gc2NyaXB0c1sgaSBdO1xuXHRcdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHRcdCFkYXRhX3ByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmIGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLnNyYyApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudFxuXHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5Ll9ldmFsVXJsKCBub2RlLnNyYyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaCh7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFF0V2ViS2l0XG5cdFx0XHQvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzXG5cdFx0XHRwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTtcblx0fTtcbn0pO1xuXG5cbnZhciBpZnJhbWUsXG5cdGVsZW1kaXNwbGF5ID0ge307XG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGFjdHVhbCBkaXNwbGF5IG9mIGEgZWxlbWVudFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgbm9kZU5hbWUgb2YgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkb2MgRG9jdW1lbnQgb2JqZWN0XG4gKi9cbi8vIENhbGxlZCBvbmx5IGZyb20gd2l0aGluIGRlZmF1bHREaXNwbGF5XG5mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KCBuYW1lLCBkb2MgKSB7XG5cdHZhciBzdHlsZSxcblx0XHRlbGVtID0galF1ZXJ5KCBkb2MuY3JlYXRlRWxlbWVudCggbmFtZSApICkuYXBwZW5kVG8oIGRvYy5ib2R5ICksXG5cblx0XHQvLyBnZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSBtaWdodCBiZSByZWxpYWJseSB1c2VkIG9ubHkgb24gYXR0YWNoZWQgZWxlbWVudFxuXHRcdGRpc3BsYXkgPSB3aW5kb3cuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUgJiYgKCBzdHlsZSA9IHdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSggZWxlbVsgMCBdICkgKSA/XG5cblx0XHRcdC8vIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBhIHRlbXBvcmFyeSBmaXggKG1vcmUgbGlrZSBvcHRpbWl6YXRpb24pIHVudGlsIHNvbWV0aGluZyBiZXR0ZXIgY29tZXMgYWxvbmcsXG5cdFx0XHQvLyBzaW5jZSBpdCB3YXMgcmVtb3ZlZCBmcm9tIHNwZWNpZmljYXRpb24gYW5kIHN1cHBvcnRlZCBvbmx5IGluIEZGXG5cdFx0XHRzdHlsZS5kaXNwbGF5IDogalF1ZXJ5LmNzcyggZWxlbVsgMCBdLCBcImRpc3BsYXlcIiApO1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYW55IGRhdGEgc3RvcmVkIG9uIHRoZSBlbGVtZW50LFxuXHQvLyBzbyB1c2UgXCJkZXRhY2hcIiBtZXRob2QgYXMgZmFzdCB3YXkgdG8gZ2V0IHJpZCBvZiB0aGUgZWxlbWVudFxuXHRlbGVtLmRldGFjaCgpO1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG4vKipcbiAqIFRyeSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gbm9kZU5hbWVcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkoIG5vZGVOYW1lICkge1xuXHR2YXIgZG9jID0gZG9jdW1lbnQsXG5cdFx0ZGlzcGxheSA9IGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdO1xuXG5cdGlmICggIWRpc3BsYXkgKSB7XG5cdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblxuXHRcdC8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFtZVxuXHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgfHwgIWRpc3BsYXkgKSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZVxuXHRcdFx0aWZyYW1lID0gKGlmcmFtZSB8fCBqUXVlcnkoIFwiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPlwiICkpLmFwcGVuZFRvKCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7XG5cblx0XHRcdC8vIEFsd2F5cyB3cml0ZSBhIG5ldyBIVE1MIHNrZWxldG9uIHNvIFdlYmtpdCBhbmQgRmlyZWZveCBkb24ndCBjaG9rZSBvbiByZXVzZVxuXHRcdFx0ZG9jID0gaWZyYW1lWyAwIF0uY29udGVudERvY3VtZW50O1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRVxuXHRcdFx0ZG9jLndyaXRlKCk7XG5cdFx0XHRkb2MuY2xvc2UoKTtcblxuXHRcdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblx0XHRcdGlmcmFtZS5kZXRhY2goKTtcblx0XHR9XG5cblx0XHQvLyBTdG9yZSB0aGUgY29ycmVjdCBkZWZhdWx0IGRpc3BsYXlcblx0XHRlbGVtZGlzcGxheVsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7XG5cdH1cblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cbnZhciBybWFyZ2luID0gKC9ebWFyZ2luLyk7XG5cbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdC8vIFN1cHBvcnQ6IElFPD0xMSssIEZpcmVmb3g8PTMwKyAoIzE1MDk4LCAjMTQxNTApXG5cdFx0Ly8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzXG5cdFx0Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoIFwiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZVwiXG5cdFx0aWYgKCBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyICkge1xuXHRcdFx0cmV0dXJuIGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7XG5cdH07XG5cblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbW
14938UsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFOVxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEyNTM3KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdO1xuXHR9XG5cblx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogaU9TIDwgNlxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBpT1MgPCA2IChhdCBsZWFzdCkgcmV0dXJucyBwZXJjZW50YWdlIGZvciBhIGxhcmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzXG5cdFx0Ly8gdGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAodGhpcy5nZXQgPSBob29rRm4pLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxuKGZ1bmN0aW9uKCkge1xuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsXG5cdFx0ZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweDtcIiArXG5cdFx0XCJwb3NpdGlvbjphYnNvbHV0ZVwiO1xuXHRjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlUGl4ZWxQb3NpdGlvbkFuZEJveFNpemluZ1JlbGlhYmxlKCkge1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjksIEFuZHJvaWQgMi4zXG5cdFx0XHQvLyBWZW5kb3ItcHJlZml4IGJveC1zaXppbmdcblx0XHRcdFwiLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7XCIgK1xuXHRcdFx0XCJib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTtcIiArXG5cdFx0XHRcImJvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlXCI7XG5cdFx0ZGl2LmlubmVySFRNTCA9IFwiXCI7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2LCBudWxsICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09IFwiNHB4XCI7XG5cblx0XHRkb2NFbGVtLnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IG5vZGUuanMganNkb21cblx0Ly8gRG9uJ3QgYXNzdW1lIHRoYXQgZ2V0Q29tcHV0ZWRTdHlsZSBpcyBhIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0XG5cdGlmICggd2luZG93LmdldENvbXB1dGVkU3R5bGUgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwge1xuXHRcdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gVGhpcyB0ZXN0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBidXQgd2Ug
14938c3RpbGwgZG8gbWVtb2l6aW5nXG5cdFx0XHRcdC8vIHNpbmNlIHdlIGNhbiB1c2UgdGhlIGJveFNpemluZ1JlbGlhYmxlIHByZS1jb21wdXRpbmcuXG5cdFx0XHRcdC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHRlc3Qgd2FzIGFscmVhZHkgcGVyZm9ybWVkLCB0aG91Z2guXG5cdFx0XHRcdGNvbXB1dGVQaXhlbFBvc2l0aW9uQW5kQm94U2l6aW5nUmVsaWFibGUoKTtcblx0XHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0XHR9LFxuXHRcdFx0Ym94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGJveFNpemluZ1JlbGlhYmxlVmFsID09IG51bGwgKSB7XG5cdFx0XHRcdFx0Y29tcHV0ZVBpeGVsUG9zaXRpb25BbmRCb3hTaXppbmdSZWxpYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDtcblx0XHRcdH0sXG5cdFx0XHRyZWxpYWJsZU1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xuXHRcdFx0XHQvLyBDaGVjayBpZiBkaXYgd2l0aCBleHBsaWNpdCB3aWR0aCBhbmQgbm8gbWFyZ2luLXJpZ2h0IGluY29ycmVjdGx5XG5cdFx0XHRcdC8vIGdldHMgY29tcHV0ZWQgbWFyZ2luLXJpZ2h0IGJhc2VkIG9uIHdpZHRoIG9mIGNvbnRhaW5lci4gKCMzMzMzKVxuXHRcdFx0XHQvLyBXZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmlnaHRcblx0XHRcdFx0Ly8gVGhpcyBzdXBwb3J0IGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBzbyBubyBtZW1vaXppbmcgaXMgbmVlZGVkLlxuXHRcdFx0XHR2YXIgcmV0LFxuXHRcdFx0XHRcdG1hcmdpbkRpdiA9IGRpdi5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gUmVzZXQgQ1NTOiBib3gtc2l6aW5nOyBkaXNwbGF5OyBtYXJnaW47IGJvcmRlcjsgcGFkZGluZ1xuXHRcdFx0XHRtYXJnaW5EaXYuc3R5bGUuY3NzVGV4dCA9IGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI5LCBBbmRyb2lkIDIuM1xuXHRcdFx0XHRcdC8vIFZlbmRvci1wcmVmaXggYm94LXNpemluZ1xuXHRcdFx0XHRcdFwiLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtcIiArXG5cdFx0XHRcdFx0XCJib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowXCI7XG5cdFx0XHRcdG1hcmdpbkRpdi5zdHlsZS5tYXJnaW5SaWdodCA9IG1hcmdpbkRpdi5zdHlsZS53aWR0aCA9IFwiMFwiO1xuXHRcdFx0XHRkaXYuc3R5bGUud2lkdGggPSBcIjFweFwiO1xuXHRcdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdFx0XHRyZXQgPSAhcGFyc2VGbG9hdCggd2luZG93LmdldENvbXB1dGVkU3R5bGUoIG1hcmdpbkRpdiwgbnVsbCApLm1hcmdpblJpZ2h0ICk7XG5cblx0XHRcdFx0ZG9jRWxlbS5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cdFx0XHRcdGRpdi5yZW1vdmVDaGlsZCggbWFyZ2luRGl2ICk7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufSkoKTtcblxuXG4vLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zLlxualF1ZXJ5LnN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG52YXJcblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZSBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cm51bXNwbGl0ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSguKikkXCIsIFwiaVwiICksXG5cdHJyZWxOdW0gPSBuZXcgUmVnRXhwKCBcIl4oWystXSk9KFwiICsgcG51bSArIFwiKVwiLCBcImlcIiApLFxuXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxuXHRjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7XG5cdFx0bGV0dG
14938VyU3BhY2luZzogXCIwXCIsXG5cdFx0Zm9udFdlaWdodDogXCI0MDBcIlxuXHR9LFxuXG5cdGNzc1ByZWZpeGVzID0gWyBcIldlYmtpdFwiLCBcIk9cIiwgXCJNb3pcIiwgXCJtc1wiIF07XG5cbi8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBzdHlsZSwgbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gc3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSxcblx0XHRvcmlnTmFtZSA9IG5hbWUsXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIHN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG9yaWdOYW1lO1xufVxuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXHR2YXIgbWF0Y2hlcyA9IHJudW1zcGxpdC5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMSBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMiBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkge1xuXHR2YXIgaSA9IGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgP1xuXHRcdC8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQsIGF2b2lkIGF1Z21lbnRhdGlvblxuXHRcdDQgOlxuXHRcdC8vIE90aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXNcblx0XHRuYW1lID09PSBcIndpZHRoXCIgPyAxIDogMCxcblxuXHRcdHZhbCA9IDA7XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXRcblx0XHRpZiAoIGV4dHJhID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdGlmICggaXNCb3JkZXJCb3ggKSB7XG5cdFx0XHQvLyBib3JkZXItYm94IGluY2x1ZGVzIHBhZGRpbmcsIHNvIHJlbW92ZSBpdCBpZiB3ZSB3YW50IGNvbnRlbnRcblx0XHRcdGlmICggZXh0cmEgPT09IFwiY29udGVudFwiICkge1xuXHRcdFx0XHR2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyXG5cdFx0XHRpZiAoIGV4dHJhICE9PSBcIm1hcmdpblwiICkge1xuXHRcdFx0XHR2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmdcblx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28gYWRkIGJvcmRlclxuXHRcdFx0aWYgKCBleHRyYSAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlXG5cdHZhciB2YWx1ZUlzQm9yZGVyQm94ID0gdHJ1ZSxcblx0XHR2YWwgPSBuYW1lID09PSBcIndpZHRoXCIgPyBlbGVtLm9mZnNldFdpZHRoIDogZWxlbS5vZmZzZXRIZWlnaHQsXG5cdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiO1xuXG5cdC8vIFNvbWUgbm9uLWh0bWwgZWxlbWVudHMgcmV0dXJuIHVuZGVmaW5lZCBmb3Igb2Zmc2V0V2lkdGgsIHNvIGNoZWNrIGZvciBudWxsL3VuZGVmaW5lZFxuXHQvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NDkyODVcblx0Ly8gTWF0aE1MIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNjY4XG5cdGlmICggdmFsIDw9IDAgfHwgdmFsID09IG51bGwgKSB7XG5cdFx0Ly8gRmFsbCBiYWNrIHRvIGNvbXB1dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5XG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHRpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7XG5cdFx0XHR2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF0
149387XG5cdFx0fVxuXG5cdFx0Ly8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi5cblx0XHRpZiAoIHJudW1ub25weC50ZXN0KHZhbCkgKSB7XG5cdFx0XHRyZXR1cm4gdmFsO1xuXHRcdH1cblxuXHRcdC8vIENoZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzXG5cdFx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJlxuXHRcdFx0KCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBuYW1lIF0gKTtcblxuXHRcdC8vIE5vcm1hbGl6ZSBcIlwiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmFcblx0XHR2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwO1xuXHR9XG5cblx0Ly8gVXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXNcblx0cmV0dXJuICggdmFsICtcblx0XHRhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdGVsZW0sXG5cdFx0XHRuYW1lLFxuXHRcdFx0ZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApLFxuXHRcdFx0dmFsdWVJc0JvcmRlckJveCxcblx0XHRcdHN0eWxlc1xuXHRcdClcblx0KSArIFwicHhcIjtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSwgaGlkZGVuLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiICk7XG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cdFx0XHQvLyBSZXNldCB0aGUgaW5saW5lIGRpc3BsYXkgb2YgdGhpcyBlbGVtZW50IHRvIGxlYXJuIGlmIGl0IGlzXG5cdFx0XHQvLyBiZWluZyBoaWRkZW4gYnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90XG5cdFx0XHRpZiAoICF2YWx1ZXNbIGluZGV4IF0gJiYgZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmVcblx0XHRcdC8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0eWxlIGlzXG5cdFx0XHQvLyBmb3Igc3VjaCBhbiBlbGVtZW50XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbiggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBcIm9sZGRpc3BsYXlcIiwgZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSkgKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aGlkZGVuID0gaXNIaWRkZW4oIGVsZW0gKTtcblxuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiB8fCAhaGlkZGVuICkge1xuXHRcdFx0XHRkYXRhX3ByaXYuc2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiwgaGlkZGVuID8gZGlzcGxheSA6IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgbW9zdCBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcFxuXHQvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0aWYgKCAhc2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IHNob3cgPyB2YWx1ZXNbIGluZGV4IF0gfHwgXCJcIiA6IFwibm9uZVwiO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XG5cdC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eVxuXHRjc3NIb29rczoge1xuXHRcdG9wYWNpdHk6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHlcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xuXHRcdFx0XHRcdHJldHVybiByZXQgPT09IFwiXCIgPyBcIjFcIiA6IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCBcInB4XCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllc1xuXHRjc3NOdW1iZXI6IHtcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7XG5cdFx0XCJmbG9hdFwiOiBcImNzc0Zsb2F0XCJcblx0fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbW
14938UsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0XHRuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBvcmlnTmFtZSApICk7XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KVxuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICYmIChyZXQgPSBycmVsTnVtLmV4ZWMoIHZhbHVlICkpICkge1xuXHRcdFx0XHR2YWx1ZSA9ICggcmV0WzFdICsgMSApICogcmV0WzJdICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7XG5cdFx0XHRcdC8vIEZpeGVzIGJ1ZyAjOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgjNzExNilcblx0XHRcdGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBudW1iZXIsIGFkZCAncHgnIHRvIHRoZSAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm51bWJlclwiICYmICFqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdICkge1xuXHRcdFx0XHR2YWx1ZSArPSBcInB4XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoXCJzZXRcIiBpbiBob29rcykgfHwgKHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdFxuXHRcdFx0cmV0dXJuIHN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXHR9LFxuXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7XG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0bmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBlbGVtLnN0eWxlLCBvcmlnTmFtZSApICk7XG5cblx0XHQvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdFxuXHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgXCJub3JtYWxcIiB0byBjb21wdXRlZCB2YWx1ZVxuXHRcdGlmICggdmFsID09PSBcIm5vcm1hbFwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtICkge1xuXHRcdFx0dmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljXG5cdFx0aWYgKCBleHRyYSA9PT0gXCJcIiB8fCBleHRyYSApIHtcblx0XHRcdG51bSA9IHBhcnNlRmxvYXQoIHZhbCApO1xuXHRcdFx0cmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGpRdWVyeS5pc051bWVyaWMoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXHRcdHJldHVybi
14938B2YWw7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaChbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHQvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW1cblx0XHRcdFx0Ly8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXRcblx0XHRcdFx0cmV0dXJuIHJkaXNwbGF5c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApICkgJiYgZWxlbS5vZmZzZXRXaWR0aCA9PT0gMCA/XG5cdFx0XHRcdFx0alF1ZXJ5LnN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBzdHlsZXMgPSBleHRyYSAmJiBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIGV4dHJhID9cblx0XHRcdFx0YXVnbWVudFdpZHRoT3JIZWlnaHQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRcdGV4dHJhLFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCkgOiAwXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xualF1ZXJ5LmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5zd2FwKCBlbGVtLCB7IFwiZGlzcGxheVwiOiBcImlubGluZS1ibG9ja1wiIH0sXG5cdFx0XHRcdGN1ckNTUywgWyBlbGVtLCBcIm1hcmdpblJpZ2h0XCIgXSApO1xuXHRcdH1cblx0fVxuKTtcblxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xualF1ZXJ5LmVhY2goe1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoXCIgXCIpIDogWyB2YWx1ZSBdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCA0OyBpKysgKSB7XG5cdFx0XHRcdGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID1cblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBleHBhbmRlZDtcblx0XHR9XG5cdH07XG5cblx0aWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdHZhciBzdHlsZXMsIGxlbixcblx0XHRcdFx0bWFwID0ge30sXG5cdFx0XHRcdGkgPSAwO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblx0c2hvdzogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7XG5cdH0sXG5cdGhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcyApO1xuXHR9LFxuXHR0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHtcblx0XHRpZiAoIHR5cGVvZiBzdGF0ZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufSk7XG5cblxuZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkge1xuXHRyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApO1xufVxualF1ZXJ5LlR3ZWVuID0gVHdlZW47XG5cblR3ZWVuLnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IFR3ZWVuLFxuXHRpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7XG5cdFx0dGhpcy5lbGVtID0gZWxlbTtcblx0XHR0aGlzLnByb3AgPSBwcm9wO1xuXHRcdHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IFwic3dpbmdcIjtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybi
14938B0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdGlmICggdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiZcblx0XHRcdFx0KCF0d2Vlbi5lbGVtLnN0eWxlIHx8IHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsKSApIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5XG5cdFx0XHQvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLlxuXHRcdFx0Ly8gU2ltcGxlIHZhbHVlcyBzdWNoIGFzIFwiMTBweFwiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7XG5cdFx0XHQvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzIFwicm90YXRlKDFyYWQpXCIgYXJlIHJldHVybmVkIGFzLWlzLlxuXHRcdFx0cmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgXCJcIiApO1xuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5zdHlsZSAmJiAoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fCBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIFN1cHBvcnQ6IElFOVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fVxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgQ29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIHRpbWVySWQsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRyZnhudW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLyxcblx0YW5pbWF0aW9uUHJlZmlsdGVycyA9IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXHR0d2VlbmVycyA9IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApLFxuXHRcdFx0XHR0YXJnZXQgPSB0d2Vlbi5jdXIoKSxcblx0XHRcdFx0cGFydHMgPSByZnhudW0uZXhlYyggdmFsdWUgKSxcblx0XHRcdFx0dW5pdCA9IHBhcnRzICYmIHBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICksXG5cblx0XHRcdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRcdFx0c3RhcnQgPSAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSB8fCB1bml0ICE9PSBcInB4XCIgJiYgK3RhcmdldCApICYmXG5cdFx0XHRcdFx0cmZ4bnVtLmV4ZWMoIGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHByb3AgKSApLFxuXHRcdFx0XHRzY2FsZSA9IDEsXG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAyMDtcblxuXHRcdFx0aWYgKCBzdGFydCAmJiBzdGFydFsgMyBdICE9PSB1bml0ICkge1xuXHRcdFx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0XHRcdHVuaXQgPSB1bml0IHx8IHN0YXJ0WyAzIF07XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdFx0XHRwYXJ0cyA9IHBhcnRzIHx8IFtdO1xuXG5cdFx0XHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0XHRcdHN0YXJ0ID0gK3RhcmdldCB8fCAxO1xuXG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHQvLyBJZiBwcmV2aW91cyBpdGVyYXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi5cblx0XHRcdFx0XHQvLyBVc2Ugc3RyaW5nIGZvciBkb3VibGluZyBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvd1xuXHRcdFx0XHRcdHNjYWxlID0gc2NhbGUgfHwgXCIuNVwiO1xuXG5cdFx0XHRcdFx0Ly8gQWRqdXN0IGFuZCBhcHBseVxuXHRcdFx0XHRcdHN0YXJ0ID0gc3RhcnQgLyBzY2FsZTtcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHByb3AsIHN0YXJ0ICsgdW5pdCApO1xuXG5cdFx0XHRcdC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpLFxuXHRcdFx0XHQvLyBicmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQgb3IgcGVyZmVjdCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoXG5cdFx0XHRcdH0gd2hpbGUgKCBzY2FsZSAhPT0gKHNjYWxlID0gdHdlZW4uY3VyKCkgLyB0YXJnZXQpICYmIHNjYWxlICE9PSAxICYmIC0tbWF4SXRlcmF0aW9ucyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgdHdlZW4gcHJvcGVydGllc1xuXHRcdFx0aWYgKCBwYXJ0cyApIHtcblx0XHRcdFx0c3RhcnQgPSB0d2Vlbi5zdGFydCA9ICtzdGFydCB8fCArdGFyZ2V0IHx8IDA7XG5cdFx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0XHQvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92aWRlZCwgd2UncmUgZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb25cblx0XHRcdFx0dHdlZW4uZW5kID0gcGFydHNbIDEgXSA/XG5cdFx0XHRcdFx0c3RhcnQgKyAoIHBhcnRzWyAxIF0gKyAxICkgKiBwYXJ0c1sgMiBdIDpcblx0XHRcdFx0XHQrcGFydHNbIDIgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9O1xuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSk7XG5cdHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7XG59XG5cbi8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uXG5mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHR
14938oICkge1xuXHR2YXIgd2hpY2gsXG5cdFx0aSA9IDAsXG5cdFx0YXR0cnMgPSB7IGhlaWdodDogdHlwZSB9O1xuXG5cdC8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBkbyBhbGwgY3NzRXhwYW5kIHZhbHVlcyxcblx0Ly8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHRcblx0aW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7XG5cdGZvciAoIDsgaSA8IDQgOyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggdHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggdHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAodHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSkgKSB7XG5cblx0XHRcdC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkge1xuXHQvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCB0d2VlbiwgaG9va3MsIG9sZGZpcmUsIGRpc3BsYXksIGNoZWNrRGlzcGxheSxcblx0XHRhbmltID0gdGhpcyxcblx0XHRvcmlnID0ge30sXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlLFxuXHRcdGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4oIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwiZnhzaG93XCIgKTtcblxuXHQvLyBIYW5kbGUgcXVldWU6IGZhbHNlIHByb21pc2VzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdFx0aG9va3MudW5xdWV1ZWQtLTtcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdC8vIEhlaWdodC93aWR0aCBvdmVyZmxvdyBwYXNzXG5cdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiaGVpZ2h0XCIgaW4gcHJvcHMgfHwgXCJ3aWR0aFwiIGluIHByb3BzICkgKSB7XG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbm90aGluZyBzbmVha3Mgb3V0XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRTktMTAgZG8gbm90XG5cdFx0Ly8gY2hhbmdlIHRoZSBvdmVyZmxvdyBhdHRyaWJ1dGUgd2hlbiBvdmVyZmxvd1ggYW5kXG5cdFx0Ly8gb3ZlcmZsb3dZIGFyZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWVcblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIFNldCBkaXNwbGF5IHByb3BlcnR5IHRvIGlubGluZS1ibG9jayBmb3IgaGVpZ2h0L3dpZHRoXG5cdFx0Ly8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaGF2aW5nIHdpZHRoL2hlaWdodCBhbmltYXRlZFxuXHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXG5cdFx0Ly8gVGVzdCBkZWZhdWx0IGRpc3BsYXkgaWYgZGlzcGxheSBpcyBjdXJyZW50bHkgXCJub25lXCJcblx0XHRjaGVja0Rpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/XG5cdFx0XHRkYXRhX3ByaXYuZ2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiApIHx8IGRlZmF1bHREaXNwbGF5KCBlbGVtLm5vZGVOYW1lICkgOiBkaXNwbGF5O1xuXG5cdFx0aWYgKCBjaGVja0Rpc3BsYXkgPT09IFwiaW5saW5lXCIgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBvcHRzLm92ZXJmbG93ICkge1xuXHRcdHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcblx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gc2hvdy9oaWRlIHBhc3Ncblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy5leGVjKCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBkYXRhU2hvdyBsZWZ0IG92ZXIgZnJvbSBhIHN0b3BwZWQgaGlkZSBvciBzaG93IGFuZCB3ZSBhcmUgZ29pbmcgdG8gcHJvY2VlZCB3aXRoIHNob3csIHdlIHNob3VsZCBwcmV0ZW5kIHRvIGJlIGhpZGRlblxuXHRcdFx0XHRpZiAoIHZhbHVlID09PSBcInNob3dcIiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblxuXHRcdC8vIEFueSBub24tZnggdmFsdWUgc3RvcHMgdXMgZnJvbSByZXN0b3JpbmcgdGhlIG9yaWdpbmFsIGRpc3BsYXkgdmFsdWVcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlzcGxheSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRpZiAoICFqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YVNob3cgPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7fSApO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIHN0YXRlIGlmIGl0cyB0b2dnbGUgLSBlbmFibGVzIC5zdG9wKCkudG9nZ2xlKCkgdG8gXCJyZXZlcnNlXCJcblx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0fVxuXHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0alF1ZXJ5KCBlbGVtICkuc2hvdygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeSggZWxlbSApLmhpZGUoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcHJvcDtcblxuXHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgXCJmeHNob3dcIiApO1xuXHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblx0XHRcdHR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7XG5cblx0XHRcdGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkge1xuXHRcdFx0XHRkYXRhU2hvd1sgcHJvcCBdID0gdHdlZW4uc3RhcnQ7XG5cdFx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRcdHR3ZWVuLmVuZCA9IHR3ZWVuLnN0YXJ0O1xuXHRcdFx0XHRcdHR3ZWVuLnN0YXJ0ID0gcHJvcCA9PT0gXCJ3aWR0aFwiIHx8IHByb3AgPT09IFwiaGVpZ2h0XCIgPyAxIDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHQvLyBJZiB0aGlzIGlzIGEgbm9vcCBsaWtlIC5oaWRlKCkuaGlkZSgpLCByZXN0b3JlIGFuIG92ZXJ3cml0dGVuIGRpc3BsYXkgdmFsdWVcblx0fSBlbHNlIGlmICggKGRpc3BsYXkgPT09IFwibm9uZVwiID8gZGVmYXVsdERpc3BsYXkoIGVsZW0ubm9kZU5hbWUgKSA6IGRpc3BsYXkpID09PSBcImlubGluZVwiICkge1xuXHRcdHN0eWxlLmRpc3BsYXkgPSBkaXNwbGF5O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXggKTtcblx0XHRlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF0
149387XG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBhbmltYXRpb25QcmVmaWx0ZXJzLmxlbmd0aCxcblx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSksXG5cdFx0dGljayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0XHRyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0pO1xuXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2Uoe1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLFxuXHRcdFx0b3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7fSB9LCBvcHRpb25zICksXG5cdFx0XHRvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG5cdFx0XHRvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsXG5cdFx0XHRzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbixcblx0XHRcdHR3ZWVuczogW10sXG5cdFx0XHRjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHtcblx0XHRcdFx0dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5kLFxuXHRcdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zLnB1c2goIHR3ZWVuICk7XG5cdFx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHRcdH0sXG5cdFx0XHRzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHtcblx0XHRcdFx0dmFyIGluZGV4ID0gMCxcblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0cHJvcHMgP
14938SBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBhbmltYXRpb25QcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XG5cdFx0aWYgKCByZXN1bHQgKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSlcblx0KTtcblxuXHQvLyBhdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRyZXR1cm4gYW5pbWF0aW9uLnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblxuXHR0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3BzICkgKSB7XG5cdFx0XHRjYWxsYmFjayA9IHByb3BzO1xuXHRcdFx0cHJvcHMgPSBbIFwiKlwiIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BzID0gcHJvcHMuc3BsaXQoXCIgXCIpO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XG5cdFx0XHR0d2VlbmVyc1sgcHJvcCBdID0gdHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdHR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH0sXG5cblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XG5cdFx0aWYgKCBwcmVwZW5kICkge1xuXHRcdFx0YW5pbWF0aW9uUHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbmltYXRpb25QcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59KTtcblxualF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkge1xuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XG5cdFx0Y29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHxcblx0XHRcdGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmdcblx0fTtcblxuXHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZngub2ZmID8gMCA6IHR5cGVvZiBvcHQuZHVyYXRpb24gPT09IFwibnVtYmVyXCIgPyBvcHQuZHVyYXRpb24gOlxuXHRcdG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzID8galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF0gOiBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW4gKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhX3ByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybi
14938BlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3ByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiAodHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFfcHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaChbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gXCJib29sZWFuXCIgP1xuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcblx0XHRcdHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbW
14938UsIHRydWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0pO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCh7XG5cdHNsaWRlRG93bjogZ2VuRngoXCJzaG93XCIpLFxuXHRzbGlkZVVwOiBnZW5GeChcImhpZGVcIiksXG5cdHNsaWRlVG9nZ2xlOiBnZW5GeChcInRvZ2dsZVwiKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59KTtcblxualF1ZXJ5LnRpbWVycyA9IFtdO1xualF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHtcblx0dmFyIHRpbWVyLFxuXHRcdGkgPSAwLFxuXHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnM7XG5cblx0ZnhOb3cgPSBqUXVlcnkubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cdFx0Ly8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFscmVhZHkgYmVlbiByZW1vdmVkXG5cdFx0aWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7XG5cdFx0XHR0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5meC5zdG9wKCk7XG5cdH1cblx0ZnhOb3cgPSB1bmRlZmluZWQ7XG59O1xuXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XG5cdGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTtcblx0aWYgKCB0aW1lcigpICkge1xuXHRcdGpRdWVyeS5meC5zdGFydCgpO1xuXHR9IGVsc2Uge1xuXHRcdGpRdWVyeS50aW1lcnMucG9wKCk7XG5cdH1cbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xuXG5qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0aWYgKCAhdGltZXJJZCApIHtcblx0XHR0aW1lcklkID0gc2V0SW50ZXJ2YWwoIGpRdWVyeS5meC50aWNrLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTtcblx0fVxufTtcblxualF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHtcblx0Y2xlYXJJbnRlcnZhbCggdGltZXJJZCApO
149381xuXHR0aW1lcklkID0gbnVsbDtcbn07XG5cbmpRdWVyeS5meC5zcGVlZHMgPSB7XG5cdHNsb3c6IDYwMCxcblx0ZmFzdDogMjAwLFxuXHQvLyBEZWZhdWx0IHNwZWVkXG5cdF9kZWZhdWx0OiA0MDBcbn07XG5cblxuLy8gQmFzZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLlxuLy8gaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5L1xualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdGNsZWFyVGltZW91dCggdGltZW91dCApO1xuXHRcdH07XG5cdH0pO1xufTtcblxuXG4oZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogaU9TPD01LjEsIEFuZHJvaWQ8PTQuMitcblx0Ly8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgXCJvblwiXG5cdHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSBcIlwiO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPD0yLjNcblx0Ly8gT3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2VsZWN0cyBhcmUgaW5jb3JyZWN0bHkgbWFya2VkIGFzIGRpc2FibGVkXG5cdHNlbGVjdC5kaXNhYmxlZCA9IHRydWU7XG5cdHN1cHBvcnQub3B0RGlzYWJsZWQgPSAhb3B0LmRpc2FibGVkO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSkoKTtcblxuXG52YXIgbm9kZUhvb2ssIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gZG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gc3RydW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBhdHRyaWJ1dGVzIGFyZSBsb3dlcmNhc2Vcblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gfHxcblx0XHRcdFx0KCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogbm9kZUhvb2sgKTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2UgaWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0Ly8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWRcblx0XHRcdHJldHVybi
14938ByZXQgPT0gbnVsbCA/XG5cdFx0XHRcdHVuZGVmaW5lZCA6XG5cdFx0XHRcdHJldDtcblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLCBwcm9wTmFtZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApO1xuXG5cdFx0aWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdHdoaWxlICggKG5hbWUgPSBhdHRyTmFtZXNbaSsrXSkgKSB7XG5cdFx0XHRcdHByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xuXG5cdFx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgKCMxMDg3MClcblx0XHRcdFx0aWYgKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0XHQvLyBTZXQgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuXHRcdFx0XHRcdGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59KTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0Ly8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZVxuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cbn07XG5qUXVlcnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBnZXR0ZXIgPSBhdHRySGFuZGxlWyBuYW1lIF0gfHwgalF1ZXJ5LmZpbmQuYXR0cjtcblxuXHRhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHJldCwgaGFuZGxlO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRudWxsO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gaGFuZGxlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9O1xufSk7XG5cblxuXG5cbnZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRwcm9wRml4OiB7XG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXG5cdFx0XCJjbGFzc1wiOiBcImNsYXNzTmFtZVwiXG5cdH0sXG5cblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLCBub3R4bWwsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICk7XG5cblx0XHRpZiAoIG5vdHhtbCApIHtcblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm4gaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0cmV0IDpcblx0XHRcdFx0KCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgP1xuXHRcdFx0XHRyZXQgOlxuXHRcdFx0XHRlbGVtWyBuYW1lIF0
149387XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BIb29rczoge1xuXHRcdHRhYkluZGV4OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5oYXNBdHRyaWJ1dGUoIFwidGFiaW5kZXhcIiApIHx8IHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8IGVsZW0uaHJlZiA/XG5cdFx0XHRcdFx0ZWxlbS50YWJJbmRleCA6XG5cdFx0XHRcdFx0LTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59KTtcblxuaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHtcblx0alF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaChbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSk7XG5cblxuXG5cbnZhciByY2xhc3MgPSAvW1xcdFxcclxcblxcZl0vZztcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRwcm9jZWVkID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgdGhpcy5jbGFzc05hbWUgKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKCBwcm9jZWVkICkge1xuXHRcdFx0Ly8gVGhlIGRpc2p1bmN0aW9uIGhlcmUgaXMgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSByZW1vdmVDbGFzcylcblx0XHRcdGNsYXNzZXMgPSAoIHZhbHVlIHx8IFwiXCIgKS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW107XG5cblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggZWxlbS5jbGFzc05hbWUgP1xuXHRcdFx0XHRcdCggXCIgXCIgKyBlbGVtLmNsYXNzTmFtZSArIFwiIFwiICkucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApIDpcblx0XHRcdFx0XHRcIiBcIlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXp6ICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gb25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0galF1ZXJ5LnRyaW0oIGN1ciApO1xuXHRcdFx0XHRcdGlmICggZWxlbS5jbGFzc05hbWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmNsYXNzTmFtZSA9IGZpbmFsVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0cmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdHByb2NlZWQgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGg7XG5cblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIHRoaXMuY2xhc3NOYW1lICkgKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoIHByb2NlZWQgKSB7XG5cdFx0XHRjbGFzc2VzID0gKCB2YWx1ZSB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXTtcblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIGVsZW0uY2xhc3NOYW1lID9cblx0XHRcdFx0XHQoIFwiIFwiICsgZWxlbS5jbGFzc05hbWUgKyBcIiBcIiApLnJlcGxhY2UoIHJjbGFzcywgXCIgXCIgKSA6XG5cdFx0XHRcdFx0XCJcIlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApID49IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gdmFsdWUgPyBqUXVlcnkudHJpbSggY3VyICkgOiBcIlwiO
149381xuXHRcdFx0XHRcdGlmICggZWxlbS5jbGFzc05hbWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmNsYXNzTmFtZSA9IGZpbmFsVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0dG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7XG5cdFx0dmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0gXCJib29sZWFuXCIgJiYgdHlwZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBpLCB0aGlzLmNsYXNzTmFtZSwgc3RhdGVWYWwpLCBzdGF0ZVZhbCApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0dmFyIGNsYXNzTmFtZSxcblx0XHRcdFx0XHRpID0gMCxcblx0XHRcdFx0XHRzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdFx0Y2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdFx0XHR3aGlsZSAoIChjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSkgKSB7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IHN0cnVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0aWYgKCB0aGlzLmNsYXNzTmFtZSApIHtcblx0XHRcdFx0XHQvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIHRoaXMuY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8gXCJcIiA6IGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIjtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09IDEgJiYgKFwiIFwiICsgdGhpc1tpXS5jbGFzc05hbWUgKyBcIiBcIikucmVwbGFjZShyY2xhc3MsIFwiIFwiKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+PSAwICkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn0pO1xuXG5cblxuXG52YXIgcnJldHVybiA9IC9cXHIvZztcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbMF07XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkpICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0cmV0dXJuIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0XHRyZXQucmVwbGFjZShycmV0dXJuLCBcIlwiKSA6XG5cdFx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdFx0cmV0ID09IG51bGwgPyBcIlwiIDogcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF
149385KCB2YWwgKSApIHtcblx0XHRcdFx0dmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKFwic2V0XCIgaW4gaG9va3MpIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCBcInZhbHVlXCIgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdHZhbEhvb2tzOiB7XG5cdFx0b3B0aW9uOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTEwLTExK1xuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OClcblx0XHRcdFx0XHRqUXVlcnkudHJpbSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIgfHwgaW5kZXggPCAwLFxuXHRcdFx0XHRcdHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSxcblx0XHRcdFx0XHRtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aCxcblx0XHRcdFx0XHRpID0gaW5kZXggPCAwID9cblx0XHRcdFx0XHRcdG1heCA6XG5cdFx0XHRcdFx0XHRvbmUgPyBpbmRleCA6IDA7XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBJRTYtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSlcblx0XHRcdFx0XHRpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiZcblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQoIHN1cHBvcnQub3B0RGlzYWJsZWQgPyAhb3B0aW9uLmRpc2FibGVkIDogb3B0aW9uLmdldEF0dHJpYnV0ZSggXCJkaXNhYmxlZFwiICkgPT09IG51bGwgKSAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fCAhalF1ZXJ5Lm5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXHRcdFx0XHRcdGlmICggKG9wdGlvbi5zZWxlY3RlZCA9IGpRdWVyeS5pbkFycmF5KCBvcHRpb24udmFsdWUsIHZhbHVlcyApID49IDApICkge1xuXHRcdFx0XHRcdFx0b3B0aW9uU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldFxuXHRcdFx0XHRpZiAoICFvcHRpb25TZXQgKSB7XG5cdFx0XHRcdFx0ZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KGVsZW0pLnZhbCgpLCB2YWx1ZSApID49IDAgKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHtcblx0XHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59KTtcblxuXG5cblxuLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvblxuXG5cbmpRdWVyeS5lYWNoKCAoXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnVcIikuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0fTtcbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkge1xuXHRcdHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApO1xuXHR9LFxuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cdFx0Ly8gKCBuYW1lc3BhY2UgKSBvciAoIHNlbGVjdG9yLCB0eXBlcyBbLCBmbl0gKVxuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gdGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6IHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59KTtcblxuXG52YXIgbm9uY2UgPSBqUXVlcnkubm93KCk7XG5cbnZhciBycXVlcnkgPSAoL1xcPy8pO1xuXG5cblxuLy8gU3VwcG9ydDogQW5kcm9pZCAyLjNcbi8vIFdvcmthcm91bmQgZmFpbHVyZSB0byBzdHJpbmctY2FzdCBudWxsIGlucHV0XG5qUXVlcnkucGFyc2VKU09OID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICsgXCJcIiApO1xufTtcblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbCwgdG1wO1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUU5XG5cdHRyeSB7XG5cdFx0dG1wID0gbmV3IERPTVBhcnNlcigpO1xuXHRcdHhtbCA9IHRtcC5wYXJzZUZyb21TdHJpbmcoIGRhdGEsIFwidGV4dC94bWxcIiApO1xuXHR9IGNhdGNoICggZSApIHtcblx0XHR4bWwgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAoICF4bWwgfHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKS5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmVycm9yKCBcIkludmFsaWQgWE1MOiBcIiArIGRhdGEgKTtcblx0fVxuXHRyZXR1cm4geG1sO1xufTtcblxuXG52YXJcblx0cmhhc2ggPSAvIy4qJC8sXG5cdHJ0cyA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXHQvLyAjNzY1MywgIzgxMjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb25cblx0cmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxcblx0cm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sXG5cdHJwcm90b2NvbCA9IC9eXFwvXFwvLyxcblx0cnVybCA9IC9eKFtcXHcuKy1dKzopKD86XFwvXFwvKD86W15cXC8/I10qQHwpKFteXFwvPyM6XSopKD86OihcXGQrKXwpfCkvLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gRG9jdW1lbnQgbG9jYXRpb25cblx0YWpheExvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLmhy
14938ZWYsXG5cblx0Ly8gU2VnbWVudCBsb2NhdGlvbiBpbnRvIHBhcnRzXG5cdGFqYXhMb2NQYXJ0cyA9IHJ1cmwuZXhlYyggYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkgKSB8fCBbXTtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblx0XHRcdC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb25cblx0XHRcdHdoaWxlICggKGRhdGFUeXBlID0gZGF0YVR5cGVzW2krK10pICkge1xuXHRcdFx0XHQvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZFxuXHRcdFx0XHRpZiAoIGRhdGFUeXBlWzBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdKS5wdXNoKCBmdW5jICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0c1xuZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApIHtcblxuXHR2YXIgaW5zcGVjdGVkID0ge30sXG5cdFx0c2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7XG5cblx0ZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7XG5cdFx0dmFyIHNlbGVjdGVkO1xuXHRcdGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7XG5cdFx0alF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHtcblx0XHRcdHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7XG5cdFx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSBcInN0cmluZ1wiICYmICFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHtcblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gc2VsZWN0ZWQ7XG5cdH1cblxuXHRyZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbIFwiKlwiIF0gJiYgaW5zcGVjdCggXCIqXCIgKTtcbn1cblxuLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zXG4vLyB0aGF0IHRha2VzIFwiZmxhdFwiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKVxuLy8gRml4ZXMgIzk4ODdcbmZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkge1xuXHR2YXIga2V5LCBkZW
14938VwLFxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcblxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xuXHRcdGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0KCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKGRlZXAgPSB7fSkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXG5cdFx0Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7XG5cdFx0XHRpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyBcIiBcIiArIGRhdGFUeXBlc1swXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cdFx0Ly8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvblxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7XG5cblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXG5cdGlmICggZGF0YVR5cGVzWyAxIF0gKSB7XG5cdFx0Zm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7XG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xuXHRcdH1cblx0fVxuXG5cdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHQvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZVxuXHR3aGlsZSAoIGN1cnJlbnQgKSB7XG5cblx0XHRpZiAoIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSApIHtcblx0XHRcdGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkXG5cdFx0aWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3MgJiYgcy5kYXRhRmlsdGVyICkge1xuXHRcdFx0cmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7XG5cdFx0fVxuXG5cdFx0cHJldiA9IGN1cnJlbnQ7XG5cdFx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdFx0aWYgKCBjdXJyZW50ICkge1xuXG5cdFx0Ly8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0b1xuXHRcdFx0aWYgKCBjdXJyZW50ID09PSBcIipcIiApIHtcblxuXHRcdFx0XHRjdXJyZW50ID0gcHJldjtcblxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxuXHRcdFx0fSBlbHNlIGlmICggcHJldiAhPT0gXCIqXCIgJiYgcHJldiAhPT0gY3VycmVudCApIHtcblxuXHRcdFx0XHQvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlclxuXHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbIFwiKiBcIiArIGN1cnJlbnQgXTtcblxuXHRcdFx0XHQvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpclxuXHRcdFx0XHRpZiAoICFjb252ICkge1xuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudFxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoIFwiIFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dFxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcnNbIFwiKiBcIiArIHRtcFsgMCBdIF07XG5cdFx0XHRcdFx0XHRcdGlmICggY29udiApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybi
14938B0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHNbIFwidGhyb3dzXCIgXSApIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7IHN0YXRlOiBcInBhcnNlcmVycm9yXCIsIGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudCB9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cblx0Ly8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzXG5cdGFjdGl2ZTogMCxcblxuXHQvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0XG5cdGxhc3RNb2RpZmllZDoge30sXG5cdGV0YWc6IHt9LFxuXG5cdGFqYXhTZXR0aW5nczoge1xuXHRcdHVybDogYWpheExvY2F0aW9uLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0aXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggYWpheExvY1BhcnRzWyAxIF0gKSxcblx0XHRnbG9iYWw6IHRydWUsXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXG5cdFx0YXN5bmM6IHRydWUsXG5cdFx0Y29udGVudFR5cGU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG5cdFx0Lypcblx0XHR0aW1lb3V0OiAwLFxuXHRcdGRhdGE6IG51bGwsXG5cdFx0ZGF0YVR5cGU6IG51bGwsXG5cdFx0dXNlcm5hbWU6IG51bGwsXG5cdFx0cGFzc3dvcmQ6IG51bGwsXG5cdFx0Y2FjaGU6IG51bGwsXG5cdFx0dGhyb3dzOiBmYWxzZSxcblx0XHR0cmFkaXRpb25hbDogZmFsc2UsXG5cdFx0aGVhZGVyczoge30sXG5cdFx0Ki9cblxuXHRcdGFjY2VwdHM6IHtcblx0XHRcdFwiKlwiOiBhbGxUeXBlcyxcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxuXHRcdFx0aHRtbDogXCJ0ZXh0L2h0bWxcIixcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiXG5cdFx0fSxcblxuXHRcdGNvbnRlbnRzOiB7XG5cdFx0XHR4bWw6IC94bWwvLFxuXHRcdFx0aHRtbDogL2h0bWwvLFxuXHRcdFx0anNvbjogL2pzb24vXG5cdFx0fSxcblxuXHRcdHJlc3BvbnNlRmllbGRzOiB7XG5cdFx0XHR4bWw6IFwicmVzcG9uc2VYTUxcIixcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCIsXG5cdFx0XHRqc29uOiBcInJlc3BvbnNlSlNPTlwiXG5cdFx0fSxcblxuXHRcdC8vIERhdGEgY29udmVydGVyc1xuXHRcdC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCBcIipcIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2Vcblx0XHRjb252ZXJ0ZXJzOiB7XG5cblx0XHRcdC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dFxuXHRcdFx0XCIqIHRleHRcIjogU3RyaW5nLFxuXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcblx0XHRcdFwidGV4dCBodG1sXCI6IHRydWUsXG5cblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cblx0XHRcdFwidGV4dCBqc29uXCI6IGpRdWVyeS5wYXJzZUpTT04sXG5cblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXG5cdFx0XHRcInRleHQgeG1sXCI6IGpRdWVyeS5wYXJzZVhNTFxuXHRcdH0sXG5cblx0XHQvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOlxuXHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWZcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxuXHRcdC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKVxuXHRcdGZsYXRPcHRpb25zOiB7XG5cdFx0XHR1cmw6IHRydWUsXG5cdFx0XHRjb250ZXh0OiB0cnVlXG5cdFx0fVxuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0XG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cblx0Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy5cblx0YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHRyZXR1cm4gc2V0dGluZ3MgP1xuXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxuXHRcdFx0YWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOlxuXG5cdFx0XHQvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzXG5cdFx0XHRhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTtcblx0fSxcblxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcblx0YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksXG5cblx0Ly8gTWFpbiBtZXRob2Rcblx0YWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXG5cdFx0aWYgKCB0eXBlb2YgdXJsID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0b3B0aW9ucyA9IHVybDtcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdFx0dmFyIHRyYW5zcG9ydCxcblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXHRcdFx0Ly8gdGltZW91dCBoYW5kbGVcblx0XHRcdHRpbWVvdXRUaW
149381lcixcblx0XHRcdC8vIENyb3NzLWRvbWFpbiBkZXRlY3Rpb24gdmFyc1xuXHRcdFx0cGFydHMsXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcblx0XHRcdGZpcmVHbG9iYWxzLFxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcblx0XHRcdGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLFxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmICggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRqUXVlcnkuZXZlbnQsXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLFxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdHN0YXR1c0NvZGUgPSBzLnN0YXR1c0NvZGUgfHwge30sXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblx0XHRcdC8vIFRoZSBqcVhIUiBzdGF0ZVxuXHRcdFx0c3RhdGUgPSAwLFxuXHRcdFx0Ly8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlXG5cdFx0XHRzdHJBYm9ydCA9IFwiY2FuY2VsZWRcIixcblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIHN0YXRlID09PSAyICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDogbWF0Y2g7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gUmF3IHN0cmluZ1xuXHRcdFx0XHRnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdHZhciBsbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRpZiAoICFzdGF0ZSApIHtcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoICFzdGF0ZSApIHtcblx0XHRcdFx0XHRcdHMubWltZVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0XHRzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkge1xuXHRcdFx0XHRcdHZhciBjb2RlO1xuXHRcdFx0XHRcdGlmICggbWFwICkge1xuXHRcdFx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzXG5cdFx0XHRcdFx0XHRcdGpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYW5jZWwgdGhlIHJlcXVlc3Rcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0O1xuXHRcdFx0XHRcdGlmICggdHJhbnNwb3J0ICkge1xuXHRcdFx0XHRcdFx0dHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZG9uZSggMCwgZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHQvLyBBdHRhY2ggZGVmZXJyZWRzXG5cdFx0ZGVmZXJyZWQucHJvbWlzZSgganFYSF
14938IgKS5jb21wbGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkO1xuXHRcdGpxWEhSLnN1Y2Nlc3MgPSBqcVhIUi5kb25lO1xuXHRcdGpxWEhSLmVycm9yID0ganFYSFIuZmFpbDtcblxuXHRcdC8vIFJlbW92ZSBoYXNoIGNoYXJhY3RlciAoIzc1MzE6IGFuZCBzdHJpbmcgcHJvbW90aW9uKVxuXHRcdC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KVxuXHRcdC8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXG5cdFx0cy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGFqYXhMb2NhdGlvbiApICsgXCJcIiApLnJlcGxhY2UoIHJoYXNoLCBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGFqYXhMb2NQYXJ0c1sgMSBdICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgXCIqXCIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB3ZSBoYXZlIGEgcHJvdG9jb2w6aG9zdDpwb3J0IG1pc21hdGNoXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHRwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dlckNhc2UoKSApO1xuXHRcdFx0cy5jcm9zc0RvbWFpbiA9ICEhKCBwYXJ0cyAmJlxuXHRcdFx0XHQoIHBhcnRzWyAxIF0gIT09IGFqYXhMb2NQYXJ0c1sgMSBdIHx8IHBhcnRzWyAyIF0gIT09IGFqYXhMb2NQYXJ0c1sgMiBdIHx8XG5cdFx0XHRcdFx0KCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gXCI4MFwiIDogXCI0NDNcIiApICkgIT09XG5cdFx0XHRcdFx0XHQoIGFqYXhMb2NQYXJ0c1sgMyBdIHx8ICggYWpheExvY1BhcnRzWyAxIF0gPT09IFwiaHR0cDpcIiA/IFwiODBcIiA6IFwiNDQzXCIgKSApIClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nXG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXG5cdFx0aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxuXHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoXCJhamF4U3RhcnRcIik7XG5cdFx0fVxuXG5cdFx0Ly8gVXBwZXJjYXNlIHRoZSB0eXBlXG5cdFx0cy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7XG5cblx0XHQvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudFxuXHRcdHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApO1xuXG5cdFx0Ly8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlXG5cdFx0Ly8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyIGxhdGVyIG9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybDtcblxuXHRcdC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50XG5cdFx0aWYgKCAhcy5oYXNDb250ZW50ICkge1xuXG5cdFx0XHQvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsXG5cdFx0XHRpZiAoIHMuZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSAoIHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGEgKTtcblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgYW50aS1jYWNoZSBpbiB1cmwgaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRzLnVybCA9IHJ0cy50ZXN0KCBjYWNoZVVSTCApID9cblxuXHRcdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSAnXycgcGFyYW1ldGVyLCBzZXQgaXRzIHZhbHVlXG5cdFx0XHRcdFx0Y2FjaGVVUkwucmVwbGFjZSggcnRzLCBcIiQxXz1cIiArIG5vbmNlKysgKSA6XG5cblx0XHRcdFx0XHQvLyBPdGhlcndpc2UgYWRkIG9uZSB0byB0aGUgZW5kXG5cdFx0XHRcdFx0Y2FjaGVVUkwgKyAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgbm9uY2UrKztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU1vZGlmaWVkLVNpbmNlXCIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTm9uZS1NYXRjaFwiLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudFxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbn
14938RUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJDb250ZW50LVR5cGVcIiwgcy5jb250ZW50VHlwZSApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcblx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFxuXHRcdFx0XCJBY2NlcHRcIixcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdICsgKCBzLmRhdGFUeXBlc1sgMCBdICE9PSBcIipcIiA/IFwiLCBcIiArIGFsbFR5cGVzICsgXCI7IHE9MC4wMVwiIDogXCJcIiApIDpcblx0XHRcdFx0cy5hY2NlcHRzWyBcIipcIiBdXG5cdFx0KTtcblxuXHRcdC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvblxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0XG5cdFx0aWYgKCBzLmJlZm9yZVNlbmQgJiYgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBzdGF0ZSA9PT0gMiApICkge1xuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGZvciAoIGkgaW4geyBzdWNjZXNzOiAxLCBlcnJvcjogMSwgY29tcGxldGU6IDEgfSApIHtcblx0XHRcdGpxWEhSWyBpIF0oIHNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEdldCB0cmFuc3BvcnRcblx0XHR0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydFxuXHRcdGlmICggIXRyYW5zcG9ydCApIHtcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSAxO1xuXG5cdFx0XHQvLyBTZW5kIGdsb2JhbCBldmVudFxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFNlbmRcIiwgWyBqcVhIUiwgcyBdICk7XG5cdFx0XHR9XG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydChcInRpbWVvdXRcIik7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRzdGF0ZSA9IDE7XG5cdFx0XHRcdHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3IgaWYgbm90IGRvbmVcblx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XG5cdFx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdFx0Ly8gU2ltcGx5IHJldGhyb3cgb3RoZXJ3aXNlXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIENhbGxlZCBvbmNlXG5cdFx0XHRpZiAoIHN0YXRlID09PSAyICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXRlIGlzIFwiZG9uZVwiIG5vd1xuXHRcdFx0c3RhdGUgPSAyO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiTGFzdC1Nb2RpZmllZFwiKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiZXRhZ1wiKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbn
14938RcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoXCJhamF4U3RvcFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblx0XHQvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZFxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoe1xuXHRcdFx0dXJsOiB1cmwsXG5cdFx0XHR0eXBlOiBtZXRob2QsXG5cdFx0XHRkYXRhVHlwZTogdHlwZSxcblx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRzdWNjZXNzOiBjYWxsYmFja1xuXHRcdH0pO1xuXHR9O1xufSk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KHtcblx0XHR1cmw6IHVybCxcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHR3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgd3JhcDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWwuY2FsbCh0aGlzLCBpKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xuXG5cdFx0XHRcdHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHtcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybi
14938BlbGVtO1xuXHRcdFx0fSkuYXBwZW5kKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCh0aGlzLCBpKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHdyYXA6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKHRoaXMsIGkpIDogaHRtbCApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIWpRdWVyeS5ub2RlTmFtZSggdGhpcywgXCJib2R5XCIgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xuXHRcdFx0fVxuXHRcdH0pLmVuZCgpO1xuXHR9XG59KTtcblxuXG5qUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBTdXBwb3J0OiBPcGVyYSA8PSAxMi4xMlxuXHQvLyBPcGVyYSByZXBvcnRzIG9mZnNldFdpZHRocyBhbmQgb2Zmc2V0SGVpZ2h0cyBsZXNzIHRoYW4gemVybyBvbiBzb21lIGVsZW1lbnRzXG5cdHJldHVybiBlbGVtLm9mZnNldFdpZHRoIDw9IDAgJiYgZWxlbS5vZmZzZXRIZWlnaHQgPD0gMDtcbn07XG5qUXVlcnkuZXhwci5maWx0ZXJzLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICFqUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiggZWxlbSApO1xufTtcblxuXG5cblxudmFyIHIyMCA9IC8lMjAvZyxcblx0cmJyYWNrZXQgPSAvXFxbXFxdJC8sXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcblx0cnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFxuXHRyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHtcblx0dmFyIG5hbWU7XG5cblx0aWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7XG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiID8gaSA6IFwiXCIgKSArIFwiXVwiLCB2LCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxuXHRcdGFkZCggcHJlZml4LCBvYmogKTtcblx0fVxufVxuXG4vLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxuLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XG5cdHZhciBwcmVmaXgsXG5cdFx0cyA9IFtdLFxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlXG5cdFx0XHR2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFsdWUoKSA6ICggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuXG5cdGlmICggdHJhZGl0aW9uYWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHR0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDtcblx0fVxuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9KTtcblxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybi
14938B0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0pXG5cdFx0LmZpbHRlcihmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSlcblx0XHQubWFwKGZ1bmN0aW9uKCBpLCBlbGVtICkge1xuXHRcdFx0dmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpO1xuXG5cdFx0XHRyZXR1cm4gdmFsID09IG51bGwgP1xuXHRcdFx0XHRudWxsIDpcblx0XHRcdFx0alF1ZXJ5LmlzQXJyYXkoIHZhbCApID9cblx0XHRcdFx0XHRqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHR7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0fSkuZ2V0KCk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoKCBlICkge31cbn07XG5cbnZhciB4aHJJZCA9IDAsXG5cdHhockNhbGxiYWNrcyA9IHt9LFxuXHR4aHJTdWNjZXNzU3RhdHVzID0ge1xuXHRcdC8vIGZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXHRcdC8vIFN1cHBvcnQ6IElFOVxuXHRcdC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxuXHRcdDEyMjM6IDIwNFxuXHR9LFxuXHR4aHJTdXBwb3J0ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpO1xuXG4vLyBTdXBwb3J0OiBJRTlcbi8vIE9wZW4gcmVxdWVzdHMgbXVzdCBiZSBtYW51YWxseSBhYm9ydGVkIG9uIHVubG9hZCAoIzUyODApXG4vLyBTZWUgaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMjg1Njc0NiBmb3IgbW9yZSBpbmZvXG5pZiAoIHdpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0d2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIGZ1bmN0aW9uKCkge1xuXHRcdGZvciAoIHZhciBrZXkgaW4geGhyQ2FsbGJhY2tzICkge1xuXHRcdFx0eGhyQ2FsbGJhY2tzWyBrZXkgXSgpO1xuXHRcdH1cblx0fSk7XG59XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydChmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCksXG5cdFx0XHRcdFx0aWQgPSArK3hocklkO1xuXG5cdFx0XHRcdHhoci5vcGVuKCBvcHRpb25zLnR5cGUsIG9wdGlvbnMudXJsLCBvcHRpb25zLmFzeW5jLCBvcHRpb25zLnVzZXJuYW1lLCBvcHRpb25zLnBhc3N3b3JkICk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1
14938ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNldCBoZWFkZXJzXG5cdFx0XHRcdGZvciAoIGkgaW4gaGVhZGVycyApIHtcblx0XHRcdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB4aHJDYWxsYmFja3NbIGlkIF07XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrID0geGhyLm9ubG9hZCA9IHhoci5vbmVycm9yID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gZmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBBY2Nlc3NpbmcgYmluYXJ5LWRhdGEgcmVzcG9uc2VUZXh0IHRocm93cyBhbiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHRcdC8vICgjMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCA9PT0gXCJzdHJpbmdcIiA/IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogeGhyLnJlc3BvbnNlVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0fSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdHhoci5vbmVycm9yID0gY2FsbGJhY2soXCJlcnJvclwiKTtcblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0geGhyQ2FsbGJhY2tzWyBpZCBdID0gY2FsbGJhY2soXCJhYm9ydFwiKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIERvIHNlbmQgdGhlI
14938HJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbilcblx0XHRcdFx0XHR4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZVxualF1ZXJ5LmFqYXhTZXR1cCh7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIlxuXHR9LFxuXHRjb250ZW50czoge1xuXHRcdHNjcmlwdDogLyg/OmphdmF8ZWNtYSlzY3JpcHQvXG5cdH0sXG5cdGNvbnZlcnRlcnM6IHtcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTtcblx0XHRcdHJldHVybiB0ZXh0O1xuXHRcdH1cblx0fVxufSk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59KTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHNcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeShcIjxzY3JpcHQ+XCIpLnByb3Aoe1xuXHRcdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRcdGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCxcblx0XHRcdFx0XHRzcmM6IHMudXJsXG5cdFx0XHRcdH0pLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59KTtcblxuXG5cblxudmFyIG9sZENhbGxiYWNrcyA9IFtdLFxuXHRyanNvbnAgPSAvKD0pXFw/KD89JnwkKXxcXD9cXD8vO1xuXG4vLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzXG5qUXVlcnkuYWpheFNldHVwKHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59KTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJiAhKCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpICYmIHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiBcImRhdGFcIlxuXHRcdCk7XG5cblx0Ly8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzIFwianNvbnBcIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldFxuXHRpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09IFwianNvbnBcIiApIHtcblxuXHRcdC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXRcblx0XHRjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBqUXVlcnkuaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938ByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBmb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gUmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblx0XHRcdFx0Ly8gbWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBzYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkge1xuXHRcdFx0XHRvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkO1xuXHRcdH0pO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBkYXRhOiBzdHJpbmcgb2YgaHRtbFxuLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LCBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdHZhciBwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKSxcblx0XHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbMV0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7XG5cblx0aWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkge1xuXHRcdGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7XG59O1xuXG5cbi8vIEtlZXAgYSBjb3B5IG9mIHRoZSBvbGQgbG9hZCBtZXRob2RcbnZhciBfbG9hZCA9IGpRdWVyeS5mbi5sb2FkO1xuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHRpZiAoIHR5cGVvZiB1cmwgIT09IFwic3RyaW5nXCIgJiYgX2xvYWQgKSB7XG5cdFx0cmV0dXJuIF9sb2FkLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0fVxuXG5cdHZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsXG5cdFx0c2VsZiA9IHRoaXMsXG5cdFx0b2ZmID0gdXJsLmluZGV4T2YoXCIgXCIpO1xuXG5cdGlmICggb2ZmID49IDAgKSB7XG5cdFx0c2VsZWN0b3IgPSBqUXVlcnkudHJpbSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBpZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkXG5cdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxuXHRcdFx0ZGF0YTogcGFyYW1zXG5cdFx0fSkuZG9uZShmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeShcIjxkaXY+XCIpLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlI
14938HRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdH0pLmNvbXBsZXRlKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggY2FsbGJhY2ssIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxuLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHNcbmpRdWVyeS5lYWNoKCBbIFwiYWpheFN0YXJ0XCIsIFwiYWpheFN0b3BcIiwgXCJhamF4Q29tcGxldGVcIiwgXCJhamF4RXJyb3JcIiwgXCJhamF4U3VjY2Vzc1wiLCBcImFqYXhTZW5kXCIgXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSk7XG5cblxuXG5cbmpRdWVyeS5leHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSkubGVuZ3RoO1xufTtcblxuXG5cblxudmFyIGRvY0VsZW0gPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKipcbiAqIEdldHMgYSB3aW5kb3cgZnJvbSBhbiBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGdldFdpbmRvdyggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5cGUgPT09IDkgJiYgZWxlbS5kZWZhdWx0Vmlldztcbn1cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gP
14938SBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKFwiYXV0b1wiKSA+IC0xO1xuXG5cdFx0Ly8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXJcblx0XHQvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcblx0XHRpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkge1xuXHRcdFx0Y3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7XG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XG5cdFx0XHRjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwO1xuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xuXHRcdH1cblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGN1ck9mZnNldCApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0dmFyIGRvY0VsZW0sIHdpbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRib3ggPSB7IHRvcDogMCwgbGVmdDogMCB9LFxuXHRcdFx0ZG9jID0gZWxlbSAmJiBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cblx0XHRpZiAoICFkb2MgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHQvLyBNYWtlIHN1cmUgaXQncyBub3QgYSBkaXNjb25uZWN0ZWQgRE9NIG5vZGVcblx0XHRpZiAoICFqUXVlcnkuY29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHtcblx0XHRcdHJldHVybiBib3g7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogQmxhY2tCZXJyeSA1LCBpT1MgMyAob3JpZ2luYWwgaVBob25lKVxuXHRcdC8vIElmIHdlIGRvbid0IGhhdmUgZ0JDUiwganVzdCB1c2UgMCwwIHJhdGhlciB0aGFuIGVycm9yXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09IHN0cnVuZGVmaW5lZCApIHtcblx0XHRcdGJveCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0fVxuXHRcdHdpbiA9IGdldFdpbmRvdyggZG9jICk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogYm94LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0uY2xpZW50VG9wLFxuXHRcdFx0bGVmdDogYm94LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnRcblx0XHR9O1xuXHR9LFxuXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBGaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LCBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cdFx0XHQvLyBBc3N1bWUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHRoZXJlIHdoZW4gY29tcHV0ZWQgcG9zaXRpb24gaXMgZml4ZWRcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnRcblx0XHRcdG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7XG5cblx0XHRcdC8vIEdldCBjb3JyZWN0IG9mZnNldHNcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cdFx0XHRpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCBcImh0bWxcIiApICkge1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVyc1xuXHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHRvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
14938B0aGlzLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2NFbGVtO1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudCwgXCJodG1sXCIgKSAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkgKSB7XG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jRWxlbTtcblx0XHR9KTtcblx0fVxufSk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblx0XHRcdHZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTtcblxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICggd2luICkge1xuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXG5cdFx0XHRcdFx0IXRvcCA/IHZhbCA6IHdpbmRvdy5wYWdlWE9mZnNldCxcblx0XHRcdFx0XHR0b3AgPyB2YWwgOiB3aW5kb3cucGFnZVlPZmZzZXRcblx0XHRcdFx0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbVsgbWV0aG9kIF0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50cy5sZW5ndGgsIG51bGwgKTtcblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmk8NyssIENocm9tZTwzNytcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTIyOTI4MFxuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXHRcdFx0XHQvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXRcblx0XHRcdFx0cmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID9cblx0XHRcdFx0XHRqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOlxuXHRcdFx0XHRcdGNvbXB1dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0pO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0XHQvLyBBcyBvZiA1LzgvMjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1vYmlsZSBTYWZhcmksIGJ1dCB0aGVyZVxuXHRcdFx0XHRcdC8vIGlzbid0IGEgd2hvbGUgbG90IHdlIGNhbiBkby4gU2VlIHB1bGwgcmVxdWVzdCBhdCB0aGlzIFVSTCBmb3IgZGlzY3Vzc2lvbjpcblx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzc2NFxuXHRcdFx0XHRcdHJldHVybiBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybi
14938BNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUsIG51bGwgKTtcblx0XHR9O1xuXHR9KTtcbn0pO1xuXG5cbi8vIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5qUXVlcnkuZm4uc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5qUXVlcnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5mbi5hZGRCYWNrO1xuXG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0pO1xufVxuXG5cblxuXG52YXJcblx0Ly8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxuXG5cdC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF8kID0gd2luZG93LiQ7XG5cbmpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7XG5cdGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cuJCA9IF8kO1xuXHR9XG5cblx0aWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnk7XG59O1xuXG4vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRFxuLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KVxuaWYgKCB0eXBlb2Ygbm9HbG9iYWwgPT09IHN0cnVuZGVmaW5lZCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xuXG59KSk7XG5cbjsgYnJvd3NlcmlmeV9zaGltX19kZWZpbmVfX21vZHVsZV9fZXhwb3J0X18odHlwZW9mICQgIT0gXCJ1bmRlZmluZWRcIiA/ICQgOiB3aW5kb3cuJCk7XG5cbn0pLmNhbGwoZ2xvYmFsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZ1bmN0aW9uIGRlZmluZUV4cG9ydChleCkgeyBtb2R1bGUuZXhwb3J0cyA9IGV4OyB9KTtcblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbUp2ZDJWeVgyTnZiWEJ2Ym1WdWRITXZhbkYxWlhKNUwyUnBjM1F2YW5GMVpYSjVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklqc2dkbUZ5SUY5ZlluSnZkM05sY21sbWVWOXphR2x0WDNKbGNYVnBjbVZmWHoxeVpYRjFhWEpsT3lobWRXNWpkR2x2YmlCaWNtOTNjMlZ5YVdaNVUyaHBiU2h0YjJSMWJHVXNJR1Y0Y0c5eWRITXNJSEpsY1hWcGNtVXNJR1JsWm1sdVpTd2dZbkp2ZDNObGNtbG1lVjl6YUdsdFgxOWtaV1pwYm1WZlgyMXZaSFZzWlY5ZlpYaHdiM0owWDE4cElIdGNiaThxSVZ4dUlDb2dhbEYxWlhKNUlFcGhkbUZUWTNKcGNIUWdUR2xpY21GeWVTQjJNaTR4TGpSY2JpQXFJR2gwZEhBNkx5OXFjWFZsY25rdVkyOXRMMXh1SUNwY2JpQXFJRWx1WTJ4MVpHVnpJRk5wZW5wc1pTNXFjMXh1SUNvZ2FIUjBjRG92TDNOcGVucHNaV3B6TG1OdmJTOWNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF3TlN3Z01qQXhOQ0JxVVhWbGNua2dSbTkxYm1SaGRHbHZiaXdnU1c1akxpQmhibVFnYjNSb1pYSWdZMjl1ZEhKcFluVjBiM0p6WEc0Z0tpQlNaV3hsWVhObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlZjYmlBcUlHaDBkSEE2THk5cWNYVmxjbmt1YjNKbkwyeHBZMlZ1YzJWY2JpQXFYRzRnS2lCRVlYUmxPaUF5TURFMUxUQTBMVEk0VkRFMk9qQXhXbHh1SUNvdlhHNWNiaWhtZFc1amRHbHZiaWdnWjJ4dlltRnNMQ0JtWVdOMGIzSjVJQ2tnZTF4dVhHNWNkR2xtSUNnZ2RIbHdaVzltSUcxdlpIVnNaU0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUIwZVhCbGIyWWdiVzlrZFd4bExtVjRjRzl5ZEhNZ1BUMDlJRndpYjJKcVpXTjBYQ0lnS1NCN1hHNWNkRngwTHk4Z1JtOXlJRU52YlcxdmJrcFRJR0Z1WkNCRGIyMXRiMjVLVXkxc2FXdGxJR1Z1ZG1seWIyNXRaVzUwY3lCM2FHVnlaU0JoSUhCeWIzQmxjaUJnZDJsdVpHOTNZRnh1WEhSY2RDOHZJR2x6SUhCeVpYTmxiblFzSUdWNFpXTjFkR1VnZEdobElHWmhZM1J2Y25rZ1lXNWtJR2RsZENCcVVYVmxjbmt1WEc1Y2RGeDBMeThnUm05eUlHVnVkbWx5YjI1dFpXNTBjeUIwYUdGMElHUnZJRzV2ZENCb1lYWmxJR0VnWUhkcGJtUnZkMkFnZDJsMGFDQmhJR0JrYjJOMWJXVnVkR0JjYmx4MFhIUXZMeUFvYzNWamFDQmhjeUJPYjJSbExtcHpLU3dnWlhod2IzTmxJR0VnWm1GamRHOXllU0JoY3lCdGIyUjFiR1V1Wlhod2IzSjBjeTVjYmx4MFhIUXZMeUJVYUdseklHRmpZMlZ1ZEhWaGRHVnpJSFJvWlNCdVpXVmtJR1p2Y2lCMGFHVWdZM0psWVhScGIyNGdiMllnWVNCeVpXRnNJR0IzYVc1a2IzZGdMbHh1WEhSY2RDOHZJR1V1Wnk0Z2RtRnlJR3BSZFdWeWVTQTlJSEpsY1hWcGNtVW9YQ0pxY1hWbGNubGNJaWtvZDJsdVpHOTNLVHRjYmx4MFhIUXZMeUJUWldVZ2RHbGphMlYwSUNNeE5EVTBPU0JtYjNJZ2JXOXlaU0JwYm1adkxseHVYSFJjZEcxdlpIVnNaUzVsZUhCdmNuUnpJRDBnWjJ4dlltRnNMbVJ2WTNWdFpXNTBJRDljYmx4MFhIUmNkR1poWTNSdmNua29JR2RzYjJKaGJDd2dkSEoxWlNBcElEcGNibHgwWEhSY2RHWjFibU4wYVc5dUtDQjNJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JQ0YzTG1SdlkzVnRaVzUwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSFJvY205M0lHNWxkeUJGY25KdmNpZ2dYQ0pxVVhWbGNua2djbVZ4ZFdseVpYTWdZU0IzYVc1a2IzY2dkMmwwYUNCaElHUnZZM1Z0Wlc1MFhDSWdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSeVpYUjFjbTRnWm1GamRHOXllU2dnZHlBcE8xeHVYSFJjZEZ4MGZUdGNibHgwZlNCbGJITmxJSHRjYmx4MFhIUm1ZV04wY
14938jNKNUtDQm5iRzlpWVd3Z0tUdGNibHgwZlZ4dVhHNHZMeUJRWVhOeklIUm9hWE1nYVdZZ2QybHVaRzkzSUdseklHNXZkQ0JrWldacGJtVmtJSGxsZEZ4dWZTaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUQ4Z2QybHVaRzkzSURvZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUhkcGJtUnZkeXdnYm05SGJHOWlZV3dnS1NCN1hHNWNiaTh2SUZOMWNIQnZjblE2SUVacGNtVm1iM2dnTVRnclhHNHZMeUJEWVc0bmRDQmlaU0JwYmlCemRISnBZM1FnYlc5a1pTd2djMlYyWlhKaGJDQnNhV0p6SUdsdVkyeDFaR2x1WnlCQlUxQXVUa1ZVSUhSeVlXTmxYRzR2THlCMGFHVWdjM1JoWTJzZ2RtbGhJR0Z5WjNWdFpXNTBjeTVqWVd4c1pYSXVZMkZzYkdWbElHRnVaQ0JHYVhKbFptOTRJR1JwWlhNZ2FXWmNiaTh2SUhsdmRTQjBjbmtnZEc4Z2RISmhZMlVnZEdoeWIzVm5hQ0JjSW5WelpTQnpkSEpwWTNSY0lpQmpZV3hzSUdOb1lXbHVjeTRnS0NNeE16TXpOU2xjYmk4dlhHNWNiblpoY2lCaGNuSWdQU0JiWFR0Y2JseHVkbUZ5SUhOc2FXTmxJRDBnWVhKeUxuTnNhV05sTzF4dVhHNTJZWElnWTI5dVkyRjBJRDBnWVhKeUxtTnZibU5oZER0Y2JseHVkbUZ5SUhCMWMyZ2dQU0JoY25JdWNIVnphRHRjYmx4dWRtRnlJR2x1WkdWNFQyWWdQU0JoY25JdWFXNWtaWGhQWmp0Y2JseHVkbUZ5SUdOc1lYTnpNblI1Y0dVZ1BTQjdmVHRjYmx4dWRtRnlJSFJ2VTNSeWFXNW5JRDBnWTJ4aGMzTXlkSGx3WlM1MGIxTjBjbWx1Wnp0Y2JseHVkbUZ5SUdoaGMwOTNiaUE5SUdOc1lYTnpNblI1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGs3WEc1Y2JuWmhjaUJ6ZFhCd2IzSjBJRDBnZTMwN1hHNWNibHh1WEc1MllYSmNibHgwTHk4Z1ZYTmxJSFJvWlNCamIzSnlaV04wSUdSdlkzVnRaVzUwSUdGalkyOXlaR2x1WjJ4NUlIZHBkR2dnZDJsdVpHOTNJR0Z5WjNWdFpXNTBJQ2h6WVc1a1ltOTRLVnh1WEhSa2IyTjFiV1Z1ZENBOUlIZHBibVJ2ZHk1a2IyTjFiV1Z1ZEN4Y2JseHVYSFIyWlhKemFXOXVJRDBnWENJeUxqRXVORndpTEZ4dVhHNWNkQzh2SUVSbFptbHVaU0JoSUd4dlkyRnNJR052Y0hrZ2IyWWdhbEYxWlhKNVhHNWNkR3BSZFdWeWVTQTlJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaXdnWTI5dWRHVjRkQ0FwSUh0Y2JseDBYSFF2THlCVWFHVWdhbEYxWlhKNUlHOWlhbVZqZENCcGN5QmhZM1IxWVd4c2VTQnFkWE4wSUhSb1pTQnBibWwwSUdOdmJuTjBjblZqZEc5eUlDZGxibWhoYm1ObFpDZGNibHgwWEhRdkx5Qk9aV1ZrSUdsdWFYUWdhV1lnYWxGMVpYSjVJR2x6SUdOaGJHeGxaQ0FvYW5WemRDQmhiR3h2ZHlCbGNuSnZjaUIwYnlCaVpTQjBhSEp2ZDI0Z2FXWWdibTkwSUdsdVkyeDFaR1ZrS1Z4dVhIUmNkSEpsZEhWeWJpQnVaWGNnYWxGMVpYSjVMbVp1TG1sdWFYUW9JSE5sYkdWamRHOXlMQ0JqYjI1MFpYaDBJQ2s3WEc1Y2RIMHNYRzVjYmx4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMakZjYmx4MEx5OGdUV0ZyWlNCemRYSmxJSGRsSUhSeWFXMGdRazlOSUdGdVpDQk9RbE5RWEc1Y2RISjBjbWx0SUQwZ0wxNWJYRnh6WEZ4MVJrVkdSbHhjZUVFd1hTdDhXMXhjYzF4Y2RVWkZSa1pjWEhoQk1GMHJKQzluTEZ4dVhHNWNkQzh2SUUxaGRHTm9aWE1nWkdGemFHVmtJSE4wY21sdVp5Qm1iM0lnWTJGdFpXeHBlbWx1WjF4dVhIUnliWE5RY21WbWFYZ2dQU0F2WGkxdGN5MHZMRnh1WEhSeVpHRnphRUZzY0doaElEMGdMeTBvVzF4Y1pHRXRlbDBwTDJkcExGeHVYRzVjZEM4dklGVnpaV1FnWW5rZ2FsRjFaWEo1TG1OaGJXVnNRMkZ6WlNCaGN5QmpZV3hzWW1GamF5QjBieUJ5WlhCc1lXTmxLQ2xjYmx4MFptTmhiV1ZzUTJGelpTQTlJR1oxYm1OMGFXOXVLQ0JoYkd3c0lHeGxkSFJsY2lBcElIdGNibHgwWEhSeVpYUjFjbTRnYkdWMGRHVnlMblJ2VlhCd1pYSkRZWE5sS0NrN1hHNWNkSDA3WEc1Y2JtcFJkV1Z5ZVM1bWJpQTlJR3BSZFdWeWVTNXdjbTkwYjNSNWNHVWdQU0I3WEc1Y2RDOHZJRlJvWlNCamRYSnlaVzUwSUhabGNuTnBiMjRnYjJZZ2FsRjFaWEo1SUdKbGFXNW5JSFZ6WldSY2JseDBhbkYxWlhKNU9pQjJaWEp6YVc5dUxGeHVYRzVjZEdOdmJuTjBjblZqZEc5eU9pQnFVWFZsY25rc1hHNWNibHgwTHk4Z1UzUmhjblFnZDJsMGFDQmhiaUJsYlhCMGVTQnpaV3hsWTNSdmNseHVYSFJ6Wld4bFkzUnZjam9nWENKY0lpeGNibHh1WEhRdkx5QlVhR1VnWkdWbVlYVnNkQ0JzWlc1bmRHZ2diMllnWVNCcVVYVmxjbmtnYjJKcVpXTjBJR2x6SURCY2JseDBiR1Z1WjNSb09pQXdMRnh1WEc1Y2RIUnZRWEp5WVhrNklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RISmxkSFZ5YmlCemJHbGpaUzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnUjJWMElIUm9aU0JPZEdnZ1pXeGxiV1Z1ZENCcGJpQjBhR1VnYldGMFkyaGxaQ0JsYkdWdFpXNTBJSE5sZENCUFVseHVYSFF2THlCSFpYUWdkR2hsSUhkb2IyeGxJRzFoZEdOb1pXUWdaV3hsYldWdWRDQnpaWFFnWVhNZ1lTQmpiR1ZoYmlCaGNuSmhlVnh1WEhSblpYUTZJR1oxYm1OMGFXOXVLQ0J1ZFcwZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUc1MWJTQWhQU0J1ZFd4c0lEOWNibHh1WEhSY2RGeDBMeThnVW1WMGRYSnVJR3AxYzNRZ2RHaGxJRzl1WlNCbGJHVnRaVzUwSUdaeWIyMGdkR2hsSUhObGRGeHVYSFJjZEZ4MEtDQnVkVzBnUENBd0lEOGdkR2hwYzFzZ2JuVnRJQ3NnZEdocGN5NXNaVzVuZEdnZ1hTQTZJSFJvYVhOYklHNTFiU0JkSUNrZ09seHVYRzVjZEZ4MFhIUXZMeUJTWlhSMWNtNGdZV3hzSUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUJoSUdOc1pXRnVJR0Z5Y21GNVhHNWNkRngwWEhSemJHbGpaUzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnVkdGclpTQmhiaUJoY25KaGVTQnZaaUJsYkdWdFpXNTBjeUJoYm1RZ2NIVnphQ0JwZENCdmJuUnZJSFJvWlNCemRHRmphMXh1WEhRdkx5QW9jbVYwZFhKdWFXNW5JSFJvWlNCdVpYY2diV0YwWTJobFpDQmxiR1Z0Wlc1MElITmxkQ2xjYmx4MGNIVnphRk4wWVdOck9pQm1kVzVqZEdsdmJpZ2daV3hsYlhNZ0tTQjdYRzVjYmx4MFhIUXZMeUJDZFdsc1pDQmhJRzVsZHlCcVVYVmxjbmtnYldGMFkyaGxaQ0JsYkdWdFpXNTBJSE5sZEZ4dVhIUmNkSFpoY2lCeVpYUWdQU0JxVVhWbGNua3ViV1Z5WjJVb0lIUm9hWE11WTI5dWMzUnlkV04wYjNJb0tTd2daV3hsYlhNZ0tUdGNibHh1WEhSY2RDOHZJRUZrWkNCMGFHVWdiMnhrSUc5aWFtVmpkQ0J2Ym5SdklIUm9aU0J6ZEdGamF5QW9ZWE1nWVNCeVpXWmxjbVZ1WTJVcFhHNWNkRngwY21WMExuQnlaWFpQWW1wbFkzUWdQU0IwYUdsek8xeHVYSFJjZEhKbGRDNWpiMjUwWlhoMEl
14938EMGdkR2hwY3k1amIyNTBaWGgwTzF4dVhHNWNkRngwTHk4Z1VtVjBkWEp1SUhSb1pTQnVaWGRzZVMxbWIzSnRaV1FnWld4bGJXVnVkQ0J6WlhSY2JseDBYSFJ5WlhSMWNtNGdjbVYwTzF4dVhIUjlMRnh1WEc1Y2RDOHZJRVY0WldOMWRHVWdZU0JqWVd4c1ltRmpheUJtYjNJZ1pYWmxjbmtnWld4bGJXVnVkQ0JwYmlCMGFHVWdiV0YwWTJobFpDQnpaWFF1WEc1Y2RDOHZJQ2haYjNVZ1kyRnVJSE5sWldRZ2RHaGxJR0Z5WjNWdFpXNTBjeUIzYVhSb0lHRnVJR0Z5Y21GNUlHOW1JR0Z5WjNNc0lHSjFkQ0IwYUdseklHbHpYRzVjZEM4dklHOXViSGtnZFhObFpDQnBiblJsY201aGJHeDVMaWxjYmx4MFpXRmphRG9nWm5WdVkzUnBiMjRvSUdOaGJHeGlZV05yTENCaGNtZHpJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVpXRmphQ2dnZEdocGN5d2dZMkZzYkdKaFkyc3NJR0Z5WjNNZ0tUdGNibHgwZlN4Y2JseHVYSFJ0WVhBNklHWjFibU4wYVc5dUtDQmpZV3hzWW1GamF5QXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV3ZFhOb1UzUmhZMnNvSUdwUmRXVnllUzV0WVhBb2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJR2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWTJGc2JHSmhZMnN1WTJGc2JDZ2daV3hsYlN3Z2FTd2daV3hsYlNBcE8xeHVYSFJjZEgwcEtUdGNibHgwZlN4Y2JseHVYSFJ6YkdsalpUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hWemFGTjBZV05yS0NCemJHbGpaUzVoY0hCc2VTZ2dkR2hwY3l3Z1lYSm5kVzFsYm5SeklDa2dLVHRjYmx4MGZTeGNibHh1WEhSbWFYSnpkRG9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdVpYRW9JREFnS1R0Y2JseDBmU3hjYmx4dVhIUnNZWE4wT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxjU2dnTFRFZ0tUdGNibHgwZlN4Y2JseHVYSFJsY1RvZ1puVnVZM1JwYjI0b0lHa2dLU0I3WEc1Y2RGeDBkbUZ5SUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvTEZ4dVhIUmNkRngwYWlBOUlDdHBJQ3NnS0NCcElEd2dNQ0EvSUd4bGJpQTZJREFnS1R0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lHb2dQajBnTUNBbUppQnFJRHdnYkdWdUlEOGdXeUIwYUdselcycGRJRjBnT2lCYlhTQXBPMXh1WEhSOUxGeHVYRzVjZEdWdVpEb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hKbGRrOWlhbVZqZENCOGZDQjBhR2x6TG1OdmJuTjBjblZqZEc5eUtHNTFiR3dwTzF4dVhIUjlMRnh1WEc1Y2RDOHZJRVp2Y2lCcGJuUmxjbTVoYkNCMWMyVWdiMjVzZVM1Y2JseDBMeThnUW1Wb1lYWmxjeUJzYVd0bElHRnVJRUZ5Y21GNUozTWdiV1YwYUc5a0xDQnViM1FnYkdsclpTQmhJR3BSZFdWeWVTQnRaWFJvYjJRdVhHNWNkSEIxYzJnNklIQjFjMmdzWEc1Y2RITnZjblE2SUdGeWNpNXpiM0owTEZ4dVhIUnpjR3hwWTJVNklHRnljaTV6Y0d4cFkyVmNibjA3WEc1Y2JtcFJkV1Z5ZVM1bGVIUmxibVFnUFNCcVVYVmxjbmt1Wm00dVpYaDBaVzVrSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEhaaGNpQnZjSFJwYjI1ekxDQnVZVzFsTENCemNtTXNJR052Y0hrc0lHTnZjSGxKYzBGeWNtRjVMQ0JqYkc5dVpTeGNibHgwWEhSMFlYSm5aWFFnUFNCaGNtZDFiV1Z1ZEhOYk1GMGdmSHdnZTMwc1hHNWNkRngwYVNBOUlERXNYRzVjZEZ4MGJHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN4Y2JseDBYSFJrWldWd0lEMGdabUZzYzJVN1hHNWNibHgwTHk4Z1NHRnVaR3hsSUdFZ1pHVmxjQ0JqYjNCNUlITnBkSFZoZEdsdmJseHVYSFJwWmlBb0lIUjVjR1Z2WmlCMFlYSm5aWFFnUFQwOUlGd2lZbTl2YkdWaGJsd2lJQ2tnZTF4dVhIUmNkR1JsWlhBZ1BTQjBZWEpuWlhRN1hHNWNibHgwWEhRdkx5QlRhMmx3SUhSb1pTQmliMjlzWldGdUlHRnVaQ0IwYUdVZ2RHRnlaMlYwWEc1Y2RGeDBkR0Z5WjJWMElEMGdZWEpuZFcxbGJuUnpXeUJwSUYwZ2ZId2dlMzA3WEc1Y2RGeDBhU3NyTzF4dVhIUjlYRzVjYmx4MEx5OGdTR0Z1Wkd4bElHTmhjMlVnZDJobGJpQjBZWEpuWlhRZ2FYTWdZU0J6ZEhKcGJtY2diM0lnYzI5dFpYUm9hVzVuSUNod2IzTnphV0pzWlNCcGJpQmtaV1Z3SUdOdmNIa3BYRzVjZEdsbUlDZ2dkSGx3Wlc5bUlIUmhjbWRsZENBaFBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlBaGFsRjFaWEo1TG1selJuVnVZM1JwYjI0b2RHRnlaMlYwS1NBcElIdGNibHgwWEhSMFlYSm5aWFFnUFNCN2ZUdGNibHgwZlZ4dVhHNWNkQzh2SUVWNGRHVnVaQ0JxVVhWbGNua2dhWFJ6Wld4bUlHbG1JRzl1YkhrZ2IyNWxJR0Z5WjNWdFpXNTBJR2x6SUhCaGMzTmxaRnh1WEhScFppQW9JR2tnUFQwOUlHeGxibWQwYUNBcElIdGNibHgwWEhSMFlYSm5aWFFnUFNCMGFHbHpPMXh1WEhSY2RHa3RMVHRjYmx4MGZWeHVYRzVjZEdadmNpQW9JRHNnYVNBOElHeGxibWQwYURzZ2FTc3JJQ2tnZTF4dVhIUmNkQzh2SUU5dWJIa2daR1ZoYkNCM2FYUm9JRzV2YmkxdWRXeHNMM1Z1WkdWbWFXNWxaQ0IyWVd4MVpYTmNibHgwWEhScFppQW9JQ2h2Y0hScGIyNXpJRDBnWVhKbmRXMWxiblJ6V3lCcElGMHBJQ0U5SUc1MWJHd2dLU0I3WEc1Y2RGeDBYSFF2THlCRmVIUmxibVFnZEdobElHSmhjMlVnYjJKcVpXTjBYRzVjZEZ4MFhIUm1iM0lnS0NCdVlXMWxJR2x1SUc5d2RHbHZibk1nS1NCN1hHNWNkRngwWEhSY2RITnlZeUE5SUhSaGNtZGxkRnNnYm1GdFpTQmRPMXh1WEhSY2RGeDBYSFJqYjNCNUlEMGdiM0IwYVc5dWMxc2dibUZ0WlNCZE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUZCeVpYWmxiblFnYm1WMlpYSXRaVzVrYVc1bklHeHZiM0JjYmx4MFhIUmNkRngwYVdZZ0tDQjBZWEpuWlhRZ1BUMDlJR052Y0hrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWTI5dWRHbHVkV1U3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUXZMeUJTWldOMWNuTmxJR2xtSUhkbEozSmxJRzFsY21kcGJtY2djR3hoYVc0Z2IySnFaV04wY3lCdmNpQmhjbkpoZVhOY2JseDBYSFJjZEZ4MGFXWWdLQ0JrWldWd0lDWW1JR052Y0hrZ0ppWWdLQ0JxVVhWbGNua3VhWE5RYkdGcGJrOWlhbVZqZENoamIzQjVLU0I4ZkNBb1kyOXdlVWx6UVhKeVlYa2dQU0JxVVhWbGNua3VhWE5CY25KaG
14938VTaGpiM0I1S1NrZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhScFppQW9JR052Y0hsSmMwRnljbUY1SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWTI5d2VVbHpRWEp5WVhrZ1BTQm1ZV3h6WlR0Y2JseDBYSFJjZEZ4MFhIUmNkR05zYjI1bElEMGdjM0pqSUNZbUlHcFJkV1Z5ZVM1cGMwRnljbUY1S0hOeVl5a2dQeUJ6Y21NZ09pQmJYVHRjYmx4dVhIUmNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBYSFJqYkc5dVpTQTlJSE55WXlBbUppQnFVWFZsY25rdWFYTlFiR0ZwYms5aWFtVmpkQ2h6Y21NcElEOGdjM0pqSURvZ2UzMDdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RGeDBMeThnVG1WMlpYSWdiVzkyWlNCdmNtbG5hVzVoYkNCdlltcGxZM1J6TENCamJHOXVaU0IwYUdWdFhHNWNkRngwWEhSY2RGeDBkR0Z5WjJWMFd5QnVZVzFsSUYwZ1BTQnFVWFZsY25rdVpYaDBaVzVrS0NCa1pXVndMQ0JqYkc5dVpTd2dZMjl3ZVNBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJR0p5YVc1bklHbHVJSFZ1WkdWbWFXNWxaQ0IyWVd4MVpYTmNibHgwWEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnWTI5d2VTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSFJoY21kbGRGc2dibUZ0WlNCZElEMGdZMjl3ZVR0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRkpsZEhWeWJpQjBhR1VnYlc5a2FXWnBaV1FnYjJKcVpXTjBYRzVjZEhKbGRIVnliaUIwWVhKblpYUTdYRzU5TzF4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseDBMeThnVlc1cGNYVmxJR1p2Y2lCbFlXTm9JR052Y0hrZ2IyWWdhbEYxWlhKNUlHOXVJSFJvWlNCd1lXZGxYRzVjZEdWNGNHRnVaRzg2SUZ3aWFsRjFaWEo1WENJZ0t5QW9JSFpsY25OcGIyNGdLeUJOWVhSb0xuSmhibVJ2YlNncElDa3VjbVZ3YkdGalpTZ2dMMXhjUkM5bkxDQmNJbHdpSUNrc1hHNWNibHgwTHk4Z1FYTnpkVzFsSUdwUmRXVnllU0JwY3lCeVpXRmtlU0IzYVhSb2IzVjBJSFJvWlNCeVpXRmtlU0J0YjJSMWJHVmNibHgwYVhOU1pXRmtlVG9nZEhKMVpTeGNibHh1WEhSbGNuSnZjam9nWm5WdVkzUnBiMjRvSUcxelp5QXBJSHRjYmx4MFhIUjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0lHMXpaeUFwTzF4dVhIUjlMRnh1WEc1Y2RHNXZiM0E2SUdaMWJtTjBhVzl1S0NrZ2UzMHNYRzVjYmx4MGFYTkdkVzVqZEdsdmJqb2dablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMblI1Y0dVb2IySnFLU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lPMXh1WEhSOUxGeHVYRzVjZEdselFYSnlZWGs2SUVGeWNtRjVMbWx6UVhKeVlYa3NYRzVjYmx4MGFYTlhhVzVrYjNjNklHWjFibU4wYVc5dUtDQnZZbW9nS1NCN1hHNWNkRngwY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHOWlhaUE5UFQwZ2IySnFMbmRwYm1SdmR6dGNibHgwZlN4Y2JseHVYSFJwYzA1MWJXVnlhV002SUdaMWJtTjBhVzl1S0NCdlltb2dLU0I3WEc1Y2RGeDBMeThnY0dGeWMyVkdiRzloZENCT1lVNXpJRzUxYldWeWFXTXRZMkZ6ZENCbVlXeHpaU0J3YjNOcGRHbDJaWE1nS0c1MWJHeDhkSEoxWlh4bVlXeHpaWHhjSWx3aUtWeHVYSFJjZEM4dklDNHVMbUoxZENCdGFYTnBiblJsY25CeVpYUnpJR3hsWVdScGJtY3RiblZ0WW1WeUlITjBjbWx1WjNNc0lIQmhjblJwWTNWc1lYSnNlU0JvWlhnZ2JHbDBaWEpoYkhNZ0tGd2lNSGd1TGk1Y0lpbGNibHgwWEhRdkx5QnpkV0owY21GamRHbHZiaUJtYjNKalpYTWdhVzVtYVc1cGRHbGxjeUIwYnlCT1lVNWNibHgwWEhRdkx5QmhaR1JwYm1jZ01TQmpiM0p5WldOMGN5QnNiM056SUc5bUlIQnlaV05wYzJsdmJpQm1jbTl0SUhCaGNuTmxSbXh2WVhRZ0tDTXhOVEV3TUNsY2JseDBYSFJ5WlhSMWNtNGdJV3BSZFdWeWVTNXBjMEZ5Y21GNUtDQnZZbW9nS1NBbUppQW9iMkpxSUMwZ2NHRnljMlZHYkc5aGRDZ2diMkpxSUNrZ0t5QXhLU0ErUFNBd08xeHVYSFI5TEZ4dVhHNWNkR2x6VUd4aGFXNVBZbXBsWTNRNklHWjFibU4wYVc5dUtDQnZZbW9nS1NCN1hHNWNkRngwTHk4Z1RtOTBJSEJzWVdsdUlHOWlhbVZqZEhNNlhHNWNkRngwTHk4Z0xTQkJibmtnYjJKcVpXTjBJRzl5SUhaaGJIVmxJSGRvYjNObElHbHVkR1Z5Ym1Gc0lGdGJRMnhoYzNOZFhTQndjbTl3WlhKMGVTQnBjeUJ1YjNRZ1hDSmJiMkpxWldOMElFOWlhbVZqZEYxY0lseHVYSFJjZEM4dklDMGdSRTlOSUc1dlpHVnpYRzVjZEZ4MEx5OGdMU0IzYVc1a2IzZGNibHgwWEhScFppQW9JR3BSZFdWeWVTNTBlWEJsS0NCdlltb2dLU0FoUFQwZ1hDSnZZbXBsWTNSY0lpQjhmQ0J2WW1vdWJtOWtaVlI1Y0dVZ2ZId2dhbEYxWlhKNUxtbHpWMmx1Wkc5M0tDQnZZbW9nS1NBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUjlYRzVjYmx4MFhIUnBaaUFvSUc5aWFpNWpiMjV6ZEhKMVkzUnZjaUFtSmx4dVhIUmNkRngwWEhRaGFHRnpUM2R1TG1OaGJHd29JRzlpYWk1amIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXNJRndpYVhOUWNtOTBiM1I1Y0dWUFpsd2lJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWm1Gc2MyVTdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdTV1lnZEdobElHWjFibU4wYVc5dUlHaGhjMjRuZENCeVpYUjFjbTVsWkNCaGJISmxZV1I1TENCM1pTZHlaU0JqYjI1bWFXUmxiblFnZEdoaGRGeHVYSFJjZEM4dklIeHZZbXA4SUdseklHRWdjR3hoYVc0Z2IySnFaV04wTENCamNtVmhkR1ZrSUdKNUlIdDlJRzl5SUdOdmJuTjBjblZqZEdWa0lIZHBkR2dnYm1WM0lFOWlhbVZqZEZ4dVhIUmNkSEpsZEhWeWJpQjBjblZsTzF4dVhIUjlMRnh1WEc1Y2RHbHpSVzF3ZEhsUFltcGxZM1E2SUdaMWJtTjBhVzl1S0NCdlltb2dLU0I3WEc1Y2RGeDBkbUZ5SUc1aGJXVTdYRzVjZEZ4MFptOXlJQ2dnYm1GdFpTQnBiaUJ2WW1vZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1ptRnNjMlU3WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSOUxGeHVYRzVjZEhSNWNHVTZJR1oxYm1OMGFXOXVLQ0J2WW1vZ0tTQjdYRzVjZEZ4MGFXWWdLQ0J2WW1vZ1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCdlltb2dLeUJjSWx3aU8xeHVYSFJjZEgxY2JseDBYSFF2THlCVGRYQndiM0owT2lCQmJtUnliMmxrUERRdU1Dd2dhVTlUUERZZ0tHWjFibU4wYVc5dWFYTm9JRkpsWjBWNGNDbGNibHgwWEhSeVpYUjFjbTRnZEhsd1pXOW1JRzlpYWlBOVBUMGdYQ0p2WW1wbFkzUmNJaUI4ZkNCMGVYQmxiMllnYjJKcUlEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1AxeHVYSFJjZEZ4MFkyeGhjM015ZEhsd1pWc2dkRzlUZEhKcGJtY3VZMkZzYkNodlltb3BJRjBnZkh3Z1hDSnZZbXBsWTNSY0lpQTZYRzVjZEZ4MFhIUjBlWEJsYjJZZ2IySnFPMXh1WEhSOUxGeHVYRzVjZEM4dklFVjJZV3gxWVhSbGN5QmhJSE5qY21sd2RDQnBiaUJoSUdkc2IySmhiQ0JqYjI1MFpYaDBYRzVjZEdkc2IySmhiRVYyWVd3NklHWjFibU4wYVc5dUtDQmpiMlJsSUNrZ2UxeHVYSFJjZEhaaGNpQnpZM0pwY0hRc1hHNWNkRngwWEhScGJtUnBjbVZqZENBOUlHVjJZV3c3WEc1Y2JseDBYSFJqYjJSbElEMGdhbEYxWlhKNUxuUnlhVzBvSUdOdlpHVWdLVHRjYmx4dVhIUmNkR2xtSUNnZ1kyOWtaU0FwSUh0Y2JseDBYSFJjZEM4dklFbG1JSFJvWlNCamIyUmxJR2x1WTJ4MVpHVnpJR0VnZG1Gc2FXUXNJSEJ5YjJ4dlozVmxJSEJ2YzJsMGFXOXVYRzVjZEZ4MFhIUXZMeUJ6ZEhKcFkzUWdiVzlrWlNCd2NtRm5iV0VzSUdWNFpXTjFkR1VnWTI5a1pTQmllU0JwYm
149381wbFkzUnBibWNnWVZ4dVhIUmNkRngwTHk4Z2MyTnlhWEIwSUhSaFp5QnBiblJ2SUhSb1pTQmtiMk4xYldWdWRDNWNibHgwWEhSY2RHbG1JQ2dnWTI5a1pTNXBibVJsZUU5bUtGd2lkWE5sSUhOMGNtbGpkRndpS1NBOVBUMGdNU0FwSUh0Y2JseDBYSFJjZEZ4MGMyTnlhWEIwSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2hjSW5OamNtbHdkRndpS1R0Y2JseDBYSFJjZEZ4MGMyTnlhWEIwTG5SbGVIUWdQU0JqYjJSbE8xeHVYSFJjZEZ4MFhIUmtiMk4xYldWdWRDNW9aV0ZrTG1Gd2NHVnVaRU5vYVd4a0tDQnpZM0pwY0hRZ0tTNXdZWEpsYm5ST2IyUmxMbkpsYlc5MlpVTm9hV3hrS0NCelkzSnBjSFFnS1R0Y2JseDBYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFF2THlCUGRHaGxjbmRwYzJVc0lHRjJiMmxrSUhSb1pTQkVUMDBnYm05a1pTQmpjbVZoZEdsdmJpd2dhVzV6WlhKMGFXOXVYRzVjZEZ4MFhIUXZMeUJoYm1RZ2NtVnRiM1poYkNCaWVTQjFjMmx1WnlCaGJpQnBibVJwY21WamRDQm5iRzlpWVd3Z1pYWmhiRnh1WEhSY2RGeDBYSFJwYm1ScGNtVmpkQ2dnWTI5a1pTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFF2THlCRGIyNTJaWEowSUdSaGMyaGxaQ0IwYnlCallXMWxiRU5oYzJVN0lIVnpaV1FnWW5rZ2RHaGxJR056Y3lCaGJtUWdaR0YwWVNCdGIyUjFiR1Z6WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRWxGT1MweE1TdGNibHgwTHk4Z1RXbGpjbTl6YjJaMElHWnZjbWR2ZENCMGJ5Qm9kVzF3SUhSb1pXbHlJSFpsYm1SdmNpQndjbVZtYVhnZ0tDTTVOVGN5S1Z4dVhIUmpZVzFsYkVOaGMyVTZJR1oxYm1OMGFXOXVLQ0J6ZEhKcGJtY2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlITjBjbWx1Wnk1eVpYQnNZV05sS0NCeWJYTlFjbVZtYVhnc0lGd2liWE10WENJZ0tTNXlaWEJzWVdObEtDQnlaR0Z6YUVGc2NHaGhMQ0JtWTJGdFpXeERZWE5sSUNrN1hHNWNkSDBzWEc1Y2JseDBibTlrWlU1aGJXVTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQnVZVzFsSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdExtNXZaR1ZPWVcxbElDWW1JR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFI5TEZ4dVhHNWNkQzh2SUdGeVozTWdhWE1nWm05eUlHbHVkR1Z5Ym1Gc0lIVnpZV2RsSUc5dWJIbGNibHgwWldGamFEb2dablZ1WTNScGIyNG9JRzlpYWl3Z1kyRnNiR0poWTJzc0lHRnlaM01nS1NCN1hHNWNkRngwZG1GeUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQnZZbW91YkdWdVozUm9MRnh1WEhSY2RGeDBhWE5CY25KaGVTQTlJR2x6UVhKeVlYbHNhV3RsS0NCdlltb2dLVHRjYmx4dVhIUmNkR2xtSUNnZ1lYSm5jeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dhWE5CY25KaG
14938VTQXBJSHRjYmx4MFhIUmNkRngwWm05eUlDZ2dPeUJwSUR3Z2JHVnVaM1JvT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRtRnNkV1VnUFNCallXeHNZbUZqYXk1aGNIQnNlU2dnYjJKcVd5QnBJRjBzSUdGeVozTWdLVHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdQVDA5SUdaaGJITmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJtYjNJZ0tDQnBJR2x1SUc5aWFpQXBJSHRjYmx4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdOaGJHeGlZV05yTG1Gd2NHeDVLQ0J2WW1wYklHa2dYU3dnWVhKbmN5QXBPMXh1WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0IyWVd4MVpTQTlQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkQzh2SUVFZ2MzQmxZMmxoYkN3Z1ptRnpkQ3dnWTJGelpTQm1iM0lnZEdobElHMXZjM1FnWTI5dGJXOXVJSFZ6WlNCdlppQmxZV05vWEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHbG1JQ2dnYVhOQmNuSmhlU0FwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnT3lCcElEd2diR1Z1WjNSb095QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RGeDBkbUZzZFdVZ1BTQmpZV3hzWW1GamF5NWpZV3hzS0NCdlltcGJJR2tnWFN3Z2FTd2diMkpxV3lCcElGMGdLVHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdQVDA5SUdaaGJITmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJtYjNJZ0tDQnBJR2x1SUc5aWFpQXBJSHRjYmx4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdOaGJHeGlZV05yTG1OaGJHd29JRzlpYWxzZ2FTQmRMQ0JwTENCdlltcGJJR2tnWFNBcE8xeHVYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnYjJKcU8xeHVYSFI5TEZ4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1E4TkM0eFhHNWNkSFJ5YVcwNklHWjFibU4wYVc5dUtDQjBaWGgwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUIwWlhoMElEMDlJRzUxYkd3Z1AxeHVYSFJjZEZ4MFhDSmNJaUE2WEc1Y2RGeDBYSFFvSUhSbGVIUWdLeUJjSWx3aUlDa3VjbVZ3YkdGalpTZ2djblJ5YVcwc0lGd2lYQ0lnS1R0Y2JseDBmU3hjYmx4dVhIUXZMeUJ5WlhOMWJIUnpJR2x6SUdadmNpQnBiblJsY201aGJDQjFjMkZuWlNCdmJteDVYRzVjZEcxaGEyVkJjbkpoZVRvZ1puVnVZM1JwYjI0b0lHRnljaXdnY21WemRXeDBjeUFwSUh0Y2JseDBYSFIyWVhJZ2NtVjBJRDBnY21WemRXeDBjeUI4ZkNCYlhUdGNibHh1WEhSY2RHbG1JQ2dnWVhKeUlDRTlJRzUxYkd3Z0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUdselFYSnlZWGxzYVd0bEtDQlBZbXBsWTNRb1lYSnlLU0FwSUNrZ2UxeHVYSFJjZEZ4MFhIUnFVWFZsY25rdWJXVnlaMlVvSUhKbGRDeGNibHgwWEhSY2RGeDBYSFIwZVhCbGIyWWdZWEp5SUQwOVBTQmNJbk4wY21sdVoxd2lJRDljYmx4MFhIUmNkRngwWEhSYklHRnljaUJkSURvZ1lYSnlYRzVjZEZ4MFhIUmNkQ2s3WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJ3ZFhOb0xtTmhiR3dvSUhKbGRDd2dZWEp5SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJSEpsZER0Y2JseDBmU3hjYmx4dVhIUnBia0Z5Y21GNU9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1lYSnlMQ0JwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJoY25JZ1BUMGdiblZzYkNBL0lDMHhJRG9nYVc1a1pYaFBaaTVqWVd4c0tDQmhjbklzSUdWc1pXMHNJR2tnS1R0Y2JseDBmU3hjYmx4dVhIUnRaWEpuWlRvZ1puVnVZM1JwYjI0b0lHWnBjbk4wTENCelpXTnZibVFnS1NCN1hHNWNkRngwZG1GeUlHeGxiaUE5SUN0elpXTnZibVF1YkdWdVozUm9MRnh1WEhSY2RGeDBhaUE5SURBc1hHNWNkRngwWEhScElEMGdabWx5YzNRdWJHVnVaM1JvTzF4dVhHNWNkRngwWm05eUlDZ2dPeUJxSUR3Z2JHVnVPeUJxS3lzZ0tTQjdYRzVjZEZ4MFhIUm1hWEp6ZEZzZ2FTc3JJRjBnUFNCelpXTnZibVJiSUdvZ1hUdGNibHgwWEhSOVhHNWNibHgwWEhSbWFYSnpkQzVzWlc1bmRHZ2dQU0JwTzF4dVhHNWNkRngwY21WMGRYSnVJR1pwY25OME8xeHVYSFI5TEZ4dVhHNWNkR2R5WlhBNklHWjFibU4wYVc5dUtDQmxiR1Z0Y3l3Z1kyRnNiR0poWTJzc0lHbHVkbVZ5ZENBcElIdGNibHgwWEhSMllYSWdZMkZzYkdKaFkydEpiblpsY25ObExGeHVYSFJjZEZ4MGJXRjBZMmhsY3lBOUlGdGRMRnh1WEhSY2RGeDBhU0E5SURBc1hHNWNkRngwWEhSc1pXNW5kR2dnUFNCbGJHVnRjeTVzWlc1bmRHZ3NYRzVjZEZ4MFhIUmpZV3hzWW1GamEwVjRjR1ZqZENBOUlDRnBiblpsY25RN1hHNWNibHgwWEhRdkx5QkhieUIwYUhKdmRXZG9JSFJvWlNCaGNuSmhlU3dnYjI1c2VTQnpZWFpwYm1jZ2RHaGxJR2wwWlcxelhHNWNkRngwTHk4Z2RHaGhkQ0J3WVhOeklIUm9aU0IyWVd4cFpHRjBiM0lnWm5WdVkzUnBiMjVjYmx4MFhIUm1iM0lnS0NBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lBcElIdGNibHgwWEhSY2RHTmhiR3hpWVdOclNXNTJaWEp6WlNBOUlDRmpZV3hzWW1GamF5Z2daV3hsYlhOYklHa2dYU3dnYVNBcE8xeHVYSFJjZEZ4MGFXWWdLQ0JqWVd4c1ltRmphMGx1ZG1WeWMyVWdJVDA5SUdOaGJHeGlZV05yUlhod1pXTjBJQ2tnZTF4dVhIUmNkRngwWEhSdFlYUmphR1Z6TG5CMWMyZ29JR1ZzWlcxeld5QnBJRjBnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdiV0YwWTJobGN6dGNibHgwZlN4Y2JseHVYSFF2THlCaGNtY2dhWE1nWm05eUlHbHVkR1Z5Ym1Gc0lIVnpZV2RsSUc5dWJIbGNibHgwYldGd09pQm1kVzVqZEdsdmJpZ2daV3hsYlhNc0lHTmhiR3hpWVdOckxDQmhjbWNnS1NCN1hHNWNkRngwZG1GeUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQmxiR1Z0Y3k1c1pXNW5kR2dzWEc1Y2RGeDBYSFJwYzBGeWNtRjVJRDBnYVhOQmNuSmhlV3hwYTJVb0lHVnNaVzF6SUNrc1hHNWNkRngwWEhSeVpYUWdQU0JiWFR0Y2JseHVYSFJjZEM4dklFZHZJSFJvY205MVoyZ2dkR2hsSUdGeWNtRjVMQ0IwY21GdWMyeGhkR2x1WnlCbFlXTm9JRzltSUhSb1pTQnBkR1Z0Y3lCMGJ5QjBhR1ZwY2lCdVpYY2dkbUZzZFdWelhHNWNkRngwYVdZZ0tDQnBjMEZ5Y21GNUlDa2dlMXh1WEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkdWdVozUm9PeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkhWbElEMGdZMkZzYkdKaFkyc29JR1ZzWlcxeld5QnBJRjBzSUdrc0lHRnlaeUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdJVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwWEhSeVpYUXVjSFZ6YUNnZ2RtRnNkV1VnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdSMjhnZEdoeWIzVm5hQ0JsZG1WeWVTQnJaWGtnYjI0Z2RHaGxJRzlpYW1WamRDeGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWm05eUlDZ2dhU0JwYmlCbGJHVnRjeUFwSUh0Y2JseDBYSFJjZEZ4MGRtRnNkV1VnUFNCallXeHNZbUZqYXlnZ1pXeGxiWE5iSUdrZ1hTd2dhU3dnWVhKbklDazdYRzVjYmx4MFhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBaFBTQnVkV3hzSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEM1d2RYTm9LQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUm14aGRIUmxiaUJoYm5rZ2JtVnpkR1ZrSUdGeWNtRjVjMXh1WEhSY2RISmxkSFZ5YmlCamIyNWpZWFF1WVhCd2JIa29JRnRkTENCeVpYUWdLVHRjYmx4MGZTeGNibHh1WEhRdkx5QkJJR2RzYjJKaGJDQkhWVWxFSUdOdmRXNTBaWElnWm05eUlHOWlhbVZqZEhOY2JseDBaM1ZwWkRvZ01TeGNibHh1WEhRdkx5QkNhVzVrSUdFZ1puVnVZM1JwYjI0Z2RHOGdZU0JqYjI1MFpYaDBMQ0J2Y0hScGIyNWhiR3g1SUhCaGNuUnBZV3hzZVNCaGNIQnNlV2x1WnlCaGJubGNibHgwTHk4Z1lYSm5kVzFsYm5SekxseHVYSFJ3Y205NGVUb2dablZ1WTNScGIyNG9JR1p1TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQjBiWEFzSUdGeVozTXNJSEJ5YjNoNU8xeHVYRzVjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdZMjl1ZEdWNGRDQTlQVDBnWENKemRISnBibWRjSWlBcElIdGNibHgwWEhSY2RIUnRjQ0E5SUdadVd5QmpiMjUwWlhoMElGMDdYRzVjZEZ4MFhIUmpiMjUwWlhoMEl
14938EMGdabTQ3WEc1Y2RGeDBYSFJtYmlBOUlIUnRjRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJSZFdsamF5QmphR1ZqYXlCMGJ5QmtaWFJsY20xcGJtVWdhV1lnZEdGeVoyVjBJR2x6SUdOaGJHeGhZbXhsTENCcGJpQjBhR1VnYzNCbFkxeHVYSFJjZEM4dklIUm9hWE1nZEdoeWIzZHpJR0VnVkhsd1pVVnljbTl5TENCaWRYUWdkMlVnZDJsc2JDQnFkWE4wSUhKbGRIVnliaUIxYm1SbFptbHVaV1F1WEc1Y2RGeDBhV1lnS0NBaGFsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lHWnVJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUZOcGJYVnNZWFJsWkNCaWFXNWtYRzVjZEZ4MFlYSm5jeUE5SUhOc2FXTmxMbU5oYkd3b0lHRnlaM1Z0Wlc1MGN5d2dNaUFwTzF4dVhIUmNkSEJ5YjNoNUlEMGdablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdabTR1WVhCd2JIa29JR052Ym5SbGVIUWdmSHdnZEdocGN5d2dZWEpuY3k1amIyNWpZWFFvSUhOc2FXTmxMbU5oYkd3b0lHRnlaM1Z0Wlc1MGN5QXBJQ2tnS1R0Y2JseDBYSFI5TzF4dVhHNWNkRngwTHk4Z1UyVjBJSFJvWlNCbmRXbGtJRzltSUhWdWFYRjFaU0JvWVc1a2JHVnlJSFJ2SUhSb1pTQnpZVzFsSUc5bUlHOXlhV2RwYm1Gc0lHaGhibVJzWlhJc0lITnZJR2wwSUdOaGJpQmlaU0J5WlcxdmRtVmtYRzVjZEZ4MGNISnZlSGt1WjNWcFpDQTlJR1p1TG1kMWFXUWdQU0JtYmk1bmRXbGtJSHg4SUdwUmRXVnllUzVuZFdsa0t5czdYRzVjYmx4MFhIUnlaWFIxY200Z2NISnZlSGs3WEc1Y2RIMHNYRzVjYmx4MGJtOTNPaUJFWVhSbExtNXZkeXhjYmx4dVhIUXZMeUJxVVhWbGNua3VjM1Z3Y0c5eWRDQnBjeUJ1YjNRZ2RYTmxaQ0JwYmlCRGIzSmxJR0oxZENCdmRHaGxjaUJ3Y205cVpXTjBjeUJoZEhSaFkyZ2dkR2hsYVhKY2JseDBMeThnY0hKdmNHVnlkR2xsY3lCMGJ5QnBkQ0J6YnlCcGRDQnVaV1ZrY3lCMGJ5QmxlR2x6ZEM1Y2JseDBjM1Z3Y0c5eWREb2djM1Z3Y0c5eWRGeHVmU2s3WEc1Y2JpOHZJRkJ2Y0hWc1lYUmxJSFJvWlNCamJHRnpjekowZVhCbElHMWhjRnh1YWxGMVpYSjVMbVZoWTJnb1hDSkNiMjlzWldGdUlFNTFiV0psY2lCVGRISnBibWNnUm5WdVkzUnBiMjRnUVhKeVlYa2dSR0YwWlNCU1pXZEZlSEFnVDJKcVpXTjBJRVZ5Y205eVhDSXVjM0JzYVhRb1hDSWdYQ0lwTENCbWRXNWpkR2x2YmlocExDQnVZVzFsS1NCN1hHNWNkR05zWVhOek1uUjVjR1ZiSUZ3aVcyOWlhbVZqZENCY0lpQXJJRzVoYldVZ0t5QmNJbDFjSWlCZElEMGdibUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BPMXh1ZlNrN1hHNWNibVoxYm1OMGFXOXVJR2x6UVhKeVlYbHNhV3RsS0NCdlltb2dLU0I3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nYVU5VElEZ3VNaUFvYm05MElISmxjSEp2WkhWamFXSnNaU0JwYmlCemFXMTFiR0YwYjNJcFhHNWNkQzh2SUdCcGJtQWdZMmhsWTJzZ2RYTmxaQ0IwYnlCd2NtVjJaVzUwSUVwSlZDQmxjbkp2Y2lBb1oyZ3RNakUwTlNsY2JseDBMeThnYUdGelQzZHVJR2x6YmlkMElIVnpaV1FnYUdWeVpTQmtkV1VnZEc4Z1ptRnNjMlVnYm1WbllYUnBkbVZ6WEc1Y2RDOHZJSEpsWjJGeVpHbHVaeUJPYjJSbGJHbHpkQ0JzWlc1bmRHZ2dhVzRnU1VWY2JseDBkbUZ5SUd4bGJtZDBhQ0E5SUZ3aWJHVnVaM1JvWENJZ2FXNGdiMkpxSUNZbUlHOWlhaTVzWlc1bmRHZ3NYRzVjZEZ4MGRIbHdaU0E5SUdwUmRXVnllUzUwZVhCbEtDQnZZbW9nS1R0Y2JseHVYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUI4ZkNCcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUc5aWFpQXBJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseDBmVnh1WEc1Y2RHbG1JQ2dnYjJKcUxtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlHeGxibWQwYUNBcElIdGNibHgwWEhSeVpYUjFjbTRnZEhKMVpUdGNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQjBlWEJsSUQwOVBTQmNJbUZ5Y21GNVhDSWdmSHdnYkdWdVozUm9JRDA5UFNBd0lIeDhYRzVjZEZ4MGRIbHdaVzltSUd4bGJtZDBhQ0E5UFQwZ1hDSnVkVzFpWlhKY0lpQW1KaUJzWlc1bmRHZ2dQaUF3SUNZbUlDZ2diR1Z1WjNSb0lDMGdNU0FwSUdsdUlHOWlhanRjYm4xY2JuWmhjaUJUYVhwNmJHVWdQVnh1THlvaFhHNGdLaUJUYVhwNmJHVWdRMU5USUZObGJHVmpkRzl5SUVWdVoybHVaU0IyTWk0eUxqQXRjSEpsWEc0Z0tpQm9kSFJ3T2k4dmMybDZlbXhsYW5NdVkyOXRMMXh1SUNwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURBNExDQXlNREUwSUdwUmRXVnllU0JHYjNWdVpHRjBhVzl1TENCSmJtTXVJR0Z1WkNCdmRHaGxjaUJqYjI1MGNtbGlkWFJ2Y25OY2JpQXFJRkpsYkdWaGMyVmtJSFZ1WkdWeUlIUm9aU0JOU1ZRZ2JHbGpaVzV6WlZ4dUlDb2dhSFIwY0RvdkwycHhkV1Z5ZVM1dmNtY3ZiR2xqWlc1elpWeHVJQ3BjYmlBcUlFUmhkR1U2SURJd01UUXRNVEl0TVRaY2JpQXFMMXh1S0daMWJtTjBhVzl1S0NCM2FXNWtiM2NnS1NCN1hHNWNiblpoY2lCcExGeHVYSFJ6ZFhCd2IzSjBMRnh1WEhSRmVIQnlMRnh1WEhSblpYUlVaWGgwTEZ4dVhIUnBjMWhOVEN4Y2JseDBkRzlyWlc1cGVtVXNYRzVjZEdOdmJYQnBiR1VzWEc1Y2RITmxiR1ZqZEN4Y2JseDBiM1YwWlhKdGIzTjBRMjl1ZEdWNGRDeGNibHgwYzI5eWRFbHVjSFYwTEZ4dVhIUm9ZWE5FZFhCc2FXTmhkR1VzWEc1Y2JseDBMeThnVEc5allXd2daRzlqZFcxbGJuUWdkbUZ5YzF4dVhIUnpaWFJFYjJOMWJXVnVkQ3hjYmx4MFpHOWpkVzFsYm5Rc1hHNWNkR1J2WTBWc1pXMHNYRzVjZEdSdlkzVnRaVzUwU1hOSVZFMU1MRnh1WEhSeVluVm5aM2xSVTBFc1hHNWNkSEppZFdkbmVVMWhkR05vWlhNc1hHNWNkRzFoZEdOb1pYTXNYRzVjZEdOdmJuUmhhVzV6TEZ4dVhHNWNkQzh2SUVsdWMzUmhibU5sTFhOd1pXTnBabWxqSUdSaGRHRmNibHgwWlhod1lXNWtieUE5SUZ3aWMybDZlbXhsWENJZ0t5QXhJQ29nYm1WM0lFUmhkR1VvS1N4Y2JseDBjSEpsWm1WeWNtVmtSRzlqSUQwZ2QybHVaRzkzTG1SdlkzVnRaVzUwTEZ4dVhIUmthWEp5ZFc1eklEMGdNQ3hjYmx4MFpHOXVaU0E5SURBc1hHNWNkR05zWVhOelEyRmphR1VnUFNCamNtVmhkR1ZEWVdOb1pTZ3BMRnh1WEhSMGIydGxia05oWTJobElEMGdZM0
14938psWVhSbFEyRmphR1VvS1N4Y2JseDBZMjl0Y0dsc1pYSkRZV05vWlNBOUlHTnlaV0YwWlVOaFkyaGxLQ2tzWEc1Y2RITnZjblJQY21SbGNpQTlJR1oxYm1OMGFXOXVLQ0JoTENCaUlDa2dlMXh1WEhSY2RHbG1JQ2dnWVNBOVBUMGdZaUFwSUh0Y2JseDBYSFJjZEdoaGMwUjFjR3hwWTJGMFpTQTlJSFJ5ZFdVN1hHNWNkRngwZlZ4dVhIUmNkSEpsZEhWeWJpQXdPMXh1WEhSOUxGeHVYRzVjZEM4dklFZGxibVZ5WVd3dGNIVnljRzl6WlNCamIyNXpkR0Z1ZEhOY2JseDBUVUZZWDA1RlIwRlVTVlpGSUQwZ01TQThQQ0F6TVN4Y2JseHVYSFF2THlCSmJuTjBZVzVqWlNCdFpYUm9iMlJ6WEc1Y2RHaGhjMDkzYmlBOUlDaDdmU2t1YUdGelQzZHVVSEp2Y0dWeWRIa3NYRzVjZEdGeWNpQTlJRnRkTEZ4dVhIUndiM0FnUFNCaGNuSXVjRzl3TEZ4dVhIUndkWE5vWDI1aGRHbDJaU0E5SUdGeWNpNXdkWE5vTEZ4dVhIUndkWE5vSUQwZ1lYSnlMbkIxYzJnc1hHNWNkSE5zYVdObElEMGdZWEp5TG5Oc2FXTmxMRnh1WEhRdkx5QlZjMlVnWVNCemRISnBjSEJsWkMxa2IzZHVJR2x1WkdWNFQyWWdZWE1nYVhRbmN5Qm1ZWE4wWlhJZ2RHaGhiaUJ1WVhScGRtVmNibHgwTHk4Z2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdmRHaHZjaTFwYm1SbGVHOW1MWFp6TFdadmNpODFYRzVjZEdsdVpHVjRUMllnUFNCbWRXNWpkR2x2YmlnZ2JHbHpkQ3dnWld4bGJTQXBJSHRjYmx4MFhIUjJZWElnYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzRnUFNCc2FYTjBMbXhsYm1kMGFEdGNibHgwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzQ3SUdrckt5QXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2JHbHpkRnRwWFNBOVBUMGdaV3hsYlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFJjZEhKbGRIVnliaUF0TVR0Y2JseDBmU3hjYmx4dVhIUmliMjlzWldGdWN5QTlJRndpWTJobFkydGxaSHh6Wld4bFkzUmxaSHhoYzNsdVkzeGhkWFJ2Wm05amRYTjhZWFYwYjNCc1lYbDhZMjl1ZEhKdmJITjhaR1ZtWlhKOFpHbHpZV0pzWldSOGFHbGtaR1Z1ZkdsemJXRndmR3h2YjNCOGJYVnNkR2x3YkdWOGIzQmxibnh5WldGa2IyNXNlWHh5WlhGMWFYSmxaSHh6WTI5d1pXUmNJaXhjYmx4dVhIUXZMeUJTWldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjV6WEc1Y2JseDBMeThnVjJocGRHVnpjR0ZqWlNCamFHRnlZV04wWlhKeklHaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMMk56Y3pNdGMyVnNaV04wYjNKekx5TjNhR2wwWlhOd1lXTmxYRzVjZEhkb2FYUmxjM0JoWTJVZ1BTQmNJbHRjWEZ4Y2VESXdYRnhjWEhSY1hGeGNjbHhjWEZ4dVhGeGNYR1pkWENJc1hHNWNkQzh2SUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wyTnpjek10YzNsdWRHRjRMeU5qYUdGeVlXTjBaWEp6WEc1Y2RHTm9ZWEpoWTNSbGNrVnVZMjlrYVc1bklEMGdYQ0lvUHpwY1hGeGNYRnhjWEM1OFcxeGNYRngzTFYxOFcxNWNYRnhjZURBd0xWeGNYRng0WVRCZEtTdGNJaXhjYmx4dVhIUXZMeUJNYjI5elpXeDVJRzF2WkdWc1pXUWdiMjRnUTFOVElHbGtaVzUwYVdacFpYSWdZMmhoY21GamRHVnljMXh1WEhRdkx5QkJiaUIxYm5GMWIzUmxaQ0IyWVd4MVpTQnphRzkxYkdRZ1ltVWdZU0JEVTFNZ2FXUmxiblJwWm1sbGNpQm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlqYzNNekxYTmxiR1ZqZEc5eWN5OGpZWFIwY21saWRYUmxMWE5sYkdWamRHOXljMXh1WEhRdkx5QlFjbTl3WlhJZ2MzbHVkR0Y0T2lCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOURVMU15TVM5emVXNWtZWFJoTG1oMGJXd2pkbUZzZFdVdFpHVm1MV2xrWlc1MGFXWnBaWEpjYmx4MGFXUmxiblJwWm1sbGNpQTlJR05vWVhKaFkzUmxja1Z1WTI5a2FXNW5MbkpsY0d4aFkyVW9JRndpZDF3aUxDQmNJbmNqWENJZ0tTeGNibHh1WEhRdkx5QkJkSFJ5YVdKMWRHVWdjMlZzWldOMGIzSnpPaUJvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5elpXeGxZM1J2Y25NdkkyRjBkSEpwWW5WMFpTMXpaV3hsWTNSdmNuTmNibHgwWVhSMGNtbGlkWFJsY3lBOUlGd2lYRnhjWEZ0Y0lpQXJJSGRvYVhSbGMzQmhZMlVnS3lCY0lpb29YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1WnlBcklGd2lLU2cvT2x3aUlDc2dkMmhwZEdWemNHRmpaU0FyWEc1Y2RGeDBMeThnVDNCbGNtRjBiM0lnS0dOaGNIUjFjbVVnTWlsY2JseDBYSFJjSWlvb1d5cGVKSHdoZmwwL1BTbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0sxeHVYSFJjZEM4dklGd2lRWFIwY21saWRYUmxJSFpoYkhWbGN5QnRkWE4wSUdKbElFTlRVeUJwWkdWdWRHbG1hV1Z5Y3lCYlkyRndkSFZ5WlNBMVhTQnZjaUJ6ZEhKcGJtZHpJRnRqWVhCMGRYSmxJRE1nYjNJZ1kyRndkSFZ5WlNBMFhWd2lYRzVjZEZ4MFhDSXFLRDg2Snlnb1B6cGNYRnhjWEZ4Y1hDNThXMTVjWEZ4Y1hGeGNYQ2RkS1NvcEozeGNYRndpS0NnL09seGNYRnhjWEZ4Y0xueGJYbHhjWEZ4Y1hGeGNYRnhjSWwwcEtpbGNYRndpZkNoY0lpQXJJR2xrWlc1MGFXWnBaWElnS3lCY0lpa3BmQ2xjSWlBcklIZG9hWFJsYzNCaFkyVWdLMXh1WEhSY2RGd2lLbHhjWEZ4ZFhDSXNYRzVjYmx4MGNITmxkV1J2Y3lBOUlGd2lPaWhjSWlBcklHTm9ZWEpoWTNSbGNrVnVZMjlrYVc1bklDc2dYQ0lwS0Q4NlhGeGNYQ2dvWENJZ0sxeHVYSFJjZEM4dklGUnZJSEpsWkhWalpTQjBhR1VnYm5WdFltVnlJRzltSUhObGJHVmpkRzl5Y3lCdVpXVmthVzVuSUhSdmEyVnVhWHBsSUdsdUlIUm9aU0J3Y21WR2FXeDBaWElzSUhCeVpXWmxjaUJoY21kMWJXVnVkSE02WEc1Y2RGeDBMeThnTVM0Z2NYVnZkR1ZrSUNoallYQjBkWEpsSURNN0lHTmhjSFIxY21VZ05DQnZjaUJqWVhCMGRYSmxJRFVwWEc1Y2RGeDBYQ0lvSnlnb1B6cGNYRnhjWEZ4Y1hDNThXMTVjWEZ4Y1hGeGNYQ2RkS1NvcEozeGNYRndpS0NnL09seGNYRnhjWEZ4Y0xueGJYbHhjWEZ4Y1hGeGNYRnhjSWwwcEtpbGNYRndpS1h4Y0lpQXJYRzVjZEZ4MEx5OGdNaTRnYzJsdGNHeGxJQ2hqWVhCMGRYSmxJRFlwWEc1Y2RGeDBYQ0lvS0Q4NlhGeGNYRnhjWEZ3dWZGdGVYRnhjWEZ4Y1hGd29LVnRjWEZ4Y1hWMThYQ0lnS3lCaGRIUnlhV0oxZEdWeklDc2dYQ0lwS2lsOFhDSWdLMXh1WEhSY2RDOHZJRE11SUdGdWVYUm9hVzVuSUdWc2MyVWdLR05oY0hSMWNtVWdNaWxjYmx4MFhIUmNJaTRxWENJZ0sxeHVYSFJjZEZ3aUtWeGNYRndwZkNsY0lpeGNibHh1WEhRdkx5Qk1aV0ZrYVc1bklHRnVaQ0J1YjI0dFpYTmpZWEJsWkNCMGNtRnBiR2x1WnlC
14938M2FHbDBaWE53WVdObExDQmpZWEIwZFhKcGJtY2djMjl0WlNCdWIyNHRkMmhwZEdWemNHRmpaU0JqYUdGeVlXTjBaWEp6SUhCeVpXTmxaR2x1WnlCMGFHVWdiR0YwZEdWeVhHNWNkSEozYUdsMFpYTndZV05sSUQwZ2JtVjNJRkpsWjBWNGNDZ2dkMmhwZEdWemNHRmpaU0FySUZ3aUsxd2lMQ0JjSW1kY0lpQXBMRnh1WEhSeWRISnBiU0E5SUc1bGR5QlNaV2RGZUhBb0lGd2lYbHdpSUNzZ2QyaHBkR1Z6Y0dGalpTQXJJRndpSzN3b0tEODZYbnhiWGx4Y1hGeGNYRnhjWFNrb1B6cGNYRnhjWEZ4Y1hDNHBLaWxjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlza1hDSXNJRndpWjF3aUlDa3NYRzVjYmx4MGNtTnZiVzFoSUQwZ2JtVjNJRkpsWjBWNGNDZ2dYQ0plWENJZ0t5QjNhR2wwWlhOd1lXTmxJQ3NnWENJcUxGd2lJQ3NnZDJocGRHVnpjR0ZqWlNBcklGd2lLbHdpSUNrc1hHNWNkSEpqYjIxaWFXNWhkRzl5Y3lBOUlHNWxkeUJTWldkRmVIQW9JRndpWGx3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aUtpaGJQaXQrWFh4Y0lpQXJJSGRvYVhSbGMzQmhZMlVnS3lCY0lpbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBjSWlBcExGeHVYRzVjZEhKaGRIUnlhV0oxZEdWUmRXOTBaWE1nUFNCdVpYY2dVbVZuUlhod0tDQmNJajFjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1cxNWNYRnhjWFNkY1hGd2lYU28vS1Z3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aUtseGNYRnhkWENJc0lGd2laMXdpSUNrc1hHNWNibHgwY25CelpYVmtieUE5SUc1bGR5QlNaV2RGZUhBb0lIQnpaWFZrYjNNZ0tTeGNibHgwY21sa1pXNTBhV1pwWlhJZ1BTQnVaWGNnVW1WblJYaHdLQ0JjSWw1Y0lpQXJJR2xrWlc1MGFXWnBaWElnS3lCY0lpUmNJaUFwTEZ4dVhHNWNkRzFoZEdOb1JYaHdjaUE5SUh0Y2JseDBYSFJjSWtsRVhDSTZJRzVsZHlCU1pXZEZlSEFvSUZ3aVhpTW9YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1WnlBcklGd2lLVndpSUNrc1hHNWNkRngwWENKRFRFRlRVMXdpT2lCdVpYY2dVbVZuUlhod0tDQmNJbDVjWEZ4Y0xpaGNJaUFySUdOb1lYSmhZM1JsY2tWdVkyOWthVzVuSUNzZ1hDSXBYQ0lnS1N4Y2JseDBYSFJjSWxSQlIxd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNG9YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1Wnk1eVpYQnNZV05sS0NCY0luZGNJaXdnWENKM0tsd2lJQ2tnS3lCY0lpbGNJaUFwTEZ4dVhIUmNkRndpUVZSVVVsd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNWNJaUFySUdGMGRISnBZblYwWlhNZ0tTeGNibHgwWEhSY0lsQlRSVlZFVDF3aU9pQnVaWGNnVW1WblJYaHdLQ0JjSWw1Y0lpQXJJSEJ6WlhWa2IzTWdLU3hjYmx4MFhIUmNJa05JU1V4RVhDSTZJRzVsZHlCU1pXZEZlSEFvSUZ3aVhqb29iMjVzZVh4bWFYSnpkSHhzWVhOMGZHNTBhSHh1ZEdndGJHRnpkQ2t0S0dOb2FXeGtmRzltTFhSNWNHVXBLRDg2WEZ4Y1hDaGNJaUFySUhkb2FYUmxjM0JoWTJVZ0sxeHVYSFJjZEZ4MFhDSXFLR1YyWlc1OGIyUmtmQ2dvV3lzdFhYd3BLRnhjWEZ4a0tpbHVmQ2xjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1B6b29XeXN0WFh3cFhDSWdLeUIzYUdsMFpYTndZV05sSUN0Y2JseDBYSFJjZEZ3aUtpaGNYRnhjWkNzcGZDa3BYQ0lnS3lCM2FHbDBaWE53WVdObElDc2dYQ0lxWEZ4Y1hDbDhLVndpTENCY0ltbGNJaUFwTEZ4dVhIUmNkRndpWW05dmJGd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNG9QenBjSWlBcklHSnZiMnhsWVc1eklDc2dYQ0lwSkZ3aUxDQmNJbWxjSWlBcExGeHVYSFJjZEM4dklFWnZjaUIxYzJVZ2FXNGdiR2xpY21GeWFXVnpJR2x0Y0d4bGJXVnVkR2x1WnlBdWFYTW9LVnh1WEhSY2RDOHZJRmRsSUhWelpTQjBhR2x6SUdadmNpQlFUMU1nYldGMFkyaHBibWNnYVc0Z1lITmxiR1ZqZEdCY2JseDBYSFJjSW01bFpXUnpRMjl1ZEdWNGRGd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNWNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBiUGl0K1hYdzZLR1YyWlc1OGIyUmtmR1Z4ZkdkMGZHeDBmRzUwYUh4bWFYSnpkSHhzWVhOMEtTZy9PbHhjWEZ3b1hDSWdLMXh1WEhSY2RGeDBkMmhwZEdWemNHRmpaU0FySUZ3aUtpZ29Qem90WEZ4Y1hHUXBQMXhjWEZ4a0tpbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBjWEZ4Y0tYd3BLRDg5VzE0dFhYd2tLVndpTENCY0ltbGNJaUFwWEc1Y2RIMHNYRzVjYmx4MGNtbHVjSFYwY3lBOUlDOWVLRDg2YVc1d2RYUjhjMlZzWldOMGZIUmxlSFJoY21WaGZHSjFkSFJ2Ymlra0wya3NYRzVjZEhKb1pXRmtaWElnUFNBdlhtaGNYR1FrTDJrc1hHNWNibHgwY201aGRHbDJaU0E5SUM5ZVcxNTdYU3RjWEh0Y1hITXFYRnhiYm1GMGFYWmxJRnhjZHk4c1hHNWNibHgwTHk4Z1JXRnphV3g1TFhCaGNuTmxZV0pzWlM5eVpYUnlhV1YyWVdKc1pTQkpSQ0J2Y2lCVVFVY2diM0lnUTB4QlUxTWdjMlZzWldOMGIzSnpYRzVjZEhKeGRXbGphMFY0Y0hJZ1BTQXZYaWcvT2lNb1cxeGNkeTFkS3lsOEtGeGNkeXNwZkZ4Y0xpaGJYRngzTFYwcktTa2tMeXhjYmx4dVhIUnljMmxpYkdsdVp5QTlJQzliSzM1ZEx5eGNibHgwY21WelkyRndaU0E5SUM4bmZGeGNYRnd2Wnl4Y2JseHVYSFF2THlCRFUxTWdaWE5qWVhCbGN5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlEVTFNeU1TOXplVzVrWVhSaExtaDBiV3dqWlhOallYQmxaQzFqYUdGeVlXTjBaWEp6WEc1Y2RISjFibVZ6WTJGd1pTQTlJRzVsZHlCU1pXZEZlSEFvSUZ3aVhGeGNYRnhjWEZ3b1cxeGNYRnhrWVMxbVhYc3hMRFo5WENJZ0t5QjNhR2wwWlhOd1lXTmxJQ3NnWENJL2ZDaGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaWw4TGlsY0lpd2dYQ0pwWjF3aUlDa3NYRzVjZEdaMWJtVnpZMkZ3WlNBOUlHWjFibU4wYVc5dUtDQmZMQ0JsYzJOaGNHVmtMQ0JsYzJOaGNHVmtWMmhwZEdWemNHRmpaU0FwSUh0Y2JseDBYSFIyWVhJZ2FHbG5hQ0E5SUZ3aU1IaGNJaUFySUdWelkyRndaV1FnTFNBd2VERXdNREF3TzF4dVhIUmNkQzh2SUU1aFRpQnRaV0Z1Y3lCdWIyNHRZMjlrWlhCdmFXNTBYRzVjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dSbWx5WldadmVEd3lORnh1WEhSY2RDOHZJRmR2Y210aGNtOTFibVFnWlhKeWIyNWxiM1Z6SUc1MWJXVnlhV01nYVc1MFpYSndjbVYwWVhScGIyNGdiMllnSzF3aU1IaGNJbHh1WEhSY2RISmxkSFZ5YmlCb2FXZG9JQ0U5UFNCb2FXZG9JSHg4SUdWelkyRndaV1JYYUdsMFpYTndZV05sSUQ5Y2JseDBYSFJjZEdWelkyRndaV1FnT2x4dVhIUmNkRngwYUdsbmFDQThJREFnUDF4dVhIUmNkRngwWEhRdkx5QkNUVkFnWTI5a1pYQnZhVzUwWEc1Y2RGeDBYSFJjZEZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb0lHaHBaMmdnS3lBd2VERXdNREF3SUNrZ09seHVYSFJjZEZ4MFhIUXZMeUJUZFhCd2JHVnRaVzUwWVd3Z1VHeGhibVVnWTI5a1pYQnZhVzUwSUNoemRYSnliMmRoZEdVZ2NHRnBjaWxjYmx4MFhIUmNkRngwVTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNnZ2FHbG5hQ0ErUGlBeE1DQjhJREI0UkRnd01Dd2dhR2xuYUNBbUlEQjRNMFpHSUh3Z01IaEVRekF3SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnVlhObFpDQm1iM0lnYVdaeVlXMWxjMXh1WEhRdkx5QlRaV1VnYzJWMFJHOWpkVzFsYm5Rb0tWeHVYSFF2THlCU1pXMXZkbWx1WnlCMGFHVWdablZ1WTNScGIyNGdkM0poY0hCbGNpQmpZWFZ6WlhNZ1lTQmNJbEJsY20xcGMzTnBiMjRnUkdWdWFXVmtYQ0pjYmx4MEx5OGdaWEp5YjNJZ2FXNGdTVVZjYmx4MGRXNXNiMkZrU0dGdVpHeGxjaUE5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhObGRFUnZZM1Z0Wlc1MEtDazdYRzVjZEgwN1hHNWNiaTh2SUU5d2RHbHRhWHBsSUdadmNpQndkWE5vTG1Gd2NHeDVLQ0JmTENCT2IyUmxUR2x6ZENBcFhHNTBjbmtnZTF4dVhIUndkWE5vTG1Gd2NHeDVLRnh1WEhSY2RDaGhjbklnUFNCemJHbGpaUzVqWVd4c0tDQndjbVZtWlhKeVpXUkViMk11WTJocGJHUk9iMlJsY3lBcEtTeGNibHgwWEhSd2NtVm1aWEp5WldSRWIyTXVZMmhwYkdST2IyUmxjMXh1WEhRcE8xeHVYSFF2THlCVGRYQndiM0owT2lCQmJtUnliMmxrUERRdU1GeHVYSFF2THlCRVpYUmxZM1FnYzJsc1pXNTBiSGtnWm1GcGJHbHVaeUJ3ZFhOb0xtRndjR3g1WEc1Y2RHRnljbHNnY0hKbFptVnljbVZrUkc5akxtTm9hV3hrVG05a1pYTXViR1Z1WjNSb0lGMHVibTlrWlZSNWNHVTdYRzU5SUdOaGRHTm9JQ2dnWlNBcElIdGNibHgwY0hWemFDQTlJSHNnWVhCd2JIazZJR0Z5Y2k1c1pXNW5kR2dnUDF4dVhHNWNkRngwTHk4Z1RHVjJaWEpoWjJVZ2MyeHBZMlVnYVdZZ2NHOXpjMmxpYkdWY2JseDBYSFJtZFc1amRHbHZiaWdnZEdGeVoyVjBMQ0JsYkhNZ0tTQjdYRzVjZEZ4MFhIUndkWE5vWDI1aGRHbDJaUzVoY0hCc2VTZ2dkR0Z5WjJWMExDQnpiR2xqWlM1allXeHNLR1ZzY3lrZ0tUdGNibHgwWEhSOUlEcGNibHh1WEhSY2RDOHZJRk4xY0hCdmNuUTZJRWxGUERsY2JseDBYSFF2THlCUGRH
14938aGxjbmRwYzJVZ1lYQndaVzVrSUdScGNtVmpkR3g1WEc1Y2RGeDBablZ1WTNScGIyNG9JSFJoY21kbGRDd2daV3h6SUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR29nUFNCMFlYSm5aWFF1YkdWdVozUm9MRnh1WEhSY2RGeDBYSFJwSUQwZ01EdGNibHgwWEhSY2RDOHZJRU5oYmlkMElIUnlkWE4wSUU1dlpHVk1hWE4wTG14bGJtZDBhRnh1WEhSY2RGeDBkMmhwYkdVZ0tDQW9kR0Z5WjJWMFcyb3JLMTBnUFNCbGJITmJhU3NyWFNrZ0tTQjdmVnh1WEhSY2RGeDBkR0Z5WjJWMExteGxibWQwYUNBOUlHb2dMU0F4TzF4dVhIUmNkSDFjYmx4MGZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1UybDZlbXhsS0NCelpXeGxZM1J2Y2l3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwSUh0Y2JseDBkbUZ5SUcxaGRHTm9MQ0JsYkdWdExDQnRMQ0J1YjJSbFZIbHdaU3hjYmx4MFhIUXZMeUJSVTBFZ2RtRnljMXh1WEhSY2RHa3NJR2R5YjNWd2N5d2diMnhrTENCdWFXUXNJRzVsZDBOdmJuUmxlSFFzSUc1bGQxTmxiR1ZqZEc5eU8xeHVYRzVjZEdsbUlDZ2dLQ0JqYjI1MFpYaDBJRDhnWTI5dWRHVjRkQzV2ZDI1bGNrUnZZM1Z0Wlc1MElIeDhJR052Ym5SbGVIUWdPaUJ3Y21WbVpYSnlaV1JFYjJNZ0tTQWhQVDBnWkc5amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHTnZiblJsZUhRZ0tUdGNibHgwZlZ4dVhHNWNkR052Ym5SbGVIUWdQU0JqYjI1MFpYaDBJSHg4SUdSdlkzVnRaVzUwTzF4dVhIUnlaWE4xYkhSeklEMGdjbVZ6ZFd4MGN5QjhmQ0JiWFR0Y2JseDBibTlrWlZSNWNHVWdQU0JqYjI1MFpYaDBMbTV2WkdWVWVYQmxPMXh1WEc1Y2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJQ0U5UFNCY0luTjBjbWx1WjF3aUlIeDhJQ0Z6Wld4bFkzUnZjaUI4ZkZ4dVhIUmNkRzV2WkdWVWVYQmxJQ0U5UFNBeElDWW1JRzV2WkdWVWVYQmxJQ0U5UFNBNUlDWW1JRzV2WkdWVWVYQmxJQ0U5UFNBeE1TQXBJSHRjYmx4dVhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYSFI5WEc1Y2JseDBhV1lnS0NBaGMyVmxaQ0FtSmlCa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSUh0Y2JseHVYSFJjZEM4dklGUnllU0IwYnlCemFHOXlkR04xZENCbWFXNWtJRzl3WlhKaGRHbHZibk1nZDJobGJpQndiM056YVdKc1pTQW9aUzVuTGl3Z2JtOTBJSFZ1WkdWeUlFUnZZM1Z0Wlc1MFJuSmhaMjFsYm5RcFhHNWNkRngwYVdZZ0tDQnViMlJsVkhsd1pTQWhQVDBnTVRFZ0ppWWdLRzFoZEdOb0lEMGdjbkYxYVdOclJYaHdjaTVsZUdWaktDQnpaV3hsWTNSdmNpQXBLU0FwSUh0Y2JseDBYSFJjZEM4dklGTndaV1ZrTFhWd09pQlRhWHA2YkdVb1hDSWpTVVJjSWlsY2JseDBYSFJjZEdsbUlDZ2dLRzBnUFNCdFlYUmphRnN4WFNrZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ2JtOWtaVlI1Y0dVZ1BUMDlJRGtnS1NCN1hHNWNkRngwWEhSY2RGeDBaV3hsYlNBOUlHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRFSjVTV1FvSUcwZ0tUdGNibHgwWEhSY2RGeDBYSFF2THlCRGFHVmpheUJ3WVhKbGJuUk9iMlJsSUhSdklHTmhkR05vSUhkb1pXNGdRbXhoWTJ0aVpYSnllU0EwTGpZZ2NtVjBkWEp1YzF4dVhIUmNkRngwWEhSY2RDOHZJRzV2WkdWeklIUm9ZWFFnWVhKbElHNXZJR3h2Ym1kbGNpQnBiaUIwYUdVZ1pHOWpkVzFsYm5RZ0tHcFJkV1Z5ZVNBak5qazJNeWxjYmx4MFhIUmNkRngwWEhScFppQW9JR1ZzWlcwZ0ppWWdaV3hsYlM1d1lYSmxiblJPYjJSbElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTR0Z1Wkd4bElIUm9aU0JqWVhObElIZG9aWEpsSUVsRkxDQlBjR1Z5WVN3Z1lXNWtJRmRsWW10cGRDQnlaWFIxY200Z2FYUmxiWE5jYmx4MFhIUmNkRngwWEhSY2RDOHZJR0o1SUc1aGJXVWdhVzV6ZEdWaFpDQnZaaUJKUkZ4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCbGJHVnRMbWxrSUQwOVBTQnRJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJ5WlhOMWJIUnpMbkIxYzJnb0lHVnNaVzBnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJSEpsYzNWc2RITTdYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFJjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUXZMeUJEYjI1MFpYaDBJR2x6SUc1dmRDQmhJR1J2WTNWdFpXNTBYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQmpiMjUwWlhoMExtOTNibVZ5Ukc5amRXMWxiblFnSmlZZ0tHVnNaVzBnUFNCamIyNTBaWGgwTG05M2JtVnlSRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0lHMGdLU2tnSmlaY2JseDBYSFJjZEZ4MFhIUmNkR052Ym5SaGFXNXpLQ0JqYjI1MFpYaDBMQ0JsYkdWdElDa2dKaVlnWld4bGJTNXBaQ0E5UFQwZ2JTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxjM1ZzZEhNdWNIVnphQ2dnWld4bGJTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZOd1pXVmtMWFZ3T2lCVGFYcDZiR1VvWENKVVFVZGNJaWxjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUcxaGRHTm9XekpkSUNrZ2UxeHVYSFJjZEZ4MFhIUndkWE5vTG1Gd2NHeDVLQ0J5WlhOMWJIUnpMQ0JqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NCelpXeGxZM1J2Y2lBcElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYRzVjZEZ4MFhIUXZMeUJUY0dWbFpDMTFjRG9nVTJsNmVteGxLRndpTGtOTVFWTlRYQ0lwWEc1Y2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NBb2JTQTlJRzFoZEdOb1d6TmRLU0FtSmlCemRYQndiM0owTG1kbGRFVnNaVzFsYm5SelFubERiR0Z6YzA1aGJXVWdLU0I3WEc1Y2RGeDBYSFJjZEhCMWMyZ3VZWEJ3Ykhrb0lISmxjM1ZzZEhNc0lHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRITkNlVU5zWVhOelRtRnRaU2dnYlNBcElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseHVYSFJjZEM4dklGRlRRU0J3WVhSb1hHNWNkRngwYVdZZ0tDQnpkWEJ3YjNKMExuRnpZU0FtSmlBb0lYSmlkV2RuZVZGVFFTQjhmQ0FoY21KMVoyZDVVVk5CTG5SbGMzUW9JSE5sYkdWamRHOXlJQ2twSUNrZ2UxeHVYSFJjZEZ4MGJtbGtJRDBnYjJ4a0lEMGdaWGh3WVc1a2J6dGNibHgwWEhSY2RHNWxkME52Ym5SbGVIUWdQU0JqYjI1MFpYaDBPMXh1WEhSY2RGeDBibVYzVTJWc1pXTjBiM0lnUFNCdWIyUmxWSGx3WlNBaFBUMGdNU0FtSmlCelpXeGxZM1J2Y2p0Y2JseHVYSFJjZEZ4MEx5OGdjVk5CSUhkdmNtdHpJSE4wY21GdVoyVnNlU0J2YmlCRmJHVnRaVzUwTFhKdmIzUmxaQ0J4ZFdWeWFXVnpYRzVjZEZ4MFhIUXZMeUJYWlNCallXNGdkMjl5YXlCaGNtOTFibVFnZEdocGN5QmllU0J6Y0dWamFXWjVhVzVuSUdGdUlHVjRkSEpoSUVsRUlHOXVJSFJvWlNCeWIyOTBYRzVjZEZ4MFhIUXZMeUJoYm1RZ2QyOXlhMmx1WnlCMWNDQm1jbTl0SUhSb1pYSmxJQ2hVYUdGdWEzTWdkRzhnUVc1a2NtVjNJRVIxY0c5dWRDQm1iM0lnZEdobElIUmxZMmh1YVhGMVpTbGNibHgwWEhSY2RDOHZJRWxGSURnZ1pHOWxjMjRuZENCM2IzSnJJRzl1SUc5aWFtVmpkQ0JsYkdWdFpXNTBjMXh1WEhSY2RGeDBhV1lnS0NCdWIyUmxWSGx3WlNBOVBUMGdNU0FtSmlCamIyNTBaWGgwTG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dJVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUmNkR2R5YjNWd2N5QTlJSFJ2YTJWdWFYcGxLQ0J6Wld4bFkzUnZjaUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnS0c5c1pDQTlJR052Ym5SbGVIUXVaMlYwUVhSMGNtbGlkWFJsS0Z3aWFXUmNJaWtwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzVwWkNBOUlHOXNaQzV5WlhCc1lXTmxLQ0J5WlhOallYQmxMQ0JjSWx4Y1hGd2tKbHdpSUNrN1hHNWNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBZMjl1ZEdWNGRDNXpaWFJCZEhSeWFXSjFkR1VvSUZ3aWFXUmNJaXdnYm1sa0lDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwYm1sa0lEMGdYQ0piYVdROUoxd2lJQ3NnYm1sa0lDc2dYQ0luWFNCY0lqdGNibHh1WEhSY2RGeDBYSFJwSUQwZ1ozSnZkWEJ6TG14bGJtZDBhRHRjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWjNKdmRYQnpXMmxkSUQwZ2JtbGtJQ3NnZEc5VFpXeGxZM1J2Y2lnZ1ozSnZkWEJ6VzJsZElDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwYm1WM1EyOXVkR1Y0ZENBOUlISnphV0pzYVc1bkxuUmxjM1FvSUhObGJHVmpkRzl5SUNrZ0ppWWdkR1Z6ZEVOdmJuUmxlSFFvSUdOdmJuUmxlSFF1Y0dGeVpXNTBUbTlrWlNBcElIeDhJR0
1493852Ym5SbGVIUTdYRzVjZEZ4MFhIUmNkRzVsZDFObGJHVmpkRzl5SUQwZ1ozSnZkWEJ6TG1wdmFXNG9YQ0lzWENJcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnBaaUFvSUc1bGQxTmxiR1ZqZEc5eUlDa2dlMXh1WEhSY2RGeDBYSFIwY25rZ2UxeHVYSFJjZEZ4MFhIUmNkSEIxYzJndVlYQndiSGtvSUhKbGMzVnNkSE1zWEc1Y2RGeDBYSFJjZEZ4MFhIUnVaWGREYjI1MFpYaDBMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29JRzVsZDFObGJHVmpkRzl5SUNsY2JseDBYSFJjZEZ4MFhIUXBPMXh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1WEhSY2RGeDBYSFI5SUdOaGRHTm9LSEZ6WVVWeWNtOXlLU0I3WEc1Y2RGeDBYSFJjZEgwZ1ptbHVZV3hzZVNCN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NBaGIyeGtJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZMjl1ZEdWNGRDNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb1hDSnBaRndpS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFF2THlCQmJHd2diM1JvWlhKelhHNWNkSEpsZEhWeWJpQnpaV3hsWTNRb0lITmxiR1ZqZEc5eUxuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpUXhYQ0lnS1N3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpTQnJaWGt0ZG1Gc2RXVWdZMkZqYUdWeklHOW1JR3hwYldsMFpXUWdjMmw2WlZ4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVLSE4wY21sdVp5d2dUMkpxWldOMEtYMGdVbVYwZFhKdWN5QjBhR1VnVDJKcVpXTjBJR1JoZEdFZ1lXWjBaWElnYzNSdmNtbHVaeUJwZENCdmJpQnBkSE5sYkdZZ2QybDBhRnh1SUNwY2RIQnliM0JsY25SNUlHNWhiV1VnZEdobElDaHpjR0ZqWlMxemRXWm1hWGhsWkNrZ2MzUnlhVzVuSUdGdVpDQW9hV1lnZEdobElHTmhZMmhsSUdseklHeGhjbWRsY2lCMGFHRnVJRVY0Y0hJdVkyRmphR1ZNWlc1bmRHZ3BYRzRnS2x4MFpHVnNaWFJwYm1jZ2RHaGxJRzlzWkdWemRDQmxiblJ5ZVZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVkRZV05vWlNncElIdGNibHgwZG1GeUlHdGxlWE1nUFNCYlhUdGNibHh1WEhSbWRXNWpkR2x2YmlCallXTm9aU2dnYTJWNUxDQjJZV3gxWlNBcElIdGNibHgwWEhRdkx5QlZjMlVnS0d0bGVTQXJJRndpSUZ3aUtTQjBieUJoZG05cFpDQmpiMnhzYVhOcGIyNGdkMmwwYUNCdVlYUnBkbVVnY0hKdmRHOTBlWEJsSUhCeWIzQmxjblJwWlhNZ0tITmxaU0JKYzNOMVpTQWpNVFUzS1Z4dVhIUmNkR2xtSUNnZ2EyVjVjeTV3ZFhOb0tDQnJaWGtnS3lCY0lpQmNJaUFwSUQ0Z1JYaHdjaTVqWVdOb1pVeGxibWQwYUNBcElIdGNibHgwWEhSY2RDOHZJRTl1YkhrZ2EyVmxjQ0IwYUdVZ2JXOXpkQ0J5WldObGJuUWdaVzUwY21sbGMxeHVYSFJjZEZ4MFpHVnNaWFJsSUdOaFkyaGxXeUJyWlhsekxuTm9hV1owS0NrZ1hUdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJQ2hqWVdOb1pWc2dhMlY1SUNzZ1hDSWdYQ0lnWFNBOUlIWmhiSFZsS1R0Y2JseDBmVnh1WEhSeVpYUjFjbTRnWTJGamFHVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXRnlheUJoSUdaMWJtTjBhVzl1SUdadmNpQnpjR1ZqYVdGc0lIVnpaU0JpZVNCVGFYcDZiR1ZjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWnVJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QnRZWEpyWEc0Z0tpOWNibVoxYm1OMGFXOXVJRzFoY210R2RXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RHWnVXeUJsZUhCaGJtUnZJRjBnUFNCMGNuVmxPMXh1WEhSeVpYUjFjbTRnWm00N1hHNTlYRzVjYmk4cUtseHVJQ29nVTNWd2NHOXlkQ0IwWlhOMGFXNW5JSFZ6YVc1bklHRnVJR1ZzWlcxbGJuUmNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUdadUlGQmhjM05sWkNCMGFHVWdZM0psWVhSbFpDQmthWFlnWVc1a0lHVjRjR1ZqZEhNZ1lTQmliMjlzWldGdUlISmxjM1ZzZEZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJoYzNObGNuUW9JR1p1SUNrZ2UxeHVYSFIyWVhJZ1pHbDJJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDaGNJbVJwZGx3aUtUdGNibHh1WEhSMGNua2dlMXh1WEhSY2RISmxkSFZ5YmlBaElXWnVLQ0JrYVhZZ0tUdGNibHgwZlNCallYUmphQ0FvWlNrZ2UxeHVYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwZlNCbWFXNWhiR3g1SUh0Y2JseDBYSFF2THlCU1pXMXZkbVVnWm5KdmJTQnBkSE1nY0dGeVpXNTBJR0o1SUdSbFptRjFiSFJjYmx4MFhIUnBaaUFvSUdScGRpNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWkdsMkxuQmhjbVZ1ZEU1dlpHVXVjbVZ0YjNabFEyaHBiR1FvSUdScGRpQXBPMXh1WEhSY2RIMWNibHgwWEhRdkx5QnlaV3hsWVhObElHMWxiVzl5ZVNCcGJpQkpSVnh1WEhSY2RHUnBkaUE5SUc1MWJHdzdYRzVjZEgxY2JuMWNibHh1THlvcVhHNGdLaUJCWkdSeklIUm9aU0J6WVcxbElHaGhibVJzWlhJZ1ptOXlJR0ZzYkNCdlppQjBhR1VnYzNCbFkybG1hV1ZrSUdGMGRISnpYRzRnS2lCQWNHRnlZVzBnZTFOMGNtbHVaMzBnWVhSMGNuTWdVR2x3WlMxelpYQmhjbUYwWldRZ2JHbHpkQ0J2WmlCaGRIUnlhV0oxZEdWelhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JvWVc1a2JHVnlJRlJvWlNCdFpYUm9iMlFnZEdoaGRDQjNhV3hzSUdKbElHRndjR3hwWldSY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVdSa1NHRnVaR3hsS0NCaGRIUnljeXdnYUdGdVpHeGxjaUFwSUh0Y2JseDBkbUZ5SUdGeWNpQTlJR0YwZEhKekxuTndiR2wwS0Z3aWZGd2lLU3hjYmx4MFhIUnBJRDBnWVhSMGNuTXViR1Z1WjNSb08xeHVYRzVjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RFVjRjSEl1WVhSMGNraGhibVJzWlZzZ1lYSnlXMmxkSUYwZ1BTQm9ZVzVrYkdWeU8xeHVYSFI5WEc1OVhHNWNiaThxS2x4dUlDb2dRMmhsWTJ0eklHUnZZM1Z0Wlc1MElHOXlaR1Z5SUc5bUlIUjNieUJ6YVdKc2FXNW5jMXh1SUNvZ1FIQmhjbUZ0SUh0RmJHVnRaVzUwZlNCaFhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjlJR0pjYmlBcUlFQnlaWFIxY201eklIdE9kVzFpWlhKOUlGSmxkSFZ5Ym5NZ2JHVnpjeUIwYUdGdUlEQWdhV1lnWVNCd2NtVmpaV1JsY3lCaUxDQm5jbVZoZEdWeUlIUm9ZVzRnTUNCcFppQmhJR1p2Ykd4dmQzTWdZbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnphV0pzYVc1blEyaGxZMnNvSUdFc0lHSWdLU0I3WEc1Y2RIWmhjaUJqZFhJZ1BTQmlJQ1ltSUdFc1hHNWNkRngwWkdsbVppQTlJR04xY2lBbUppQmhMbTV2WkdWVWVYQmxJRDA5UFNBeElDWW1JR0l1Ym05a1pWUjVjR1VnUFQwOUlERWdKaVpjYmx4MFhIUmNkQ2dnZm1JdWMyOTFjbU5sU1c1a1pYZ2dmSHdnVFVGWVgwNUZSMEZVU1ZaRklDa2dMVnh1WEhSY2RGeDBLQ0IrWVM1emIzVnlZMlZKYm1SbGVDQjhmQ0JOUVZoZlRrVkh
14938RVlJKVmtVZ0tUdGNibHh1WEhRdkx5QlZjMlVnU1VVZ2MyOTFjbU5sU1c1a1pYZ2dhV1lnWVhaaGFXeGhZbXhsSUc5dUlHSnZkR2dnYm05a1pYTmNibHgwYVdZZ0tDQmthV1ptSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJrYVdabU8xeHVYSFI5WEc1Y2JseDBMeThnUTJobFkyc2dhV1lnWWlCbWIyeHNiM2R6SUdGY2JseDBhV1lnS0NCamRYSWdLU0I3WEc1Y2RGeDBkMmhwYkdVZ0tDQW9ZM1Z5SUQwZ1kzVnlMbTVsZUhSVGFXSnNhVzVuS1NBcElIdGNibHgwWEhSY2RHbG1JQ2dnWTNWeUlEMDlQU0JpSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z0xURTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHRWdQeUF4SURvZ0xURTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCaElHWjFibU4wYVc5dUlIUnZJSFZ6WlNCcGJpQndjMlYxWkc5eklHWnZjaUJwYm5CMWRDQjBlWEJsYzF4dUlDb2dRSEJoY21GdElIdFRkSEpwYm1kOUlIUjVjR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFNXNXdkWFJRYzJWMVpHOG9JSFI1Y0dVZ0tTQjdYRzVjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUjJZWElnYm1GdFpTQTlJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmx4MFhIUnlaWFIxY200Z2JtRnRaU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1JR1ZzWlcwdWRIbHdaU0E5UFQwZ2RIbHdaVHRjYmx4MGZUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUdFZ1puVnVZM1JwYjI0Z2RHOGdkWE5sSUdsdUlIQnpaWFZrYjNNZ1ptOXlJR0oxZEhSdmJuTmNiaUFxSUVCd1lYSmhiU0I3VTNSeWFXNW5mU0IwZVhCbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVUoxZEhSdmJsQnpaWFZrYnlnZ2RIbHdaU0FwSUh0Y2JseDBjbVYwZFhKdUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhaaGNpQnVZVzFsSUQwZ1pXeGxiUzV1YjJSbFRtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEhKbGRIVnliaUFvYm1GdFpTQTlQVDBnWENKcGJuQjFkRndpSUh4OElHNWhiV1VnUFQwOUlGd2lZblYwZEc5dVhDSXBJQ1ltSUdWc1pXMHVkSGx3WlNBOVBUMGdkSGx3WlR0Y2JseDBmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHRWdablZ1WTNScGIyNGdkRzhnZFhObElHbHVJSEJ6WlhWa2IzTWdabTl5SUhCdmMybDBhVzl1WVd4elhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JtYmx4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVlFiM05wZEdsdmJtRnNVSE5sZFdSdktDQm1iaUFwSUh0Y2JseDBjbVYwZFhKdUlHMWhjbXRHZFc1amRHbHZiaWhtZFc1amRHbHZiaWdnWVhKbmRXMWxiblFnS1NCN1hHNWNkRngwWVhKbmRXMWxiblFnUFNBcllYSm5kVzFsYm5RN1hHNWNkRngwY21WMGRYSnVJRzFoY210R2RXNWpkR2x2YmlobWRXNWpkR2x2YmlnZ2MyVmxaQ3dnYldGMFkyaGxjeUFwSUh0Y2JseDBYSFJjZEhaaGNpQnFMRnh1WEhSY2RGeDBYSFJ0WVhSamFFbHVaR1Y0WlhNZ1BTQm1iaWdnVzEwc0lITmxaV1F1YkdWdVozUm9MQ0JoY21kMWJXVnVkQ0FwTEZ4dVhIUmNkRngwWEhScElEMGdiV0YwWTJoSmJtUmxlR1Z6TG14bGJtZDBhRHRjYmx4dVhIUmNkRngwTHk4Z1RXRjBZMmdnWld4bGJXVnVkSE1nWm05MWJtUWdZWFFnZEdobElITndaV05wWm1sbFpDQnBibVJsZUdWelhHNWNkRngwWEhSM2FHbHNaU0FvSUdrdExTQXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQnpaV1ZrV3lBb2FpQTlJRzFoZEdOb1NXNWtaWGhsYzF0cFhTa2dYU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnpaV1ZrVzJwZElEMGdJU2h0WVhSamFHVnpXMnBkSUQwZ2MyVmxaRnRxWFNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJobFkydHpJR0VnYm05a1pTQm1iM0lnZG1Gc2FXUnBkSGtnWVhNZ1lTQlRhWHA2YkdVZ1kyOXVkR1Y0ZEZ4dUlDb2dRSEJoY21GdElIdEZiR1Z0Wlc1MGZFOWlhbVZqZEQxOUlHTnZiblJsZUhSY2JpQXFJRUJ5WlhSMWNtNXpJSHRGYkdWdFpXNTBmRTlpYW1WamRIeENiMjlzWldGdWZTQlVhR1VnYVc1d2RYUWdibTlrWlNCcFppQmhZMk5sY0hSaFlteGxMQ0J2ZEdobGNuZHBjMlVnWVNCbVlXeHplU0IyWVd4MVpWeHVJQ292WEc1bWRXNWpkR2x2YmlCMFpYTjBRMjl1ZEdWNGRDZ2dZMjl1ZEdWNGRDQXBJSHRjYmx4MGNtVjBkWEp1SUdOdmJuUmxlSFFnSmlZZ2RIbHdaVzltSUdOdmJuUmxlSFF1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJZ0ppWWdZMjl1ZEdWNGREdGNibjFjYmx4dUx5OGdSWGh3YjNObElITjFjSEJ2Y25RZ2RtRnljeUJtYjNJZ1kyOXVkbVZ1YVdWdVkyVmNibk4xY0hCdmNuUWdQU0JUYVhwNmJHVXVjM1Z3Y0c5eWRDQTlJSHQ5TzF4dVhHNHZLaXBjYmlBcUlFUmxkR1ZqZEhNZ1dFMU1JRzV2WkdWelhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjhUMkpxWldOMGZTQmxiR1Z0SUVGdUlHVnNaVzFsYm5RZ2IzSWdZU0JrYjJOMWJXVnVkRnh1SUNvZ1FISmxkSFZ5Ym5NZ2UwSnZiMnhsWVc1OUlGUnlkV1VnYVdabUlHVnNaVzBnYVhNZ1lTQnViMjR0U0ZSTlRDQllUVXdnYm05a1pWeHVJQ292WEc1cGMxaE5UQ0E5SUZOcGVucHNaUzVwYzFoTlRDQTlJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhRdkx5QmtiMk4xYldWdWRFVnNaVzFsYm5RZ2FYTWdkbVZ5YVdacFpXUWdabTl5SUdOaGMyVnpJSGRvWlhKbElHbDBJR1J2WlhOdUozUWdlV1YwSUdWNGFYTjBYRzVjZEM4dklDaHpkV05vSUdGeklHeHZZV1JwYm1jZ2FXWnlZVzFsY3lCcGJpQkpSU0F0SUNNME9ETXpLVnh1WEhSMllYSWdaRzlqZFcxbGJuUkZiR1Z0Wlc1MElEMGdaV3hsYlNBbUppQW9aV3hsYlM1dmQyNWxja1J2WTNWdFpXNTBJSHg4SUdWc1pXMHBMbVJ2WTNWdFpXNTBSV3hsYldWdWREdGNibHgwY21WMGRYSnVJR1J2WTNWdFpXNTBSV3hsYldWdWRDQS9JR1J2WTNWdFpXNTBSV3hsYldWdWRDNXViMlJsVG1GdFpTQWhQVDBnWENKSVZFMU1YQ0lnT2lCbVlXeHpaVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dVMlYwY3lCa2IyTjFiV1Z1ZEMxeVpXeGhkR1ZrSUhaaGNtbGhZbXhsY3lCdmJtTmxJR0poYzJWa0lHOXVJSFJvWlNCamRYSnlaVzUwSUdSdlkzVnRaVzUwWEc0Z0tpQkFjR0Z5WVcwZ2UwVnNaVzFsYm5SOFQySnFaV04wZlNCYlpHOWpYU0JCYmlCbGJHVnRaVzUwSUc5eUlHUnZZM1Z0Wlc1MElHOWlhbVZqZENCMGJ5QjFjMlVnZEc4Z2MyVjBJSFJvWlNCa2IyTjFiV1Z1ZEZ4dUlDb2dRSEpsZEhWeWJuTWdlMDlpYW1WamRIMGdVbVYwZFhKdWN5QjBhR1VnWTNWeWNtVnVkQ0JrYjJOMWJXVnVkRnh1SUNvdlhHNXpaWFJFYjJOMWJXVnVkQ0E5SUZOcGVucHNaUzV6WlhSRWIyTjFiV1Z1ZENBOUlHWjFibU4wYVc5dUtDQnViMlJsSUNrZ2UxeHVYSFIyWVhJZ2FHRnpRMjl0Y0dGeVpTd2djR0Z5Wlc1MExGeHVYSFJjZEdSdll5QTlJRzV2WkdVZ1B5QnViMlJsTG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnYm05a1pTQTZJSEJ5WldabGNuSmxaRVJ2WXp0Y2JseHVYSFF2THlCSlppQnVieUJrYjJOMWJXVnVkQ0JoYm1RZ1pHOWpkVzFsYm5SRmJHVnRaVzUwSUdseklHRjJZV2xzWVdKc1pTd2djbVYwZFhKdVhHNWNkR2xtSUNnZ1pHOWpJRDA5UFNCa2IyTjFiV1Z1ZENCOGZDQmtiMk11Ym05a1pWUjVjR1VnSVQwOUlEa2dmSHdnSVdSdll5NWtiMk4xYldWdWRFVnNaVzFsYm5RZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdSdlkzVnRaVzUwTzF4dVhIUjlYRzVjYmx4MEx5OGdVMlYwSUc5MWNpQmtiMk4xYldWdWRGeHVYSFJrYjJOMWJXVnVkQ0E5SUdSdll6dGNibHgwWkc5alJXeGxiU0E5SUdSdll5NWtiMk4xYldWdWRFVnNaVzFsYm5RN1hHNWNkSEJoY21WdWRDQTlJR1J2WXk1a1pXWmhkV3gwVm1sbGR6dGNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVDQ0WEc1Y2RDOHZJRWxtSUdsbWNtRnRaU0JrYjJOMWJXVnVkQ0JwY3lCaGMzTnBaMjVsWkNCMGJ5QmNJbVJ2WTNWdFpXNTBYQ0lnZG1GeWFXRmliR1VnWVc1a0lHbG1JR2xtY21GdFpTQm9ZWE1nWW1WbGJpQnlaV3h2WVdSbFpDeGNibHgwTHk4Z1NVVWdkMmxzYkNCMGFISnZkeUJjSW5CbGNtMXBjM05wYjI0Z1pHVnVhV1ZrWENJZ1pYSnliM0lnZDJobGJpQmhZMk5sYzNOcGJtY2dYQ0prYjJOMWJXVnVkRndpSUhaaGNtbGhZbXhsTENCelpXVWdhbEYxWlhKNUlDTXhNemt6Tmx4dVhIUXZMeUJKUlRZdE9DQmtieUJ1YjNRZ2MzVndjRzl5ZENCMGFHVWdaR1ZtWVhWc2RGWnBaWGNnY0hKdmNHVnlkSGtnYzI4Z2NHRnlaVzUwSUhkcGJHd2dZbVVnZFc1a1pXWnBibVZrWEc1Y2RHbG1JQ2dnY0dGeVpXNTBJQ1ltSUhCaGNtVnVkQ0FoUFQwZ2NHRnlaVzUwTG5SdmNDQXBJSHRjYmx4MFhIUXZMeUJKUlRFeElHUnZaWE1nYm05MElHaGhkbVVnWVhSMFlXTm9SWFpsYm5Rc0lITnZJR0ZzYkNCdGRYTjBJSE4xWm1abGNseHVYSFJjZEdsbUlDZ2djR0Z5Wlc1MExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJZ0tTQjdYRzVjZEZ4MFhIUndZWEpsYm5RdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnZ1hDSjFibXh2WVdSY0lpd2dkVzVzYjJGa1NH
14938RnVaR3hsY2l3Z1ptRnNjMlVnS1R0Y2JseDBYSFI5SUdWc2MyVWdhV1lnS0NCd1lYSmxiblF1WVhSMFlXTm9SWFpsYm5RZ0tTQjdYRzVjZEZ4MFhIUndZWEpsYm5RdVlYUjBZV05vUlhabGJuUW9JRndpYjI1MWJteHZZV1JjSWl3Z2RXNXNiMkZrU0dGdVpHeGxjaUFwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEM4cUlGTjFjSEJ2Y25RZ2RHVnpkSE5jYmx4MExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFNBcUwxeHVYSFJrYjJOMWJXVnVkRWx6U0ZSTlRDQTlJQ0ZwYzFoTlRDZ2daRzlqSUNrN1hHNWNibHgwTHlvZ1FYUjBjbWxpZFhSbGMxeHVYSFF0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRJQ292WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOE9GeHVYSFF2THlCV1pYSnBabmtnZEdoaGRDQm5aWFJCZEhSeWFXSjFkR1VnY21WaGJHeDVJSEpsZEhWeWJuTWdZWFIwY21saWRYUmxjeUJoYm1RZ2JtOTBJSEJ5YjNCbGNuUnBaWE5jYmx4MEx5OGdLR1Y0WTJWd2RHbHVaeUJKUlRnZ1ltOXZiR1ZoYm5NcFhHNWNkSE4xY0hCdmNuUXVZWFIwY21saWRYUmxjeUE5SUdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RHUnBkaTVqYkdGemMwNWhiV1VnUFNCY0ltbGNJanRjYmx4MFhIUnlaWFIxY200Z0lXUnBkaTVuWlhSQmRIUnlhV0oxZEdVb1hDSmpiR0Z6YzA1aGJXVmNJaWs3WEc1Y2RIMHBPMXh1WEc1Y2RDOHFJR2RsZEVWc1pXMWxiblFvY3lsQ2VTcGNibHgwTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMU0FxTDF4dVhHNWNkQzh2SUVOb1pXTnJJR2xtSUdkbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtGd2lLbHdpS1NCeVpYUjFjbTV6SUc5dWJIa2daV3hsYldWdWRITmNibHgwYzNWd2NHOXlkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNBOUlHRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmNkR1JwZGk1aGNIQmxibVJEYUdsc1pDZ2daRzlqTG1OeVpXRjBaVU52YlcxbGJuUW9YQ0pjSWlrZ0tUdGNibHgwWEhSeVpYUjFjbTRnSVdScGRpNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2hjSWlwY0lpa3ViR1Z1WjNSb08xeHVYSFI5S1R0Y2JseHVYSFF2THlCVGRYQndiM0owT2lCSlJUdzVYRzVjZEhOMWNIQnZjblF1WjJWMFJXeGxiV1Z1ZEhOQ2VVTnNZWE56VG1GdFpTQTlJSEp1WVhScGRtVXVkR1Z6ZENnZ1pHOWpMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVZ0tUdGNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVHd4TUZ4dVhIUXZMeUJEYUdWamF5QnBaaUJuWlhSRmJHVnRaVzUwUW5sSlpDQnlaWFIxY201eklHVnNaVzFsYm5SeklHSjVJRzVoYldWY2JseDBMeThnVkdobElHSnliMnRsYmlCblpYUkZiR1Z0Wlc1MFFubEpaQ0J0WlhSb2IyUnpJR1J2YmlkMElIQnBZMnNnZFhBZ2NISnZaM0poYldGMGFXTmhiR3g1TFhObGRDQnVZVzFsY3l4Y2JseDBMeThnYzI4Z2RYTmxJR0VnY205MWJtUmhZbTkxZENCblpYUkZiR1Z0Wlc1MGMwSjVUbUZ0WlNCMFpYTjBYRzVjZEhOMWNIQnZjblF1WjJWMFFubEpaQ0E5SUdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RHUnZZMFZzWlcwdVlYQndaVzVrUTJocGJHUW9JR1JwZGlBcExtbGtJRDBnWlhod1lXNWtienRjYmx4MFhIUnlaWFIxY200Z0lXUnZZeTVuWlhSRmJHVnRaVzUwYzBKNVRtRnRaU0I4ZkNBaFpHOWpMbWRsZEVWc1pXMWxiblJ6UW5sT1lXMWxLQ0JsZUhCaGJtUnZJQ2t1YkdWdVozUm9PMXh1WEhSOUtUdGNibHh1WEhRdkx5QkpSQ0JtYVc1a0lHRnVaQ0JtYVd4MFpYSmNibHgwYVdZZ0tDQnpkWEJ3YjNKMExtZGxkRUo1U1dRZ0tTQjdYRzVjZEZ4MFJYaHdjaTVtYVc1a1cxd2lTVVJjSWwwZ1BTQm1kVzVqZEdsdmJpZ2dhV1FzSUdOdmJuUmxlSFFnS1NCN1hHNWNkRngwWEhScFppQW9JSFI1Y0dWdlppQmpiMjUwWlhoMExtZGxkRVZzWlcxbGJuUkNlVWxrSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUNZbUlHUnZZM1Z0Wlc1MFNYTklWRTFNSUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYlNBOUlHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRFSjVTV1FvSUdsa0lDazdYRzVjZEZ4MFhIUmNkQzh2SUVOb1pXTnJJSEJoY21WdWRFNXZaR1VnZEc4Z1kyRjBZMmdnZDJobGJpQkNiR0ZqYTJKbGNuSjVJRFF1TmlCeVpYUjFjbTV6WEc1Y2RGeDBYSFJjZEM4dklHNXZaR1Z6SUhSb1lYUWdZWEpsSUc1dklHeHZibWRsY2lCcGJpQjBhR1VnWkc5amRXMWxiblFnSXpZNU5qTmNibHgwWEhSY2RGeDBjbVYwZFhKdUlHMGdKaVlnYlM1d1lYSmxiblJPYjJSbElEOGdXeUJ0SUYwZ09pQmJYVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlPMXh1WEhSY2RFVjRjSEl1Wm1sc2RHVnlXMXdpU1VSY0lsMGdQU0JtZFc1amRHbHZiaWdnYVdRZ0tTQjdYRzVjZEZ4MFhIUjJZWElnWVhSMGNrbGtJRDBnYVdRdWNtVndiR0ZqWlNnZ2NuVnVaWE5qWVhCbExDQm1kVzVsYzJOaGNHVWdLVHRjYmx4MFhIUmNkSEpsZEhWeWJpQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lhV1JjSWlrZ1BUMDlJR0YwZEhKSlpEdGNibHgwWEhSY2RIMDdYRzVjZEZ4MGZUdGNibHgwZlNCbGJITmxJSHRjYmx4MFhIUXZMeUJUZFhCd2IzSjBPaUJKUlRZdk4xeHVYSFJjZEM4dklHZGxkRVZzWlcxbGJuUkNlVWxrSUdseklHNXZkQ0J5Wld4cFlXSnNaU0JoY3lCaElHWnBibVFnYzJodmNuUmpkWFJjYmx4MFhIUmtaV3hsZEdVZ1JYaHdjaTVtYVc1a1cxd2lTVVJjSWwwN1hHNWNibHgwWEhSRmVIQnlMbVpwYkhSbGNsdGNJa2xFWENKZElEMGdJR1oxYm1OMGFXOXVLQ0JwWkNBcElIdGNibHgwWEhSY2RIWmhjaUJoZEhSeVNXUWdQU0JwWkM1eVpYQnNZV05sS0NCeWRXNWxjMk5oY0dVc0lHWjFibVZ6WTJGd1pTQXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYm05a1pTQTlJSFI1Y0dWdlppQmxiR1Z0TG1kbGRFRjBkSEpwWW5WMFpVNXZaR1VnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnSmlZZ1pXeGxiUzVuWlhSQmRIUnlhV0oxZEdWT2IyUmxLRndpYVdSY0lpazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnViMlJsSUNZbUlHNXZaR1V1ZG1Gc2RXVWdQVDA5SUdGMGRISkpaRHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmVHRjYmx4MGZWeHVYRzVjZEM4dklGUmhaMXh1WEhSRmVIQnlMbVpwYm1SYlhDSlVRVWRjSWwwZ1BTQnpkWEJ3YjNKMExtZGxkRVZzWlcxbGJuUnpRbmxVWVdkT1lXMWxJRDljYmx4MFhIUm1kVzVqZEdsdmJpZ2dkR0ZuTENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdZMjl1ZEdWNGRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU0FoUFQwZ1hDSjFibVJsWm1sdVpXUmNJaUFwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUdOdmJuUmxlSFF1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lIUmhaeUFwTzF4dVhHNWNkRngwWEhRdkx5QkViMk4xYldWdWRFWnlZV2R0Wlc1MElHNXZaR1Z6SUdSdmJpZDBJR2hoZG1VZ1owVkNWRTVjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUhOMWNIQnZjblF1Y1hOaElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdZMjl1ZEdWNGRDNXhkV1Z5ZVZObGJHVmpkRzl5UVd4c0tDQjBZV2NnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5SURwY2JseHVYSFJjZEdaMWJtTjBhVzl1S0NCMFlXY3NJR052Ym5SbGVIUWdLU0I3WEc1Y2RGeDBYSFIyWVhJZ1pXeGxiU3hjYmx4MFhIUmNkRngwZEcxd0lEMGdXMTBzWEc1Y2RGeDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBYSFF2THlCQ2VTQm9ZWEJ3ZVNCamIybHVZMmxrWlc1alpTd2dZU0FvWW5KdmEyVnVLU0JuUlVKVVRpQmhjSEJsWVhKeklHOXVJRVJ2WTNWdFpXNTBSbkpoWjIxbGJuUWdibTlrWlhNZ2RHOXZYRzVjZEZ4MFhIUmNkSEpsYzNWc2RITWdQU0JqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NCMFlXY2dLVHRjYmx4dVhIUmNkRngwTHk4Z1JtbHNkR1Z5SUc5MWRDQndiM056YVdKc1pTQmpiMjF0Wlc1MGMxeHVY
14938SFJjZEZ4MGFXWWdLQ0IwWVdjZ1BUMDlJRndpS2x3aUlDa2dlMXh1WEhSY2RGeDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdjbVZ6ZFd4MGMxdHBLeXRkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUjBiWEF1Y0hWemFDZ2daV3hsYlNBcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGJYQTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2NtVnpkV3gwY3p0Y2JseDBYSFI5TzF4dVhHNWNkQzh2SUVOc1lYTnpYRzVjZEVWNGNISXVabWx1WkZ0Y0lrTk1RVk5UWENKZElEMGdjM1Z3Y0c5eWRDNW5aWFJGYkdWdFpXNTBjMEo1UTJ4aGMzTk9ZVzFsSUNZbUlHWjFibU4wYVc5dUtDQmpiR0Z6YzA1aGJXVXNJR052Ym5SbGVIUWdLU0I3WEc1Y2RGeDBhV1lnS0NCa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0lHTnNZWE56VG1GdFpTQXBPMXh1WEhSY2RIMWNibHgwZlR0Y2JseHVYSFF2S2lCUlUwRXZiV0YwWTJobGMxTmxiR1ZqZEc5eVhHNWNkQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMGdLaTljYmx4dVhIUXZMeUJSVTBFZ1lXNWtJRzFoZEdOb1pYTlRaV3hsWTNSdmNpQnpkWEJ3YjNKMFhHNWNibHgwTHk4Z2JXRjBZMmhsYzFObGJHVmpkRzl5S0RwaFkzUnBkbVVwSUhKbGNHOXlkSE1nWm1Gc2MyVWdkMmhsYmlCMGNuVmxJQ2hKUlRrdlQzQmxjbUVnTVRFdU5TbGNibHgwY21KMVoyZDVUV0YwWTJobGN5QTlJRnRkTzF4dVhHNWNkQzh2SUhGVFlTZzZabTlqZFhNcElISmxjRzl5ZEhNZ1ptRnNjMlVnZDJobGJpQjBjblZsSUNoRGFISnZiV1VnTWpFcFhHNWNkQzh2SUZkbElHRnNiRzkzSUhSb2FYTWdZbVZqWVhWelpTQnZaaUJoSUdKMVp5QnBiaUJKUlRndk9TQjBhR0YwSUhSb2NtOTNjeUJoYmlCbGNuSnZjbHh1WEhRdkx5QjNhR1Z1WlhabGNpQmdaRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZEdBZ2FYTWdZV05qWlhOelpXUWdiMjRnWVc0Z2FXWnlZVzFsWEc1Y2RDOHZJRk52TENCM1pTQmhiR3h2ZHlBNlptOWpkWE1nZEc4Z2NHRnpjeUIwYUhKdmRXZG9JRkZUUVNCaGJHd2dkR2hsSUhScGJXVWdkRzhnWVhadmFXUWdkR2hsSUVsRklHVnljbTl5WEc1Y2RDOHZJRk5sWlNCb2RIUndPaTh2WW5WbmN5NXFjWFZsY25rdVkyOXRMM1JwWTJ0bGRDOHhNek0zT0Z4dVhIUnlZblZuWjNsUlUwRWdQU0JiWFR0Y2JseHVYSFJwWmlBb0lDaHpkWEJ3YjNKMExuRnpZU0E5SUhKdVlYUnBkbVV1ZEdWemRDZ2daRzlqTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dnS1NrZ0tTQjdYRzVjZEZ4MEx5OGdRblZwYkdRZ1VWTkJJSEpsWjJWNFhHNWNkRngwTHk4Z1VtVm5aWGdnYzNSeVlYUmxaM2tnWVdSdmNIUmxaQ0JtY205dElFUnBaV2R2SUZCbGNtbHVhVnh1WEhSY2RHRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmNkRngwTHk4Z1UyVnNaV04wSUdseklITmxkQ0IwYnlCbGJYQjBlU0J6ZEhKcGJtY2diMjRnY0hWeWNHOXpaVnh1WEhSY2RGeDBMeThnVkdocGN5QnBjeUIwYnlCMFpYTjBJRWxGSjNNZ2RISmxZWFJ0Wlc1MElHOW1JRzV2ZENCbGVIQnNhV05wZEd4NVhHNWNkRngwWEhRdkx5QnpaWFIwYVc1bklHRWdZbTl2YkdWaGJpQmpiMjUwWlc1MElHRjBkSEpwWW5WMFpTeGNibHgwWEhSY2RDOHZJSE5wYm1ObElHbDBjeUJ3Y21WelpXNWpaU0J6YUc5MWJHUWdZbVVnWlc1dmRXZG9YRzVjZEZ4MFhIUXZMeUJvZEhSd09pOHZZblZuY3k1cWNYVmxjbmt1WTI5dEwzUnBZMnRsZEM4eE1qTTFPVnh1WEhSY2RGeDBaRzlqUld4bGJTNWhjSEJsYm1SRGFHbHNaQ2dnWkdsMklDa3VhVzV1WlhKSVZFMU1JRDBnWENJOFlTQnBaRDBuWENJZ0t5QmxlSEJoYm1SdklDc2dYQ0luUGp3dllUNWNJaUFyWEc1Y2RGeDBYSFJjZEZ3aVBITmxiR1ZqZENCcFpEMG5YQ0lnS3lCbGVIQmhibVJ2SUNzZ1hDSXRYRnhtWFNjZ2JYTmhiR3h2ZDJOaGNIUjFjbVU5SnljK1hDSWdLMXh1WEhSY2RGeDBYSFJjSWp4dmNIUnBiMjRnYzJWc1pXTjBaV1E5SnljK1BDOXZjSFJwYjI0K1BDOXpaV3hsWTNRK1hDSTdYRzVjYmx4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVsRk9Dd2dUM0JsY21FZ01URXRNVEl1TVRaY2JseDBYSFJjZEM4dklFNXZkR2hwYm1jZ2MyaHZkV3hrSUdKbElITmxiR1ZqZEdWa0lIZG9aVzRnWlcxd2RIa2djM1J5YVc1bmN5Qm1iMnhzYjNjZ1hqMGdiM0lnSkQwZ2IzSWdLajFjYmx4MFhIUmNkQzh2SUZSb1pTQjBaWE4wSUdGMGRISnBZblYwWlNCdGRYTjBJR0psSUhWdWEyNXZkMjRnYVc0Z1QzQmxjbUVnWW5WMElGd2ljMkZtWlZ3aUlHWnZjaUJYYVc1U1ZGeHVYSFJjZEZ4MEx5OGdhSFIwY0RvdkwyMXpaRzR1YldsamNtOXpiMlowTG1OdmJTOWxiaTExY3k5c2FXSnlZWEo1TDJsbEwyaG9ORFkxTXpnNExtRnpjSGdqWVhSMGNtbGlkWFJsWDNObFkzUnBiMjVjYmx4MFhIUmNkR2xtSUNnZ1pHbDJMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29YQ0piYlhOaGJHeHZkMk5oY0hSMWNtVmVQU2NuWFZ3aUtTNXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MFhIUmNkSEppZFdkbmVWRlRRUzV3ZFhOb0tDQmNJbHNxWGlSZFBWd2lJQ3NnZDJocGRHVnpjR0ZqWlNBcklGd2lLaWcvT2ljbmZGeGNYQ0pjWEZ3aUtWd2lJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklGTjFjSEJ2Y25RNklFbEZPRnh1WEhSY2RGeDBMeThnUW05dmJHVmhiaUJoZEhSeWFXSjFkR1Z6SUdGdVpDQmNJblpoYkhWbFhDSWdZWEpsSUc1dmRDQjBjbVZoZEdWa0lHTnZjbkpsWTNSc2VWeHVYSFJjZEZ4MGFXWWdLQ0FoWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b1hDSmJjMlZzWldOMFpXUmRYQ0lwTG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJjZEZ4MGNtSjFaMmQ1VVZOQkxuQjFjMmdvSUZ3aVhGeGNYRnRjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1B6cDJZV3gxWlh4Y0lpQXJJR0p2YjJ4bFlXNXpJQ3NnWENJcFhDSWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1EyaHliMjFsUERJNUxDQkJib
14938VJ5YjJsa1BEUXVNaXNzSUZOaFptRnlhVHczTGpBckxDQnBUMU04Tnk0d0t5d2dVR2hoYm5SdmJVcFRQREV1T1M0M0sxeHVYSFJjZEZ4MGFXWWdLQ0FoWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b0lGd2lXMmxrZmoxY0lpQXJJR1Y0Y0dGdVpHOGdLeUJjSWkxZFhDSWdLUzVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJjZEhKaWRXZG5lVkZUUVM1d2RYTm9LRndpZmoxY0lpazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZkbFltdHBkQzlQY0dWeVlTQXRJRHBqYUdWamEyVmtJSE5vYjNWc1pDQnlaWFIxY200Z2MyVnNaV04wWldRZ2IzQjBhVzl1SUdWc1pXMWxiblJ6WEc1Y2RGeDBYSFF2THlCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOHlNREV4TDFKRlF5MWpjM016TFhObGJHVmpkRzl5Y3kweU1ERXhNRGt5T1M4alkyaGxZMnRsWkZ4dVhIUmNkRngwTHk4Z1NVVTRJSFJvY205M2N5Qmxjbkp2Y2lCb1pYSmxJR0Z1WkNCM2FXeHNJRzV2ZENCelpXVWdiR0YwWlhJZ2RHVnpkSE5jYmx4MFhIUmNkR2xtSUNnZ0lXUnBkaTV4ZFdWeWVWTmxiR1ZqZEc5eVFXeHNLRndpT21Ob1pXTnJaV1JjSWlrdWJHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnlZblZuWjNsUlUwRXVjSFZ6YUNoY0lqcGphR1ZqYTJWa1hDSXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCVGRYQndiM0owT2lCVFlXWmhjbWtnT0Nzc0lHbFBVeUE0SzF4dVhIUmNkRngwTHk4Z2FIUjBjSE02THk5aWRXZHpMbmRsWW10cGRDNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVEV6TmpnMU1WeHVYSFJjZEZ4MEx5OGdTVzR0Y0dGblpTQmdjMlZzWldOMGIzSWphV1FnYzJsaWFXNW5MV052YldKcGJtRjBiM0lnYzJWc1pXTjBiM0pnSUdaaGFXeHpYRzVjZEZ4MFhIUnBaaUFvSUNGa2FYWXVjWFZsY25sVFpXeGxZM1J2Y2tGc2JDZ2dYQ0poSTF3aUlDc2daWGh3WVc1a2J5QXJJRndpS3lwY0lpQXBMbXhsYm1kMGFDQXBJSHRjYmx4MFhIUmNkRngwY21KMVoyZDVVVk5CTG5CMWMyZ29YQ0l1SXk0cld5dCtYVndpS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseHVYSFJjZEdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nVjJsdVpHOTNjeUE0SUU1aGRHbDJaU0JCY0hCelhHNWNkRngwWEhRdkx5QlVhR1VnZEhsd1pTQmhibVFnYm1GdFpTQmhkSFJ5YVdKMWRHVnpJR0Z5WlNCeVpYTjBjbWxqZEdWa0lHUjFjbWx1WnlBdWFXNXVaWEpJVkUxTUlHRnpjMmxuYm0xbGJuUmNibHgwWEhSY2RIWmhjaUJwYm5CMWRDQTlJR1J2WXk1amNtVmhkR1ZGYkdWdFpXNTBLRndpYVc1d2RYUmNJaWs3WEc1Y2RGeDBYSFJwYm5CMWRDNXpaWFJCZEhSeWFXSjFkR1VvSUZ3aWRIbHdaVndpTENCY0ltaHBaR1JsYmx3aUlDazdYRzVjZEZ4MFhIUmthWFl1WVhCd1pXNWtRMmhwYkdRb0lHbHVjSFYwSUNrdWMyVjBRWFIwY21saWRYUmxLQ0JjSW01aGJXVmNJaXdnWENKRVhDSWdLVHRjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1NVVTRYRzVjZEZ4MFhIUXZMeUJGYm1admNtTmxJR05oYzJVdGMyVnVjMmwwYVhacGRIa2diMllnYm1GdFpTQmhkSFJ5YVdKMWRHVmNibHgwWEhSY2RHbG1JQ2dnWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b1hDSmJibUZ0WlQxa1hWd2lLUzVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJjZEhKaWRXZG5lVkZUUVM1d2RYTm9LQ0JjSW01aGJXVmNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBiS2w0a2ZDRitYVDg5WENJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUmtZZ015NDFJQzBnT21WdVlXSnNaV1F2T21ScGMyRmliR1ZrSUdGdVpDQm9hV1JrWlc0Z1pXeGxiV1Z1ZEhNZ0tHaHBaR1JsYmlCbGJHVnRaVzUwY3lCaGNtVWdjM1JwYkd3Z1pXNWhZbXhsWkNsY2JseDBYSFJjZEM4dklFbEZPQ0IwYUhKdmQzTWdaWEp5YjNJZ2FHVnlaU0JoYm1RZ2QybHNiQ0J1YjNRZ2MyVmxJR3hoZEdWeUlIUmxjM1J6WEc1Y2RGeDBYSFJwWmlBb0lDRmthWFl1Y1hWbGNubFRaV3hsWTNSdmNrRnNiQ2hjSWpwbGJtRmliR1ZrWENJcExteGxibWQwYUNBcElIdGNibHgwWEhSY2RGeDBjbUoxWjJkNVVWTkJMbkIxYzJnb0lGd2lPbVZ1WVdKc1pXUmNJaXdnWENJNlpHbHpZV0pzWldSY0lpQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCUGNHVnlZU0F4TUMweE1TQmtiMlZ6SUc1dmRDQjBhSEp2ZHlCdmJpQndiM04wTFdOdmJXMWhJR2x1ZG1Gc2FXUWdjSE5sZFdSdmMxeHVYSFJjZEZ4MFpHbDJMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29YQ0lxTERwNFhDSXBPMXh1WEhSY2RGeDBjbUoxWjJkNVVWTkJMbkIxYzJnb1hDSXNMaW82WENJcE8xeHVYSFJjZEgwcE8xeHVYSFI5WEc1Y2JseDBhV1lnS0NBb2MzVndjRzl5ZEM1dFlYUmphR1Z6VTJWc1pXTjBiM0lnUFNCeWJtRjBhWFpsTG5SbGMzUW9JQ2h0WVhSamFHVnpJRDBnWkc5alJXeGxiUzV0WVhSamFHVnpJSHg4WEc1Y2RGeDBaRzlqUld4bGJTNTNaV0pyYVhSTllYUmphR1Z6VTJWc1pXTjBiM0lnZkh4Y2JseDBYSFJrYjJORmJHVnRMbTF2ZWsxaGRHTm9aWE5UWld4bFkzUnZjaUI4ZkZ4dVhIUmNkR1J2WTBWc1pXMHViMDFoZEdOb1pYTlRaV3hsWTNSdmNpQjhmRnh1WEhSY2RHUnZZMFZzWlcwdWJYTk5ZWFJqYUdWelUyVnNaV04wYjNJcElDa3BJQ2tnZTF4dVhHNWNkRngwWVhOelpYSjBLR1oxYm1OMGFXOXVLQ0JrYVhZZ0tTQjdYRzVjZEZ4MFhIUXZMeUJEYUdWamF5QjBieUJ6WldVZ2FXWWdhWFFuY3lCd2IzTnphV0pzWlNCMGJ5QmtieUJ0WVhSamFHVnpVMlZzWldOMGIzSmNibHgwWEhSY2RDOHZJRzl1SUdFZ1pHbHpZMjl1Ym1WamRHVmtJRzV2WkdVZ0tFbEZJRGtwWEc1Y2RGeDBYSFJ6ZFhCd2IzSjBMbVJwYzJOdmJtNWxZM1JsWkUxaGRHTm9JRDBnYldGMFkyaGxjeTVqWVd4c0tDQmthWFlzSUZ3aVpHbDJYQ0lnS1R0Y2JseHVYSFJjZEZ4MEx5OGdWR2hwY3lCemFHOTFiR1FnWm1GcGJDQjNhWFJvSUdGdUlHVjRZMlZ3ZEdsdmJseHVYSFJjZEZ4MEx5OGdSMlZqYTI4Z1pHOWxjeUJ1YjNRZ1pYSnliM0lzSUhKbGRIVnlibk1nWm1Gc2MyVWdhVzV6ZEdWaFpGeHVYSFJjZEZ4MGJXRjBZMmhsY3k1allXeHNLQ0JrYVhZc0lGd2lXM01oUFNjblhUcDRYQ0lnS1R0Y2JseDBYSFJjZEhKaWRXZG5lVTFoZEdOb1pYTXVjSFZ6YUNnZ1hDSWhQVndpTENCd2MyVjFaRzl6SUNrN1hHNWNkRngwZlNrN1hHNWNkSDFjYmx4dVhIUnlZblZuWjNsUlUwRWdQU0J5WW5WblozbFJVMEV1YkdWdVozUm9JQ1ltSUc1bGR5QlNaV2RGZUhBb0lISmlkV2RuZVZGVFFTNXFiMmx1S0Z3aWZGd2lLU0FwTzF4dVhIUnlZblZuWjNsTllYUmphR1Z6SUQwZ2NtSjFaMmQ1VFdGMFkyaGxjeTVzWlc1bmRHZ2dKaVlnYm
149381WM0lGSmxaMFY0Y0NnZ2NtSjFaMmQ1VFdGMFkyaGxjeTVxYjJsdUtGd2lmRndpS1NBcE8xeHVYRzVjZEM4cUlFTnZiblJoYVc1elhHNWNkQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMGdLaTljYmx4MGFHRnpRMjl0Y0dGeVpTQTlJSEp1WVhScGRtVXVkR1Z6ZENnZ1pHOWpSV3hsYlM1amIyMXdZWEpsUkc5amRXMWxiblJRYjNOcGRHbHZiaUFwTzF4dVhHNWNkQzh2SUVWc1pXMWxiblFnWTI5dWRHRnBibk1nWVc1dmRHaGxjbHh1WEhRdkx5QlFkWEp3YjNObFpuVnNiSGtnWkc5bGN5QnViM1FnYVcxd2JHVnRaVzUwSUdsdVkyeDFjMmwyWlNCa1pYTmpaVzVrWlc1MFhHNWNkQzh2SUVGeklHbHVMQ0JoYmlCbGJHVnRaVzUwSUdSdlpYTWdibTkwSUdOdmJuUmhhVzRnYVhSelpXeG1YRzVjZEdOdmJuUmhhVzV6SUQwZ2FHRnpRMjl0Y0dGeVpTQjhmQ0J5Ym1GMGFYWmxMblJsYzNRb0lHUnZZMFZzWlcwdVkyOXVkR0ZwYm5NZ0tTQS9YRzVjZEZ4MFpuVnVZM1JwYjI0b0lHRXNJR0lnS1NCN1hHNWNkRngwWEhSMllYSWdZV1J2ZDI0Z1BTQmhMbTV2WkdWVWVYQmxJRDA5UFNBNUlEOGdZUzVrYjJOMWJXVnVkRVZzWlcxbGJuUWdPaUJoTEZ4dVhIUmNkRngwWEhSaWRYQWdQU0JpSUNZbUlHSXVjR0Z5Wlc1MFRtOWtaVHRjYmx4MFhIUmNkSEpsZEhWeWJpQmhJRDA5UFNCaWRYQWdmSHdnSVNFb0lHSjFjQ0FtSmlCaWRYQXVibTlrWlZSNWNHVWdQVDA5SURFZ0ppWWdLRnh1WEhSY2RGeDBYSFJoWkc5M2JpNWpiMjUwWVdsdWN5QS9YRzVjZEZ4MFhIUmNkRngwWVdSdmQyNHVZMjl1ZEdGcGJuTW9JR0oxY0NBcElEcGNibHgwWEhSY2RGeDBYSFJoTG1OdmJYQmhjbVZFYjJOMWJXVnVkRkJ2YzJsMGFXOXVJQ1ltSUdFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdKMWNDQXBJQ1lnTVRaY2JseDBYSFJjZENrcE8xeHVYSFJjZEgwZ09seHVYSFJjZEdaMWJtTjBhVzl1S0NCaExDQmlJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQmlJQ2tnZTF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUNoaUlEMGdZaTV3WVhKbGJuUk9iMlJsS1NBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHSWdQVDA5SUdFZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSeVpYUjFjbTRnZEhKMVpUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwWEhSOU8xeHVYRzVjZEM4cUlGTnZjblJwYm1kY2JseDBMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTQXFMMXh1WEc1Y2RDOHZJRVJ2WTNWdFpXNTBJRzl5WkdWeUlITnZjblJwYm1kY2JseDBjMjl5ZEU5eVpHVnlJRDBnYUdGelEyOXRjR0Z5WlNBL1hHNWNkR1oxYm1OMGFXOXVLQ0JoTENCaUlDa2dlMXh1WEc1Y2RGeDBMeThnUm14aFp5Qm1iM0lnWkhWd2JHbGpZWFJsSUhKbGJXOTJZV3hjYmx4MFhIUnBaaUFvSUdFZ1BUMDlJR0lnS1NCN1hHNWNkRngwWEhSb1lYTkVkWEJzYVdOaGRHVWdQU0IwY25WbE8xeHVYSFJjZEZ4MGNtVjBkWEp1SURBN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UyOXlkQ0J2YmlCdFpYUm9iMlFnWlhocGMzUmxibU5sSUdsbUlHOXViSGtnYjI1bElHbHVjSFYwSUdoaGN5QmpiMjF3WVhKbFJHOWpkVzFsYm5SUWIzTnBkR2x2Ymx4dVhIUmNkSFpoY2lCamIyMXdZWEpsSUQwZ0lXRXVZMjl0Y0dGeVpVUnZZM1Z0Wlc1MFVHOXphWFJwYjI0Z0xTQWhZaTVqYjIxd1lYSmxSRzlqZFcxbGJuUlFiM05wZEdsdmJqdGNibHgwWEhScFppQW9JR052YlhCaGNtVWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdZMjl0Y0dGeVpUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkRZV3hqZFd4aGRHVWdjRzl6YVhScGIyNGdhV1lnWW05MGFDQnBibkIxZEhNZ1ltVnNiMjVuSUhSdklIUm9aU0J6WVcxbElHUnZZM1Z0Wlc1MFhHNWNkRngwWTI5dGNHRnlaU0E5SUNnZ1lTNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHRWdLU0E5UFQwZ0tDQmlMbTkzYm1WeVJHOWpkVzFsYm5RZ2ZId2dZaUFwSUQ5Y2JseDBYSFJjZEdFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdJZ0tTQTZYRzVjYmx4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCM1pTQnJibTkzSUhSb1pYa2dZWEpsSUdScGMyTnZibTVsWTNSbFpGeHVYSFJjZEZ4ME1UdGNibHh1WEhSY2RDOHZJRVJwYzJOdmJtNWxZM1JsWkNCdWIyUmxjMXh1WEhSY2RHbG1JQ2dnWTI5dGNHRnlaU0FtSURFZ2ZIeGNibHgwWEhSY2RDZ2hjM1Z3Y0c5eWRDNXpiM0owUkdWMFlXTm9aV1FnSmlZZ1lpNWpiMjF3WVhKbFJHOWpkVzFsYm5SUWIzTnBkR2x2YmlnZ1lTQXBJRDA5UFNCamIyMXdZWEpsS1NBcElIdGNibHh1WEhSY2RGeDBMeThnUTJodmIzTmxJSFJvWlNCbWFYSnpkQ0JsYkdWdFpXNTBJSFJvWVhRZ2FYTWdjbVZzWVhSbFpDQjBieUJ2ZFhJZ2NISmxabVZ5Y21Wa0lHUnZZM1Z0Wlc1MFhHNWNkRngwWEhScFppQW9JR0VnUFQwOUlHUnZZeUI4ZkNCaExtOTNibVZ5Ukc5amRXMWxiblFnUFQwOUlIQnlaV1psY25KbFpFUnZZeUFtSmlCamIyNTBZV2x1Y3lod2NtVm1aWEp5WldSRWIyTXNJR0VwSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z0xURTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnBaaUFvSUdJZ1BUMDlJR1J2WXlCOGZDQmlMbTkzYm1WeVJHOWpkVzFsYm5RZ1BUMDlJSEJ5WldabGNuSmxaRVJ2WXlBbUppQmpiMjUwWVdsdWN5aHdjbVZtWlhKeVpXUkViMk1zSUdJcElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdNVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1RXRnBiblJoYVc0Z2IzSnBaMmx1WVd3Z2IzSmtaWEpjYmx4MFhIUmNkSEpsZEhWeWJpQnpiM0owU1c1d2RYUWdQMXh1WEhSY2RGeDBYSFFvSUdsdVpHVjRUMllvSUhOdmNuUkpibkIxZEN3Z1lTQXBJQzBnYVc1a1pYaFBaaWdnYzI5eWRFbHVjSFYwTENCaUlDa2dLU0E2WEc1Y2RGeDBYSFJjZERBN1hHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR052YlhCaGNtVWdKaUEwSUQ4Z0xURWdPaUF4TzF4dVhIUjlJRHBjYmx4MFpuVnVZM1JwYjI0b0lHRXNJR0lnS1NCN1hHNWNkRngwTHk4Z1JYaHBkQ0JsWVhKc2VTQnBaaUIwYU
14938dVZ2JtOWtaWE1nWVhKbElHbGtaVzUwYVdOaGJGeHVYSFJjZEdsbUlDZ2dZU0E5UFQwZ1lpQXBJSHRjYmx4MFhIUmNkR2hoYzBSMWNHeHBZMkYwWlNBOUlIUnlkV1U3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdNRHRjYmx4MFhIUjlYRzVjYmx4MFhIUjJZWElnWTNWeUxGeHVYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJoZFhBZ1BTQmhMbkJoY21WdWRFNXZaR1VzWEc1Y2RGeDBYSFJpZFhBZ1BTQmlMbkJoY21WdWRFNXZaR1VzWEc1Y2RGeDBYSFJoY0NBOUlGc2dZU0JkTEZ4dVhIUmNkRngwWW5BZ1BTQmJJR0lnWFR0Y2JseHVYSFJjZEM4dklGQmhjbVZ1ZEd4bGMzTWdibTlrWlhNZ1lYSmxJR1ZwZEdobGNpQmtiMk4xYldWdWRITWdiM0lnWkdselkyOXVibVZqZEdWa1hHNWNkRngwYVdZZ0tDQWhZWFZ3SUh4OElDRmlkWEFnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWVNBOVBUMGdaRzlqSUQ4Z0xURWdPbHh1WEhSY2RGeDBYSFJpSUQwOVBTQmtiMk1nUHlBeElEcGNibHgwWEhSY2RGeDBZWFZ3SUQ4Z0xURWdPbHh1WEhSY2RGeDBYSFJpZFhBZ1B5QXhJRHBjYmx4MFhIUmNkRngwYzI5eWRFbHVjSFYwSUQ5Y2JseDBYSFJjZEZ4MEtDQnBibVJsZUU5bUtDQnpiM0owU1c1d2RYUXNJR0VnS1NBdElHbHVaR1Y0VDJZb0lITnZjblJKYm5CMWRDd2dZaUFwSUNrZ09seHVYSFJjZEZ4MFhIUXdPMXh1WEc1Y2RGeDBMeThnU1dZZ2RHaGxJRzV2WkdWeklHRnlaU0J6YVdKc2FXNW5jeXdnZDJVZ1kyRnVJR1J2SUdFZ2NYVnBZMnNnWTJobFkydGNibHgwWEhSOUlHVnNjMlVnYVdZZ0tDQmhkWEFnUFQwOUlHSjFjQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJ6YVdKc2FXNW5RMmhsWTJzb0lHRXNJR0lnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCUGRHaGxjbmRwYzJVZ2QyVWdibVZsWkNCbWRXeHNJR3hwYzNSeklHOW1JSFJvWldseUlHRnVZMlZ6ZEc5eWN5Qm1iM0lnWTI5dGNHRnlhWE52Ymx4dVhIUmNkR04xY2lBOUlHRTdYRzVjZEZ4MGQyaHBiR1VnS0NBb1kzVnlJRDBnWTNWeUxuQmhjbVZ1ZEU1dlpHVXBJQ2tnZTF4dVhIUmNkRngwWVhBdWRXNXphR2xtZENnZ1kzVnlJQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHTjFjaUE5SUdJN1hHNWNkRngwZDJocGJHVWdLQ0FvWTNWeUlEMGdZM1Z5TG5CaGNtVnVkRTV2WkdVcElDa2dlMXh1WEhSY2RGeDBZbkF1ZFc1emFHbG1kQ2dnWTNWeUlDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdWMkZzYXlCa2IzZHVJSFJvWlNCMGNtVmxJR3h2YjJ0cGJtY2dabTl5SUdFZ1pHbHpZM0psY0dGdVkzbGNibHgwWEhSM2FHbHNaU0FvSUdGd1cybGRJRDA5UFNCaWNGdHBYU0FwSUh0Y2JseDBYSFJjZEdrckt6dGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnYVNBL1hHNWNkRngwWEhRdkx5QkVieUJoSUhOcFlteHBibWNnWTJobFkyc2dhV1lnZEdobElHNXZaR1Z6SUdoaGRtVWdZU0JqYjIxdGIyNGdZVzVqWlhOMGIzSmNibHgwWEhSY2RITnBZbXhwYm1kRGFHVmpheWdnWVhCYmFWMHNJR0p3VzJsZElDa2dPbHh1WEc1Y2RGeDBYSFF2THlCUGRHaGxjbmRwYzJVZ2JtOWtaWE1nYVc0Z2IzVnlJR1J2WTNWdFpXNTBJSE52Y25RZ1ptbHljM1JjYmx4MFhIUmNkR0Z3VzJsZElEMDlQU0J3Y21WbVpYSnlaV1JFYjJNZ1B5QXRNU0E2WEc1Y2RGeDBYSFJpY0Z0cFhTQTlQVDBnY0hKbFptVnljbVZrUkc5aklEOGdNU0E2WEc1Y2RGeDBYSFF3TzF4dVhIUjlPMXh1WEc1Y2RISmxkSFZ5YmlCa2IyTTdYRzU5TzF4dVhHNVRhWHA2YkdVdWJXRjBZMmhsY3lBOUlHWjFibU4wYVc5dUtDQmxlSEJ5TENCbGJHVnRaVzUwY3lBcElIdGNibHgwY21WMGRYSnVJRk5wZW5wc1pTZ2daWGh3Y2l3Z2JuVnNiQ3dnYm5Wc2JDd2daV3hsYldWdWRITWdLVHRjYm4wN1hHNWNibE5wZW5wc1pTNXRZWFJqYUdWelUyVnNaV04wYjNJZ1BTQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1pYaHdjaUFwSUh0Y2JseDBMeThnVTJWMElHUnZZM1Z0Wlc1MElIWmhjbk1nYVdZZ2JtVmxaR1ZrWEc1Y2RHbG1JQ2dnS0NCbGJHVnRMbTkzYm1WeVJHOWpkVzFsYm5RZ2ZId2daV3hsYlNBcElDRTlQU0JrYjJOMWJXVnVkQ0FwSUh0Y2JseDBYSFJ6WlhSRWIyTjFiV1Z1ZENnZ1pXeGxiU0FwTzF4dVhIUjlYRzVjYmx4MEx5OGdUV0ZyWlNCemRYSmxJSFJvWVhRZ1lYUjBjbWxpZFhSbElITmxiR1ZqZEc5eWN5QmhjbVVnY1hWdmRHVmtYRzVjZEdWNGNISWdQU0JsZUhCeUxuSmxjR3hoWTJVb0lISmhkSFJ5YVdKMWRHVlJkVzkwWlhNc0lGd2lQU2NrTVNkZFhDSWdLVHRjYmx4dVhIUnBaaUFvSUhOMWNIQnZjblF1YldGMFkyaGxjMU5sYkdWamRHOXlJQ1ltSUdSdlkzVnRaVzUwU1hOSVZFMU1JQ1ltWEc1Y2RGeDBLQ0FoY21KMVoyZDVUV0YwWTJobGN5QjhmQ0FoY21KMVoyZDVUV0YwWTJobGN5NTBaWE4wS0NCbGVIQnlJQ2tnS1NBbUpseHVYSFJjZENnZ0lYSmlkV2RuZVZGVFFTQWdJQ0FnZkh3Z0lYSmlkV2RuZVZGVFFTNTBaWE4wS0NCbGVIQnlJQ2tnS1NBcElIdGNibHh1WEhSY2RIUnllU0I3WEc1Y2RGeDBYSFIyWVhJZ2NtVjBJRDBnYldGMFkyaGxjeTVqWVd4c0tDQmxiR1Z0TENCbGVIQnlJQ2s3WEc1Y2JseDBYSFJjZEM4dklFbEZJRGtuY3lCdFlYUmphR1Z6VTJWc1pXTjBiM0lnY21WMGRYSnVjeUJtWVd4elpTQnZiaUJrYVhOamIyNXVaV04wWldRZ2JtOWtaWE5jYmx4MFhIUmNkR2xtSUNnZ2NtVjBJSHg4SUhOMWNIQnZjblF1WkdselkyOXVibVZqZEdWa1RXRjBZMmdnZkh4Y2JseDBYSFJjZEZ4MFhIUXZMeUJCY3lCM1pXeHNMQ0JrYVhOamIyNXVaV04wWldRZ2JtOWtaWE1nWVhKbElITmhhV1FnZEc4Z1ltVWdhVzRnWVNCa2IyTjFiV1Z1ZEZ4dVhIUmNkRngwWEhSY2RDOHZJR1p5WVdkdFpXNTBJR2x1SUVsRklEbGNibHgwWEhSY2RGeDBYSFJsYkdWdExtUnZZM1Z0Wlc1MElDWW1JR1ZzWlcwdVpHOWpkVzFsYm5RdWJtOWtaVlI1Y0dVZ0lUMDlJREV4SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnVTJsNmVteGxLQ0JsZUhCeUxDQmtiMk4xYldWdWRDd2diblZzYkN3Z1d5QmxiR1Z0SUYwZ0tTNXNaVzVuZEdnZ1BpQXdPMXh1ZlR0Y2JseHVVMmw2ZW14bExtTnZiblJoYVc1eklEMGdablZ1WTNScGIyNG9JR052Ym5SbGVIUXNJR1ZzWlcwZ0tTQjdYRzVjZEM4dklGTmxkQ0JrYjJOMWJXVnVkQ0IyWVhKeklHbG1JRzVsWldSbFpGeHVYSFJwWmlBb0lDZ2dZMjl1ZEdWNGRDNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHTnZiblJsZUhRZ0tTQWhQVDBnWkc5
14938amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHTnZiblJsZUhRZ0tUdGNibHgwZlZ4dVhIUnlaWFIxY200Z1kyOXVkR0ZwYm5Nb0lHTnZiblJsZUhRc0lHVnNaVzBnS1R0Y2JuMDdYRzVjYmxOcGVucHNaUzVoZEhSeUlEMGdablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VnS1NCN1hHNWNkQzh2SUZObGRDQmtiMk4xYldWdWRDQjJZWEp6SUdsbUlHNWxaV1JsWkZ4dVhIUnBaaUFvSUNnZ1pXeGxiUzV2ZDI1bGNrUnZZM1Z0Wlc1MElIeDhJR1ZzWlcwZ0tTQWhQVDBnWkc5amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHVnNaVzBnS1R0Y2JseDBmVnh1WEc1Y2RIWmhjaUJtYmlBOUlFVjRjSEl1WVhSMGNraGhibVJzWlZzZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncElGMHNYRzVjZEZ4MEx5OGdSRzl1SjNRZ1oyVjBJR1p2YjJ4bFpDQmllU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxJSEJ5YjNCbGNuUnBaWE1nS0dwUmRXVnllU0FqTVRNNE1EY3BYRzVjZEZ4MGRtRnNJRDBnWm00Z0ppWWdhR0Z6VDNkdUxtTmhiR3dvSUVWNGNISXVZWFIwY2toaGJtUnNaU3dnYm1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwSUNrZ1AxeHVYSFJjZEZ4MFptNG9JR1ZzWlcwc0lHNWhiV1VzSUNGa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSURwY2JseDBYSFJjZEhWdVpHVm1hVzVsWkR0Y2JseHVYSFJ5WlhSMWNtNGdkbUZzSUNFOVBTQjFibVJsWm1sdVpXUWdQMXh1WEhSY2RIWmhiQ0E2WEc1Y2RGeDBjM1Z3Y0c5eWRDNWhkSFJ5YVdKMWRHVnpJSHg4SUNGa2IyTjFiV1Z1ZEVselNGUk5UQ0EvWEc1Y2RGeDBYSFJsYkdWdExtZGxkRUYwZEhKcFluVjBaU2dnYm1GdFpTQXBJRHBjYmx4MFhIUmNkQ2gyWVd3Z1BTQmxiR1Z0TG1kbGRFRjBkSEpwWW5WMFpVNXZaR1VvYm1GdFpTa3BJQ1ltSUhaaGJDNXpjR1ZqYVdacFpXUWdQMXh1WEhSY2RGeDBYSFIyWVd3dWRtRnNkV1VnT2x4dVhIUmNkRngwWEhSdWRXeHNPMXh1ZlR0Y2JseHVVMmw2ZW14bExtVnljbTl5SUQwZ1puVnVZM1JwYjI0b0lHMXpaeUFwSUh0Y2JseDBkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDQmNJbE41Ym5SaGVDQmxjbkp2Y2l3Z2RXNXlaV052WjI1cGVtVmtJR1Y0Y0hKbGMzTnBiMjQ2SUZ3aUlDc2diWE5uSUNrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUVSdlkzVnRaVzUwSUhOdmNuUnBibWNnWVc1a0lISmxiVzkyYVc1bklHUjFjR3hwWTJGMFpYTmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbE1hV3RsZlNCeVpYTjFiSFJ6WEc0Z0tpOWNibE5wZW5wc1pTNTFibWx4ZFdWVGIzSjBJRDBnWm5WdVkzUnBiMjRvSUhKbGMzVnNkSE1nS1NCN1hHNWNkSFpoY2lCbGJHVnRMRnh1WEhSY2RHUjFjR3hwWTJGMFpYTWdQU0JiWFN4Y2JseDBYSFJxSUQwZ01DeGNibHgwWEhScElEMGdNRHRjYmx4dVhIUXZMeUJWYm14bGMzTWdkMlVnS210dWIzY3FJSGRsSUdOaGJpQmtaWFJsWTNRZ1pIVndiR2xqWVhSbGN5d2dZWE56ZFcxbElIUm9aV2x5SUhCeVpYTmxibU5sWEc1Y2RHaGhjMFIxY0d4cFkyRjBaU0E5SUNGemRYQndiM0owTG1SbGRHVmpkRVIxY0d4cFkyRjBaWE03WEc1Y2RITnZjblJKYm5CMWRDQTlJQ0Z6ZFhCd2IzSjBMbk52Y25SVGRHRmliR1VnSmlZZ2NtVnpkV3gwY3k1emJHbGpaU2dnTUNBcE8xeHVYSFJ5WlhOMWJIUnpMbk52Y25Rb0lITnZjblJQY21SbGNpQXBPMXh1WEc1Y2RHbG1JQ2dnYUdGelJIVndiR2xqWVhSbElDa2dlMXh1WEhSY2RIZG9hV3hsSUNnZ0tHVnNaVzBnUFNCeVpYTjFiSFJ6VzJrcksxMHBJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUQwOVBTQnlaWE4xYkhSeld5QnBJRjBnS1NCN1hHNWNkRngwWEhSY2RHb2dQU0JrZFhCc2FXTmhkR1Z6TG5CMWMyZ29JR2tnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RGeDBkMmhwYkdVZ0tDQnFMUzBnS1NCN1hHNWNkRngwWEhSeVpYTjFiSFJ6TG5Od2JHbGpaU2dnWkhWd2JHbGpZWFJsYzFzZ2FpQmRMQ0F4SUNrN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MEx5OGdRMnhsWVhJZ2FXNXdkWFFnWVdaMFpYSWdjMjl5ZEdsdVp5QjBieUJ5Wld4bFlYTmxJRzlpYW1WamRITmNibHgwTHk4Z1UyVmxJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlxY1hWbGNua3ZjMmw2ZW14bEwzQjFiR3d2TWpJMVhHNWNkSE52Y25SSmJuQjFkQ0E5SUc1MWJHdzdYRzVjYmx4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1OU8xeHVYRzR2S2lwY2JpQXFJRlYwYVd4cGRIa2dablZ1WTNScGIyNGdabTl5SUhKbGRISnBaWFpwYm1jZ2RHaGxJSFJsZUhRZ2RtRnNkV1VnYjJZZ1lXNGdZWEp5WVhrZ2IyWWdSRTlOSUc1dlpHVnpYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmRVZzWlcxbGJuUjlJR1ZzWlcxY2JpQXFMMXh1WjJWMFZHVjRkQ0E5SUZOcGVucHNaUzVuWlhSVVpYaDBJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RIWmhjaUJ1YjJSbExGeHVYSFJjZEhKbGRDQTlJRndpWENJc1hHNWNkRngwYVNBOUlEQXNYRzVjZEZ4MGJtOWtaVlI1Y0dVZ1BTQmxiR1Z0TG01dlpHVlVlWEJsTzF4dVhHNWNkR2xtSUNnZ0lXNXZaR1ZVZVhCbElDa2dlMXh1WEhSY2RDOHZJRWxtSUc1dklHNXZaR1ZVZVhCbExDQjBhR2x6SUdseklHVjRjR1ZqZEdWa0lIUnZJR0psSUdGdUlHRnljbUY1WEc1Y2RGeDBkMmhwYkdVZ0tDQW9ibTlrWlNBOUlHVnNaVzFiYVNzclhTa2dLU0I3WEc1Y2RGeDBYSFF2THlCRWJ5QnViM1FnZEhKaGRtVnljMlVnWTI5dGJXVnVkQ0J1YjJSbGMxeHVYSFJjZEZ4MGNtVjBJQ3M5SUdkbGRGUmxlSFFvSUc1dlpHVWdLVHRjYmx4MFhIUjlYRzVjZEgwZ1pXeHpaU0JwWmlBb0lHNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElHNXZaR1ZVZVhCbElEMDlQU0E1SUh4OElHNXZaR1ZVZVhCbElEMDlQU0F4TVNBcElIdGNibHgwWEhRdkx5QlZjMlVnZEdWNGR
14938FTnZiblJsYm5RZ1ptOXlJR1ZzWlcxbGJuUnpYRzVjZEZ4MEx5OGdhVzV1WlhKVVpYaDBJSFZ6WVdkbElISmxiVzkyWldRZ1ptOXlJR052Ym5OcGMzUmxibU41SUc5bUlHNWxkeUJzYVc1bGN5QW9hbEYxWlhKNUlDTXhNVEUxTXlsY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCbGJHVnRMblJsZUhSRGIyNTBaVzUwSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwdWRHVjRkRU52Ym5SbGJuUTdYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEM4dklGUnlZWFpsY25ObElHbDBjeUJqYUdsc1pISmxibHh1WEhSY2RGeDBabTl5SUNnZ1pXeGxiU0E5SUdWc1pXMHVabWx5YzNSRGFHbHNaRHNnWld4bGJUc2daV3hsYlNBOUlHVnNaVzB1Ym1WNGRGTnBZbXhwYm1jZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZENBclBTQm5aWFJVWlhoMEtDQmxiR1Z0SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlJR1ZzYzJVZ2FXWWdLQ0J1YjJSbFZIbHdaU0E5UFQwZ015QjhmQ0J1YjJSbFZIbHdaU0E5UFQwZ05DQXBJSHRjYmx4MFhIUnlaWFIxY200Z1pXeGxiUzV1YjJSbFZtRnNkV1U3WEc1Y2RIMWNibHgwTHk4Z1JHOGdibTkwSUdsdVkyeDFaR1VnWTI5dGJXVnVkQ0J2Y2lCd2NtOWpaWE56YVc1bklHbHVjM1J5ZFdOMGFXOXVJRzV2WkdWelhHNWNibHgwY21WMGRYSnVJSEpsZER0Y2JuMDdYRzVjYmtWNGNISWdQU0JUYVhwNmJHVXVjMlZzWldOMGIzSnpJRDBnZTF4dVhHNWNkQzh2SUVOaGJpQmlaU0JoWkdwMWMzUmxaQ0JpZVNCMGFHVWdkWE5sY2x4dVhIUmpZV05vWlV4bGJtZDBhRG9nTlRBc1hHNWNibHgwWTNKbFlYUmxVSE5sZFdSdk9pQnRZWEpyUm5WdVkzUnBiMjRzWEc1Y2JseDBiV0YwWTJnNklHMWhkR05vUlhod2NpeGNibHh1WEhSaGRIUnlTR0Z1Wkd4bE9pQjdmU3hjYmx4dVhIUm1hVzVrT2lCN2ZTeGNibHh1WEhSeVpXeGhkR2wyWlRvZ2UxeHVYSFJjZEZ3aVBsd2lPaUI3SUdScGNqb2dYQ0p3WVhKbGJuUk9iMlJsWENJc0lHWnBjbk4wT2lCMGNuVmxJSDBzWEc1Y2RGeDBYQ0lnWENJNklIc2daR2x5T2lCY0luQmhjbVZ1ZEU1dlpHVmNJaUI5TEZ4dVhIUmNkRndpSzF3aU9pQjdJR1JwY2pvZ1hDSndjbVYyYVc5MWMxTnBZbXhwYm1kY0lpd2dabWx5YzNRNklIUnlkV1VnZlN4Y2JseDBYSFJjSW41Y0lqb2dleUJrYVhJNklGd2ljSEpsZG1sdmRYTlRhV0pzYVc1blhDSWdmVnh1WEhSOUxGeHVYRzVjZEhCeVpVWnBiSFJsY2pvZ2UxeHVYSFJjZEZ3aVFWUlVVbHdpT2lCbWRXNWpkR2x2YmlnZ2JXRjBZMmdnS1NCN1hHNWNkRngwWEhSdFlYUmphRnN4WFNBOUlHMWhkR05vV3pGZExuSmxjR3hoWTJVb0lISjFibVZ6WTJGd1pTd2dablZ1WlhOallYQmxJQ2s3WEc1Y2JseDBYSFJjZEM4dklFMXZkbVVnZEdobElHZHBkbVZ1SUhaaGJIVmxJSFJ2SUcxaGRHTm9Xek5kSUhkb1pYUm9aWElnY1hWdmRHVmtJRzl5SUhWdWNYVnZkR1ZrWEc1Y2RGeDBYSFJ0WVhSamFGc3pYU0E5SUNnZ2JXRjBZMmhiTTEwZ2ZId2diV0YwWTJoYk5GMGdmSHdnYldGMFkyaGJOVjBnZkh3Z1hDSmNJaUFwTG5KbGNHeGhZMlVvSUhKMWJtVnpZMkZ3WlN3Z1puVnVaWE5qWVhCbElDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ2JXRjBZMmhiTWwwZ1BUMDlJRndpZmoxY0lpQXBJSHRjYmx4MFhIUmNkRngwYldGMFkyaGJNMTBnUFNCY0lpQmNJaUFySUcxaGRHTm9Xek5kSUNzZ1hDSWdYQ0k3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJ0WVhSamFDNXpiR2xqWlNnZ01Dd2dOQ0FwTzF4dVhIUmNkSDBzWEc1Y2JseDBYSFJjSWtOSVNVeEVYQ0k2SUdaMWJtTjBhVzl1S0NCdFlYUmphQ0FwSUh0Y2JseDBYSFJjZEM4cUlHMWhkR05vWlhNZ1puSnZiU0J0WVhSamFFVjRjSEpiWENKRFNFbE1SRndpWFZ4dVhIUmNkRngwWEhReElIUjVjR1VnS0c5dWJIbDhiblJvZkM0dUxpbGNibHgwWEhSY2RGeDBNaUIzYUdGMElDaGphR2xzWkh4dlppMTBlWEJsS1Z4dVhIUmNkRngwWEhReklHRnlaM1Z0Wlc1MElDaGxkbVZ1Zkc5a1pIeGNYR1FxZkZ4Y1pDcHVLRnNyTFYxY1hHUXJLVDk4TGk0dUtWeHVYSFJjZEZ4MFhIUTBJSGh1TFdOdmJYQnZibVZ1ZENCdlppQjRiaXQ1SUdGeVozVnRaVzUwSUNoYkt5MWRQMXhjWkNwdWZDbGNibHgwWEhSY2RGeDBOU0J6YVdkdUlHOW1JSGh1TFdOdmJYQnZibVZ1ZEZ4dVhIUmNkRngwWEhRMklIZ2diMllnZUc0dFkyOXRjRzl1Wlc1MFhHNWNkRngwWEhSY2REY2djMmxuYmlCdlppQjVMV052YlhCdmJtVnVkRnh1WEhSY2RGeDBYSFE0SUhrZ2IyWWdlUzFqYjIxd2IyNWxiblJjYmx4MFhIUmNkQ292WEc1Y2RGeDBYSFJ0WVhSamFGc3hYU0E5SUcxaGRHTm9XekZkTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ2JXRjBZMmhiTVYwdWMyeHBZMlVvSURBc0lETWdLU0E5UFQwZ1hDSnVkR2hjSWlBcElIdGNibHgwWEhSY2RGeDBMeThnYm5Sb0xTb2djbVZ4ZFdseVpYTWdZWEpuZFcxbGJuUmNibHgwWEhSY2RGeDBhV1lnS0NBaGJXRjBZMmhiTTEwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwVTJsNmVteGxMbVZ5Y205eUtDQnRZWFJqYUZzd1hTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdiblZ0WlhKcFl5QjRJR0Z1WkNCNUlIQmhjbUZ0WlhSbGNuTWdabTl5SUVWNGNISXVabWxzZEdWeUxrTklTVXhFWEc1Y2RGeDBYSFJjZEM4dklISmxiV1Z0WW1WeUlIUm9ZWFFnWm1Gc2MyVXZkSEoxWlNCallYTjBJSEpsYzNCbFkzUnBkbVZzZVNCMGJ5QXdMekZjYmx4MFhIUmNkRngwYldGMFkyaGJORjBnUFNBcktDQnRZWFJqYUZzMFhTQS9JRzFoZEdOb1d6VmRJQ3NnS0cxaGRHTm9XelpkSUh4OElERXBJRG9nTWlBcUlDZ2diV0YwWTJoYk0xMGdQVDA5SUZ3aVpYWmxibHdpSUh4OElHMWhkR05vV3pOZElEMDlQU0JjSW05a1pGd2lJQ2tnS1R0Y2JseDBYSFJjZEZ4MGJXRjBZMmhiTlYwZ1BTQXJLQ0FvSUcxaGRHTm9XemRkSUNzZ2JXRjBZMmhiT0YwZ0tTQjhmQ0J0WVhSamFGc3pYU0E5UFQwZ1hDSnZaR1JjSWlBcE8xeHVYRzVjZEZ4MFhIUXZMeUJ2ZEdobGNpQjBlWEJsY3lCd2NtOW9hV0pwZENCaGNtZDFiV1Z1ZEhOY2JseDBYSFJjZEgwZ1pXeHpaU0JwWmlBb0lHMWhkR05vV3pOZElDa2dlMXh1WEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lHMWhkR05vV3pCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSEpsZEhWeWJpQnRZWFJqYUR0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKUVUwVlZSRTljSWpvZ1puVnVZM1JwYjI0b0lHMWhkR05vSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR1Y0WTJWemN5eGNibHgwWEhSY2RGeDBkVzV4ZFc5MFpXUWdQU0FoYldGMFkyaGJObDBnSmlZZ2JXRjBZMmhiTWwwN1hHNWNibHgwWEhSY2RHbG1JQ2dnYldGMFkyaEZlSEJ5VzF3aVEwaEpURVJjSWwwdWRHVnpkQ2dnYldGMFkyaGJNRjBnS1NBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHNTFiR3c3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFRmpZMlZ3ZENCeGRXOTBaV1FnWVhKbmRXMWxiblJ6SUdGekxXbHpYRzVjZEZ4MFhIUnBaaUFvSUcxaGRHTm9Xek5kSUNrZ2UxeHVYSFJjZEZ4MFhIUnRZWFJqYUZzeVhTQTlJRzFoZEdOb1d6UmRJSHg4SUcxaGRHTm9XelZkSUh4OElGd2lYQ0k3WEc1Y2JseDBYSFJjZEM4dklGTjBjbWx3SUdWNFkyVnpjeUJqYUdGeVlXTjBaWEp6SUdaeWIyMGdkVzV4ZFc5MFpXUWdZWEpuZFcxbGJuUnpYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IxYm5GMWIzUmxaQ0FtSmlCeWNITmxkV1J2TG5SbGMzUW9JSFZ1Y1hWdmRHVmtJQ2tnSmlaY2JseDBYSFJjZEZ4MEx5OGdSMlYwSUdWNFkyVnpjeUJtY205dElIUnZhMlZ1YVhwbElDaHlaV04xY25OcGRtVnNlU2xjYmx4MFhIUmNkRngwS0dWNFkyVnpjeUE5SUhSdmEyVnVhWHBsS0NCMWJuRjFiM1JsWkN3Z2RISjFaU0FwS1NBbUpseHVYSFJjZEZ4MFhIUXZMeUJoWkhaaGJtTmxJSFJ2SUhSb1pTQnVaWGgwSUdOc2IzTnBibWNnY0dGeVpXNTBhR1Z6YVhOY2JseDBYSFJjZEZ4MEtHVjRZMlZ6Y3lBOUlIVnVjWFZ2ZEdWa0xtbHVaR1Y0VDJZb0lGd2lLVndpTENCMWJuRjFiM1JsWkM1c1pXNW5kR2dnTFNCbGVHTmxjM01nS1NBdElIVnVjWFZ2ZEdWa0xteGxibWQwYUNrZ0tTQjdYRzVjYmx4MFhIUmNkRngwTHk4Z1pYaGpaWE56SUdseklHRWdibVZuWVhScGRtVWdhVzVrWlhoY2JseDBYSFJjZEZ4MGJXRjBZMmhiTUYwZ1BTQnRZWFJqYUZzd1hTNXpiR2xqWlNnZ01Dd2daWGhqWlhOeklDazdYRzVjZEZ4MFhIUmNkRzFoZEdOb1d6SmRJRDBnZFc1eGRXOTBaV1F1YzJ4cFkyVW9JREFzSUdWNFkyVnpjeUFwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhRdkx5QlNaWFIxY200Z2IyNXNlU0JqWVhCMGRYSmxjeUJ1WldWa1pXUWdZbmtnZEdobElIQnpaWFZrYnlCbWFXeDBaWElnYldWMGFHOWtJQ2gwZVhCbElHRnVaQ0JoY21kMWJXVnVkQ2xjYmx4MFhIUmNkSEpsZEhWeWJpQnRZWFJqYUM1emJHbGpaU2dnTUN3Z015QXBPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFJtYVd4MFpYSTZJSHRjYmx4dVhIUmNkRndpVkVGSFhDSTZJR1oxYm1OMGFXOXVLQ0J1YjJSbFRtRnRaVk5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkRngwZG1GeUlHNXZaR1ZPWVcxbElEMGdibTlrWlU1aGJXVlRaV3hsWTNSdmNpNXlaWEJzWVdObEtDQnlkVzVsYzJOaGNHVXNJR1oxYm1WelkyRndaU0FwTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjZEZ4MFhIUnlaWFIxY200Z2JtOWtaVTVoYldWVFpXeGxZM1J2Y2lBOVBUMGdYQ0lxWENJZ1AxeHVYSFJjZEZ4MFhIUm1kVzVqZEdsdmJpZ3BJSHNnY21WMGRYSnVJSFJ5ZFdVN0lIMGdPbHh1WEhSY2RGeDBYSFJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSeVpYUjFjbTRnWld4bGJTNXViMlJsVG1GdFpTQW1KaUJsYkdWdExtNXZaR1ZPWVcxbExuUnZURzkzWlhKRFlYTmxLQ2tnUFQwOUlHNXZaR1ZPWVcxbE8xeHVYSFJjZEZ4MFhIUjlPMXh1WEhSY2RIMHNYRzVjYmx4MFhIUmNJa05NUVZOVFhDSTZJR1oxYm1OMGFXOXVLQ0JqYkdGemMwNWhiV1VnS1NCN1hHNWNkRngwWEhSMllYSWdjR0YwZEdWeWJpQTlJR05zWVhOelEyRmphR1ZiSUdOc1lYTnpUbUZ0WlNBcklGd2lJRndpSUYwN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCd1lYUjBaWEp1SUh4OFhHNWNkRngwWEhSY2RDaHdZWFIwWlhKdUlEMGdibVYzSUZKbFowVjRjQ2dnWENJb1hueGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaWxjSWlBcklHTnNZWE56VG1GdFpTQXJJRndpS0Z3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aWZDUXBYQ0lnS1NrZ0ppWmNibHgwWEhSY2RGeDBZMnhoYzNORFlXTm9aU2dnWTJ4aGMzTk9ZVzFsTENCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2NHRjBkR1Z5Ymk1MFpYTjBLQ0IwZVhCbGIyWWdaV3hsYlM1amJHRnpjMDVoYldVZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ1pXeGxiUzVqYkdGemMwNWhiV1VnZkh3Z2RIbHdaVzltSUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUNZbUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lZMnhoYzNOY0lpa2dmSHdnWENKY0lpQXBPMXh1WEhSY2RGeDBYSFI5S1R0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKQlZGUlNYQ0k2SUdaMWJtTjBhVzl1S0NCdVlXMWxMQ0J2Y0dWeVlYUnZjaXdnWTJobFkyc2dLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoY2lCeVpYTjFiSFFnUFNCVGFYcDZiR1V1WVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnY21WemRXeDBJRDA5SUc1MWJHd2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUc5d1pYSmhkRzl5SUQwOVBTQmNJaUU5WENJN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBhV1lnS0NBaGIzQmxjbUYwYjNJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFJ5WlhOMWJIUWdLejBnWENKY0lqdGNibHh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdiM0JsY21GMGIzSWdQVDA5SUZ3aVBWd2lJRDhnY21WemRXeDBJRDA5UFNCamFHVmpheUE2WEc1Y2RGeDBYSFJjZEZ4MGIzQmxjbUYwYjNJZ1BUMDlJRndpSVQxY0lpQS9JSEpsYzNWc2RDQWhQVDBnWTJobFkyc2dPbHh1WEhSY2RGeDBYSFJjZEc5d1pYSmhkRzl5SUQwOVBTQmNJbDQ5WENJZ1B5QmphR1ZqYXlBbUppQnlaWE4xYkhRdWFXNWtaWGhQWmlnZ1kyaGxZMnNnS1NBOVBUMGdNQ0E2WEc1Y2RGeDBYSFJjZEZ4MGIzQmxjbUYwYjNJZ1BUMDlJRndpS2oxY0lpQS9JR05vWldOcklDWW1JSEpsYzNWc2RDNXBibVJsZUU5bUtDQmphR1ZqYXlBcElENGdMVEVnT2x4dVhIUmNkRngwWEhSY2RHOXdaWEpoZEc5eUlEMDlQU0JjSWlROVhDSWdQeUJqYUdWamF5QW1KaUJ5WlhOMWJIUXVjMnhwWTJVb0lDMWphR1ZqYXk1c1pXNW5kR2dnS1NBOVBUMGdZMmhsWTJzZ09seHVYSFJjZEZ4MFhIUmNkRzl3WlhKaGRHOXlJRDA5UFNCY0luNDlYQ0lnUHlBb0lGd2lJRndpSUNzZ2NtVnpkV3gwTG5KbGNHeGhZMlVvSUhKM2FHbDBaWE53WVdObExDQmNJaUJjSWlBcElDc2dYQ0lnWENJZ0tTNXBibVJsZUU5bUtDQmphR1ZqYXlBcElENGdMVEVnT2x4dVhIUmNkRngwWEhSY2RHOXdaWEpoZEc5eUlEMDlQU0JjSW53OVhDSWdQeUJ5WlhOMWJIUWdQVDA5SUdOb1pXTnJJSHg4SUhKbGMzVnNkQzV6YkdsalpTZ2dNQ3dnWTJobFkyc3ViR1Z1WjNSb0lDc2dNU0FwSUQwOVBTQmphR1ZqYXlBcklGd2lMVndpSURwY2JseDBYSFJjZEZ4MFhIUm1ZV3h6WlR0Y2JseDBYSFJjZEgwN1hHNWNkRngwZlN4Y2JseHVYSFJjZEZ3aVEwaEpURVJjSWpvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUhkb1lYUXNJR0Z5WjNWdFpXNTBMQ0JtYVhKemRDd2diR0Z6ZENBcElIdGNibHgwWEhSY2RIWmhjaUJ6YVcxd2JHVWdQU0IwZVhCbExuTnNhV05sS0NBd0xDQXpJQ2tnSVQwOUlGd2liblJvWENJc1hHNWNkRngwWEhSY2RHWnZjbmRoY21RZ1BTQjBlWEJsTG5Oc2FXTmxLQ0F0TkNBcElDRTlQU0JjSW14aGMzUmNJaXhjYmx4MFhIUmNkRngwYjJaVWVYQmxJRDBnZDJoaGRDQTlQVDBnWENKdlppMTBlWEJsWENJN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCbWFYSnpkQ0E5UFQwZ01TQW1KaUJzWVhOMElEMDlQU0F3SUQ5Y2JseHVYSFJjZEZ4MFhIUXZMeUJUYUc5eWRHTjFkQ0JtYjNJZ09tNTBhQzBxS0c0cFhHNWNkRngwWEhSY2RHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQWhJV1ZzWlcwdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSY2RGeDBmU0E2WEc1Y2JseDBYSFJjZEZ4MFpuVnVZM1JwYjI0b0lHVnNaVzBzSUdOdmJuUmxlSFFzSUhodGJDQXBJSHRjYmx4MFhIUmNkRngwWEhSMllYSWdZMkZqYUdVc0lHOTFkR1Z5UTJGamFHVXNJRzV2WkdVc0lHUnBabVlzSUc1dlpHVkpibVJsZUN3Z2MzUmhjblFzWEc1Y2RGeDBYSFJjZEZ4MFhIUmthWElnUFNCemFXMXdiR1VnSVQwOUlHWnZjbmRoY21RZ1B5QmNJbTVsZUhSVGFXSnNhVzVuWENJZ09pQmNJbkJ5WlhacGIzVnpVMmxpYkdsdVoxd2lMRnh1WEhSY2RGeDBYSFJjZEZ4MGNHRnlaVzUwSUQwZ1pXeGxiUzV3WVhKbGJuUk9iMlJsTEZ4dVhIUmNkRngwWEhSY2RGeDBibUZ0WlNBOUlHOW1WSGx3WlNBbUppQmxiR1Z0TG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa3NYRzVjZEZ4MFhIUmNkRngwWEhSMWMyVkRZV05vWlNBOUlDRjRiV3dnSmlZZ0lXOW1WSGx3WlR0Y2JseHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2NHRnlaVzUwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkRngwWEhRdkx5QTZLR1pwY25OMGZHeGhjM1I4YjI1c2VTa3RLR05vYVd4a2ZHOW1MWFI1Y0dVcFhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lITnBiWEJzWlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGQyaH
14938BiR1VnS0NCa2FYSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwYm05a1pTQTlJR1ZzWlcwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MGQyaHBiR1VnS0NBb2JtOWtaU0E5SUc1dlpHVmJJR1JwY2lCZEtTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEdsbUlDZ2diMlpVZVhCbElEOGdibTlrWlM1dWIyUmxUbUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BJRDA5UFNCdVlXMWxJRG9nYm05a1pTNXViMlJsVkhsd1pTQTlQVDBnTVNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCU1pYWmxjbk5sSUdScGNtVmpkR2x2YmlCbWIzSWdPbTl1YkhrdEtpQW9hV1lnZDJVZ2FHRjJaVzRuZENCNVpYUWdaRzl1WlNCemJ5bGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUnpkR0Z5ZENBOUlHUnBjaUE5SUhSNWNHVWdQVDA5SUZ3aWIyNXNlVndpSUNZbUlDRnpkR0Z5ZENBbUppQmNJbTVsZUhSVGFXSnNhVzVuWENJN1hHNWNkRngwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkSE4wWVhKMElEMGdXeUJtYjNKM1lYSmtJRDhnY0dGeVpXNTBMbVpwY25OMFEyaHBiR1FnT2lCd1lYSmxiblF1YkdGemRFTm9hV3hrSUYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklHNXZiaTE0Yld3Z09tNTBhQzFqYUdsc1pDZ3VMaTRwSUhOMGIzSmxjeUJqWVdOb1pTQmtZWFJoSUc5dUlHQndZWEpsYm5SZ1hHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHWnZjbmRoY21RZ0ppWWdkWE5sUTJGamFHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkQzh2SUZObFpXc2dZR1ZzWlcxZ0lHWnliMjBnWVNCd2NtVjJhVzkxYzJ4NUxXTmhZMmhsWkNCcGJtUmxlRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUnZkWFJsY2tOaFkyaGxJRDBnY0dGeVpXNTBXeUJsZUhCaGJtUnZJRjBnZkh3Z0tIQmhjbVZ1ZEZzZ1pYaHdZVzVrYnlCZElEMGdlMzBwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJqWVdOb1pTQTlJRzkxZEdWeVEyRmphR1ZiSUhSNWNHVWdYU0I4ZkNCYlhUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGJtOWtaVWx1WkdWNElEMGdZMkZqYUdWYk1GMGdQVDA5SUdScGNuSjFibk1nSmlZZ1kyRmphR1ZiTVYwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEdScFptWWdQU0JqWVdOb1pWc3dYU0E5UFQwZ1pHbHljblZ1Y3lBbUppQmpZV05vWlZzeVhUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGJtOWtaU0E5SUc1dlpHVkpibVJsZUNBbUppQndZWEpsYm5RdVkyaHBiR1JPYjJSbGMxc2dibTlrWlVsdVpHVjRJRjA3WEc1Y2JseDBYSFJjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvYm05a1pTQTlJQ3NyYm05a1pVbHVaR1Y0SUNZbUlHNXZaR1VnSmlZZ2JtOWtaVnNnWkdseUlGMGdmSHhjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFWmhiR3hpWVdOcklIUnZJSE5sWld0cGJtY2dZR1ZzWlcxZ0lHWnliMjBnZEdobElITjBZWEowWEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwS0dScFptWWdQU0J1YjJSbFNXNWtaWGdnUFNBd0tTQjhmQ0J6ZEdGeWRDNXdiM0FvS1NrZ0tTQjdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCWGFHVnVJR1p2ZFc1a0xDQmpZV05vWlNCcGJtUmxlR1Z6SUc5dUlHQndZWEpsYm5SZ0lHRnVaQ0JpY21WaGExeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYm05a1pTNXViMlJsVkhsd1pTQTlQVDBnTVNBbUppQXJLMlJwWm1ZZ0ppWWdibTlrWlNBOVBUMGdaV3hsYlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkRzkxZEdWeVEyRmphR1ZiSUhSNWNHVWdYU0E5SUZzZ1pHbHljblZ1Y3l3Z2JtOWtaVWx1WkdWNExDQmthV1ptSUYwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1ZYTmxJSEJ5WlhacGIzVnpiSGt0WTJGamFHVmtJR1ZzWlcxbGJuUWdhVzVrWlhnZ2FXWWdZWFpoYVd4aFlteGxYRzVjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQjFjMlZEWVdOb1pTQW1KaUFvWTJGamFHVWdQU0FvWld4bGJWc2daWGh3WVc1a2J5QmRJSHg4SUNobGJHVnRXeUJsZUhCaGJtUnZJRjBnUFNCN2ZTa3BXeUIwZVhCbElGMHBJQ1ltSUdOaFkyaGxXekJkSUQwOVBTQmthWEp5ZFc1eklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmthV1ptSUQwZ1kyRmphR1ZiTVYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklIaHRiQ0E2Ym5Sb0xXTm9hV3hrS0M0dUxpa2diM0lnT201MGFDMXNZWE4wTFdOb2FXeGtLQzR1TGlrZ2IzSWdPbTUwYUNndGJHRnpkQ2svTFc5bUxYUjVjR1VvTGk0dUtWeHVYSFJjZEZ4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnVlhObElIUm9aU0J6WVcxbElHeHZiM0FnWVhNZ1lXSnZkbVVnZEc4Z2MyVmxheUJnWld4bGJXQWdabkp2YlNCMGFHVWdjM1JoY25SY2JseDBYSFJjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvYm05a1pTQTlJQ3NyYm05a1pVbHVaR1Y0SUNZbUlHNXZaR1VnSmlZZ2JtOWtaVnNnWkdseUlGMGdmSHhjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFFvWkdsbVppQTlJRzV2WkdWSmJtUmxlQ0E5SURBcElIeDhJSE4wWVhKMExuQnZjQ2dwS1NBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ0tDQnZabFI1Y0dVZ1B5QnViMlJsTG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dQVDA5SUc1aGJXVWdPaUJ1YjJSbExtNXZaR1ZVZVhCbElEMDlQU0F4SUNrZ0ppWWdLeXRrYVdabUlDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwTHk4Z1EyRmphR1VnZEdobElHbHVaR1Y0SUc5bUlHVmhZMmdnWlc1amIzVnVkR1Z5WldRZ1pXeGxiV1Z1ZEZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0IxYzJWRFlXTm9aU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBLRzV2WkdWYklHVjRjR0Z1Wkc4Z1hTQjhmQ0FvYm05a1pWc2daWGh3WVc1a2J5QmRJRDBnZTMwcEtWc2dkSGx3WlNCZElEMGdXeUJrYVhKeWRXNXpMQ0JrYVdabUlGMDdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYm05a1pTQTlQVDBnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFluSmxZV3M3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkQzh2SUVsdVkyOXljRzl5WVhSbElIUm9aU0J2Wm1aelpYUXNJSFJvWlc0Z1kyaGxZMnNnWVdkaGFXNXpkQ0JqZVdOc1pTQnphWHBsWEc1Y2RGeDBYSFJjZEZ4MFhIUmthV1ptSUMwOUlHeGhjM1E3WEc1Y2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z1pHbG1aaUE5UFQwZ1ptbHljM1FnZkh3Z0tDQmthV1ptSUNVZ1ptbHljM1FnUFQwOUlEQWdKaVlnWkdsbVppQXZJR1pwY25OMElENDlJREFnS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkRndpVUZORlZVUlBYQ0k2SUdaMWJtTjBhVzl1S0NCd2MyVjFaRzhzSUdGeVozVnRaVzUwSUNrZ2UxeHVYSFJjZEZ4MEx5OGdjSE5sZFdSdkxXTnNZWE56SUc1aGJXVnpJR0Z5WlNCallYTmxMV2x1YzJWdWMybDBhWFpsWEc1Y2RGeDBYSFF2THlCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOXpaV3hsWTNSdmNuTXZJM0J6WlhWa2J5MWpiR0Z6YzJWelhHNWNkRngwWEhRdkx5QlFjbWx2Y21sMGFYcGxJR0o1SUdOaGMyVWdjMlZ1YzJsMGFYWnBkSGtnYVc0Z1kyRnpaU0JqZFhOMGIyMGdjSE5sZFdSdmN5QmhjbVVnWVdSa1pXUWdkMmwwYUNCMWNIQmxjbU5oYzJVZ2JHVjBkR1Z5YzF4dVhIUmNkRngwTHk4Z1VtVnRaVzFpWlhJZ2RHaGhkQ0J6WlhSR2FXeDBaWEp6SUdsdWFHVnlhWFJ6SUdaeWIyMGdjSE5sZFdSdmMxeHVYSFJjZEZ4MGRtRnlJR0Z5WjNNc1hHNWNkRngwWEhSY2RHWnVJRDBnUlhod2NpNXdjMlYxWkc5eld5QndjMlYxWkc4Z1hTQjhmQ0JGZU
14938hCeUxuTmxkRVpwYkhSbGNuTmJJSEJ6WlhWa2J5NTBiMHh2ZDJWeVEyRnpaU2dwSUYwZ2ZIeGNibHgwWEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lGd2lkVzV6ZFhCd2IzSjBaV1FnY0hObGRXUnZPaUJjSWlBcklIQnpaWFZrYnlBcE8xeHVYRzVjZEZ4MFhIUXZMeUJVYUdVZ2RYTmxjaUJ0WVhrZ2RYTmxJR055WldGMFpWQnpaWFZrYnlCMGJ5QnBibVJwWTJGMFpTQjBhR0YwWEc1Y2RGeDBYSFF2THlCaGNtZDFiV1Z1ZEhNZ1lYSmxJRzVsWldSbFpDQjBieUJqY21WaGRHVWdkR2hsSUdacGJIUmxjaUJtZFc1amRHbHZibHh1WEhSY2RGeDBMeThnYW5WemRDQmhjeUJUYVhwNmJHVWdaRzlsYzF4dVhIUmNkRngwYVdZZ0tDQm1ibHNnWlhod1lXNWtieUJkSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z1ptNG9JR0Z5WjNWdFpXNTBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFSjFkQ0J0WVdsdWRHRnBiaUJ6ZFhCd2IzSjBJR1p2Y2lCdmJHUWdjMmxuYm1GMGRYSmxjMXh1WEhSY2RGeDBhV1lnS0NCbWJpNXNaVzVuZEdnZ1BpQXhJQ2tnZTF4dVhIUmNkRngwWEhSaGNtZHpJRDBnV3lCd2MyVjFaRzhzSUhCelpYVmtieXdnWENKY0lpd2dZWEpuZFcxbGJuUWdYVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJRVY0Y0hJdWMyVjBSbWxzZEdWeWN5NW9ZWE5QZDI1UWNtOXdaWEowZVNnZ2NITmxkV1J2TG5SdlRHOTNaWEpEWVhObEtDa2dLU0EvWEc1Y2RGeDBYSFJjZEZ4MGJXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0J6WldWa0xDQnRZWFJqYUdWeklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRtRnlJR2xrZUN4Y2JseDBYSFJjZEZ4MFhIUmNkRngwYldGMFkyaGxaQ0E5SUdadUtDQnpaV1ZrTENCaGNtZDFiV1Z1ZENBcExGeHVYSFJjZEZ4MFhIUmNkRngwWEhScElEMGdiV0YwWTJobFpDNXNaVzVuZEdnN1hHNWNkRngwWEhSY2RGeDBYSFIzYUdsc1pTQW9JR2t0TFNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXUjRJRDBnYVc1a1pYaFBaaWdnYzJWbFpDd2diV0YwWTJobFpGdHBYU0FwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJ6WldWa1d5QnBaSGdnWFNBOUlDRW9JRzFoZEdOb1pYTmJJR2xrZUNCZElEMGdiV0YwWTJobFpGdHBYU0FwTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgwcElEcGNibHgwWEhSY2RGeDBYSFJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxkSFZ5YmlCbWJpZ2daV3hsYlN3Z01Dd2dZWEpuY3lBcE8xeHVYSFJjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJtYmp0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MGNITmxkV1J2Y3pvZ2UxeHVYSFJjZEM4dklGQnZkR1Z1ZEdsaGJHeDVJR052YlhCc1pYZ2djSE5sZFdSdmMxeHVYSFJjZEZ3aWJtOTBYQ0k2SUcxaGNtdEdkVzVqZEdsdmJpaG1kVzVqZEdsdmJpZ2djMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBYSFF2THlCVWNtbHRJSFJvWlNCelpXeGxZM1J2Y2lCd1lYTnpaV1FnZEc4Z1kyOXRjR2xzWlZ4dVhIUmNkRngwTHk4Z2RHOGdZWFp2YVdRZ2RISmxZWFJwYm1jZ2JHVmhaR2x1WnlCaGJtUWdkSEpoYVd4cGJtZGNibHgwWEhSY2RDOHZJSE53WVdObGN5QmhjeUJqYjIxaWFXNWhkRzl5YzF4dVhIUmNkRngwZG1GeUlHbHVjSFYwSUQwZ1cxMHNYRzVjZEZ4MFhIUmNkSEpsYzNWc2RITWdQU0JiWFN4Y2JseDBYSFJjZEZ4MGJXRjBZMmhsY2lBOUlHTnZiWEJwYkdVb0lITmxiR1ZqZEc5eUxuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpUXhYQ0lnS1NBcE8xeHVYRzVjZEZ4MFhIUnlaWFIxY200Z2JXRjBZMmhsY2xzZ1pYaHdZVzVrYnlCZElEOWNibHgwWEhSY2RGeDBiV0Z5YTBaMWJtTjBhVzl1S0daMWJtTjBhVzl1S0NCelpXVmtMQ0J0WVhSamFHVnpMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHVnNaVzBzWEc1Y2RGeDBYSFJjZEZ4MFhIUjFibTFoZEdOb1pXUWdQU0J0WVhSamFHVnlLQ0J6WldWa0xDQnVkV3hzTENCNGJXd3NJRnRkSUNrc1hHNWNkRngwWEhSY2RGeDBYSFJwSUQwZ2MyVmxaQzVzWlc1bmRHZzdYRzVjYmx4MFhIUmNkRngwWEhRdkx5Qk5ZWFJqYUNCbGJHVnRaVzUwY3lCMWJtMWhkR05vWldRZ1lua2dZRzFoZEdOb1pYSmdYRzVjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JQ2hsYkdWdElEMGdkVzV0WVhSamFHVmtXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGMyVmxaRnRwWFNBOUlDRW9iV0YwWTJobGMxdHBYU0E5SUdWc1pXMHBPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlNrZ09seHVYSFJjZEZ4MFhIUm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbHVjSFYwV3pCZElEMGdaV3hsYlR0Y2JseDBYSFJjZEZ4MFhIUnRZWFJqYUdWeUtDQnBibkIxZEN3Z2JuVnNiQ3dnZUcxc0xDQnlaWE4xYkhSeklDazdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHOXVKM1FnYTJWbGNDQjBhR1VnWld4bGJXVnVkQ0FvYVhOemRXVWdJekk1T1NsY2JseDBYSFJjZEZ4MFhIUnBibkIxZEZzd1hTQTlJRzUxYkd3N1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlDRnlaWE4xYkhSekxuQnZjQ2dwTzF4dVhIUmNkRngwWEhSOU8xeHVYSFJjZEgwcExGeHVYRzVjZEZ4MFhDSm9ZWE5jSWpvZ2JXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwY21WMGRYSnVJRk5wZW5wc1pTZ2djMlZzWldOMGIzSXNJR1ZzWlcwZ0tTNXNaVzVuZEdnZ1BpQXdPMXh1WEhSY2RGeDBmVHRjYmx4MFhIUjlLU3hjYmx4dVhIUmNkRndpWTI5dWRHRnBibk5jSWpvZ2JXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0IwWlho
14938MElDa2dlMXh1WEhSY2RGeDBkR1Y0ZENBOUlIUmxlSFF1Y21Wd2JHRmpaU2dnY25WdVpYTmpZWEJsTENCbWRXNWxjMk5oY0dVZ0tUdGNibHgwWEhSY2RISmxkSFZ5YmlCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUNnZ1pXeGxiUzUwWlhoMFEyOXVkR1Z1ZENCOGZDQmxiR1Z0TG1sdWJtVnlWR1Y0ZENCOGZDQm5aWFJVWlhoMEtDQmxiR1Z0SUNrZ0tTNXBibVJsZUU5bUtDQjBaWGgwSUNrZ1BpQXRNVHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmU2tzWEc1Y2JseDBYSFF2THlCY0lsZG9aWFJvWlhJZ1lXNGdaV3hsYldWdWRDQnBjeUJ5WlhCeVpYTmxiblJsWkNCaWVTQmhJRHBzWVc1bktDa2djMlZzWldOMGIzSmNibHgwWEhRdkx5QnBjeUJpWVhObFpDQnpiMnhsYkhrZ2IyNGdkR2hsSUdWc1pXMWxiblFuY3lCc1lXNW5kV0ZuWlNCMllXeDFaVnh1WEhSY2RDOHZJR0psYVc1bklHVnhkV0ZzSUhSdklIUm9aU0JwWkdWdWRHbG1hV1Z5SUVNc1hHNWNkRngwTHk4Z2IzSWdZbVZuYVc1dWFXNW5JSGRwZEdnZ2RHaGxJR2xrWlc1MGFXWnBaWElnUXlCcGJXMWxaR2xoZEdWc2VTQm1iMnhzYjNkbFpDQmllU0JjSWkxY0lpNWNibHgwWEhRdkx5QlVhR1VnYldGMFkyaHBibWNnYjJZZ1F5QmhaMkZwYm5OMElIUm9aU0JsYkdWdFpXNTBKM01nYkdGdVozVmhaMlVnZG1Gc2RXVWdhWE1nY0dWeVptOXliV1ZrSUdOaGMyVXRhVzV6Wlc1emFYUnBkbVZzZVM1Y2JseDBYSFF2THlCVWFHVWdhV1JsYm5ScFptbGxjaUJESUdSdlpYTWdibTkwSUdoaGRtVWdkRzhnWW1VZ1lTQjJZV3hwWkNCc1lXNW5kV0ZuWlNCdVlXMWxMbHdpWEc1Y2RGeDBMeThnYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmMyVnNaV04wYjNKekx5TnNZVzVuTFhCelpYVmtiMXh1WEhSY2RGd2liR0Z1WjF3aU9pQnRZWEpyUm5WdVkzUnBiMjRvSUdaMWJtTjBhVzl1S0NCc1lXNW5JQ2tnZTF4dVhIUmNkRngwTHk4Z2JHRnVaeUIyWVd4MVpTQnRkWE4wSUdKbElHRWdkbUZzYVdRZ2FXUmxiblJwWm1sbGNseHVYSFJjZEZ4MGFXWWdLQ0FoY21sa1pXNTBhV1pwWlhJdWRHVnpkQ2hzWVc1bklIeDhJRndpWENJcElDa2dlMXh1WEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lGd2lkVzV6ZFhCd2IzSjBaV1FnYkdGdVp6b2dYQ0lnS3lCc1lXNW5JQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBYSFJzWVc1bklEMGdiR0Z1Wnk1eVpYQnNZV05sS0NCeWRXNWxjMk5oY0dVc0lHWjFibVZ6WTJGd1pTQXBMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNWNkRngwWEhSeVpYUjFjbTRnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQmxiR1Z0VEdGdVp6dGNibHgwWEhSY2RGeDBaRzhnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnS0dWc1pXMU1ZVzVuSUQwZ1pHOWpkVzFsYm5SSmMwaFVUVXdnUDF4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlM1c1lXNW5JRHBjYmx4MFhIUmNkRngwWEhSY2RHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2llRzFzT214aGJtZGNJaWtnZkh3Z1pXeGxiUzVuWlhSQmRIUnlhV0oxZEdVb1hDSnNZVzVuWENJcEtTQXBJSHRjYmx4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlV4aGJtY2dQU0JsYkdWdFRHRnVaeTUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1ZzWlcxTVlXNW5JRDA5UFNCc1lXNW5JSHg4SUdWc1pXMU1ZVzVuTG1sdVpHVjRUMllvSUd4aGJtY2dLeUJjSWkxY0lpQXBJRDA5UFNBd08xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlNCM2FHbHNaU0FvSUNobGJHVnRJRDBnWld4bGJTNXdZWEpsYm5ST2IyUmxLU0FtSmlCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseDBYSFJjZEgwN1hHNWNkRngwZlNrc1hHNWNibHgwWEhRdkx5Qk5hWE5qWld4c1lXNWxiM1Z6WEc1Y2RGeDBYQ0owWVhKblpYUmNJam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFIyWVhJZ2FHRnphQ0E5SUhkcGJtUnZkeTVzYjJOaGRHbHZiaUFtSmlCM2FXNWtiM2N1Ykc5allYUnBiMjR1YUdGemFEdGNibHgwWEhSY2RISmxkSFZ5YmlCb1lYTm9JQ1ltSUdoaGMyZ3VjMnhwWTJVb0lERWdLU0E5UFQwZ1pXeGxiUzVwWkR0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKeWIyOTBYQ0k2SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwZ1BUMDlJR1J2WTBWc1pXMDdYRzVjZEZ4MGZTeGNibHh1WEhSY2RGd2labTlqZFhOY0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1pXeGxiU0E5UFQwZ1pHOWpkVzFsYm5RdVlXTjBhWFpsUld4bGJXVnVkQ0FtSmlBb0lXUnZZM1Z0Wlc1MExtaGhjMFp2WTNWeklIeDhJR1J2WTNWdFpXNTBMbWhoYzBadlkzVnpLQ2twSUNZbUlDRWhLR1ZzWlcwdWRIbHdaU0I4ZkNCbGJHVnRMbWh5WldZZ2ZId2dmbVZzWlcwdWRHRmlTVzVrWlhncE8xeHVYSFJjZEgwc1hHNWNibHgwWEhRdkx5QkNiMjlzWldGdUlIQnliM0JsY25ScFpYTmNibHgwWEhSY0ltVnVZV0pzWldSY0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1pXeGxiUzVrYVhOaFlteGxaQ0E5UFQwZ1ptRnNjMlU3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkRndpWkdsellXSnNaV1JjSWpvZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWld4bGJTNWthWE5oWW14bFpDQTlQVDBnZEhKMVpUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSmphR1ZqYTJWa1hDSTZJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBMeThnU1c0Z1ExTlRNeXdnT21Ob1pXTnJaV1FnYzJodmRXeGtJSEpsZEhWeWJpQmliM1JvSUdOb1pXTnJaV1FnWVc1a0lITmxiR1ZqZEdWa0lHVnNaVzFsYm5SelhHNWNkRngwWEhRdkx5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTh5TURFeEwxSkZReTFqYzNNekxYTmxiR1ZqZEc5eWN5MHlNREV4TURreU9TOGpZMmhsWTJ0bFpGeHVYSFJjZEZ4MGRtRnlJRzV2WkdWT1lXMWxJRDBnWld4bGJTNXViMlJsVG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dVhIUmNkRngwY21WMGRYSnVJQ2h1YjJSbFRtRnRaU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1JQ0VoWld4bGJTNWphR1ZqYTJWa0tTQjhmQ0FvYm05a1pVNWhiV1VnUFQwOUlGd2liM0IwYVc5dVhDSWdKaVlnSVNGbGJHVnRMbk5sYkdWamRHVmtLVHRjYmx4MFhIUjlMRnh1WEc1Y2RGeDBYQ0p6Wld4bFkzUmxaRndpT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEM4dklFRmpZMlZ6YzJsdVp5QjBhR2x6SUhCeWIzQmxjblI1SUcxaGEyVnpJSE5sYkdWamRHVmtMV0o1TFdSbFptRjFiSFJjYmx4MFhIUmNkQzh2SUc5d2RHbHZibk1nYVc0Z1UyRm1ZWEpwSUhkdmNtc2djSEp2Y0dWeWJIbGNibHgwWEhSY2RHbG1JQ2dnWld4bGJTNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWEhSbGJHVnRMbkJoY21WdWRFNXZaR1V1YzJWc1pXTjBaV1JKYm1SbGVEdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1YzJWc1pXTjBaV1FnUFQwOUlIUnlkV1U3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkQzh2SUVOdmJuUmxiblJ6WEc1Y2RGeDBYQ0psYlhCMGVWd2lPaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkQzh2SUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wzTmxiR1ZqZEc5eWN5OGpaVzF3ZEhrdGNITmxkV1J2WEc1Y2RGeDBYSFF2THlBNlpXMXdkSGtnYVhNZ2JtVm5ZWFJsWkNCaWVTQmxiR1Z0Wlc1MElDZ3hLU0J2Y2lCamIyNTBaVzUwSUc1dlpHVnpJQ2gwWlhoME9pQXpPeUJqWkdGMFlUb2dORHNnWlc1MGFYUjVJSEpsWmpvZ05Ta3NYRzVjZEZ4MFhIUXZMeUFnSUdKMWRDQnViM1FnWW5rZ2IzUm9aWEp6SUNoamIyMXRaVzUwT2lBNE95QndjbTlqWlhOemFXNW5JR2x1YzNSeWRXTjBhVzl1T2lBM095QmxkR011S1Z4dVhIUmNkRngwTHk4Z2JtOWtaVlI1Y0dVZ1BDQTJJSGR2Y210eklHSmxZMkYxYzJVZ1lYUjBjbWxpZFhSbGN5QW9NaWtnWkc4Z2JtOTBJR0Z3Y0dWaGNpQmhjeUJqYUdsc1pISmxibHh1WEhSY2RGeDBabTl5SUNnZ1pXeGxiU0E5SUdWc1pXMHVabWx5YzNSRGFHbHNaRHNnWld4bGJUc2daV3hsYlNBOUlHVnNaVzB1Ym1WNGRGTnBZbXhwYm1jZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ1pXeGxiUzV1YjJSbFZIbHdaU0E4SURZZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUjlMRnh1WEc1Y2RGeDBYQ0p3WVhKbGJuUmNJam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdJVVY0Y0hJdWNITmxkV1J2YzF0Y0ltVnRjSFI1WENKZEtDQmxiR1Z0SUNrN1hHNWNkRngwZlN4Y2JseHVYSFJjZEM4dklFVnNaVzFsYm5RdmFXNXdkWFFnZEhsd1pYTmNibHgwWEhSY0ltaGxZV1JsY2x3aU9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCeWFHVmhaR1Z5TG5SbGMzUW9JR1ZzWlcwdWJtOWtaVTVoYldVZ0tUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSnBibkIxZEZ3aU9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCeWFXNXdkWFJ6TG5SbGMzUW9JR1ZzWlcwdWJtOWtaVTVoYldVZ0tUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSmlkWFIwYjI1Y0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYm1GdFpTQTlJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmx4MFhIUmNkSEpsZEhWeWJpQnVZVzFsSUQwOVBTQmNJbWx1Y0hWMFhDSWdKaVlnWld4bGJTNTBlWEJsSUQwOVBTQmNJbUoxZEhSdmJsd2lJSHg4SUc1aGJXVWdQVDA5SUZ3aVluVjBkRzl1WENJN1hHNWNkRngwZlN4Y2JseHVYSFJjZEZ3aWRHVjRkRndpT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEhaaGNpQmhkSFJ5TzF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1YRzVjZEZ4MFhIUmNkR1ZzWlcwdWRIbHdaU0E5UFQwZ1hDSjBaWGgwWENJZ0ppWmNibHh1WEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJUdzRYRzVjZEZ4MFhIUmNkQzh2SUU1bGR5QklWRTFNTlNCaGRIUnlhV0oxZEdVZ2RtRnNkV1Z6SUNobExtY3VMQ0JjSW5ObFlYSmphRndpS1NCaGNIQmxZWElnZDJsMGFDQmxiR1Z0TG5SNWNHVWdQVDA5SUZ3aWRHVjRkRndpWEc1Y2RGeDBYSFJjZENn
14938Z0tHRjBkSElnUFNCbGJHVnRMbWRsZEVGMGRISnBZblYwWlNoY0luUjVjR1ZjSWlrcElEMDlJRzUxYkd3Z2ZId2dZWFIwY2k1MGIweHZkMlZ5UTJGelpTZ3BJRDA5UFNCY0luUmxlSFJjSWlBcE8xeHVYSFJjZEgwc1hHNWNibHgwWEhRdkx5QlFiM05wZEdsdmJpMXBiaTFqYjJ4c1pXTjBhVzl1WEc1Y2RGeDBYQ0ptYVhKemRGd2lPaUJqY21WaGRHVlFiM05wZEdsdmJtRnNVSE5sZFdSdktHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlGc2dNQ0JkTzF4dVhIUmNkSDBwTEZ4dVhHNWNkRngwWENKc1lYTjBYQ0k2SUdOeVpXRjBaVkJ2YzJsMGFXOXVZV3hRYzJWMVpHOG9ablZ1WTNScGIyNG9JRzFoZEdOb1NXNWtaWGhsY3l3Z2JHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUZzZ2JHVnVaM1JvSUMwZ01TQmRPMXh1WEhSY2RIMHBMRnh1WEc1Y2RGeDBYQ0psY1Z3aU9pQmpjbVZoZEdWUWIzTnBkR2x2Ym1Gc1VITmxkV1J2S0daMWJtTjBhVzl1S0NCdFlYUmphRWx1WkdWNFpYTXNJR3hsYm1kMGFDd2dZWEpuZFcxbGJuUWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdXeUJoY21kMWJXVnVkQ0E4SURBZ1B5QmhjbWQxYldWdWRDQXJJR3hsYm1kMGFDQTZJR0Z5WjNWdFpXNTBJRjA3WEc1Y2RGeDBmU2tzWEc1Y2JseDBYSFJjSW1WMlpXNWNJam9nWTNKbFlYUmxVRzl6YVhScGIyNWhiRkJ6WlhWa2J5aG1kVzVqZEdsdmJpZ2diV0YwWTJoSmJtUmxlR1Z6TENCc1pXNW5kR2dnS1NCN1hHNWNkRngwWEhSMllYSWdhU0E5SURBN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzVuZEdnN0lHa2dLejBnTWlBcElIdGNibHgwWEhSY2RGeDBiV0YwWTJoSmJtUmxlR1Z6TG5CMWMyZ29JR2tnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFJjZEhKbGRIVnliaUJ0WVhSamFFbHVaR1Y0WlhNN1hHNWNkRngwZlNrc1hHNWNibHgwWEhSY0ltOWtaRndpT2lCamNtVmhkR1ZRYjNOcGRHbHZibUZzVUhObGRXUnZLR1oxYm1OMGFXOXVLQ0J0WVhSamFFbHVaR1Y0WlhNc0lHeGxibWQwYUNBcElIdGNibHgwWEhSY2RIWmhjaUJwSUQwZ01UdGNibHgwWEhSY2RHWnZjaUFvSURzZ2FTQThJR3hsYm1kMGFEc2dhU0FyUFNBeUlDa2dlMXh1WEhSY2RGeDBYSFJ0WVhSamFFbHVaR1Y0WlhNdWNIVnphQ2dnYVNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MGNtVjBkWEp1SUcxaGRHTm9TVzVrWlhobGN6dGNibHgwWEhSOUtTeGNibHh1WEhSY2RGd2liSFJjSWpvZ1kzSmxZWFJsVUc5emFYUnBiMjVoYkZCelpYVmtieWhtZFc1amRHbHZiaWdnYldGMFkyaEpibVJsZUdWekxDQnNaVzVuZEdnc0lHRnlaM1Z0Wlc1MElDa2dlMXh1WEhSY2RGeDBkbUZ5SUdrZ1BTQmhjbWQxYldWdWRDQThJREFnUHlCaGNtZDFiV1Z1ZENBcklHeGxibWQwYUNBNklHRnlaM1Z0Wlc1ME8xeHVYSFJjZEZ4MFptOXlJQ2dnT3lBdExXa2dQajBnTURzZ0tTQjdYRzVjZEZ4MFhIUmNkRzFoZEdOb1NXNWtaWGhsY3k1d2RYTm9LQ0JwSUNrN1hHNWNkRngwWEhSOVhHNWNkRngwWEhSeVpYUjFjbTRnYldGMFkyaEpibVJsZUdWek8xeHVYSFJjZEgwcExGeHVYRzVjZEZ4MFhDSm5kRndpT2lCamNtVmhkR1ZRYjNOcGRHbHZibUZzVUhObGRXUnZLR1oxYm1OMGFXOXVLQ0J0WVhSamFFbHVaR1Y0WlhNc0lHeGxibWQwYUN3Z1lYSm5kVzFsYm5RZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYVNBOUlHRnlaM1Z0Wlc1MElEd2dNQ0EvSUdGeVozVnRaVzUwSUNzZ2JHVnVaM1JvSURvZ1lYSm5kVzFsYm5RN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUNzcmFTQThJR3hsYm1kMGFEc2dLU0I3WEc1Y2RGeDBYSFJjZEcxaGRHTm9TVzVrWlhobGN5NXdkWE5vS0NCcElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2JXRjBZMmhKYm1SbGVHVnpPMXh1WEhSY2RIMHBYRzVjZEgxY2JuMDdYRzVjYmtWNGNISXVjSE5sZFdSdmMxdGNJbTUwYUZ3aVhTQTlJRVY0Y0hJdWNITmxkV1J2YzF0Y0ltVnhYQ0pkTzF4dVhHNHZMeUJCWkdRZ1luVjBkRzl1TDJsdWNIVjBJSFI1Y0dVZ2NITmxkV1J2YzF4dVptOXlJQ2dnYVNCcGJpQjdJSEpoWkdsdk9pQjBjblZsTENCamFHVmphMkp2ZURvZ2RISjFaU3dnWm1sc1pUb2dkSEoxWlN3Z2NHRnpjM2R2Y21RNklIUnlkV1VzSUdsdFlXZGxPaUIwY25WbElIMGdLU0I3WEc1Y2RFVjRjSEl1Y0hObGRXUnZjMXNnYVNCZElEMGdZM0
14938psWVhSbFNXNXdkWFJRYzJWMVpHOG9JR2tnS1R0Y2JuMWNibVp2Y2lBb0lHa2dhVzRnZXlCemRXSnRhWFE2SUhSeWRXVXNJSEpsYzJWME9pQjBjblZsSUgwZ0tTQjdYRzVjZEVWNGNISXVjSE5sZFdSdmMxc2dhU0JkSUQwZ1kzSmxZWFJsUW5WMGRHOXVVSE5sZFdSdktDQnBJQ2s3WEc1OVhHNWNiaTh2SUVWaGMza2dRVkJKSUdadmNpQmpjbVZoZEdsdVp5QnVaWGNnYzJWMFJtbHNkR1Z5YzF4dVpuVnVZM1JwYjI0Z2MyVjBSbWxzZEdWeWN5Z3BJSHQ5WEc1elpYUkdhV3gwWlhKekxuQnliM1J2ZEhsd1pTQTlJRVY0Y0hJdVptbHNkR1Z5Y3lBOUlFVjRjSEl1Y0hObGRXUnZjenRjYmtWNGNISXVjMlYwUm1sc2RHVnljeUE5SUc1bGR5QnpaWFJHYVd4MFpYSnpLQ2s3WEc1Y2JuUnZhMlZ1YVhwbElEMGdVMmw2ZW14bExuUnZhMlZ1YVhwbElEMGdablZ1WTNScGIyNG9JSE5sYkdWamRHOXlMQ0J3WVhKelpVOXViSGtnS1NCN1hHNWNkSFpoY2lCdFlYUmphR1ZrTENCdFlYUmphQ3dnZEc5clpXNXpMQ0IwZVhCbExGeHVYSFJjZEhOdlJtRnlMQ0JuY205MWNITXNJSEJ5WlVacGJIUmxjbk1zWEc1Y2RGeDBZMkZqYUdWa0lEMGdkRzlyWlc1RFlXTm9aVnNnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaUJkTzF4dVhHNWNkR2xtSUNnZ1kyRmphR1ZrSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ3WVhKelpVOXViSGtnUHlBd0lEb2dZMkZqYUdWa0xuTnNhV05sS0NBd0lDazdYRzVjZEgxY2JseHVYSFJ6YjBaaGNpQTlJSE5sYkdWamRHOXlPMXh1WEhSbmNtOTFjSE1nUFNCYlhUdGNibHgwY0hKbFJtbHNkR1Z5Y3lBOUlFVjRjSEl1Y0hKbFJtbHNkR1Z5TzF4dVhHNWNkSGRvYVd4bElDZ2djMjlHWVhJZ0tTQjdYRzVjYmx4MFhIUXZMeUJEYjIxdFlTQmhibVFnWm1seWMzUWdjblZ1WEc1Y2RGeDBhV1lnS0NBaGJXRjBZMmhsWkNCOGZDQW9iV0YwWTJnZ1BTQnlZMjl0YldFdVpYaGxZeWdnYzI5R1lYSWdLU2tnS1NCN1hHNWNkRngwWEhScFppQW9JRzFoZEdOb0lDa2dlMXh1WEhSY2RGeDBYSFF2THlCRWIyNG5kQ0JqYjI1emRXMWxJSFJ5WVdsc2FXNW5JR052YlcxaGN5QmhjeUIyWVd4cFpGeHVYSFJjZEZ4MFhIUnpiMFpoY2lBOUlITnZSbUZ5TG5Oc2FXTmxLQ0J0WVhSamFGc3dYUzVzWlc1bmRHZ2dLU0I4ZkNCemIwWmhjanRjYmx4MFhIUmNkSDFjYmx4MFhIUmNkR2R5YjNWd2N5NXdkWE5vS0NBb2RHOXJaVzV6SUQwZ1cxMHBJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBiV0YwWTJobFpDQTlJR1poYkhObE8xeHVYRzVjZEZ4MEx5OGdRMjl0WW1sdVlYUnZjbk5jYmx4MFhIUnBaaUFvSUNodFlYUmphQ0E5SUhKamIyMWlhVzVoZEc5eWN5NWxlR1ZqS0NCemIwWmhjaUFwS1NBcElIdGNibHgwWEhSY2RHMWhkR05vWldRZ1BTQnRZWFJqYUM1emFHbG1kQ2dwTzF4dVhIUmNkRngwZEc5clpXNXpMbkIxYzJnb2UxeHVYSFJjZEZ4MFhIUjJZV3gxWlRvZ2JXRjBZMmhsWkN4Y2JseDBYSFJjZEZ4MEx5OGdRMkZ6ZENCa1pYTmpaVzVrWVc1MElHTnZiV0pwYm1GMGIzSnpJSFJ2SUhOd1lXTmxYRzVjZEZ4MFhIUmNkSFI1Y0dVNklHMWhkR05vV3pCZExuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpQmNJaUFwWEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFJjZEhOdlJtRnlJRDBnYzI5R1lYSXVjMnhwWTJVb0lHMWhkR05vWldRdWJHVnVaM1JvSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1JtbHNkR1Z5YzF4dVhIUmNkR1p2Y2lBb0lIUjVjR1VnYVc0Z1JYaHdjaTVtYVd4MFpYSWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lDaHRZWFJqYUNBOUlHMWhkR05vUlhod2Nsc2dkSGx3WlNCZExtVjRaV01vSUhOdlJtRnlJQ2twSUNZbUlDZ2hjSEpsUm1sc2RHVnljMXNnZEhsd1pTQmRJSHg4WEc1Y2RGeDBYSFJjZENodFlYUmphQ0E5SUhCeVpVWnBiSFJsY25OYklIUjVjR1VnWFNnZ2JXRjBZMmdnS1NrcElDa2dlMXh1WEhSY2RGeDBYSFJ0WVhSamFHVmtJRDBnYldGMFkyZ3VjMmhwWm5Rb0tUdGNibHgwWEhSY2RGeDBkRzlyWlc1ekxuQjFjMmdvZTF4dVhIUmNkRngwWEhSY2RIWmhiSFZsT2lCdFlYUmphR1ZrTEZ4dVhIUmNkRngwWEhSY2RIUjVjR1U2SUhSNWNHVXNYRzVjZEZ4MFhIUmNkRngwYldGMFkyaGxjem9nYldGMFkyaGNibHgwWEhSY2RGeDBmU2s3WEc1Y2RGeDBYSFJjZEhOdlJtRnlJRDBnYzI5R1lYSXVjMnhwWTJVb0lHMWhkR05vWldRdWJHVnVaM1JvSUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQWhiV0YwWTJobFpDQXBJSHRjYmx4MFhIUmNkR0p5WldGck8xeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRkpsZEhWeWJpQjBhR1VnYkdWdVozUm9JRzltSUhSb1pTQnBiblpoYkdsa0lHVjRZMlZ6YzF4dVhIUXZMeUJwWmlCM1pTZHlaU0JxZFhOMElIQmhjbk5wYm1kY2JseDBMeThnVDNSb1pYSjNhWE5sTENCMGFISnZkeUJoYmlCbGNuSnZjaUJ2Y2lCeVpYUjFjbTRnZEc5clpXNXpYRzVjZEhKbGRIVnliaUJ3WVhKelpVOXViSGtnUDF4dVhIUmNkSE52Um1GeUxteGxibWQwYUNBNlhHNWNkRngwYzI5R1lYSWdQMXh1WEhSY2RGeDBVMmw2ZW14bExtVnljbTl5S0NCelpXeGxZM1J2Y2lBcElEcGNibHgwWEhSY2RDOHZJRU5oWTJobElIUm9aU0IwYjJ0bGJuTmNibHgwWEhSY2RIUnZhMlZ1UTJGamFHVW9JSE5sYkdWamRHOXlMQ0JuY205MWNITWdLUzV6YkdsalpTZ2dNQ0FwTzF4dWZUdGNibHh1Wm5WdVkzUnBiMjRnZEc5VFpXeGxZM1J2Y2lnZ2RHOXJaVzV6SUNrZ2UxeHVYSFIyWVhJZ2FTQTlJREFzWEc1Y2RGeDBiR1Z1SUQwZ2RHOXJaVzV6TG14bGJtZDBhQ3hjYmx4MFhIUnpaV3hsWTNSdmNpQTlJRndpWENJN1hHNWNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEhObGJHVmpkRzl5SUNzOUlIUnZhMlZ1YzF0cFhTNTJZV3gxWlR0Y2JseDBmVnh1WEhSeVpYUjFjbTRnYzJWc1pXTjBiM0k3WEc1OVhHNWNibVoxYm1OMGFXOXVJR0ZrWkVOdmJXSnBibUYwYjNJb0lHMWhkR05vWlhJc0lHTnZiV0pwYm1GMGIzSXNJR0poYzJVZ0tTQjdYRzVjZEhaaGNpQmthWElnUFNCamIyMWlhVzVoZEc5eUxtUnBjaXhjYmx4MFhIUmphR1ZqYTA1dmJrVnNaVzFsYm5SeklEMGdZbUZ6WlNBbUppQmthWElnUFQwOUlGd2ljR0Z5Wlc1MFRtOWtaVndpTEZ4dVhIUmNkR1J2Ym1WT1lXMWxJRDBnWkc5dVpTc3JPMXh1WEc1Y2RISmxkSFZ5YmlCamIyMWlhVzVoZEc5eUxtWnBjbk4wSUQ5Y2JseDBYSFF2THlCRGFHVmpheUJoWjJGcGJuTjBJR05zYjNObGMzUWdZVzVqWlhOMGIzSXZjSEpsWTJWa2FXNW5JR1ZzWlcxbGJuUmNibHgwWEhSbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWTI5dWRHVjRkQ3dnZUcxc0lDa2dlMXh1WEhSY2RGeDBkMmhwYkdVZ0tDQW9aV3hsYlNBOUlHVnNaVzFiSUdScGNpQmRLU0FwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElHTm9aV05yVG05dVJXeGxiV1Z1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJRzFoZEdOb1pYSW9JR1ZzWlcwc0lHTnZiblJsZUhRc0lIaHRiQ0FwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlNBNlhHNWNibHgwWEhRdkx5QkRhR1ZqYXlCaFoyRnBibk4wSUdGc2JDQmhibU5sYzNSdmNpOXdjbVZqWldScGJtY2daV3hsYldWdWRITmNibHgwWEhSbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWTI5dWRHVjRkQ3dnZUcxc0lDa2dlMXh1WEhSY2RGeDBkbUZ5SUc5c1pFTmhZMmhsTENCdmRYUmxja05oWTJobExGeHVYSFJjZEZ4MFhIUnVaWGREWVdOb1pTQTlJRnNnWkdseWNuVnVjeXdnWkc5dVpVNWhiV1VnWFR0Y2JseHVYSFJjZEZ4MEx5OGdWMlVnWTJGdUozUWdjMlYwSUdGeVltbDBjbUZ5ZVNCa1lYUmhJRzl1SUZoTlRDQnViMlJsY3l3Z2MyOGdkR2hsZVNCa2IyNG5k
14938Q0JpWlc1bFptbDBJR1p5YjIwZ1pHbHlJR05oWTJocGJtZGNibHgwWEhSY2RHbG1JQ2dnZUcxc0lDa2dlMXh1WEhSY2RGeDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdaV3hsYlZzZ1pHbHlJRjBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0JqYUdWamEwNXZia1ZzWlcxbGJuUnpJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCdFlYUmphR1Z5S0NCbGJHVnRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIUnlkV1U3WEc1Y2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUNobGJHVnRJRDBnWld4bGJWc2daR2x5SUYwcElDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2daV3hsYlM1dWIyUmxWSGx3WlNBOVBUMGdNU0I4ZkNCamFHVmphMDV2YmtWc1pXMWxiblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwYjNWMFpYSkRZV05vWlNBOUlHVnNaVzFiSUdWNGNHRnVaRzhnWFNCOGZDQW9aV3hsYlZzZ1pYaHdZVzVrYnlCZElEMGdlMzBwTzF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NBb2IyeGtRMkZqYUdVZ1BTQnZkWFJsY2tOaFkyaGxXeUJrYVhJZ1hTa2dKaVpjYmx4MFhIUmNkRngwWEhSY2RGeDBiMnhrUTJGamFHVmJJREFnWFNBOVBUMGdaR2x5Y25WdWN5QW1KaUJ2YkdSRFlXTm9aVnNnTVNCZElEMDlQU0JrYjI1bFRtRnRaU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkJjM05wWjI0Z2RHOGdibVYzUTJGamFHVWdjMjhnY21WemRXeDBjeUJpWVdOckxYQnliM0JoWjJGMFpTQjBieUJ3Y21WMmFXOTFjeUJsYkdWdFpXNTBjMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z0tHNWxkME5oWTJobFd5QXlJRjBnUFNCdmJHUkRZV05vWlZzZ01pQmRLVHRjYmx4MFhIUmNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEM4dklGSmxkWE5sSUc1bGQyTmhZMmhsSUhOdklISmxjM1ZzZEhNZ1ltRmpheTF3Y205d1lXZGhkR1VnZEc4Z2NISmxkbWx2ZFhNZ1pXeGxiV1Z1ZEhOY2JseDBYSFJjZEZ4MFhIUmNkRngwYjNWMFpYSkRZV05vWlZzZ1pHbHlJRjBnUFNCdVpYZERZV05vWlR0Y2JseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkJJRzFoZEdOb0lHMWxZVzV6SUhkbEozSmxJR1J2Ym1VN0lHRWdabUZwYkNCdFpXRnVjeUIzWlNCb1lYWmxJSFJ2SUd0bFpYQWdZMmhsWTJ0cGJtZGNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0FvYm1WM1EyRmphR1ZiSURJZ1hTQTlJRzFoZEdOb1pYSW9JR1ZzWlcwc0lHTnZiblJsZUhRc0lIaHRiQ0FwS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkSDA3WEc1OVhHNWNibVoxYm1OMGFXOXVJR1ZzWlcxbGJuUk5ZWFJqYUdWeUtDQnRZWFJqYUdWeWN5QXBJSHRjYmx4MGNtVjBkWEp1SUcxaGRHTm9aWEp6TG14bGJtZDBhQ0ErSURFZ1AxeHVYSFJjZEdaMWJtTjBhVzl1S0NCbGJHVnRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQjdYRzVjZEZ4MFhIUjJZWElnYVNBOUlHMWhkR05vWlhKekxteGxibWQwYUR0Y2JseDBYSFJjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnRZWFJqYUdWeWMxdHBYU2dnWld4bGJTd2dZMjl1ZEdWNGRDd2dlRzFzSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUjlJRHBjYmx4MFhIUnRZWFJqYUdWeWMxc3dYVHRjYm4xY2JseHVablZ1WTNScGIyNGdiWFZzZEdsd2JHVkRiMjUwWlhoMGN5Z2djMlZzWldOMGIzSXNJR052Ym5SbGVIUnpMQ0J5WlhOMWJIUnpJQ2tnZTF4dVhIUjJZWElnYVNBOUlEQXNYRzVjZEZ4MGJHVnVJRDBnWTI5dWRHVjRkSE11YkdWdVozUm9PMXh1WEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzQ3SUdrckt5QXBJSHRjYmx4MFhIUlRhWHA2YkdVb0lITmxiR1ZqZEc5eUxDQmpiMjUwWlhoMGMxdHBYU3dnY21WemRXeDBjeUFwTzF4dVhIUjlYRzVjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmpiMjVrWlc1elpTZ2dkVzV0WVhSamFHVmtMQ0J0WVhBc0lHWnBiSFJsY2l3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnZTF4dVhIUjJZWElnWld4bGJTeGNibHgwWEhSdVpYZFZibTFoZEdOb1pXUWdQU0JiWFN4Y2JseDBYSFJwSUQwZ01DeGNibHgwWEhSc1pXNGdQU0IxYm0xaGRHTm9aV1F1YkdWdVozUm9MRnh1WEhSY2RHMWhjSEJsWkNBOUlHMWhjQ0FoUFNCdWRXeHNPMXh1WEc1Y2RHWnZjaUFvSURzZ2FTQThJR3hsYmpzZ2FTc3JJQ2tnZTF4dVhIUmNkR2xtSUNnZ0tHVnNaVzBnUFNCMWJtMWhkR05vWldSYmFWMHBJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQWhabWxzZEdWeUlIeDhJR1pwYkhSbGNpZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnS1NCN1hHNWNkRngwWEhSY2RHNWxkMVZ1YldGMFkyaGxaQzV3ZFhOb0tDQmxiR1Z0SUNrN1hHNWNkRngwWEhSY2RHbG1JQ2dnYldGd2NHVmtJQ2tnZTF4dVhIUmNkRngwWEhSY2RHMWhjQzV3ZFhOb0tDQnBJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnYm1WM1ZXNXRZWFJqYUdWa08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCelpYUk5ZWFJqYUdWeUtDQndjbVZHYVd4MFpYSXNJSE5sYkdWamRHOXlMQ0J0WVhSamFHVnlMQ0J3YjNOMFJtbHNkR1Z5TENCd2IzTjBSbWx1WkdWeUxDQndiM04wVTJWc1pXTjBiM0lnS1NCN1hHNWNkR2xtSUNnZ2NHOXpkRVpwYkhSbGNpQW1KaUFoY0c5emRFWnBiSFJsY2xzZ1pYaHdZVzVrYnlCZElDa2dlMXh1WEhSY2RIQnZjM1JHYVd4MFpYSWdQU0J6WlhSTllYUmphR1Z5S0NCd2IzTjBSbWxzZEdWeUlDazdYRzVjZEgxY2JseDBhV1lnS0NCd2IzTjBSbWx1WkdWeUlDWW1JQ0Z3YjNOMFJtbHVaR1Z5V3lCbGVIQmhibVJ2SUYwZ0tTQjdYRzVjZEZ4MGNHOXpkRVpwYm1SbGNpQTlJSE5sZEUxaGRHTm9aWElvSUhCdmMzUkdhVzVrWlhJc0lIQnZjM1JUWld4bFkzUnZjaUFwTzF4dVhIUjlYRzVjZEhKbGRIVnliaUJ0WVhKclJuVnVZM1JwYjI0b1puVnVZM1JwYjI0b0lITmxaV1FzSUhKbGMzVnNkSE1zSUdOdmJuUmxlSFFzSUhodGJDQXBJSHRjYmx4MFhIUjJZWElnZEdWdGNDd2dhU3dnWld4bGJTeGNibHgwWEhSY2RIQnlaVTFoY0NBOUlGdGRMRnh1WEhSY2RGeDBjRzl6ZEUxaGNDQTlJRnRkTEZ4dVhIUmNkRngwY0hKbFpYaHBjM1JwYm1jZ1BTQnlaWE4xYkhSekxteGxibWQwYUN4Y2JseHVYSFJjZEZ4MEx5OGdSMlYwSUdsdWFYUnBZV3dnWld4bGJXVnVkSE1nWm5KdmJTQnpaV1ZrSUc5eUlHTnZiblJsZUhSY2JseDBYSFJjZEdWc1pXMXpJRDBnYzJWbFpDQjhmQ0J0ZFd4MGFYQnNaVU52Ym5SbGVIUnpLQ0J6Wld4bFkzUnZjaUI4ZkNCY0lpcGNJaXdnWTI5dWRHVjRkQzV1YjJSbFZIbHdaU0EvSUZzZ1kyOXVkR1Y0ZENCZElEb2dZMjl1ZEdWNGRDd2dXMTBnS1N4Y2JseHVYSFJjZEZ4MEx5OGdVSEpsWm1sc2RHVnlJSFJ2SUdkbGRDQnRZWFJqYUdWeUlHbHVjSFYwTENCd2NtVnpaWEoyYVc1bklHRWdiV0Z3SUdadmNpQnpaV1ZrTFhKbGMzVnNkSE1nYzNsdVkyaHliMjVwZW1GMGFXOXVYRzVjZEZ4MFhIUnRZWFJqYUdWeVNXNGdQU0J3Y21WR2FXeDBaWElnSmlZZ0tDQnpaV1ZrSUh4OElDRnpaV3hsWTNSdmNpQXBJRDljYmx4MFhIUmNkRngwWTI5dV
14938pHVnVjMlVvSUdWc1pXMXpMQ0J3Y21WTllYQXNJSEJ5WlVacGJIUmxjaXdnWTI5dWRHVjRkQ3dnZUcxc0lDa2dPbHh1WEhSY2RGeDBYSFJsYkdWdGN5eGNibHh1WEhSY2RGeDBiV0YwWTJobGNrOTFkQ0E5SUcxaGRHTm9aWElnUDF4dVhIUmNkRngwWEhRdkx5QkpaaUIzWlNCb1lYWmxJR0VnY0c5emRFWnBibVJsY2l3Z2IzSWdabWxzZEdWeVpXUWdjMlZsWkN3Z2IzSWdibTl1TFhObFpXUWdjRzl6ZEVacGJIUmxjaUJ2Y2lCd2NtVmxlR2x6ZEdsdVp5QnlaWE4xYkhSekxGeHVYSFJjZEZ4MFhIUndiM04wUm1sdVpHVnlJSHg4SUNnZ2MyVmxaQ0EvSUhCeVpVWnBiSFJsY2lBNklIQnlaV1Y0YVhOMGFXNW5JSHg4SUhCdmMzUkdhV3gwWlhJZ0tTQS9YRzVjYmx4MFhIUmNkRngwWEhRdkx5QXVMaTVwYm5SbGNtMWxaR2xoZEdVZ2NISnZZMlZ6YzJsdVp5QnBjeUJ1WldObGMzTmhjbmxjYmx4MFhIUmNkRngwWEhSYlhTQTZYRzVjYmx4MFhIUmNkRngwWEhRdkx5QXVMaTV2ZEdobGNuZHBjMlVnZFhObElISmxjM1ZzZEhNZ1pHbHlaV04wYkhsY2JseDBYSFJjZEZ4MFhIUnlaWE4xYkhSeklEcGNibHgwWEhSY2RGeDBiV0YwWTJobGNrbHVPMXh1WEc1Y2RGeDBMeThnUm1sdVpDQndjbWx0WVhKNUlHMWhkR05vWlhOY2JseDBYSFJwWmlBb0lHMWhkR05vWlhJZ0tTQjdYRzVjZEZ4MFhIUnRZWFJqYUdWeUtDQnRZWFJqYUdWeVNXNHNJRzFoZEdOb1pYSlBkWFFzSUdOdmJuUmxlSFFzSUhodGJDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZ3Y0d4NUlIQnZjM1JHYVd4MFpYSmNibHgwWEhScFppQW9JSEJ2YzNSR2FXeDBaWElnS1NCN1hHNWNkRngwWEhSMFpXMXdJRDBnWTI5dVpHVnVjMlVvSUcxaGRHTm9aWEpQZFhRc0lIQnZjM1JOWVhBZ0tUdGNibHgwWEhSY2RIQnZjM1JHYVd4MFpYSW9JSFJsYlhBc0lGdGRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tUdGNibHh1WEhSY2RGeDBMeThnVlc0dGJXRjBZMmdnWm1GcGJHbHVaeUJsYkdWdFpXNTBjeUJpZVNCdGIzWnBibWNnZEdobGJTQmlZV05ySUhSdklHMWhkR05vWlhKSmJseHVYSFJjZEZ4MGFTQTlJSFJsYlhBdWJHVnVaM1JvTzF4dVhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ0tHVnNaVzBnUFNCMFpXMXdXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJ0WVhSamFHVnlUM1YwV3lCd2IzTjBUV0Z3VzJsZElGMGdQU0FoS0cxaGRHTm9aWEpKYmxzZ2NHOXpkRTFoY0Z0cFhTQmRJRDBnWld4bGJTazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUnBaaUFvSUhObFpXUWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lIQnZjM1JHYVc1a1pYSWdmSHdnY0hKbFJtbHNkR1Z5SUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhCdmMzUkdhVzVrWlhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1IyVjBJSFJvWlNCbWFXNWhiQ0J0WVhSamFHVnlUM1YwSUdKNUlHTnZibVJsYm5OcGJtY2dkR2hwY3lCcGJuUmxjbTFsWkdsaGRHVWdhVzUwYnlCd2IzTjBSbWx1WkdWeUlHTnZiblJsZUhSelhHNWNkRngwWEhSY2RGeDBkR1Z0Y0NBOUlGdGRPMXh1WEhSY2RGeDBYSFJjZEdrZ1BTQnRZWFJqYUdWeVQzVjBMbXhsYm1kMGFEdGNibHgwWEhSY2RGeDBYSFIzYUdsc1pTQW9JR2t0TFNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdsbUlDZ2dLR1ZzWlcwZ1BTQnRZWFJqYUdWeVQzVjBXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MEx5OGdVbVZ6ZEc5eVpTQnRZWFJqYUdWeVNXNGdjMmx1WTJVZ1pXeGxiU0JwY3lCdWIzUWdlV1YwSUdFZ1ptbHVZV3dnYldGMFkyaGNibHgwWEhSY2RGeDBYSFJjZEZ4MGRHVnRjQzV3ZFhOb0tDQW9iV0YwWTJobGNrbHVXMmxkSUQwZ1pXeGxiU2tnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBjRzl6ZEVacGJtUmxjaWdnYm5Wc2JDd2dLRzFoZEdOb1pYSlBkWFFnUFNCYlhTa3NJSFJsYlhBc0lIaHRiQ0FwTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnVFc5MlpTQnRZWFJqYUdWa0lHVnNaVzFsYm5SeklHWnliMjBnYzJWbFpDQjBieUJ5WlhOMWJIUnpJSFJ2SUd0bFpYQWdkR2hsYlNCemVXNWphSEp2Ym1sNlpXUmNibHgwWEhSY2RGeDBhU0E5SUcxaGRHTm9aWEpQZFhRdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUdrdExTQXBJSHRjYmx4MFhIUmNkRngwWEhScFppQW9JQ2hsYkdWdElEMGdiV0YwWTJobGNrOTFkRnRwWFNrZ0ppWmNibHgwWEhSY2RGeDBYSFJjZENoMFpXMXdJRDBnY0c5emRFWnBibVJsY2lBL0lHbHVaR1Y0VDJZb0lITmxaV1FzSUdW
14938c1pXMGdLU0E2SUhCeVpVMWhjRnRwWFNrZ1BpQXRNU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkRngwYzJWbFpGdDBaVzF3WFNBOUlDRW9jbVZ6ZFd4MGMxdDBaVzF3WFNBOUlHVnNaVzBwTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBMeThnUVdSa0lHVnNaVzFsYm5SeklIUnZJSEpsYzNWc2RITXNJSFJvY205MVoyZ2djRzl6ZEVacGJtUmxjaUJwWmlCa1pXWnBibVZrWEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHMWhkR05vWlhKUGRYUWdQU0JqYjI1a1pXNXpaU2hjYmx4MFhIUmNkRngwYldGMFkyaGxjazkxZENBOVBUMGdjbVZ6ZFd4MGN5QS9YRzVjZEZ4MFhIUmNkRngwYldGMFkyaGxjazkxZEM1emNHeHBZMlVvSUhCeVpXVjRhWE4wYVc1bkxDQnRZWFJqYUdWeVQzVjBMbXhsYm1kMGFDQXBJRHBjYmx4MFhIUmNkRngwWEhSdFlYUmphR1Z5VDNWMFhHNWNkRngwWEhRcE8xeHVYSFJjZEZ4MGFXWWdLQ0J3YjNOMFJtbHVaR1Z5SUNrZ2UxeHVYSFJjZEZ4MFhIUndiM04wUm1sdVpHVnlLQ0J1ZFd4c0xDQnlaWE4xYkhSekxDQnRZWFJqYUdWeVQzVjBMQ0I0Yld3Z0tUdGNibHgwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RIQjFjMmd1WVhCd2JIa29JSEpsYzNWc2RITXNJRzFoZEdOb1pYSlBkWFFnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RIMHBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2dkRzlyWlc1eklDa2dlMXh1WEhSMllYSWdZMmhsWTJ0RGIyNTBaWGgwTENCdFlYUmphR1Z5TENCcUxGeHVYSFJjZEd4bGJpQTlJSFJ2YTJWdWN5NXNaVzVuZEdnc1hHNWNkRngwYkdWaFpHbHVaMUpsYkdGMGFYWmxJRDBnUlhod2NpNXlaV3hoZEdsMlpWc2dkRzlyWlc1eld6QmRMblI1Y0dVZ1hTeGNibHgwWEhScGJYQnNhV05wZEZKbGJHRjBhWFpsSUQwZ2JHVmhaR2x1WjFKbGJHRjBhWFpsSUh4OElFVjRjSEl1Y21Wc1lYUnBkbVZiWENJZ1hDSmRMRnh1WEhSY2RHa2dQU0JzWldGa2FXNW5VbVZzWVhScGRtVWdQeUF4SURvZ01DeGNibHh1WEhSY2RDOHZJRlJvWlNCbWIzVnVaR0YwYVc5dVlXd2diV0YwWTJobGNpQmxibk4xY21WeklIUm9ZWFFnWld4bGJXVnVkSE1nWVhKbElISmxZV05vWVdKc1pTQm1jbTl0SUhSdmNDMXNaWFpsYkNCamIyNTBaWGgwS0hNcFhHNWNkRngwYldGMFkyaERiMjUwWlhoMElEMGdZV1JrUTI5dFltbHVZWFJ2Y2lnZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWld4bGJTQTlQVDBnWTJobFkydERiMjUwWlhoME8xeHVYSFJjZEgwc0lHbHRjR3hwWTJsMFVtVnNZWFJwZG1Vc0lIUnlkV1VnS1N4Y2JseDBYSFJ0WVhSamFFRnVlVU52Ym5SbGVIUWdQU0JoWkdSRGIyMWlhVzVoZEc5eUtDQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCcGJtUmxlRTltS0NCamFHVmphME52Ym5SbGVIUXNJR1ZzWlcwZ0tTQStJQzB4TzF4dVhIUmNkSDBzSUdsdGNHeHBZMmwwVW1Wc1lYUnBkbVVzSUhSeWRXVWdLU3hjYmx4MFhIUnRZWFJqYUdWeWN5QTlJRnNnWm5WdVkzUnBiMjRvSUdWc1pXMHNJR052Ym5SbGVIUXNJSGh0YkNBcElIdGNibHgwWEhSY2RIWmhjaUJ5WlhRZ1BTQW9JQ0ZzWldGa2FXNW5VbVZzWVhScGRtVWdKaVlnS0NCNGJXd2dmSHdnWTI5dWRHVjRkQ0FoUFQwZ2IzVjBaWEp0YjNOMFEyOXVkR1Y0ZENBcElDa2dmSHdnS0Z4dVhIUmNkRngwWEhRb1kyaGxZMnREYjI1MFpYaDBJRDBnWTI5dWRHVjRkQ2t1Ym05a1pWUjVjR1VnUDF4dVhIUmNkRngwWEhSY2RHMWhkR05vUTI5dWRHVjRkQ2dnWld4bGJTd2dZMjl1ZEdWNGRDd2dlRzFzSUNrZ09seHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1FXNTVRMjl1ZEdWNGRDZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnS1R0Y2JseDBYSFJjZEM4dklFRjJiMmxrSUdoaGJtZHBibWNnYjI1MGJ5QmxiR1Z0Wlc1MElDaHBjM04xWlNBak1qazVLVnh1WEhSY2RGeDBZMmhsWTJ0RGIyNTBaWGgwSUQwZ2JuVnNiRHRjYmx4MFhIUmNkSEpsZEhWeWJpQnlaWFE3WEc1Y2RGeDBmU0JkTzF4dVhHNWNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEdsbUlDZ2dLRzFoZEdOb1pYSWdQU0JGZUhCeUxuSmxiR0YwYVhabFd5QjBiMnRsYm5OYmFWMHVkSGx3WlNCZEtTQXBJSHRjYmx4MFhIUmNkRzFoZEdOb1pYSnpJRDBnV3lCaFpHUkRiMjFpYVc1aGRHOXlLR1ZzWlcxbGJuUk5ZWFJqYUdWeUtDQnRZWFJqYUdWeWN5QXBMQ0J0WVhSamFHVnlLU0JkTzF4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUnRZWFJqYUdWeUlEMGdSWGh3Y2k1bWFXeDBaWEpiSUhSdmEyVnVjMXRwWFM1MGVYQmxJRjB1WVhCd2JIa29JRzUxYkd3c0lIUnZhMlZ1YzF0cFhTNXRZWFJqYUdWeklDazdYRzVjYmx4MFhIUmNkQzh2SUZKbGRIVnliaUJ6Y0dWamFXRnNJSFZ3YjI0Z2MyVmxhVzVuSUdFZ2NHOXphWFJwYjI1aGJDQnRZWFJqYUdWeVhHNWNkRngwWEhScFppQW9JRzFoZEdOb1pYSmJJR1Y0Y0dGdVpHOGdYU0FwSUh0Y2JseDBYSFJjZEZ4MEx5OGdSbWx1WkNCMGFHVWdibVY0ZENCeVpXeGhkR2wyWlNCdmNHVnlZWFJ2Y2lBb2FXWWdZVzU1S1NCbWIzSWdjSEp2Y0dWeUlHaGhibVJzYVc1blhHNWNkRngwWEhSY2RHb2dQU0FySzJrN1hHNWNkRngwWEhSY2RHWnZjaUFvSURzZ2FpQThJR3hsYmpzZ2Fpc3JJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnUlhod2NpNXlaV3hoZEdsMlpWc2dkRzlyWlc1elcycGRMblI1Y0dVZ1hTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHSnlaV0ZyTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjMlYwVFdGMFkyaGxjaWhjYmx4MFhIUmNkRngwWEhScElENGdNU0FtSmlCbGJHVnRaVzUwVFdGMFkyaGxjaWdnYldGMFkyaGxjbk1nS1N4Y2JseDBYSFJjZEZ4MFhIUnBJRDRnTVNBbUppQjBiMU5sYkdWamRHOXlLRnh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTV1lnZEdobElIQnlaV05sWkdsdVp5QjBiMnRsYmlCM1lYTWdZU0JrWlhOalpXNWtZVzUwSUdOdmJXSnBibUYwYjNJc0lHbHVjMlZ5ZENCaGJpQnBiWEJzYVdOcGRDQmhibmt0Wld4bGJXVnVkQ0JnS21CY2JseDBYSFJjZEZ4MFhIUmNkSFJ2YTJWdWN5NXpiR2xqWlNnZ01Dd2dhU0F0SURFZ0tTNWpiMjVqWVhRb2V5QjJZV3gxWlRvZ2RHOXJaVzV6V3lCcElDMGdNaUJkTG5SNWNHVWdQVDA5SUZ3aUlGd2lJRDhnWENJcVhDSWdPaUJjSWx3aUlIMHBYRzVjZEZ4MFhIUmNkRngwS1M1eVpYQnNZV05sS0NCeWRISnBiU3dnWENJa01Wd2lJQ2tzWEc1Y2RGeDBYSFJjZEZ4MGJXRjBZMmhsY2l4Y2JseDBYSFJjZEZ4MFhIUnBJRHdnYWlBbUppQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2dkRzlyWlc1ekxuTnNhV05sS0NCcExDQnFJQ2tnS1N4Y2JseDBYSFJjZEZ4MFhIUnFJRHdnYkdWdUlDWW1JRzFoZEdOb1pYSkdjbTl0Vkc5clpXNXpLQ0FvZEc5clpXNXpJRDBnZEc5clpXNXpMbk5zYVdObEtDQnFJQ2twSUNrc1hHNWNkRngwWEhSY2RGeDBhaUE4SUd4bGJpQW1KaUIwYjFObGJHVmpkRzl5S0NCMGIydGxibk1nS1Z4dVhIUmNkRngwWEhRcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MGJXRjBZMmhsY25NdWNIVn
14938phQ2dnYldGMFkyaGxjaUFwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJsYkdWdFpXNTBUV0YwWTJobGNpZ2diV0YwWTJobGNuTWdLVHRjYm4xY2JseHVablZ1WTNScGIyNGdiV0YwWTJobGNrWnliMjFIY205MWNFMWhkR05vWlhKektDQmxiR1Z0Wlc1MFRXRjBZMmhsY25Nc0lITmxkRTFoZEdOb1pYSnpJQ2tnZTF4dVhIUjJZWElnWW5sVFpYUWdQU0J6WlhSTllYUmphR1Z5Y3k1c1pXNW5kR2dnUGlBd0xGeHVYSFJjZEdKNVJXeGxiV1Z1ZENBOUlHVnNaVzFsYm5STllYUmphR1Z5Y3k1c1pXNW5kR2dnUGlBd0xGeHVYSFJjZEhOMWNHVnlUV0YwWTJobGNpQTlJR1oxYm1OMGFXOXVLQ0J6WldWa0xDQmpiMjUwWlhoMExDQjRiV3dzSUhKbGMzVnNkSE1zSUc5MWRHVnliVzl6ZENBcElIdGNibHgwWEhSY2RIWmhjaUJsYkdWdExDQnFMQ0J0WVhSamFHVnlMRnh1WEhSY2RGeDBYSFJ0WVhSamFHVmtRMjkxYm5RZ1BTQXdMRnh1WEhSY2RGeDBYSFJwSUQwZ1hDSXdYQ0lzWEc1Y2RGeDBYSFJjZEhWdWJXRjBZMmhsWkNBOUlITmxaV1FnSmlZZ1cxMHNYRzVjZEZ4MFhIUmNkSE5sZEUxaGRHTm9aV1FnUFNCYlhTeGNibHgwWEhSY2RGeDBZMjl1ZEdWNGRFSmhZMnQxY0NBOUlHOTFkR1Z5Ylc5emRFTnZiblJsZUhRc1hHNWNkRngwWEhSY2RDOHZJRmRsSUcxMWMzUWdZV3gzWVhseklHaGhkbVVnWldsMGFHVnlJSE5sWldRZ1pXeGxiV1Z1ZEhNZ2IzSWdiM1YwWlhKdGIzTjBJR052Ym5SbGVIUmNibHgwWEhSY2RGeDBaV3hsYlhNZ1BTQnpaV1ZrSUh4OElHSjVSV3hsYldWdWRDQW1KaUJGZUhCeUxtWnBibVJiWENKVVFVZGNJbDBvSUZ3aUtsd2lMQ0J2ZFhSbGNtMXZjM1FnS1N4Y2JseDBYSFJjZEZ4MEx5OGdWWE5sSUdsdWRHVm5aWElnWkdseWNuVnVjeUJwWm1ZZ2RHaHBjeUJwY3lCMGFHVWdiM1YwWlhKdGIzTjBJRzFoZEdOb1pYSmNibHgwWEhSY2RGeDBaR2x5Y25WdWMxVnVhWEYxWlNBOUlDaGthWEp5ZFc1eklDczlJR052Ym5SbGVIUkNZV05yZFhBZ1BUMGdiblZzYkNBL0lERWdPaUJOWVhSb0xuSmhibVJ2YlNncElIeDhJREF1TVNrc1hHNWNkRngwWEhSY2RHeGxiaUE5SUdWc1pXMXpMbXhsYm1kMGFEdGNibHh1WEhSY2RGeDBhV1lnS0NCdmRYUmxjbTF2YzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRzkxZEdWeWJXOXpkRU52Ym5SbGVIUWdQU0JqYjI1MFpYaDBJQ0U5UFNCa2IyTjFiV1Z1ZENBbUppQmpiMjUwWlhoME8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJCWkdRZ1pXeGxiV1Z1ZEhNZ2NHRnpjMmx1WnlCbGJHVnRaVzUwVFdGMFkyaGxjbk1nWkdseVpXTjBiSGtnZEc4Z2NtVnpkV3gwYzF4dVhIUmNkRngwTHk4Z1MyVmxjQ0JnYVdBZ1lTQnpkSEpwYm1jZ2FXWWdkR2hsY21VZ1lYSmxJRzV2SUdWc1pXMWxiblJ6SUhOdklHQnRZWFJqYUdWa1EyOTFiblJnSUhkcGJHd2dZbVVnWENJd01Gd2lJR0psYkc5M1hHNWNkRngwWEhRdkx5QlRkWEJ3YjNKME9pQkpSVHc1TENCVFlXWmhjbWxjYmx4MFhIUmNkQzh2SUZSdmJHVnlZWFJsSUU1dlpHVk1hWE4wSUhCeWIzQmxjblJwWlhNZ0tFbEZPaUJjSW14bGJtZDBhRndpT3lCVFlXWmhjbWs2SUR4dWRXMWlaWEkrS1NCdFlYUmphR2x1WnlCbGJHVnRaVzUwY3lCaWVTQnBaRnh1WEhSY2RGeDBabTl5SUNnZ095QnBJQ0U5UFNCc1pXNGdKaVlnS0dWc1pXMGdQU0JsYkdWdGMxdHBYU2tnSVQwZ2JuVnNiRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lHSjVSV3hsYldWdWRDQW1KaUJsYkdWdElDa2dlMXh1WEhSY2RGeDBYSFJjZEdvZ1BTQXdPMXh1WEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0cxaGRHTm9aWElnUFNCbGJHVnRaVzUwVFdGMFkyaGxjbk5iYWlzclhTa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUcxaGRHTm9aWElvSUdWc1pXMHNJR052Ym5SbGVIUXNJSGh0YkNBcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWE4xYkhSekxuQjFjMmdvSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2IzVjBaWEp0YjNOMElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpHbHljblZ1Y3lBOUlHUnBjbkoxYm5OVmJtbHhkV1U3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwTHk4Z1ZISmhZMnNnZFc1dFlYUmphR1ZrSUdWc1pXMWxiblJ6SUdadmNpQnpaWFFnWm1sc2RHVnljMXh1WEhSY2RGeDBYSFJwWmlBb0lHSjVVMlYwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkQzh2SUZSb1pYa2dkMmxzYkNCb1lYWmxJR2R2Ym1VZ2RHaHliM1ZuYUNCaGJHd2djRzl6YzJsaWJHVWdiV0YwWTJobGNuTmNibHgwWEhSY2RGeDBYSFJwWmlBb0lDaGxiR1Z0SUQwZ0lXMWhkR05vWlhJZ0ppWWdaV3hsYlNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSdFlYUmphR1ZrUTI5MWJuUXRMVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFF2THlCTVpXNW5kR2hsYmlCMGFHVWdZWEp5WVhrZ1ptOXlJR1YyWlhKNUlHVnNaVzFsYm5Rc0lHMWhkR05vWldRZ2IzSWdibTkwWEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0J6WldWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRXNXRZWFJqYUdWa0xuQjFjMmdvSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUVhCd2JIa2djMlYwSUdacGJIUmxjbk1nZEc4Z2RXNXRZWFJqYUdWa0lHVnNaVzFsYm5SelhHNWNkRngwWEhSdFlYUmphR1ZrUTI5MWJuUWdLejBnYVR0Y2JseDBYSFJjZEdsbUlDZ2dZbmxUWlhRZ0ppWWdhU0FoUFQwZ2JXRjBZMmhsWkVOdmRXNTBJQ2tnZTF4dVhIUmNkRngwWEhScUlEMGdNRHRjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0FvYldGMFkyaGxjaUE5SUhObGRFMWhkR05vWlhKelcyb3JLMTBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1pYSW9JSFZ1YldGMFkyaGxaQ3dnYzJWMFRXRjBZMmhsWkN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUnBaaUFvSUhObFpXUWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MEx5OGdVbVZwYm5SbFozSmhkR1VnWld4bGJXVnVkQ0J0WVhSamFHVnpJSFJ2SUdWc2FXMXBibUYwWlNCMGFHVWdibVZsWkNCbWIzSWdjMjl5ZEdsdVoxeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JXRjBZMmhsWkVOdmRXNTBJRDRnTUNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUNFb2RXNXRZWFJqYUdWa1cybGRJSHg4SUhObGRFMWhkR05vWldSYmFWMHBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhObGRFMWhkR05vWldSYmFWMGdQU0J3YjNBdVkyRnNiQ2dnY21WemRXeDBjeUFwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RGeDBMeThnUkdselkyRnlaQ0JwYm1SbGVDQndiR0ZqWldodmJHUmxjaUIyWVd4MVpYTWdkRzhnWjJWMElHOXViSGtnWVdOMGRXRnNJRzFoZEdOb1pYTmNibHgwWEhSY2RGeDBYSFJ6WlhSTllYUmphR1ZrSUQwZ1kyOXVaR1
14938Z1YzJVb0lITmxkRTFoZEdOb1pXUWdLVHRjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RDOHZJRUZrWkNCdFlYUmphR1Z6SUhSdklISmxjM1ZzZEhOY2JseDBYSFJjZEZ4MGNIVnphQzVoY0hCc2VTZ2djbVZ6ZFd4MGN5d2djMlYwVFdGMFkyaGxaQ0FwTzF4dVhHNWNkRngwWEhSY2RDOHZJRk5sWldSc1pYTnpJSE5sZENCdFlYUmphR1Z6SUhOMVkyTmxaV1JwYm1jZ2JYVnNkR2x3YkdVZ2MzVmpZMlZ6YzJaMWJDQnRZWFJqYUdWeWN5QnpkR2x3ZFd4aGRHVWdjMjl5ZEdsdVoxeHVYSFJjZEZ4MFhIUnBaaUFvSUc5MWRHVnliVzl6ZENBbUppQWhjMlZsWkNBbUppQnpaWFJOWVhSamFHVmtMbXhsYm1kMGFDQStJREFnSmlaY2JseDBYSFJjZEZ4MFhIUW9JRzFoZEdOb1pXUkRiM1Z1ZENBcklITmxkRTFoZEdOb1pYSnpMbXhsYm1kMGFDQXBJRDRnTVNBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZOcGVucHNaUzUxYm1seGRXVlRiM0owS0NCeVpYTjFiSFJ6SUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVDNabGNuSnBaR1VnYldGdWFYQjFiR0YwYVc5dUlHOW1JR2RzYjJKaGJITWdZbmtnYm1WemRHVmtJRzFoZEdOb1pYSnpYRzVjZEZ4MFhIUnBaaUFvSUc5MWRHVnliVzl6ZENBcElIdGNibHgwWEhSY2RGeDBaR2x5Y25WdWN5QTlJR1JwY25KMWJuTlZibWx4ZFdVN1hHNWNkRngwWEhSY2RHOTFkR1Z5Ylc5emRFTnZiblJsZUhRZ1BTQmpiMjUwWlhoMFFtRmphM1Z3TzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhSeVpYUjFjbTRnZFc1dFlYUmphR1ZrTzF4dVhIUmNkSDA3WEc1Y2JseDBjbVYwZFhKdUlHSjVVMlYwSUQ5Y2JseDBYSFJ0WVhKclJuVnVZM1JwYjI0b0lITjFjR1Z5VFdGMFkyaGxjaUFwSURwY2JseDBYSFJ6ZFhCbGNrMWhkR05vWlhJN1hHNTlYRzVjYm1OdmJYQnBiR1VnUFNCVGFYcDZiR1V1WTI5dGNHbHNaU0E5SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2l3Z2JXRjBZMmdnTHlvZ1NXNTBaWEp1WVd3Z1ZYTmxJRTl1YkhrZ0tpOGdLU0I3WEc1Y2RIWmhjaUJwTEZ4dVhIUmNkSE5sZEUxaGRHTm9aWEp6SUQwZ1cxMHNYRzVjZEZ4MFpXeGxiV1Z1ZEUxaGRHTm9aWEp6SUQwZ1cxMHNYRzVjZEZ4MFkyRmphR1ZrSUQwZ1kyOXRjR2xzWlhKRFlXTm9aVnNnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaUJkTzF4dVhHNWNkR2xtSUNnZ0lXTmhZMmhsWkNBcElIdGNibHgwWEhRdkx5QkhaVzVsY21GMFpTQmhJR1oxYm1OMGFXOXVJRzltSUhKbFkzVnljMmwyWlNCbWRXNWpkR2x2Ym5NZ2RHaGhkQ0JqWVc0Z1ltVWdkWE5sWkNCMGJ5QmphR1ZqYXlCbFlXTm9JR1ZzWlcxbGJuUmNibHgwWEhScFppQW9JQ0Z0WVhSamFDQXBJSHRjYmx4MFhIUmNkRzFoZEdOb0lEMGdkRzlyWlc1cGVtVW9JSE5sYkdWamRHOXlJQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHa2dQU0J0WVhSamFDNXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmpZV05vWldRZ1BTQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2diV0YwWTJoYmFWMGdLVHRjYmx4MFhIUmNkR2xtSUNnZ1kyRmphR1ZrV3lCbGVIQmhibVJ2SUYwZ0tTQjdYRzVjZEZ4MFhIUmNkSE5sZEUxaGRHTm9aWEp6TG5CMWMyZ29JR05oWTJobFpDQXBPMXh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBaV3hsYldWdWRFMWhkR05vWlhKekxuQjFjMmdvSUdOaFkyaGxaQ0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVOaFkyaGxJSFJvWlNCamIyMXdhV3hsWkNCbWRXNWpkR2x2Ymx4dVhIUmNkR05oWTJobFpDQTlJR052YlhCcGJHVnlRMkZqYUdVb0lITmxiR1ZqZEc5eUxDQnRZWFJqYUdWeVJuSnZiVWR5YjNWd1RXRjBZMmhsY25Nb0lHVnNaVzFsYm5STllYUmphR1Z5Y3l3Z2MyVjBUV0YwWTJobGNuTWdLU0FwTzF4dVhHNWNkRngwTHk4Z1UyRjJaU0J6Wld4bFkzUnZjaUJoYm1RZ2RHOXJaVzVwZW1GMGFXOXVYRzVjZEZ4MFkyRmphR1ZrTG5ObGJHVmpkRzl5SUQwZ2MyVnNaV04wYjNJN1hHNWNkSDFjYmx4MGNtVjBkWEp1SUdOaFkyaGxaRHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRU0JzYjNjdGJHVjJaV3dnYzJWc1pXTjBhVzl1SUdaMWJtTjBhVzl1SUhSb1lYUWdkMjl5YTNNZ2QybDBhQ0JUYVhwNmJHVW5jeUJqYjIxd2FXeGxaRnh1SUNvZ0lITmxiR1ZqZEc5eUlHWjFibU4wYVc5dWMxeHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDhSblZ1WTNScGIyNTlJSE5sYkdWamRHOXlJRUVnYzJWc1pXTjBiM0lnYjNJZ1lTQndjbVV0WTI5dGNHbHNaV1JjYmlBcUlDQnpaV3hsWTNSdmNpQm1kVzVqZEdsdmJpQmlkV2xzZENCM2FYUm9JRk5wZW5wc1pTNWpiMjF3YVd4bFhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjlJR052Ym5SbGVIUmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDlJRnR5WlhOMWJIUnpYVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnVzNObFpXUmRJRUVnYzJWMElHOW1JR1ZzWlcxbGJuUnpJSFJ2SUcxaGRHTm9JR0ZuWVdsdWMzUmNiaUFxTDF4dWMyVnNaV04wSUQwZ1UybDZlbXhsTG5ObGJHVmpkQ0E5SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2l3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwSUh0Y2JseDBkbUZ5SUdrc0lIUnZhMlZ1Y3l3Z2RHOXJaVzRzSUhSNWNHVXNJR1pwYm1Rc1hHNWNkRngwWTI5dGNHbHNaV1FnUFNCMGVYQmxiMllnYzJWc1pXTjBiM0lnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCelpXeGxZM1J2Y2l4Y2JseDBYSFJ0WVhSamFDQTlJQ0Z6WldWa0lDWW1JSFJ2YTJWdWFYcGxLQ0FvYzJWc1pXTjBiM0lnUFNCamIyMXdhV3hsWkM1elpXeGxZM1J2Y2lCOGZDQnpaV3hsWTNSdmNpa2dLVHRjYmx4dVhIUnlaWE4xYkhSeklEMGdjbVZ6ZFd4MGN5QjhmQ0JiWFR0Y2JseHVYSFF2THlCVWNua2dkRzhnYldsdWFXMXBlbVVnYjNCbGNtRjBhVzl1Y3lCcFppQjBhR1Z5WlNCcGN5QnVieUJ6WldWa0lHRnVaQ0J2Ym14NUlHOXVaU0JuY205MWNGeHVYSFJwWmlBb0lHMWhkR05vTG14bGJtZDBhQ0E5UFQwZ01TQXBJSHRjYmx4dVhIUmNkQzh2SUZSaGEyVWdZU0J6YUc5eWRHTjFkQ0JoYm1RZ2MyVjBJSFJvWlNCamIyNTBaWGgwSUdsbUlIUm9aU0J5YjI5MElITmxiR1ZqZEc5eUlHbHpJR0Z1SUVsRVhHNWNkRngwZEc5clpXNXpJRDBnYldGMFkyaGJNRjBnUFNCdFlYUmphRnN3WFM1emJHbGpaU2dnTUNBcE8xeHVYSFJjZEdsbUlDZ2dkRzlyWlc1ekxteGxibWQwYUNBK0l
14938ESWdKaVlnS0hSdmEyVnVJRDBnZEc5clpXNXpXekJkS1M1MGVYQmxJRDA5UFNCY0lrbEVYQ0lnSmlaY2JseDBYSFJjZEZ4MGMzVndjRzl5ZEM1blpYUkNlVWxrSUNZbUlHTnZiblJsZUhRdWJtOWtaVlI1Y0dVZ1BUMDlJRGtnSmlZZ1pHOWpkVzFsYm5SSmMwaFVUVXdnSmlaY2JseDBYSFJjZEZ4MFJYaHdjaTV5Wld4aGRHbDJaVnNnZEc5clpXNXpXekZkTG5SNWNHVWdYU0FwSUh0Y2JseHVYSFJjZEZ4MFkyOXVkR1Y0ZENBOUlDZ2dSWGh3Y2k1bWFXNWtXMXdpU1VSY0lsMG9JSFJ2YTJWdUxtMWhkR05vWlhOYk1GMHVjbVZ3YkdGalpTaHlkVzVsYzJOaGNHVXNJR1oxYm1WelkyRndaU2tzSUdOdmJuUmxlSFFnS1NCOGZDQmJYU0FwV3pCZE8xeHVYSFJjZEZ4MGFXWWdLQ0FoWTI5dWRHVjRkQ0FwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1Y2JseDBYSFJjZEM4dklGQnlaV052YlhCcGJHVmtJRzFoZEdOb1pYSnpJSGRwYkd3Z2MzUnBiR3dnZG1WeWFXWjVJR0Z1WTJWemRISjVMQ0J6YnlCemRHVndJSFZ3SUdFZ2JHVjJaV3hjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUdOdmJYQnBiR1ZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmpiMjUwWlhoMElEMGdZMjl1ZEdWNGRDNXdZWEpsYm5ST2IyUmxPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJ6Wld4bFkzUnZjaUE5SUhObGJHVmpkRzl5TG5Oc2FXTmxLQ0IwYjJ0bGJuTXVjMmhwWm5Rb0tTNTJZV3gxWlM1c1pXNW5kR2dnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCR1pYUmphQ0JoSUhObFpXUWdjMlYwSUdadmNpQnlhV2RvZEMxMGJ5MXNaV1owSUcxaGRHTm9hVzVuWEc1Y2RGeDBhU0E5SUcxaGRHTm9SWGh3Y2x0Y0ltNWxaV1J6UTI5dWRHVjRkRndpWFM1MFpYTjBLQ0J6Wld4bFkzUnZjaUFwSUQ4Z01DQTZJSFJ2YTJWdWN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiMnRsYmlBOUlIUnZhMlZ1YzF0cFhUdGNibHh1WEhSY2RGeDBMeThnUVdKdmNuUWdhV1lnZDJVZ2FHbDBJR0VnWTI5dFltbHVZWFJ2Y2x4dVhIUmNkRngwYVdZZ0tDQkZlSEJ5TG5KbGJHRjBhWFpsV3lBb2RIbHdaU0E5SUhSdmEyVnVMblI1Y0dVcElGMGdLU0I3WEc1Y2RGeDBYSFJjZEdKeVpXRnJPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBhV1lnS0NBb1ptbHVaQ0E5SUVWNGNISXVabWx1WkZzZ2RIbHdaU0JkS1NBcElIdGNibHgwWEhSY2RGeDBMeThnVTJWaGNtTm9MQ0JsZUhCaGJtUnBibWNnWTI5dWRHVjRkQ0JtYjNJZ2JHVmhaR2x1WnlCemFXSnNhVzVuSUdOdmJXSnBibUYwYjNKelhHNWNkRngwWEhSY2RHbG1JQ2dnS0hObFpXUWdQU0JtYVc1a0tGeHVYSFJjZEZ4MFhIUmNkSFJ2YTJWdUxtMWhkR05vWlhOYk1GMHVjbVZ3YkdGalpTZ2djblZ1WlhOallYQmxMQ0JtZFc1bGMyTmhjR1VnS1N4Y2JseDBYSFJjZEZ4MFhIUnljMmxpYkdsdVp5NTBaWE4wS0NCMGIydGxibk5iTUYwdWRIbHdaU0FwSUNZbUlIUmxjM1JEYjI1MFpYaDBLQ0JqYjI1MFpYaDBMbkJoY21WdWRFNXZaR1VnS1NCOGZDQmpiMjUwWlhoMFhHNWNkRngwWEhSY2RDa3BJQ2tnZTF4dVhHNWNkRngwWEhSY2RGeDBMeThnU1dZZ2MyVmxaQ0JwY3lCbGJYQjBlU0J2Y2lCdWJ5QjBiMnRsYm5NZ2NtVnRZV2x1TENCM1pTQmpZVzRnY21WMGRYSnVJR1ZoY214NVhHNWNkRngwWEhSY2RGeDBkRzlyWlc1ekxuTndiR2xqWlNnZ2FTd2dNU0FwTzF4dVhIUmNkRngwWEhSY2RITmxiR1ZqZEc5eUlEMGdjMlZsWkM1c1pXNW5kR2dnSmlZZ2RHOVRaV3hsWTNSdmNpZ2dkRzlyWlc1eklDazdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQWhjMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUndkWE5vTG1Gd2NHeDVLQ0J5WlhOMWJIUnpMQ0J6WldWa0lDazdYRzVjZEZ4MFhIUmNkRngwWEhSeVpYUjFjbTRnY21WemRXeDBjenRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFJpY21WaGF6dGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkQzh2SUVOdmJYQnBiR1VnWVc1a0lHVjRaV04xZEdVZ1lTQm1hV3gwWlhKcGJtY2dablZ1WTNScGIyNGdhV1lnYjI1bElHbHpJRzV2ZENCd2NtOTJhV1JsWkZ4dVhIUXZMeUJRY205MmFXUmxJR0J0WVhSamFHQWdkRzhnWVhadmFXUWdjbVYwYjJ0bGJtbDZZWFJwYjI0Z2FXWWdkMlVnYlc5a2FXWnBaV1FnZEdobElITmxiR1ZqZEc5eUlHRmliM1psWEc1Y2RDZ2dZMjl0Y0dsc1pXUWdmSHdnWTI5dGNHbHNaU2dnYzJWc1pXTjBiM0lzSUcxaGRHTm9JQ2tnS1NoY2JseDBYSFJ6WldWa0xGeHVYSFJjZEdOdmJuUmxlSFFzWEc1Y2RGeDBJV1J2WTNWdFpXNTBTWE5JVkUxTUxGeHVYSFJjZEhKbGMzVnNkSE1zWEc1Y2RGeDBjbk5wWW14cGJtY3VkR1Z6ZENnZ2MyVnNaV04wYjNJZ0tTQW1KaUIwWlhOMFEyOXVkR1Y0ZENnZ1kyOXVkR1Y0ZEM1d1lYSmxiblJPYjJSbElDa2dmSHdnWTI5dWRHVjRkRnh1WEhRcE8xeHVYSFJ5WlhSMWNtNGdjbVZ6ZFd4MGN6dGNibjA3WEc1Y2JpOHZJRTl1WlMxMGFXMWxJR0Z6YzJsbmJtMWxiblJ6WEc1Y2JpOHZJRk52Y25RZ2MzUmhZbWxzYVhSNVhHNXpkWEJ3YjNKMExuTnZjblJUZEdGaWJHVWdQU0JsZUhCaGJtUnZMbk53YkdsMEtGd2lYQ0lwTG5OdmNuUW9JSE52Y25SUGNtUmxjaUFwTG1wdmFXNG9YQ0pjSWlrZ1BUMDlJR1Y0Y0dGdVpHODdYRzVjYmk4dklGTjFjSEJ2Y25RNklFTm9jbTl0WlNBeE5DMHpOU3RjYmk4dklFRnNkMkY1Y3lCaGMzTjFiV1VnWkhWd2JHbGpZWFJsY3lCcFppQjBhR1Y1SUdGeVpXNG5kQ0J3WVhOelpXUWdkRzhnZEdobElHTnZiWEJoY21semIyNGdablZ1WTNScGIyNWNibk4xY0hCdmNuUXVaR1YwWldOMFJIVndiR2xqWVhSbGN5QTlJQ0VoYUdGelJIVndiR2xqWVhSbE8xeHVYRzR2THlCSmJtbDBhV0ZzYVhwbElHRm5ZV2x1YzNRZ2RHaGxJR1JsWm1GMWJIUWdaRzlqZFcxbGJuUmNibk5sZEVSdlkzVnRaVzUwS0NrN1hHNWNiaTh2SUZOMWNIQnZjblE2SUZkbFltdHBkRHcxTXpjdU16SWdMU0JUWVdaaGNta2dOaTR3TGpNdlEyaHliMjFsSURJMUlDaG1hWGhsWkNCcGJpQkRhSEp2YldVZ01qY3BYRzR2THlCRVpYUmhZMmhsWkNCdWIyUmxjeUJqYjI1bWIzVnVaR2x1WjJ4NUlHWnZiR3h2ZHlBcVpXRmphQ0J2ZEdobGNpcGNibk4xY0hCdmNuUXVjMjl5ZEVSbGRHRmphR1ZrSUQwZ1lYTnpaWEowS0daMWJtTjBhVzl1S0NCa2FYWXhJQ2tnZTF4dVhIUXZMeUJUYUc5MWJHUWdjbVYwZFhKdUlERXNJR0oxZENCeVpYUjFjbTV6SURRZ0tHWnZiR3h2ZDJsdVp5bGNibHgwY21WMGRYSnVJR1JwZGpFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWl
14938cxbGJuUW9YQ0prYVhaY0lpa2dLU0FtSURFN1hHNTlLVHRjYmx4dUx5OGdVM1Z3Y0c5eWREb2dTVVU4T0Z4dUx5OGdVSEpsZG1WdWRDQmhkSFJ5YVdKMWRHVXZjSEp2Y0dWeWRIa2dYQ0pwYm5SbGNuQnZiR0YwYVc5dVhDSmNiaTh2SUdoMGRIQTZMeTl0YzJSdUxtMXBZM0p2YzI5bWRDNWpiMjB2Wlc0dGRYTXZiR2xpY21GeWVTOXRjelV6TmpReU9TVXlPRlpUTGpnMUpUSTVMbUZ6Y0hoY2JtbG1JQ2dnSVdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSa2FYWXVhVzV1WlhKSVZFMU1JRDBnWENJOFlTQm9jbVZtUFNjakp6NDhMMkUrWENJN1hHNWNkSEpsZEhWeWJpQmthWFl1Wm1seWMzUkRhR2xzWkM1blpYUkJkSFJ5YVdKMWRHVW9YQ0pvY21WbVhDSXBJRDA5UFNCY0lpTmNJaUE3WEc1OUtTQXBJSHRjYmx4MFlXUmtTR0Z1Wkd4bEtDQmNJblI1Y0dWOGFISmxabnhvWldsbmFIUjhkMmxrZEdoY0lpd2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VzSUdseldFMU1JQ2tnZTF4dVhIUmNkR2xtSUNnZ0lXbHpXRTFNSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsS0NCdVlXMWxMQ0J1WVcxbExuUnZURzkzWlhKRFlYTmxLQ2tnUFQwOUlGd2lkSGx3WlZ3aUlEOGdNU0E2SURJZ0tUdGNibHgwWEhSOVhHNWNkSDBwTzF4dWZWeHVYRzR2THlCVGRYQndiM0owT2lCSlJUdzVYRzR2THlCVmMyVWdaR1ZtWVhWc2RGWmhiSFZsSUdsdUlIQnNZV05sSUc5bUlHZGxkRUYwZEhKcFluVjBaU2hjSW5aaGJIVmxYQ0lwWEc1cFppQW9JQ0Z6ZFhCd2IzSjBMbUYwZEhKcFluVjBaWE1nZkh3Z0lXRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmthWFl1YVc1dVpYSklWRTFNSUQwZ1hDSThhVzV3ZFhRdlBsd2lPMXh1WEhSa2FYWXVabWx5YzNSRGFHbHNaQzV6WlhSQmRIUnlhV0oxZEdVb0lGd2lkbUZzZFdWY0lpd2dYQ0pjSWlBcE8xeHVYSFJ5WlhSMWNtNGdaR2wyTG1acGNuTjBRMmhwYkdRdVoyVjBRWFIwY21saWRYUmxLQ0JjSW5aaGJIVmxYQ0lnS1NBOVBUMGdYQ0pjSWp0Y2JuMHBJQ2tnZTF4dVhIUmhaR1JJWVc1a2JHVW9JRndpZG1Gc2RXVmNJaXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lHbHpXRTFNSUNrZ2UxeHVYSFJjZEdsbUlDZ2dJV2x6V0UxTUlDWW1JR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ1hDSnBibkIxZEZ3aUlDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1WkdWbVlYVnNkRlpoYkhWbE8xeHVYSFJjZEgxY2JseDBmU2s3WEc1OVhHNWNiaTh2SUZOMWNIQnZjblE2SUVsRlBEbGNiaTh2SUZWelpTQm5aWFJCZEhSeWFXSjFkR1ZPYjJSbElIUnZJR1psZEdOb0lHSnZiMnhsWVc1eklIZG9aVzRnWjJWMFFYUjBjbWxpZFhSbElHeHBaWE5jYm1sbUlDZ2dJV0Z6YzJWeWRDaG1kVzVqZEdsdmJpZ2daR2wySUNrZ2UxeHVYSFJ5WlhSMWNtNGdaR2wyTG1kbGRFRjBkSEpwWW5WMFpTaGNJbVJwYzJGaWJHVmtYQ0lwSUQwOUlHNTFiR3c3WEc1OUtTQXBJSHRjYmx4MFlXUmtTR0Z1Wkd4bEtDQmliMjlzWldGdWN5d2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VzSUdseldFMU1JQ2tnZTF4dVhIUmNkSFpoY2lCMllXdzdYRzVjZEZ4MGFXWWdLQ0FoYVhOWVRVd2dLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaV3hsYlZzZ2JtRnRaU0JkSUQwOVBTQjBjblZsSUQ4Z2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncElEcGNibHgwWEhSY2RGeDBYSFFvZG1Gc0lEMGdaV3hsYlM1blpYUkJkSFJ5YVdKMWRHVk9iMlJsS0NCdVlXMWxJQ2twSUNZbUlIWmhiQzV6Y0dWamFXWnBaV1FnUDF4dVhIUmNkRngwWEhSY2RIWmhiQzUyWVd4MVpTQTZYRzVjZEZ4MFhIUmNkRzUxYkd3N1hHNWNkRngwZlZ4dVhIUjlLVHRjYm4xY2JseHVjbVYwZFhKdUlGTnBlbnBzWlR0Y2JseHVmU2tvSUhkcGJtUnZkeUFwTzF4dVhHNWNibHh1YWxGMVpYSjVMbVpwYm1RZ1BTQlRhWHA2YkdVN1hHNXFVWFZsY25rdVpYaHdjaUE5SUZOcGVucHNaUzV6Wld4bFkzUnZjbk03WEc1cVVYVmxjbmt1Wlhod2NsdGNJanBjSWwwZ1BTQnFVWFZsY25rdVpYaHdjaTV3YzJWMVpHOXpPMXh1YWxGMVpYSjVMblZ1YVhGMVpTQTlJRk5wZW5wc1pTNTFibWx4ZFdWVGIzSjBPMXh1YWxGMVpYSjVMblJsZUhRZ1BTQlRhWHA2YkdVdVoyVjBWR1Y0ZER0Y2JtcFJkV1Z5ZVM1cGMxaE5URVJ2WXlBOUlGTnBlbnBzWlM1cGMxaE5URHRjYm1wUmRXVnllUzVqYjI1MFlXbHVjeUE5SUZOcGVucHNaUzVqYjI1MFlXbHVjenRjYmx4dVhHNWNiblpoY2lCeWJtVmxaSE5EYjI1MFpYaDBJRDBnYWxGMVpYSjVMbVY0Y0hJdWJXRjBZMmd1Ym1WbFpITkRiMjUwWlhoME8xeHVYRzUyWVhJZ2NuTnBibWRzWlZSaFp5QTlJQ2d2WGp3b1hGeDNLeWxjWEhNcVhGd3ZQejRvUHpvOFhGd3ZYRnd4UG53cEpDOHBPMXh1WEc1Y2JseHVkbUZ5SUhKcGMxTnBiWEJzWlNBOUlDOWVMbHRlT2lOY1hGdGNYQzRzWFNva0x6dGNibHh1THk4Z1NXMXdiR1Z0Wlc1MElIUm9aU0JwWkdWdWRHbGpZV3dnWm5WdVkzUnBiMjVoYkdsMGVTQm1iM0lnWm1sc2RHVnlJR0Z1WkNCdWIzUmNibVoxYm1OMGFXOXVJSGRwYm01dmR5Z2daV3hsYldWdWRITXNJSEYxWVd4cFptbGxjaXdnYm05MElDa2dlMXh1WEhScFppQW9JR3BSZFdWeWVTNXBjMFoxYm1OMGFXOXVLQ0J4ZFdGc2FXWnBaWElnS1NBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbWR5WlhBb0lHVnNaVzFsYm5SekxDQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTQXBJSHRjYmx4MFhIUmNkQzhxSUdwemFHbHVkQ0F0VnpBeE9DQXFMMXh1WEhSY2RGeDBjbVYwZFhKdUlDRWhjWFZoYkdsbWFXVnlMbU5oYkd3b0lHVnNaVzBzSUdrc0lHVnNaVzBnS1NBaFBUMGdibTkwTzF4dVhIUmNkSDBwTzF4dVhHNWNkSDFjYmx4dVhIUnBaaUFvSUhGMVlXeHBabWxsY2k1dWIyUmxWSGx3WlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbWR5WlhBb0lHVnNaVzFsYm5SekxDQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlBb0lHVnNaVzBnUFQwOUlIRjFZV3hwWm1sbGNpQXBJQ0U5UFNCdWIzUTdYRzVjZEZ4MGZTazdYRzVjYmx4MGZWeHVYRzVjZEdsbUlDZ2dkSGx3Wlc5bUlIRjFZV3hwWm1sbGNpQTlQVDBnWENKemRISnBibWRjSWlBcElIdGNibHgwWEhScFppQW9JSEpwYzFOcGJYQnNaUzUwWlhOMEtDQnhkV0ZzYVdacFpYSWdLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VabWxzZEdWeUtDQnhkV0ZzYVdacFpYSXNJR1ZzWlcxbGJuUnpMQ0J1YjNRZ0tUdGNibHgwWEhSOVhHNWNibHgwWEhSeGRXRnNhV1pwWlhJZ1BTQnFVWFZsY25rdVptbHNkR1Z5S0NCeGRXRnNhV1pwWlhJc0lHVnNaVzFsYm5SeklDazdYRzVjZEgxY2JseHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtZHlaWEFvSUdWc1pXMWxiblJ6TENCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdLQ0JwYm1SbGVFOW1MbU5oYkd3b0lIRjFZV3hwWm1sbGNpd2daV3hsYlNBcElENDlJREFnS1NBaFBUMGdibTkwTzF4dVhIUjlLVHRjYm4xY2JseHVhbEYxWlhKNUxtWnBiSFJsY2lBOUlHWjFibU4wYVc5dUtDQmxlSEJ5TENCbGJHVnRjeXdnYm05MElDa2dlMXh1WEhSMllYSWdaV3hsYlNBOUlHVnNaVzF6V3lBd0lGMDdYRzVjYmx4MGFXWWdLQ0J1YjNRZ0tTQjdYRzVjZEZ4MFpYaHdjaUE5SUZ3aU9tNXZkQ2hjSWlBcklHVjRjSElnS3lCY0lpbGNJanRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJsYkdWdGN5NXNaVzVuZEdnZ1BUMDlJREVnSmlZZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01TQS9YRzVjZEZ4MGFsRjFaWEo1TG1acGJtUXViV0YwWTJobGMxTmxiR1ZqZEc5eUtDQmxiR1Z0TENCbGVIQnlJQ2tnUHlCYklHVnNaVzBnWFNBNklGdGRJRHBjYmx4MFhIUnFVWFZsY25rdVptbHVaQzV0WVhSamFHVnpLQ0JsZUhCeUxDQnFVWFZsY25rdVozSmxjQ2dnWld4bGJYTXNJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERTdYRzVjZEZ4MGZTa3BPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtWnVMbVY0ZEdWdVpDaDdYRzVjZEdacGJtUTZJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFIyWVhJZ2FTeGNibHgwWEhSY2RHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb0xGeHVYSFJjZEZ4MGNtVjBJRDBnVzEwc1hHNWNkRngwWEhSelpXeG1JRDBnZEdocGN6dGNibHh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJQ0U5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hWemFGTjBZV05yS0NCcVVYVmxjbmtvSUhObGJHVmpkRzl5SUNrdVptbHNkR1Z5S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtTnZiblJoYVc1ektDQnpaV3htV3lCcElGMHNJSFJvYVhNZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZTa2dLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBhbEYxWlhKNUxtWnBibVFvSUhObGJHVmpkRzl5TENCelpXeG1XeUJwSUYwc0lISmxkQ0FwTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUU1bFpXUmxaQ0JpWldOaGRYTmxJQ1FvSUhObGJHVmpkRzl5TENCamIyNTBaWGgwSUNrZ1ltVmpiMjFsY3lBa0tDQmpiMjUwWlhoMElDa3VabWx1WkNnZ2MyVnNaV04wY
14938jNJZ0tWeHVYSFJjZEhKbGRDQTlJSFJvYVhNdWNIVnphRk4wWVdOcktDQnNaVzRnUGlBeElEOGdhbEYxWlhKNUxuVnVhWEYxWlNnZ2NtVjBJQ2tnT2lCeVpYUWdLVHRjYmx4MFhIUnlaWFF1YzJWc1pXTjBiM0lnUFNCMGFHbHpMbk5sYkdWamRHOXlJRDhnZEdocGN5NXpaV3hsWTNSdmNpQXJJRndpSUZ3aUlDc2djMlZzWldOMGIzSWdPaUJ6Wld4bFkzUnZjanRjYmx4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSOUxGeHVYSFJtYVd4MFpYSTZJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lIZHBibTV2ZHloMGFHbHpMQ0J6Wld4bFkzUnZjaUI4ZkNCYlhTd2dabUZzYzJVcElDazdYRzVjZEgwc1hHNWNkRzV2ZERvZ1puVnVZM1JwYjI0b0lITmxiR1ZqZEc5eUlDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbkIxYzJoVGRHRmpheWdnZDJsdWJtOTNLSFJvYVhNc0lITmxiR1ZqZEc5eUlIeDhJRnRkTENCMGNuVmxLU0FwTzF4dVhIUjlMRnh1WEhScGN6b2dablZ1WTNScGIyNG9JSE5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQWhJWGRwYm01dmR5aGNibHgwWEhSY2RIUm9hWE1zWEc1Y2JseDBYSFJjZEM4dklFbG1JSFJvYVhNZ2FYTWdZU0J3YjNOcGRHbHZibUZzTDNKbGJHRjBhWFpsSUhObGJHVmpkRzl5TENCamFHVmpheUJ0WlcxaVpYSnphR2x3SUdsdUlIUm9aU0J5WlhSMWNtNWxaQ0J6WlhSY2JseDBYSFJjZEM4dklITnZJQ1FvWENKd09tWnBjbk4wWENJcExtbHpLRndpY0Rwc1lYTjBYQ0lwSUhkdmJpZDBJSEpsZEhWeWJpQjBjblZsSUdadmNpQmhJR1J2WXlCM2FYUm9JSFIzYnlCY0luQmNJaTVjYmx4MFhIUmNkSFI1Y0dWdlppQnpaV3hsWTNSdmNpQTlQVDBnWENKemRISnBibWRjSWlBbUppQnlibVZsWkhORGIyNTBaWGgwTG5SbGMzUW9JSE5sYkdWamRHOXlJQ2tnUDF4dVhIUmNkRngwWEhScVVYVmxjbmtvSUhObGJHVmpkRzl5SUNrZ09seHVYSFJjZEZ4MFhIUnpaV3hsWTNSdmNpQjhmQ0JiWFN4Y2JseDBYSFJjZEdaaGJITmxYRzVjZEZ4MEtTNXNaVzVuZEdnN1hHNWNkSDFjYm4wcE8xeHVYRzVjYmk4dklFbHVhWFJwWVd4cGVtVWdZU0JxVVhWbGNua2diMkpxWldOMFhHNWNibHh1THk4Z1FTQmpaVzUwY21Gc0lISmxabVZ5Wlc1alpTQjBieUIwYUdVZ2NtOXZkQ0JxVVhWbGNua29aRzlqZFcxbGJuUXBYRzUyWVhJZ2NtOXZkR3BSZFdWeWVTeGNibHh1WEhRdkx5QkJJSE5wYlhCc1pTQjNZWGtnZEc4Z1kyaGxZMnNnWm05eUlFaFVUVXdnYzNSeWFXNW5jMXh1WEhRdkx5QlFjbWx2Y21sMGFYcGxJQ05wWkNCdmRtVnlJRHgwWVdjK0lIUnZJR0YyYjJsa0lGaFRVeUIyYVdFZ2JHOWpZWFJwYjI0dWFHRnphQ0FvSXprMU1qRXBYRzVjZEM4dklGTjBjbWxqZENCSVZFMU1JSEpsWTI5bmJtbDBhVzl1SUNnak1URXlPVEE2SUcxMWMzUWdjM1JoY25RZ2QybDBhQ0E4S1Z4dVhIUnljWFZwWTJ0RmVIQnlJRDBnTDE0b1B6cGNYSE1xS0R4YlhGeDNYRnhYWFNzK0tWdGVQbDBxZkNNb1cxeGNkeTFkS2lrcEpDOHNYRzVjYmx4MGFXNXBkQ0E5SUdwUmRXVnllUzVtYmk1cGJtbDBJRDBnWm5WdVkzUnBiMjRvSUhObGJHVmpkRzl5TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQnRZWFJqYUN3Z1pXeGxiVHRjYmx4dVhIUmNkQzh2SUVoQlRrUk1SVG9nSkNoY0lsd2lLU3dnSkNodWRXeHNLU3dnSkNoMWJtUmxabWx1WldRcExDQWtLR1poYkhObEtWeHVYSFJjZEdsbUlDZ2dJWE5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1NHRnVaR3hsSUVoVVRVd2djM1J5YVc1bmMxeHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlITmxiR1ZqZEc5eUlEMDlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0J6Wld4bFkzUnZjbHN3WFNBOVBUMGdYQ0k4WENJZ0ppWWdjMlZzWldOMGIzSmJJSE5sYkdWamRHOXlMbXhsYm1kMGFDQXRJREVnWFNBOVBUMGdYQ0krWENJZ0ppWWdjMlZzWldOMGIzSXViR1Z1WjNSb0lENDlJRE1nS1NCN1hHNWNkRngwWEhSY2RDOHZJRUZ6YzNWdFpTQjBhR0YwSUhOMGNtbHVaM01nZEdoaGRDQnpkR0Z5ZENCaGJtUWdaVzVrSUhkcGRHZ2dQRDRnWVhKbElFaFVUVXdnWVc1a0lITnJhWEFnZEdobElISmxaMlY0SUdOb1pXTnJYRzVjZEZ4MFhIUmNkRzFoZEdOb0lEMGdXeUJ1ZFd4c0xDQnpaV3hsWTNSdmNpd2diblZzYkNCZE8xeHVYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUnRZWFJqYUNBOUlISnhkV2xqYTBWNGNISXVaWGhsWXlnZ2MyVnNaV04wYjNJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVFdGMFkyZ2dhSFJ0YkNCdmNpQnRZV3RsSUhOMWNtVWdibThnWTI5dWRHVjRkQ0JwY3lCemNHVmphV1pwWldRZ1ptOXlJQ05wWkZ4dVhIUmNkRngwYVdZZ0tDQnRZWFJqYUNBbUppQW9iV0YwWTJoYk1WMGdmSHdnSVdOdmJuUmxlSFFwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkQzh2SUVoQlRrUk1SVG9nSkNob2RHMXNLU0F0UGlBa0tHRnljbUY1S1Z4dVhIUmNkRngwWEhScFppQW9JRzFoZEdOb1d6RmRJQ2tnZTF4dVhIUmNkRngwWEhSY2RHTnZiblJsZUhRZ1BTQmpiMjUwWlhoMElHbHVjM1JoYm1ObGIyWWdhbEYxWlhKNUlEOGdZMjl1ZEdWNGRGc3dYU0E2SUdOdmJuUmxlSFE3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJQY0hScGIyNGdkRzhnY25WdUlITmpjbWx3ZEhNZ2FYTWdkSEoxWlNCbWIzSWdZbUZqYXkxamIyMXdZWFJjYmx4MFhIUmNkRngwWEhRdkx5QkpiblJsYm5ScGIyNWhiR3g1SUd4bGRDQjBhR1VnWlhKeWIzSWdZbVVnZEdoeWIzZHVJR2xtSUhCaGNuTmxTRlJOVENCcGN5QnViM1FnY0hKbGMyVnVkRnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzV0WlhKblpTZ2dkR2hwY3l3Z2FsRjFaWEo1TG5CaGNuTmxTRlJOVENoY2JseDBYSFJjZEZ4MFhIUmNkRzFoZEdOb1d6RmRMRnh1WEhSY2RGeDBYSFJjZEZ4MFkyOXVkR1Y0ZENBbUppQmpiMjUwWlhoMExtNXZaR1ZVZVhCbElEOGdZMjl1ZEdWNGRDNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHTnZiblJsZUhRZ09pQmtiMk4xYldWdWRDeGNibHgwWEhSY2RGeDBYSFJjZEhSeWRXVmNibHgwWEhSY2RGeDBYSFFwSUNrN1hHNWNibHgwWEhSY2RGeDBYSFF2THlCSVFVNUVURVU2SUNRb2FIUnRiQ3dnY0hKdmNITXBYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnljMmx1WjJ4bFZHRm5MblJsYzNRb0lHMWhkR05vV3pGZElDa2dKaVlnYWxGMVpYSjVMbWx6VUd4aGFXNVBZb
14938XBsWTNRb0lHTnZiblJsZUhRZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHWnZjaUFvSUcxaGRHTm9JR2x1SUdOdmJuUmxlSFFnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEM4dklGQnliM0JsY25ScFpYTWdiMllnWTI5dWRHVjRkQ0JoY21VZ1kyRnNiR1ZrSUdGeklHMWxkR2h2WkhNZ2FXWWdjRzl6YzJsaWJHVmNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZEdocGMxc2diV0YwWTJnZ1hTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhSb2FYTmJJRzFoZEdOb0lGMG9JR052Ym5SbGVIUmJJRzFoZEdOb0lGMGdLVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFF2THlBdUxpNWhibVFnYjNSb1pYSjNhWE5sSUhObGRDQmhjeUJoZEhSeWFXSjFkR1Z6WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBkR2hwY3k1aGRIUnlLQ0J0WVhSamFDd2dZMjl1ZEdWNGRGc2diV0YwWTJnZ1hTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjYmx4MFhIUmNkRngwTHk4Z1NFRk9SRXhGT2lBa0tDTnBaQ2xjYmx4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSbGJHVnRJRDBnWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9JRzFoZEdOb1d6SmRJQ2s3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJDYkdGamEySmxjbko1SURRdU5seHVYSFJjZEZ4MFhIUmNkQzh2SUdkRlFrbEVJSEpsZEhWeWJuTWdibTlrWlhNZ2JtOGdiRzl1WjJWeUlHbHVJSFJvWlNCa2IyTjFiV1Z1ZENBb0l6WTVOak1wWEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdElDWW1JR1ZzWlcwdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RDOHZJRWx1YW1WamRDQjBhR1VnWld4bGJXVnVkQ0JrYVhKbFkzUnNlU0JwYm5SdklIUm9aU0JxVVhWbGNua2diMkpxWldOMFhHNWNkRngwWEhSY2RGeDBYSFIwYUdsekxteGxibWQwYUNBOUlERTdYRzVjZEZ4MFhIUmNkRngwWEhSMGFHbHpXekJkSUQwZ1pXeGxiVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFIwYUdsekxtTnZiblJsZUhRZ1BTQmtiMk4xYldWdWREdGNibHgwWEhSY2RGeDBYSFIwYUdsekxuTmxiR1ZqZEc5eUlEMGdjMlZzWldOMGIzSTdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnU0VGT1JFeEZPaUFrS0dWNGNISXNJQ1FvTGk0dUtTbGNibHgwWEhSY2RIMGdaV3h6WlNCcFppQW9JQ0ZqYjI1MFpYaDBJSHg4SUdOdmJuUmxlSFF1YW5GMVpYSjVJQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnS0NCamIyNTBaWGgwSUh4OElISnZiM1JxVVhWbGNua2dLUzVtYVc1a0tDQnpaV3hsWTNSdmNpQXBPMXh1WEc1Y2RGeDBYSFF2THlCSVFVNUVURVU2SUNRb1pYaHdjaXdnWTI5dWRHVjRkQ2xjYmx4MFhIUmNkQzh2SUNoM2FHbGphQ0JwY3lCcWRYTjBJR1Z4ZFdsMllXeGxiblFnZEc4NklDUW9ZMjl1ZEdWNGRDa3VabWx1WkNobGVIQnlLVnh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11WTI5dWMzUnlkV04wYjNJb0lHTnZiblJsZUhRZ0tTNW1hVzVrS0NCelpXeGxZM1J2Y2lBcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdTRUZPUkV4Rk9pQWtLRVJQVFVWc1pXMWxiblFwWEc1Y2RGeDBmU0JsYkhObElHbG1JQ2dnYzJWc1pXTjBiM0l1Ym05a1pWUjVjR1VnS1NCN1hHNWNkRngwWEhSMGFHbHpMbU52Ym5SbGVIUWdQU0IwYUdseld6QmRJRDBnYzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFIwYUdsekxteGxibWQwYUNBOUlERTdYRzVjZEZ4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4dVhIUmNkQzh2SUVoQlRrUk1SVG9nSkNobWRXNWpkR2x2YmlsY2JseDBYSFF2THlCVGFHOXlkR04xZENCbWIzSWdaRzlqZFcxbGJuUWdjbVZoWkhsY2JseDBYSFI5SUdWc2MyVWdhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ2MyVnNaV04wYjNJZ0tTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQjBlWEJsYjJZZ2NtOXZkR3BSZFdWeWVTNXlaV0ZrZVNBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlBL1hHNWNkRngwWEhSY2RISnZiM1JxVVhWbGNua3VjbVZoWkhrb0lITmxiR1ZqZEc5eUlDa2dPbHh1WEhSY2RGeDBYSFF2THlCRmVHVmpkWFJsSUdsdGJXVmthV0YwWld4NUlHbG1JSEpsWVdSNUlHbHpJRzV2ZENCd2NtVnpaVzUwWEc1Y2RGeDBYSFJjZEhObGJHVmpkRzl5S0NCcVVYVmxjbmtnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJwWmlBb0lITmxiR1ZqZEc5eUxuTmxiR1ZqZEc5eUlDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSMGFHbHpMbk5sYkdWamRHOXlJRDBnYzJWc1pXTjBiM0l1YzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFIwYUdsekxtTnZiblJsZUhRZ1BTQnpaV3hsWTNSdmNpNWpiMjUwWlhoME8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJxVVhWbGNua3ViV0ZyWlVGeWNtRjVLQ0J6Wld4bFkzUnZjaXdnZEdocGN5QXBPMXh1WEhSOU8xeHVYRzR2THlCSGFYWmxJSFJvWlNCcGJtbDBJR1oxYm1OMGFXOXVJSFJvWlNCcVVYVmxjbmtnY0hKdmRHOTBlWEJsSUdadmNpQnNZWFJsY2lCcGJuTjBZVzUwYVdGMGFXOXVYRzVwYm1sMExuQnliM1J2ZEhsd1pTQTlJR3BSZFdWeWVTNW1ianRjYmx4dUx5OGdTVzVwZEdsaGJHbDZaU0JqWlc1MGNtRnNJSEpsWm1WeVpXNWpaVnh1Y205dmRHcFJkV1Z5ZVNBOUlHcFJkV1Z5ZVNnZ1pHOWpkVzFsYm5RZ0tUdGNibHh1WEc1MllYSWdjbkJoY21WdWRITndjbVYySUQwZ0wxNG9QenB3WVhKbGJuUnpmSEJ5WlhZb1B6cFZiblJwYkh4QmJHd3BLUzhzWEc1Y2RDOHZJRTFsZEdodlpITWdaM1ZoY21GdWRHVmxaQ0IwYnlCd2NtOWtkV05sSUdFZ2RXNXBjWFZsSUhObGRDQjNhR1Z1SUhOMFlYSjBhVzVuSUdaeWIyMGdZU0IxYm1seGRXVWdjMlYwWEc1Y2RHZDFZWEpoYm5SbFpXUlZibWx4ZFdVZ1BTQjdYRzVjZEZ4MFkyaHBiR1J5Wlc0NklIUnlkV1VzWEc1Y2RGeDBZMjl1ZEdWdWRITTZJSFJ5ZFdVc1hHNWNkRngwYm1WNGREb2dkSEoxWlN4Y2JseDBYSFJ3Y21WMk9pQjBjblZsWEc1Y2RIMDdYRzVjYm1wUmRXVnllUzVsZUhSbGJtUW9lMXh1WEhSa2FYSTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQmthWElzSUhWdWRHbHNJQ2tnZTF4dVhIUmNkSFpoY2lCdFlYUmphR1ZrSUQwZ1cxMHNYRzVjZEZ4MFhIUjBjblZ1WTJGMFpTQTlJSFZ1ZEdsc0lDRTlQU0IxYm1SbFptbHVaV1E3WEc1Y2JseDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdaV3hsYlZzZ1pHbHlJRjBwSUNZbUlHVnNaVzB1Ym05a1pWUjVjR1VnSVQwOUlEa2dLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dkSEoxYm
149381OaGRHVWdKaVlnYWxGMVpYSjVLQ0JsYkdWdElDa3VhWE1vSUhWdWRHbHNJQ2tnS1NCN1hHNWNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBiV0YwWTJobFpDNXdkWE5vS0NCbGJHVnRJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCdFlYUmphR1ZrTzF4dVhIUjlMRnh1WEc1Y2RITnBZbXhwYm1jNklHWjFibU4wYVc5dUtDQnVMQ0JsYkdWdElDa2dlMXh1WEhSY2RIWmhjaUJ0WVhSamFHVmtJRDBnVzEwN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUc0N0lHNGdQU0J1TG01bGVIUlRhV0pzYVc1bklDa2dlMXh1WEhSY2RGeDBhV1lnS0NCdUxtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlHNGdJVDA5SUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEcxaGRHTm9aV1F1Y0hWemFDZ2diaUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkSEpsZEhWeWJpQnRZWFJqYUdWa08xeHVYSFI5WEc1OUtUdGNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RHaGhjem9nWm5WdVkzUnBiMjRvSUhSaGNtZGxkQ0FwSUh0Y2JseDBYSFIyWVhJZ2RHRnlaMlYwY3lBOUlHcFJkV1Z5ZVNnZ2RHRnlaMlYwTENCMGFHbHpJQ2tzWEc1Y2RGeDBYSFJzSUQwZ2RHRnlaMlYwY3k1c1pXNW5kR2c3WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bWFXeDBaWElvWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSMllYSWdhU0E5SURBN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1OdmJuUmhhVzV6S0NCMGFHbHpMQ0IwWVhKblpYUnpXMmxkSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlN4Y2JseHVYSFJqYkc5elpYTjBPaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0p6TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQmpkWElzWEc1Y2RGeDBYSFJwSUQwZ01DeGNibHgwWEhSY2RHd2dQU0IwYUdsekxteGxibWQwYUN4Y2JseDBYSFJjZEcxaGRHTm9aV1FnUFNCYlhTeGNibHgwWEhSY2RIQnZjeUE5SUhKdVpXVmtjME52Ym5SbGVIUXVkR1Z6ZENnZ2MyVnNaV04wYjNKeklDa2dmSHdnZEhsd1pXOW1JSE5sYkdWamRHOXljeUFoUFQwZ1hDSnpkSEpwYm1kY0lpQS9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2djMlZzWldOMGIzSnpMQ0JqYjI1MFpYaDBJSHg4SUhSb2FYTXVZMjl1ZEdWNGRDQXBJRHBjYmx4MFhIUmNkRngwTUR0Y2JseHVYSFJjZEdadmNpQW9JRHNnYVNBOElHdzdJR2tyS3lBcElIdGNibHgwWEhSY2RHWnZjaUFvSUdOMWNpQTlJSFJvYVhOYmFWMDdJR04xY2lBbUppQmpkWElnSVQwOUlHTnZiblJsZUhRN0lHTjFjaUE5SUdOMWNpNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWEhRdkx5QkJiSGRoZVhNZ2MydHBjQ0JrYjJOMWJXVnVkQ0JtY21GbmJXVnVkSE5jYmx4MFhIUmNkRngwYVdZZ0tDQmpkWEl1Ym05a1pWUjVjR1VnUENBeE1TQW1KaUFvY0c5eklEOWNibHgwWEhSY2RGeDBYSFJ3YjNNdWFXNWtaWGdvWTNWeUtTQStJQzB4SURwY2JseHVYSFJjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJSEJoYzNNZ2JtOXVMV1ZzWlcxbGJuUnpJSFJ2SUZOcGVucHNaVnh1WEhSY2RGeDBYSFJjZEdOMWNpNXViMlJsVkhsd1pTQTlQVDBnTVNBbUpseHVYSFJjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVpwYm1RdWJXRjBZMmhsYzFObGJHVmpkRzl5S0dOMWNpd2djMlZzWldOMGIzSnpLU2tnS1NCN1hHNWNibHgwWEhSY2RGeDBYSFJ0WVhSamFHVmtMbkIxYzJnb0lHTjFjaUFwTzF4dVhIUmNkRngwWEhSY2RHSnlaV0ZyTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJSFJvYVhNdWNIVnphRk4wWVdOcktDQnRZWFJqYUdWa0xteGxibWQwYUNBK0lERWdQeUJxVVhWbGNua3VkVzVwY1hWbEtDQnRZWFJqYUdWa0lDa2dPaUJ0WVhSamFHVmtJQ2s3WEc1Y2RIMHNYRzVjYmx4MEx5OGdSR1YwWlhKdGFXNWxJSFJvWlNCd2IzTnBkR2x2YmlCdlppQmhiaUJsYkdWdFpXNTBJSGRwZEdocGJpQjBhR1VnYzJWMFhHNWNkR2x1WkdWNE9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHh1WEhSY2RDOHZJRTV2SUdGeVozVnRaVzUwTENCeVpYUjFjbTRnYVc1a1pYZ2dhVzRnY0dGeVpXNTBYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQW9JSFJvYVhOYklEQWdYU0FtSmlCMGFHbHpXeUF3
14938SUYwdWNHRnlaVzUwVG05a1pTQXBJRDhnZEdocGN5NW1hWEp6ZENncExuQnlaWFpCYkd3b0tTNXNaVzVuZEdnZ09pQXRNVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJKYm1SbGVDQnBiaUJ6Wld4bFkzUnZjbHh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JR1ZzWlcwZ1BUMDlJRndpYzNSeWFXNW5YQ0lnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYVc1a1pYaFBaaTVqWVd4c0tDQnFVWFZsY25rb0lHVnNaVzBnS1N3Z2RHaHBjMXNnTUNCZElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdURzlqWVhSbElIUm9aU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1Z6YVhKbFpDQmxiR1Z0Wlc1MFhHNWNkRngwY21WMGRYSnVJR2x1WkdWNFQyWXVZMkZzYkNnZ2RHaHBjeXhjYmx4dVhIUmNkRngwTHk4Z1NXWWdhWFFnY21WalpXbDJaWE1nWVNCcVVYVmxjbmtnYjJKcVpXTjBMQ0IwYUdVZ1ptbHljM1FnWld4bGJXVnVkQ0JwY3lCMWMyVmtYRzVjZEZ4MFhIUmxiR1Z0TG1weGRXVnllU0EvSUdWc1pXMWJJREFnWFNBNklHVnNaVzFjYmx4MFhIUXBPMXh1WEhSOUxGeHVYRzVjZEdGa1pEb2dablZ1WTNScGIyNG9JSE5sYkdWamRHOXlMQ0JqYjI1MFpYaDBJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG5CMWMyaFRkR0ZqYXloY2JseDBYSFJjZEdwUmRXVnllUzUxYm1seGRXVW9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNXRaWEpuWlNnZ2RHaHBjeTVuWlhRb0tTd2dhbEYxWlhKNUtDQnpaV3hsWTNSdmNpd2dZMjl1ZEdWNGRDQXBJQ2xjYmx4MFhIUmNkQ2xjYmx4MFhIUXBPMXh1WEhSOUxGeHVYRzVjZEdGa1pFSmhZMnM2SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2lBcElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWhaR1FvSUhObGJHVmpkRzl5SUQwOUlHNTFiR3dnUDF4dVhIUmNkRngwZEdocGN5NXdjbVYyVDJKcVpXTjBJRG9nZEdocGN5NXdjbVYyVDJKcVpXTjBMbVpwYkhSbGNpaHpaV3hsWTNSdmNpbGNibHgwWEhRcE8xeHVYSFI5WEc1OUtUdGNibHh1Wm5WdVkzUnBiMjRnYzJsaWJHbHVaeWdnWTNWeUxDQmthWElnS1NCN1hHNWNkSGRvYVd4bElDZ2dLR04xY2lBOUlHTjFjbHRrYVhKZEtTQW1KaUJqZFhJdWJtOWtaVlI1Y0dVZ0lUMDlJREVnS1NCN2ZWeHVYSFJ5WlhSMWNtNGdZM1Z5TzF4dWZWeHVYRzVxVVhWbGNua3VaV0ZqYUNoN1hHNWNkSEJoY21WdWREb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MGRtRnlJSEJoY21WdWRDQTlJR1ZzWlcwdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSeVpYUjFjbTRnY0dGeVpXNTBJQ1ltSUhCaGNtVnVkQzV1YjJSbFZIbHdaU0FoUFQwZ01URWdQeUJ3WVhKbGJuUWdPaUJ1ZFd4c08xeHVYSFI5TEZ4dVhIUndZWEpsYm5Sek9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbVJwY2lnZ1pXeGxiU3dnWENKd1lYSmxiblJPYjJSbFhDSWdLVHRjYmx4MGZTeGNibHgwY0dGeVpXNTBjMVZ1ZEdsc09pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTd2dkVzUwYVd3Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNHRnlaVzUwVG05a1pWd2lMQ0IxYm5ScGJDQXBPMXh1WEhSOUxGeHVYSFJ1WlhoME9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYzJsaWJHbHVaeWdnWld4bGJTd2dYQ0p1WlhoMFUybGliR2x1WjF3aUlDazdYRzVjZEgwc1hHNWNkSEJ5WlhZNklHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ6YVdKc2FXNW5LQ0JsYkdWdExDQmNJbkJ5WlhacGIzVnpVMmxpYkdsdVoxd2lJQ2s3WEc1Y2RIMHNYRzVjZEc1bGVIUkJiR3c2SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVpHbHlLQ0JsYkdWdExDQmNJbTVsZUhSVGFXSnNhVzVuWENJZ0tUdGNibHgwZlN4Y2JseDBjSEpsZGtGc2JEb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNISmxkbWx2ZFhOVGFXSnNhVzVuWENJZ0tUdGNibHgwZlN4Y2JseDBibVY0ZEZWdWRHbHNPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dhU3dnZFc1MGFXd2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1a2FYSW9JR1ZzWlcwc0lGd2libVY0ZEZOcFlteHBibWRjSWl3Z2RXNTBhV3dnS1R0Y2JseDBmU3hjYmx4MGNISmxkbFZ1ZEdsc09pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTd2dkVzUwYVd3Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNISmxkbWx2ZFhOVGFXSnNhVzVuWENJc0lIVnVkR2xzSUNrN1hHNWNkSDBzWEc1Y2RITnBZbXhwYm1kek9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbk5wWW14cGJtY29JQ2dnWld4bGJTNXdZWEpsYm5ST2IyUmxJSHg4SUh0OUlDa3VabWx5YzNSRGFHbHNaQ3dnWld4bGJTQXBPMXh1WEhSOUxGeHVYSFJqYUdsc1pISmxiam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1emFXSnNhVzVuS0NCbGJHVnRMbVpwY25OMFEyaHBiR1FnS1R0Y2JseDBmU3hjYmx4MFkyOXVkR1Z1ZEhNNklHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdExtTnZiblJsYm5SRWIyTjFiV1Z1ZENCOGZDQnFVWFZsY25rdWJXVnlaMlVvSUZ0ZExDQmxiR1Z0TG1Ob2FXeGtUbTlrWlhNZ0tUdGNibHgwZlZ4dWZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lHWnVJQ2tnZTF4dVhIUnFVWFZsY25rdVptNWJJRzVoYldVZ1hTQTlJR1oxYm1OMGFXOXVLQ0IxYm5ScGJDd2djMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBkbUZ5SUcxaGRHTm9aV1FnUFNCcVVYVmxjbmt1YldGd0tDQjBhR2x6TENCbWJpd2dkVzUwYVd3Z0tUdGNibHh1WEhSY2RHbG1JQ2dnYm1GdFpTNXpiR2xqWlNnZ0xUVWdLU0FoUFQwZ1hDSlZiblJwYkZ3aUlDa2dlMXh1WEhSY2RGeDBjMlZzWldOMGIzSWdQU0IxYm5ScGJEdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSE5sYkdWamRHOXlJQ1ltSUhSNWNHVnZaaUJ6Wld4bFkzUnZjaUE5UFQwZ1hDSnpkSEpwYm1kY0lpQXBJSHRjYmx4MFhIUmNkRzFoZEdOb1pXUWdQU0JxVVhWbGNua3VabWxzZEdWeUtDQnpaV3hsWTNSdmNpd2diV0YwWTJobFpDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnZEdocGN5NXNaVzVuZEdnZ1BpQXhJQ2tnZTF4dVhIUmNkRngwTHk4Z1VtVnRiM1psSUdSMWNHeHBZMkYwWlhOY2JseDBYSFJjZEdsbUlDZ2dJV2QxWVhKaGJuUmxaV1JWYm1seGRXVmJJRzVoYldVZ1hTQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMblZ1YVhGMVpTZ2diV0YwWTJobFpDQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCU1pYWmxjbk5sSUc5eVpHVnlJR1p2Y2lCd1lYSmxiblJ6S2lCaGJtUWdjSEpsZGkxa1pYSnBkbUYwYVhabGMxeHVYSFJjZEZ4MGFXWWdLQ0J5Y0dGeVpXNTBjM0J5WlhZdWRHVnpkQ2dnYm1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSdFlYUmphR1ZrTG5KbGRtVnljMlVvS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lHMWhkR05vWldRZ0tUdGNibHgwZlR0Y2JuMHBPMXh1ZG1GeUlISnViM1IzYUdsMFpTQTlJQ2d2WEZ4VEt5OW5LVHRjYmx4dVhHNWNiaTh2SUZOMGNtbHVaeUIwYnlCUFltcGxZM1FnYjNCMGFXOXVjeUJtYjNKdFlYUWdZMkZqYUdWY2JuWmhjaUJ2Y0hScGIyNXpRMkZqYUdVZ1BTQjdmVHRjYmx4dUx5OGdRMjl1ZG1WeWRDQlRkSEpwYm1jdFptOXliV0YwZEdWa0lHOXdkR2x2Ym5NZ2FXNTBieUJQWW1wbFkzUXRabTl5YldGMGRHVmtJRzl1WlhNZ1lXNWtJSE4wYjNKbElHbHVJR05oWTJobFhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWUGNIUnBiMjV6S0NCdmNIUnBiMjV6SUNrZ2UxeHVYSFIyWVhJZ2IySnFaV04wSUQwZ2IzQjBhVzl1YzBOaFkyaGxXeUJ2Y0hScGIyNXpJRjBnUFNCN2ZUdGNibHgwYWxGMVpYSjVMbVZoWTJnb0lHOXdkR2x2Ym5NdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnRkTENCbWRXNWpkR2x2YmlnZ1h5d2dabXhoWnlBcElIdGNibHgwWEhSdlltcGxZM1JiSUdac1lXY2dYU0E5SUhSeWRXVTdYRzVjZEgwcE8xeHVYSFJ5WlhSMWNtNGdiMkpxWldOME8xeHVmVnh1WEc0dktseHVJQ29nUTNKbFlYUmxJR0VnWTJGc2JHSmhZMnNnYkdsemRDQjFjMmx1WnlCMGFHVWdabTlzYkc5M2FXNW5JSEJoY21GdFpYUmxjbk02WEc0Z0tseHVJQ3BjZEc5d2RHbHZibk02SUdGdUlHOXdkR2x2Ym1Gc0lHeHBjM1FnYjJZZ2MzQmhZMlV0YzJWd1lYSmhkR1ZrSUc5d2RHbHZibk1nZEdoaGRDQjNhV3hzSUdOb1lXNW5aU0JvYjNkY2JpQXFYSFJjZEZ4MGRH
14938aGxJR05oYkd4aVlXTnJJR3hwYzNRZ1ltVm9ZWFpsY3lCdmNpQmhJRzF2Y21VZ2RISmhaR2wwYVc5dVlXd2diM0IwYVc5dUlHOWlhbVZqZEZ4dUlDcGNiaUFxSUVKNUlHUmxabUYxYkhRZ1lTQmpZV3hzWW1GamF5QnNhWE4wSUhkcGJHd2dZV04wSUd4cGEyVWdZVzRnWlhabGJuUWdZMkZzYkdKaFkyc2diR2x6ZENCaGJtUWdZMkZ1SUdKbFhHNGdLaUJjSW1acGNtVmtYQ0lnYlhWc2RHbHdiR1VnZEdsdFpYTXVYRzRnS2x4dUlDb2dVRzl6YzJsaWJHVWdiM0IwYVc5dWN6cGNiaUFxWEc0Z0tseDBiMjVqWlRwY2RGeDBYSFIzYVd4c0lHVnVjM1Z5WlNCMGFHVWdZMkZzYkdKaFkyc2diR2x6ZENCallXNGdiMjVzZVNCaVpTQm1hWEpsWkNCdmJtTmxJQ2hzYVd0bElHRWdSR1ZtWlhKeVpXUXBYRzRnS2x4dUlDcGNkRzFsYlc5eWVUcGNkRngwWEhSM2FXeHNJR3RsWlhBZ2RISmhZMnNnYjJZZ2NISmxkbWx2ZFhNZ2RtRnNkV1Z6SUdGdVpDQjNhV3hzSUdOaGJHd2dZVzU1SUdOaGJHeGlZV05ySUdGa1pHVmtYRzRnS2x4MFhIUmNkRngwWEhSaFpuUmxjaUIwYUdVZ2JHbHpkQ0JvWVhNZ1ltVmxiaUJtYVhKbFpDQnlhV2RvZENCaGQyRjVJSGRwZEdnZ2RHaGxJR3hoZEdWemRDQmNJbTFsYlc5eWFYcGxaRndpWEc0Z0tseDBYSFJjZEZ4MFhIUjJZV3gxWlhNZ0tHeHBhMlVnWVNCRVpXWmxjbkpsWkNsY2JpQXFYRzRnS2x4MGRXNXBjWFZsT2x4MFhIUmNkSGRwYkd3Z1pXNXpkWEpsSUdFZ1kyRnNiR0poWTJzZ1kyRnVJRzl1YkhrZ1ltVWdZV1JrWldRZ2IyNWpaU0FvYm04Z1pIVndiR2xqWVhSbElHbHVJSFJvWlNCc2FYTjBLVnh1SUNwY2JpQXFYSFJ6ZEc5d1QyNUdZV3h6WlRwY2RHbHVkR1Z5Y25Wd2RDQmpZV3hzYVc1bmN5QjNhR1Z1SUdFZ1kyRnNiR0poWTJzZ2NtVjBkWEp1Y3lCbVlXeHpaVnh1SUNwY2JpQXFMMXh1YWxGMVpYSjVMa05oYkd4aVlXTnJjeUE5SUdaMWJtTjBhVzl1S0NCdmNIUnBiMjV6SUNrZ2UxeHVYRzVjZEM4dklFTnZiblpsY25RZ2IzQjBhVzl1Y3lCbWNtOXRJRk4wY21sdVp5MW1iM0p0WVhSMFpXUWdkRzhnVDJKcVpXTjBMV1p2Y20xaGRIUmxaQ0JwWmlCdVpXVmtaV1JjYmx4MEx5OGdLSGRsSUdOb1pXTnJJR2x1SUdOaFkyaGxJR1pwY25OMEtWeHVYSFJ2Y0hScGIyNXpJRDBnZEhsd1pXOW1JRzl3ZEdsdmJuTWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1AxeHVYSFJjZENnZ2IzQjBhVzl1YzBOaFkyaGxXeUJ2Y0hScGIyNXpJRjBnZkh3Z1kzSmxZWFJsVDNCMGFXOXVjeWdnYjNCMGFXOXVjeUFwSUNrZ09seHVYSFJjZEdwUmRXVnllUzVsZUhSbGJtUW9JSHQ5TENCdmNIUnBiMjV6SUNrN1hHNWNibHgwZG1GeUlDOHZJRXhoYzNRZ1ptbHlaU0IyWVd4MVpTQW9abTl5SUc1dmJpMW1iM0puWlhSMFlXSnNaU0JzYVhOMGN5bGNibHgwWEhSdFpXMXZjbmtzWEc1Y2RGeDBMeThnUm14aFp5QjBieUJyYm05M0lHbG1JR3hwYzNRZ2QyRnpJR0ZzY21WaFpIa2dabWx5WldSY2JseDBYSFJtYVhKbFpDeGNibHgwWEhRdkx5QkdiR0ZuSUhSdklHdHViM2NnYVdZZ2JHbHpkQ0JwY3lCamRYSnlaVzUwYkhrZ1ptbHlhVzVuWEc1Y2RGeDBabWx5YVc1bkxGeHVYSFJjZEM4dklFWnBjbk4wSUdOaGJHeGlZV05ySUhSdklHWnBjbVVnS0hWelpXUWdhVzUwWlhKdVlXeHNlU0JpZVNCaFpHUWdZVzVrSUdacGNtVlhhWFJvS1Z4dVhIUmNkR1pwY21sdVoxTjBZWEowTEZ4dVhIUmNkQzh2SUVWdVpDQnZaaUIwYUdVZ2JHOXZjQ0IzYUdWdUlHWnBjbWx1WjF4dVhIUmNkR1pwY21sdVoweGxibWQwYUN4Y2JseDBYSFF2THlCSmJtUmxlQ0J2WmlCamRYSnlaVzUwYkhrZ1ptbHlhVzVuSUdOaGJHeGlZV05ySUNodGIyUnBabWxsWkNCaWVTQnlaVzF2ZG1VZ2FXWWdibVZsWkdWa0tWeHVYSFJjZEdacGNtbHVaMGx1WkdWNExGeHVYSFJjZEM4dklFRmpkSFZoYkNCallXeHNZbUZqYXlCc2FYTjBYRzVjZEZ4MGJHbHpkQ0E5SUZ0ZExGeHVYSFJjZEM4dklGTjBZV05ySUc5bUlHWnBjbVVnWTJGc2JITWdabTl5SUhKbGNHVmhkR0ZpYkdVZ2JHbHpkSE5jYmx4MFhIUnpkR0ZqYXlBOUlDRnZjSFJwYjI1ekxtOXVZMlVnSmlZZ1cxMHNYRzVjZEZ4MEx5OGdSbWx5WlNCallXeHNZbUZqYTNOY2JseDBYSFJtYVhKbElEMGdablZ1WTNScGIyNG9JR1JoZEdFZ0tTQjdYRzVjZEZ4MFhIUnRaVzF2Y25rZ1BTQnZjSFJwYjI1ekxtMWxiVzl5ZVNBbUppQmtZWFJoTzF4dVhIUmNkRngwWm1seVpXUWdQU0IwY25WbE8xeHVYSFJjZEZ4MFptbHlhVzVuU1c1a1pYZ2dQU0JtYVhKcGJtZFRkR0Z5ZENCOGZDQXdPMXh1WEhSY2RGeDBabWx5YVc1blUzUmhjblFnUFNBd08xeHVYSFJjZEZ4MFptbHlhVzVuVEdWdVozUm9JRDBnYkdsemRDNXNaVzVuZEdnN1hHNWNkRngwWEhSbWFYSnBibWNnUFNCMGNuVmxPMXh1WEhSY2RGeDBabTl5SUNnZ095QnNhWE4wSUNZbUlHWnBjbWx1WjBsdVpHVjRJRHdnWm1seWFXNW5UR1Z1WjNSb095Qm1hWEpwYm1kSmJtUmxlQ3NySUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUd4cGMzUmJJR1pwY21sdVowbHVaR1Y0SUYwdVlYQndiSGtvSUdSaGRHRmJJREFnWFN3Z1pHRjBZVnNnTVNCZElDa2dQVDA5SUdaaGJITmxJQ1ltSUc5d2RHbHZibk11YzNSdmNFOXVSbUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYldWdGIzSjVJRDBnWm1Gc2MyVTdJQzh2SUZSdklIQnlaWFpsYm5RZ1puVnlkR2hsY2lCallXeHNjeUIxYzJsdVp5QmhaR1JjYmx4MFhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkRngwWm1seWFXNW5JRDBnWm1Gc2MyVTdYRzVjZEZ4MFhIUnBaaUFvSUd4cGMzUWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djM1JoWTJzZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnpkR0ZqYXk1c1pXNW5kR2dnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJtYVhKbEtDQnpkR0ZqYXk1emFHbG1kQ2dwSUNrN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCdFpXMXZjbmtnS1NCN1hHNWNkRngwWEhSY2RGeDBiR2x6ZENBOUlGdGRPMXh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEhObGJHWXVaR2x6WVdKc1pTZ3BPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU3hjYmx4MFhIUXZMeUJCWTNSMVlXd2dRMkZzYkdKaFkydHpJRzlpYW1WamRGeHVYSFJjZEhObGJHWWdQU0I3WEc1Y2RGeDBYSFF2THlCQlpHUWdZU0JqWVd4c1ltRmpheUJ2Y2lCaElHTnZiR3hsWTNScGIyNGdiMllnWTJGc2JHSmhZMnR6SUhSdklIUm9aU0JzYVhOMFhHNWNkRngwWEhSaFpHUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JR3hwYzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JtbHljM1FzSUhkbElITmhkbVVnZEdobElHTjFjbkpsYm5RZ2JHVnVaM1JvWEc1Y2RGeDBYSFJjZEZ4MGRtRnlJSE4wWVhKMElEMGdiR2x6ZEM1c1pXNW5kR2c3WEc1Y2RGeDBYSFJjZEZ4MEtHWjFibU4wYVc5dUlHRmtaQ2dnWVhKbmN5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bFlXTm9LQ0JoY21kekxDQm1kVzVqZEdsdmJpZ2dYeXdnWVhKbklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjJZWElnZEhsd1pTQTlJR3BSZFdWeWVTNTBlWEJsS0NCaGNtY2dLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBhV1lnS0NCMGVYQmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwYVdZZ0tDQWhiM0IwYVc5dWN5NTFibWx4ZFdVZ2ZId2dJWE5sYkdZdWFHRnpLQ0JoY21jZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEd4cGMzUXVjSFZ6YUNnZ1lYSm5JQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCaGNtY2dKaVlnWVhKbkxteGxibWQwYUNBbUppQjBlWEJsSUNFOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFbHVjM0JsWTNRZ2NtVmpkWEp6YVhabGJIbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmhaR1FvSUdGeVp5QXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOUtUdGNibHgwWEhSY2RGeDBYSFI5S1NnZ1lYSm5kVzFsYm5SeklDazdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHOGdkMlVnYm1WbFpDQjBieUJoWkdRZ2RHaGxJR05oYkd4aVlXTnJjeUIwYnlCMGFHVmNibHgwWEhSY2RGeDBYSFF2THlCamRYSnlaVzUwSUdacGNtbHVaeUJpWVhSamFEOWNibHgwWEhSY2RGeDBYSFJwWmlBb0lHWnBjbWx1WnlBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdacGNtbHVaMHhsYm1kMGFDQTlJR3hwYzNRdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSY2RDOHZJRmRwZEdnZ2JXVnRiM0o1TENCcFppQjNaU2R5WlNCdWIzUWdabWx5YVc1bklIUm9aVzVjYmx4MFhIUmNkRngwWEhRdkx5QjNaU0J6YUc5MWJHUWdZMkZzYkNCeWFXZG9kQ0JoZDJGNVhHNWNkRngwWEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYldWdGIzSjVJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBabWx5YVc1blUzUmhjblFnUFNCemRHRnlkRHRjYmx4MFhIUmNkRngwWEhSY2RHWnBjbVVvSUcxbGJXOXllU0FwTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEgwc1hHNWNkRngwWEhRdkx5QlNaVzF2ZG1VZ1lTQmpZV3hzWW1GamF5Qm1jbTl0SUhSb1pTQnNhWE4wWEc1Y2RGeDBYSFJ5WlcxdmRtVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JR3hwYzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVZoWTJnb0lHRnlaM1Z0Wlc1MGN5d2dablZ1WTNScGIyNG9JRjhzSUdGeVp5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RIWmhjaUJwYm1SbGVEdGNibHgwWEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0NCcGJtUmxlQ0E5SUdwUmRXVnllUzVwYmtGeWNtRjVLQ0JoY21jc0lHeHBjM1FzSUdsdVpHVjRJQ2tnS1NBK0lDMHhJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJzYVhOMExuTndiR2xqWlNnZ2FXNWtaWGdzSURFZ0tUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MEx5OGdTR0Z1Wkd4bElHWnBjbWx1WnlCcGJtUmxlR1Z6WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ1ptbHlhVzVuSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYVc1a1pYZ2dQ
14938RDBnWm1seWFXNW5UR1Z1WjNSb0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwWm1seWFXNW5UR1Z1WjNSb0xTMDdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2FXNWtaWGdnUEQwZ1ptbHlhVzVuU1c1a1pYZ2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSbWFYSnBibWRKYm1SbGVDMHRPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDBwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkQzh2SUVOb1pXTnJJR2xtSUdFZ1oybDJaVzRnWTJGc2JHSmhZMnNnYVhNZ2FXNGdkR2hsSUd4cGMzUXVYRzVjZEZ4MFhIUXZMeUJKWmlCdWJ5QmhjbWQxYldWdWRDQnBjeUJuYVhabGJpd2djbVYwZFhKdUlIZG9aWFJvWlhJZ2IzSWdibTkwSUd4cGMzUWdhR0Z6SUdOaGJHeGlZV05yY3lCaGRIUmhZMmhsWkM1Y2JseDBYSFJjZEdoaGN6b2dablZ1WTNScGIyNG9JR1p1SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z1ptNGdQeUJxVVhWbGNua3VhVzVCY25KaGVTZ2dabTRzSUd4cGMzUWdLU0ErSUMweElEb2dJU0VvSUd4cGMzUWdKaVlnYkdsemRDNXNaVzVuZEdnZ0tUdGNibHgwWEhSY2RIMHNYRzVjZEZ4MFhIUXZMeUJTWlcxdmRtVWdZV3hzSUdOaGJHeGlZV05yY3lCbWNtOXRJSFJvWlNCc2FYTjBYRzVjZEZ4MFhIUmxiWEIwZVRvZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkR3hwYzNRZ1BTQmJYVHRjYmx4MFhIUmNkRngwWm1seWFXNW5UR1Z1WjNSb0lEMGdNRHRjYmx4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSOUxGeHVYSFJjZEZ4MEx5OGdTR0YyWlNCMGFHVWdiR2x6ZENCa2J5QnViM1JvYVc1bklHRnVlVzF2Y21WY2JseDBYSFJjZEdScGMyRmliR1U2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnNhWE4wSUQwZ2MzUmhZMnNnUFNCdFpXMXZjbmtnUFNCMWJtUmxabWx1WldRN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkQzh2SUVseklHbDBJR1JwYzJGaWJHVmtQMXh1WEhSY2RGeDBaR2x6WVdKc1pXUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnSVd4cGMzUTdYRzVjZEZ4MFhIUjlMRnh1WEhSY2RGeDBMeThnVEc5amF5QjBhR1VnYkdsemRDQnBiaUJwZEhNZ1kzVnljbVZ1ZENCemRHRjBaVnh1WEhSY2RGeDBiRzlqYXpvZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkSE4wWVdOcklEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnRaVzF2Y25rZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYzJWc1ppNWthWE5oWW14bEtDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSOUxGeHVYSFJjZEZ4MEx5OGdTWE1nYVhRZ2JHOWphMlZrUDF4dVhIUmNkRngwYkc5amEyVmtPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUNGemRHRmphenRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFF2THlCRFlXeHNJR0ZzYkNCallXeHNZbUZqYTNNZ2QybDBhQ0IwYUdVZ1oybDJaVzRnWTI5dWRHVjRkQ0JoYm1RZ1lYSm5kVzFsYm5SelhHNWNkRngwWEhSbWFYSmxWMmwwYURvZ1puVnVZM1JwYjI0b0lHTnZiblJsZUhRc0lHRnlaM01nS1NCN1hHNWNkRngwWEhSY2RHbG1JQ2dnYkdsemRDQW1KaUFvSUNGbWFYSmxaQ0I4ZkNCemRHRmpheUFwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR0Z5WjNNZ1BTQmhjbWR6SUh4OElGdGRPMXh1WEhSY2RGeDBYSFJjZEdGeVozTWdQU0JiSUdOdmJuUmxlSFFzSUdGeVozTXVjMnhwWTJVZ1B5QmhjbWR6TG5Oc2FXTmxLQ2tnT2lCaGNtZHpJRjA3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JtYVhKcGJtY2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnpkR0ZqYXk1d2RYTm9LQ0JoY21keklDazdYRzVjZEZ4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSY2RHWnBjbVVvSUdGeVozTWdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBYSFI5TEZ4dVhIUmNkRngwTHk4Z1EyRnNiQ0JoYkd3Z2RHaGxJR05oYkd4aVlXTnJjeUIzYVhSb0lIUm9aU0JuYVhabGJpQmhjbWQxYldWdWRITmNibHgwWEhSY2RHWnBjbVU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnpaV3htTG1acGNtVlhhWFJvS0NCMGFHbHpMQ0JoY21kMWJXVnVkSE1nS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjZEZ4MFhIUjlMRnh1WEhSY2RGeDBMeThnVkc4Z2EyNXZkeUJwWmlCMGFHVWdZMkZzYkdKaFkydHpJR2hoZG1VZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpDQmhkQ0JzWldGemRDQnZibU5sWEc1Y2RGeDBYSFJtYVhKbFpEb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUFoSVdacGNtVmtPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMDdYRzVjYmx4MGNtVjBkWEp1SUhObGJHWTdYRzU5TzF4dVhHNWNibXBSZFdWeWVTNWxlSFJsYm1Rb2UxeHVYRzVjZEVSbFptVnljbVZrT2lCbWRXNWpkR2x2YmlnZ1puVnVZeUFwSUh0Y2JseDBYSFIyWVhJZ2RIVndiR1Z6SUQwZ1cxeHVYSFJjZEZ4MFhIUXZMeUJoWTNScGIyNHNJR0ZrWkNCc2FYTjBaVzVsY2l3Z2JHbHpkR1Z1WlhJZ2JHbHpkQ3dnWm1sdVlXd2djM1JoZEdWY2JseDBYSFJjZEZ4MFd5QmNJbkpsYzI5c2RtVmNJaXdnWENKa2IyNWxYQ0lzSUdwUmRXVnllUzVEWVd4c1ltRmphM01vWENKdmJtTmxJRzFsYlc5eWVWd2lLU3dnWENKeVpYTnZiSFpsWkZ3aUlGMHNYRzVjZEZ4MFhIUmNkRnNnWENKeVpXcGxZM1JjSWl3Z1hDSm1ZV2xzWENJc0lHcFJkV1Z5ZVM1RFlXeHNZbUZqYTNNb1hDSnZibU5sSUcxbGJXOXllVndpS1N3Z1hDSnlaV3BsWTNSbFpGd2lJRjBzWEc1Y2RGeDBYSFJjZEZzZ1hDSnViM1JwWm5sY0lpd2dYQ0p3Y205bmNtVnpjMXdpTENCcVVYVmxjbmt1UTJGc2JHSmhZMnR6S0Z3aWJXVnRiM0o1WENJcElGMWNibHgwWEhSY2RGMHNYRzVjZEZ4MFhIUnpkR0YwWlNBOUlGd2ljR1Z1WkdsdVoxd2lMRnh1WEhSY2RGeDBjSEp2YldselpTQTlJSHRjYmx4MFhIUmNkRngwYzNSaGRHVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSY2RISmxkSFZ5YmlCemRHRjBaVHRjYmx4MFhIUmNkRngwZlN4Y2JseDBYSFJjZEZ4MFlXeDNZWGx6T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBYSFJrWldabGNuSmxaQzVrYjI1bEtDQmhjbWQxYldWdWRITWdLUzVtWVdsc0tDQmhjbWQxYldWdWRITWdLVHRjYmx4MFhIUmNkRngwWEhSeVpYUjFjbTRnZEdocGN6dGNibHgwWEhSY2RGeDBmU3hjYmx4MFhIUmNkRngwZEdobGJqb2dablZ1WTNScGIyNG9JQzhxSUdadVJHOXVaU3dnWm01R1lXbHNMQ0JtYmxCeWIyZHlaWE56SUNvdklDa2dlMXh1WEhSY2RGeDBYSFJjZEhaaGNpQm1ibk1nUFNCaGNtZDFiV1Z1ZEhNN1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1RVpXWmxjbkpsWkNobWRXNWpkR2x2YmlnZ2JtVjNSR1ZtWlhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScVVYVmxjbmt1WldGamFDZ2dkSFZ3YkdWekxDQm1kVzVqZEdsdmJpZ2dhU3dnZEhWd2JHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSFpoY2lCbWJpQTlJR3BSZFdWeWVTNXBjMFoxYm1OMGFXOXVLQ0JtYm5OYklHa2dYU0FwSUNZbUlHWnVjMXNnYVNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QmtaV1psY25KbFpGc2daRzl1WlNCOElHWmhhV3dnZkNCd2NtOW5jbVZ6Y3lCZElHWnZjaUJtYjNKM1lYSmthVzVuSUdGamRHbHZibk1nZEc4Z2JtVjNSR1ZtWlhKY2JseDBYSFJjZEZ4MFhIUmNkRngwWkdWbVpYSnlaV1JiSUhSMWNHeGxXekZkSUYwb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBkbUZ5SUhKbGRIVnlibVZrSUQwZ1ptNGdKaVlnWm00dVlYQndiSGtvSUhSb2FYTXNJR0Z5WjNWdFpXNTBjeUFwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdsbUlDZ2djbVYwZFhKdVpXUWdKaVlnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhKbGRIVnlibVZrTG5CeWIyMXBjMlVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSEpsZEhWeWJtVmtMbkJ5YjIxcGMyVW9LVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhRdVpHOXVaU2dnYm1WM1JHVm1aWEl1Y21WemIyeDJaU0FwWEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RDNW1ZV2xzS0NCdVpYZEVaV1psY2k1eVpXcGxZM1FnS1Z4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUXVjSEp2WjNKbGMzTW9JRzVsZDBSbFptVnlMbTV2ZEdsbWVTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFJ1WlhkRVpXWmxjbHNnZEhWd2JHVmJJREFnWFNBcklGd2lWMmwwYUZ3aUlGMG9JSFJvYVhNZ1BUMDlJSEJ5YjIxcGMyVWdQeUJ1WlhkRVpXWmxjaTV3Y205dGFYTmxLQ2tnT2lCMGFHbHpMQ0JtYmlBL0lGc2djbVYwZFhKdVpXUWdYU0E2SUdGeVozVnRaVzUwY3lBcE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJjZEZ4MGZTazdYRzVjZEZ4MFhIUmNkRngwWEhSOUtUdGNibHgwWEhSY2RGeDBYSFJjZEdadWN5QTlJRzUxYkd3N1hHNWNkRngwWEhSY2RGeDBmU2t1Y0hKdmJXbHpaU2dwTzF4dVhIUmNkRngwWEhSOUxGeHVYSFJjZEZ4MFhIUXZMeUJIWlhRZ1lTQndjbTl0YVhObElHWnZjaUIwYUdseklHUmxabVZ5Y21Wa1hHNWNkRngwWEhSY2RDOHZJRWxtSUc5aWFpQnBjeUJ3Y205MmFXUmxaQ3dnZEdobElIQnliMjFwYzJVZ1lYTndaV04wSUdseklHRmtaR1ZrSUhSdklIUm9aU0J2WW1wbFkzUmNibHgwWEhSY2RGeDBjSEp2YldselpUb2dablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdiMkpxSUNFOUlHNTFiR3dnUHlCcVVYVmxjbmt1WlhoMFpXNWtLQ0J2WW1vc0lIQnliMjFwYzJVZ0tTQTZJSEJ5YjIxcGMyVTdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFJrWldabGNuSmxaQ0E5SUh0OU8xeHVYRzVjZEZ4MEx5OGdTMlZsY0NCd2FYQmxJR1p2Y2lCaVlXTnJMV052YlhCaGRGeHVYSFJjZEhCeWIyMXBjMlV1Y0dsd1pTQTlJSEJ5YjIxcGMyVXVkR2hsYmp0Y2JseHVYSFJjZEM4dklFRmtaQ0JzYVhOMExYTndaV05wWm1saklHMWxkR2h2WkhOY2JseDBYSFJxVVhWbGNua3VaV0ZqYUNnZ2RIVndiR1Z6TENCbWRXNWpkR2x2YmlnZ2FTd2dkSFZ3YkdVZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYkdsemRDQTlJSFIxY0d4bFd5QXlJRjBzWEc1Y2RGeDBYSFJjZEhOMFlYUmxVM1J5YVc1bklEMGdkSFZ3YkdWYklETWdYVHRjYmx4dVhIUmNkRngwTHk4Z2NISnZiV2x6WlZzZ1pHOXVaU0I4SUdaaGFXd2dmQ0J3Y205bmNtVnpjeUJkSUQwZ2JHbHpkQzVoWkdSY2JseDBYSFJjZEhCeWIyMXBjMlZiSUhSMWNHeGxXekZkSUYwZ1BTQnNhWE4wTG1Ga1pEdGNibHh1WEhSY2RGeDBMeThnU0dGdVpHeGxJSE4wWVhSbFhHNWNkRngwWEhScFppQW9JSE4wWVhSbFUzUnlhVzVuSUNrZ2UxeHVYSFJjZEZ4MFhIUnNhWE4wTG1Ga1pDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwWEhRdkx5QnpkR0YwWlNBOUlGc2djbVZ6YjJ4MlpXUWdmQ0J5WldwbFkzUmxaQ0JkWEc1Y2RGeDBYSFJjZEZ4MGMzUmhkR1VnUFNCemRHRjBaVk4wY21sdVp6dGNibHh1WEhSY2RGeDBYSFF2THlCYklISmxhbVZqZEY5c2FYTjBJSHdnY21WemIyeDJaVjlzYVhOMElGMHVaR2x6WVdKc1pUc2djSEp2WjNKbGMzTmZiR2x6ZEM1c2IyTnJYRzVjZEZ4MFhIUmNkSDBzSUhSMWNHeGxjMXNnYVNCZUlERWdYVnNnTWlCZExtUnBjMkZpYkdVc0lIUjFjR3hsYzFzZ01pQmRXeUF5SUYwdWJHOWpheUFwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhRdkx5QmtaV1psY25KbFpGc2djbVZ6YjJ4MlpTQjhJSEpsYW1WamRDQjhJRzV2ZEdsbWVTQmRYRzVjZEZ4MFhIUmtaV1psY25KbFpGc2dkSFZ3YkdWYk1GMGdYU0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUmtaV1psY25KbFpGc2dkSFZ3YkdWYk1GMGdLeUJjSWxkcGRHaGNJaUJkS0NCMGFHbHpJRDA5UFNCa1pXWmxjbkpsWkNBL0lIQnliMjFwYzJVZ09pQjBhR2x6TENCaGNtZDFiV1Z1ZEhNZ0tUdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBYSFI5TzF4dVhIUmNkRngwWkdWbVpYSnlaV1JiSUhSMWNHeGxXekJkSUNzZ1hDSlhhWFJvWENJZ1hTQTlJR3hwYzNRdVptbHlaVmRwZEdnN1hHNWNkRngwZlNrN1hHNWNibHgwWEhRdkx5Qk5ZV3RsSUhSb1pTQmtaV1psY25KbFpDQmhJSEJ5YjIxcGMyVmNibHgwWEhSd2NtOXRhWE5sTG5CeWIyMXBjMlVvSUdSbFptVnljbVZrSUNrN1hHNWNibHgwWEhRdkx5QkRZV3hzSUdkcGRtVnVJR1oxYm1NZ2FXWWdZVzU1WEc1Y2RGeDBhV1lnS0NCbWRXNWpJQ2tnZTF4dVhIUmNkRngwWm5WdVl5NWpZV3hzS0NCa1pXWmxjbkpsWkN3Z1pHVm1aWEp5WldRZ0tUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkJiR3dnWkc5dVpTRmNibHgwWEhSeVpYUjFjbTRnWkdWbVpYSnlaV1E3WEc1Y2RIMHNYRzVjYmx4MEx5OGdSR1ZtWlhKeVpXUWdhR1ZzY0dWeVhHNWNkSGRvWlc0NklHWjFibU4wYVc5dUtDQnpkV0p2Y21ScGJtRjBaU0
14938F2S2lBc0lDNHVMaXdnYzNWaWIzSmthVzVoZEdWT0lDb3ZJQ2tnZTF4dVhIUmNkSFpoY2lCcElEMGdNQ3hjYmx4MFhIUmNkSEpsYzI5c2RtVldZV3gxWlhNZ1BTQnpiR2xqWlM1allXeHNLQ0JoY21kMWJXVnVkSE1nS1N4Y2JseDBYSFJjZEd4bGJtZDBhQ0E5SUhKbGMyOXNkbVZXWVd4MVpYTXViR1Z1WjNSb0xGeHVYRzVjZEZ4MFhIUXZMeUIwYUdVZ1kyOTFiblFnYjJZZ2RXNWpiMjF3YkdWMFpXUWdjM1ZpYjNKa2FXNWhkR1Z6WEc1Y2RGeDBYSFJ5WlcxaGFXNXBibWNnUFNCc1pXNW5kR2dnSVQwOUlERWdmSHdnS0NCemRXSnZjbVJwYm1GMFpTQW1KaUJxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnYzNWaWIzSmthVzVoZEdVdWNISnZiV2x6WlNBcElDa2dQeUJzWlc1bmRHZ2dPaUF3TEZ4dVhHNWNkRngwWEhRdkx5QjBhR1VnYldGemRHVnlJRVJsWm1WeWNtVmtMaUJKWmlCeVpYTnZiSFpsVm1Gc2RXVnpJR052Ym5OcGMzUWdiMllnYjI1c2VTQmhJSE5wYm1kc1pTQkVaV1psY25KbFpDd2dhblZ6ZENCMWMyVWdkR2hoZEM1Y2JseDBYSFJjZEdSbFptVnljbVZrSUQwZ2NtVnRZV2x1YVc1bklEMDlQU0F4SUQ4Z2MzVmliM0prYVc1aGRHVWdPaUJxVVhWbGNua3VSR1ZtWlhKeVpXUW9LU3hjYmx4dVhIUmNkRngwTHk4Z1ZYQmtZWFJsSUdaMWJtTjBhVzl1SUdadmNpQmliM1JvSUhKbGMyOXNkbVVnWVc1a0lIQnliMmR5WlhOeklIWmhiSFZsYzF4dVhIUmNkRngwZFhCa1lYUmxSblZ1WXlBOUlHWjFibU4wYVc5dUtDQnBMQ0JqYjI1MFpYaDBjeXdnZG1Gc2RXVnpJQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnWm5WdVkzUnBiMjRvSUhaaGJIVmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RHTnZiblJsZUhSeld5QnBJRjBnUFNCMGFHbHpPMXh1WEhSY2RGeDBYSFJjZEhaaGJIVmxjMXNnYVNCZElEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVnUHlCemJHbGpaUzVqWVd4c0tDQmhjbWQxYldWdWRITWdLU0E2SUhaaGJIVmxPMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dkbUZzZFdWeklEMDlQU0J3Y205bmNtVnpjMVpoYkhWbGN5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHUmxabVZ5Y21Wa0xtNXZkR2xtZVZkcGRHZ29JR052Ym5SbGVIUnpMQ0IyWVd4MVpYTWdLVHRjYmx4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQWhLQ0F0TFhKbGJXRnBibWx1WnlBcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpHVm1aWEp5WldRdWNtVnpiMngyWlZkcGRHZ29JR052Ym5SbGVIUnpMQ0IyWVd4MVpYTWdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMDdYRzVjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJ3Y205bmNtVnpjMVpoYkhWbGN5d2djSEp2WjNKbGMzTkRiMjUwWlhoMGN5d2djbVZ6YjJ4MlpVTnZiblJsZUhSek8xeHVYRzVjZEZ4MEx5OGdRV1JrSUd4cGMzUmxibVZ5Y3lCMGJ5QkVaV1psY25KbFpDQnpkV0p2Y21ScGJtRjBaWE03SUhSeVpXRjBJRzkwYUdWeWN5QmhjeUJ5WlhOdmJIWmxaRnh1WEhSY2RHbG1JQ2dnYkdWdVozUm9JRDRnTVNBcElIdGNibHgwWEhSY2RIQnliMmR5WlhOelZtRnNkV1Z6SUQwZ2JtVjNJRUZ5Y21GNUtDQnNaVzVuZEdnZ0tUdGNibHgwWEhSY2RIQnliMmR5WlhOelEyOXVkR1Y0ZEhNZ1BTQnVaWGNnUVhKeVlYa29JR3hsYm1kMGFDQXBPMXh1WEhSY2RGeDBjbVZ6YjJ4MlpVTnZiblJsZUhSeklEMGdibVYzSUVGeWNtRjVLQ0JzWlc1bmRHZ2dLVHRjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJtZDBhRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lISmxjMjlzZG1WV1lXeDFaWE5iSUdrZ1hTQW1KaUJxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnY21WemIyeDJaVlpoYkhWbGMxc2dhU0JkTG5CeWIyMXBjMlVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhOdmJIWmxWbUZzZFdWeld5QnBJRjB1Y0hKdmJXbHpaU2dwWEc1Y2RGeDBYSFJjZEZ4MFhIUXVaRzl1WlNnZ2RYQmtZWFJsUm5WdVl5Z2dhU3dnY21WemIyeDJaVU52Ym5SbGVIUnpMQ0J5WlhOdmJIWmxWbUZzZFdWeklDa2dLVnh1WEhSY2RGeDBYSFJjZEZ4MExtWmhhV3dvSUdSbFptVnljbVZrTG5KbGFtVmpkQ0FwWEc1Y2RGeDBYSFJjZEZ4MFhIUXVjSEp2WjNKbGMzTW9JSFZ3WkdGMFpVWjFibU1vSUdrc0lIQnliMmR5WlhOelEyOXVkR1Y0ZEhNc0lIQnliMmR5WlhOelZtRnNkV1Z6SUNrZ0tUdGNibHgwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFF0TFhKbGJXRnBibWx1Wnp0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFbG1JSGRsSjNKbElHNXZkQ0IzWVdsMGFXNW5JRzl1SUdGdWVYUm9hVzVuTENCeVpYTnZiSFpsSUhSb1pTQnRZWE4wWlhKY2JseDBYSFJwWmlBb0lDRnlaVzFoYVc1cGJtY2dLU0I3WEc1Y2RGeDBYSFJrWldabGNuSmxaQzV5WlhOdmJIWmxWMmwwYUNnZ2NtVnpiMngyWlVOdmJuUmxlSFJ6TENCeVpYTnZiSFpsVm1Gc2RXVnpJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlHUmxabVZ5Y21Wa0xuQnliMjFwYzJVb0tUdGNibHgwZlZ4dWZTazdYRzVjYmx4dUx5OGdWR2hsSUdSbFptVnljbVZrSUhWelpXUWdiMjRnUkU5TklISmxZV1I1WEc1MllYSWdjbVZoWkhsTWFYTjBPMXh1WEc1cVVYVmxjbmt1Wm00dWNtVmhaSGtnUFNCbWRXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RDOHZJRUZrWkNCMGFHVWdZMkZzYkdKaFkydGNibHgwYWxGMVpYSjVMbkpsWVdSNUxuQnliMjFwYzJVb0tTNWtiMjVsS0NCbWJpQXBPMXh1WEc1Y2RISmxkSFZ5YmlCMGFHbHpPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkQzh2SUVseklIUm9aU0JFVDAwZ2NtVmhaSGtnZEc4Z1ltVWdkWE5sWkQ4Z1UyVjBJSFJ2SUhSeWRXVWdiMjVqWlNCcGRDQnZZMk4xY25NdVhHNWNkR2x6VW1WaFpIazZJR1poYkhObExGeHVYRzVjZEM4dklFRWdZMjkxYm5SbGNpQjBieUIwY21GamF5Qm9iM2NnYldGdWVTQnBkR1Z0Y3lCMGJ5QjNZV2wwSUdadmNpQmlaV1p2Y21WY2JseDBMeThnZEdobElISmxZV1I1SUdWMlpXNTBJR1pwY21WekxpQlRaV1VnSXpZM09ERmNibHgwY21WaFpIbFhZV2wwT2lBeExGeHVYRzVjZEM4dklFaHZiR1FnS0c5eUlISmxiR1ZoYzJVcElIUm9aU0J5WldGa2VTQmxkbVZ1ZEZ4dVhIUm9iMnhrVW1WaFpIazZJR1oxYm1OMGFXOXVLQ0JvYjJ4a0lDa2dlMXh1WEhSY2RHbG1JQ2dnYUc5c1pDQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNXlaV0ZrZVZkaGFYUXJLenRjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGFsRjFaWEo1TG5KbFlXUjVLQ0IwY25WbElDazdYRzVjZEZ4MGZWeHVYSFI5TEZ4dVhHNWNkQzh2SUVoaGJtUnNaU0IzYUdWdUlIUm9aU0JFVDAwZ2FYTWdjbVZoWkhsY2JseDBjbVZoWkhrNklHWjFibU4wYVc5dUtDQjN
14938ZV2wwSUNrZ2UxeHVYRzVjZEZ4MEx5OGdRV0p2Y25RZ2FXWWdkR2hsY21VZ1lYSmxJSEJsYm1ScGJtY2dhRzlzWkhNZ2IzSWdkMlVuY21VZ1lXeHlaV0ZrZVNCeVpXRmtlVnh1WEhSY2RHbG1JQ2dnZDJGcGRDQTlQVDBnZEhKMVpTQS9JQzB0YWxGMVpYSjVMbkpsWVdSNVYyRnBkQ0E2SUdwUmRXVnllUzVwYzFKbFlXUjVJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkpsYldWdFltVnlJSFJvWVhRZ2RHaGxJRVJQVFNCcGN5QnlaV0ZrZVZ4dVhIUmNkR3BSZFdWeWVTNXBjMUpsWVdSNUlEMGdkSEoxWlR0Y2JseHVYSFJjZEM4dklFbG1JR0VnYm05eWJXRnNJRVJQVFNCU1pXRmtlU0JsZG1WdWRDQm1hWEpsWkN3Z1pHVmpjbVZ0Wlc1MExDQmhibVFnZDJGcGRDQnBaaUJ1WldWa0lHSmxYRzVjZEZ4MGFXWWdLQ0IzWVdsMElDRTlQU0IwY25WbElDWW1JQzB0YWxGMVpYSjVMbkpsWVdSNVYyRnBkQ0ErSURBZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1NXWWdkR2hsY21VZ1lYSmxJR1oxYm1OMGFXOXVjeUJpYjNWdVpDd2dkRzhnWlhobFkzVjBaVnh1WEhSY2RISmxZV1I1VEdsemRDNXlaWE52YkhabFYybDBhQ2dnWkc5amRXMWxiblFzSUZzZ2FsRjFaWEo1SUYwZ0tUdGNibHh1WEhSY2RDOHZJRlJ5YVdkblpYSWdZVzU1SUdKdmRXNWtJSEpsWVdSNUlHVjJaVzUwYzF4dVhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1adUxuUnlhV2RuWlhKSVlXNWtiR1Z5SUNrZ2UxeHVYSFJjZEZ4MGFsRjFaWEo1S0NCa2IyTjFiV1Z1ZENBcExuUnlhV2RuWlhKSVlXNWtiR1Z5S0NCY0luSmxZV1I1WENJZ0tUdGNibHgwWEhSY2RHcFJkV1Z5ZVNnZ1pHOWpkVzFsYm5RZ0tTNXZabVlvSUZ3aWNtVmhaSGxjSWlBcE8xeHVYSFJjZEgxY2JseDBmVnh1ZlNrN1hHNWNiaThxS2x4dUlDb2dWR2hsSUhKbFlXUjVJR1YyWlc1MElHaGhibVJzWlhJZ1lXNWtJSE5sYkdZZ1kyeGxZVzUxY0NCdFpYUm9iMlJjYmlBcUwxeHVablZ1WTNScGIyNGdZMjl0Y0d4bGRHVmtLQ2tnZTF4dVhIUmtiMk4xYldWdWRDNXlaVzF2ZG1WRmRtVnVkRXhwYzNSbGJtVnlLQ0JjSWtSUFRVTnZiblJsYm5STWIyRmtaV1JjSWl3Z1kyOXRjR3hsZEdWa0xDQm1ZV3h6WlNBcE8xeHVYSFIzYVc1a2IzY3VjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWdnWENKc2IyRmtYQ0lzSUdOdmJYQnNaWFJsWkN3Z1ptRnNjMlVnS1R0Y2JseDBhbEYxWlhKNUxuSmxZV1I1S0NrN1hHNTlYRzVjYm1wUmRXVnllUzV5WldGa2VTNXdjbTl0YVhObElEMGdablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwYVdZZ0tDQWhjbVZoWkhsTWFYTjBJQ2tnZTF4dVhHNWNkRngwY21WaFpIbE1hWE4wSUQwZ2FsRjFaWEo1TGtSbFptVnljbVZrS0NrN1hHNWNibHgwWEhRdkx5QkRZWFJqYUNCallYTmxjeUIzYUdWeVpTQWtLR1J2WTNWdFpXNTBLUzV5WldGa2VTZ3BJR2x6SUdOaGJHeGxaQ0JoWm5SbGNpQjBhR1VnWW5KdmQzTmxjaUJsZG1WdWRDQm9ZWE1nWVd4eVpXRmtlU0J2WTJOMWNuSmxaQzVjYmx4MFhIUXZMeUJYWlNCdmJtTmxJSFJ5YVdWa0lIUnZJ
14938SFZ6WlNCeVpXRmtlVk4wWVhSbElGd2lhVzUwWlhKaFkzUnBkbVZjSWlCb1pYSmxMQ0JpZFhRZ2FYUWdZMkYxYzJWa0lHbHpjM1ZsY3lCc2FXdGxJSFJvWlNCdmJtVmNibHgwWEhRdkx5QmthWE5qYjNabGNtVmtJR0o1SUVOb2NtbHpVeUJvWlhKbE9pQm9kSFJ3T2k4dlluVm5jeTVxY1hWbGNua3VZMjl0TDNScFkydGxkQzh4TWpJNE1pTmpiMjF0Wlc1ME9qRTFYRzVjZEZ4MGFXWWdLQ0JrYjJOMWJXVnVkQzV5WldGa2VWTjBZWFJsSUQwOVBTQmNJbU52YlhCc1pYUmxYQ0lnS1NCN1hHNWNkRngwWEhRdkx5QklZVzVrYkdVZ2FYUWdZWE41Ym1Ob2NtOXViM1Z6YkhrZ2RHOGdZV3hzYjNjZ2MyTnlhWEIwY3lCMGFHVWdiM0J3YjNKMGRXNXBkSGtnZEc4Z1pHVnNZWGtnY21WaFpIbGNibHgwWEhSY2RITmxkRlJwYldWdmRYUW9JR3BSZFdWeWVTNXlaV0ZrZVNBcE8xeHVYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseHVYSFJjZEZ4MEx5OGdWWE5sSUhSb1pTQm9ZVzVrZVNCbGRtVnVkQ0JqWVd4c1ltRmphMXh1WEhSY2RGeDBaRzlqZFcxbGJuUXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2dYQ0pFVDAxRGIyNTBaVzUwVEc5aFpHVmtYQ0lzSUdOdmJYQnNaWFJsWkN3Z1ptRnNjMlVnS1R0Y2JseHVYSFJjZEZ4MEx5OGdRU0JtWVd4c1ltRmpheUIwYnlCM2FXNWtiM2N1YjI1c2IyRmtMQ0IwYUdGMElIZHBiR3dnWVd4M1lYbHpJSGR2Y210Y2JseDBYSFJjZEhkcGJtUnZkeTVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLQ0JjSW14dllXUmNJaXdnWTI5dGNHeGxkR1ZrTENCbVlXeHpaU0FwTzF4dVhIUmNkSDFjYmx4MGZWeHVYSFJ5WlhSMWNtNGdjbVZoWkhsTWFYTjBMbkJ5YjIxcGMyVW9JRzlpYWlBcE8xeHVmVHRjYmx4dUx5OGdTMmxqYXlCdlptWWdkR2hsSUVSUFRTQnlaV0ZrZVNCamFHVmpheUJsZG1WdUlHbG1JSFJvWlNCMWMyVnlJR1J2WlhNZ2JtOTBYRzVxVVhWbGNua3VjbVZoWkhrdWNISnZiV2x6WlNncE8xeHVYRzVjYmx4dVhHNHZMeUJOZFd4MGFXWjFibU4wYVc5dVlXd2diV1YwYUc5a0lIUnZJR2RsZENCaGJtUWdjMlYwSUhaaGJIVmxjeUJ2WmlCaElHTnZiR3hsWTNScGIyNWNiaTh2SUZSb1pTQjJZV3gxWlM5eklHTmhiaUJ2Y0hScGIyNWhiR3g1SUdKbElHVjRaV04xZEdWa0lHbG1JR2wwSjNNZ1lTQm1kVzVqZEdsdmJseHVkbUZ5SUdGalkyVnpjeUE5SUdwUmRXVnllUzVoWTJObGMzTWdQU0JtZFc1amRHbHZiaWdnWld4bGJYTXNJR1p1TENCclpYa3NJSFpoYkhWbExDQmphR0ZwYm1GaWJHVXNJR1Z0Y0hSNVIyVjBMQ0J5WVhjZ0tTQjdYRzVjZEhaaGNpQnBJRDBnTUN4Y2JseDBYSFJzWlc0Z1BTQmxiR1Z0Y3k1c1pXNW5kR2dzWEc1Y2RGeDBZblZzYXlBOUlHdGxlU0E5UFNCdWRXeHNPMXh1WEc1Y2RDOHZJRk5sZEhNZ2JXRnVlU0IyWVd4MVpYTmNibHgwYVdZZ0tDQnFVWFZsY25rdWRIbHdaU2dnYTJWNUlDa2dQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFkyaGhhVzVoWW14bElEMGdkSEoxWlR0Y2JseDBYSFJtYjNJZ0tDQnBJR2x1SUd0bGVTQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNWhZMk5sYzNNb0lHVnNaVzF6TENCbWJpd2dhU3dnYTJWNVcybGRMQ0IwY25WbExDQmxiWEIwZVVkbGRDd2djbUYzSUNrN1hHNWNkRngwZlZ4dVhHNWNkQzh2SUZObGRITWdiMjVsSUhaaGJIVmxYRzVjZEgwZ1pXeHpaU0JwWmlBb0lIWmhiSFZsSUNFOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBZMmhoYVc1aFlteGxJRDBnZEhKMVpUdGNibHh1WEhSY2RHbG1JQ2dnSVdwUmRXVnllUzVwYzBaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUNrZ2UxeHVYSFJjZEZ4MGNtRjNJRDBnZEhKMVpUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JR0oxYkdzZ0tTQjdYRzVjZEZ4MFhIUXZMeUJDZFd4cklHOXdaWEpoZEdsdmJuTWdjblZ1SUdGbllXbHVjM1FnZEdobElHVnVkR2x5WlNCelpYUmNibHgwWEhSY2RHbG1JQ2dnY21GM0lDa2dlMXh1WEhSY2RGeDBYSFJtYmk1allXeHNLQ0JsYkdWdGN5d2dkbUZzZFdVZ0tUdGNibHgwWEhSY2RGeDBabTRnUFNCdWRXeHNPMXh1WEc1Y2RGeDBYSFF2THlBdUxpNWxlR05sY0hRZ2QyaGxiaUJsZUdWamRYUnBibWNnWm5WdVkzUnBiMjRnZG1Gc2RXVnpYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmlkV3hySUQwZ1ptNDdYRzVjZEZ4MFhIUmNkR1p1SUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUd0bGVTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR0oxYkdzdVkyRnNiQ2dnYWxGMVpYSjVLQ0JsYkdWdElDa3NJSFpoYkhWbElDazdYRzVjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCbWJpQXBJSHRjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEZ4MFhIUm1iaWdnWld4bGJYTmJhVjBzSUd0bGVTd2djbUYzSUQ4Z2RtRnNkV1VnT2lCMllXeDFaUzVqWVd4c0tDQmxiR1Z0YzF0cFhTd2dhU3dnWm00b0lHVnNaVzF6VzJsZExDQnJaWGtnS1NBcElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHTm9ZV2x1WVdKc1pTQS9YRzVjZEZ4MFpXeGxiWE1nT2x4dVhHNWNkRngwTHk4Z1IyVjBjMXh1WEhSY2RHSjFiR3NnUDF4dVhIUmNkRngwWm00dVkyRnNiQ2dnWld4bGJYTWdLU0E2WEc1Y2RGeDBYSFJzWlc0Z1B5Qm1iaWdnWld4bGJYTmJNRjBzSUd0bGVTQXBJRG9nWlcxd2RIbEhaWFE3WEc1OU8xeHVYRzVjYmk4cUtseHVJQ29nUkdWMFpYSnRhVzVsY3lCM2FHVjBhR1Z5SUdGdUlHOWlhbVZqZENCallXNGdhR0YyWlNCa1lYUmhYRzRnS2k5Y2JtcFJkV1Z5ZVM1aFkyTmxjSFJFWVhSaElEMGdablZ1WTNScGIyNG9JRzkzYm1WeUlDa2dlMXh1WEhRdkx5QkJZMk5sY0hSeklHOXViSGs2WEc1Y2RDOHZJQ0F0SUU1dlpHVmNibHgwTHk4Z0lDQWdMU0JPYjJSbExrVk1SVTFGVGxSZlRrOUVSVnh1WEhRdkx5QWdJQ0F0SUU1dlpHVXVSRTlEVlUxRlRsUmZUazlFUlZ4dVhIUXZMeUFnTFNCUFltcGxZM1JjYmx4MEx5OGdJQ0FnTFNCQmJubGNibHgwTHlvZ2FuTm9hVzUwSUMxWE1ERTRJQ292WEc1Y2RISmxkSFZ5YmlCdmQyNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0J2ZDI1bGNpNXViMlJsVkhsd1pTQTlQVDBnT1NCOGZDQWhLQ0FyYjNkdVpYSXVibTlrWlZSNWNHVWdLVHRjYm4wN1hHNWNibHh1Wm5WdVkzUnBiMjRnUkdGMFlTZ3BJSHRjYmx4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMRnh1WEhRdkx5QlBiR1FnVjJWaVMybDBJR1J2WlhNZ2JtOTBJR2hoZG1VZ1QySnFaV04wTG5CeVpYWmxiblJGZUhSbGJuTnBiMjV6TDJaeVpXVjZaU0J0WlhSb2IyUXNYRzVjZEM4dklISmxkSFZ5YmlCdVpYY2daVzF3ZEhrZ2IySnFaV04wSUdsdWMzUmxZV1FnZDJsMGFDQnVieUJiVzNObGRGMWRJR0ZqWTJWemMyOXlYRzVjZEU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTZ2dkR2hwY3k1all
14938XTm9aU0E5SUh0OUxDQXdMQ0I3WEc1Y2RGeDBaMlYwT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RISmxkSFZ5YmlCN2ZUdGNibHgwWEhSOVhHNWNkSDBwTzF4dVhHNWNkSFJvYVhNdVpYaHdZVzVrYnlBOUlHcFJkV1Z5ZVM1bGVIQmhibVJ2SUNzZ1JHRjBZUzUxYVdRckt6dGNibjFjYmx4dVJHRjBZUzUxYVdRZ1BTQXhPMXh1UkdGMFlTNWhZMk5sY0hSeklEMGdhbEYxWlhKNUxtRmpZMlZ3ZEVSaGRHRTdYRzVjYmtSaGRHRXVjSEp2ZEc5MGVYQmxJRDBnZTF4dVhIUnJaWGs2SUdaMWJtTjBhVzl1S0NCdmQyNWxjaUFwSUh0Y2JseDBYSFF2THlCWFpTQmpZVzRnWVdOalpYQjBJR1JoZEdFZ1ptOXlJRzV2YmkxbGJHVnRaVzUwSUc1dlpHVnpJR2x1SUcxdlpHVnliaUJpY205M2MyVnljeXhjYmx4MFhIUXZMeUJpZFhRZ2QyVWdjMmh2ZFd4a0lHNXZkQ3dnYzJWbElDTTRNek0xTGx4dVhIUmNkQzh2SUVGc2QyRjVjeUJ5WlhSMWNtNGdkR2hsSUd0bGVTQm1iM0lnWVNCbWNtOTZaVzRnYjJKcVpXTjBMbHh1WEhSY2RHbG1JQ2dnSVVSaGRHRXVZV05qWlhCMGN5Z2diM2R1WlhJZ0tTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQXdPMXh1WEhSY2RIMWNibHh1WEhSY2RIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ2UzMHNYRzVjZEZ4MFhIUXZMeUJEYUdWamF5QnBaaUIwYUdVZ2IzZHVaWElnYjJKcVpXTjBJR0ZzY21WaFpIa2dhR0Z6SUdFZ1kyRmphR1VnYTJWNVhHNWNkRngwWEhSMWJteHZZMnNnUFNCdmQyNWxjbHNnZEdocGN5NWxlSEJoYm1SdklGMDdYRzVjYmx4MFhIUXZMeUJKWmlCdWIzUXNJR055WldGMFpTQnZibVZjYmx4MFhIUnBaaUFvSUNGMWJteHZZMnNnS1NCN1hHNWNkRngwWEhSMWJteHZZMnNnUFNCRVlYUmhMblZwWkNzck8xeHVYRzVjZEZ4MFhIUXZMeUJUWldOMWNtVWdhWFFnYVc0Z1lTQnViMjR0Wlc1MWJXVnlZV0pzWlN3Z2JtOXVMWGR5YVhSaFlteGxJSEJ5YjNCbGNuUjVYRzVjZEZ4MFhIUjBjbmtnZTF4dVhIUmNkRngwWEhSa1pYTmpjbWx3ZEc5eVd5QjBhR2x6TG1WNGNHRnVaRzhnWFNBOUlIc2dkbUZzZFdVNklIVnViRzlqYXlCOU8xeHVYSFJjZEZ4MFhIUlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkR2xsY3lnZ2IzZHVaWElzSUdSbGMyTnlhWEIwYjNJZ0tUdGNibHh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nUVc1a2NtOXBaRHcwWEc1Y2RGeDBYSFF2THlCR1lXeHNZbUZqYXlCMGJ5QmhJR3hsYzNNZ2MyVmpkWEpsSUdSbFptbHVhWFJwYjI1Y2JseDBYSFJjZEgwZ1kyRjBZMmdnS0NCbElDa2dlMXh1WEhSY2RGeDBYSFJrWlhOamNtbHdkRzl5V3lCMGFHbHpMbVY0Y0dGdVpHOGdYU0E5SUhWdWJHOWphenRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbVY0ZEdWdVpDZ2diM2R1WlhJc0lHUmxjMk55YVhCMGIzSWdLVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJGYm5OMWNtVWdkR2hsSUdOaFkyaGxJRzlpYW1WamRGeHVYSFJjZEdsbUlDZ2dJWFJvYVhNdVkyRmphR1ZiSUhWdWJHOWpheUJkSUNrZ2UxeHVYSFJjZEZ4MGRHaHBjeTVqWVdOb1pWc2dkVzVzYjJOcklGMGdQU0I3ZlR0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkVzVzYjJOck8xeHVYSFI5TEZ4dVhIUnpaWFE2SUdaMWJtTjBhVzl1S0NCdmQyNWxjaXdnWkdGMFlTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJSEJ5YjNBc1hHNWNkRngwWEhRdkx5QlVhR1Z5WlNCdFlYa2dZbVVnWVc0Z2RXNXNiMk5ySUdGemMybG5ibVZrSUhSdklIUm9hWE1nYm05a1pTeGNibHgwWEhSY2RDOHZJR2xtSUhSb1pYSmxJR2x6SUc1dklHVnVkSEo1SUdadmNpQjBhR2x6SUZ3aWIzZHVaWEpjSWl3Z1kzSmxZWFJsSUc5dVpTQnBibXhwYm1WY2JseDBYSFJjZEM4dklHRnVaQ0J6WlhRZ2RHaGxJSFZ1Ykc5amF5QmhjeUIwYUc5MVoyZ2dZVzRnYjNkdVpYSWdaVzUwY25rZ2FHRmtJR0ZzZDJGNWN5QmxlR2x6ZEdWa1hHNWNkRngwWEhSMWJteHZZMnNnUFNCMGFHbHpMbXRsZVNnZ2IzZHVaWElnS1N4Y2JseDBYSFJjZEdOaFkyaGxJRDBnZEdocGN5NWpZV05vWlZzZ2RXNXNiMk5ySUYwN1hHNWNibHgwWEhRdkx5QklZVzVrYkdVNklGc2diM2R1WlhJc0lHdGxlU3dnZG1Gc2RXVWdYU0JoY21kelhHNWNkRngwYVdZZ0tDQjBlWEJsYjJZZ1pHRjBZU0E5UFQwZ1hDSnpkSEpwYm1kY0lpQXBJSHRjYmx4MFhIUmNkR05oWTJobFd5QmtZWFJoSUYwZ1BTQjJZV3gxWlR0Y2JseHVYSFJjZEM4dklFaGhibVJzWlRvZ1d5QnZkMjVsY2l3Z2V5QndjbTl3WlhKMGFXVnpJSDBnWFNCaGNtZHpYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEM4dklFWnlaWE5vSUdGemMybG5ibTFsYm5SeklHSjVJRzlpYW1WamRDQmhjbVVnYzJoaGJHeHZkeUJqYjNCcFpXUmNibHgwWEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Ulcxd2RIbFBZbXBsWTNRb0lHTmhZMmhsSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRMQ0JrWVhSaElDazdYRzVjZEZ4MFhIUXZMeUJQZEdobGNuZHBjMlVzSUdOdmNIa2dkR2hsSUhCeWIzQmxjblJwWlhNZ2IyNWxMV0o1TFc5dVpTQjBieUIwYUdVZ1kyRmphR1VnYjJKcVpXTjBYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUm1iM0lnS0NCd2NtOXdJR2x1SUdSaGRHRWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyRmphR1ZiSUhCeWIzQWdYU0E5SUdSaGRHRmJJSEJ5YjNBZ1hUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnWTJGamFHVTdYRzVjZEgwc1hHNWNkR2RsZERvZ1puVnVZM1JwYjI0b0lHOTNibVZ5TENCclpYa2dLU0I3WEc1Y2RGeDBMeThnUldsMGFHVnlJR0VnZG1Gc2FXUWdZMkZqYUdVZ2FYTWdabTkxYm1Rc0lHOXlJSGRwYkd3Z1ltVWdZM0psWVhSbFpDNWNibHgwWEhRdkx5Qk9aWGNnWTJGamFHVnpJSGRwYkd3Z1ltVWdZM0psWVhSbFpDQmhibVFnZEdobElIVnViRzlqYXlCeVpYUjFjbTVsWkN4Y2JseDBYSFF2THlCaGJHeHZkMmx1WnlCa2FYSmxZM1FnWVdOalpYTnpJSFJ2SUhSb1pTQnVaWGRzZVNCamNtVmhkR1ZrWEc1Y2RGeDBMeThnWlcxd2RIa2daR0YwWVNCdlltcGxZM1F1SUVFZ2RtRnNhV1FnYjNkdVpYSWdiMkpxWldOMElHMTFjM1FnWW1VZ2NISnZkbWxrWldRdVhHNWNkRngwZG1GeUlHTmhZMmhsSUQwZ2RHaHBjeTVqWVdOb1pWc2dkR2hwY3k1clpYa29JRzkzYm1WeUlDa2dYVHRjYmx4dVhIUmNkSEpsZEhWeWJpQnJaWGtnUFQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MFhIUmpZV05vWlNBNklHTmhZMmhsV3lCclpYa2dYVHRjYmx4MGZTeGNibHgwWVdOalpYTnpPaUJtZFc1amRHbHZiaWdnYjNkdVpYSXNJR3RsZVN3Z2RtRnNkV1VnS1NCN1hHNWNkRngwZG1GeUlITjBiM0psWkR0Y2JseDBYSFF2THlCSmJpQmpZWE5sY3lCM2FHVnlaU0JsYVhSb1pYSTZYRzVjZEZ4MEx5OWNibHgwWEhRdkx5QWdJREV1SUU1dklHdGxlU0IzWVhNZ2MzQmxZMmxtYVdWa1hHNWNkRngwTHk4Z0lDQXlMaUJCSUhOMGNtbHVaeUJ
14938yWlhrZ2QyRnpJSE53WldOcFptbGxaQ3dnWW5WMElHNXZJSFpoYkhWbElIQnliM1pwWkdWa1hHNWNkRngwTHk5Y2JseDBYSFF2THlCVVlXdGxJSFJvWlNCY0luSmxZV1JjSWlCd1lYUm9JR0Z1WkNCaGJHeHZkeUIwYUdVZ1oyVjBJRzFsZEdodlpDQjBieUJrWlhSbGNtMXBibVZjYmx4MFhIUXZMeUIzYUdsamFDQjJZV3gxWlNCMGJ5QnlaWFIxY200c0lISmxjM0JsWTNScGRtVnNlU0JsYVhSb1pYSTZYRzVjZEZ4MEx5OWNibHgwWEhRdkx5QWdJREV1SUZSb1pTQmxiblJwY21VZ1kyRmphR1VnYjJKcVpXTjBYRzVjZEZ4MEx5OGdJQ0F5TGlCVWFHVWdaR0YwWVNCemRHOXlaV1FnWVhRZ2RHaGxJR3RsZVZ4dVhIUmNkQzh2WEc1Y2RGeDBhV1lnS0NCclpYa2dQVDA5SUhWdVpHVm1hVzVsWkNCOGZGeHVYSFJjZEZ4MFhIUW9LR3RsZVNBbUppQjBlWEJsYjJZZ2EyVjVJRDA5UFNCY0luTjBjbWx1WjF3aUtTQW1KaUIyWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrS1NBcElIdGNibHh1WEhSY2RGeDBjM1J2Y21Wa0lEMGdkR2hwY3k1blpYUW9JRzkzYm1WeUxDQnJaWGtnS1R0Y2JseHVYSFJjZEZ4MGNtVjBkWEp1SUhOMGIzSmxaQ0FoUFQwZ2RXNWtaV1pwYm1Wa0lEOWNibHgwWEhSY2RGeDBjM1J2Y21Wa0lEb2dkR2hwY3k1blpYUW9JRzkzYm1WeUxDQnFVWFZsY25rdVkyRnRaV3hEWVhObEtHdGxlU2tnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCYktsMVhhR1Z1SUhSb1pTQnJaWGtnYVhNZ2JtOTBJR0VnYzNSeWFXNW5MQ0J2Y2lCaWIzUm9JR0VnYTJWNUlHRnVaQ0IyWVd4MVpWeHVYSFJjZEM4dklHRnlaU0J6Y0dWamFXWnBaV1FzSUhObGRDQnZjaUJsZUhSbGJtUWdLR1Y0YVhOMGFXNW5JRzlpYW1WamRITXBJSGRwZEdnZ1pXbDBhR1Z5T2x4dVhIUmNkQzh2WEc1Y2RGeDBMeThnSUNBeExpQkJiaUJ2WW1wbFkzUWdiMllnY0hKdmNHVnlkR2xsYzF4dVhIUmNkQzh2SUNBZ01pNGdRU0JyWlhrZ1lXNWtJSFpoYkhWbFhHNWNkRngwTHk5Y2JseDBYSFIwYUdsekxuTmxkQ2dnYjNkdVpYSXNJR3RsZVN3Z2RtRnNkV1VnS1R0Y2JseHVYSFJjZEM4dklGTnBibU5sSUhSb1pTQmNJbk5sZEZ3aUlIQmhkR2dnWTJGdUlHaGhkbVVnZEhkdklIQnZjM05wWW14bElHVnVkSEo1SUhCdmFXNTBjMXh1WEhSY2RDOHZJSEpsZEhWeWJpQjBhR1VnWlhod1pXTjBaV1FnWkdGMFlTQmlZWE5sWkNCdmJpQjNhR2xqYUNCd1lYUm9JSGRoY3lCMFlXdGxibHNxWFZ4dVhIUmNkSEpsZEhWeWJpQjJZV3gxWlNBaFBUMGdkVzVrWldacGJtVmtJRDhnZG1Gc2RXVWdPaUJyWlhrN1hHNWNkSDBzWEc1Y2RISmxiVzkyWlRvZ1puVnVZM1JwYjI0b0lHOTNibVZ5TENCclpYa2dLU0I3WEc1Y2RGeDBkbUZ5SUdrc0lHNWhiV1VzSUdOaGJXVnNMRnh1WEhSY2RGeDBkVzVzYjJOcklEMGdkR2hwY3k1clpYa29JRzkzYm1WeUlDa3NYRzVjZEZ4MFhIUmpZV05vWlNBOUlIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRPMXh1WEc1Y2RGeDBhV1lnS0NCclpYa2dQVDA5SUhWdVpHVm1hVzVsWkNBcElIdGNibHgwWEhSY2RIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRJRDBnZTMwN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZENCaGNuSmhlU0J2Y2lCemNHRmpaU0J6WlhCaGNtRjBaV1FnYzNSeWFXNW5JRzltSUd0bGVYTmNibHgwWEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6UVhKeVlYa29JR3RsZVNBcElDa2dlMXh1WEhSY2RGeDBYSFF2THlCSlppQmNJbTVoYldWY0lpQnBjeUJoYmlCaGNuSmhlU0J2WmlCclpYbHpMaTR1WEc1Y2RGeDBYSFJjZEM4dklGZG9aVzRnWkdGMFlTQnBjeUJwYm1sMGFXRnNiSGtnWTNKbFlYUmxaQ3dnZG1saElDaGNJbXRsZVZ3aUxDQmNJblpoYkZ3aUtTQnphV2R1WVhSMWNtVXNYRzVjZEZ4MFhIUmNkQzh2SUd0bGVYTWdkMmxzYkNCaVpTQmpiMjUyWlhKMFpXUWdkRzhnWTJGdFpXeERZWE5sTGx4dVhIUmNkRngwWEhRdkx5QlRhVzVqWlNCMGFHVnlaU0JwY3lCdWJ5QjNZWGtnZEc4Z2RHVnNiQ0JmYUc5M1h5QmhJR3RsZVNCM1lYTWdZV1JrWldRc0lISmxiVzkyWlZ4dVhIUmNkRngwWEhRdkx5QmliM1JvSUhCc1lXbHVJR3RsZVNCaGJtUWdZMkZ0Wld4RFlYTmxJR3RsZVM0Z0l6RXlOemcyWEc1Y2RGeDBYSFJjZEM4dklGUm9hWE1nZDJsc2JDQnZibXg1SUhCbGJtRnNhWHBsSUhSb1pTQmhjbkpoZVNCaGNtZDFiV1Z1ZENCd1lYUm9MbHh1WEhSY2RGeDBYSFJ1WVcxbElEMGdhMlY1TG1OdmJtTmhkQ2dnYTJWNUxtMWhjQ2dnYWxGMVpYSjVMbU5oYldWc1EyRnpaU0FwSUNrN1hHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSallXMWxiQ0E5SUdwUmRXVnllUzVqWVcxbGJFTmhjMlVvSUd0bGVTQXBPMXh1WEhSY2RGeDBYSFF2THlCVWNua2dkR2hsSUhOMGNtbHVaeUJoY3lCaElHdGxlU0JpWldadmNtVWdZVzU1SUcxaGJtbHdkV3hoZEdsdmJseHVYSFJjZEZ4MFhIUnBaaUFvSUd0bGVTQnBiaUJqWVdOb1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSdVlXMWxJRDBnV3lCclpYa3NJR05oYldWc0lGMDdYRzVjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1NXWWdZU0JyWlhrZ2QybDBhQ0IwYUdVZ2MzQmhZMlZ6SUdWNGFYTjBjeXdnZFhObElHbDBMbHh1WEhSY2RGeDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTd2dZM0psWVhSbElHRnVJR0Z5Y21GNUlHSjVJRzFoZEdOb2FXNW5JRzV2YmkxM2FHbDBaWE53WVdObFhHNWNkRngwWEhSY2RGeDBibUZ0WlNBOUlHTmhiV1ZzTzF4dVhIUmNkRngwWEhSY2RHNWhiV1VnUFNCdVlXMWxJR2x1SUdOaFkyaGxJRDljYmx4MFhIUmNkRngwWEhSY2RGc2dibUZ0WlNCZElEb2dLQ0J1WVcxbExtMWhkR05vS0NCeWJtOTBkMmhwZEdVZ0tTQjhmQ0JiWFNBcE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkR2tnUFNCdVlXMWxMbXhsYm1kMGFEdGNibHgwWEhSY2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhIUmNkRngwWEhSa1pXeGxkR1VnWTJGamFHVmJJRzVoYldWYklHa2dYU0JkTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZTeGNibHgwYUdGelJHRjBZVG9nWm5WdVkzUnBiMjRvSUc5M2JtVnlJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQWhhbEYxWlhKNUxtbHpSVzF3ZEhsUFltcGxZM1FvWEc1Y2RGeDBYSFIwYUdsekxtTmhZMmhsV3lCdmQyNWxjbHNnZEdocGN5NWxlSEJoYm1SdklGMGdYU0I4ZkNCN2ZWeHVYSFJjZENrN1hHNWNkSDBzWEc1Y2RHUnBjMk5oY21RNklHWjFibU4wYVc5dUtDQnZkMjVsY2lBcElIdGNibHgwWEhScFppQW9JRzkzYm1WeVd5QjBhR2x6TG1WNGNHRnVaRzhnWFNBcElIdGNibHgwWEhSY2RHUmxiR1YwWlNCMGFHbHpMbU5oWTJobFd5QnZkMjVsY2xzZ2RHaHBjeTVsZUhCaGJtUnZJRjBnWFR0Y2JseDBYSFI5WEc1Y2RIMWNibjA3WEc1MllYSWdaR0YwWVY5d2NtbDJJRDBnYm1WM0lFUmhkR0VvS1R0Y2JseHVkbUZ5SUdSaGRHRmZkWE5sY2lBOUlHNWxkeUJFWVhSaEtDazdYRzVjYmx4dVhHNHZMMXgwU1cxd2JHVnRaVzUwWVhScGIyNGdVM1Z0YldGeWVWeHVMeTljYmk4dlhIUXhMaUJGYm1admNtTmxJRUZRU1NCemRYSm1ZV0
149385sSUdGdVpDQnpaVzFoYm5ScFl5QmpiMjF3WVhScFltbHNhWFI1SUhkcGRHZ2dNUzQ1TG5nZ1luSmhibU5vWEc0dkwxeDBNaTRnU1cxd2NtOTJaU0IwYUdVZ2JXOWtkV3hsSjNNZ2JXRnBiblJoYVc1aFltbHNhWFI1SUdKNUlISmxaSFZqYVc1bklIUm9aU0J6ZEc5eVlXZGxYRzR2TDF4MFhIUndZWFJvY3lCMGJ5QmhJSE5wYm1kc1pTQnRaV05vWVc1cGMyMHVYRzR2TDF4ME15NGdWWE5sSUhSb1pTQnpZVzFsSUhOcGJtZHNaU0J0WldOb1lXNXBjMjBnZEc4Z2MzVndjRzl5ZENCY0luQnlhWFpoZEdWY0lpQmhibVFnWENKMWMyVnlYQ0lnWkdGMFlTNWNiaTh2WEhRMExpQmZUbVYyWlhKZklHVjRjRzl6WlNCY0luQnlhWFpoZEdWY0lpQmtZWFJoSUhSdklIVnpaWElnWTI5a1pTQW9WRTlFVHpvZ1JISnZjQ0JmWkdGMFlTd2dYM0psYlc5MlpVUmhkR0VwWEc0dkwxeDBOUzRnUVhadmFXUWdaWGh3YjNOcGJtY2dhVzF3YkdWdFpXNTBZWFJwYjI0Z1pHVjBZV2xzY3lCdmJpQjFjMlZ5SUc5aWFtVmpkSE1nS0dWbkxpQmxlSEJoYm1SdklIQnliM0JsY25ScFpYTXBYRzR2TDF4ME5pNGdVSEp2ZG1sa1pTQmhJR05zWldGeUlIQmhkR2dnWm05eUlHbHRjR3hsYldWdWRHRjBhVzl1SUhWd1ozSmhaR1VnZEc4Z1YyVmhhMDFoY0NCcGJpQXlNREUwWEc1Y2JuWmhjaUJ5WW5KaFkyVWdQU0F2WGlnL09seGNlMXRjWEhkY1hGZGRLbHhjZlh4Y1hGdGJYRngzWEZ4WFhTcGNYRjBwSkM4c1hHNWNkSEp0ZFd4MGFVUmhjMmdnUFNBdktGdEJMVnBkS1M5bk8xeHVYRzVtZFc1amRHbHZiaUJrWVhSaFFYUjBjaWdnWld4bGJTd2dhMlY1TENCa1lYUmhJQ2tnZTF4dVhIUjJZWElnYm1GdFpUdGNibHh1WEhRdkx5QkpaaUJ1YjNSb2FXNW5JSGRoY3lCbWIzVnVaQ0JwYm5SbGNtNWhiR3g1TENCMGNua2dkRzhnWm1WMFkyZ2dZVzU1WEc1Y2RDOHZJR1JoZEdFZ1puSnZiU0IwYUdVZ1NGUk5URFVnWkdGMFlTMHFJR0YwZEhKcFluVjBaVnh1WEhScFppQW9JR1JoZEdFZ1BUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDa2dlMXh1WEhSY2RHNWhiV1VnUFNCY0ltUmhkR0V0WENJZ0t5QnJaWGt1Y21Wd2JHRmpaU2dnY20xMWJIUnBSR0Z6YUN3Z1hDSXRKREZjSWlBcExuUnZURzkzWlhKRFlYTmxLQ2s3WEc1Y2RGeDBaR0YwWVNBOUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtDQnVZVzFsSUNrN1hHNWNibHgwWEhScFppQW9JSFI1Y0dWdlppQmtZWFJoSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwZEhKNUlIdGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0VnUFQwOUlGd2lkSEoxWlZ3aUlEOGdkSEoxWlNBNlhHNWNkRngwWEhSY2RGeDBaR0YwWVNBOVBUMGdYQ0ptWVd4elpWd2lJRDhnWm1Gc2MyVWdPbHh1WEhSY2RGeDBYSFJjZEdSaGRHRWdQVDA5SUZ3aWJuVnNiRndpSUQ4Z2JuVnNiQ0E2WEc1Y2RGeDBYSFJjZEZ4MEx5OGdUMjVzZVNCamIyNTJaWEowSUhSdklHRWdiblZ0WW1WeUlHbG1JR2wwSUdSdlpYTnVKM1FnWTJoaGJtZGxJSFJvWlNCemRISnBibWRjYmx4MFhIUmNkRngwWEhRclpHRjBZU0FySUZ3aVhDSWdQVDA5SUdSaGRHRWdQeUFyWkdGMFlTQTZYRzVjZEZ4MFhIUmNkRngwY21KeVlXTmxMblJsYzNRb0lHUmhkR0VnS1NBL0lHcFJkV1Z5ZVM1d1lYSnpaVXBUVDA0b0lHUmhkR0VnS1NBNlhHNWNkRngwWEhSY2RGeDBaR0YwWVR0Y2JseDBYSFJjZEgwZ1kyRjBZMmdvSUdVZ0tTQjdmVnh1WEc1Y2RGeDBYSFF2THlCTllXdGxJSE4xY21VZ2QyVWdjMlYwSUhSb1pTQmtZWFJoSUhOdklHbDBJR2x6YmlkMElHTm9ZVzVuWldRZ2JHRjBaWEpjYmx4MFhIUmNkR1JoZEdGZmRYTmxjaTV6WlhRb
149380lHVnNaVzBzSUd0bGVTd2daR0YwWVNBcE8xeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJrWVhSaElEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RIMWNibHgwZlZ4dVhIUnlaWFIxY200Z1pHRjBZVHRjYm4xY2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkR2hoYzBSaGRHRTZJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCa1lYUmhYM1Z6WlhJdWFHRnpSR0YwWVNnZ1pXeGxiU0FwSUh4OElHUmhkR0ZmY0hKcGRpNW9ZWE5FWVhSaEtDQmxiR1Z0SUNrN1hHNWNkSDBzWEc1Y2JseDBaR0YwWVRvZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUc1aGJXVXNJR1JoZEdFZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdSaGRHRmZkWE5sY2k1aFkyTmxjM01vSUdWc1pXMHNJRzVoYldVc0lHUmhkR0VnS1R0Y2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WRVlYUmhPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlNBcElIdGNibHgwWEhSa1lYUmhYM1Z6WlhJdWNtVnRiM1psS0NCbGJHVnRMQ0J1WVcxbElDazdYRzVjZEgwc1hHNWNibHgwTHk4Z1ZFOUVUem9nVG05M0lIUm9ZWFFnWVd4c0lHTmhiR3h6SUhSdklGOWtZWFJoSUdGdVpDQmZjbVZ0YjNabFJHRjBZU0JvWVhabElHSmxaVzRnY21Wd2JHRmpaV1JjYmx4MEx5OGdkMmwwYUNCa2FYSmxZM1FnWTJGc2JITWdkRzhnWkdGMFlWOXdjbWwySUcxbGRHaHZaSE1zSUhSb1pYTmxJR05oYmlCaVpTQmtaWEJ5WldOaGRHVmtMbHh1WEhSZlpHRjBZVG9nWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lHUmhkR0VnS1NCN1hHNWNkRngwY21WMGRYSnVJR1JoZEdGZmNISnBkaTVoWTJObGMzTW9JR1ZzWlcwc0lHNWhiV1VzSUdSaGRHRWdLVHRjYmx4MGZTeGNibHh1WEhSZmNtVnRiM1psUkdGMFlUb2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VnS1NCN1hHNWNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWld4bGJTd2dibUZ0WlNBcE8xeHVYSFI5WEc1OUtUdGNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RHUmhkR0U2SUdaMWJtTjBhVzl1S0NCclpYa3NJSFpoYkhWbElDa2dlMXh1WEhSY2RIWmhjaUJwTENCdVlXMWxMQ0JrWVhSaExGeHVYSFJjZEZ4MFpXeGxiU0E5SUhSb2FYTmJJREFnWFN4Y2JseDBYSFJjZEdGMGRISnpJRDBnWld4bGJTQW1KaUJsYkdWdExtRjBkSEpwWW5WMFpYTTdYRzVjYmx4MFhIUXZMeUJIWlhSeklHRnNiQ0IyWVd4MVpYTmNibHgwWEhScFppQW9JR3RsZVNBOVBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQjBhR2x6TG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJjZEZ4MFpHRjBZU0E5SUdSaGRHRmZkWE5sY2k1blpYUW9JR1ZzWlcwZ0tUdGNibHh1WEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdKaVlnSVdSaGRHRmZjSEpwZGk1blpYUW9JR1ZzWlcwc0lGd2lhR0Z6UkdGMFlVRjBkSEp6WENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhScElEMGdZWFIwY25NdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSY2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhHNWNkRngwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJURXhLMXh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdWR2hsSUdGMGRISnpJR1ZzWlcxbGJuUnpJR05oYmlCaVpTQnVkV3hzSUNnak1UUTRPVFFwWEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUdGMGRISnpXeUJwSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RHNWhiV1VnUFNCaGRIUnljMXNnYVNCZExtNWhiV1U3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JtRnRaUzVwYm1SbGVFOW1LQ0JjSW1SaGRHRXRYQ0lnS1NBOVBUMGdNQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSdVlXMWxJRDBnYWxGMVpYSjVMbU5oYldWc1EyRnpaU2dnYm1GdFpTNXpiR2xqWlNnMUtTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR1JoZEdGQmRIUnlLQ0JsYkdWdExDQnVZVzFsTENCa1lYUmhXeUJ1WVcxbElGMGdLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSa1lYUmhYM0J5YVhZdWMyVjBLQ0JsYkdWdExDQmNJbWhoYzBSaGRHRkJkSFJ5YzF3aUxDQjBjblZsSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHUmhkR0U3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMGN5QnRkV3gwYVhCc1pTQjJZV3gxWlhOY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCclpYa2dQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2RHaHBjeTVsWVdOb0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFJrWVhSaFgzVnpaWEl1YzJWMEtDQjBhR2x6TENCclpYa2dLVHRjYmx4MFhIUmNkSDBwTzF4dVhIUmNkSDFjYmx4dVhIUmNkSEpsZEhWeWJpQmhZMk5sYzNNb0lIUm9hWE1zSUdaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUh0Y2JseDBYSFJjZEhaaGNpQmtZWFJoTEZ4dVhIUmNkRngwWEhSallXMWxiRXRsZVNBOUlHcFJkV1Z5ZVM1allXMWxiRU5oYzJVb0lHdGxlU0FwTzF4dVhHNWNkRngwWEhRdkx5QlVhR1VnWTJGc2JHbHVaeUJxVVhWbGNua2diMkpxWldOMElDaGxiR1Z0Wlc1MElHMWhkR05vWlhNcElHbHpJRzV2ZENCbGJYQjBlVnh1WEhSY2RGeDBMeThnS0dGdVpDQjBhR1Z5WldadmNtVWdhR0Z6SUdGdUlHVnNaVzFsYm5RZ1lYQndaV0Z5Y3lCaGRDQjBhR2x6V3lBd0lGMHBJR0Z1WkNCMGFHVmNibHgwWEhSY2RDOHZJR0IyWVd4MVpXQWdjR0Z5WVcxbGRHVnlJSGRoY3lCdWIzUWdkVzVrWldacGJtVmtMaUJCYmlCbGJYQjBlU0JxVVhWbGNua2diMkpxWldOMFhHNWNkRngwWEhRdkx5QjNhV3hzSUhKbGMzVnNkQ0JwYmlCZ2RXNWtaV1pwYm1Wa1lDQm1iM0lnWld4bGJTQTlJSFJvYVhOYklEQWdYU0IzYUdsamFDQjNhV3hzWEc1Y2RGeDBYSFF2THlCMGFISnZkeUJoYmlCbGVHTmxjSFJwYjI0Z2FXWWdZVzRnWVhSMFpXMXdkQ0IwYnlCeVpXRmtJR0VnWkdGMFlTQmpZV05vWlNCcGN5QnRZV1JsTGx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUNZbUlIWmhiSFZsSUQwOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBYSFJjZEM4dklFRjBkR1Z0Y0hRZ2RHOGdaMlYwSUdSaGRHRWdabkp2YlNCMGFHVWdZMkZqYUdWY2JseDBYSFJjZEZ4MEx5OGdkMmwwYUNCMGFHVWdhMlY1SUdGekxXbHpYRzVjZEZ4MFhIUmNkR1JoZEdFZ1BTQmtZWFJoWDNWelpYSXVaMlYwS0NCbGJHVnRMQ0JyWlhrZ0tUdGNibHgwWEhSY2RGeDBhV1lnS0NCa1lYUmhJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1JoZEdFN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFF2THlCQmRIUmxiWEIwSUhSdklHZGxkQ0JrWVhSaElHWnliMjBnZEdobElHTmhZMmhsWEc1Y2RGeDBYSFJjZEM4dklIZHBkR2dnZEdobElHdGxlU0JqWVcxbGJHbDZaV1JjYmx4MFhIUmNkRngwWkdGMFlTQTlJR1JoZEdGZmRYTmxjaTVuWlhRb0lHVnNaVzBzSUdOaGJXVnNTMlY1SUNrN1hHNWNkRngwWEhSY2RHbG1JQ2dnWkdGMFlTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQmtZWFJoTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnUVhSMFpXMXdkQ0IwYnlCY0ltUnBjMk52ZG1WeVhDSWdkR2hsSUdSaGRHRWdhVzVjYmx4MFhIUmNkRngwTHk4Z1NGUk5URFVnWTNWemRHOXRJR1JoZEdFdEtpQmhkSFJ5YzF4dVhIUmNkRngwWEhSa1lYUmhJRDBnWkdGMFlVRjBkSElvSUdW
14938c1pXMHNJR05oYldWc1MyVjVMQ0IxYm1SbFptbHVaV1FnS1R0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JrWVhSaElDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHUmhkR0U3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUXZMeUJYWlNCMGNtbGxaQ0J5WldGc2JIa2dhR0Z5WkN3Z1luVjBJSFJvWlNCa1lYUmhJR1J2WlhOdUozUWdaWGhwYzNRdVhHNWNkRngwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlYwSUhSb1pTQmtZWFJoTGk0dVhHNWNkRngwWEhSMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkQzh2SUVacGNuTjBMQ0JoZEhSbGJYQjBJSFJ2SUhOMGIzSmxJR0VnWTI5d2VTQnZjaUJ5WldabGNtVnVZMlVnYjJZZ1lXNTVYRzVjZEZ4MFhIUmNkQzh2SUdSaGRHRWdkR2hoZENCdGFXZG9kQ2QyWlNCaVpXVnVJSE4wYjNKbElIZHBkR2dnWVNCallXMWxiRU5oYzJWa0lHdGxlUzVjYmx4MFhIUmNkRngwZG1GeUlHUmhkR0VnUFNCa1lYUmhYM1Z6WlhJdVoyVjBLQ0IwYUdsekxDQmpZVzFsYkV0bGVTQXBPMXh1WEc1Y2RGeDBYSFJjZEM4dklFWnZjaUJJVkUxTU5TQmtZWFJoTFNvZ1lYUjBjbWxpZFhSbElHbHVkR1Z5YjNBc0lIZGxJR2hoZG1VZ2RHOWNibHgwWEhSY2RGeDBMeThnYzNSdmNtVWdjSEp2Y0dWeWRIa2dibUZ0WlhNZ2QybDBhQ0JrWVhOb1pYTWdhVzRnWVNCallXMWxiRU5oYzJVZ1ptOXliUzVjYmx4MFhIUmNkRngwTHk4Z1ZHaHBjeUJ0YVdkb2RDQnViM1FnWVhCd2JIa2dkRzhnWVd4c0lIQnliM0JsY25ScFpYTXVMaTRxWEc1Y2RGeDBYSFJjZEdSaGRHRmZkWE5sY2k1elpYUW9JSFJvYVhNc0lHTmhiV1ZzUzJWNUxDQjJZV3gxWlNBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUNvdUxpNGdTVzRnZEdobElHTmhjMlVnYjJZZ2NISnZjR1Z5ZEdsbGN5QjBhR0YwSUcxcFoyaDBJRjloWTNSMVlXeHNlVjljYmx4MFhIUmNkRngwTHk4Z2FHRjJaU0JrWVhOb1pYTXNJSGRsSUc1bFpXUWdkRzhnWVd4emJ5QnpkRzl5WlNCaElHTnZjSGtnYjJZZ2RHaGhkRnh1WEhSY2RGeDBYSFF2THlCMWJtTm9ZVzVuWldRZ2NISnZjR1Z5ZEhrdVhHNWNkRngwWEhSY2RHbG1JQ2dnYTJWNUxtbHVaR1Y0VDJZb1hDSXRYQ0lwSUNFOVBTQXRNU0FtSmlCa1lYUmhJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWkdGMFlWOTFjMlZ5TG5ObGRDZ2dkR2hwY3l3Z2EyVjVMQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFI5TENCdWRXeHNMQ0IyWVd4MVpTd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVzSUc1MWJHd3NJSFJ5ZFdVZ0tUdGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVkVZWFJoT2lCbWRXNWpkR2x2YmlnZ2EyVjVJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG1WaFkyZ29ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJrWVhSaFgzVnpaWEl1Y21WdGIzWmxLQ0IwYUdsekxDQnJaWGtnS1R0Y2JseDBYSFI5S1R0Y2JseDBmVnh1ZlNrN1hHNWNibHh1YWxGMVpYSjVMbVY0ZEdWdVpDaDdYRzVjZEhGMVpYVmxPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkSGx3WlN3Z1pHRjBZU0FwSUh0Y2JseDBYSFIyWVhJZ2NYVmxkV1U3WEc1Y2JseDBYSFJwWmlBb0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMGVYQmxJRDBnS0NCMGVYQmxJSHg4SUZ3aVpuaGNJaUFwSUNzZ1hDSnhkV1YxWlZ3aU8xeHVYSFJjZEZ4MGNYVmxkV1VnUFNCa1lYUmhYM0J5YVhZdVoyVjBLQ0JsYkdWdExDQjBlWEJsSUNrN1hHNWNibHgwWEhSY2RDOHZJRk53WldWa0lIVndJR1JsY1hWbGRXVWdZbmtnWjJWMGRHbHVaeUJ2ZFhRZ2NYVnBZMnRzZVNCcFppQjBhR2x6SUdseklHcDFjM1FnWVNCc2IyOXJkWEJjYmx4MFhIUmNkR2xtSUNnZ1pHRjBZU0FwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoY1hWbGRXVWdmSHdnYWxGMVpYSjVMbWx6UVhKeVlYa29JR1JoZEdFZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSeGRXVjFaU0E5SUdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdWc1pXMHNJSFI1Y0dVc0lHcFJkV1Z5ZVM1dFlXdGxRWEp5WVhrb1pHRjBZU2tnS1R0Y2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUnhkV1YxWlM1d2RYTm9LQ0JrWVhSaElDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUmNkSEpsZEhWeWJpQnhkV1YxWlNCOGZDQmJYVHRjYmx4MFhIUjlYRzVjZEgwc1hHNWNibHgwWkdWeGRXVjFaVG9nWm5WdVkzUnBiMjRvSUdWc1pXMHNJSFI1Y0dVZ0tTQjdYRzVjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEc1Y2RGeDBkbUZ5SUhGMVpYVmxJRDBnYWxGMVpYSjVMbkYxWlhWbEtDQmxiR1Z0TENCMGVYQmxJQ2tzWEc1Y2RGeDBYSFJ6ZEdGeWRFeGxibWQwYUNBOUlIRjFaWFZsTG14bGJtZDBhQ3hjYmx4MFhIUmNkR1p1SUQwZ2NYVmxkV1V1YzJocFpuUW9LU3hjYmx4MFhIUmNkR2h2YjJ0eklEMGdhbEYxWlhKNUxsOXhkV1YxWlVodmIydHpLQ0JsYkdWdExDQjBlWEJsSUNrc1hHNWNkRngwWEhSdVpYaDBJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RHcFJkV1Z5ZVM1a1pYRjFaWFZsS0NCbGJHVnRMQ0IwZVhCbElDazdYRzVjZEZ4MFhIUjlPMXh1WEc1Y2RGeDBMeThnU1dZZ2RHaGxJR1o0SUhGMVpYVmxJR2x6SUdSbGNYVmxkV1ZrTENCaGJIZGhlWE1nY21WdGIzWmxJSFJvWlNCd2NtOW5jbVZ6Y3lCelpXNTBhVzVsYkZ4dVhIUmNkR2xtSUNnZ1ptNGdQVDA5SUZ3aWFXNXdjbTluY21WemMxd2lJQ2tnZTF4dVhIUmNkRngwWm00Z1BTQnhkV1YxWlM1emFHbG1kQ2dwTzF4dVhIUmNkRngwYzNSaGNuUk1aVzVuZEdndExUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JR1p1SUNrZ2UxeHVYRzVjZEZ4MFhIUXZMeUJCWkdRZ1lTQndjbTluY21WemN5QnpaVzUwYVc1bGJDQjBieUJ3Y21WMlpXNTBJSFJvWlNCbWVDQnhkV1YxWlNCbWNtOXRJR0psYVc1blhHNWNkRngwWEhRdkx5QmhkWFJ2YldGMGFXTmhiR3g1SUdSbGNYVmxkV1ZrWEc1Y2RGeDBYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2labmhjSWlBcElIdGNibHgwWEhSY2RGeDBjWFZsZFdVdWRXNXphR2xtZENnZ1hDSnBibkJ5YjJkeVpYTnpYQ0lnS1R0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdRMnhsWVhJZ2RYQWdkR2hsSUd4aGMzUWdjWFZsZFdVZ2MzUnZjQ0JtZFc1amRHbHZibHh1WEhSY2RGeDBaR1ZzWlhSbElHaHZiMnR6TG5OMGIzQTdYRzVjZEZ4MFhIUm1iaTVqWVd4c0tDQmxiR1Z0TENCdVpYaDBMQ0JvYjI5cmN5QXBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnSVhOMFlYSjBUR1Z1WjNSb0lDWW1JR2h2YjJ0eklDa2dlMXh1WEhSY2RGeDBhRzl2YTNNdVpXMXdkSGt1Wm1seVpTZ3BPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFF2THlCT2IzUWdjSFZpYkdsaklDMGdaMlZ1WlhKaGRHVWdZU0J4ZFdWMVpVaHZiMnR6SUc5aWFtVmpkQ3dnYjNJZ2NtVjBkWEp1SUhSb1pTQmpkWEp5Wlc1MElHOXVaVnh1WEhSZmNYVmxkV1ZJYjI5cmN6b2dablZ1WTNScGIyNG9JR1ZzWlcwc0lIUjVjR1VnS1NCN1hHNWNkRngwZG1GeUlHdGxlU0E5SUhSNWNHVWdLeUJjSW5GMVpYVmxTRzl2YTNOY0lqdGNibHgwWEhSeVpYUjFjbTRnWkdGMFlWOXdjbWwyTG1kbGRDZ2daV3hsYlN3Z2EyVjVJQ2tnZkh3Z1pHRjBZVjl3Y21sMkxtRmpZMlZ6Y3lnZ1pXeGxiU3dnYTJWNUxDQjdYRzVjZEZ4MFhIUmxiWEIwZVRvZ2FsRjFaWEo1TGtOaGJHeGlZV05yY3loY0ltOXVZMlVnYldWdGIzSjVYQ0lwTG1Ga1pDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWld4bGJTd2dXeUIwZVhCbElDc2dYQ0p4ZFdWMVpWd2lMQ0JyWlhrZ1hTQXBPMXh1WEhSY2RGeDBmU2xjYmx4MFhIUjlLVHRjYmx4MGZWeHVmU2s3WEc1Y2JtcFJkV1Z5ZVM1bWJpNWxlSFJsYm1Rb2UxeHVYSFJ4ZFdWMVpUb2dablZ1WTNScGIyNG9JSFI1Y0dVc0lHUmhkR0VnS1NCN1hHNWNkRngwZG1GeUlITmxkSFJsY2lBOUlESTdYRzVjYmx4MFhIUnBaaUFvSUhSNWNHVnZaaUIwZVhCbElDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFpHRjBZU0E5SUhSNWNHVTdYRzVjZEZ4MFhIUjBlWEJsSUQwZ1hDSm1lRndpTzF4dVhIUmNkRngwYzJWMGRHVnlMUzA3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUR3Z2MyVjBkR1Z5SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzV4ZFdWMVpTZ2dkR2hwYzFzd1hTd2dkSGx3WlNBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJrWVhSaElEMDlQU0IxYm1SbFptbHVaV1FnUDF4dVhIUmNkRngwZEdocGN5QTZYRzVjZEZ4MFhIUjBhR2x6TG1WaFkyZ29ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQnhkV1YxWlNBOUlHcFJkV1Z5ZVM1eGRXVjFaU2dnZEdocGN5d2dkSGx3WlN3Z1pHRjBZU0FwTzF4dVhHNWNkRngwWEhSY2RDOHZJRVZ1YzNWeVpTQmhJR2h2YjJ0eklHWnZjaUIwYUdseklIRjFaWFZsWEc1Y2RGeDBYSFJjZEdwUmRXVnllUzVmY1hWbGRXVkliMjlyY3lnZ2RHaHBjeXdnZEhsd1pTQXBPMXh1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dkSGx3WlNBOVBUMGdYQ0ptZUZ3aUlDWW1JSEYxWlhWbFd6QmRJQ0U5UFNCY0ltbHVjSEp2WjNKbGMzTmNJaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUnFVWFZsY25rdVpHVnhkV1YxWlNnZ2RHaHBjeXdnZEhsd1pTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5S1R0Y2JseDBmU3hjYmx4MFpHVnhkV1YxWlRvZ1puVnVZM1JwYjI0b0lIUjVjR1VnS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEdwUmRXVnllUzVrWlhGMVpYVmxLQ0IwYUdsekxDQjBlWEJsSUNrN1hHNWNkRngwZlNrN1hHNWNkSDBzWEc1Y2RHTnNaV0Z5VVhWbGRXVTZJR1oxYm1OMGFXOXVLQ0IwZVhCbElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbkYxWlhWbEtDQjBlWEJsSUh4OElGd2labmhjSWl3Z1cxMGdLVHRjYmx4MGZTeGNibHgwTHk4Z1IyVjBJR0VnY0hKdmJXbHpaU0J5WlhOdmJIWmxaQ0IzYUdWdUlIRjFaWFZsY3lCdlppQmhJR05sY25SaGFXNGdkSGx3WlZ4dVhIUXZMeUJoY21VZ1pXMXdkR2xsWkNBb1puZ2dhWE1nZEdobElIUjVjR1VnWW5rZ1pHVm1ZWFZzZENsY2JseDBjSEp2YldselpUb2dablZ1WTNScGIyNG9JSFI1Y0dVc0lHOWlhaUFwSUh0Y2JseDBYSFIyWVhJZ2RHMXdMRnh1WEhSY2RGeDBZMjkxYm5RZ1BTQXhMRnh1WEhSY2RGeDBaR1ZtWlhJZ1BTQnFVWFZsY25rdVJHVm1aWEp5WldRb0tTeGNibHgwWEhSY2RHVnNaVzFsYm5SeklEMGdkR2hwY3l4Y2JseDBYSFJjZEdrZ1BTQjBhR2x6TG14bGJtZDBhQ3hjYmx4MFhIUmNkSEpsYzI5c2RtVWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoS0NBdExXTnZkVzUwSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWkdWbVpYSXVjbVZ6YjJ4MlpWZHBkR2dvSUdWc1pXMWxiblJ6TENCYklHVnNaVzFsYm5SeklGMGdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlR0Y2JseHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlIUjVjR1VnSVQwOUlGd2ljM1J5YVc1blhDSWdLU0I3WEc1Y2RGeDBYSFJ2WW1vZ1BTQjBlWEJsTzF4dVhIUmNkRngwZEhsd1pTQTlJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUjlYRzVjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEc1Y2RGeDBkMmhwYkdVZ0tDQnBMUzBnS1NCN1hHNWNkRngwWEhSMGJYQWdQU0JrWVhSaFgzQnlhWFl1WjJWMEtDQmxiR1Z0Wlc1MGMxc2dhU0JkTENCMGVYQmxJQ3NnWENKeGRXVjFaVWh2YjJ0elhDSWdLVHRjYmx4MFhIUmNkR2xtSUNnZ2RHMXdJQ1ltSUhSdGNDNWxiWEIwZVNBcElIdGNibHgwWEhSY2RGeDBZMjkxYm5Rckt6dGNibHgwWEhSY2RGeDBkRzF3TG1WdGNIUjVMbUZrWkNnZ2NtVnpiMngyWlNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBYSFJ5WlhOdmJIWmxLQ2s3WEc1Y2RGeDBjbVYwZFhKdUlHUmxabVZ5TG5CeWIyMXBjMlVvSUc5aWFpQXBPMXh1WEhSOVhHNTlLVHRjYm5aaGNpQndiblZ0SUQwZ0tDOWJLeTFkUHlnL09seGNaQ3BjWEM1OEtWeGNaQ3NvUHpwYlpVVmRXeXN0WFQ5Y1hHUXJmQ2t2S1M1emIzVnlZMlU3WEc1Y2JuWmhjaUJqYzNORmVIQmhibVFnUFNCYklGd2lWRzl3WENJc0lGd2lVbWxuYUhSY0lpd2dYQ0pDYjNSMGIyMWNJaXdnWENKTVpXWjBYQ0lnWFR0Y2JseHVkbUZ5SUdselNHbGtaR1Z1SUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUdWc0lDa2dlMXh1WEhSY2RDOHZJR2x6U0dsa1pHVnVJRzFwWjJoMElHSmxJR05oYkd4bFpDQm1jbTl0SUdwUmRXVnllU05tYVd4MFpYSWdablZ1WTNScGIyNDdYRzVjZEZ4MEx5OGdhVzRnZEdoaGRDQmpZWE5sTENCbGJHVnRaVzUwSUhkcGJHd2dZbVVnYzJWamIyNWtJR0Z5WjNWdFpXNTBYRzVjZEZ4MFpXeGxiU0E5SUdWc0lIeDhJR1ZzWl
14938cwN1hHNWNkRngwY21WMGRYSnVJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrZ1BUMDlJRndpYm05dVpWd2lJSHg4SUNGcVVYVmxjbmt1WTI5dWRHRnBibk1vSUdWc1pXMHViM2R1WlhKRWIyTjFiV1Z1ZEN3Z1pXeGxiU0FwTzF4dVhIUjlPMXh1WEc1MllYSWdjbU5vWldOcllXSnNaVlI1Y0dVZ1BTQW9MMTRvUHpwamFHVmphMkp2ZUh4eVlXUnBieWtrTDJrcE8xeHVYRzVjYmx4dUtHWjFibU4wYVc5dUtDa2dlMXh1WEhSMllYSWdabkpoWjIxbGJuUWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkViMk4xYldWdWRFWnlZV2R0Wlc1MEtDa3NYRzVjZEZ4MFpHbDJJRDBnWm5KaFoyMWxiblF1WVhCd1pXNWtRMmhwYkdRb0lHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSUZ3aVpHbDJYQ0lnS1NBcExGeHVYSFJjZEdsdWNIVjBJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ2dYQ0pwYm5CMWRGd2lJQ2s3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nVTJGbVlYSnBQRDAxTGpGY2JseDBMeThnUTJobFkyc2djM1JoZEdVZ2JHOXpkQ0JwWmlCMGFHVWdibUZ0WlNCcGN5QnpaWFFnS0NNeE1USXhOeWxjYmx4MEx5OGdVM1Z3Y0c5eWREb2dWMmx1Wkc5M2N5QlhaV0lnUVhCd2N5QW9WMWRCS1Z4dVhIUXZMeUJnYm1GdFpXQWdZVzVrSUdCMGVYQmxZQ0J0ZFhOMElIVnpaU0F1YzJWMFFYUjBjbWxpZFhSbElHWnZjaUJYVjBFZ0tDTXhORGt3TVNsY2JseDBhVzV3ZFhRdWMyVjBRWFIwY21saWRYUmxLQ0JjSW5SNWNHVmNJaXdnWENKeVlXUnBiMXdpSUNrN1hHNWNkR2x1Y0hWMExuTmxkRUYwZEhKcFluVjBaU2dnWENKamFHVmphMlZrWENJc0lGd2lZMmhsWTJ0bFpGd2lJQ2s3WEc1Y2RHbHVjSFYwTG5ObGRFRjBkSEpwWW5WMFpTZ2dYQ0p1WVcxbFhDSXNJRndpZEZ3aUlDazdYRzVjYmx4MFpHbDJMbUZ3Y0dWdVpFTm9hV3hrS0NCcGJuQjFkQ0FwTzF4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUZOaFptRnlhVHc5TlM0eExDQkJibVJ5YjJsa1BEUXVNbHh1WEhRdkx5QlBiR1JsY2lCWFpXSkxhWFFnWkc5bGMyNG5kQ0JqYkc5dVpTQmphR1ZqYTJWa0lITjBZWFJsSUdOdmNuSmxZM1JzZVNCcGJpQm1jbUZuYldWdWRITmNibHgwYzNWd2NHOXlkQzVqYUdWamEwTnNiMjVsSUQwZ1pHbDJMbU5zYjI1bFRtOWtaU2dnZEhKMVpTQXBMbU5zYjI1bFRtOWtaU2dnZEhKMVpTQXBMbXhoYzNSRGFHbHNaQzVqYUdWamEyVmtPMXh1WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRWxGUEQweE1TdGNibHgwTHk4Z1RXRnJaU0J6ZFhKbElIUmxlSFJoY21WaElDaGhibVFnWTJobFkydGliM2dwSUdSbFptRjFiSFJXWVd4MVpTQnBjeUJ3Y205d1pYSnNlU0JqYkc5dVpXUmNibHgwWkdsMkxtbHVibVZ5U0ZSTlRDQTlJRndpUEhSbGVIUmhjbVZoUG5nOEwzUmxlSFJoY21Wa
14938FBsd2lPMXh1WEhSemRYQndiM0owTG01dlEyeHZibVZEYUdWamEyVmtJRDBnSVNGa2FYWXVZMnh2Ym1WT2IyUmxLQ0IwY25WbElDa3ViR0Z6ZEVOb2FXeGtMbVJsWm1GMWJIUldZV3gxWlR0Y2JuMHBLQ2s3WEc1MllYSWdjM1J5ZFc1a1pXWnBibVZrSUQwZ2RIbHdaVzltSUhWdVpHVm1hVzVsWkR0Y2JseHVYRzVjYm5OMWNIQnZjblF1Wm05amRYTnBia0oxWW1Kc1pYTWdQU0JjSW05dVptOWpkWE5wYmx3aUlHbHVJSGRwYm1SdmR6dGNibHh1WEc1MllYSmNibHgwY210bGVVVjJaVzUwSUQwZ0wxNXJaWGt2TEZ4dVhIUnliVzkxYzJWRmRtVnVkQ0E5SUM5ZUtEODZiVzkxYzJWOGNHOXBiblJsY254amIyNTBaWGgwYldWdWRTbDhZMnhwWTJzdkxGeHVYSFJ5Wm05amRYTk5iM0p3YUNBOUlDOWVLRDg2Wm05amRYTnBibVp2WTNWemZHWnZZM1Z6YjNWMFlteDFjaWtrTHl4Y2JseDBjblI1Y0dWdVlXMWxjM0JoWTJVZ1BTQXZYaWhiWGk1ZEtpa29QenBjWEM0b0xpc3BmQ2trTHp0Y2JseHVablZ1WTNScGIyNGdjbVYwZFhKdVZISjFaU2dwSUh0Y2JseDBjbVYwZFhKdUlIUnlkV1U3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsZEhWeWJrWmhiSE5sS0NrZ2UxeHVYSFJ5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOaFptVkJZM1JwZG1WRmJHVnRaVzUwS0NrZ2UxeHVYSFIwY25rZ2UxeHVYSFJjZEhKbGRIVnliaUJrYjJOMWJXVnVkQzVoWTNScGRtVkZiR1Z0Wlc1ME8xeHVYSFI5SUdOaGRHTm9JQ2dnWlhKeUlDa2dleUI5WEc1OVhHNWNiaThxWEc0Z0tpQklaV3h3WlhJZ1puVnVZM1JwYjI1eklHWnZjaUJ0WVc1aFoybHVaeUJsZG1WdWRITWdMUzBnYm05MElIQmhjblFnYjJZZ2RHaGxJSEIxWW14cFl5QnBiblJsY21aaFkyVXVYRzRnS2lCUWNtOXdjeUIwYnlCRVpXRnVJRVZrZDJGeVpITW5JR0ZrWkVWMlpXNTBJR3hwWW5KaGNua2dabTl5SUcxaGJua2diMllnZEdobElHbGtaV0Z6TGx4dUlDb3ZYRzVxVVhWbGNua3VaWFpsYm5RZ1BTQjdYRzVjYmx4MFoyeHZZbUZzT2lCN2ZTeGNibHh1WEhSaFpHUTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQjBlWEJsY3l3Z2FHRnVaR3hsY2l3Z1pHRjBZU3dnYzJWc1pXTjBiM0lnS1NCN1hHNWNibHgwWEhSMllYSWdhR0Z1Wkd4bFQySnFTVzRzSUdWMlpXNTBTR0Z1Wkd4bExDQjBiWEFzWEc1Y2RGeDBYSFJsZG1WdWRITXNJSFFzSUdoaGJtUnNaVTlpYWl4Y2JseDBYSFJjZEhOd1pXTnBZV3dzSUdoaGJtUnNaWEp6TENCMGVYQmxMQ0J1WVcxbGMzQmhZMlZ6TENCdmNtbG5WSGx3WlN4Y2JseDBYSFJjZEdWc1pXMUVZWFJoSUQwZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnWld4bGJTQXBPMXh1WEc1Y2RGeDBMeThnUkc5dUozUWdZWFIwWVdOb0lHVjJaVzUwY3lCMGJ5QnViMFJoZEdFZ2IzSWdkR1Y0ZEM5amIyMXRaVzUwSUc1dlpHVnpJQ2hpZFhRZ1lXeHNiM2NnY0d4aGFXNGdiMkpxWldOMGN5bGNibHgwWEhScFppQW9JQ0ZsYkdWdFJHRjBZU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEWVd4c1pYSWdZMkZ1SUhCaGMzTWdhVzRnWVc0Z2IySnFaV04wSUc5bUlHTjFjM1J2YlNCa1lYUmhJR2x1SUd4cFpYVWdiMllnZEdobElHaGhibVJzWlhKY2JseDBYSFJwWmlBb0lHaGhibVJzWlhJdWFHRnVaR3hsY2lBcElIdGNibHgwWEhSY2RHaGhibVJzWlU5aWFrbHVJRDBnYUdGdVpHeGxjanRjYmx4MFhIUmNkR2hoYm1Sc1pYSWdQU0JvWVc1a2JHVlBZbXBKYmk1b1lXNWtiR1Z5TzF4dVhIUmNkRngwYzJWc1pXTjBiM0lnUFNCb1lXNWtiR1ZQWW1wSmJpNXpaV3hsWTNSdmNqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5Qk5ZV3RsSUhOMWNtVWdkR2hoZENCMGFHVWdhR0Z1Wkd4bGNpQm9ZWE1nWVNCMWJtbHhkV1VnU1VRc0lIVnpaV1FnZEc4Z1ptbHVaQzl5WlcxdmRtVWdhWFFnYkdGMFpYSmNibHgwWEhScFppQW9JQ0ZvWVc1a2JHVnlMbWQxYVdRZ0tTQjdYRzVjZEZ4MFhIUm9ZVzVrYkdWeUxtZDFhV1FnUFNCcVVYVmxjbmt1WjNWcFpDc3JPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRWx1YVhRZ2RHaGxJR1ZzWlcxbGJuUW5jeUJsZG1WdWRDQnpkSEoxWTNSMWNtVWdZVzVrSUcxaGFXNGdhR0Z1Wkd4bGNpd2dhV1lnZEdocGN5QnBjeUIwYUdVZ1ptbHljM1JjYmx4MFhIUnBaaUFvSUNFb1pYWmxiblJ6SUQwZ1pXeGxiVVJoZEdFdVpYWmxiblJ6S1NBcElIdGNibHgwWEhSY2RHVjJaVzUwY3lBOUlHVnNaVzFFWVhSaExtVjJaVzUwY3lBOUlIdDlPMXh1WEhSY2RIMWNibHgwWEhScFppQW9JQ0VvWlhabGJuUklZVzVrYkdVZ1BTQmxiR1Z0UkdGMFlTNW9ZVzVrYkdVcElDa2dlMXh1WEhSY2RGeDBaWFpsYm5SSVlXNWtiR1VnUFNCbGJHVnRSR0YwWVM1b1lXNWtiR1VnUFNCbWRXNWpkR2x2YmlnZ1pTQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1JHbHpZMkZ5WkNCMGFHVWdjMlZqYjI1a0lHVjJaVzUwSUc5bUlHRWdhbEYxWlhKNUxtVjJaVzUwTG5SeWFXZG5aWElvS1NCaGJtUmNibHgwWEhSY2RGeDBMeThnZDJobGJpQmhiaUJsZG1WdWRDQnBjeUJqWVd4c1pXUWdZV1owWlhJZ1lTQndZV2RsSUdoaGN5QjFibXh2WVdSbFpGeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2RIbHdaVzltSUdwUmRXVnllU0FoUFQwZ2MzUnlkVzVrWldacGJtVmtJQ1ltSUdwUmRXVnllUzVsZG1WdWRDNTBjbWxuWjJWeVpXUWdJVDA5SUdVdWRIbHdaU0EvWEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbVJwYzNCaGRHTm9MbUZ3Y0d4NUtDQmxiR1Z0TENCaGNtZDFiV1Z1ZEhNZ0tTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnU0dGdVpHeGxJRzExYkhScGNHeGxJR1YyWlc1MGN5QnpaWEJoY21GMFpXUWdZbmtnWVNCemNHRmpaVnh1WEhSY2RIUjVjR1Z6SUQwZ0tDQjBlWEJsY3lCOGZDQmNJbHdpSUNrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEhSY2RIUWdQU0IwZVhCbGN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0IwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiWEFnUFNCeWRIbHdaVzVoYldWemNHRmpaUzVsZUdWaktDQjBlWEJsYzF0MFhTQXBJSHg4SUZ0ZE8xeHVYSFJjZEZ4MGRIbHdaU0E5SUc5eWFXZFVlWEJsSUQwZ2RHMXdXekZkTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3lBOUlDZ2dkRzF3V3pKZElIeDhJRndpWENJZ0tTNXpjR3hwZENnZ1hDSXVYQ0lnS1M1emIzSjBLQ2s3WEc1Y2JseDBYSFJjZEM4dklGUm9aWEpsSUNwdGRYTjBLaUJpWlNCaElIUjVjR1VzSUc1dklHRjBkR0ZqYUdsdVp5QnVZVzFsYzNCaFkyVXRiMjVzZVNCb1lXNWtiR1Z5YzF4dVhIUmNkRngwYVdZZ0tDQWhkSGx3WlNBcElIdGNibHgwWEhSY2RGeDBZMjl1ZEdsdWRXVTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVsbUlHVjJaVzUwSUdOb1lXNW5aWE1nYVhSeklIUjVjR1VzSUhWelpTQjBhR1VnYzNCbFkybGhiQ0JsZG1WdWRDQm9ZVzVrYkdWeWN5Qm1iM0lnZEdobElHTm9ZVzVuWldRZ2RIbHdaVn
14938h1WEhSY2RGeDBjM0JsWTJsaGJDQTlJR3BSZFdWeWVTNWxkbVZ1ZEM1emNHVmphV0ZzV3lCMGVYQmxJRjBnZkh3Z2UzMDdYRzVjYmx4MFhIUmNkQzh2SUVsbUlITmxiR1ZqZEc5eUlHUmxabWx1WldRc0lHUmxkR1Z5YldsdVpTQnpjR1ZqYVdGc0lHVjJaVzUwSUdGd2FTQjBlWEJsTENCdmRHaGxjbmRwYzJVZ1oybDJaVzRnZEhsd1pWeHVYSFJjZEZ4MGRIbHdaU0E5SUNnZ2MyVnNaV04wYjNJZ1B5QnpjR1ZqYVdGc0xtUmxiR1ZuWVhSbFZIbHdaU0E2SUhOd1pXTnBZV3d1WW1sdVpGUjVjR1VnS1NCOGZDQjBlWEJsTzF4dVhHNWNkRngwWEhRdkx5QlZjR1JoZEdVZ2MzQmxZMmxoYkNCaVlYTmxaQ0J2YmlCdVpYZHNlU0J5WlhObGRDQjBlWEJsWEc1Y2RGeDBYSFJ6Y0dWamFXRnNJRDBnYWxGMVpYSjVMbVYyWlc1MExuTndaV05wWVd4YklIUjVjR1VnWFNCOGZDQjdmVHRjYmx4dVhIUmNkRngwTHk4Z2FHRnVaR3hsVDJKcUlHbHpJSEJoYzNObFpDQjBieUJoYkd3Z1pYWmxiblFnYUdGdVpHeGxjbk5jYmx4MFhIUmNkR2hoYm1Sc1pVOWlhaUE5SUdwUmRXVnllUzVsZUhSbGJtUW9lMXh1WEhSY2RGeDBYSFIwZVhCbE9pQjBlWEJsTEZ4dVhIUmNkRngwWEhSdmNtbG5WSGx3WlRvZ2IzSnBaMVI1Y0dVc1hHNWNkRngwWEhSY2RHUmhkR0U2SUdSaGRHRXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pYSTZJR2hoYm1Sc1pYSXNYRzVjZEZ4MFhIUmNkR2QxYVdRNklHaGhibVJzWlhJdVozVnBaQ3hjYmx4MFhIUmNkRngwYzJWc1pXTjBiM0k2SUhObGJHVmpkRzl5TEZ4dVhIUmNkRngwWEhSdVpXVmtjME52Ym5SbGVIUTZJSE5sYkdWamRHOXlJQ1ltSUdwUmRXVnllUzVsZUhCeUxtMWhkR05vTG01bFpXUnpRMjl1ZEdWNGRDNTBaWE4wS0NCelpXeGxZM1J2Y2lBcExGeHVYSFJjZEZ4MFhIUnVZVzFsYzNCaFkyVTZJRzVoYldWemNHRmpaWE11YW05cGJpaGNJaTVjSWlsY2JseDBYSFJjZEgwc0lHaGhibVJzWlU5aWFrbHVJQ2s3WEc1Y2JseDBYSFJjZEM4dklFbHVhWFFnZEdobElHVjJaVzUwSUdoaGJtUnNaWElnY1hWbGRXVWdhV1lnZDJVbmNtVWdkR2hsSUdacGNuTjBYRzVjZEZ4MFhIUnBaaUFvSUNFb2FHRnVaR3hsY25NZ1BTQmxkbVZ1ZEhOYklIUjVjR1VnWFNrZ0tTQjdYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pYSnpJRDBnWlhabGJuUnpXeUIwZVhCbElGMGdQU0JiWFR0Y2JseDBYSFJjZEZ4MGFHRnVaR3hsY25NdVpHVnNaV2RoZEdWRGIzVnVkQ0E5SURBN1hHNWNibHgwWEhSY2RGeDBMeThnVDI1c2VTQjFjMlVnWVdSa1JYWmxiblJNYVhOMFpXNWxjaUJwWmlCMGFHVWdjM0JsWTJsaGJDQmxkbVZ1ZEhNZ2FHRnVaR3hsY2lCeVpYUjFjbTV6SUdaaGJITmxYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lYTndaV05wWVd3dWMyVjBkWEFnZkh3Z2MzQmxZMmxoYkM1elpYUjFjQzVqWVd4c0tDQmxiR1Z0TENCa1lYUmhMQ0J1WVcxbGMzQmhZMlZ6TENCbGRtVnVkRWhoYm1Sc1pTQXBJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnBaaUFvSUdWc1pXMHVZV1JrUlhabGJuUk1hWE4wWlc1bGNpQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHVnNaVzB1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdnZEhsd1pTd2daWFpsYm5SSVlXNWtiR1VzSUdaaGJITmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkR2xtSUNnZ2MzQmxZMmxoYkM1aFpHUWdLU0I3WEc1Y2RGeDBYSFJjZEhOd1pXTnBZV3d1WVdSa0xtTmhiR3dvSUdWc1pXMHNJR2hoYm1Sc1pVOWlhaUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnSVdoaGJtUnNaVTlpYWk1b1lXNWtiR1Z5TG1kMWFXUWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGFHRnVaR3hsVDJKcUxtaGhibVJzWlhJdVozVnBaQ0E5SUdoaGJtUnNaWEl1WjNWcFpEdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCQlpHUWdkRzhnZEdobElHVnNaVzFsYm5RbmN5Qm9ZVzVrYkdWeUlHeHBjM1FzSUdSbGJHVm5ZWFJsY3lCcGJpQm1jbTl1ZEZ4dVhIUmNkRngwYVdZZ0tDQnpaV3hsWTNSdmNpQXBJSHRjYmx4MFhIUmNkRngwYUdGdVpHeGxjbk11YzNCc2FXTmxLQ0JvWVc1a2JHVnljeTVrWld4bFoyRjBaVU52ZFc1MEt5c3NJREFzSUdoaGJtUnNaVTlpYWlBcE8xeHVYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MGFHRnVaR3hsY25NdWNIVnphQ2dnYUdGdVpHeGxUMkpxSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRXRsWlhBZ2RISmhZMnNnYjJZZ2QyaHBZMmdnWlhabGJuUnpJR2hoZG1VZ1pYWmxjaUJpWldWdUlIVnpaV1FzSUdadmNpQmxkbVZ1ZENCdmNIUnBiV2w2WVhScGIyNWNibHgwWEhSY2RHcFJkV1Z5ZVM1bGRtVnVkQzVuYkc5aVlXeGJJSFI1Y0dVZ1hTQTlJSFJ5ZFdVN1hHNWNkRngwZlZ4dVhHNWNkSDBzWEc1Y2JseDBMeThnUkdWMFlXTm9JR0Z1SUdWMlpXNTBJRzl5SUhObGRDQnZaaUJsZG1WdWRITWdabkp2YlNCaGJpQmxiR1Z0Wlc1MFhHNWNkSEpsYlc5MlpUb2dablZ1WTNScGIyNG9JR1ZzWlcwc0lIUjVjR1Z6TENCb1lXNWtiR1Z5TENCelpXeGxZM1J2Y2l3Z2JXRndjR1ZrVkhsd1pYTWdLU0I3WEc1Y2JseDBYSFIyWVhJZ2Fpd2diM0pwWjBOdmRXNTBMQ0IwYlhBc1hHNWNkRngwWEhSbGRtVnVkSE1zSUhRc0lHaGhibVJzWlU5aWFpeGNibHgwWEhSY2RITndaV05wWVd3c0lHaGhibVJzWlhKekxDQjBlWEJsTENCdVlXMWxjM0JoWTJWekxDQnZjbWxuVkhsd1pTeGNibHgwWEhSY2RHVnNaVzFFWVhSaElEMGdaR0YwWVY5d2NtbDJMbWhoYzBSaGRHRW9JR1ZzWlcwZ0tTQW1KaUJrWVhSaFgzQnlhWFl1WjJWMEtDQmxiR1Z0SUNrN1hHNWNibHgwWEhScFppQW9JQ0ZsYkdWdFJHRjBZU0I4ZkNBaEtHVjJaVzUwY3lBOUlHVnNaVzFFWVhSaExtVjJaVzUwY3lrZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1QyNWpaU0JtYjNJZ1pXRmphQ0IwZVhCbExtNWhiV1Z6Y0dGalpTQnBiaUIwZVhCbGN6c2dkSGx3WlNCdFlYa2dZbVVnYjIxcGRIUmxaRnh1WEhSY2RIUjVjR1Z6SUQwZ0tDQjBlWEJsY3lCOGZDQmNJbHdpSUNrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEhSY2RIUWdQU0IwZVhCbGN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0IwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiWEFnUFNCeWRIbHdaVzVoYldWemNHRmpaUzVsZUdWaktDQjBlWEJsYzF0MFhTQXBJSHg4SUZ0ZE8xeHVYSFJjZEZ4MGRIbHdaU0E5SUc5eWFXZFVlWEJsSUQwZ2RHMXdXekZkTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3lBOUlDZ2dkRzF3V3pKZElIeDhJRndpWENJZ0tTNXpjR3hwZENnZ1hDSXVYQ0lnS1M1emIzSjBLQ2s3WEc1Y2JseDBYSFJjZEM4dklGVnVZbWx1WkNCaGJHd2daWFpsYm5SeklDaHZiaUIwYUdseklHNWhiV1Z6Y0dGalpTd2dhV1lnY0hKdmRtbGtaV1FwSUdadmNpQjBhR1VnWld4bGJXVnVkRnh1WEhSY2RGeDBhV1lnS0NBaGRIbHdaU0FwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnZEhsd1pTQnBiaUJsZG1WdWRITWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbkpsYlc5MlpTZ2daV3hsYlN3Z2RIbHdaU0FySUhSNWNHVnpXeUIwSUYwc0lHaGhibVJzWlhJc0lITmxiR1ZqZEc5eUxDQjBjblZsSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBZMjl1ZEdsdWRXVTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkZzZ2RIbHdaU0JkSUh4OElIdDlPMXh1WEhSY2RGeDBkSGx3WlNBOUlDZ2djMlZzWldOMGIzSWdQeUJ6Y0dWamFXRnNMbVJsYkdWbllYUmxWSGx3WlNBNklITndaV05wWVd3dVltbHVaRlI1Y0dVZ0tTQjhmQ0IwZVhCbE8xeHVYSFJjZEZ4MGFHRnVaR3hsY25NZ1BTQmxkbVZ1ZEhOYklIUjVjR1VnWFNCOGZDQmJYVHRjYmx4MFhIUmNkSFJ0Y0NBOUlIUnRjRnN5WFNBbUppQnVaWGNnVW1WblJYaHdLQ0JjSWloZWZGeGNYRnd1S1Z3aUlDc2dibUZ0WlhOd1lXTmxjeTVxYjJsdUtGd2lYRnhjWEM0b1B6b3VLbHhjWEZ3dWZDbGNJaWtnS3lCY0lpaGNYRnhjTG53a0tWd2lJQ2s3WEc1Y2JseDBYSFJjZEM4dklGSmxiVzkyWlNCdFlYUmphR2x1WnlCbGRtVnVkSE5jYmx4MFhIUmNkRzl5YVdkRGIzVnVkQ0E5SUdvZ1BTQm9ZVzVrYkdWeWN5NXNaVzVuZEdnN1hHNWNkRngwWEhSM2FHbHNaU0FvSUdvdExTQXBJSHRjYmx4MFhIUmNkRngwYUdGdVpHeGxUMkpxSUQwZ2FHRnVaR3hsY25OYklHb2dYVHRjYmx4dVhIUmNkRngwWEhScFppQW9JQ2dnYldGd2NHVmtWSGx3WlhNZ2ZId2diM0pwWjFSNWNHVWdQVDA5SUdoaGJt
14938UnNaVTlpYWk1dmNtbG5WSGx3WlNBcElDWW1YRzVjZEZ4MFhIUmNkRngwS0NBaGFHRnVaR3hsY2lCOGZDQm9ZVzVrYkdWeUxtZDFhV1FnUFQwOUlHaGhibVJzWlU5aWFpNW5kV2xrSUNrZ0ppWmNibHgwWEhSY2RGeDBYSFFvSUNGMGJYQWdmSHdnZEcxd0xuUmxjM1FvSUdoaGJtUnNaVTlpYWk1dVlXMWxjM0JoWTJVZ0tTQXBJQ1ltWEc1Y2RGeDBYSFJjZEZ4MEtDQWhjMlZzWldOMGIzSWdmSHdnYzJWc1pXTjBiM0lnUFQwOUlHaGhibVJzWlU5aWFpNXpaV3hsWTNSdmNpQjhmQ0J6Wld4bFkzUnZjaUE5UFQwZ1hDSXFLbHdpSUNZbUlHaGhibVJzWlU5aWFpNXpaV3hsWTNSdmNpQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RHaGhibVJzWlhKekxuTndiR2xqWlNnZ2Fpd2dNU0FwTzF4dVhHNWNkRngwWEhSY2RGeDBhV1lnS0NCb1lXNWtiR1ZQWW1vdWMyVnNaV04wYjNJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSb1lXNWtiR1Z5Y3k1a1pXeGxaMkYwWlVOdmRXNTBMUzA3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2MzQmxZMmxoYkM1eVpXMXZkbVVnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ6Y0dWamFXRnNMbkpsYlc5MlpTNWpZV3hzS0NCbGJHVnRMQ0JvWVc1a2JHVlBZbW9nS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1VtVnRiM1psSUdkbGJtVnlhV01nWlhabGJuUWdhR0Z1Wkd4bGNpQnBaaUIzWlNCeVpXMXZkbVZrSUhOdmJXVjBhR2x1WnlCaGJtUWdibThnYlc5eVpTQm9ZVzVrYkdWeWN5QmxlR2x6ZEZ4dVhIUmNkRngwTHk4Z0tHRjJiMmxrY3lCd2IzUmxiblJwWVd3Z1ptOXlJR1Z1Wkd4bGMzTWdjbVZqZFhKemFXOXVJR1IxY21sdVp5QnlaVzF2ZG1Gc0lHOW1JSE53WldOcFlXd2daWFpsYm5RZ2FHRnVaR3hsY25NcFhHNWNkRngwWEhScFppQW9JRzl5YVdkRGIzVnVkQ0FtSmlBaGFHRnVaR3hsY25NdWJHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUNGemNHVmphV0ZzTG5SbFlYSmtiM2R1SUh4OElITndaV05wWVd3dWRHVmhjbVJ2ZDI0dVkyRnNiQ2dnWld4bGJTd2dibUZ0WlhOd1lXTmxjeXdnWld4bGJVUmhkR0V1YUdGdVpHeGxJQ2tnUFQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXlaVzF2ZG1WRmRtVnVkQ2dnWld4bGJTd2dkSGx3WlN3Z1pXeGxiVVJoZEdFdWFHRnVaR3hsSUNrN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFJrWld4bGRHVWdaWFpsYm5Seld5QjBlWEJsSUYwN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1VtVnRiM1psSUhSb1pTQmxlSEJoYm1SdklHbG1JR2wwSjNNZ2JtOGdiRzl1WjJWeUlIVnpaV1JjYmx4MFhIUnBaaUFvSUdwUmRXVnllUzVwYzBWdGNIUjVUMkpxWldOMEtDQmxkbVZ1ZEhNZ0tTQXBJSHRjYmx4MFhIUmNkR1JsYkdWMFpTQmxiR1Z0UkdGMFlTNW9ZVzVrYkdVN1hHNWNkRngwWEhSa1lYUmhYM0J5YVhZdWNtVnRiM1psS0NCbGJHVnRMQ0JjSW1WMlpXNTBjMXdpSUNrN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RIUnlhV2RuWlhJNklHWjFibU4wYVc5dUtDQmxkbVZ1ZEN3Z1pHRjBZU3dnWld4bGJTd2diMjVzZVVoaGJtUnNaWEp6SUNrZ2UxeHVYRzVjZEZ4MGRtRnlJR2tzSUdOMWNpd2dkRzF3TENCaWRXSmliR1ZVZVhCbExDQnZiblI1Y0dVc0lHaGhibVJzWlN3Z2MzQmxZMmxoYkN4Y2JseDBYSFJjZEdWMlpXNTBVR0YwYUNBOUlGc2daV3hsYlNCOGZDQmtiMk4xYldWdWRDQmRMRnh1WEhSY2RGeDBkSGx3WlNBOUlHaGhjMDkzYmk1allXeHNLQ0JsZG1WdWRDd2dYQ0owZVhCbFhDSWdLU0EvSUdWMlpXNTBMblI1Y0dVZ09pQmxkbVZ1ZEN4Y2JseDBYSFJjZEc1aGJXVnpjR0ZqWlhNZ1BTQm9ZWE5QZDI0dVkyRnNiQ2dnWlhabGJuUXNJRndpYm1GdFpYTndZV05sWENJZ0tTQS9JR1YyWlc1MExtNWhiV1Z6Y0dGalpTNXpjR3hwZENoY0lpNWNJaWtnT2lCYlhUdGNibHh1WEhSY2RHTjFjaUE5SUhSdGNDQTlJR1ZzWlcwZ1BTQmxiR1Z0SUh4OElHUnZZM1Z0Wlc1ME8xeHVYRzVjZEZ4MEx5OGdSRzl1SjNRZ1pHOGdaWFpsYm5SeklHOXVJSFJsZUhRZ1lXNWtJR052YlcxbGJuUWdibTlrWlhOY2JseDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlETWdmSHdnWld4bGJTNXViMlJsVkhsd1pTQTlQVDBnT0NBcElIdGNibHgwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCbWIyTjFjeTlpYkhWeUlHMXZjbkJvY3lCMGJ5Qm1iMk4xYzJsdUwyOTFkRHNnWlc1emRYSmxJSGRsSjNKbElHNXZkQ0JtYVhKcGJtY2dkR2hsYlNCeWFXZG9kQ0J1YjNkY2JseDBYSFJwWmlBb0lISm1iMk4xYzAxdmNuQm9MblJsYzNRb0lIUjVjR1VnS3lCcVVYVmxjbmt1WlhabGJuUXVkSEpwWjJkbGNtVmtJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTQ3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCMGVYQmxMbWx1WkdWNFQyWW9YQ0l1WENJcElENDlJREFnS1NCN1hHNWNkRngwWEhRdkx5Qk9ZVzFsYzNCaFkyVmtJSFJ5YVdkblpYSTdJR055WldGMFpTQmhJSEpsWjJWNGNDQjBieUJ0WVhSamFDQmxkbVZ1ZENCMGVYQmxJR2x1SUdoaGJt
14938UnNaU2dwWEc1Y2RGeDBYSFJ1WVcxbGMzQmhZMlZ6SUQwZ2RIbHdaUzV6Y0d4cGRDaGNJaTVjSWlrN1hHNWNkRngwWEhSMGVYQmxJRDBnYm1GdFpYTndZV05sY3k1emFHbG1kQ2dwTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3k1emIzSjBLQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHOXVkSGx3WlNBOUlIUjVjR1V1YVc1a1pYaFBaaWhjSWpwY0lpa2dQQ0F3SUNZbUlGd2liMjVjSWlBcklIUjVjR1U3WEc1Y2JseDBYSFF2THlCRFlXeHNaWElnWTJGdUlIQmhjM01nYVc0Z1lTQnFVWFZsY25rdVJYWmxiblFnYjJKcVpXTjBMQ0JQWW1wbFkzUXNJRzl5SUdwMWMzUWdZVzRnWlhabGJuUWdkSGx3WlNCemRISnBibWRjYmx4MFhIUmxkbVZ1ZENBOUlHVjJaVzUwV3lCcVVYVmxjbmt1Wlhod1lXNWtieUJkSUQ5Y2JseDBYSFJjZEdWMlpXNTBJRHBjYmx4MFhIUmNkRzVsZHlCcVVYVmxjbmt1UlhabGJuUW9JSFI1Y0dVc0lIUjVjR1Z2WmlCbGRtVnVkQ0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUJsZG1WdWRDQXBPMXh1WEc1Y2RGeDBMeThnVkhKcFoyZGxjaUJpYVhSdFlYTnJPaUFtSURFZ1ptOXlJRzVoZEdsMlpTQm9ZVzVrYkdWeWN6c2dKaUF5SUdadmNpQnFVWFZsY25rZ0tHRnNkMkY1Y3lCMGNuVmxLVnh1WEhSY2RHVjJaVzUwTG1selZISnBaMmRsY2lBOUlHOXViSGxJWVc1a2JHVnljeUEvSURJZ09pQXpPMXh1WEhSY2RHVjJaVzUwTG01aGJXVnpjR0ZqWlNBOUlHNWhiV1Z6Y0dGalpYTXVhbTlwYmloY0lpNWNJaWs3WEc1Y2RGeDBaWFpsYm5RdWJtRnRaWE53WVdObFgzSmxJRDBnWlhabGJuUXVibUZ0WlhOd1lXTmxJRDljYmx4MFhIUmNkRzVsZHlCU1pXZEZlSEFvSUZ3aUtGNThYRnhjWEM0cFhDSWdLeUJ1WVcxbGMzQmhZMlZ6TG1wdmFXNG9YQ0pjWEZ4Y0xpZy9PaTRxWEZ4Y1hDNThLVndpS1NBcklGd2lLRnhjWEZ3dWZDUXBYQ0lnS1NBNlhHNWNkRngwWEhSdWRXeHNPMXh1WEc1Y2RGeDBMeThnUTJ4bFlXNGdkWEFnZEdobElHVjJaVzUwSUdsdUlHTmhjMlVnYVhRZ2FYTWdZbVZwYm1jZ2NtVjFjMlZrWEc1Y2RGeDBaWFpsYm5RdWNtVnpkV3gwSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEdsbUlDZ2dJV1YyWlc1MExuUmhjbWRsZENBcElIdGNibHgwWEhSY2RHVjJaVzUwTG5SaGNtZGxkQ0E5SUdWc1pXMDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMnh2Ym1VZ1lXNTVJR2x1WTI5dGFXNW5JR1JoZEdFZ1lXNWtJSEJ5WlhCbGJtUWdkR2hsSUdWMlpXNTBMQ0JqY21WaGRHbHVaeUIwYUdVZ2FHRnVaR3hsY2lCaGNtY2diR2x6ZEZ4dVhIUmNkR1JoZEdFZ1BTQmtZWFJoSUQwOUlHNTFiR3dnUDF4dVhIUmNkRngwV3lCbGRtVnVkQ0JkSURwY2JseDBYSFJjZEdwUmRXVnllUzV0WVd0bFFYSnlZWGtvSUdSaGRHRXNJRnNnWlhabGJuUWdYU0FwTzF4dVhHNWNkRngwTHk4Z1FXeHNiM2NnYzNCbFkybGhiQ0JsZG1WdWRITWdkRzhnWkhKaGR5QnZkWFJ6YVdSbElIUm9aU0JzYVc1bGMxeHVYSFJjZEhOd1pXTnBZV3dnUFNCcVVYVmxjbmt1WlhabGJuUXVjM0JsWTJsaGJGc2dkSGx3WlNCZElIeDhJSHQ5TzF4dVhIUmNkR2xtSUNnZ0lXOXViSGxJWVc1a2JHVnljeUFtSmlCemNHVmphV0ZzTG5SeWFXZG5aWElnSmlZZ2MzQmxZMmxoYkM1MGNtbG5aMlZ5TG1Gd2NHeDVLQ0JsYkdWdExDQmtZWFJoSUNrZ1BUMDlJR1poYkhObElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdU8xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFUmxkR1Z5YldsdVpTQmxkbVZ1ZENCd2NtOXdZV2RoZEdsdmJpQndZWFJvSUdsdUlHRmtkbUZ1WTJVc0lIQmxjaUJYTTBNZ1pYWmxiblJ6SUhOd1pXTWdLQ001T1RVeEtWeHVYSFJjZEM4dklFSjFZbUpzWlNCMWNDQjBieUJrYjJOMWJXVnVkQ3dnZEdobGJpQjBieUIzYVc1a2IzYzdJSGRoZEdOb0lHWnZjaUJoSUdkc2IySmhiQ0J2ZDI1bGNrUnZZM1Z0Wlc1MElIWmhjaUFvSXprM01qUXBYRzVjZEZ4MGFXWWdLQ0FoYjI1c2VVaGhibVJzWlhKeklDWW1JQ0Z6Y0dWamFXRnNMbTV2UW5WaVlteGxJQ1ltSUNGcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFluVmlZbXhsVkhsd1pTQTlJSE53WldOcFlXd3VaR1ZzWldkaGRHVlVlWEJsSUh4OElIUjVjR1U3WEc1Y2RGeDBYSFJwWmlBb0lDRnlabTlqZFhOTmIzSndhQzUwWlhOMEtDQmlkV0ppYkdWVWVYQmxJQ3NnZEhsd1pTQXBJQ2tnZTF4dVhIUmNkRngwWEhSamRYSWdQU0JqZFhJdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSY2RIMWNibHgwWEhSY2RHWnZjaUFvSURzZ1kzVnlPeUJqZFhJZ1BTQmpkWEl1Y0dGeVpXNTBUbTlrWlNBcElIdGNibHgwWEhSY2RGeDBaWFpsYm5SUVlYUm9MbkIxYzJnb0lHTjFjaUFwTzF4dVhIUmNkRngwWEhSMGJYQWdQU0JqZFhJN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRTl1YkhrZ1lXUmtJSGRwYm1SdmR5QnBaaUIzWlNCbmIzUWdkRzhnWkc5amRXMWxiblFnS0dVdVp5NHNJRzV2ZENCd2JHRnBiaUJ2WW1vZ2IzSWdaR1YwWVdOb1pXUWdSRTlOS1Z4dVhIUmNkRngwYVdZZ0tDQjBiWEFnUFQwOUlDaGxiR1Z0TG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnWkc5amRXMWxiblFwSUNrZ2UxeHVYSFJjZEZ4MFhIUmxkbVZ1ZEZCaGRHZ3VjSFZ6YUNnZ2RHMXdMbVJsWm1GMWJIUldhV1YzSUh4OElIUnRjQzV3WVhKbGJuUlhhVzVrYjNjZ2ZId2dkMmx1Wkc5M0lDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdSbWx5WlNCb1lXNWtiR1Z5Y3lCdmJpQjBhR1VnWlhabGJuUWdjR0YwYUZ4dVhIUmNkR2tnUFNBd08xeHVYSFJjZEhkb2FXeGxJQ2dnS0dOMWNpQTlJR1YyWlc1MFVHRjBhRnRwS3l0ZEtTQW1KaUFoWlhabGJuUXVhWE5RY205d1lXZGhkR2x2YmxOMGIzQndaV1FvS1NBcElIdGNibHh1WEhSY2RGeDBaWFpsYm5RdWRIbHdaU0E5SUdrZ1BpQXhJRDljYmx4MFhIUmNkRngwWW5WaVlteGxWSGx3WlNBNlhHNWNkRngwWEhSY2RITndaV05wWVd3dVltbHVaRlI1Y0dVZ2ZId2dkSGx3WlR0Y2JseHVYSFJjZEZ4MEx5OGdhbEYxWlhKNUlHaGhibVJzWlhKY2JseDBYSFJjZEdoaGJtUnNaU0E5SUNnZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnWTNWeUxDQmNJbVYyWlc1MGMxd2lJQ2tnZkh3Z2UzMGdLVnNnWlhabGJuUXVkSGx3WlNCZElDWW1JR1JoZEdGZmNISnBkaTVuWlhRb0lHTjFjaXdnWENKb1lXNWtiR1ZjSWlBcE8xeHVYSFJjZEZ4MGFXWWdLQ0JvWVc1a2JHVWdLU0I3WEc1Y2RGeDBYSFJjZEdoaGJtUnNaUzVoY0hCc2VTZ2dZM1Z5TENCa1lYUmhJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFNWhkR2wyWlNCb1lXNWtiR1Z5WEc1Y2RGeDBYSFJvWVc1a2JHVWdQU0J2Ym5SNWNHVWdKaVlnWTNWeVd5QnZiblI1Y0dVZ1hUdGNibHgwWEhSY2RHbG1JQ2dnYUdGdVpHeGxJQ1ltSUdoaGJtUnNaUzVoY0hCc2VTQW1KaUJxVVhWbGNua3VZV05qWlhCMFJHRjBZU2dnWTNWeUlDa2dLU0I3WEc1Y2RGeDBYSFJjZEdWMlpXNTBMbkpsYzNWc2RDQTlJR2hoYm1Sc1pTNWhjSEJzZVNnZ1kzVnlMQ0JrWVhSaElDazdYRzVjZEZ4MFhIUmNkR2xtSUNnZ1pYWmxiblF1Y21WemRXeDBJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUmNkR1YyWlc1MExuUjVjR1VnUFNCMGVYQmxPMXh1WEc1Y2RGeDBMeThnU1dZZ2JtOWliMlI1SUhCeVpYWmxiblJsWkNCMGFHVWdaR1ZtWVhWc2RDQmhZM1JwYjI0c0lHUnZJR2wwSUc1dmQxeHVYSFJjZEdsbUlDZ2dJVzl1YkhsSVlXNWtiR1Z5Y3lBbUppQWhaWFpsYm5RdWFYTkVaV1poZFd4MFVISmxkbVZ1ZEdWa0tDa2dLU0I3WEc1Y2JseDBYSFJjZEdsbUlDZ2dLQ0Z6Y0dWamFXRnNMbDlrWldaaGRXeDBJSHg4SUhOd1pXTnBZV3d1WDJSbFptRjFiSFF1WVhCd2JIa29JR1YyWlc1MFVHRjBhQzV3YjNBb0tTd2daR0YwWVNBcElEMDlQU0JtWVd4elpTa2dKaVpjYmx4MFhIUmNkRngwYWxGMVpYSjVMbUZqWTJWd2RFUmhkR0VvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJEWVd4c0lHRWdibUYwYVhabElFUlBUU0J0WlhSb2IyUWdiMjRnZEdobElIUmhjbWRsZENCM2FYUm9JSFJvWlNCellXMWxJRzVoYldVZ2JtRnRaU0JoY3lCMGFHVWdaWFpsYm5RdVhHNWNkRngwWEhSY2RDOHZJRVJ2YmlkMElHUnZJR1JsWm1GMWJIUWdZV04wYVc5dWN5QnZiaUIzYVc1a2IzY3NJSFJvWVhRbmN5QjNhR1Z5WlNCbmJHOWlZV3dn
14938ZG1GeWFXRmliR1Z6SUdKbElDZ2pOakUzTUNsY2JseDBYSFJjZEZ4MGFXWWdLQ0J2Ym5SNWNHVWdKaVlnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUdWc1pXMWJJSFI1Y0dVZ1hTQXBJQ1ltSUNGcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJSEpsTFhSeWFXZG5aWElnWVc0Z2IyNUdUMDhnWlhabGJuUWdkMmhsYmlCM1pTQmpZV3hzSUdsMGN5QkdUMDhvS1NCdFpYUm9iMlJjYmx4MFhIUmNkRngwWEhSMGJYQWdQU0JsYkdWdFd5QnZiblI1Y0dVZ1hUdGNibHh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dkRzF3SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWld4bGJWc2diMjUwZVhCbElGMGdQU0J1ZFd4c08xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSY2RDOHZJRkJ5WlhabGJuUWdjbVV0ZEhKcFoyZGxjbWx1WnlCdlppQjBhR1VnYzJGdFpTQmxkbVZ1ZEN3Z2MybHVZMlVnZDJVZ1lXeHlaV0ZrZVNCaWRXSmliR1ZrSUdsMElHRmliM1psWEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMblJ5YVdkblpYSmxaQ0E5SUhSNWNHVTdYRzVjZEZ4MFhIUmNkRngwWld4bGJWc2dkSGx3WlNCZEtDazdYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVYyWlc1MExuUnlhV2RuWlhKbFpDQTlJSFZ1WkdWbWFXNWxaRHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZEcxd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpXeGxiVnNnYjI1MGVYQmxJRjBnUFNCMGJYQTdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR1YyWlc1MExuSmxjM1ZzZER0Y2JseDBmU3hjYmx4dVhIUmthWE53WVhSamFEb2dablZ1WTNScGIyNG9JR1YyWlc1MElDa2dlMXh1WEc1Y2RGeDBMeThnVFdGclpTQmhJSGR5YVhSaFlteGxJR3BSZFdWeWVTNUZkbVZ1ZENCbWNtOXRJSFJvWlNCdVlYUnBkbVVnWlhabGJuUWdiMkpxWldOMFhHNWNkRngwWlhabGJuUWdQU0JxVVhWbGNua3VaWFpsYm5RdVptbDRLQ0JsZG1WdWRDQXBPMXh1WEc1Y2RGeDBkbUZ5SUdrc0lHb3NJSEpsZEN3Z2JXRjBZMmhsWkN3Z2FHRnVaR3hsVDJKcUxGeHVYSFJjZEZ4MGFHRnVaR3hsY2xGMVpYVmxJRDBnVzEwc1hHNWNkRngwWEhSaGNtZHpJRDBnYzJ4cFkyVXVZMkZzYkNnZ1lYSm5kVzFsYm5SeklDa3NYRzVjZEZ4MFhIUm9ZVzVrYkdWeWN5QTlJQ2dnWkdGMFlWOXdjbWwyTG1kbGRDZ2dkR2hwY3l3Z1hDSmxkbVZ1ZEhOY0lpQXBJSHg4SUh0OUlDbGJJR1YyWlc1MExuUjVjR1VnWFNCOGZDQmJYU3hjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkZzZ1pYWmxiblF1ZEhsd1pTQmRJSHg4SUh0OU8xeHVYRzVjZEZ4MEx5OGdWWE5sSUhSb1pTQm1hWGd0WldRZ2FsRjFaWEo1TGtWMlpXNTBJSEpoZEdobGNpQjBhR0Z1SUhSb1pTQW9jbVZoWkMxdmJteDVLU0J1WVhScGRtVWdaWFpsYm5SY2JseDBYSFJoY21keld6QmRJRDBnWlhabGJuUTdYRzVjZEZ4MFpYWmxiblF1WkdWc1pXZGhkR1ZVWVhKblpYUWdQU0IwYUdsek8xeHVYRzVjZEZ4MEx5OGdRMkZzYkNCMGFHVWdjSEpsUkdsemNHRjBZMmdnYUc5dmF5Qm1iM0lnZEdobElHMWhjSEJsWkNCMGVYQmxMQ0JoYm1RZ2JHVjBJR2wwSUdKaGFXd2dhV1lnWkdWemFYSmxaRnh1WEhSY2RHbG1JQ2dnYzNCbFkybGhiQzV3Y21WRWFYTndZWFJqYUNBbUppQnpjR1ZqYVdGc0xuQnlaVVJwYzNCaGRHTm9MbU5oYkd3b0lIUm9hWE1zSUdWMlpXNTBJQ2tnUFQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1TzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVSbGRHVnliV2x1WlNCb1lXNWtiR1Z5YzF4dVhIUmNkR2hoYm1Sc1pYSlJkV1YxWlNBOUlHcFJkV1Z5ZVM1bGRtVnVkQzVvWVc1a2JHVnljeTVqWVd4c0tDQjBhR2x6TENCbGRtVnVkQ3dnYUdGdVpHeGxjbk1nS1R0Y2JseHVYSFJjZEM4dklGSjFiaUJrWld4bFoyRjBaWE1nWm1seWMzUTdJSFJvWlhrZ2JXRjVJSGRoYm5RZ2RHOGdjM1J2Y0NCd2NtOXdZV2RoZEdsdmJpQmlaVzVsWVhSb0lIVnpYRzVjZEZ4MGFTQTlJREE3WEc1Y2RGeDBkMmhwYkdVZ0tDQW9iV0YwWTJobFpDQTlJR2hoYm1Sc1pYSlJkV1YxWlZzZ2FTc3JJRjBwSUNZbUlDRmxkbVZ1ZEM1cGMxQnliM0JoWjJGMGFXOXVVM1J2Y0hCbFpDZ3BJQ2tnZTF4dVhIUmNkRngwWlhabGJuUXVZM1Z5Y21WdWRGUmhjbWRsZENBOUlHMWhkR05vWldRdVpXeGxiVHRjYmx4dVhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUjNhR2xzWlNBb0lDaG9ZVzVrYkdWUFltb2dQU0J0WVhSamFHVmtMbWhoYm1Sc1pYSnpXeUJxS3lzZ1hTa2dKaVlnSVdWMlpXNTBMbWx6U1cxdFpXUnBZWFJsVUhKdmNHRm5ZWFJwYjI1VGRHOXdjR1ZrS0NrZ0tTQjdYRzVjYmx4MFhIUmNkRngwTHk4Z1ZISnBaMmRsY21Wa0lHVjJaVzUwSUcxMWMzUWdaV2wwYUdWeUlERXBJR2hoZG1VZ2JtOGdibUZ0WlhOd1lXTmxMQ0J2Y2lBeUtTQm9ZWFpsSUc1aGJXVnpjR0ZqWlNoektWeHVYSFJjZEZ4MFhIUXZMeUJoSUhOMVluTmxkQ0J2Y2lCbGNYVmhiQ0IwYnlCMGFHOXpaU0JwYmlCMGFHVWdZbTkxYm1RZ1pYWmxiblFnS0dKdmRHZ2dZMkZ1SUdoaGRtVWdibThnYm1GdFpYTndZV05sS1M1Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoWlhabGJuUXVibUZ0WlhOd1lXTmxYM0psSUh4OElHVjJaVzUwTG01aGJXVnpjR0ZqWlY5eVpTNTBaWE4wS0NCb1lXNWtiR1ZQWW1vdWJtRnRaWE53WVdObElDa2dLU0I3WEc1Y2JseDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1b1lXNWtiR1ZQWW1vZ1BTQm9ZVzVrYkdWUFltbzdYRzVjZEZ4MFhIUmNkRngwWlhabGJuUXVaR0YwWVNBOUlHaGhibVJzWlU5aWFpNWtZWFJoTzF4dVhHNWNkRngwWEhSY2RGeDBjbVYwSUQwZ0tDQW9hbEYxWlhKNUxtVjJaVzUwTG5Od1pXTnBZV3hiSUdoaGJtUnNaVTlpYWk1dmNtbG5WSGx3WlNCZElIeDhJSHQ5S1M1b1lXNWtiR1VnZkh3Z2FHRnVaR3hsVDJKcUxtaGhibVJzWlhJZ0tWeHVYSFJjZEZ4MFhIUmNkRngwWEhRdVlYQndiSGtvSUcxaGRHTm9aV1F1Wld4bGJTd2dZWEpuY3lBcE8xeHVYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnlaWFFnSVQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHbG1JQ2dnS0dWMlpXNTBMbkpsYzNWc2RDQTlJSEpsZENrZ1BUMDlJR1poYkhObElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJsZG1WdWRDNXpkRzl3VUhKdmNHRm5ZWFJwYjI0b0tUdGNibHgwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEWVd4c0lIUm9aU0J3YjNOMFJHbHpjR0YwWTJnZ2FHOXZheUJtYjNJZ2RHaGxJRzFoY0hCbFpDQjBlWEJsWEc1Y2RGeDBhV1lnS0NCemNHVmphV0ZzTG5CdmMzUkVhWE53WVhSamFDQXBJSHRjYmx4MFhIUmNkSE53WldOcFlXd3VjRzl6ZEVScGMzQmhkR05vTG1OaGJHd29JSFJvYVhNc0lHVjJaVzUwSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR1YyWlc1MExuSmxjM1ZzZER0Y2JseDBmU3hjYmx4dVhIUm9ZVzVrYkdWeWN6b2dablZ1WTNScGIyNG9JR1YyWlc1MExDQm9ZVzVrYkdWeWN5QXBJSHRjYmx4MFhIUjJZWElnYVN3Z2JXRjBZMmhsY3l3Z2MyVnNMQ0JvWVc1a2JHVlBZbW9zWEc1Y2RGeDBYSFJvWVc1a2JHVnlVWFZsZFdVZ1BTQmJYU3hjYmx4MFhIUmNkR1JsYkdWbllYUmxRMjkxYm5RZ1BTQm9ZVzVrYkdWeWN5NWtaV3hsWjJGMFpVTnZkVzUwTEZ4dVhIUmNkRngwWTNWeUlEMGdaWFpsYm5RdWRHRnlaMlYwTzF4dVhHNWNkRngwTHk4Z1JtbHVaQ0JrWld4bFoyRjBaU0JvWVc1a2JHVnljMXh1WEhSY2RDOHZJRUpzWVdOckxXaHZiR1VnVTFaSElEeDFjMlUrSUdsdWMzUmhibU5sSUhSeVpXVnpJQ2dqTVRNeE9
14938EQXBYRzVjZEZ4MEx5OGdRWFp2YVdRZ2JtOXVMV3hsWm5RdFkyeHBZMnNnWW5WaVlteHBibWNnYVc0Z1JtbHlaV1p2ZUNBb0l6TTROakVwWEc1Y2RGeDBhV1lnS0NCa1pXeGxaMkYwWlVOdmRXNTBJQ1ltSUdOMWNpNXViMlJsVkhsd1pTQW1KaUFvSVdWMlpXNTBMbUoxZEhSdmJpQjhmQ0JsZG1WdWRDNTBlWEJsSUNFOVBTQmNJbU5zYVdOclhDSXBJQ2tnZTF4dVhHNWNkRngwWEhSbWIzSWdLQ0E3SUdOMWNpQWhQVDBnZEdocGN6c2dZM1Z5SUQwZ1kzVnlMbkJoY21WdWRFNXZaR1VnZkh3Z2RHaHBjeUFwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJFYjI0bmRDQndjbTlqWlhOeklHTnNhV05yY3lCdmJpQmthWE5oWW14bFpDQmxiR1Z0Wlc1MGN5QW9Jelk1TVRFc0lDTTRNVFkxTENBak1URXpPRElzSUNNeE1UYzJOQ2xjYmx4MFhIUmNkRngwYVdZZ0tDQmpkWEl1WkdsellXSnNaV1FnSVQwOUlIUnlkV1VnZkh3Z1pYWmxiblF1ZEhsd1pTQWhQVDBnWENKamJHbGphMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1pYTWdQU0JiWFR0Y2JseDBYSFJjZEZ4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHUmxiR1ZuWVhSbFEyOTFiblE3SUdrckt5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHaGhibVJzWlU5aWFpQTlJR2hoYm1Sc1pYSnpXeUJwSUYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklFUnZiaWQwSUdOdmJtWnNhV04wSUhkcGRHZ2dUMkpxWldOMExuQnliM1J2ZEhsd1pTQndjbTl3WlhKMGFXVnpJQ2dqTVRNeU1ETXBYRzVjZEZ4MFhIUmNkRngwWEhSelpXd2dQU0JvWVc1a2JHVlBZbW91YzJWc1pXTjBiM0lnS3lCY0lpQmNJanRjYmx4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCdFlYUmphR1Z6V3lCelpXd2dYU0E5UFQwZ2RXNWtaV1pwYm1Wa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnRZWFJqYUdWeld5QnpaV3dnWFNBOUlHaGhibVJzWlU5aWFpNXVaV1ZrYzBOdmJuUmxlSFFnUDF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdwUmRXVnllU2dnYzJWc0xDQjBhR2x6SUNrdWFXNWtaWGdvSUdOMWNpQXBJRDQ5SURBZ09seHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bWFXNWtLQ0J6Wld3c0lIUm9hWE1zSUc1MWJHd3NJRnNnWTNWeUlGMGdLUzVzWlc1bmRHZzdYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHMWhkR05vWlhOYklITmxiQ0JkSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSdFlYUmphR1Z6TG5CMWMyZ29JR2hoYm1Sc1pVOWlhaUFwTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUnBaaUFvSUcxaGRHTm9aWE11YkdWdVozUm9JQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhR0Z1Wkd4bGNsRjFaWFZsTG5CMWMyZ29leUJsYkdWdE9pQmpkWElzSUdoaGJtUnNaWEp6T2lCdFlYUmphR1Z6SUgwcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVGa1pDQjBhR1VnY21WdFlXbHVhVzVuSUNoa2FYSmxZM1JzZVMxaWIzVnVaQ2tnYUdGdVpHeGxjbk5jYmx4MFhIUnBaaUFvSUdSbGJHVm5ZWFJsUTI5MWJuUWdQQ0JvWVc1a2JHVnljeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJvWVc1a2JHVnlVWFZsZFdVdWNIVnphQ2g3SUdWc1pXMDZJSFJvYVhNc0lHaGhibVJzWlhKek9pQm9ZVzVrYkdWeWN5NXpiR2xqWlNnZ1pHVnNaV2RoZEdWRGIzVnVkQ0FwSUgwcE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJvWVc1a2JHVnlVWFZsZFdVN1hHNWNkSDBzWEc1Y2JseDBMeThnU1c1amJIVmtaWE1nYzI5dFpTQmxkbVZ1ZENCd2NtOXdjeUJ6YUdGeVpXUWdZbmtnUzJWNVJYWmxiblFnWVc1a0lFMXZkWE5sUlhabGJuUmNibHgwY0hKdmNITTZJRndpWVd4MFMyVjVJR0oxWW1Kc1pYTWdZMkZ1WTJWc1lXSnNaU0JqZEhKc1MyVjVJR04xY25KbGJuUlVZWEpuWlhRZ1pYWmxiblJRYUdGelpTQnRaWFJoUzJWNUlISmxiR0YwWldSVVlYSm5aWFFnYzJocFpuUkxaWGtnZEdGeVoyVjBJSFJwYldWVGRHRnRjQ0IyYVdWM0lIZG9hV05vWENJdWMzQnNhWFFvWENJZ1hDSXBMRnh1WEc1Y2RHWnBlRWh2YjJ0ek9pQjdmU3hjYmx4dVhIUnJaWGxJYjI5cmN6b2dlMXh1WEhSY2RIQnliM0J6T2lCY0ltTm9ZWElnWTJoaGNrTnZaR1VnYTJWNUlHdGxlVU52WkdWY0lpNXpjR3hwZENoY0lpQmNJaWtzWEc1Y2RGeDBabWxzZEdWeU9pQm1kVzVqZEdsdmJpZ2daWFpsYm5Rc0lHOXlhV2RwYm1Gc0lDa2dlMXh1WEc1Y2RGeDBYSFF2THlCQlpHUWdkMmhwWTJnZ1ptOXlJR3RsZVNCbGRtVnVkSE5jYmx4MFhIUmNkR2xtSUNnZ1pYWmxiblF1ZDJocFkyZ2dQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwWlhabGJuUXVkMmhwWTJnZ1BTQnZjbWxuYVc1aGJDNWphR0Z5UTI5a1pTQWhQU0J1ZFd4c0lEOGdiM0pwWjJsdVlXd3VZMmhoY2tOdlpHVWdPaUJ2Y21sbmFXNWhiQzVyWlhsRGIyUmxPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaWFpsYm5RN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RHMXZkWE5sU0c5dmEzTTZJSHRjYmx4MFhIUndjbTl3Y3pvZ1hDSmlkWFIwYjI0Z1luVjBkRzl1Y3lCamJHbGxiblJZSUdOc2FXVnVkRmtnYjJabWMyVjBXQ0J2Wm1aelpYUlpJSEJoWjJWWUlIQmhaMlZaSUhOamNtVmxibGdnYzJOeVpXVnVXU0IwYjBWc1pXMWxiblJjSWk1emNHeHBkQ2hjSWlCY0lpa3NYRzVjZEZ4MFptbHNkR1Z5T2lCbWRXNWpkR2x2YmlnZ1pYWmxiblFzSUc5eWFXZHBibUZzSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR1YyWlc1MFJHOWpMQ0JrYjJNc0lHSnZaSGtzWEc1Y2RGeDBYSFJjZEdKMWRIUnZiaUE5SUc5eWFXZHBibUZzTG1KMWRIUnZianRjYmx4dVhIUmNkRngwTHk4Z1EyRnNZM1ZzWVhSbElIQmhaMlZZTDFrZ2FXWWdiV2x6YzJsdVp5QmhibVFnWTJ4cFpXNTBXQzlaSUdGMllXbHNZV0pzWlZ4dVhIUmNkRngwYVdZZ0tDQmxkbVZ1ZEM1d1lXZGxXQ0E5UFNCdWRXeHNJQ1ltSUc5eWFXZHBibUZzTG1Oc2FXVnVkRmdnSVQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEZ4MFpYWmxiblJFYjJNZ1BTQmxkbVZ1ZEM1MFlYSm5aWFF1YjNkdVpYSkViMk4xYldWdWRDQjhmQ0JrYjJOMWJXVnVkRHRjYmx4MFhIUmNkRngwWkc5aklEMGdaWFpsYm5SRWIyTXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVYSFJjZEZ4MFhIUmliMlI1SUQwZ1pYWmxiblJFYjJNdVltOWtlVHRjYmx4dVhIUmNkRngwWEhSbGRtVnVkQzV3WVdkbFdDQTlJRzl5YVdkcGJtRnNMbU5zYV
14938dWdWRGZ2dLeUFvSUdSdll5QW1KaUJrYjJNdWMyTnliMnhzVEdWbWRDQjhmQ0JpYjJSNUlDWW1JR0p2WkhrdWMyTnliMnhzVEdWbWRDQjhmQ0F3SUNrZ0xTQW9JR1J2WXlBbUppQmtiMk11WTJ4cFpXNTBUR1ZtZENCOGZDQmliMlI1SUNZbUlHSnZaSGt1WTJ4cFpXNTBUR1ZtZENCOGZDQXdJQ2s3WEc1Y2RGeDBYSFJjZEdWMlpXNTBMbkJoWjJWWklEMGdiM0pwWjJsdVlXd3VZMnhwWlc1MFdTQXJJQ2dnWkc5aklDWW1JR1J2WXk1elkzSnZiR3hVYjNBZ0lIeDhJR0p2WkhrZ0ppWWdZbTlrZVM1elkzSnZiR3hVYjNBZ0lIeDhJREFnS1NBdElDZ2daRzlqSUNZbUlHUnZZeTVqYkdsbGJuUlViM0FnSUh4OElHSnZaSGtnSmlZZ1ltOWtlUzVqYkdsbGJuUlViM0FnSUh4OElEQWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1FXUmtJSGRvYVdOb0lHWnZjaUJqYkdsamF6b2dNU0E5UFQwZ2JHVm1kRHNnTWlBOVBUMGdiV2xrWkd4bE95QXpJRDA5UFNCeWFXZG9kRnh1WEhSY2RGeDBMeThnVG05MFpUb2dZblYwZEc5dUlHbHpJRzV2ZENCdWIzSnRZV3hwZW1Wa0xDQnpieUJrYjI0bmRDQjFjMlVnYVhSY2JseDBYSFJjZEdsbUlDZ2dJV1YyWlc1MExuZG9hV05vSUNZbUlHSjFkSFJ2YmlBaFBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkRngwWEhSbGRtVnVkQzUzYUdsamFDQTlJQ2dnWW5WMGRHOXVJQ1lnTVNBL0lERWdPaUFvSUdKMWRIUnZiaUFtSURJZ1B5QXpJRG9nS0NCaWRYUjBiMjRnSmlBMElEOGdNaUE2SURBZ0tTQXBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJsZG1WdWREdGNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBabWw0T2lCbWRXNWpkR2x2YmlnZ1pYWmxiblFnS1NCN1hHNWNkRngwYVdZZ0tDQmxkbVZ1ZEZzZ2FsRjFaWEo1TG1WNGNHRnVaRzhnWFNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCbGRtVnVkRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEY21WaGRHVWdZU0IzY21sMFlXSnNaU0JqYjNCNUlHOW1JSFJvWlNCbGRtVnVkQ0J2WW1wbFkzUWdZVzVrSUc1dmNtMWhiR2w2WlNCemIyMWxJSEJ5YjNCbGNuUnBaWE5jYmx4MFhIUjJZWElnYVN3Z2NISnZjQ3dnWTI5d2VTeGNibHgwWEhSY2RIUjVjR1VnUFNCbGRtVnVkQzUwZVhCbExGeHVYSFJjZEZ4MGIzSnBaMmx1WVd4RmRtVnVkQ0E5SUdWMlpXNTBMRnh1WEhSY2RGeDBabWw0U0c5dmF5QTlJSFJvYVhNdVptbDRTRzl2YTNOYklIUjVjR1VnWFR0Y2JseHVYSFJjZEdsbUlDZ2dJV1pwZUVodmIyc2dLU0I3WEc1Y2RGeDBYSFIwYUdsekxtWnBlRWh2YjJ0eld5QjBlWEJsSUYwZ1BTQm1hWGhJYjI5cklEMWNibHgwWEhSY2RGeDBjbTF2ZFhObFJYWmxiblF1ZEdWemRDZ2dkSGx3WlNBcElEOGdkR2hwY3k1dGIzVnpaVWh2YjJ0eklEcGNibHgwWEhSY2RGeDBjbXRsZVVWMlpXNTBMblJsYzNRb0lIUjVjR1VnS1NBL0lIUm9hWE11YTJWNVNHOXZhM01nT2x4dVhIUmNkRngwWEhSN2ZUdGNibHgwWEhSOVhHNWNkRngwWTI5d2VTQTlJR1pwZUVodmIyc3VjSEp2Y0hNZ1B5QjBhR2x6TG5CeWIzQnpMbU52Ym1OaGRDZ2dabWw0U0c5dmF5NXdjbTl3Y3lBcElEb2dkR2hwY3k1d2NtOXdjenRjYmx4dVhIUmNkR1YyWlc1MElEMGdibVYzSUdwUmRXVnllUzVGZG1WdWRDZ2diM0pwWjJsdVlXeEZkbVZ1ZENBcE8xeHVYRzVjZEZ4MGFTQTlJR052Y0hrdWJHVnVaM1JvTzF4dVhIUmNkSGRvYVd4bElDZ2dhUzB0SUNrZ2UxeHVYSFJjZEZ4MGNISnZjQ0E5SUdOdmNIbGJJR2tnWFR0Y2JseDBYSFJjZEdWMlpXNTBXeUJ3Y205d0lGMGdQU0J2Y21sbmFXNWhiRVYyWlc1MFd5QndjbTl3SUYwN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UzVndjRzl5ZERvZ1EyOXlaRzkyWVNBeUxqVWdLRmRsWWt0cGRDa2dLQ014TXpJMU5TbGNibHgwWEhRdkx5QkJiR3dnWlhabGJuUnpJSE5vYjNWc1pDQm9ZWFpsSUdFZ2RHRnlaMlYwT3lCRGIzSmtiM1poSUdSbGRtbGpaWEpsWVdSNUlHUnZaWE51SjNSY2JseDBYSFJwWmlBb0lDRmxkbVZ1ZEM1MFlYSm5aWFFnS1NCN1hHNWNkRngwWEhSbGRtVnVkQzUwWVhKblpYUWdQU0JrYjJOMWJXVnVkRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJUZFhCd2IzSjBPaUJUWVdaaGNta2dOaTR3S3l3Z1EyaHliMjFsUERJNFhHNWNkRngwTHk4Z1ZHRnlaMlYwSUhOb2IzVnNaQ0J1YjNRZ1ltVWdZU0IwWlhoMElHNXZaR1VnS0NNMU1EUXNJQ014TXpFME15bGNibHgwWEhScFppQW9JR1YyWlc1MExuUmhjbWRsZEM1dWIyUmxWSGx3WlNBOVBUMGdNeUFwSUh0Y2JseDBYSFJjZEdWMlpXNTBMblJoY21kbGRDQTlJR1YyWlc1MExuUmhjbWRsZEM1d1lYSmxiblJPYjJSbE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJtYVhoSWIyOXJMbVpwYkhSbGNpQS9JR1pwZUVodmIyc3VabWxzZEdWeUtDQmxkbVZ1ZEN3Z2IzSnBaMmx1WVd4RmRtVnVkQ0FwSURvZ1pYWmxiblE3WEc1Y2RIMHNYRzVjYmx4MGMzQmxZMmxoYkRvZ2UxeHVYSFJjZEd4dllXUTZJSHRjYmx4MFhIUmNkQzh2SUZCeVpYWmxiblFnZEhKcFoyZGxjbVZrSUdsdFlXZGxMbXh2WVdRZ1pYWmxiblJ6SUdaeWIyMGdZblZpWW14cGJtY2dkRzhnZDJsdVpHOTNMbXh2WVdSY2JseDBYSFJjZEc1dlFuVmlZbXhsT2lCMGNuVmxYRzVjZEZ4MGZTeGNibHgwWEhSbWIyTjFjem9nZTF4dVhIUmNkRngwTHk4Z1JtbHlaU0J1WVhScGRtVWdaWFpsYm5RZ2FXWWdjRzl6YzJsaWJHVWdjMjhnWW14MWNpOW1iMk4xY3lCelpYRjFaVzVqWlNCcGN5QmpiM0p5WldOMFhHNWNkRngwWEhSMGNtbG5aMlZ5T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBhV1lnS0NCMGFHbHpJQ0U5UFNCellXWmxRV04wYVhabFJXeGxiV1Z1ZENncElDWW1JSFJvYVhNdVptOWpkWE1nS1NCN1hHNWNkRngwWEhSY2RGeDBkR2hwY3k1bWIyTjFjeWdwTzF4dVhIUmNkRngwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlN4Y2JseDBYSFJjZEdSbGJHVm5ZWFJsVkhsd1pUb2dYQ0ptYjJOMWMybHVYQ0pjYmx4MFhIUjlMRnh1WEhSY2RHSnNkWEk2SUh0Y2JseDBYSFJjZEhSeWFXZG5aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhSb2FYTWdQVDA5SUhOaFptVkJZM1JwZG1WRmJHVnRaVzUwS0NrZ0ppWWdkR2hwY3k1aWJIVnlJQ2tnZTF4dVhIUmNkRngwWEhSY2RIUm9hWE11WW14MWNpZ3BPMXh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkR1JsYkdWbllYUmxWSGx3WlRvZ1hDSm1iMk4xYzI5MWRGd2lYRzVjZEZ4MGZTeGNibHgwWEhSamJHbGphem9nZTF4dVhIUmNkRngwTHk4Z1JtOXlJR05vWldOclltOTRMQ0JtYVhKbElHNWhkR2wyWlNCbGRtVnVkQ0J6YnlCamFHVmphMlZrSUhOMFlYUmxJSGRwYkd3Z1ltVWdjbWxuYUhSY2JseDBYSFJjZEhSeWFXZG5aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhSb2FYTXVkSGx3WlNBOVBUMGdYQ0pqYUdWamEySnZlRndpSUNZbUlIUm9hWE11WTJ4cFkyc2dKaVlnYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0IwYUdsekxDQmNJbWx1Y0hWMFhDSWdLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUjBhR2x6TG1Oc2FXTnJLQ2s3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUdaaGJITmxPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5TEZ4dVhHNWNkRngwWEhRdkx5QkdiM0lnWTNKdmMzTXRZbkp2ZDNObGNpQmpiMjV6YVhOM
14938FpXNWplU3dnWkc5dUozUWdabWx5WlNCdVlYUnBkbVVnTG1Oc2FXTnJLQ2tnYjI0Z2JHbHVhM05jYmx4MFhIUmNkRjlrWldaaGRXeDBPaUJtZFc1amRHbHZiaWdnWlhabGJuUWdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VibTlrWlU1aGJXVW9JR1YyWlc1MExuUmhjbWRsZEN3Z1hDSmhYQ0lnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5TEZ4dVhHNWNkRngwWW1WbWIzSmxkVzVzYjJGa09pQjdYRzVjZEZ4MFhIUndiM04wUkdsemNHRjBZMmc2SUdaMWJtTjBhVzl1S0NCbGRtVnVkQ0FwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJHYVhKbFptOTRJREl3SzF4dVhIUmNkRngwWEhRdkx5QkdhWEpsWm05NElHUnZaWE51SjNRZ1lXeGxjblFnYVdZZ2RHaGxJSEpsZEhWeWJsWmhiSFZsSUdacFpXeGtJR2x6SUc1dmRDQnpaWFF1WEc1Y2RGeDBYSFJjZEdsbUlDZ2daWFpsYm5RdWNtVnpkV3gwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnWlhabGJuUXViM0pwWjJsdVlXeEZkbVZ1ZENBcElIdGNibHgwWEhSY2RGeDBYSFJsZG1WdWRDNXZjbWxuYVc1aGJFVjJaVzUwTG5KbGRIVnlibFpoYkhWbElEMGdaWFpsYm5RdWNtVnpkV3gwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RITnBiWFZzWVhSbE9pQm1kVzVqZEdsdmJpZ2dkSGx3WlN3Z1pXeGxiU3dnWlhabGJuUXNJR0oxWW1Kc1pTQXBJSHRjYmx4MFhIUXZMeUJRYVdkbmVXSmhZMnNnYjI0Z1lTQmtiMjV2Y2lCbGRtVnVkQ0IwYnlCemFXMTFiR0YwWlNCaElHUnBabVpsY21WdWRDQnZibVV1WEc1Y2RGeDBMeThnUm1GclpTQnZjbWxuYVc1aGJFVjJaVzUwSUhSdklHRjJiMmxrSUdSdmJtOXlKM01nYzNSdmNGQnliM0JoWjJGMGFXOXVMQ0JpZFhRZ2FXWWdkR2hsWEc1Y2RGeDBMeThnYzJsdGRXeGhkR1ZrSUdWMlpXNTBJSEJ5WlhabGJuUnpJR1JsWm1GMWJIUWdkR2hsYmlCM1pTQmtieUIwYUdVZ2MyRnRaU0J2YmlCMGFHVWdaRzl1YjNJdVhHNWNkRngwZG1GeUlHVWdQU0JxVVhWbGNua3VaWGgwWlc1a0tGeHVYSFJjZEZ4MGJtVjNJR3BSZFdWeWVTNUZkbVZ1ZENncExGeHVYSFJjZEZ4MFpYWmxiblFzWEc1Y2RGeDBYSFI3WEc1Y2RGeDBYSFJjZEhSNWNHVTZJSFI1Y0dVc1hHNWNkRngwWEhSY2RHbHpVMmx0ZFd4aGRHVmtPaUIwY25WbExGeHVYSFJjZEZ4MFhIUnZjbWxuYVc1aGJFVjJaVzUwT2lCN2ZWeHVYSFJjZEZ4MGZWeHVYSFJjZENrN1hHNWNkRngwYVdZZ0tDQmlkV0ppYkdVZ0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rdVpYWmxiblF1ZEhKcFoyZGxjaWdnWlN3Z2JuVnNiQ3dnWld4bGJTQXBPMXh1WEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhScVVYVmxjbmt1WlhabGJuUXVaR2x6Y0dGMFkyZ3VZMkZzYkNnZ1pXeGxiU3dnWlNBcE8xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lHVXVhWE5FWldaaGRXeDBVSEpsZG1WdWRHVmtLQ2tnS1NCN1hHNWNkRngwWEhSbGRtVnVkQzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1WEhSY2RIMWNibHgwZlZ4dWZUdGNibHh1YWxGMVpYSjVMbkpsYlc5MlpVVjJaVzUwSUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUhSNWNHVXNJR2hoYm1Sc1pTQXBJSHRjYmx4MGFXWWdLQ0JsYkdWdExuSmxiVzkyWlVWMlpXNTBUR2x6ZEdWdVpYSWdLU0I3WEc1Y2RGeDBaV3hsYlM1eVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUtDQjBlWEJsTENCb1lXNWtiR1VzSUdaaGJITmxJQ2s3WEc1Y2RIMWNibjA3WEc1Y2JtcFJkV1Z5ZVM1RmRtVnVkQ0E5SUdaMWJtTjBhVzl1S0NCemNtTXNJSEJ5YjNCeklDa2dlMXh1WEhRdkx5QkJiR3h2ZHlCcGJuTjBZVzUwYVdGMGFXOXVJSGRwZEdodmRYUWdkR2hsSUNkdVpYY25JR3RsZVhkdmNtUmNibHgwYVdZZ0tDQWhLSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQnFVWFZsY25rdVJYWmxiblFwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ1WlhjZ2FsRjFaWEo1TGtWMlpXNTBLQ0J6Y21Nc0lIQnliM0J6SUNrN1hHNWNkSDFjYmx4dVhIUXZMeUJGZG1WdWRDQnZZbXBsWTNSY2JseDBhV1lnS0NCemNtTWdKaVlnYzNKakxuUjVjR1VnS1NCN1hHNWNkRngwZEdocGN5NXZjbWxuYVc1aGJFVjJaVzUwSUQwZ2MzSmpPMXh1WEhSY2RIUm9hWE11ZEhsd1pTQTlJSE55WXk1MGVYQmxPMXh1WEc1Y2RGeDBMeThnUlhabGJuUnpJR0oxWW1Kc2FXNW5JSFZ3SUhSb1pTQmtiMk4xYldWdWRDQnRZWGtnYUdGMlpTQmlaV1Z1SUcxaGNtdGxaQ0JoY3lCd2NtVjJaVzUwWldSY2JseDBYSFF2THlCaWVTQmhJR2hoYm1Sc1pYSWdiRzkzWlhJZ1pHOTNiaUIwYUdVZ2RISmxaVHNnY21WbWJHVmpkQ0IwYUdVZ1kyOXljbVZqZENCMllXeDFaUzVjYmx4MFhIUjBhR2x6TG1selJHVm1ZWFZzZEZCeVpYWmxiblJsWkNBOUlITnlZeTVrWldaaGRXeDBVSEpsZG1WdWRHVmtJSHg4WEc1Y2RGeDBYSFJjZEhOeVl5NWtaV1poZFd4MFVISmxkbVZ1ZEdWa0lEMDlQU0IxYm1SbFptbHVaV1FnSmlaY2JseDBYSFJjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMakJjYmx4MFhIUmNkRngwYzNKakxuSmxkSFZ5YmxaaGJIVmxJRDA5UFNCbVlXeHpaU0EvWEc1Y2RGeDBYSFJ5WlhSMWNtNVVjblZsSURwY2JseDBYSFJjZEhKbGRIVnlia1poYkhObE8xeHVYRzVjZEM4dklFVjJaVzUwSUhSNWNHVmNibHgwZlNCbGJITmxJSHRjYmx4MFhIUjBhR2x6TG5SNWNHVWdQU0J6Y21NN1hHNWNkSDFjYmx4dVhIUXZMeUJRZFhRZ1pYaHdiR2xqYVhSc2VTQndjbTkyYVdSbFpDQndjbTl3WlhKMGFXVnpJRzl1ZEc4Z2RHaGxJR1YyWlc1MElHOWlhbVZqZEZ4dVhIUnBaaUFvSUhCeWIzQnpJQ2tnZTF4dVhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUm9hWE1zSUhCeWIzQnpJQ2s3WEc1Y2RIMWNibHh1WEhRdkx5QkRjbVZoZEdVZ1lTQjBhVzFsYzNSaGJYQWdhV1lnYVc1amIyMXBibWNnWlhabGJuUWdaRzlsYzI0bmRDQm9ZWFpsSUc5dVpWeHVYSFIwYUdsekxuUnBiV1ZUZEdGdGNDQTlJSE55WXlBbUppQnpjbU11ZEdsdFpWTjBZVzF3SUh4OElHcFJkV1Z5ZVM1dWIzY29LVHRjYmx4dVhIUXZMeUJOWVhKcklHbDBJR0Z6SUdacGVHVmtYRzVjZEhSb2FYTmJJR3BSZFdWeWVTNWxlSEJoYm1SdklGMGdQU0IwY25WbE8xeHVmVHRjYmx4dUx5OGdhbEYxWlhKNUxrVjJaVzUwSUdseklHSmhjMlZrSUc5dUlFUlBUVE1nUlhabGJuUnpJR0Z6SUhOd1pXTnBabWxsWkNCaWVTQjBhR1VnUlVOTlFWTmpjbWx3ZENCTVlXNW5kV0ZuWlNCQ2FXNWthVzVuWEc0dkx5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTh5TURBekwxZEVMVVJQVFMxTVpYWmxiQzB6TFVWMlpXNTBjeTB
149385TURBek1ETXpNUzlsWTIxaExYTmpjbWx3ZEMxaWFXNWthVzVuTG1oMGJXeGNibXBSZFdWeWVTNUZkbVZ1ZEM1d2NtOTBiM1I1Y0dVZ1BTQjdYRzVjZEdselJHVm1ZWFZzZEZCeVpYWmxiblJsWkRvZ2NtVjBkWEp1Um1Gc2MyVXNYRzVjZEdselVISnZjR0ZuWVhScGIyNVRkRzl3Y0dWa09pQnlaWFIxY201R1lXeHpaU3hjYmx4MGFYTkpiVzFsWkdsaGRHVlFjbTl3WVdkaGRHbHZibE4wYjNCd1pXUTZJSEpsZEhWeWJrWmhiSE5sTEZ4dVhHNWNkSEJ5WlhabGJuUkVaV1poZFd4ME9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWlNBOUlIUm9hWE11YjNKcFoybHVZV3hGZG1WdWREdGNibHh1WEhSY2RIUm9hWE11YVhORVpXWmhkV3gwVUhKbGRtVnVkR1ZrSUQwZ2NtVjBkWEp1VkhKMVpUdGNibHh1WEhSY2RHbG1JQ2dnWlNBbUppQmxMbkJ5WlhabGJuUkVaV1poZFd4MElDa2dlMXh1WEhSY2RGeDBaUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1WEhSY2RIMWNibHgwZlN4Y2JseDBjM1J2Y0ZCeWIzQmhaMkYwYVc5dU9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWlNBOUlIUm9hWE11YjNKcFoybHVZV3hGZG1WdWREdGNibHh1WEhSY2RIUm9hWE11YVhOUWNtOXdZV2RoZEdsdmJsTjBiM0J3WldRZ1BTQnlaWFIxY201VWNuVmxPMXh1WEc1Y2RGeDBhV1lnS0NCbElDWW1JR1V1YzNSdmNGQnliM0JoWjJGMGFXOXVJQ2tnZTF4dVhIUmNkRngwWlM1emRHOXdVSEp2Y0dGbllYUnBiMjRvS1R0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjZEhOMGIzQkpiVzFsWkdsaGRHVlFjbTl3WVdkaGRHbHZiam9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwZG1GeUlHVWdQU0IwYUdsekxtOXlhV2RwYm1Gc1JYWmxiblE3WEc1Y2JseDBYSFIwYUdsekxtbHpTVzF0WldScFlYUmxVSEp2Y0dGbllYUnBiMjVUZEc5d2NHVmtJRDBnY21WMGRYSnVWSEoxWlR0Y2JseHVYSFJjZEdsbUlDZ2daU0FtSmlCbExuTjBiM0JKYlcxbFpHbGhkR1ZRY205d1lXZGhkR2x2YmlBcElIdGNibHgwWEhSY2RHVXVjM1J2Y0VsdGJXVmthV0YwWlZCeWIzQmhaMkYwYVc5dUtDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGRHaHBjeTV6ZEc5d1VISnZjR0ZuWVhScGIyNG9LVHRjYmx4MGZWeHVmVHRjYmx4dUx5OGdRM0psWVhSbElHMXZkWE5sWlc1MFpYSXZiR1ZoZG1VZ1pYWmxiblJ6SUhWemFXNW5JRzF2ZFhObGIzWmxjaTl2ZFhRZ1lXNWtJR1YyWlc1MExYUnBiV1VnWTJobFkydHpYRzR2THlCVGRYQndiM0owT2lCRGFISnZiV1VnTVRVclhHNXFVWFZsY25rdVpXRmphQ2g3WEc1Y2RHMXZkWE5sWlc1MFpYSTZJRndpYlc5MWMyVnZkbVZ5WENJc1hHNWNkRzF2ZFhObGJHVmhkbVU2SUZ3aWJXOTFjMlZ2ZFhSY0lpeGNibHgwY0c5cGJuUmxjbVZ1ZEdWeU9pQmNJbkJ2YVc1MFpYSnZkbVZ5WENJc1hHNWNkSEJ2YVc1MFpYSnNaV0YyWlRvZ1hDSndiMmx1ZEdWeWIzVjBYQ0pjYm4wc0lHWjFibU4wYVc5dUtDQnZjbWxuTENCbWFYZ2dLU0I3WEc1Y2RHcFJkV1Z5ZVM1bGRtVnVkQzV6Y0dWamFXRnNXeUJ2Y21sbklGMGdQU0I3WEc1Y2RGeDBaR1ZzWldkaGRHVlVlWEJsT2lCbWFYZ3NYRzVjZEZ4MFltbHVaRlI1Y0dVNklHWnBlQ3hjYmx4dVhIUmNkR2hoYm1Sc1pUb2dablZ1WTNScGIyNG9JR1YyWlc1MElDa2dlMXh1WEhSY2RGeDBkbUZ5SUhKbGRDeGNibHgwWEhSY2RGeDBkR0Z5WjJWMElEMGdkR2hwY3l4Y2JseDBYSFJjZEZ4MGNtVnNZWFJsWkNBOUlHVjJaVzUwTG5KbGJHRjBaV1JVWVhKblpYUXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pVOWlhaUE5SUdWMlpXNTBMbWhoYm1Sc1pVOWlhanRjYmx4dVhIUmNkRngwTHk4Z1JtOXlJRzF2ZFhObGJuUmxjaTlzWldGMlpTQmpZV3hzSUhSb1pTQm9ZVzVrYkdWeUlHbG1JSEpsYkdGMFpXUWdhWE1nYjNWMGMybGtaU0IwYUdVZ2RHRnlaMlYwTGx4dVhIUmNkRngwTHk4Z1RrSTZJRTV2SUhKbGJHRjBaV1JVWVhKblpYUWdhV1lnZEdobElHMXZkWE5sSUd4bFpuUXZaVzUwWlhKbFpDQjBhR1VnWW5KdmQzTmxjaUIzYVc1a2IzZGNibHgwWEhSY2RHbG1JQ2dnSVhKbGJHRjBaV1FnZkh3Z0tISmxiR0YwWldRZ0lUMDlJSFJoY21kbGRDQW1KaUFoYWxGMVpYSjVMbU52Ym5SaGFXNXpLQ0IwWVhKblpYUXNJSEpsYkdGMFpXUWdLU2tnS1NCN1hHNWNkRngwWEhSY2RHVjJaVzUwTG5SNWNHVWdQU0JvWVc1a2JHVlBZbW91YjNKcFoxUjVjR1U3WEc1Y2RGeDBYSFJjZEhKbGRDQTlJR2hoYm1Sc1pVOWlhaTVvWVc1a2JHVnlMbUZ3Y0d4NUtDQjBhR2x6TENCaGNtZDFiV1Z1ZEhNZ0tUdGNibHgwWEhSY2RGeDBaWFpsYm5RdWRIbHdaU0E5SUdacGVEdGNibHgwWEhSY2RIMWNibHgwWEhSY2RISmxkSFZ5YmlCeVpYUTdYRzVjZEZ4MGZWeHVYSFI5TzF4dWZTazdYRzVjYmk4dklGTjFjSEJ2Y25RNklFWnBjbVZtYjNnc0lFTm9jbTl0WlN3Z1UyRm1ZWEpwWEc0dkx5QkRjbVZoZEdVZ1hDSmlkV0ppYkdsdVoxd2lJR1p2WTNWeklHRnVaQ0JpYkhWeUlHVjJaVzUwYzF4dWFXWWdLQ0FoYzNWd2NHOXlkQzVtYjJOMWMybHVRblZpWW14bGN5QXBJSHRjYmx4MGFsRjFaWEo1TG1WaFkyZ29leUJtYjJOMWN6b2dYQ0ptYjJOMWMybHVYQ0lzSUdKc2RYSTZJRndpWm05amRYTnZkWFJjSWlCOUxDQm1kVzVqZEdsdmJpZ2diM0pwWnl3Z1ptbDRJQ2tnZTF4dVhHNWNkRngwTHk4Z1FYUjBZV05vSUdFZ2MybHVaMnhsSUdOaGNIUjFjbWx1WnlCb1lXNWtiR1Z5SUc5dUlIUm9aU0JrYjJOMWJXVnVkQ0IzYUdsc1pTQnpiMjFsYjI1bElIZGhiblJ6SUdadlkzVnphVzR2Wm05amRYTnZkWFJjYmx4MFhIUjJZWElnYUdGdVpHeGxjaUE5SUdaMWJtTjBhVzl1S0NCbGRtVnVkQ0FwSUh0Y2JseDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbk5wYlhWc1lYUmxLQ0JtYVhnc0lHVjJaVzUwTG5SaGNtZGxkQ3dnYWxGMVpYSjVMbVYyWlc1MExtWnBlQ2dnWlhabGJuUWdLU3dnZEhKMVpTQXBPMXh1WEhSY2RGeDBmVHRjYmx4dVhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEM1emNHVmphV0ZzV3lCbWFYZ2dYU0E5SUh0Y2JseDBYSFJjZEhObGRIVndPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR1J2WXlBOUlIUm9hWE11YjNkdVpYSkViMk4xYldWdWRDQjhmQ0IwYUdsekxGeHVYSFJjZEZ4MFhIUmNkR0YwZEdGamFHVnpJRDBnWkdGMFlWOXdjbWwyTG1GalkyVnpjeWdnWkc5akx
14938DQm1hWGdnS1R0Y2JseHVYSFJjZEZ4MFhIUnBaaUFvSUNGaGRIUmhZMmhsY3lBcElIdGNibHgwWEhSY2RGeDBYSFJrYjJNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnZ2IzSnBaeXdnYUdGdVpHeGxjaXdnZEhKMVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdSdll5d2dabWw0TENBb0lHRjBkR0ZqYUdWeklIeDhJREFnS1NBcklERWdLVHRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFIwWldGeVpHOTNiam9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RIWmhjaUJrYjJNZ1BTQjBhR2x6TG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnZEdocGN5eGNibHgwWEhSY2RGeDBYSFJoZEhSaFkyaGxjeUE5SUdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdSdll5d2dabWw0SUNrZ0xTQXhPMXh1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJV0YwZEdGamFHVnpJQ2tnZTF4dVhIUmNkRngwWEhSY2RHUnZZeTV5WlcxdmRtVkZkbVZ1ZEV4cGMzUmxibVZ5S0NCdmNtbG5MQ0JvWVc1a2JHVnlMQ0IwY25WbElDazdYRzVjZEZ4MFhIUmNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWkc5akxDQm1hWGdnS1R0Y2JseHVYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkR1JoZEdGZmNISnBkaTVoWTJObGMzTW9JR1J2WXl3Z1ptbDRMQ0JoZEhSaFkyaGxjeUFwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlR0Y2JseDBmU2s3WEc1OVhHNWNibXBSZFdWeWVTNW1iaTVsZUhSbGJtUW9lMXh1WEc1Y2RHOXVPaUJtZFc1amRHbHZiaWdnZEhsd1pYTXNJSE5sYkdWamRHOXlMQ0JrWVhSaExDQm1iaXdnTHlwSlRsUkZVazVCVENvdklHOXVaU0FwSUh0Y2JseDBYSFIyWVhJZ2IzSnBaMFp1TENCMGVYQmxPMXh1WEc1Y2RGeDBMeThnVkhsd1pYTWdZMkZ1SUdKbElHRWdiV0Z3SUc5bUlIUjVjR1Z6TDJoaGJtUnNaWEp6WEc1Y2RGeDBhV1lnS0NCMGVYQmxiMllnZEhsd1pYTWdQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUXZMeUFvSUhSNWNHVnpMVTlpYW1WamRDd2djMlZzWldOMGIzSXNJR1JoZEdFZ0tWeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdjMlZzWldOMGIzSWdJVDA5SUZ3aWMzUnlhVzVuWENJZ0tTQjdYRzVjZEZ4MFhIUmNkQzh2SUNnZ2RIbHdaWE10VDJKcVpXTjBMQ0JrWVhSaElDbGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0VnZkh3Z2MyVnNaV04wYjNJN1hHNWNkRngwWEhSY2RITmxiR1ZqZEc5eUlEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBabTl5SUNnZ2RIbHdaU0JwYmlCMGVYQmxjeUFwSUh0Y2JseDBYSFJjZEZ4MGRHaHBjeTV2YmlnZ2RIbHdaU3dnYzJWc1pXTjBiM0lzSUdSaGRHRXNJSFI1Y0dWeld5QjBlWEJsSUYwc0lHOXVaU0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQmtZWFJoSUQwOUlHNTFiR3dnSmlZZ1ptNGdQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkQzh2SUNnZ2RIbHdaWE1zSUdadUlDbGNibHgwWEhSY2RHWnVJRDBnYzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFJrWVhSaElEMGdjMlZzWldOMGIzSWdQU0IxYm1SbFptbHVaV1E3WEc1Y2RGeDBmU0JsYkhObElHbG1JQ2dnWm00Z1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJRDA5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBYSFF2THlBb0lIUjVjR1Z6TENCelpXeGxZM1J2Y2l3Z1ptNGdLVnh1WEhSY2RGeDBYSFJtYmlBOUlHUmhkR0U3WEc1Y2RGeDBYSFJjZEdSaGRHRWdQU0IxYm1SbFptbHVaV1E3WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFF2THlBb0lIUjVjR1Z6TENCa1lYUmhMQ0JtYmlBcFhHNWNkRngwWEhSY2RHWnVJRDBnWkdGMFlUdGNibHgwWEhSY2RGeDBaR0YwWVNBOUlITmxiR1ZqZEc5eU8xeHVYSFJjZEZ4MFhIUnpaV3hsWTNSdmNpQTlJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEZ4MGFXWWdLQ0JtYmlBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUm1iaUE5SUhKbGRIVnlia1poYkhObE8xeHVYSFJjZEgwZ1pXeHpaU0JwWmlBb0lDRm1iaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2diMjVsSUQwOVBTQXhJQ2tnZTF4dVhIUmNkRngwYjNKcFowWnVJRDBnWm00N1hHNWNkRngwWEhSbWJpQTlJR1oxYm1OMGFXOXVLQ0JsZG1WdWRDQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1EyRnVJSFZ6WlNCaGJpQmxiWEIwZVNCelpYUXNJSE5wYm1ObElHVjJaVzUwSUdOdmJuUmhhVzV6SUhSb1pTQnBibVp2WEc1Y2RGeDBYSFJjZEdwUmRXVnllU2dwTG05bVppZ2daWFpsYm5RZ0tUdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHOXlhV2RHYmk1aGNIQnNlU2dnZEdocGN5d2dZWEpuZFcxbGJuUnpJQ2s3WEc1Y2RGeDBYSFI5TzF4dVhIUmNkRngwTHk4Z1ZYTmxJSE5oYldVZ1ozVnBaQ0J6YnlCallXeHNaWElnWTJGdUlISmxiVzkyWlNCMWMybHVaeUJ2Y21sblJtNWNibHgwWEhSY2RHWnVMbWQxYVdRZ1BTQnZjbWxuUm00dVozVnBaQ0I4ZkNBb0lHOXlhV2RHYmk1bmRXbGtJRDBnYWxGMVpYSjVMbWQxYVdRckt5QXBPMXh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0NCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RHcFJkV1Z5ZVM1bGRtVnVkQzVoWkdRb0lIUm9hWE1zSUhSNWNHVnpMQ0JtYml3Z1pHRjBZU3dnYzJWc1pXTjBiM0lnS1R0Y2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4MGIyNWxPaUJtZFc1amRHbHZiaWdnZEhsd1pYTXNJSE5sYkdWamRHOXlMQ0JrWVhSaExDQm1iaUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1dmJpZ2dkSGx3WlhNc0lITmxiR1ZqZEc5eUxDQmtZWFJoTENCbWJpd2dNU0FwTzF4dVhIUjlMRnh1WEhSdlptWTZJR1oxYm1OMGFXOXVLQ0IwZVhCbGN5d2djMlZzWldOMGIzSXNJR1p1SUNrZ2UxeHVYSFJjZEhaaGNpQm9ZVzVrYkdWUFltb3NJSFI1Y0dVN1hHNWNkRngwYVdZZ0tDQjBlWEJsY3lBbUppQjBlWEJsY3k1d2NtVjJaVzUwUkdWbVlYVnNkQ0FtSmlCMGVYQmxjeTVvWVc1a2JHVlBZbW9nS1NCN1hHNWNkRngwWEhRdkx5QW9JR1YyWlc1MElDa2dJR1JwYzNCaGRHTm9aV1FnYWxGMVpYSjVMa1YyWlc1MFhHNWNkRngwWEhSb1lXNWtiR1ZQWW1vZ1BTQjBlWEJsY3k1b1lXNWtiR1ZQWW1vN1hHNWNkRngwWEhScVVYVmxjbmtvSUhSNWNHVnpMbVJsYkdWbllYUmxWR0Z5WjJWMElDa3ViMlptS0Z4dVhIUmNkRngwWEhSb1lXNWtiR1ZQWW1vdWJtRnRaWE53WVdObElEOGdhR0Z1Wkd4bFQySnFMbTl5YVdkVWVYQmxJQ3NnWENJdVhDSWdLeUJvWVc1a2JHVlBZbW91Ym1GdFpYTndZV05sSURvZ2FHRnVaR3hsVDJKcUxtOXlhV2RVZVhCbExGeHVYSFJjZEZ4MFhIUm9ZVzVrYkdWUFltb3VjMlZzWldOMGIzSXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pVOWlhaTVvWVc1a2JHVnlYRzVjZEZ4MFhIUXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBmVnh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSFI1Y0dWeklEMDlQU0JjSW05aWFtVmpkRndpSUNrZ2UxeHVYSFJjZEZ4MEx5OGdLQ0IwZVhCbGN5MXZZbXBsWTNRZ1d5d2djMlZzWldOMGIzSmRJQ2xjYmx4MFhIUmNkR1p2Y2lBb0lIUjVjR1VnYVc0Z2RIbHdaWE1nS1NCN1hHNWNkRngwWEhSY2RIUm9hWE11YjJabUtDQjBlWEJsTENCelpXeGxZM1J2Y2l3Z2RIbHdaWE5iSUhSNWNHVWdYU0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhIUmNkR2xtSUNnZ2MyVnNaV04wY
14938jNJZ1BUMDlJR1poYkhObElIeDhJSFI1Y0dWdlppQnpaV3hsWTNSdmNpQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDa2dlMXh1WEhSY2RGeDBMeThnS0NCMGVYQmxjeUJiTENCbWJsMGdLVnh1WEhSY2RGeDBabTRnUFNCelpXeGxZM1J2Y2p0Y2JseDBYSFJjZEhObGJHVmpkRzl5SUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lHWnVJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEdadUlEMGdjbVYwZFhKdVJtRnNjMlU3WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rdVpYWmxiblF1Y21WdGIzWmxLQ0IwYUdsekxDQjBlWEJsY3l3Z1ptNHNJSE5sYkdWamRHOXlJQ2s3WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGRISnBaMmRsY2pvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUdSaGRHRWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEM1MGNtbG5aMlZ5S0NCMGVYQmxMQ0JrWVhSaExDQjBhR2x6SUNrN1hHNWNkRngwZlNrN1hHNWNkSDBzWEc1Y2RIUnlhV2RuWlhKSVlXNWtiR1Z5T2lCbWRXNWpkR2x2YmlnZ2RIbHdaU3dnWkdGMFlTQXBJSHRjYmx4MFhIUjJZWElnWld4bGJTQTlJSFJvYVhOYk1GMDdYRzVjZEZ4MGFXWWdLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1bGRtVnVkQzUwY21sbloyVnlLQ0IwZVhCbExDQmtZWFJoTENCbGJHVnRMQ0IwY25WbElDazdYRzVjZEZ4MGZWeHVYSFI5WEc1OUtUdGNibHh1WEc1MllYSmNibHgwY25ob2RHMXNWR0ZuSUQwZ0x6d29QeUZoY21WaGZHSnlmR052Ykh4bGJXSmxaSHhvY254cGJXZDhhVzV3ZFhSOGJHbHVhM3h0WlhSaGZIQmhjbUZ0S1Nnb1cxeGNkenBkS3lsYlhqNWRLaWxjWEM4K0wyZHBMRnh1WEhSeWRHRm5UbUZ0WlNBOUlDODhLRnRjWEhjNlhTc3BMeXhjYmx4MGNtaDBiV3dnUFNBdlBId21JejljWEhjck95OHNYRzVjZEhKdWIwbHVibVZ5YUhSdGJDQTlJQzg4S0Q4NmMyTnlhWEIwZkhOMGVXeGxmR3hwYm1zcEwya3NYRzVjZEM4dklHTm9aV05yWldROVhDSmphR1ZqYTJWa1hDSWdiM0lnWTJobFkydGxaRnh1WEhSeVkyaGxZMnRsWkNBOUlDOWphR1ZqYTJWa1hGeHpLaWcvT2x0ZVBWMThQVnhjY3lvdVkyaGxZMnRsWkM0cEwya3NYRzVjZEhKelkzSnBjSFJVZVhCbElEMGdMMTRrZkZ4Y0x5Zy9PbXBoZG1GOFpXTnRZU2x6WTNKcGNIUXZhU3hjYmx4MGNuTmpjbWx3ZEZSNWNHVk5ZWE5yWldRZ1BTQXZYblJ5ZFdWY1hDOG9MaW9wTHl4Y2JseDBjbU5zWldGdVUyTnlhWEIwSUQwZ0wxNWNYSE1xUENFb1B6cGNYRnREUkVGVVFWeGNXM3d0TFNsOEtEODZYRnhkWEZ4ZGZDMHRLVDVjWEhNcUpDOW5MRnh1WEc1Y2RDOHZJRmRsSUdoaGRtVWdkRzhnWTJ4dmMyVWdkR2hsYzJVZ2RHRm5jeUIwYnlCemRYQndiM0owSUZoSVZFMU1JQ2dqTVRNeU1EQXBYRzVjZEhkeVlYQk5ZWEFnUFNCN1hHNWNibHgwWEhRdkx5QlRkWEJ3YjNKME9pQkpSVGxjYmx4MFhIUnZjSFJwYjI0NklGc2dNU3dnWENJOGMyVnNaV04wSUcxMWJIUnBjR3hsUFNkdGRXeDBhWEJzWlNjK1hDSXNJRndpUEM5elpXeGxZM1ErWENJZ1hTeGNibHh1WEhSY2RIUm9aV0ZrT2lCYklERXNJRndpUEhSaFlteGxQbHdpTENCY0lqd3ZkR0ZpYkdVK1hDSWdYU3hjYmx4MFhIUmpiMnc2SUZzZ01pd2dYQ0k4ZEdGaWJHVStQR052YkdkeWIzVndQbHdpTENCY0lqd3ZZMjlzWjNKdmRYQStQQzkwWVdKc1pUNWNJaUJkTEZ4dVhIUmNkSFJ5T2lCYklESXNJRndpUEhSaFlteGxQangwWW05a2VUNWNJaXdnWENJOEwzUmliMlI1UGp3dmRHRmliR1UrWENJZ1hTeGNibHgwWEhSMFpEb2dXeUF6TENCY0lqeDBZV0pzWlQ0OGRHSnZaSGsrUEhSeVBsd2lMQ0JjSWp3dmRISStQQzkwWW05a2VUNDhMM1JoWW14bFBsd2lJRjBzWEc1Y2JseDBYSFJmWkdWbVlYVnNkRG9nV3lBd0xDQmNJbHdpTENCY0lsd2lJRjFjYmx4MGZUdGNibHh1THk4Z1UzVndjRzl5ZERvZ1NVVTVYRzUzY21Gd1RXRndMbTl3ZEdkeWIzVndJRDBnZDNKaGNFMWhjQzV2Y0hScGIyNDdYRzVjYm5keVlYQk5ZWEF1ZEdKdlpIa2dQU0IzY21Gd1RXRndMblJtYjI5MElEMGdkM0poY0UxaGNDNWpiMnhuY205MWNDQTlJSGR5WVhCTllYQXVZMkZ3ZEdsdmJpQTlJSGR5WVhCTllYQXVkR2hsWVdRN1hHNTNjbUZ3VFdGd0xuUm9JRDBnZDNKaGNFMWhjQzUwWkR0Y2JseHVMeThnVTNWd2NHOXlkRG9nTVM1NElHTnZiWEJoZEdsaWFXeHBkSGxjYmk4dklFMWhibWx3ZFd4aGRHbHVaeUIwWVdKc1pYTWdjbVZ4ZFdseVpYTWdZU0IwWW05a2VWeHVablZ1WTNScGIyNGdiV0Z1YVhCMWJHRjBhVzl1VkdGeVoyVjBLQ0JsYkdWdExDQmpiMjUwWlc1MElDa2dlMXh1WEhSeVpYUjFjbTRnYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0JsYkdWdExDQmNJblJoWW14bFhDSWdLU0FtSmx4dVhIUmNkR3BSZFdWeWVTNXViMlJsVG1GdFpTZ2dZMjl1ZEdWdWRDNXViMlJsVkhsd1pTQWhQVDBnTVRFZ1B5QmpiMjUwWlc1MElEb2dZMjl1ZEdWdWRDNW1hWEp6ZEVOb2FXeGtMQ0JjSW5SeVhDSWdLU0EvWEc1Y2JseDBYSFJsYkdWdExtZGxkRVZzWlcxbGJuUnpRbmxVWVdkT1lXMWxLRndpZEdKdlpIbGNJaWxiTUYwZ2ZIeGNibHgwWEhSY2RHVnNaVzB1WVhCd1pXNWtRMmhwYkdRb0lHVnNaVzB1YjNkdVpYSkViMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0Z3aWRHSnZaSGxjSWlrZ0tTQTZYRzVjZEZ4MFpXeGxiVHRjYm4xY2JseHVMeThnVW1Wd2JHRmpaUzl5WlhOMGIzSmxJSFJvWlNCMGVYQmxJR0YwZEhKcFluVjBaU0J2WmlCelkzSnBjSFFnWld4bGJXVnVkSE1nWm05eUlITmhabVVnUkU5TklHMWhibWx3ZFd4aGRHbHZibHh1Wm5WdVkzUnBiMjRnWkdsellXSnNaVk5qY21sd2RDZ2daV3hsYlNBcElIdGNibHgwWld4bGJTNTBlWEJsSUQwZ0tHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lkSGx3WlZ3aUtTQWhQVDBnYm5Wc2JDa2dLeUJjSWk5Y0lpQXJJR1ZzWlcwdWRIbHdaVHRjYmx4MGNtVjBkWEp1SUdWc1pXMDdYRzU5WEc1bWRXNWpkR2x2YmlCeVpYTjBiM0psVTJOeWFYQjBLQ0JsYkdWdElDa2dlMXh1WEhSMllYSWdiV0YwWTJnZ1BTQnljMk55YVhCMFZIbHdaVTFoYzJ0bFpDNWxlR1ZqS0NCbGJHVnRMblI1Y0dVZ0tUdGNibHh1WEhScFppQW9JRzFoZEdOb0lDa2dlMXh1WEhSY2RHVnNaVzB1ZEhsd1pTQTlJRzFoZEdOb1d5QXhJRjA3WEc1Y2RIMGdaV3h6WlNCN1hHNWNkRngwWld4bGJTNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb1h
14938DSjBlWEJsWENJcE8xeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHVnNaVzA3WEc1OVhHNWNiaTh2SUUxaGNtc2djMk55YVhCMGN5QmhjeUJvWVhacGJtY2dZV3h5WldGa2VTQmlaV1Z1SUdWMllXeDFZWFJsWkZ4dVpuVnVZM1JwYjI0Z2MyVjBSMnh2WW1Gc1JYWmhiQ2dnWld4bGJYTXNJSEpsWmtWc1pXMWxiblJ6SUNrZ2UxeHVYSFIyWVhJZ2FTQTlJREFzWEc1Y2RGeDBiQ0E5SUdWc1pXMXpMbXhsYm1kMGFEdGNibHh1WEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFpHRjBZVjl3Y21sMkxuTmxkQ2hjYmx4MFhIUmNkR1ZzWlcxeld5QnBJRjBzSUZ3aVoyeHZZbUZzUlhaaGJGd2lMQ0FoY21WbVJXeGxiV1Z1ZEhNZ2ZId2daR0YwWVY5d2NtbDJMbWRsZENnZ2NtVm1SV3hsYldWdWRITmJJR2tnWFN3Z1hDSm5iRzlpWVd4RmRtRnNYQ0lnS1Z4dVhIUmNkQ2s3WEc1Y2RIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyeHZibVZEYjNCNVJYWmxiblFvSUhOeVl5d2daR1Z6ZENBcElIdGNibHgwZG1GeUlHa3NJR3dzSUhSNWNHVXNJSEJrWVhSaFQyeGtMQ0J3WkdGMFlVTjFjaXdnZFdSaGRHRlBiR1FzSUhWa1lYUmhRM1Z5TENCbGRtVnVkSE03WEc1Y2JseDBhV1lnS0NCa1pYTjBMbTV2WkdWVWVYQmxJQ0U5UFNBeElDa2dlMXh1WEhSY2RISmxkSFZ5Ymp0Y2JseDBmVnh1WEc1Y2RDOHZJREV1SUVOdmNIa2djSEpwZG1GMFpTQmtZWFJoT2lCbGRtVnVkSE1zSUdoaGJtUnNaWEp6TENCbGRHTXVYRzVjZEdsbUlDZ2daR0YwWVY5d2NtbDJMbWhoYzBSaGRHRW9JSE55WXlBcElDa2dlMXh1WEhSY2RIQmtZWFJoVDJ4a0lEMGdaR0YwWVY5d2NtbDJMbUZqWTJWemN5Z2djM0pqSUNrN1hHNWNkRngwY0dSaGRHRkRkWElnUFNCa1lYUmhYM0J5YVhZdWMyVjBLQ0JrWlhOMExDQndaR0YwWVU5c1pDQXBPMXh1WEhSY2RHVjJaVzUwY3lBOUlIQmtZWFJoVDJ4a0xtVjJaVzUwY3p0Y2JseHVYSFJjZEdsbUlDZ2daWFpsYm5SeklDa2dlMXh1WEhSY2RGeDBaR1ZzWlhSbElIQmtZWFJoUTNWeUxtaGhibVJzWlR0Y2JseDBYSFJjZEhCa1lYUmhRM1Z5TG1WMlpXNTBjeUE5SUh0OU8xeHVYRzVjZEZ4MFhIUm1iM0lnS0NCMGVYQmxJR2x1SUdWMlpXNTBjeUFwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNBOUlEQXNJR3dnUFNCbGRtVnVkSE5iSUhSNWNHVWdYUzVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RGeDBhbEYxWlhKNUxtVjJaVzUwTG1Ga1pDZ2daR1Z6ZEN3Z2RIbHdaU3dnWlhabGJuUnpXeUIwZVhCbElGMWJJR2tnWFNBcE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBMeThnTWk0Z1EyOXdlU0IxYzJWeUlHUmhkR0ZjYmx4MGFXWWdLQ0JrWVhSaFgzVnpaWEl1YUdGelJHRjBZU2dnYzNKaklDa2dLU0I3WEc1Y2RGeDBkV1JoZEdGUGJHUWdQU0JrWVhSaFgzVnpaWEl1WVdOalpYTnpLQ0J6Y21NZ0tUdGNibHgwWEhSMVpHRjBZVU4xY2lBOUlHcFJkV1Z5ZVM1bGVIUmxibVFvSUh0OUxDQjFaR0YwWVU5c1pDQXBPMXh1WEc1Y2RGeDBaR0YwWVY5MWMyVnlMbk5sZENnZ1pHVnpkQ3dnZFdSaGRHRkRkWElnS1R0Y2JseDBmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm5aWFJCYkd3b0lHTnZiblJsZUhRc0lIUmhaeUFwSUh0Y2JseDBkbUZ5SUhKbGRDQTlJR052Ym5SbGVIUXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VnUHlCamIyNTBaWGgwTG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtDQjBZV2NnZkh3Z1hDSXFYQ0lnS1NBNlhHNWNkRngwWEhSamIyNTBaWGgwTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dnUHlCamIyNTBaWGgwTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dvSUhSaFp5QjhmQ0JjSWlwY0lpQXBJRHBjYmx4MFhIUmNkRnRkTzF4dVhHNWNkSEpsZEhWeWJpQjBZV2NnUFQwOUlIVnVaR1ZtYVc1bFpDQjhmQ0IwWVdjZ0ppWWdhbEYxWlhKNUxtNXZaR1ZPWVcxbEtDQmpiMjUwWlhoMExDQjBZV2NnS1NBL1hHNWNkRngwYWxGMVpYSjVMbTFsY21kbEtDQmJJR052Ym5SbGVIUWdYU3dnY21WMElDa2dPbHh1WEhSY2RISmxkRHRjYm4xY2JseHVMeThnUm1sNElFbEZJR0oxWjNNc0lITmxaU0J6ZFhCd2IzSjBJSFJsYzNSelhHNW1kVzVqZEdsdmJpQm1hWGhKYm5CMWRDZ2djM0pqTENCa1pYTjBJQ2tnZTF4dVhIUjJZWElnYm05a1pVNWhiV1VnUFNCa1pYTjBMbTV2WkdWT1lXMWxMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNWNibHgwTHk4Z1JtRnBiSE1nZEc4Z2NHVnljMmx6ZENCMGFHVWdZMmhsWTJ0bFpDQnpkR0YwWlNCdlppQmhJR05zYjI1bFpDQmphR1ZqYTJKdmVDQnZjaUJ5WVdScGJ5QmlkWFIwYjI0dVhHNWNkR2xtSUNnZ2JtOWtaVTVoYldVZ1BUMDlJRndpYVc1d2RYUmNJaUFtSmlCeVkyaGxZMnRoWW14bFZIbHdaUzUwWlhOMEtDQnpjbU11ZEhsd1pTQXBJQ2tnZTF4dVhIUmNkR1JsYzNRdVkyaGxZMnRsWkNBOUlITnlZeTVqYUdWamEyVmtPMXh1WEc1Y2RDOHZJRVpoYVd4eklIUnZJSEpsZEhWeWJpQjBhR1VnYzJWc1pXTjBaV1FnYjNCMGFXOXVJSFJ2SUhSb1pTQmtaV1poZFd4MElITmxiR1ZqZEdWa0lITjBZWFJsSUhkb1pXNGdZMnh2Ym1sdVp5QnZjSFJwYjI1elhHNWNkSDBnWld4elpTQnBaaUFvSUc1dlpHVk9ZVzFsSUQwOVBTQmNJbWx1Y0hWMFhDSWdmSHdnYm05a1pVNWhiV1VnUFQwOUlGd2lkR1Y0ZEdGeVpXRmNJaUFwSUh0Y2JseDBYSFJrWlhOMExtUmxabUYxYkhSV1lXeDFaU0E5SUhOeVl5NWtaV1poZFd4MFZtRnNkV1U3WEc1Y2RIMWNibjFjYmx4dWFsRjFaWEo1TG1WNGRHVnVaQ2g3WEc1Y2RHTnNiMjVsT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWkdGMFlVRnVaRVYyWlc1MGN5d2daR1ZsY0VSaGRHRkJibVJGZG1WdWRITWdLU0I3WEc1Y2RGeDBkbUZ5SUdrc0lHd3NJSE55WTBWc1pXMWxiblJ6TENCa1pYTjBSV3hsYldWdWRITXNYRzVjZEZ4MFhIUmpiRzl1WlNBOUlHVnNaVzB1WTJ4dmJtVk9iMlJsS0NCMGNuVmxJQ2tzWEc1Y2RGeDBYSFJwYmxCaFoyVWdQU0JxVVhWbGNua3VZMjl1ZEdGcGJuTW9JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkQ3dnWld4bGJTQXBPMXh1WEc1Y2RGeDBMeThnUm1sNElFbEZJR05zYjI1cGJtY2dhWE56ZFdWelhHNWNkRngwYVdZZ0tDQWhjM1Z3Y0c5eWRDNXViME5zYjI1bFEyaGxZMnRsWkNBbUppQW9JR1ZzWlcwdWJtOWtaVlI1Y0dVZ1BUMDlJREVnZkh3Z1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01URWdLU0FtSmx4dVhIUmNkRngwWEhRaGFsRjFaWEo1TG1seldFMU1SRzlqS0NCbGJHVnRJQ2tnS1NCN1hHNWNibHgwWEhSY2RDOHZJRmRsSUdWelkyaGxkeUJUYVhwNmJHVWdhR1Z5WlNCbWIzSWdjR1Z5Wm05eWJXRnVZMlVnY21WaGMyOXVjem9nYUhSMGNEb3ZMMnB6Y0dWeVppNWpiMjB2WjJWMFlXeHNMWFp6TFhOcGVucHNaUzh5WEc1Y2RGeDBYSFJrWlhOMFJXeGxiV1Z1ZEhNZ1BTQm5aWFJCYkd3b0lHTnNiMjVsSUNrN1hHNWNkRngwWEhSemNtTkZiR1Z0Wlc1MGN5QTlJR2RsZEVGc2JDZ2daV3hsYlNBcE8xeHVYRzVjZEZ4MFhIUm1iM0lnS0NCcElEMGdNQ3dnYkNBOUlITnlZMFZzWlcxbGJuUnpMbXhsYm1kMGFEc2dhU0E4SUd3N0lHa3JLeUFwSUh0Y2JseDBYSFJjZEZ4MFptbDRTVzV3ZFhRb0lITnlZMFZzWlcxbGJuUnpXeUJwSUYwc0lHUmxjM1JGYkdWdFpXNTBjMXNnYVNCZElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMjl3ZVNCMGFHVWdaWFpsYm5SeklHWnliMjBnZEdobElHOXlhV2RwYm1Gc0lIUnZJSFJvWlNCamJHOXVaVnh1WEhSY2RHbG1JQ2dnWkdGMFlVRnVaRVYyWlc1MGN5QXBJSHRjYmx4MFhIUmNkR2xtSUNnZ1pHVmxjRVJoZEdGQmJtUkZkbVZ1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkSE55WTBWc1pXMWxiblJ6SUQwZ2MzSmpSV3hsYldWdWRITWdmSHdnWjJWMFFXeHNLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUmNkR1JsYzNSRmJHVnRaVzUwY3lBOUlHUmxjM1JGYkdWdFpXNTBjeUI4ZkNCblpYUkJiR3dvSUdOc2IyNWxJQ2s3WEc1Y2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNBOUlEQXNJR3dnUFNCemNtTkZiR1Z0Wlc1MGN5NXNaVzVuZEdnN0lHa2dQQ0JzT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyeHZibVZEYjNCNVJYWmxiblFvSUhOeVkwVnNaVzFsYm5Seld5QnBJRjBzSUdSbGMzUkZiR1Z0Wlc1MGMxc2dhU0JkSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RHTnNiMjVsUTI5d2VVVjJaVzUwS0NCbGJHVnRMQ0JqYkc5dVpTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkJ5WlhObGNuWmxJSE5qY21sd2RDQmxkbUZzZFdGMGFXOXVJR2hwYzNSdmNubGNibHgwWEhSa1pYTjBSV3hsYldWdWRITWdQU0JuWlhSQmJHd29JR05zYjI1bExDQmNJbk5qY21sd2RGd2lJQ2s3WEc1Y2RGeDBhV1lnS0NCa1pYTjBSV3hsYldWdWRITXViR1Z1WjNSb0lENGdNQ0FwSUh0Y2JseDBYSFJjZEhObGRFZHNiMkpoYkVWMllXd29JR1JsYzNSRmJHVnRaVzUwY3l3Z0lXbHVVR0ZuWlNBbUppQm5aWFJCYkd3b0lHVnNaVzBzSUZ3aWMyTnlhWEIwWENJZ0tTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkpsZEhWeWJpQjBhR1VnWTJ4dmJtVmtJSE5sZEZ4dVhIUmNkSEpsZEhWeWJpQmpiRzl1WlR0Y2JseDBmU3hjYmx4dVhIUmlkV2xzWkVaeVlXZHRaVzUwT2lCbWRXNWpkR2x2YmlnZ1pXeGxiWE1zSUdOdmJuUmxlSFFzSUhOamNtbHdkSE1zSUhObGJHVmpkR2x2YmlBcElIdGNibHgwWEhSMllYSWdaV3hsYlN3Z2RHMXdMQ0IwWVdjc0lIZHlZWEFzSUdOdmJuUmhhVzV6TENCcUxGeHVYSFJjZEZ4MFpuSmhaMj
14938FsYm5RZ1BTQmpiMjUwWlhoMExtTnlaV0YwWlVSdlkzVnRaVzUwUm5KaFoyMWxiblFvS1N4Y2JseDBYSFJjZEc1dlpHVnpJRDBnVzEwc1hHNWNkRngwWEhScElEMGdNQ3hjYmx4MFhIUmNkR3dnUFNCbGJHVnRjeTVzWlc1bmRHZzdYRzVjYmx4MFhIUm1iM0lnS0NBN0lHa2dQQ0JzT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJsYkdWdElEMGdaV3hsYlhOYklHa2dYVHRjYmx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUh4OElHVnNaVzBnUFQwOUlEQWdLU0I3WEc1Y2JseDBYSFJjZEZ4MEx5OGdRV1JrSUc1dlpHVnpJR1JwY21WamRHeDVYRzVjZEZ4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG5SNWNHVW9JR1ZzWlcwZ0tTQTlQVDBnWENKdlltcGxZM1JjSWlBcElIdGNibHgwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCUmRGZGxZa3RwZEN3Z1VHaGhiblJ2YlVwVFhHNWNkRngwWEhSY2RGeDBMeThnY0hWemFDNWhjSEJzZVNoZkxDQmhjbkpoZVd4cGEyVXBJSFJvY205M2N5QnZiaUJoYm1OcFpXNTBJRmRsWWt0cGRGeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXRaWEpuWlNnZ2JtOWtaWE1zSUdWc1pXMHVibTlrWlZSNWNHVWdQeUJiSUdWc1pXMGdYU0E2SUdWc1pXMGdLVHRjYmx4dVhIUmNkRngwWEhRdkx5QkRiMjUyWlhKMElHNXZiaTFvZEcxc0lHbHVkRzhnWVNCMFpYaDBJRzV2WkdWY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2dJWEpvZEcxc0xuUmxjM1FvSUdWc1pXMGdLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnViMlJsY3k1d2RYTm9LQ0JqYjI1MFpYaDBMbU55WldGMFpWUmxlSFJPYjJSbEtDQmxiR1Z0SUNrZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCRGIyNTJaWEowSUdoMGJXd2dhVzUwYnlCRVQwMGdibTlrWlhOY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUjBiWEFnUFNCMGJYQWdmSHdnWm5KaFoyMWxiblF1WVhCd1pXNWtRMmhwYkdRb0lHTnZiblJsZUhRdVkzSmxZWFJsUld4bGJXVnVkQ2hjSW1ScGRsd2lLU0FwTzF4dVhHNWNkRngwWEhSY2RGeDBMeThnUkdWelpYSnBZV3hwZW1VZ1lTQnpkR0Z1WkdGeVpDQnlaWEJ5WlhObGJuUmhkR2x2Ymx4dVhIUmNkRngwWEhSY2RIUmhaeUE5SUNnZ2NuUmhaMDVoYldVdVpYaGxZeWdnWld4bGJTQXBJSHg4SUZzZ1hDSmNJaXdnWENKY0lpQmRJQ2xiSURFZ1hTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dVhIUmNkRngwWEhSY2RIZHlZWEFnUFNCM2NtRndUV0Z3V3lCMFlXY2dYU0I4ZkNCM2NtRndUV0Z3TGw5a1pXWmhkV3gwTzF4dVhIUmNkRngwWEhSY2RIUnRjQzVwYm01bGNraFVUVXdnUFNCM2NtRndXeUF4SUYwZ0t5QmxiR1Z0TG5KbGNHeGhZMlVvSUhKNGFIUnRiRlJoWnl3Z1hDSThKREUrUEM4a01qNWNJaUFwSUNzZ2QzSmhjRnNnTWlCZE8xeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHVnpZMlZ1WkNCMGFISnZkV2RvSUhkeVlYQndaWEp6SUhSdklIUm9aU0J5YVdkb2RDQmpiMjUwWlc1MFhHNWNkRngwWEhSY2RGeDBhaUE5SUhkeVlYQmJJREFnWFR0Y2JseDBYSFJjZEZ4MFhIUjNhR2xzWlNBb0lHb3RMU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSFJ0Y0NBOUlIUnRjQzVzWVhOMFEyaHBiR1E3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1VYUlhaV0pMYVhRc0lGQm9ZVzUwYjIxS1UxeHVYSFJjZEZ4MFhIUmNkQzh2SUhCMWMyZ3VZWEJ3Ykhrb1h5d2dZWEp5WVhsc2FXdGxLU0IwYUhKdmQzTWdiMjRnWVc1amFXVnVkQ0JYWldKTGFYUmNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3ViV1Z5WjJVb0lHNXZaR1Z6TENCMGJYQXVZMmhwYkdST2IyUmxjeUFwTzF4dVhHNWNkRngwWEhSY2RGeDBMeThnVW1WdFpXMWlaWElnZEdobElIUnZjQzFzWlhabGJDQmpiMjUwWVdsdVpYSmNibHgwWEhSY2RGeDBYSFIwYlhBZ1BTQm1jbUZuYldWdWRDNW1hWEp6ZEVOb2FXeGtPMXh1WEc1Y2RGeDBYSFJjZEZ4MEx5OGdSVzV6ZFhKbElIUm9aU0JqY21WaGRHVmtJRzV2WkdWeklHRnlaU0J2Y25Cb1lXNWxaQ0FvSXpFeU16a3lLVnh1WEhSY2RGeDBYSFJjZEhSdGNDNTBaWGgwUTI5dWRHVnVkQ0E5SUZ3aVhDSTdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJTWlcxdmRtVWdkM0poY0hCbGNpQm1jbTl0SUdaeVlXZHRaVzUwWEc1Y2RGeDBabkpoWjIxbGJuUXVkR1Y0ZEVOdmJuUmxiblFnUFNCY0lsd2lPMXh1WEc1Y2RGeDBhU0E5SURBN1hHNWNkRngwZDJocGJHVWdLQ0FvWld4bGJTQTlJRzV2WkdWeld5QnBLeXNnWFNrZ0tTQjdYRzVjYmx4MFhIUmNkQzh2SUNNME1EZzNJQzBnU1dZZ2IzSnBaMmx1SUdGdVpDQmtaWE4wYVc1aGRHbHZiaUJsYkdWdFpXNTBjeUJoY21VZ2RHaGxJSE5oYldVc0lHRnVaQ0IwYUdseklHbHpYRzVjZEZ4MFhIUXZMeUIwYUdGMElHVnNaVzFsYm5Rc0lHUnZJRzV2ZENCa2J5QmhibmwwYUdsdVoxeHVYSFJjZEZ4MGFXWWdLQ0J6Wld4bFkzUnBiMjRnSmlZZ2FsRjFaWEo1TG1sdVFYSnlZWGtvSUdWc1pXMHNJSE5sYkdWamRHbHZiaUFwSUNFOVBTQXRNU0FwSUh0Y2JseDBYSFJjZEZ4MFkyOXVkR2x1ZFdVN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RHTnZiblJoYVc1eklEMGdhbEYxWlhKNUxtTnZiblJoYVc1ektDQmxiR1Z0TG05M2JtVnlSRzlqZFcxbGJuUXNJR1ZzWlcwZ0tUdGNibHh1WEhSY2RGeDBMeThnUVhCd1pXNWtJSFJ2SUdaeVlXZHRaVzUwWEc1Y2RGeDBYSFIwYlhBZ1BTQm5aWFJCYkd3b0lHWnlZV2R0Wlc1MExtRndjR1Z1WkVOb2FXeGtLQ0JsYkdWdElDa3NJRndpYzJOeWFYQjBYQ0lnS1R0Y2JseHVYSFJjZEZ4MEx5OGdVSEpsYzJWeWRtVWdjMk55YVhCMElHVjJZV3gxWVhScGIyNGdhR2x6ZEc5eWVWeHVYSFJjZEZ4MGFXWWdLQ0JqYjI1MFlXbHVjeUFwSUh0Y2JseDBYSFJjZEZ4MGMyVjBSMnh2WW1Gc1JYWmhiQ2dnZEcxd0lDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVOaGNIUjFjbVVnWlhobFkzVjBZV0pzWlhOY2JseDBYSFJjZEdsbUlDZ2djMk55YVhCMGN5QXBJSHRjYmx4MFhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUmNkSGRvYVd4bElDZ2dLR1ZzWlcwZ1BTQjBiWEJiSUdvckt5QmRLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnBaaUFvSUhKelkzSnBjSFJVZVhCbExuUmxjM1FvSUdWc1pXMHVkSGx3WlNCOGZDQmNJbHdpSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSelkzSnBjSFJ6TG5CMWMyZ29JR1ZzWlcwZ0tUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdabkpoWjIxbGJuUTdYRzVjZEgwc1hHNWNibHgwWTJ4bFlXNUVZWFJoT2lCbWRXNWpkR2x2YmlnZ1pXeGxiWE1nS1NCN1hHNWNkRngwZG1GeUlHUmhkR0VzSUdWc1pXMHNJSFI1Y0dVc0lHdGxlU3hjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkN4Y2JseDBYSFJjZEdrZ1BTQXdPMXh1WEc1Y2RGeDBabTl5SUNnZ095QW9aV3hsYlNBOUlHVnNaVzF6V3lCcElGMHBJQ0U5UFNCMWJtUmxabWx1WldRN0lHa3JLeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtRmpZMlZ3ZEVSaGRHRW9JR1ZzWlcwZ0tTQXBJSHRjYmx4MFhIUmNkRngwYTJWNUlEMGdaV3hsYlZzZ1pHRjBZVjl3Y21sMkxtVjRjR0Z1Wkc4Z1hUdGNibHh1WEhSY2RGeDBYSFJwWmlBb0lHdGxlU0FtSmlBb1pHRjBZU0E5SUdSaGRHRmZjSEpwZGk1all
14938XTm9aVnNnYTJWNUlGMHBJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnWkdGMFlTNWxkbVZ1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSbWIzSWdLQ0IwZVhCbElHbHVJR1JoZEdFdVpYWmxiblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhScFppQW9JSE53WldOcFlXeGJJSFI1Y0dVZ1hTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWNtVnRiM1psS0NCbGJHVnRMQ0IwZVhCbElDazdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnVkdocGN5QnBjeUJoSUhOb2IzSjBZM1YwSUhSdklHRjJiMmxrSUdwUmRXVnllUzVsZG1WdWRDNXlaVzF2ZG1VbmN5QnZkbVZ5YUdWaFpGeHVYSFJjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdwUmRXVnllUzV5WlcxdmRtVkZkbVZ1ZENnZ1pXeGxiU3dnZEhsd1pTd2daR0YwWVM1b1lXNWtiR1VnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUnBaaUFvSUdSaGRHRmZjSEpwZGk1allXTm9aVnNnYTJWNUlGMGdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUXZMeUJFYVhOallYSmtJR0Z1ZVNCeVpXMWhhVzVwYm1jZ1lIQnlhWFpoZEdWZ0lHUmhkR0ZjYmx4MFhIUmNkRngwWEhSY2RHUmxiR1YwWlNCa1lYUmhYM0J5YVhZdVkyRmphR1ZiSUd0bGVTQmRPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MEx5OGdSR2x6WTJGeVpDQmhibmtnY21WdFlXbHVhVzVuSUdCMWMyVnlZQ0JrWVhSaFhHNWNkRngwWEhSa1pXeGxkR1VnWkdGMFlWOTFjMlZ5TG1OaFkyaGxXeUJsYkdWdFd5QmtZWFJoWDNWelpYSXVaWGh3WVc1a2J5QmRJRjA3WEc1Y2RGeDBmVnh1WEhSOVhHNTlLVHRjYmx4dWFsRjFaWEo1TG1adUxtVjRkR1Z1WkNoN1hHNWNkSFJsZUhRNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSeVpYUjFjbTRnWVdOalpYTnpLQ0IwYUdsekxDQm1kVzVqZEdsdmJpZ2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2RtRnNkV1VnUFQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNTBaWGgwS0NCMGFHbHpJQ2tnT2x4dVhIUmNkRngwWEhSMGFHbHpMbVZ0Y0hSNUtDa3VaV0ZqYUNobWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lIUm9hWE11Ym05a1pWUjVjR1VnUFQwOUlERWdmSHdnZEdocGN5NXViMlJsVkhsd1pTQTlQVDBnTVRFZ2ZId2dkR2hwY3k1dWIyUmxWSGx3WlNBOVBUMGdPU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSFJvYVhNdWRHVjRkRU52Ym5SbGJuUWdQU0IyWVd4MVpUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgwcE8xeHVYSFJjZEgwc0lHNTFiR3dzSUhaaGJIVmxMQ0JoY21kMWJXVnVkSE11YkdWdVozUm9JQ2s3WEc1Y2RIMHNYRzVjYmx4MFlYQndaVzVrT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWtiMjFOWVc1cGNDZ2dZWEpuZFcxbGJuUnpMQ0JtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2RHaHBjeTV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0IwYUdsekxtNXZaR1ZVZVhCbElEMDlQU0F4TVNCOGZDQjBhR2x6TG01dlpHVlVlWEJsSUQwOVBTQTVJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdkR0Z5WjJWMElEMGdiV0Z1YVhCMWJHRjBhVzl1VkdGeVoyVjBLQ0IwYUdsekxDQmxiR1Z0SUNrN1hHNWNkRngwWEhSY2RIUmhjbWRsZEM1aGNIQmxibVJEYUdsc1pDZ2daV3hsYlNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwcE8xeHVYSFI5TEZ4dVhHNWNkSEJ5WlhCbGJtUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG1SdmJVMWhibWx3S0NCaGNtZDFiV1Z1ZEhNc0lHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwYUdsekxtNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElIUm9hWE11Ym05a1pWUjVjR1VnUFQwOUlERXhJSHg4SUhSb2FYTXVibTlrWlZSNWNHVWdQVDA5SURrZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoY2lCMFlYSm5aWFFnUFNCdFlXNXBjSFZzWVhScGIyNVVZWEpuWlhRb0lIUm9hWE1zSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwZEdGeVoyVjBMbWx1YzJWeWRFSmxabTl5WlNnZ1pXeGxiU3dnZEdGeVoyVjBMbVpwY25OMFEyaHBiR1FnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4dVhIUmlaV1p2Y21VNklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVJ2YlUxaGJtbHdLQ0JoY21kMWJXVnVkSE1zSUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQjBhR2x6TG5CaGNtVnVkRTV2WkdVZ0tTQjdYRzVjZEZ4MFhIUmNkSFJvYVhNdWNHRnlaVzUwVG05a1pTNXBibk5sY25SQ1pXWnZjbVVvSUdWc1pXMHNJSFJvYVhNZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlN4Y2JseHVYSFJoWm5SbGNqb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Wkc5dFRXRnVhWEFvSUdGeVozVnRaVzUwY3l3Z1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhScFppQW9JSFJvYVhNdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwZEdocGN5NXdZWEpsYm5ST2IyUmxMbWx1YzJWeWRFSmxabTl5WlNnZ1pXeGxiU3dnZEdocGN5NXVaWGgwVTJsaWJHbHVaeUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDBwTzF4dVhIUjlMRnh1WEc1Y2RISmxiVzkyWlRvZ1puVnVZM1JwYjI0b0lITmxiR1ZqZEc5eUxDQnJaV1Z3UkdGMFlTQXZLaUJKYm5SbGNtNWhiQ0JWYzJVZ1QyNXNlU0FxTHlBcElIdGNibHgwWEhSMllYSWdaV3hsYlN4Y2JseDBYSFJjZEdWc1pXMXpJRDBnYzJWc1pXTjBiM0lnUHlCcVVYVmxjbmt1Wm1sc2RHVnlLQ0J6Wld4bFkzUnZjaXdnZEdocGN5QXBJRG9nZEdocGN5eGNibHgwWEhSY2RHa2dQU0F3TzF4dVhHNWNkRngwWm05eUlDZ2dPeUFvWld4bGJTQTlJR1ZzWlcxelcybGRLU0FoUFNCdWRXeHNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUNGclpXVndSR0YwWVNBbUppQmxiR1Z0TG01dlpHVlVlWEJsSUQwOVBTQXhJQ2tnZTF4dVhIUmNkRngwWEhScVVYVmxjbmt1WTJ4bFlXNUVZWFJoS0NCblpYUkJiR3dvSUdWc1pXMGdLU0FwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhScFppQW9JR1ZzWlcwdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQnJaV1Z3UkdGMFlTQW1KaUJxVVhWbGNua3VZMjl1ZEdGcGJuTW9JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkQ3dnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RITmxkRWRzYjJKaGJFVjJZV3dvSUdkbGRFRnNiQ2dnWld4bGJTd2dYQ0p6WTNKcGNIUmNJaUFwSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBaV3hsYlM1d1lYSmxiblJPYjJSbExuSmxiVzkyWlVOb2FXeGtLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjZEgwc1hHNWNibHgwWlcxd2RIazZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSFpoY2lCbGJHVnRMRnh1WEhSY2RGeDBhU0E5SURBN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUNobGJHVnRJRDBnZEdocGMxdHBYU2tnSVQwZ2JuVnNiRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBhV1lnS0NCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklGQnlaWFpsYm5RZ2JXVnRiM0o1SUd4bFlXdHpYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2daV3hsYlN3Z1ptRnNjMlVnS1NBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUZKbGJXOTJaU0JoYm5rZ2NtVnRZV2x1YVc1bklHNXZaR1Z6WEc1Y2RGeDBYSFJjZEdWc1pXMHVkR1Y0ZEVOdmJuUmxiblFnUFNCY0lsd2lPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSOUxGeHVYRzVjZEdOc2IyNWxPaUJtZFc1amRHbHZiaWdnWkdGMFlVRnVaRVYyWlc1MGN5d2daR1ZsY0VSaGRHRkJibVJGZG1WdWRITWdLU0I3WEc1Y2RGeDBaR0YwWVVGdVpFVjJaVzUwY3lBOUlHUmhkR0ZCYm1SRmRtVnVkSE1nUFQwZ2JuVnNiQ0EvSUdaaGJITmxJRG9nWkdGMFlVRnVaRVYyWlc1MGN6dGNibHgwWEhSa1pXVndSR0YwWVVGdVpFVjJaVzUwY3lBOUlHUmxaWEJFWVhSaFFXNWtSWFpsYm5SeklEMDlJRzUxYkd3Z1B5QmtZWFJoUVc1a1JYWmxiblJ6SURvZ1pHVmxjRVJoZEdGQmJtUkZkbVZ1ZEhNN1hHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXRZWEFvWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbU5zYjI1bEtDQjBhR2x6TENCa1lYUmhRVzVrUlhabGJuUnpMQ0JrWldWd1JHRjBZVUZ1WkVWMlpXNTBjeUFwTzF4dVhIUmNkSDBwTzF4dVhIUjlMRnh1WEc1Y2RHaDBiV3c2SUdaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdZV05qWlhOektDQjBhR2x6TENCbWRXNWpkR2x2YmlnZ2RtRnNkV1VnS1NCN1hHNWNkRngwWEhSMllYSWdaV3hsYlNBOUlIUm9hWE5iSURBZ1hTQjhmQ0I3ZlN4Y2JseDBYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJjZEd3Z1BTQjBhR2x6TG14bGJtZDBhRHRjYmx4dVhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdkVzVrWldacGJtVmtJQ1ltSUdWc1pXMHVibTlrWlZSNWNHVWdQVDA5SURFZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQmxiR1Z0TG1sdWJtVnlTRlJOVER0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlZsSUdsbUlIZGxJR05oYmlCMFlXdGxJR0VnYzJodmNuUmpkWFFnWVc1a0lHcDFjM1FnZFhObElHbHVibVZ5U0ZSTlRGeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ0lYSnViMGx1Ym1WeWFIUnRiQzUwWlhOMEtDQjJZV3gxWlNBcElDWW1YRzVjZEZ4MFhIUmNkQ0YzY21Gd1RXRndXeUFvSUhKMFlXZE9ZVzFsTG1WNFpXTW9JSFpoYkhWbElDa2dmSHdnV3lCY0lsd2lMQ0JjSWx3aUlGMGdLVnNnTVNCZExuUnZURzkzWlhKRFlYTmxLQ2tnWFNBcElIdGNibHh1WEhSY2RGeDBYSFIyWVd4MVpTQTlJSFpoYkhWbExuSmxjR3hoWTJVb0lISjRhSFJ0YkZSaFp5d2dYQ0k4SkRFK1BDOGtNajVjSWlBcE8xeHVYRzVjZEZ4MFhIUmNkSFJ5ZVNCN1hHNWNkRngwWEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkRzZ2FTc3JJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlNBOUlIUm9hWE5iSUdrZ1hTQjhmQ0I3ZlR0Y2JseHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1VtVnRiM1psSUdWc1pXMWxiblFnYm05a1pYTWdZVzVrSUhCeVpYWmxiblFnYldWdGIzSjVJR3hsWVd0elhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2daV3hsYlN3Z1ptRnNjMlVnS1NBcE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSbGJHVnRMbWx1Ym1WeVNGUk5UQ0E5SUhaaGJIVmxPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSY2RHVnNaVzBnUFNBd08xeHVYRzVjZEZ4MFhIUmNkQzh2SUVsbUlIVnphVzVuSUdsdWJtVnlTRlJOVENCMGFISnZkM01nWVc0Z1pYaGpaWEIwYVc5dUxDQjFjMlVnZEdobElHWmhiR3hpWVdOcklHMWxkR2h2WkZ4dVhIUmNkRngwWEhSOUlHTmhkR05vS0NCbElDa2dlMzFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUjBhR2x6TG1WdGNIUjVLQ2t1WVhCd1pXNWtLQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHNJRzUxYkd3c0lIWmhiSFZsTENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUNrN1hHNWNkSDBzWEc1Y2JseDBjbVZ3YkdGalpWZHBkR2c2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhaaGNpQmhjbWNnUFNCaGNtZDFiV1Z1ZEhOYklEQWdYVHRjYmx4dVhIUmNkQzh2SUUxaGEyVWdkR2hsSUdOb1lXNW5aWE1zSUhKbGNHeGhZMmx1WnlCbFlXTm9JR052Ym5SbGVIUWdaV3hsYldWdWRDQjNhWFJvSUhSb1pTQnVaWGNnWTI5dWRHVnVkRnh1WEhSY2RIUm9hWE11Wkc5dFRXRnVhWEFvSUdGeVozVnRaVzUwY3l3Z1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSaGNtY2dQU0IwYUdsekxuQmhjbVZ1ZEU1dlpHVTdYRzVjYmx4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2dkR2hwY3lBcElDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ1lYSm5JQ2tnZTF4dVhIUmNkRngwWEhSaGNtY3VjbVZ3YkdGalpVTm9hV3hrS0NCbGJHVnRMQ0IwYUdseklDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZTazdYRzVjYmx4MFhIUXZMeUJHYjNKalpTQnlaVzF2ZG1Gc0lHbG1JSFJvWlhKbElIZGhjeUJ1YnlCdVpYY2dZMjl1ZEdWdWRDQW9aUzVuTGl3Z1puSnZiU0JsYlhCMGVTQmhjbWQxYldWdWRITXBYRzVjZEZ4MGNtVjBkWEp1SUdGeVp5QW1KaUFvWVhKbkxteGxibWQwYUNCOGZDQmhjbWN1Ym05a1pWUjVjR1VwSUQ4Z2RHaHBjeUE2SUhSb2FYTXVjbVZ0YjNabEtDazdYRzVjZEgwc1hHNWNibHgwWkdWMFlXTm9PaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0lnS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdWNtVnRiM1psS0NCelpXeGxZM1J2Y2l3Z2RISjFaU0FwTzF4dVhIUjlMRnh1WEc1Y2RHUnZiVTFoYm1sd09pQm1kVzVqZEdsdmJpZ2dZWEpuY3l3Z1kyRnNiR0poWTJzZ0tTQjdYRzVjYmx4MFhIUXZMeUJHYkdGMGRHVnVJR0Z1ZVNCdVpYTjBaV1FnWVhKeVlYbHpYRzVjZEZ4MFlYSm5jeUE5SUdOdmJtTmhkQzVoY0hCc2VTZ2dXMTBzSUdGeVozTWdLVHRjYmx4dVhIUmNkSFpoY2lCbWNtRm5iV1Z1ZEN3Z1ptbHljM1FzSUhOamNtbHdkSE1zSUdoaGMxTmpjbWx3ZEhNc0lHNXZaR1VzSUdSdll5eGNibHgwWEhSY2RHa2dQU0F3TEZ4dVhIUmNkRngwYkNBOUlIUm9hWE11YkdWdVozUm9MRnh1WEhSY2RGeDBjMlYwSUQwZ2RHaHBjeXhjYmx4MFhIUmNkR2xPYjBOc2IyNWxJRDBnYkNBdElERXNYRzVjZEZ4MFhIUjJZV3gxWlNBOUlHRnlaM05iSURBZ1hTeGNibHgwWEhSY2RHbHpSblZ1WTNScGIyNGdQU0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZG1Gc2RXVWdLVHRjYmx4dVhIUmNkQzh2SUZkbElHTmhiaWQwSUdOc2IyNWxUbTlrWlNCbWNtRm5iV1Z1ZEhNZ2RHaGhkQ0JqYjI1MFlXbHVJR05vWldOclpXUXNJR2x1SUZkbFlrdHBkRnh1WEhSY2RHbG1JQ2dnYVhOR2RXNWpkR2x2YmlCOGZGeHVYSFJjZEZ4MFhIUW9JR3dnUGlBeElDWW1JSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0p6ZEhKcGJtZGNJaUFtSmx4dVhIUmNkRngwWEhSY2RDRnpkWEJ3YjNKMExtTm9aV05yUTJ4dmJtVWdKaVlnY21Ob1pXTnJaV1F1ZEdWemRDZ2dkbUZzZFdVZ0tTQXBJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdnYVc1a1pYZ2dLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQnpaV3htSUQwZ2MyVjBMbVZ4S0NCcGJtUmxlQ0FwTzF4dVhIUmNkRngwWEhScFppQW9JR2x6Um5WdVkzUnBiMjRnS1NCN1hHNWNkRngwWEhSY2RGeDBZWEpuYzFzZ01DQmRJRDBnZG1Gc2RXVXVZMkZzYkNnZ2RHaHBjeXdnYVc1a1pYZ3NJSE5sYkdZdWFIUnRiQ2dwSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjMlZzWmk1a2IyMU5ZVzVwY0NnZ1lYSm5jeXdnWTJGc2JHSmhZMnNnS1R0Y2JseDBYSFJjZEgwcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2diQ0FwSUh0Y2JseDBYSFJjZEdaeVlXZHRaVzUwSUQwZ2FsRjFaWEo1TG1KMWFXeGtSbkpoWjIxbGJuUW9JR0Z5WjNNc0lIUm9hWE5iSURBZ1hTNXZkMjVsY2tSdlkzVnRaVzUwTENCbVlXeHpaU3dnZEdocGN5QXBPMXh1WEhSY2RGeDBabWx5YzNRZ1BTQm1jbUZuYldWdWRDNW1hWEp6ZEVOb2FXeGtPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHWnlZV2R0Wlc1MExtTm9hV3hrVG05a1pYTXViR1Z1WjNSb0lEMDlQU0F4SUNrZ2UxeHVYSFJjZEZ4MFhIUm1jbUZuYldWdWRDQTlJR1pwY25OME8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnBaaUFvSUdacGNuTjBJQ2tnZTF4dVhIUmNkRngwWEhSelkzSnBjSFJ6SUQwZ2FsRjFaWEo1TG0xaGNDZ2daMlYwUVd4c0tDQm1jbUZuYldWdWRDd2dYQ0p6WTNKcGNIUmNJaUFwTENCa2FYTmhZbXhsVTJOeWFYQjBJQ2s3WEc1Y2RGeDBYSFJjZEdoaGMxTmpjbWx3ZEhNZ1BTQnpZM0pwY0hSekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJWYzJVZ2RHaGxJRzl5YVdkcGJtRnNJR1p5WVdkdFpXNTBJR1p2Y2lCMGFHVWdiR0Z6ZENCcGRHVnRJR2x1YzNSbFlXUWdiMllnZEdobElHWnBjbk4wSUdKbFkyRjFjMlVnYVhRZ1kyRnVJR1Z1WkNCMWNGeHVYSFJjZEZ4MFhIUXZMeUJpWldsdVp5QmxiWEIwYVdWa0lHbHVZMjl5Y21WamRHeDVJR2x1SUdObGNuUmhhVzRnYzJsMGRXRjBhVzl1Y3lBb0l6Z3dOekFwTGx4dVhIUmNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYm05a1pTQTlJR1p5WVdkdFpXNTBPMXh1WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JwSUNFOVBTQnBUbTlEYkc5dVpTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHNXZaR1VnUFNCcVVYVmxjbmt1WTJ4dmJtVW9JRzV2WkdVc0lIUnlkV1VzSUhSeWRXVWdLVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBMeThnUzJWbGNDQnlaV1psY21WdVkyVnpJSFJ2SUdOc2IyNWxaQ0J6WTNKcGNIUnpJR1p2Y2lCc1lYUmxjaUJ5WlhOMGIzSmhkR2x2Ymx4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCb1lYTlRZM0pwY0hSeklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJSZEZkbFlrdHBkRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJxVVhWbGNua3ViV1Z5WjJVZ1ltVmpZWF
14938Z6WlNCd2RYTm9MbUZ3Y0d4NUtGOHNJR0Z5Y21GNWJHbHJaU2tnZEdoeWIzZHpYRzVjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1dFpYSm5aU2dnYzJOeWFYQjBjeXdnWjJWMFFXeHNLQ0J1YjJSbExDQmNJbk5qY21sd2RGd2lJQ2tnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFJqWVd4c1ltRmpheTVqWVd4c0tDQjBhR2x6V3lCcElGMHNJRzV2WkdVc0lHa2dLVHRjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RHbG1JQ2dnYUdGelUyTnlhWEIwY3lBcElIdGNibHgwWEhSY2RGeDBYSFJrYjJNZ1BTQnpZM0pwY0hSeld5QnpZM0pwY0hSekxteGxibWQwYUNBdElERWdYUzV2ZDI1bGNrUnZZM1Z0Wlc1ME8xeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1VtVmxibUZpYkdVZ2MyTnlhWEIwYzF4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1dFlYQW9JSE5qY21sd2RITXNJSEpsYzNSdmNtVlRZM0pwY0hRZ0tUdGNibHh1WEhSY2RGeDBYSFJjZEM4dklFVjJZV3gxWVhSbElHVjRaV04xZEdGaWJHVWdjMk55YVhCMGN5QnZiaUJtYVhKemRDQmtiMk4xYldWdWRDQnBibk5sY25ScGIyNWNibHgwWEhSY2RGeDBYSFJtYjNJZ0tDQnBJRDBnTURzZ2FTQThJR2hoYzFOamNtbHdkSE03SUdrckt5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHNXZaR1VnUFNCelkzSnBjSFJ6V3lCcElGMDdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JSEp6WTNKcGNIUlVlWEJsTG5SbGMzUW9JRzV2WkdVdWRIbHdaU0I4ZkNCY0lsd2lJQ2tnSmlaY2JseDBYSFJjZEZ4MFhIUmNkRngwSVdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUc1dlpHVXNJRndpWjJ4dlltRnNSWFpoYkZ3aUlDa2dKaVlnYWxGMVpYSjVMbU52Ym5SaGFXNXpLQ0JrYjJNc0lHNXZaR1VnS1NBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUc1dlpHVXVjM0pqSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RDOHZJRTl3ZEdsdmJtRnNJRUZLUVZnZ1pHVndaVzVrWlc1amVTd2dZblYwSUhkdmJpZDBJSEoxYmlCelkzSnBjSFJ6SUdsbUlHNXZkQ0J3Y21WelpXNTBYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBhV1lnS0NCcVVYVmxjbmt1WDJWMllXeFZjbXdnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUnFVWFZsY25rdVgyVjJZV3hWY213b0lHNXZaR1V1YzNKaklDazdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bmJHOWlZV3hGZG1Gc0tDQnViMlJsTG5SbGVIUkRiMjUwWlc1MExuSmxjR3hoWTJVb0lISmpiR1ZoYmxOamNtbHdkQ3dnWENKY0lpQXBJQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxZV05vS0h0Y2JseDBZWEJ3Wlc1a1ZHODZJRndpWVhCd1pXNWtYQ0lzWEc1Y2RIQnlaWEJsYm1SVWJ6b2dYQ0p3Y21Wd1pXNWtYQ0lzWEc1Y2RHbHVjMlZ5ZEVKbFptOXlaVG9nWENKaVpXWnZjbVZjSWl4Y2JseDBhVzV6WlhKMFFXWjBaWEk2SUZ3aVlXWjBaWEpjSWl4Y2JseDBjbVZ3YkdGalpVRnNiRG9nWENKeVpYQnNZV05sVjJsMGFGd2lYRzU5TENCbWRXNWpkR2x2YmlnZ2JtRnRaU3dnYjNKcFoybHVZV3dnS1NCN1hHNWNkR3BSZFdWeWVTNW1ibHNnYm1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUhObGJHVmpkRzl5SUNrZ2UxeHVYSFJjZEhaaGNpQmxiR1Z0Y3l4Y2JseDBYSFJjZEhKbGRDQTlJRnRkTEZ4dVhIUmNkRngwYVc1elpYSjBJRDBnYWxGMVpYSjVLQ0J6Wld4bFkzUnZjaUFwTEZ4dVhIUmNkRngwYkdGemRDQTlJR2x1YzJWeWRDNXNaVzVuZEdnZ0xTQXhMRnh1WEhSY2RGeDBhU0E5SURBN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUdrZ1BEMGdiR0Z6ZERzZ2FTc3JJQ2tnZTF4dVhIUmNkRngwWld4bGJYTWdQU0JwSUQwOVBTQnNZWE4wSUQ4Z2RHaHBjeUE2SUhSb2FYTXVZMnh2Ym1Vb0lIUnlkV1VnS1R0Y2JseDBYSFJjZEdwUmRXVnllU2dnYVc1elpYSjBXeUJwSUYwZ0tWc2diM0pwWjJsdVlXd2dYU2dnWld4bGJYTWdLVHRjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1VYUlhaV0pMYVhSY2JseDBYSFJjZEM4dklDNW5aWFFvS1NCaVpXTmhkWE5sSUhCMWMyZ3VZWEJ3Ykhrb1h5d2dZWEp5WVhsc2FXdGxLU0IwYUhKdmQzTmNibHgwWEhSY2RIQjFjMmd1WVhCd2JIa29JSEpsZEN3Z1pXeGxiWE11WjJWMEtDa2dLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV3ZFhOb1UzUmhZMnNvSUhKbGRDQXBPMXh1WEhSOU8xeHVmU2s3WEc1Y2JseHVkbUZ5SUdsbWNtRnRaU3hjYmx4MFpXeGxiV1JwYzNCc1lYa2dQU0I3ZlR0Y2JseHVMeW9xWEc0Z0tpQlNaWFJ5YVdWMlpTQjBhR1VnWVdOMGRXRnNJR1JwYzNCc1lYa2diMllnWVNCbGJHVnRaVzUwWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ2JtRnRaU0J1YjJSbFRtRnRaU0J2WmlCMGFHVWdaV3hsYldWdWRGeHVJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJR1J2WXlCRWIyTjFiV1Z1ZENCdlltcGxZM1JjYmlBcUwxeHVMeThnUTJGc2JHVmtJRzl1YkhrZ1puSnZiU0IzYVhSb2FXNGdaR1ZtWVhWc2RFUnBjM0JzWVhsY2JtWjFibU4wYVc5dUlHRmpkSFZoYkVScGMzQnNZWGtvSUc1aGJXVXNJR1J2WXlBcElIdGNibHgwZG1GeUlITjBlV3hsTEZ4dVhIUmNkR1ZzWlcwZ1BTQnFVWFZsY25rb0lHUnZZeTVqY21WaGRHVkZiR1Z0Wlc1MEtDQnVZVzFsSUNrZ0tTNWhjSEJsYm1SVWJ5Z2daRzlqTG1KdlpIa2dLU3hjYmx4dVhIUmNkQzh2SUdkbGRFUmxabUYxYkhSRGIyMXdkWFJsWkZOMGVXeGxJRzFwWjJoMElHSmxJSEpsYkdsaFlteDVJSFZ6WldRZ2IyNXNlU0J2YmlCaGRIUmhZMmhsWkNCbGJHVnRaVzUwWEc1Y2RGeDBaR2x6Y0d4aGVTQTlJSGRwYm1SdmR5NW5aWFJFWldaaGRXeDBRMjl0Y0hWMFpXUlRkSGxzWlNBbUppQW9JSE4wZVd4bElEMGdkMmx1Wkc5M0xtZGxkRVJsWm1GMWJIUkRiMjF3ZFhSbFpGTjBlV3hsS0NCbGJHVnRXeUF3SUYwZ0tTQXBJRDljYmx4dVhIUmNkRngwTHk4Z1ZYTmxJRzltSUhSb2FYTWdiV1YwYUc5a0lHbHpJR0VnZEdWdGNHOXlZWEo1SUdacGVDQW9iVzl5WlNCc2FXdGxJRzl3ZEdsdGFYcGhkR2x2YmlrZ2RXNTBhV3dnYzI5dFpYUm9hVzVuSUdKbGRIUmxjaUJqYjIxbGN5QmhiRzl1Wnl4Y2JseDBYSFJjZEM4dklITnBibU5sSUdsMElIZGhjeUJ5WlcxdmRtVmtJR1p5YjIwZ2MzQmxZMmxtYVdOaGRHbHZiaUJoYm1RZ2MzVndjRzl5ZEdWa0lHOXViSGtnYVc0Z1JrWmNibHgwWEhSY2RITjBlV3hsTG1ScGMzQnNZWGtnT2lCcVVYVmxjbmt1WTNOektDQmxiR1Z0V3lBd0lGMHNJRndpWkdsemNHeGhlVndpSUNrN1hHNWNibHgwTHk4Z1YyVWdaRzl1SjNRZ2FHRjJaU0JoYm5rZ1pHRjBZU0J6ZEc5eVpXUWdiMjRnZEdobElHVnNaVzFsYm5Rc1hHNWNkQzh2SUhOdklIVnpaU0JjSW1SbGRHRmphRndpSUcxbGRHaHZaQ0JoY3lCbVlYTjBJSGRoZVNCMGJ5Qm5aWFFnY21sa0lHOW1JSFJvWlNCbGJHVnRaVzUwWEc1Y2RHVnNaVzB1WkdWMFlXTm9LQ2s3WEc1Y2JseDBjbVYwZFhKdUlHUnBjM0JzWVhrN1hHNTlYRzVjYmk4cUtseHVJQ29nVkhKNUlIUnZJR1JsZEdWeWJXbHVaU0IwYUdVZ1pHVm1ZWFZzZENCa2FYTndiR0Y1SUhaaGJIVmxJRzltSUdGdUlHVnNaVzFsYm5SY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQnViMlJsVG1GdFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCa1pXWmhkV3gwUkdsemNHeGhlU2dnYm05a1pVNWhiV1VnS1NCN1hHNWNkSFpoY2lCa2IyTWdQU0JrYjJOMWJXVnVkQ3hjYmx4MFhIUmthWE53YkdGNUlEMGdaV3hsYldScGMzQnNZWGxiSUc1dlpHVk9ZVzFsSUYwN1hHNWNibHgwYVdZZ0tDQWhaR2x6Y0d4aGVTQXBJSHRjYmx4MFhIUmthWE53YkdGNUlEMGdZV04wZFdGc1JHbHpjR3hoZVNnZ2JtOWtaVTVoYldVc0lHUnZZeUFwTzF4dVhHNWNkRngwTHk4Z1NXWWdkR2hsSUhOcGJYQnNaU0IzWVhrZ1ptRnBiSE1zSUhKbFlXUWdabkp2YlNCcGJuTnBaR1VnWVc0Z2FXWnlZVzFsWEc1Y2RGeDBhV1lnS0NCa2FYTndiR0Y1SUQwOVBTQmNJbTV2Ym1WY0lpQjhmQ0FoWkdsemNHeGhlU0FwSUh0Y2JseHVYSFJjZEZ4MEx5OGdWWE5sSUhSb1pTQmhiSEpsWVdSNUxXTnlaV0YwWldRZ2FXWnlZVzFsSUdsbUlIQnZjM05wWW14bFhHNWNkRngwWEhScFpuSmhiV1VnUFNBb2FXWnlZVzFsSUh4OElHcFJkV1Z5ZVNnZ1hDSThhV1p5WVcxbElHWnlZVzFsWW05eVpHVnlQU2N3SnlCM2FXUjBhRDBuTUNjZ2FHVnBaMmgwUFNjd0p5OCtYQ0lnS1NrdVlYQndaVzVrVkc4b0lHUnZZeTVrYjJOMWJXVnVkRVZzWlcxbGJuUWdLVHRjYmx4dVhIUmNkRngwTHk4Z1FXeDNZWGx6SUhkeWFYUmxJR0VnYm1WM0lFaFVUVXdnYzJ0bGJHVjBiMjRnYzI4Z1YyVmlhMmwwSUdGdVpDQkdhWEpsWm05NElHUnZiaWQwSUdOb2IydGxJRzl1SUhKbGRYTmxYRzVjZEZ4MFhIUmtiMk1nUFNCcFpuSmhiV1ZiSURBZ1hTNWpiMjUwWlc1MFJHOWpkVzFsYm5RN1hHNWNibHgwWEhSY2RDOHZJRk4xY0hCdmNuUTZJRWxGWEc1Y2RGeDBYSFJrYjJNdWQzSnBkR1VvS1R0Y2JseDBYSFJjZEdSdll5NWpiRzl6WlNncE8xeHVYRzVjZEZ4MFhIUmthWE53YkdGNUlEMGdZV04wZFdGc1JHbHpjR3hoZVNnZ2JtOWtaVTVoYldVc0lHUnZZeUFwTzF4dVhIUmNkRngwYVdaeVlXMWxMbVJsZEdGamFDZ3BPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRk4wYjNKbElIUm9aU0JqYjNKeVpXTjBJR1JsWm1GMWJIUWdaR2x6Y0d4aGVWeHVYSFJjZEdWc1pXMWthWE53Y
14938kdGNVd5QnViMlJsVG1GdFpTQmRJRDBnWkdsemNHeGhlVHRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJrYVhOd2JHRjVPMXh1ZlZ4dWRtRnlJSEp0WVhKbmFXNGdQU0FvTDE1dFlYSm5hVzR2S1R0Y2JseHVkbUZ5SUhKdWRXMXViMjV3ZUNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGloY0lpQXJJSEJ1ZFcwZ0t5QmNJaWtvUHlGd2VDbGJZUzE2SlYwckpGd2lMQ0JjSW1sY0lpQXBPMXh1WEc1MllYSWdaMlYwVTNSNWJHVnpJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLeXdnUm1seVpXWnZlRHc5TXpBcklDZ2pNVFV3T1Rnc0lDTXhOREUxTUNsY2JseDBYSFF2THlCSlJTQjBhSEp2ZDNNZ2IyNGdaV3hsYldWdWRITWdZM0psWVhSbFpDQnBiaUJ3YjNCMWNITmNibHgwWEhRdkx5QkdSaUJ0WldGdWQyaHBiR1VnZEdoeWIzZHpJRzl1SUdaeVlXMWxJR1ZzWlcxbGJuUnpJSFJvY205MVoyZ2dYQ0prWldaaGRXeDBWbWxsZHk1blpYUkRiMjF3ZFhSbFpGTjBlV3hsWENKY2JseDBYSFJwWmlBb0lHVnNaVzB1YjNkdVpYSkViMk4xYldWdWRDNWtaV1poZFd4MFZtbGxkeTV2Y0dWdVpYSWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaV3hsYlM1dmQyNWxja1J2WTNWdFpXNTBMbVJsWm1GMWJIUldhV1YzTG1kbGRFTnZiWEIxZEdWa1UzUjViR1VvSUdWc1pXMHNJRzUxYkd3Z0tUdGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZDJsdVpHOTNMbWRsZEVOdmJYQjFkR1ZrVTNSNWJHVW9JR1ZzWlcwc0lHNTFiR3dnS1R0Y2JseDBmVHRjYmx4dVhHNWNibVoxYm1OMGFXOXVJR04xY2tOVFV5Z2daV3hsYlN3Z2JtRnRaU3dnWTI5dGNIVjBaV1FnS1NCN1hHNWNkSFpoY2lCM2FXUjBhQ3dnYldsdVYybGtkR2dzSUcxaGVGZHBaSFJvTENCeVpYUXNYRzVjZEZ4MGMzUjViR1VnUFNCbGJHVnRMbk4wZVd4bE8xeHVYRzVjZEdOdmJYQjFkR1ZrSUQwZ1kyOXRjSFYwWldRZ2ZId2daMlYwVTNSNWJHVnpLQ0JsYkdWdElDazdYRzVjYmx4MEx5OGdVM1Z3Y0c5eWREb2dTVVU1WEc1Y2RDOHZJR2RsZEZCeWIzQmxjblI1Vm1Gc2RXVWdhWE1nYjI1c2VTQnVaV1ZrWldRZ1ptOXlJQzVqYzNNb0oyWnBiSFJsY2ljcElDZ2pNVEkxTXpjcFhHNWNkR2xtSUNnZ1kyOXRjSFYwWldRZ0tTQjdYRzVjZEZ4MGNtVjBJRDBnWTI5dGNIVjBaV1F1WjJWMFVISnZjR1Z5ZEhsV1lXeDFaU2dnYm1GdFpTQXBJSHg4SUdOdmJYQjFkR1ZrV3lCdVlXMWxJRjA3WEc1Y2RIMWNibHh1WEhScFppQW9JR052YlhCMWRHVmtJQ2tnZTF4dVhHNWNkRngwYVdZZ0tDQnlaWFFnUFQwOUlGd2lYQ0lnSmlZZ0lXcFJkV1Z5ZVM1amIyNTBZV2x1Y3lnZ1pXeGxiUzV2ZDI1bGNrUnZZM1Z0Wlc1MExDQmxiR1Z0SUNrZ0tTQjdYRzVjZEZ4MFhIUnlaWFFnUFNCcVVYVmxjbmt1YzNSNWJHVW9JR1ZzWlcwc0lHNWhiV1VnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCVGRYQndiM0owT2lCcFQxTWdQQ0EyWEc1Y2RGeDBMeThnUVNCMGNtbGlkWFJsSUhSdklIUm9aU0JjSW1GM1pYTnZiV1VnYUdGamF5QmllU0JFWldGdUlFVmtkMkZ5WkhOY0lseHVYSFJjZEM4dklHbFBVeUE4SURZZ0tHRjBJR3hsWVhOMEtTQnlaWFIxY201eklIQmxjbU5sYm5SaFoyVWdabTl5SUdFZ2JHRnlaMlZ5SUhObGRDQnZaaUIyWVd4MVpYTXNJR0oxZENCM2FXUjBhQ0J6WldWdGN5QjBieUJpWlNCeVpXeHBZV0pzZVNCd2FYaGxiSE5jYmx4MFhIUXZMeUIwYUdseklHbHpJR0ZuWVdsdWMzUWdkR2hsSUVOVFUwOU5JR1J5WVdaMElITndaV002SUdoMGRIQTZMeTlrWlhZdWR6TXViM0puTDJOemMzZG5MMk56YzI5dEx5TnlaWE52YkhabFpDMTJZV3gxWlhOY2JseDBYSFJwWmlBb0lISnVkVzF1YjI1d2VDNTBaWE4wS0NCeVpYUWdLU0FtSmlCeWJXRnlaMmx1TG5SbGMzUW9JRzVoYldVZ0tTQXBJSHRjYmx4dVhIUmNkRngwTHk4Z1VtVnRaVzFpWlhJZ2RHaGxJRzl5YVdkcGJtRnNJSFpoYkhWbGMxeHVYSFJjZEZ4MGQybGtkR2dnUFNCemRIbHNaUzUzYVdSMGFEdGNibHgwWEhSY2RHMXBibGRwWkhSb0lEMGdjM1I1YkdVdWJXbHVWMmxrZEdnN1hHNWNkRngwWEhSdFlYaFhhV1IwYUNBOUlITjBlV3hsTG0xaGVGZHBaSFJvTzF4dVhHNWNkRngwWEhRdkx5QlFkWFFnYVc0Z2RHaGxJRzVsZHlCMllXeDFaWE1nZEc4Z1oyVjBJR0VnWTI5dGNIVjBaV1FnZG1Gc2RXVWdiM1YwWEc1Y2RGeDBYSFJ6ZEhsc1pTNXRhVzVYYVdSMGFDQTlJSE4wZVd4bExtMWhlRmRwWkhSb0lEMGdjM1I1YkdVdWQybGtkR2dnUFNCeVpYUTdYRzVjZEZ4MFhIUnlaWFFnUFNCamIyMXdkWFJsWkM1M2FXUjBhRHRjYmx4dVhIUmNkRngwTHk4Z1VtVjJaWEowSUhSb1pTQmphR0Z1WjJWa0lIWmhiSFZsYzF4dVhIUmNkRngwYzNSNWJHVXVkMmxrZEdnZ1BTQjNhV1IwYUR0Y2JseDBYSFJjZEhOMGVXeGxMbTFwYmxkcFpIUm9JRDBnYldsdVYybGtkR2c3WEc1Y2RGeDBYSFJ6ZEhsc1pTNXRZWGhYYVdSMGFDQTlJRzFoZUZkcFpIUm9PMXh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQnlaWFFnSVQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dTVVZjYmx4MFhIUXZMeUJKUlNCeVpYUjFjbTV6SUhwSmJtUmxlQ0IyWVd4MVpTQmhjeUJoYmlCcGJuUmxaMlZ5TGx4dVhIUmNkSEpsZENBcklGd2lYQ0lnT2x4dVhIUmNkSEpsZER0Y2JuMWNibHh1WEc1bWRXNWpkR2x2YmlCaFpHUkhaWFJJYjI5clNXWW9JR052Ym1ScGRHbHZia1p1TENCb2IyOXJSbTRnS1NCN1hHNWNkQzh2SUVSbFptbHVaU0IwYUdVZ2FHOXZheXdnZDJVbmJHd2dZMmhsWTJzZ2IyNGdkR2hsSUdacGNuTjBJSEoxYmlCcFppQnBkQ2R6SUhKbFlXeHNlU0J1WldWa1pXUXVYRzVjZEhKbGRIVnliaUI3WEc1Y2RGeDBaMlYwT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RHbG1JQ2dnWTI5dVpHbDBhVzl1Um00b0tTQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1NHOXZheUJ1YjNRZ2JtVmxaR1ZrSUNodmNpQnBkQ2R6SUc1dmRDQndiM056YVdKc1pTQjBieUIxYzJVZ2FYUWdaSFZsWEc1Y2RGeDBYSFJjZEM4dklIUnZJRzFwYzNOcGJtY2daR1Z3Wlc1a1pXNWplU2tzSUhKbGJXOTJaU0JwZEM1Y2JseDBYSFJjZEZ4MFpHVnNaWFJsSUhSb2FYTXVaMlYwTzF4dVhIUmNkRngwWEhSeVpYUjFjbTQ3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFaHZiMnNnYm1WbFpHVmtPeUJ5WldSbFptbHVaU0JwZENCemJ5QjBhR0YwSUhSb1pTQnpkWEJ3YjNKMElIUmxjM1FnYVhNZ2JtOTBJR1Y0WldOMWRHVmtJR0ZuWVdsdUxseHVYSFJjZEZ4MGNtVjBkWEp1SUNoMGFHbHpMbWRsZENBOUlHaHZiMnRHYmlrdVlYQndiSGtvSUhSb2FYTXNJR0Z5WjNWdFpXNTBjeUFwTzF4dVhIUmNkSDFjYmx4MGZUdGNibjFjYmx4dVhHNG9ablZ1WTNScGIyNG9LU0I3WEc1Y2RIWmhjaUJ3YVhobGJGQnZjMmwwYVc5dV
14938ZtRnNMQ0JpYjNoVGFYcHBibWRTWld4cFlXSnNaVlpoYkN4Y2JseDBYSFJrYjJORmJHVnRJRDBnWkc5amRXMWxiblF1Wkc5amRXMWxiblJGYkdWdFpXNTBMRnh1WEhSY2RHTnZiblJoYVc1bGNpQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0lGd2laR2wyWENJZ0tTeGNibHgwWEhSa2FYWWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtDQmNJbVJwZGx3aUlDazdYRzVjYmx4MGFXWWdLQ0FoWkdsMkxuTjBlV3hsSUNrZ2UxeHVYSFJjZEhKbGRIVnlianRjYmx4MGZWeHVYRzVjZEM4dklGTjFjSEJ2Y25RNklFbEZPUzB4TVN0Y2JseDBMeThnVTNSNWJHVWdiMllnWTJ4dmJtVmtJR1ZzWlcxbGJuUWdZV1ptWldOMGN5QnpiM1Z5WTJVZ1pXeGxiV1Z1ZENCamJHOXVaV1FnS0NNNE9UQTRLVnh1WEhSa2FYWXVjM1I1YkdVdVltRmphMmR5YjNWdVpFTnNhWEFnUFNCY0ltTnZiblJsYm5RdFltOTRYQ0k3WEc1Y2RHUnBkaTVqYkc5dVpVNXZaR1VvSUhSeWRXVWdLUzV6ZEhsc1pTNWlZV05yWjNKdmRXNWtRMnhwY0NBOUlGd2lYQ0k3WEc1Y2RITjFjSEJ2Y25RdVkyeGxZWEpEYkc5dVpWTjBlV3hsSUQwZ1pHbDJMbk4wZVd4bExtSmhZMnRuY205MWJtUkRiR2x3SUQwOVBTQmNJbU52Ym5SbGJuUXRZbTk0WENJN1hHNWNibHgwWTI5dWRHRnBibVZ5TG5OMGVXeGxMbU56YzFSbGVIUWdQU0JjSW1KdmNtUmxjam93TzNkcFpIUm9PakE3YUdWcFoyaDBPakE3ZEc5d09qQTdiR1ZtZERvdE9UazVPWEI0TzIxaGNtZHBiaTEwYjNBNk1YQjRPMXdpSUN0Y2JseDBYSFJjSW5CdmMybDBhVzl1T21GaWMyOXNkWFJsWENJN1hHNWNkR052Ym5SaGFXNWxjaTVoY0hCbGJtUkRhR2xzWkNnZ1pHbDJJQ2s3WEc1Y2JseDBMeThnUlhobFkzVjBhVzVuSUdKdmRHZ2djR2w0Wld4UWIzTnBkR2x2YmlBbUlHSnZlRk5wZW1sdVoxSmxiR2xoWW14bElIUmxjM1J6SUhKbGNYVnBjbVVnYjI1c2VTQnZibVVnYkdGNWIzVjBYRzVjZEM4dklITnZJSFJvWlhrbmNtVWdaWGhsWTNWMFpXUWdZWFFnZEdobElITmhiV1VnZEdsdFpTQjBieUJ6WVhabElIUm9aU0J6WldOdmJtUWdZMjl0Y0hWMFlYUnBiMjR1WEc1Y2RHWjFibU4wYVc5dUlHTnZiWEIxZEdWUWFYaGxiRkJ2YzJsMGFXOXVRVzVrUW05NFUybDZhVzVuVW1Wc2FXRmliR1VvS1NCN1hHNWNkRngwWkdsMkxuTjBlV3hsTG1OemMxUmxlSFFnUFZ4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1JtbHlaV1p2ZUR3eU9Td2dRVzVrY205cFpDQXlMak5jYmx4MFhIUmNkQzh2SUZabGJtUnZjaTF3Y21WbWFYZ2dZbTk0TFhOcGVtbHVaMXh1WEhSY2RGeDBYQ0l0ZDJWaWEybDBMV0p2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZURzdGJXOTZMV0p2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZUR0Y0lpQXJYRzVjZEZ4MFhIUmNJbUp2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZUR0a2FYTndiR0Y1T21Kc2IyTnJPMjFoY21kcGJpMTBiM0E2TVNVN2RHOXdPakVsTzF3aUlDdGNibHgwWEhSY2RGd2lZbTl5WkdWeU9qRndlRHR3WVdSa2FXNW5PakZ3ZUR0M2FXUjBhRG8wY0hnN2NHOXphWFJwYjI0NllXSnpiMngxZEdWY0lqdGNibHgwWEhSa2FYWXVhVzV1WlhKSVZFMU1JRDBnWENKY0lqdGNibHgwWEhSa2IyTkZiR1Z0TG1Gd2NHVnVaRU5vYVd4a0tDQmpiMjUwWVdsdVpYSWdLVHRjYmx4dVhIUmNkSFpoY2lCa2FYWlRkSGxzWlNBOUlIZHBibVJ2ZHk1blpYUkRiMjF3ZFhSbFpGTjBlV3hsS0NCa2FYWXNJRzUxYkd3Z0tUdGNibHgwWEhSd2FYaGxiRkJ2YzJsMGFXOXVWbUZzSUQwZ1pHbDJVM1I1YkdVdWRHOXdJQ0U5UFNCY0lqRWxYQ0k3WEc1Y2RGeDBZbTk0VTJsNmFXNW5VbVZzYVdGaWJHVldZV3dnUFNCa2FYWlRkSGxzWlM1M2FXUjBhQ0E5UFQwZ1hDSTBjSGhjSWp0Y2JseHVYSFJjZEdSdlkwVnNaVzB1Y21WdGIzWmxRMmhwYkdRb0lHTnZiblJoYVc1bGNpQXBPMXh1WEhSOVhHNWNibHgwTHk4Z1UzVndjRzl5ZERvZ2JtOWtaUzVxY3lCcWMyUnZiVnh1WEhRdkx5QkViMjRuZENCaGMzTjFiV1VnZEdoaGRDQm5aWFJEYjIxd2RYUmxaRk4wZVd4bElHbHpJR0VnY0hKdmNHVnlkSGtnYjJZZ2RHaGxJR2RzYjJKaGJDQnZZbXBsWTNSY2JseDBhV1lnS0NCM2FXNWtiM2N1WjJWMFEyOXRjSFYwWldSVGRIbHNaU0FwSUh0Y2JseDBYSFJxVVhWbGNua3VaWGgwWlc1a0tDQnpkWEJ3YjNKMExDQjdYRzVjZEZ4MFhIUndhWGhsYkZCdmMybDBhVzl1T2lCbWRXNWpkR2x2YmlncElIdGNibHh1WEhSY2RGeDBYSFF2THlCVWFHbHpJSFJsYzNRZ2FYTWdaWGhsWTNWMFpXUWdiMjVzZVNCdmJtTmxJR0oxZENCM1pTQnpkR2xzYkNCa2J5QnRaVzF2YVhwcGJtZGNibHgwWEhSY2RGeDBMeThnYzJsdVkyVWdkMlVnWTJGdUlIVnpaU0IwYUdVZ1ltOTRVMmw2YVc1blVtVnNhV0ZpYkdVZ2NISmxMV052YlhCMWRHbHVaeTVjYmx4MFhIUmNkRngwTHk4Z1RtOGdibVZsWkNCMGJ5QmphR1ZqYXlCcFppQjBhR1VnZEdWemRDQjNZWE1nWVd4eVpXRmtlU0J3WlhKbWIzSnRaV1FzSUhSb2IzVm5hQzVjYmx4MFhIUmNkRngwWTI5dGNIVjBaVkJwZUdWc1VHOXphWFJwYjI1QmJtUkNiM2hUYVhwcGJtZFNaV3hwWVdKc1pTZ3BPMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjR2w0Wld4UWIzTnBkR2x2YmxaaGJEdGNibHgwWEhSY2RIMHNYRzVjZEZ4MFhIUmliM2hUYVhwcGJtZFNaV3hwWVdKc1pUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZbTk0VTJsNmFXNW5VbVZzYVdGaWJHVldZV3dnUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmpiMjF3ZFhSbFVHbDRaV3hRYjNOcGRHbHZia0Z1WkVKdmVGTnBlbWx1WjFKbGJHbGhZbXhsS0NrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjbVYwZFhKdUlHSnZlRk5wZW1sdVoxSmxiR2xoWW14bFZtRnNPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkSEpsYkdsaFlteGxUV0Z5WjJsdVVtbG5hSFE2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYRzVjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1FnTWk0elhHNWNkRngwWEhSY2RDOHZJRU5vWldOcklHbG1JR1JwZGlCM2FYUm9JR1Y0Y0d4cFkybDBJSGRwWkhSb0lHRnVaQ0J1YnlCdFlYSm5hVzR0Y21sbmFIUWdhVzVqYjNKeVpXTjBiSGxjYmx4MFhIUmNkRngwTHk4Z1oyVjBjeUJqYjIxd2RYUmxaQ0J0WVhKbmFXNHRjbWxuYUhRZ1ltRnpaV1FnYjI0Z2QybGtkR2dnYjJZZ1kyOXVkR0ZwYm1WeUxpQW9Jek16TXpNcFhHNWNkRngwWEhSY2RDOHZJRmRsWWt0cGRDQkNkV2NnTVRNek5ETWdMU0JuWlhSRGIyMXdkWFJsWkZOMGVXeGxJSEpsZEhWeWJuTWdkM0p2Ym1jZ2RtRnNkV1VnWm05eUlHMWhjbWRwYmkxeWFXZG9kRnh1WEhSY2RGeDBYSFF2THlCVWFHbHpJSE4xY0hCdmNuUWdablZ1WTNScGIyNGdhWE1nYjI1c2VTQmxlR1ZqZ
14938FhSbFpDQnZibU5sSUhOdklHNXZJRzFsYlc5cGVtbHVaeUJwY3lCdVpXVmtaV1F1WEc1Y2RGeDBYSFJjZEhaaGNpQnlaWFFzWEc1Y2RGeDBYSFJjZEZ4MGJXRnlaMmx1UkdsMklEMGdaR2wyTG1Gd2NHVnVaRU5vYVd4a0tDQmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0NCY0ltUnBkbHdpSUNrZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCU1pYTmxkQ0JEVTFNNklHSnZlQzF6YVhwcGJtYzdJR1JwYzNCc1lYazdJRzFoY21kcGJqc2dZbTl5WkdWeU95QndZV1JrYVc1blhHNWNkRngwWEhSY2RHMWhjbWRwYmtScGRpNXpkSGxzWlM1amMzTlVaWGgwSUQwZ1pHbDJMbk4wZVd4bExtTnpjMVJsZUhRZ1BWeHVYSFJjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVacGNtVm1iM2c4TWprc0lFRnVaSEp2YVdRZ01pNHpYRzVjZEZ4MFhIUmNkRngwTHk4Z1ZtVnVaRzl5TFhCeVpXWnBlQ0JpYjNndGMybDZhVzVuWEc1Y2RGeDBYSFJjZEZ4MFhDSXRkMlZpYTJsMExXSnZlQzF6YVhwcGJtYzZZMjl1ZEdWdWRDMWliM2c3TFcxdmVpMWliM2d0YzJsNmFXNW5PbU52Ym5SbGJuUXRZbTk0TzF3aUlDdGNibHgwWEhSY2RGeDBYSFJjSW1KdmVDMXphWHBwYm1jNlkyOXVkR1Z1ZEMxaWIzZzdaR2x6Y0d4aGVUcGliRzlqYXp0dFlYSm5hVzQ2TUR0aWIzSmtaWEk2TUR0d1lXUmthVzVuT2pCY0lqdGNibHgwWEhSY2RGeDBiV0Z5WjJsdVJHbDJMbk4wZVd4bExtMWhjbWRwYmxKcFoyaDBJRDBnYldGeVoybHVSR2wyTG5OMGVXeGxMbmRwWkhSb0lEMGdYQ0l3WENJN1hHNWNkRngwWEhSY2RHUnBkaTV6ZEhsc1pTNTNhV1IwYUNBOUlGd2lNWEI0WENJN1hHNWNkRngwWEhSY2RHUnZZMFZzWlcwdVlYQndaVzVrUTJocGJHUW9JR052Ym5SaGFXNWxjaUFwTzF4dVhHNWNkRngwWEhSY2RISmxkQ0E5SUNGd1lYSnpaVVpzYjJGMEtDQjNhVzVrYjNjdVoyVjBRMjl0Y0hWMFpXUlRkSGxzWlNnZ2JXRnlaMmx1UkdsMkxDQnVkV3hzSUNrdWJXRnlaMmx1VW1sbmFIUWdLVHRjYmx4dVhIUmNkRngwWEhSa2IyTkZiR1Z0TG5KbGJXOTJaVU5vYVd4a0tDQmpiMjUwWVdsdVpYSWdLVHRjYmx4MFhIUmNkRngwWkdsMkxuSmxiVzkyWlVOb2FXeGtLQ0J0WVhKbmFXNUVhWFlnS1R0Y2JseHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSOVhHNTlLU2dwTzF4dVhHNWNiaTh2SUVFZ2JXVjBhRzlrSUdadmNpQnhkV2xqYTJ4NUlITjNZWEJ3YVc1bklHbHVMMjkxZENCRFUxTWdjSEp2Y0dWeWRHbGxjeUIwYnlCblpYUWdZMjl5Y21WamRDQmpZV3hqZFd4aGRHbHZibk11WEc1cVVYVmxjbmt1YzNkaGNDQTlJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQnZjSFJwYjI1ekxDQmpZV3hzWW1GamF5d2dZWEpuY3lBcElIdGNibHgwZG1GeUlISmxkQ3dnYm1GdFpTeGNibHgwWEhSdmJHUWdQU0I3ZlR0Y2JseHVYSFF2THlCU1pXMWxiV0psY2lCMGFHVWdiMnhrSUhaaGJIVmxjeXdnWVc1a0lHbHVjMlZ5ZENCMGFHVWdibVYzSUc5dVpYTmNibHgwWm05eUlDZ2dibUZ0WlNCcGJpQnZjSFJwYjI1eklDa2dlMXh1WEhSY2RHOXNaRnNnYm1GdFpTQmRJRDBnWld4bGJTNXpkSGxzWlZzZ2JtRnRaU0JkTzF4dVhIUmNkR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYU0E5SUc5d2RHbHZibk5iSUc1aGJXVWdYVHRjYmx4MGZWeHVYRzVjZEhKbGRDQTlJR05oYkd4aVlXTnJMbUZ3Y0d4NUtDQmxiR1Z0TENCaGNtZHpJSHg4SUZ0ZElDazdYRzVjYmx4MEx5OGdVbVYyWlhKMElIUm9aU0J2YkdRZ2RtRnNkV1Z6WEc1Y2RHWnZjaUFvSUc1aGJXVWdhVzRnYjNCMGFXOXVjeUFwSUh0Y2JseDBYSFJsYkdWdExuTjBlV3hsV3lCdVlXMWxJRjBnUFNCdmJHUmJJRzVoYldVZ1hUdGNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQnlaWFE3WEc1OU8xeHVYRzVjYm5aaGNseHVYSFF2THlCVGQyRndjR0ZpYkdVZ2FXWWdaR2x6Y0d4aGVTQnBjeUJ1YjI1bElHOXlJSE4wWVhKMGN5QjNhWFJvSUhSaFlteGxJR1Y0WTJWd2RDQmNJblJoWW14bFhDSXNJRndpZEdGaWJHVXRZMlZzYkZ3aUxDQnZjaUJjSW5SaFlteGxMV05oY0hScGIyNWNJbHh1WEhRdkx5QlRaV1VnYUdWeVpTQm1iM0lnWkdsemNHeGhlU0IyWVd4MVpYTTZJR2gwZEhCek9pOHZaR1YyWld4dmNHVnlMbTF2ZW1sc2JHRXViM0puTDJWdUxWVlRMMlJ2WTNNdlExTlRMMlJwYzNCc1lYbGNibHgwY21ScGMzQnNZWGx6ZDJGd0lEMGdMMTRvYm05dVpYeDBZV0pzWlNnL0lTMWpXMlZoWFNrdUt5a3ZMRnh1WEhSeWJuVnRjM0JzYVhRZ1BTQnVaWGNnVW1WblJYaHdLQ0JjSWw0b1hDSWdLeUJ3Ym5WdElDc2dYQ0lwS0M0cUtTUmNJaXdnWENKcFhDSWdLU3hjYmx4MGNuSmxiRTUxYlNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGloYkt5MWRLVDBvWENJZ0t5QndiblZ0SUNzZ1hDSXBYQ0lzSUZ3aWFWd2lJQ2tzWEc1Y2JseDBZM056VTJodmR5QTlJSHNnY0c5emFYUnBiMjQ2SUZ3aVlXSnpiMngxZEdWY0lpd2dkbWx6YVdKcGJHbDBlVG9nWENKb2FXUmtaVzVjSWl3Z1pHbHpjR3hoZVRvZ1hDSmliRzlqYTF3aUlIMHNYRzVjZEdOemMwNXZjbTFoYkZSeVlXNXpabTl5YlNBOUlIdGNibHgwWEhSc1pYUjBaWEpUY0dGamFXNW5PaUJjSWpCY0lpeGNibHgwWEhSbWIyNTBWMlZwWjJoME9pQmNJalF3TUZ3aVhHNWNkSDBzWEc1Y2JseDBZM056VUhKbFptbDRaWE1nUFNCYklGd2lWMlZpYTJsMFhDSXNJRndpVDF3aUxDQmNJazF2ZWx3aUxDQmNJbTF6WENJZ1hUdGNibHh1THk4Z1VtVjBkWEp1SUdFZ1kzTnpJSEJ5YjNCbGNuUjVJRzFoY0hCbFpDQjBieUJoSUhCdmRHVnVkR2xoYkd4NUlIWmxibVJ2Y2lCd2NtVm1hWGhsWkNCd2NtOXdaWEowZVZ4dVpuVnVZM1JwYjI0Z2RtVnVaRzl5VUhKdmNFNWhiV1VvSUhOMGVXeGxMQ0J1WVcxbElDa2dlMXh1WEc1Y2RDOHZJRk5vYjNKMFkzVjBJR1p2Y2lCdVlXMWxjeUIwYUdGMElHRnlaU0J1YjNRZ2RtVnVaRzl5SUhCeVpXWnBlR1ZrWEc1Y2RHbG1JQ2dnYm1GdFpTQnBiaUJ6ZEhsc1pTQXBJSHRjYmx4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MGZWeHVYRzVjZEM4dklFTm9aV05ySUdadmNpQjJaVzVrYjNJZ2NISmxabWw0WldRZ2JtRnRaWE5jYmx4MGRtRnlJR05oY0U1aGJXVWdQU0J1WVcxbFd6QmRMblJ2VlhCd1pYSkRZWE5sS0NrZ0t5QnVZVzFsTG5Oc2FXTmxLREVwTEZ4dVhIUmNkRzl5YVdkT1lXMWxJRDBnYm1GdFpTeGNibHgwWEhScElEMGdZM056VUhKbFptbDRaWE11YkdWdVozUm9PMXh1WEc1Y2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhIUmNkRzVoYldVZ1BTQmpjM05RY21WbWFYaGxjMXNnYVNCZElDc2dZMkZ3VG1GdFpUdGNibHgwWEhScFppQW9JRzVoYldVZ2FXNGdjM1I1YkdVZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFJ5WlhSMWNtNGdiM0pwWjA1aGJXVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlITmxkRkJ2YzJsMGFYWmxUblZ0WW1WeUtDQmxiR1Z0TENCMllXeDFaU3dnYzNWaWRISmhZM1FnS1NCN1hHNWNkSFpoY2lCdFlYUmphR1Z6SUQwZ2NtNTFiWE53YkdsMExtVjRaV01vSUhaaGJIVmxJQ2s3WEc1Y2RISmxkSFZ5YmlCdFlYUmphR1Z6SUQ5Y2JseDBYSFF2THlCSGRXRnlaQ0JoWjJGcGJuTjBJSFZ1WkdWbWFXNWxaQ0JjSW5OMVluUnlZV04wWENJc0lHVXVaeTRzSUhkb1pXNGdkWE5sWkNCaGN5QnBiaUJqYzNOSWIyOXJjMXh1WEhSY2RFMWhkR2d1YldGNEtDQXdMQ0J0WVhSamFHVnpXeUF4SUYwZ0xTQW9JSE4xWW5SeVlXTjBJSHg4SURBZ0tTQXBJQ3NnS0NCdFlYUmphR1Z6V3lBeUlGMGdmSHdnWENKd2VGd2lJQ2tnT2x4dVhIUmNkSFpoYkhWbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCaGRXZHRaVzUwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRXNJR2x6UW05eVpHVnlRbTk0TENCemRIbHNaWE1nS1NCN1hHNWNkSFpoY2lCcElEMGdaWGgwY21FZ1BUMDlJQ2dnYVhOQ2IzSmtaWEpDYjNnZ1B5QmNJbUp2Y21SbG
14938Nsd2lJRG9nWENKamIyNTBaVzUwWENJZ0tTQS9YRzVjZEZ4MEx5OGdTV1lnZDJVZ1lXeHlaV0ZrZVNCb1lYWmxJSFJvWlNCeWFXZG9kQ0J0WldGemRYSmxiV1Z1ZEN3Z1lYWnZhV1FnWVhWbmJXVnVkR0YwYVc5dVhHNWNkRngwTkNBNlhHNWNkRngwTHk4Z1QzUm9aWEozYVhObElHbHVhWFJwWVd4cGVtVWdabTl5SUdodmNtbDZiMjUwWVd3Z2IzSWdkbVZ5ZEdsallXd2djSEp2Y0dWeWRHbGxjMXh1WEhSY2RHNWhiV1VnUFQwOUlGd2lkMmxrZEdoY0lpQS9JREVnT2lBd0xGeHVYRzVjZEZ4MGRtRnNJRDBnTUR0Y2JseHVYSFJtYjNJZ0tDQTdJR2tnUENBME95QnBJQ3M5SURJZ0tTQjdYRzVjZEZ4MEx5OGdRbTkwYUNCaWIzZ2diVzlrWld4eklHVjRZMngxWkdVZ2JXRnlaMmx1TENCemJ5QmhaR1FnYVhRZ2FXWWdkMlVnZDJGdWRDQnBkRnh1WEhSY2RHbG1JQ2dnWlhoMGNtRWdQVDA5SUZ3aWJXRnlaMmx1WENJZ0tTQjdYRzVjZEZ4MFhIUjJZV3dnS3owZ2FsRjFaWEo1TG1OemN5Z2daV3hsYlN3Z1pYaDBjbUVnS3lCamMzTkZlSEJoYm1SYklHa2dYU3dnZEhKMVpTd2djM1I1YkdWeklDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JwYzBKdmNtUmxja0p2ZUNBcElIdGNibHgwWEhSY2RDOHZJR0p2Y21SbGNpMWliM2dnYVc1amJIVmtaWE1nY0dGa1pHbHVaeXdnYzI4Z2NtVnRiM1psSUdsMElHbG1JSGRsSUhkaGJuUWdZMjl1ZEdWdWRGeHVYSFJjZEZ4MGFXWWdLQ0JsZUhSeVlTQTlQVDBnWENKamIyNTBaVzUwWENJZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkNBdFBTQnFVWFZsY25rdVkzTnpLQ0JsYkdWdExDQmNJbkJoW
14938kdScGJtZGNJaUFySUdOemMwVjRjR0Z1WkZzZ2FTQmRMQ0IwY25WbExDQnpkSGxzWlhNZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUVhRZ2RHaHBjeUJ3YjJsdWRDd2daWGgwY21FZ2FYTnVKM1FnWW05eVpHVnlJRzV2Y2lCdFlYSm5hVzRzSUhOdklISmxiVzkyWlNCaWIzSmtaWEpjYmx4MFhIUmNkR2xtSUNnZ1pYaDBjbUVnSVQwOUlGd2liV0Z5WjJsdVhDSWdLU0I3WEc1Y2RGeDBYSFJjZEhaaGJDQXRQU0JxVVhWbGNua3VZM056S0NCbGJHVnRMQ0JjSW1KdmNtUmxjbHdpSUNzZ1kzTnpSWGh3WVc1a1d5QnBJRjBnS3lCY0lsZHBaSFJvWENJc0lIUnlkV1VzSUhOMGVXeGxjeUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUXZMeUJCZENCMGFHbHpJSEJ2YVc1MExDQmxlSFJ5WVNCcGMyNG5kQ0JqYjI1MFpXNTBMQ0J6YnlCaFpHUWdjR0ZrWkdsdVoxeHVYSFJjZEZ4MGRtRnNJQ3M5SUdwUmRXVnllUzVqYzNNb0lHVnNaVzBzSUZ3aWNHRmtaR2x1WjF3aUlDc2dZM056Ulhod1lXNWtXeUJwSUYwc0lIUnlkV1VzSUhOMGVXeGxjeUFwTzF4dVhHNWNkRngwWEhRdkx5QkJkQ0IwYUdseklIQnZhVzUwTENCbGVIUnlZU0JwYzI0bmRDQmpiMjUwWlc1MElHNXZjaUJ3WVdSa2FXNW5MQ0J6YnlCaFpHUWdZbTl5WkdWeVhHNWNkRngwWEhScFppQW9JR1Y0ZEhKaElDRTlQU0JjSW5CaFpHUnBibWRjSWlBcElIdGNibHgwWEhSY2RGeDBkbUZzSUNzOUlHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2lZbTl5WkdWeVhDSWdLeUJqYzNORmVIQmhibVJiSUdrZ1hTQXJJRndpVjJsa2RHaGNJaXdnZEhKMVpTd2djM1I1YkdWeklDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlIWmhiRHRjYm4xY2JseHVablZ1WTNScGIyNGdaMlYwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRWdLU0I3WEc1Y2JseDBMeThnVTNSaGNuUWdkMmwwYUNCdlptWnpaWFFnY0hKdmNHVnlkSGtzSUhkb2FXTm9JR2x6SUdWeGRXbDJZV3hsYm5RZ2RHOGdkR2hsSUdKdmNtUmxjaTFpYjNnZ2RtRnNkV1ZjYmx4MGRtRnlJSFpoYkhWbFNYTkNiM0prWlhKQ2IzZ2dQU0IwY25WbExGeHVYSFJjZEhaaGJDQTlJRzVoYldVZ1BUMDlJRndpZDJsa2RHaGNJaUEvSUdWc1pXMHViMlptYzJWMFYybGtkR2dnT2lCbGJHVnRMbTltWm5ObGRFaGxhV2RvZEN4Y2JseDBYSFJ6ZEhsc1pYTWdQU0JuWlhSVGRIbHNaWE1vSUdWc1pXMGdLU3hjYmx4MFhIUnBjMEp2Y21SbGNrSnZlQ0E5SUdwUmRXVnllUzVqYzNNb0lHVnNaVzBzSUZ3aVltOTRVMmw2YVc1blhDSXNJR1poYkhObExDQnpkSGxzWlhNZ0tTQTlQVDBnWENKaWIzSmtaWEl0WW05NFhDSTdYRzVjYmx4MEx5OGdVMjl0WlNCdWIyNHRhSFJ0YkNCbGJHVnRaVzUwY3lCeVpYUjFjbTRnZFc1a1pXWnBibVZrSUdadmNpQnZabVp6WlhSWGFXUjBhQ3dnYzI4Z1kyaGxZMnNnWm05eUlHNTFiR3d2ZFc1a1pXWnBibVZrWEc1Y2RDOHZJSE4yWnlBdElHaDBkSEJ6T2k4dlluVm5lbWxzYkdFdWJXOTZhV3hzWVM1dmNtY3ZjMmh2ZDE5aWRXY3VZMmRwUDJsa1BUWTBPVEk0TlZ4dVhIUXZMeUJOWVhSb1RVd2dMU0JvZEhSd2N6b3ZMMkoxWjNwcGJHeGhMbTF2ZW1sc2JHRXViM0puTDNOb2IzZGZZblZuTG1ObmFUOXBaRDAwT1RFMk5qaGNibHgwYVdZZ0tDQjJZV3dnUEQwZ01DQjhmQ0IyWVd3Z1BUMGdiblZzYkNBcElIdGNibHgwWEhRdkx5QkdZV3hzSUdKaFkyc2dkRzhnWTI5dGNIVjBaV1FnZEdobGJpQjFibU52YlhCMWRHVmtJR056Y3lCcFppQnVaV05sYzNOaGNubGNibHgwWEhSMllXd2dQU0JqZFhKRFUxTW9JR1ZzWlcwc0lHNWhiV1VzSUhOMGVXeGxjeUFwTzF4dVhIUmNkR2xtSUNnZ2RtRnNJRHdnTUNCOGZDQjJZV3dnUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEhaaGJDQTlJR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEYjIxd2RYUmxaQ0IxYm1sMElHbHpJRzV2ZENCd2FYaGxiSE11SUZOMGIzQWdhR1Z5WlNCaGJtUWdjbVYwZFhKdUxseHVYSFJjZEdsbUlDZ2djbTUxYlc1dmJuQjRMblJsYzNRb2RtRnNLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIyWVd3N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1EyaGxZMnNnWm05eUlITjBlV3hsSUdsdUlHTmhjMlVnWVNCaWNtOTNjMlZ5SUhkb2FXTm9JSEpsZEhWeWJuTWdkVzV5Wld4cFlXSnNaU0IyWVd4MVpYTmNibHgwWEhRdkx5Qm1iM0lnWjJWMFEyOXRjSFYwWldSVGRIbHNaU0J6YVd4bGJuUnNlU0JtWVd4c2N5QmlZV05ySUhSdklIUm9aU0J5Wld4cFlXSnNaU0JsYkdWdExuTjBlV3hsWEc1Y2RGeDBkbUZzZFdWSmMwSnZjbVJsY2tKdmVDQTlJR2x6UW05eVpHVnlRbTk0SUNZbVhHNWNkRngwWEhRb0lITjFjSEJ2Y25RdVltOTRVMmw2YVc1blVtVnNhV0ZpYkdVb0tTQjhmQ0IyWVd3Z1BUMDlJR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYU0FwTzF4dVhHNWNkRngwTHk4Z1RtOXliV0ZzYVhwbElGd2lYQ0lzSUdGMWRHOHNJR0Z1WkNCd2NtVndZWEpsSUdadmNpQmxlSFJ5WVZ4dVhIUmNkSFpoYkNBOUlIQmhjbk5sUm14dllYUW9JSFpoYkNBcElIeDhJREE3WEc1Y2RIMWNibHh1WEhRdkx5QlZjMlVnZEdobElHRmpkR2wyWlNCaWIzZ3RjMmw2YVc1bklHMXZaR1ZzSUhSdklHRmtaQzl6ZFdKMGNtRmpkQ0JwY25KbGJHVjJZVzUwSUhOMGVXeGxjMXh1WEhSeVpYUjFjbTRnS0NCMllXd2dLMXh1WEhSY2RHRjFaMjFsYm5SWGFXUjBhRTl5U0dWcFoyaDBLRnh1WEhSY2RGeDBaV3hsYlN4Y2JseDBYSFJjZEc1aGJXVXNYRzVjZEZ4MFhIUmxlSFJ5WVNCOGZDQW9JR2x6UW05eVpHVnlRbTk0SUQ4Z1hDSmliM0prWlhKY0lpQTZJRndpWTI5dWRHVnVkRndpSUNrc1hHNWNkRngwWEhSMllXeDFaVWx6UW05eVpHVnlRbTk0TEZ4dVhIUmNkRngwYzNSNWJHVnpYRzVjZEZ4MEtWeHVYSFFwSUNzZ1hDSndlRndpTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJ6YUc5M1NHbGtaU2dnWld4bGJXVnVkSE1zSUhOb2IzY2dLU0I3WEc1Y2RIWmhjaUJrYVhOd2JHRjVMQ0JsYkdWdExDQm9hV1JrWlc0c1hHNWNkRngwZG1Gc2RXVnpJRDBnVzEwc1hHNWNkRngwYVc1a1pYZ2dQU0F3TEZ4dVhIUmNkR3hsYm1kMGFDQTlJR1ZzWlcxbGJuUnpMbXhsYm1kMGFEdGNibHh1WEhSbWIzSWdLQ0E3SUdsdVpHVjRJRHdnYkdWdVozUm9PeUJwYm1SbGVDc3JJQ2tnZTF4dVhIUmNkR1ZzWlcwZ1BTQmxiR1Z0Wlc1MGMxc2dhVzVrWlhnZ1hUdGNibHgwWEhScFppQW9JQ0ZsYkdWdExuTjBlV3hsSUNrZ2UxeHVYSFJjZEZ4MFkyOXVkR2x1ZFdVN1hHNWNkRngwZlZ4dVhHNWNkRngwZG1Gc2RXVnpXeUJwYm1SbGVDQmRJRDBnWkdGMFlWOXdjbWwyTG1kbGRDZ2daV3hsYlN3Z1hDSnZiR1JrYVhOd2JHRjVYQ0lnS1R0Y2JseDBYSFJrYVhOd2JHRjVJRDBnWld4bGJTNXpkSGxzWlM1a2FYTndiR0Y1TzF4dVhIUmNkR2xtSUNnZ2MyaHZkeUFwSUh0Y2JseDBYSFJjZEM4dklGSmxjMlYwSUhSb1pTQnBibXhwYm1V
14938Z1pHbHpjR3hoZVNCdlppQjBhR2x6SUdWc1pXMWxiblFnZEc4Z2JHVmhjbTRnYVdZZ2FYUWdhWE5jYmx4MFhIUmNkQzh2SUdKbGFXNW5JR2hwWkdSbGJpQmllU0JqWVhOallXUmxaQ0J5ZFd4bGN5QnZjaUJ1YjNSY2JseDBYSFJjZEdsbUlDZ2dJWFpoYkhWbGMxc2dhVzVrWlhnZ1hTQW1KaUJrYVhOd2JHRjVJRDA5UFNCY0ltNXZibVZjSWlBcElIdGNibHgwWEhSY2RGeDBaV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDBnWENKY0lqdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVTJWMElHVnNaVzFsYm5SeklIZG9hV05vSUdoaGRtVWdZbVZsYmlCdmRtVnljbWxrWkdWdUlIZHBkR2dnWkdsemNHeGhlVG9nYm05dVpWeHVYSFJjZEZ4MEx5OGdhVzRnWVNCemRIbHNaWE5vWldWMElIUnZJSGRvWVhSbGRtVnlJSFJvWlNCa1pXWmhkV3gwSUdKeWIzZHpaWElnYzNSNWJHVWdhWE5jYmx4MFhIUmNkQzh2SUdadmNpQnpkV05vSUdGdUlHVnNaVzFsYm5SY2JseDBYSFJjZEdsbUlDZ2daV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDA5UFNCY0lsd2lJQ1ltSUdselNHbGtaR1Z1S0NCbGJHVnRJQ2tnS1NCN1hHNWNkRngwWEhSY2RIWmhiSFZsYzFzZ2FXNWtaWGdnWFNBOUlHUmhkR0ZmY0hKcGRpNWhZMk5sYzNNb0lHVnNaVzBzSUZ3aWIyeGtaR2x6Y0d4aGVWd2lMQ0JrWldaaGRXeDBSR2x6Y0d4aGVTaGxiR1Z0TG01dlpHVk9ZVzFsS1NBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJvYVdSa1pXNGdQU0JwYzBocFpHUmxiaWdnWld4bGJTQXBPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHUnBjM0JzWVhrZ0lUMDlJRndpYm05dVpWd2lJSHg4SUNGb2FXUmtaVzRnS1NCN1hHNWNkRngwWEhSY2RHUmhkR0ZmY0hKcGRpNXpaWFFvSUdWc1pXMHNJRndpYjJ4a1pHbHpjR3hoZVZ3aUxDQm9hV1JrWlc0Z1B5QmthWE53YkdGNUlEb2dhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0prYVhOd2JHRjVYQ0lnS1NBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRk5sZENCMGFHVWdaR2x6Y0d4aGVTQnZaaUJ0YjNOMElHOW1JSFJvWlNCbGJHVnRaVzUwY3lCcGJpQmhJSE5sWTI5dVpDQnNiMjl3WEc1Y2RDOHZJSFJ2SUdGMmIybGtJSFJvWlNCamIyNXpkR0Z1ZENCeVpXWnNiM2RjYmx4MFptOXlJQ2dnYVc1a1pYZ2dQU0F3T3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ3JLeUFwSUh0Y2JseDBYSFJsYkdWdElEMGdaV3hsYldWdWRITmJJR2x1WkdWNElGMDdYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTNXpkSGxzWlNBcElIdGNibHgwWEhSY2RHTnZiblJwYm5WbE8xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lDRnphRzkzSUh4OElHVnNaVzB1YzNSNWJHVXVaR2x6Y0d4aGVTQTlQVDBnWENKdWIyNWxYQ0lnZkh3Z1pXeGxiUzV6ZEhsc1pTNWthWE53YkdGNUlEMDlQU0JjSWx3aUlDa2dlMXh1WEhSY2RGeDBaV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDBnYzJodmR5QS9JSFpoYkhWbGMxc2dhVzVrWlhnZ1hTQjhmQ0JjSWx3aUlEb2dYQ0p1YjI1bFhDSTdYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHVnNaVzFsYm5Sek8xeHVmVnh1WEc1cVVYVmxjbmt1WlhoMFpXNWtLSHRjYmx4dVhIUXZMeUJCWkdRZ2FXNGdjM1I1YkdVZ2NISnZjR1Z5ZEhrZ2FHOXZhM01nWm05eUlHOTJaWEp5YVdScGJtY2dkR2hsSUdSbFptRjFiSFJjYmx4MEx5OGdZbVZvWVhacGIzSWdiMllnWjJWMGRHbHVaeUJoYm1RZ2MyVjBkR2x1WnlCaElITjBlV3hsSUhCeWIzQmxjblI1WEc1Y2RHTnpjMGh2YjJ0ek9pQjdYRzVjZEZ4MGIzQmhZMmwwZVRvZ2UxeHVYSFJjZEZ4MFoyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dZMjl0Y0hWMFpXUWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMjl0Y0hWMFpXUWdLU0I3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJYWlNCemFHOTFiR1FnWVd4M1lYbHpJR2RsZENCaElHNTFiV0psY2lCaVlXTnJJR1p5YjIwZ2IzQmhZMmwwZVZ4dVhIUmNkRngwWEhSY2RIWmhjaUJ5WlhRZ1BTQmpkWEpEVTFNb0lHVnNaVzBzSUZ3aWIzQmhZMmwwZVZ3aUlDazdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSEpsZENBOVBUMGdYQ0pjSWlBL0lGd2lNVndpSURvZ2NtVjBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEhSOUxGeHVYRzVjZEM4dklFUnZiaWQwSUdGMWRHOXRZWFJwWTJGc2JIa2dZV1JrSUZ3aWNIaGNJaUIwYnlCMGFHVnpaU0J3YjNOemFXSnNlUzExYm1sMGJHVnpjeUJ3Y205d1pYSjBhV1Z6WEc1Y2RHTnpjMDUxYldKbGNqb2dlMXh1WEhSY2RGd2lZMjlzZFcxdVEyOTFiblJjSWpvZ2RISjFaU3hjYmx4MFhIUmNJbVpwYkd4UGNHRmphWFI1WENJNklIUnlkV1VzWEc1Y2RGeDBYQ0ptYkdWNFIzSnZkMXdpT2lCMGNuVmxMRnh1WEhSY2RGd2labXhsZUZOb2NtbHVhMXdpT2lCMGNuVmxMRnh1WEhSY2RGd2labTl1ZEZkbGFXZG9kRndpT2lCMGNuVmxMRnh1WEhSY2RGd2liR2x1WlVobGFXZG9kRndpT2lCMGNuVmxMRnh1WEhSY2RGd2liM0JoWTJsMGVWd2lPaUIwY25WbExGeHVYSFJjZEZ3aWIzSmtaWEpjSWpvZ2RISjFaU3hjYmx4MFhIUmNJbTl5Y0doaGJuTmNJam9nZEhKMVpTeGNibHgwWEhSY0luZHBaRzkzYzF3aU9pQjBjblZsTEZ4dVhIUmNkRndpZWtsdVpHVjRYQ0k2SUhSeWRXVXNYRzVjZEZ4MFhDSjZiMjl0WENJNklIUnlkV1ZjYmx4MGZTeGNibHh1WEhRdkx5QkJaR1FnYVc0Z2NISnZjR1Z5ZEdsbGN5QjNhRzl6WlNCdVlXMWxjeUI1YjNVZ2QybHphQ0IwYnlCbWFYZ2dZbVZtYjNKbFhHNWNkQzh2SUhObGRIUnBibWNnYjNJZ1oyVjBkR2x1WnlCMGFHVWdkbUZzZFdWY2JseDBZM056VUhKdmNITTZJSHRjYmx4MFhIUmNJbVpzYjJGMFhDSTZJRndpWTNOelJteHZZWFJjSWx4dVhIUjlMRnh1WEc1Y2RDOHZJRWRsZENCaGJtUWdjMlYwSUhSb1pTQnpkSGxzWlNCd2NtOXdaWEowZVNCdmJpQmhJRVJQVFNCT2IyUmxYRzVjZEhOMGVXeGxPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlN3Z2RtRnNkV1VzSUdWNGRISmhJQ2tnZTF4dVhHNWNkRngwTHk4Z1JHOXVKM1FnYzJWMElITjBlV3hsY3lCdmJpQjBaWGgwSUdGdVpDQmpiMjF0Wlc1MElHNXZaR1Z6WEc1Y2RGeDBhV1lnS0NBaFpXeGxiU0I4ZkNCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeklIeDhJR1ZzWl
14938cwdWJtOWtaVlI1Y0dVZ1BUMDlJRGdnZkh3Z0lXVnNaVzB1YzNSNWJHVWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdUV0ZyWlNCemRYSmxJSFJvWVhRZ2QyVW5jbVVnZDI5eWEybHVaeUIzYVhSb0lIUm9aU0J5YVdkb2RDQnVZVzFsWEc1Y2RGeDBkbUZ5SUhKbGRDd2dkSGx3WlN3Z2FHOXZhM01zWEc1Y2RGeDBYSFJ2Y21sblRtRnRaU0E5SUdwUmRXVnllUzVqWVcxbGJFTmhjMlVvSUc1aGJXVWdLU3hjYmx4MFhIUmNkSE4wZVd4bElEMGdaV3hsYlM1emRIbHNaVHRjYmx4dVhIUmNkRzVoYldVZ1BTQnFVWFZsY25rdVkzTnpVSEp2Y0hOYklHOXlhV2RPWVcxbElGMGdmSHdnS0NCcVVYVmxjbmt1WTNOelVISnZjSE5iSUc5eWFXZE9ZVzFsSUYwZ1BTQjJaVzVrYjNKUWNtOXdUbUZ0WlNnZ2MzUjViR1VzSUc5eWFXZE9ZVzFsSUNrZ0tUdGNibHh1WEhSY2RDOHZJRWRsZEhNZ2FHOXZheUJtYjNJZ2RHaGxJSEJ5WldacGVHVmtJSFpsY25OcGIyNHNJSFJvWlc0Z2RXNXdjbVZtYVhobFpDQjJaWEp6YVc5dVhHNWNkRngwYUc5dmEzTWdQU0JxVVhWbGNua3VZM056U0c5dmEzTmJJRzVoYldVZ1hTQjhmQ0JxVVhWbGNua3VZM056U0c5dmEzTmJJRzl5YVdkT1lXMWxJRjA3WEc1Y2JseDBYSFF2THlCRGFHVmpheUJwWmlCM1pTZHlaU0J6WlhSMGFXNW5JR0VnZG1Gc2RXVmNibHgwWEhScFppQW9JSFpoYkhWbElDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSMGVYQmxJRDBnZEhsd1pXOW1JSFpoYkhWbE8xeHVYRzVjZEZ4MFhIUXZMeUJEYjI1MlpYSjBJRndpS3oxY0lpQnZjaUJjSWkwOVhDSWdkRzhnY21Wc1lYUnBkbVVnYm5WdFltVnljeUFvSXpjek5EVXBYRzVjZEZ4MFhIUnBaaUFvSUhSNWNHVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ0ppWWdLSEpsZENBOUlISnlaV3hPZFcwdVpYaGxZeWdnZG1Gc2RXVWdLU2tnS1NCN1hHNWNkRngwWEhSY2RIWmhiSFZsSUQwZ0tDQnlaWFJiTVYwZ0t5QXhJQ2tnS2lCeVpYUmJNbDBnS3lCd1lYSnpaVVpzYjJGMEtDQnFVWFZsY25rdVkzTnpLQ0JsYkdWdExDQnVZVzFsSUNrZ0tUdGNibHgwWEhSY2RGeDBMeThnUm1sNFpYTWdZblZuSUNNNU1qTTNYRzVjZEZ4MFhIUmNkSFI1Y0dVZ1BTQmNJbTUxYldKbGNsd2lPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0J1ZFd4c0lHRnVaQ0JPWVU0Z2RtRnNkV1Z6SUdGeVpXNG5kQ0J6WlhRZ0tDTTNNVEUyS1Z4dVhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBTQnVkV3hzSUh4OElIWmhiSFZsSUNFOVBTQjJZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdU8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJKWmlCaElHNTFiV0psY2l3Z1lXUmtJQ2R3ZUNjZ2RHOGdkR2hsSUNobGVHTmxjSFFnWm05eUlHTmxjblJoYVc0Z1ExTlRJSEJ5YjNCbGNuUnBaWE1wWEc1Y2RGeDBYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2liblZ0WW1WeVhDSWdKaVlnSVdwUmRXVnllUzVqYzNOT2RXMWlaWEpiSUc5eWFXZE9ZVzFsSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkhWbElDczlJRndpY0hoY0lqdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVNUxURXhLMXh1WEhSY2RGeDBMeThnWW1GamEyZHliM1Z1WkMwcUlIQnliM0J6SUdGbVptVmpkQ0J2Y21sbmFXNWhiQ0JqYkc5dVpTZHpJSFpoYkhWbGMxeHVYSFJjZEZ4MGFXWWdLQ0FoYzNWd2NHOXlkQzVqYkdWaGNrTnNiMjVsVTNSNWJHVWdKaVlnZG1Gc2RXVWdQVDA5SUZ3aVhDSWdKaVlnYm1GdFpTNXBibVJsZUU5bUtDQmNJbUpoWTJ0bmNtOTFibVJjSWlBcElEMDlQU0F3SUNrZ2UxeHVYSFJjZEZ4MFhIUnpkSGxzWlZzZ2JtRnRaU0JkSUQwZ1hDSnBibWhsY21sMFhDSTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVsbUlHRWdhRzl2YXlCM1lYTWdjSEp2ZG1sa1pXUXNJSFZ6WlNCMGFHRjBJSFpoYkhWbExDQnZkR2hsY25kcGMyVWdhblZ6ZENCelpYUWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaVnh1WEhSY2RGeDBhV1lnS0NBaGFHOXZhM01nZkh3Z0lTaGNJbk5sZEZ3aUlHbHVJR2h2YjJ0ektTQjhmQ0FvZG1Gc2RXVWdQU0JvYjI5cmN5NXpaWFFvSUdWc1pXMHNJSFpoYkhWbExDQmxlSFJ5WVNBcEtTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnpkSGxzWlZzZ2JtRnRaU0JkSUQwZ2RtRnNkV1U3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBMeThnU1dZZ1lTQm9iMjlySUhkaGN5QndjbTkyYVdSbFpDQm5aWFFnZEdobElHNXZiaTFqYjIxd2RYUmxaQ0IyWVd4MVpTQm1jbTl0SUhSb1pYSmxYRzVjZEZ4MFhIUnBaaUFvSUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnWm1Gc2MyVXNJR1Y0ZEhKaElDa3BJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWFE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTQnFkWE4wSUdkbGRDQjBhR1VnZG1Gc2RXVWdabkp2YlNCMGFHVWdjM1I1YkdVZ2IySnFaV04wWEc1Y2RGeDBYSFJ5WlhSMWNtNGdjM1I1YkdWYklHNWhiV1VnWFR0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MFkzTnpPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlN3Z1pYaDBjbUVzSUhOMGVXeGxjeUFwSUh0Y2JseDBYSFIyWVhJZ2RtRnNMQ0J1ZFcwc0lHaHZiMnR6TEZ4dVhIUmNkRngwYjNKcFowNWhiV1VnUFNCcVVYVmxjbmt1WTJGdFpXeERZWE5sS0NCdVlXMWxJQ2s3WEc1Y2JseDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0IzWlNkeVpTQjNiM0pyYVc1bklIZHBkR2dnZEdobElISnBaMmgwSUc1aGJXVmNibHgwWEhSdVlXMWxJRDBnYWxGMVpYSjVMbU56YzFCeWIzQnpXeUJ2Y21sblRtRnRaU0JkSUh4OElDZ2dhbEYxWlhKNUxtTnpjMUJ5YjNCeld5QnZjbWxuVG1GdFpTQmRJRDBnZG1WdVpHOXlVSEp2Y0U1aGJXVW9JR1ZzWlcwdWMzUjViR1VzSUc5eWFXZE9ZVzFsSUNrZ0tUdGNibHh1WEhSY2RDOHZJRlJ5ZVNCd2NtVm1hWGhsWkNCdVlXMWxJR1p2Ykd4dmQyVmtJR0o1SUhSb1pTQjFibkJ5WldacGVHVmtJRzVoYldWY2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2dibUZ0WlNCZElIeDhJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2diM0pwWjA1aGJXVWdYVHRjYmx4dVhIUmNkQzh2SUVsbUlHRWdhRzl2YXlCM1lYTWdjSEp2ZG1sa1pXUWdaMlYwSUhSb1pTQmpiMjF3ZFhSbFpDQjJZV3gxWlNCbWNtOXRJSFJvWlhKbFhHNWNkRngwYVdZZ0tDQm9iMjlyY3lBbUppQmNJbWRsZEZ3aUlHbHVJR2h2YjJ0eklDa2dlMXh1WEhSY2RGeDBkbUZzSUQwZ2FHOXZhM011WjJWMEtDQmxiR1Z0TENCMGNuVmxMQ0JsZUhSeVlTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRTkwYUdWeWQybHpaU3dnYVdZZ1lTQjNZWGtnZEc4Z1oyVjBJSFJvWlNCamIyMXdkWFJsWkNCMllXeDFaU0JsZUdsemRITXNJSFZ6WlNCMGFHRjBYRzVjZEZ4MGFXWWdLQ0IyWVd3Z1BUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEhaaGJDQTlJR04xY2tOVFV5Z2daV3hsYlN3Z2JtRnRaU3dnYzNSNWJHVnpJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUTI5dWRtVnlkQ0JjSW01dmNtMWhiRndpSUhSdklHTnZiWEIxZEdWa0lIWmhiSFZsWEc1Y2RGeDBhV1lnS0NCMllXd2dQVDA5SUZ3aWJtOXliV0ZzWENJZ0ppWWdibUZ0WlNCcGJpQmpjM05PYjNKdFlXeFVjbUZ1YzJadmNtMGdLU0I3WEc1Y2RGeDBYSFIyWVd3Z1BTQmpjM05PYjNKdFlXeFVjbUZ1YzJadmNtMWJJRzVoYldVZ1hUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5Qk5ZV3RsSUc1MWJXVnlhV01nYVdZZ1ptOXlZMlZrSUc5e
14938UlHRWdjWFZoYkdsbWFXVnlJSGRoY3lCd2NtOTJhV1JsWkNCaGJtUWdkbUZzSUd4dmIydHpJRzUxYldWeWFXTmNibHgwWEhScFppQW9JR1Y0ZEhKaElEMDlQU0JjSWx3aUlIeDhJR1Y0ZEhKaElDa2dlMXh1WEhSY2RGeDBiblZ0SUQwZ2NHRnljMlZHYkc5aGRDZ2dkbUZzSUNrN1hHNWNkRngwWEhSeVpYUjFjbTRnWlhoMGNtRWdQVDA5SUhSeWRXVWdmSHdnYWxGMVpYSjVMbWx6VG5WdFpYSnBZeWdnYm5WdElDa2dQeUJ1ZFcwZ2ZId2dNQ0E2SUhaaGJEdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJSFpoYkR0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxZV05vS0ZzZ1hDSm9aV2xuYUhSY0lpd2dYQ0ozYVdSMGFGd2lJRjBzSUdaMWJtTjBhVzl1S0NCcExDQnVZVzFsSUNrZ2UxeHVYSFJxVVhWbGNua3VZM056U0c5dmEzTmJJRzVoYldVZ1hTQTlJSHRjYmx4MFhIUm5aWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0JqYjIxd2RYUmxaQ3dnWlhoMGNtRWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHTnZiWEIxZEdWa0lDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklFTmxjblJoYVc0Z1pXeGxiV1Z1ZEhNZ1kyRnVJR2hoZG1VZ1pHbHRaVzV6YVc5dUlHbHVabThnYVdZZ2QyVWdhVzUyYVhOcFlteDVJSE5vYjNjZ2RHaGxiVnh1WEhSY2RGeDBYSFF2THlCaWRYUWdhWFFnYlhWemRDQm9ZWFpsSUdFZ1kzVnljbVZ1ZENCa2FYTndiR0Y1SUhOMGVXeGxJSFJvWVhRZ2QyOTFiR1FnWW1WdVpXWnBkRnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjbVJwYzNCc1lYbHpkMkZ3TG5SbGMzUW9JR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrZ0tTQW1KaUJsYkdWdExtOW1abk5sZEZkcFpIUm9JRDA5UFNBd0lEOWNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3VjM2RoY0NnZ1pXeGxiU3dnWTNOelUyaHZkeXdnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ5WlhSMWNtNGdaMlYwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRWdLVHRjYmx4MFhIUmNkRngwWEhSOUtTQTZYRzVjZEZ4MFhIUmNkRngwWjJWMFYybGtkR2hQY2tobGFXZG9kQ2dnWld4bGJTd2dibUZ0WlN3Z1pYaDBjbUVnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5TEZ4dVhHNWNkRngwYzJWME9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2RtRnNkV1VzSUdWNGRISmhJQ2tnZTF4dVhIUmNkRngwZG1GeUlITjBlV3hsY3lBOUlHVjRkSEpoSUNZbUlHZGxkRk4wZVd4bGN5Z2daV3hsYlNBcE8xeHVYSFJjZEZ4MGNtVjBkWEp1SUhObGRGQnZjMmwwYVhabFRuVnRZbVZ5S0NCbGJHVnRMQ0IyWVd4MVpTd2daWGgwY21FZ1AxeHVYSFJjZEZ4MFhIUmhkV2R0Wlc1MFYybGtkR2hQY2tobGFXZG9kQ2hjYmx4MFhIUmNkRngwWEhSbGJHVnRMRnh1WEhSY2RGeDBYSFJjZEc1aGJXVXNYRzVjZEZ4MFhIUmNkRngwWlhoMGNtRXNYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbU56Y3lnZ1pXeGxiU3dnWENKaWIzaFRhWHBwYm1kY0lpd2dabUZzYzJVc0lITjBlV3hsY3lBcElEMDlQU0JjSW1KdmNtUmxjaTFpYjNoY0lpeGNibHgwWEhSY2RGeDBYSFJ6ZEhsc1pYTmNibHgwWEhSY2RGeDBLU0E2SURCY2JseDBYSFJjZENrN1hHNWNkRngwZlZ4dVhIUjlPMXh1ZlNrN1hHNWNiaTh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1FnTWk0elhHNXFVWFZsY25rdVkzTnpTRzl2YTNNdWJXRnlaMmx1VW1sbmFIUWdQU0JoWkdSSFpYUkliMjlyU1dZb0lITjFjSEJ2Y25RdWNtVnNhV0ZpYkdWTllYSm5hVzVTYVdkb2RDeGNibHgwWm5WdVkzUnBiMjRvSUdWc1pXMHNJR052YlhCMWRHVmtJQ2tnZTF4dVhIUmNkR2xtSUNnZ1kyOXRjSFYwWldRZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2FsRjFaWEo1TG5OM1lYQW9JR1ZzWlcwc0lIc2dYQ0prYVhOd2JHRjVYQ0k2SUZ3aWFXNXNhVzVsTFdKc2IyTnJYQ0lnZlN4Y2JseDBYSFJjZEZ4MFkzVnlRMU5UTENCYklHVnNaVzBzSUZ3aWJXRnlaMmx1VW1sbmFIUmNJaUJkSUNrN1hHNWNkRngwZlZ4dVhIUjlYRzRwTzF4dVhHNHZMeUJVYUdWelpTQm9iMjlyY3lCaGNtVWdkWE5sWkNCaWVTQmhibWx0WVhSbElIUnZJR1Y0Y0dGdVpDQndjbTl3WlhKMGFXVnpYRzVxVVhWbGNua3VaV0ZqYUNoN1hHNWNkRzFoY21kcGJqb2dYQ0pjSWl4Y2JseDBjR0ZrWkdsdVp6b2dYQ0pjSWl4Y2JseDBZbTl5WkdWeU9pQmNJbGRwWkhSb1hDSmNibjBzSUdaMWJtTjBhVzl1S0NCd2NtVm1hWGdzSUhOMVptWnBlQ0FwSUh0Y2JseDBhbEYxWlhKNUxtTnpjMGh2YjJ0eld5QndjbVZtYVhnZ0t5QnpkV1ptYVhnZ1hTQTlJSHRjYmx4MFhIUmxlSEJoYm1RNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSY2RIWmhjaUJwSUQwZ01DeGNibHgwWEhSY2RGeDBaWGh3WVc1a1pXUWdQU0I3ZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJCYzNOMWJXVnpJR0VnYzJsdVoyeGxJRzUxYldKbGNpQnBaaUJ1YjNRZ1lTQnpkSEpwYm1kY2JseDBYSFJjZEZ4MGNHRnlkSE1nUFNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1B5QjJZV3gxWlM1emNHeHBkQ2hjSWlCY0lpa2dPaUJiSUhaaGJIVmxJRjA3WEc1Y2JseDBYSFJjZEdadmNpQW9JRHNnYVNBOElEUTdJR2tyS3lBcElIdGNibHgwWEhSY2RGeDBaWGh3WVc1a1pXUmJJSEJ5WldacGVDQXJJR056YzBWNGNHRnVaRnNnYVNCZElDc2djM1ZtWm1sNElGMGdQVnh1WEhSY2RGeDBYSFJjZEhCaGNuUnpXeUJwSUYwZ2ZId2djR0Z5ZEhOYklHa2dMU0F5SUYwZ2ZId2djR0Z5ZEhOYklEQWdYVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwY21WMGRYSnVJR1Y0Y0dGdVpHVmtPMXh1WEhSY2RIMWNibHgwZlR0Y2JseHVYSFJwWmlBb0lDRnliV0Z5WjJsdUxuUmxjM1FvSUhCeVpXWnBlQ0FwSUNrZ2UxeHVYSFJjZEdwUmRXVnllUzVqYzNOSWIyOXJjMXNnY0hKbFptbDRJQ3NnYzNWbVptbDRJRjB1YzJWMElEMGdjMlYwVUc5emFYUnBkbVZPZFcxaVpYSTdYRzVjZEgxY2JuMHBPMXh1WEc1cVVYVmxjbmt1Wm00dVpYaDBaVzVrS0h0Y2JseDBZM056T2lCbWRXNWpkR2x2YmlnZ2JtRnRaU3dnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHRmpZMlZ6Y3lnZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lIWmhiSFZsSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSE4wZVd4bGN5d2diR1Z1TEZ4dVhIUmNkRngwWEhSdFlYQWdQU0I3ZlN4Y2JseDBYSFJjZEZ4MGFTQTlJREE3WEc1Y2JseDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtbHpRWEp5WVhrb0lHNWhiV1VnS1NBcElIdGNibHgwWEhSY2RGeDBjM1I1YkdWeklEMGdaMlYwVTNSNWJHVnpLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUmNkR3hsYmlBOUlHNWhiV1V1YkdWdVozUm9PMXh1WEc1Y2RGeDBYSFJjZEdadmNpQW9JRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEcxaGNGc2dibUZ0WlZzZ2FTQmRJRjBnUFNCcVVYVmxjbmt1WTNOektDQmxiR1Z0TENCdVlXMWxXeUJwSUYwc0lHWmhiSE5sTENCemRIbHNaWE1nS1R0Y2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnRZWEE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUIyWVd4MVpTQWhQVDBnZFc1a1pXWnBibVZrSUQ5Y2JseDBYSFJjZEZ4MGFsRjFaWEo1TG5OMGVXeGxLQ0JsYkdWdExDQnVZVzFsTENCMllXeDFaU0FwSURwY2JseDBYSFJjZEZ4MGFsRjFaWEo1TG1OemN5Z2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDBzSUc1aGJXVXNJSFpoYkhWbExDQmhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNU0FwTzF4dVhIUjlMRnh1WEhSemFHOTNPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJ5WlhSMWNtNGdjMmh2ZDBocFpHVW9JSFJvYVhNc0lIUnlkV1VnS1R0Y2JseDBmU3hjYmx4MGFHbGtaVG9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwY21WMGRYSnVJSE5vYjNkSWFXUmxLQ0IwYUdseklDazdYRzVjZEgwc1hHNWNkSFJ2WjJkc1pUb2dablZ1WTNScGIyNG9JSE4wWVhSbElDa2dlMXh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1KdmIyeGxZVzVjSWlBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCemRHRjBaU0EvSUhSb2FYTXVjMmh2ZHlncElEb2dkR2hwY3k1b2FXUmxLQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkR2xtSUNnZ2FYTklhV1JrWlc0b0lIUm9hWE1nS1NBcElIdGNibHgwWEhSY2RGeDBhbEYxWlhKNUtDQjBhR2x6SUNrdWMyaHZkeWdwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVLQ0IwYUdseklDa3VhR2xrWlNncE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwcE8xeHVYSFI5WEc1OUtUdGNibHh1WEc1bWRXNWpkR2x2YmlCVWQyVmxiaWdnWld4bGJTd2diM0IwYVc5dWN5d2djSEp2Y0N3Z1pXNWtMQ0JsWVhOcGJtY2dLU0I3WEc1Y2RISmxkSFZ5YmlCdVpYY2dWSGRsWlc0dWNISnZkRzkwZVhCbExtbHVhWFFvSUdWc1pXMHNJRzl3ZEdsdmJuTXNJSEJ5YjNBc0lHVnVaQ3dnWldGemFXNW5JQ2s3WEc1OVhHNXFVWFZsY25rdVZIZGxaVzRnUFNCVWQyVmxianRjYmx4dVZIZGxaVzR1Y0hKdmRHOTBlWEJsSUQwZ2UxeHVYSFJqYjI1emRISjFZM1J2Y2pvZ1ZIZGxaVzRzWEc1Y2RHbHVhWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0J2Y0hScGIyNXpMQ0J3Y205d0xDQmxibVFzSUdWaGMybHVaeXdnZFc1cGRDQXBJSHRjYmx4MFhIUjBhR2x6TG1Wc1pXMGdQU0JsYkdWdE8xeHVYSFJjZEhSb2FYTXVjSEp2Y0NBOUlIQnliM0E3WEc1Y2RGeDBkR2hwY3k1bFlYTnBibWNnUFNCbFlYTnBibWNnZkh3Z1hDSnpkMmx1WjF3aU8xeHVYSFJjZEhSb2FYTXViM0IwYVc5dWN5QTlJRzl3ZEdsdmJuTTdYRzVjZEZ4MGRH
14938aHBjeTV6ZEdGeWRDQTlJSFJvYVhNdWJtOTNJRDBnZEdocGN5NWpkWElvS1R0Y2JseDBYSFIwYUdsekxtVnVaQ0E5SUdWdVpEdGNibHgwWEhSMGFHbHpMblZ1YVhRZ1BTQjFibWwwSUh4OElDZ2dhbEYxWlhKNUxtTnpjMDUxYldKbGNsc2djSEp2Y0NCZElEOGdYQ0pjSWlBNklGd2ljSGhjSWlBcE8xeHVYSFI5TEZ4dVhIUmpkWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhaaGNpQm9iMjlyY3lBOUlGUjNaV1Z1TG5CeWIzQkliMjlyYzFzZ2RHaHBjeTV3Y205d0lGMDdYRzVjYmx4MFhIUnlaWFIxY200Z2FHOXZhM01nSmlZZ2FHOXZhM011WjJWMElEOWNibHgwWEhSY2RHaHZiMnR6TG1kbGRDZ2dkR2hwY3lBcElEcGNibHgwWEhSY2RGUjNaV1Z1TG5CeWIzQkliMjlyY3k1ZlpHVm1ZWFZzZEM1blpYUW9JSFJvYVhNZ0tUdGNibHgwZlN4Y2JseDBjblZ1T2lCbWRXNWpkR2x2YmlnZ2NHVnlZMlZ1ZENBcElIdGNibHgwWEhSMllYSWdaV0Z6WldRc1hHNWNkRngwWEhSb2IyOXJjeUE5SUZSM1pXVnVMbkJ5YjNCSWIyOXJjMXNnZEdocGN5NXdjbTl3SUYwN1hHNWNibHgwWEhScFppQW9JSFJvYVhNdWIzQjBhVzl1Y3k1a2RYSmhkR2x2YmlBcElIdGNibHgwWEhSY2RIUm9hWE11Y0c5eklEMGdaV0Z6WldRZ1BTQnFVWFZsY25rdVpXRnphVzVuV3lCMGFHbHpMbVZoYzJsdVp5QmRLRnh1WEhSY2RGeDBYSFJ3WlhKalpXNTBMQ0IwYUdsekxtOXdkR2x2Ym5NdVpIVnlZWFJwYjI0Z0tpQndaWEpqWlc1MExDQXdMQ0F4TENCMGFHbHpMbTl3ZEdsdmJuTXVaSFZ5WVhScGIyNWNibHgwWEhSY2RDazdYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEhSb2FYTXVjRzl6SUQwZ1pXRnpaV1FnUFNCd1pYSmpaVzUwTzF4dVhIUmNkSDFjYmx4MFhIUjBhR2x6TG01dmR5QTlJQ2dnZEdocGN5NWxibVFnTFNCMGFHbHpMbk4wWVhKMElDa2dLaUJsWVhObFpDQXJJSFJvYVhNdWMzUmhjblE3WEc1Y2JseDBYSFJwWmlBb0lIUm9hWE11YjNCMGFXOXVjeTV6ZEdWd0lDa2dlMXh1WEhSY2RGeDBkR2hwY3k1dmNIUnBiMjV6TG5OMFpYQXVZMkZzYkNnZ2RHaHBjeTVsYkdWdExDQjBhR2x6TG01dmR5d2dkR2hwY3lBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dhRzl2YTNNZ0ppWWdhRzl2YTNNdWMyVjBJQ2tnZTF4dVhIUmNkRngwYUc5dmEzTXVjMlYwS0NCMGFHbHpJQ2s3WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGUjNaV1Z1TG5CeWIzQkliMjlyY3k1ZlpHVm1ZWFZzZEM1elpYUW9JSFJvYVhNZ0tUdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkSDFjYm4wN1hHNWNibFIzWldWdUxuQnliM1J2ZEhsd1pTNXBibWwwTG5CeWIzUnZkSGx3WlNBOUlGUjNaV1Z1TG5CeWIzUnZkSGx3WlR0Y2JseHVWSGRsWlc0dWNISnZjRWh2YjJ0eklEMGdlMXh1WEhSZlpHVm1ZWFZzZERvZ2UxeHVYSFJjZEdkbGREb2dablZ1WTNScGIyNG9JSFIzWldWdUlDa2dlMXh1WEhSY2RGeDBkbUZ5SUhKbGMzVnNkRHRjYmx4dVhIUmNkRngwYVdZZ0tDQjBkMlZsYmk1bGJHVnRXeUIwZDJWbGJpNXdjbTl3SUYwZ0lUMGdiblZzYkNBbUpseHVYSFJjZEZ4MFhIUW9JWFIzWldWdUxtVnNaVzB1YzNSNWJHVWdmSHdnZEhkbFpXNHVaV3hsYlM1emRIbHNaVnNnZEhkbFpXNHVjSEp2Y0NCZElEMDlJRzUxYkd3cElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkSGRsWlc0dVpXeGxiVnNnZEhkbFpXNHVjSEp2Y0NCZE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJRWVhOemFXNW5JR0Z1SUdWdGNIUjVJSE4wY21sdVp5QmhjeUJoSUROeVpDQndZWEpoYldWMFpYSWdkRzhnTG1OemN5QjNhV3hzSUdGMWRHOXRZWFJwWTJGc2JIbGNibHgwWEhSY2RDOHZJR0YwZEdWdGNIUWdZU0J3WVhKelpVWnNiMkYwSUdGdVpDQm1ZV3hzWW1GamF5QjBieUJoSUhOMGNtbHVaeUJwWmlCMGFHVWdjR0Z5YzJVZ1ptRnBiSE11WEc1Y2RGeDBYSFF2THlCVGFXMXdiR1VnZG1Gc2RXVnpJSE4xWTJnZ1lYTWdYQ0l4TUhCNFhDSWdZWEpsSUhCaGNuTmxaQ0IwYnlCR2JHOWhkRHRjYmx4MFhIUmNkQzh2SUdOdmJYQnNaWGdnZG1Gc2RXVnpJSE4xWTJnZ1lYTWdYQ0p5YjNSaGRHVW9NWEpoWkNsY0lpQmhjbVVnY21WMGRYSnVaV1FnWVhNdGFYTXVYRzVjZEZ4MFhIUnlaWE4xYkhRZ1BTQnFVWFZsY25rdVkzTnpLQ0IwZDJWbGJpNWxiR1Z0TENCMGQyVmxiaTV3Y205d0xDQmNJbHdpSUNrN1hHNWNkRngwWEhRdkx5QkZiWEIwZVNCemRISnBibWR6TENCdWRXeHNMQ0IxYm1SbFptbHVaV1FnWVc1a0lGd2lZWFYwYjF3aUlHRnlaU0JqYjI1MlpYSjBaV1FnZEc4Z01DNWNibHgwWEhSY2RISmxkSFZ5YmlBaGNtVnpkV3gwSUh4OElISmxjM1ZzZENBOVBUMGdYQ0poZFhSdlhDSWdQeUF3SURvZ2NtVnpkV3gwTzF4dVhIUmNkSDBzWEc1Y2RGeDBjMlYwT2lCbWRXNWpkR2x2YmlnZ2RIZGxaVzRnS1NCN1hHNWNkRngwWEhRdkx5QlZjMlVnYzNSbGNDQm9iMjlySUdadmNpQmlZV05ySUdOdmJYQmhkQzVjYmx4MFhIUmNkQzh2SUZWelpTQmpjM05JYjI5cklHbG1JR2wwY3lCMGFHVnlaUzVjYmx4MFhIUmNkQzh2SUZWelpTQXVjM1I1YkdVZ2FXWWdZWFpoYVd4aFlteGxJR0Z1WkNCMWMyVWdjR3hoYVc0Z2NISnZjR1Z5ZEdsbGN5QjNhR1Z5WlNCaGRtRnBiR0ZpYkdVdVhHNWNkRngwWEhScFppQW9JR3BSZFdWeWVTNW1lQzV6ZEdWd1d5QjBkMlZsYmk1d2NtOXdJRjBnS1NCN1hHNWNkRngwWEhSY2RHcFJkV1Z5ZVM1bWVDNXpkR1Z3V3lCMGQyVmxiaTV3Y205d0lGMG9JSFIzWldWdUlDazdYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IwZDJWbGJpNWxiR1Z0TG5OMGVXeGxJQ1ltSUNnZ2RIZGxaVzR1Wld4bGJTNXpkSGxzWlZzZ2FsRjFaWEo1TG1OemMxQnliM0J6V3lCMGQyVmxiaTV3Y205d0lGMGdYU0FoUFNCdWRXeHNJSHg4SUdwUmRXVnllUzVqYzNOSWIyOXJjMXNnZEhkbFpXNHVjSEp2Y0NCZElDa2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2dkSGRsWlc0dVpXeGxiU3dnZEhkbFpXNHVjSEp2Y0N3Z2RIZGxaVzR1Ym05M0lDc2dkSGRsWlc0dWRXNXBkQ0FwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwZEhkbFpXNHVaV3hsYlZzZ2RIZGxaVzR1Y0hKdmNDQmRJRDBnZEhkbFpXNHVibTkzTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZWeHVmVHRjYmx4dUx5OGdVM1Z3Y0c5eWREb2dTVVU1WEc0dkx5QlFZVzVwWXlCaVlYTmxaQ0JoY0hCeWIyRmphQ0IwYnlCelpYUjBhVzVu
14938SUhSb2FXNW5jeUJ2YmlCa2FYTmpiMjV1WldOMFpXUWdibTlrWlhOY2JsUjNaV1Z1TG5CeWIzQkliMjlyY3k1elkzSnZiR3hVYjNBZ1BTQlVkMlZsYmk1d2NtOXdTRzl2YTNNdWMyTnliMnhzVEdWbWRDQTlJSHRjYmx4MGMyVjBPaUJtZFc1amRHbHZiaWdnZEhkbFpXNGdLU0I3WEc1Y2RGeDBhV1lnS0NCMGQyVmxiaTVsYkdWdExtNXZaR1ZVZVhCbElDWW1JSFIzWldWdUxtVnNaVzB1Y0dGeVpXNTBUbTlrWlNBcElIdGNibHgwWEhSY2RIUjNaV1Z1TG1Wc1pXMWJJSFIzWldWdUxuQnliM0FnWFNBOUlIUjNaV1Z1TG01dmR6dGNibHgwWEhSOVhHNWNkSDFjYm4wN1hHNWNibXBSZFdWeWVTNWxZWE5wYm1jZ1BTQjdYRzVjZEd4cGJtVmhjam9nWm5WdVkzUnBiMjRvSUhBZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUhBN1hHNWNkSDBzWEc1Y2RITjNhVzVuT2lCbWRXNWpkR2x2YmlnZ2NDQXBJSHRjYmx4MFhIUnlaWFIxY200Z01DNDFJQzBnVFdGMGFDNWpiM01vSUhBZ0tpQk5ZWFJvTGxCSklDa2dMeUF5TzF4dVhIUjlYRzU5TzF4dVhHNXFVWFZsY25rdVpuZ2dQU0JVZDJWbGJpNXdjbTkwYjNSNWNHVXVhVzVwZER0Y2JseHVMeThnUW1GamF5QkRiMjF3WVhRZ1BERXVPQ0JsZUhSbGJuTnBiMjRnY0c5cGJuUmNibXBSZFdWeWVTNW1lQzV6ZEdWd0lEMGdlMzA3WEc1Y2JseHVYRzVjYm5aaGNseHVYSFJtZUU1dmR5d2dkR2x0WlhKSlpDeGNibHgwY21aNGRIbHdaWE1nUFNBdlhpZy9PblJ2WjJkc1pYeHphRzkzZkdocFpHVXBKQzhzWEc1Y2RISm1lRzUxYlNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGlnL09paGJLeTFkS1QxOEtTaGNJaUFySUhCdWRXMGdLeUJjSWlrb1cyRXRlaVZkS2lra1hDSXNJRndpYVZ3aUlDa3NYRzVjZEhKeWRXNGdQU0F2Y1hWbGRXVkliMjlyY3lRdkxGeHVYSFJoYm1sdFlYUnBiMjVRY21WbWFXeDBaWEp6SUQwZ1d5QmtaV1poZFd4MFVISmxabWxzZEdWeUlGMHNYRzVjZEhSM1pXVnVaWEp6SUQwZ2UxeHVYSFJjZEZ3aUtsd2lPaUJiSUdaMWJtTjBhVzl1S0NCd2NtOXdMQ0IyWVd4MVpTQXBJSHRjYmx4MFhIUmNkSFpoY2lCMGQyVmxiaUE5SUhSb2FYTXVZM0psWVhSbFZIZGxaVzRvSUhCeWIzQXNJSFpoYkhWbElDa3NYRzVjZEZ4MFhIUmNkSFJoY21kbGRDQTlJSFIzWldWdUxtTjFjaWdwTEZ4dVhIUmNkRngwWEhSd1lYSjBjeUE5SUhKbWVHNTFiUzVsZUdWaktDQjJZV3gxWlNBcExGeHVYSFJjZEZ4MFhIUjFibWwwSUQwZ2NHRnlkSE1nSmlZZ2NHRnlkSE5iSURNZ1hTQjhmQ0FvSUdwUmRXVnllUzVqYzNOT2RXMWlaWEpiSUhCeWIzQWdYU0EvSUZ3aVhDSWdPaUJjSW5CNFhDSWdLU3hjYmx4dVhIUmNkRngwWEhRdkx5QlRkR0Z5ZEdsdVp5QjJZV3gxWlNCamIyMXdkWFJoZEdsdmJpQnBjeUJ5WlhGMWFYSmxaQ0JtYjNJZ2NHOTBaVzUwYVdGc0lIVnVhWFFnYldsemJXRjBZMmhsYzF4dVhIUmNkRngwWEhSemRHRnlkQ0E5SUNnZ2FsRjFaWEo1TG1OemMwNTFiV0psY2xzZ2NISnZjQ0JkSUh4OElIVnVhWFFnSVQwOUlGd2ljSGhjSWlBbUppQXJkR0Z5WjJWMElDa2dKaVpjYmx4MFhIUmNkRngwWEhSeVpuaHVkVzB1WlhobFl5Z2dhbEYxWlhKNUxtTnpjeWdnZEhkbFpXNHVaV3hsYlN3Z2NISnZjQ0FwSUNrc1hHNWNkRngwWEhSY2RITmpZV3hsSUQwZ01TeGNibHgwWEhSY2RGeDBiV0Y0U1hSbGNtRjBhVzl1Y3lBOUlESXdPMXh1WEc1Y2RGeDBYSFJwWmlBb0lITjBZWEowSUNZbUlITjBZWEowV3lBeklGMGdJVDA5SUhWdWFYUWdLU0I3WEc1Y2RGeDBYSFJjZEM4dklGUnlkWE4wSUhWdWFYUnpJSEpsY0c5eWRHVmtJR0o1SUdwUmRXVnllUzVqYzNOY2JseDBYSFJjZEZ4MGRXNXBkQ0E5SUhWdWFYUWdmSHdnYzNSaGNuUmJJRE1nWFR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJOWVd0bElITjFjbVVnZDJVZ2RYQmtZWFJsSUhSb1pTQjBkMlZsYmlCd2NtOXdaWEowYVdWeklHeGhkR1Z5SUc5dVhHNWNkRngwWEhSY2RIQmhjblJ6SUQwZ2NHRnlkSE1nZkh3Z1cxMDdYRzVjYmx4MFhIUmNkRngwTHk4Z1NYUmxjbUYwYVhabGJIa2dZWEJ3Y205NGFXMWhkR1VnWm5KdmJTQmhJRzV2Ym5wbGNtOGdjM1JoY25ScGJtY2djRzlwYm5SY2JseDBYSFJjZEZ4MGMzUmhjblFnUFNBcmRHRnlaMlYwSUh4OElERTdYRzVjYmx4MFhIUmNkRngwWkc4Z2UxeHVYSFJjZEZ4MFhIUmNkQzh2SUVsbUlIQnlaWFpwYjNWeklHbDBaWEpoZEdsdmJpQjZaWEp2WldRZ2IzVjBMQ0JrYjNWaWJHVWdkVzUwYVd3Z2QyVWdaMlYwSUNwemIyMWxkR2hwYm1jcUxseHVYSFJjZEZ4MFhIUmNkQzh2SUZWelpTQnpkSEpwYm1jZ1ptOXlJR1J2ZFdKc2FXNW5JSE52SUhkbElHUnZiaWQwSUdGalkybGtaVzUwWVd4c2VTQnpaV1VnYzJOaGJHVWdZWE1nZFc1amFHRnVaMlZrSUdKbGJHOTNYRzVjZEZ4MFhIUmNkRngwYzJOaGJHVWdQU0J6WTJGc1pTQjhmQ0JjSWk0MVhDSTdYRzVjYmx4MFhIUmNkRngwWEhRdkx5QkJaR3AxYzNRZ1lXNWtJR0Z3Y0d4NVhHNWNkRngwWEhSY2RGeDBjM1JoY25RZ1BTQnpkR0Z5ZENBdklITmpZV3hsTzF4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1emRIbHNaU2dnZEhkbFpXNHVaV3hsYlN3Z2NISnZjQ3dnYzNSaGNuUWdLeUIxYm1sMElDazdYRzVjYmx4MFhIUmNkRngwTHk4Z1ZYQmtZWFJsSUhOallXeGxMQ0IwYjJ4bGNtRjBhVzVuSUhwbGNtOGdiM0lnVG1GT0lHWnliMjBnZEhkbFpXNHVZM1Z5S0Nrc1hHNWNkRngwWEhSY2RDOHZJR0p5WldGcklIUm9aU0JzYjI5d0lHbG1JSE5qWVd4bElHbHpJSFZ1WTJoaGJtZGxaQ0J2Y2lCd1pYSm1aV04wTENCdmNpQnBaaUIzWlNkMlpTQnFkWE4wSUdoaFpDQmxibTkxWjJoY2JseDBYSFJjZEZ4MGZTQjNhR2xzWlNBb0lITmpZV3hsSUNFOVBTQW9jMk5oYkdVZ1BTQjBkMlZsYmk1amRYSW9LU0F2SUhSaGNtZGxkQ2tnSmlZZ2MyTmhiR1VnSVQwOUlERWdKaVlnTFMxdFlYaEpkR1Z5WVhScGIyNXpJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklGVndaR0YwWlNCMGQyVmxiaUJ3Y205d1pYSjBhV1Z6WEc1Y2RGeDBYSFJwWmlBb0lIQmhjblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUnpkR0Z5ZENBOUlIUjNaV1Z1TG5OMFlYSjBJRDBnSzNOMFlYSjBJSHg4SUN0MFlYSm5aWFFnZkh3Z01EdGNibHgwWEhSY2RGeDBkSGRsWlc0dWRXNXBkQ0E5SUhWdWFYUTdYRzVjZEZ4MFhIUmNkQzh2SUVsbUlHRWdLejB2TFQwZ2RHOXJaVzRnZDJGeklIQnliM1pwWkdWa0xDQjNaU2R5WlNCa2IybHVaeUJoSUhKbGJHRjBhWFpsSUdGdWFXMWhkR2x2Ymx4dVhIUmNkRngwWEhSMGQyVmxiaTVsYm1RZ1BTQndZWEowYzFzZ01TQmRJRDljYmx4MFhIUmNkRngwWEhSemRHRnlkQ0FySUNnZ2NHRnlkSE5iSURFZ1hTQXJJREVnS1NBcUlIQmhjblJ6V3lBeUlGMGdPbHh1WEhSY2RGeDBYSFJjZEN0d1lYSjBjMXNnTWlCZE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnlaWFIxY200Z2RIZGxaVzQ3WEc1Y2RGeDBmU0JkWEc1Y2RIMDdYRzVjYmk4dklFRnVhVzFoZEdsdmJuTWdZM0psWVhSbFpDQnplVzVqYUhKdmJtOTFjMng1SUhkcGJHd2djblZ1SUhONWJtTm9jbTl1YjNWemJIbGNibVoxYm1OMGFXOXVJR055WldGMFpVWjRUbTkzS0NrZ2UxeHVYSFJ6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEdaNFRtOTNJRDBnZFc1a1pXWnBibVZrTzF4dVhIUjlLVHRjYmx4MGNtVjBkWEp1SUNnZ1puaE9iM2NnUFNCcVVYVmxjbmt1Ym05M0tDa2dLVHRjYm4xY2JseHVMeThnUjJWdVpYSmhkR1VnY0dGeVlXMWxkR1Z5Y3lCMGJ5QmpjbVZoZEdVZ1lTQnpkR0Z1WkdGeVpDQmhibWx0WVhScGIyNWNibVoxYm1OMGFXOXVJR2RsYmtaNEtDQjBlWEJsTENCcGJtTnNkV1JsVjJsa2RHZ2dLU0I3WEc1Y2RIWmhjaUIzYUdsamFDeGNibHgwWEhScElEMGdNQ3hjYmx4MFhIUmhkSFJ5Y3lBOUlIc2dhR1ZwWjJoME9pQjBlWEJsSUgwN1hHNWNibHgwTHk4Z1NXWWdkMlVnYVc1amJIVmtaU0IzYVdSMGFDd2djM1JsY0NCMllXeDFaU0JwY3lBeElIUnZJR1J2SUdGc2JDQmpjM05GZUhCaGJtUWdkbUZzZFdWekxGeHVYSFF2THlCdmRHaGxjbmRwYzJVZ2MzUmxjQ0IyWVd4MVpTQnBjeUF5SUhSdklITnJhWEFnYjNabGNpQk1aV1owSUdGdVpDQlNhV2RvZEZ4dVhIUnBibU5zZFdSbFYybGtkR2dnUFNCcGJtTnNkV1JsVjJsa2RHZ2dQeUF4SURvZ01EdGNibHgwWm05eUlDZ2dPeUJwSUR3Z05DQTdJR2tnS3owZ01pQXRJR2x1WTJ4MVpHVlhhV1IwYUNBcElIdGNibHgwWEhSM2FHbGphQ0E5SUdOemMwVjRjR0Z1WkZzZ2FTQmRPMXh1WEhSY2RHRjBkSEp6V3lCY0ltMWhjbWRwYmx3aUlDc2dkMmhwWTJnZ1hTQTlJR0YwZEhKeld5QmNJbkJoW
14938kdScGJtZGNJaUFySUhkb2FXTm9JRjBnUFNCMGVYQmxPMXh1WEhSOVhHNWNibHgwYVdZZ0tDQnBibU5zZFdSbFYybGtkR2dnS1NCN1hHNWNkRngwWVhSMGNuTXViM0JoWTJsMGVTQTlJR0YwZEhKekxuZHBaSFJvSUQwZ2RIbHdaVHRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJoZEhSeWN6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVkhkbFpXNG9JSFpoYkhWbExDQndjbTl3TENCaGJtbHRZWFJwYjI0Z0tTQjdYRzVjZEhaaGNpQjBkMlZsYml4Y2JseDBYSFJqYjJ4c1pXTjBhVzl1SUQwZ0tDQjBkMlZsYm1WeWMxc2djSEp2Y0NCZElIeDhJRnRkSUNrdVkyOXVZMkYwS0NCMGQyVmxibVZ5YzFzZ1hDSXFYQ0lnWFNBcExGeHVYSFJjZEdsdVpHVjRJRDBnTUN4Y2JseDBYSFJzWlc1bmRHZ2dQU0JqYjJ4c1pXTjBhVzl1TG14bGJtZDBhRHRjYmx4MFptOXlJQ2dnT3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ3JLeUFwSUh0Y2JseDBYSFJwWmlBb0lDaDBkMlZsYmlBOUlHTnZiR3hsWTNScGIyNWJJR2x1WkdWNElGMHVZMkZzYkNnZ1lXNXBiV0YwYVc5dUxDQndjbTl3TENCMllXeDFaU0FwS1NBcElIdGNibHh1WEhSY2RGeDBMeThnVjJVbmNtVWdaRzl1WlNCM2FYUm9JSFJvYVhNZ2NISnZjR1Z5ZEhsY2JseDBYSFJjZEhKbGRIVnliaUIwZDJWbGJqdGNibHgwWEhSOVhHNWNkSDFjYm4xY2JseHVablZ1WTNScGIyNGdaR1ZtWVhWc2RGQnlaV1pwYkhSbGNpZ2daV3hsYlN3Z2NISnZjSE1zSUc5d2RITWdLU0I3WEc1Y2RDOHFJR3B6YUdsdWRDQjJZV3hwWkhSb2FYTTZJSFJ5ZFdVZ0tpOWNibHgwZG1GeUlIQnliM0FzSUhaaGJIVmxMQ0IwYjJkbmJHVXNJSFIzWldWdUxDQm9iMjlyY3l3Z2IyeGtabWx5WlN3Z1pHbHpjR3hoZVN3Z1kyaGxZMnRFYVhOd2JHRjVMRnh1WEhSY2RHRnVhVzBnUFNCMGFHbHpMRnh1WEhSY2RHOXlhV2NnUFNCN2ZTeGNibHgwWEhSemRIbHNaU0E5SUdWc1pXMHVjM1I1YkdVc1hHNWNkRngwYUdsa1pHVnVJRDBnWld4bGJTNXViMlJsVkhsd1pTQW1KaUJwYzBocFpHUmxiaWdnWld4bGJTQXBMRnh1WEhSY2RHUmhkR0ZUYUc5M0lEMGdaR0YwWVY5d2NtbDJMbWRsZENnZ1pXeGxiU3dnWENKbWVITm9iM2RjSWlBcE8xeHVYRzVjZEM4dklFaGhibVJzWlNCeGRXVjFaVG9nWm1Gc2MyVWdjSEp2YldselpYTmNibHgwYVdZZ0tDQWhiM0IwY3k1eGRXVjFaU0FwSUh0Y2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWZjWFZsZFdWSWIyOXJjeWdnWld4bGJTd2dYQ0ptZUZ3aUlDazdYRzVjZEZ4MGFXWWdLQ0JvYjI5cmN5NTFibkYxWlhWbFpDQTlQU0J1ZFd4c0lDa2dlMXh1WEhSY2RGeDBhRzl2YTNNdWRXNXhkV1YxWldRZ1BTQXdPMXh1WEhSY2RGeDBiMnhrWm1seVpTQTlJR2h2YjJ0ekxtVnRjSFI1TG1acGNtVTdYRzVjZEZ4MFhIUm9iMjlyY3k1bGJYQjBlUzVtYVhKbElEMGdablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJV2h2YjJ0ekxuVnVjWFZsZFdWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEc5c1pHWnBjbVVvS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHgwWEhSOVhHNWNkRngwYUc5dmEzTXVkVzV4ZFdWMVpXUXJLenRjYmx4dVhIUmNkR0Z1YVcwdVlXeDNZWGx6S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MEx5OGdSVzV6ZFhKbElIUm9aU0JqYjIxd2JHVjBaU0JvWVc1a2JHVnlJR2x6SUdOaGJHeGxaQ0JpWldadmNtVWdkR2hwY3lCamIyMXdiR1YwWlhOY2JseDBYSFJjZEdGdWFXMHVZV3gzWVhsektHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFJvYjI5cmN5NTFibkYxWlhWbFpDMHRPMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnFVWFZsY25rdWNYVmxkV1VvSUdWc1pXMHNJRndpWm5oY0lpQXBMbXhsYm1kMGFDQXBJSHRjYmx4MFhIUmNkRngwWEhSb2IyOXJjeTVsYlhCMGVTNW1hWEpsS0NrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMHBPMXh1WEhSY2RIMHBPMXh1WEhSOVhHNWNibHgwTHk4Z1NHVnBaMmgwTDNkcFpIUm9JRzkyWlhKbWJHOTNJSEJoYzNOY2JseDBhV1lnS0NCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDWW1JQ2dnWENKb1pXbG5hSFJjSWlCcGJpQndjbTl3Y3lCOGZDQmNJbmRwWkhSb1hDSWdhVzRnY0hKdmNITWdLU0FwSUh0Y2JseDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0J1YjNSb2FXNW5JSE51WldGcmN5QnZkWFJjYmx4MFhIUXZMeUJTWldOdmNtUWdZV3hzSURNZ2IzWmxjbVpzYjNjZ1lYUjBjbWxpZFhSbGN5QmlaV05oZFhObElFbEZPUzB4TUNCa2J5QnViM1JjYmx4MFhIUXZMeUJqYUdGdVoyVWdkR2hsSUc5MlpYSm1iRzkzSUdGMGRISnBZblYwWlNCM2FHVnVJRzkyWlhKbWJHOTNXQ0JoYm1SY2JseDBYSFF2THlCdmRtVnlabXh2ZDFrZ1lYSmxJSE5sZENCMGJ5QjBhR1VnYzJGdFpTQjJZV3gxWlZ4dVhIUmNkRzl3ZEhNdWIzWmxjbVpzYjNjZ1BTQmJJSE4wZVd4bExtOTJaWEptYkc5M0xDQnpkSGxzWlM1dmRtVnlabXh2ZDFnc0lITjBlV3hsTG05MlpYSm1iRzkzV1NCZE8xeHVYRzVjZEZ4MEx5OGdVMlYwSUdScGMzQnNZWGtnY0hKdmNHVnlkSGtnZEc4Z2FXNXNhVzVsTFdKc2IyTnJJR1p2Y2lCb1pXbG5hSFF2ZDJsa2RHaGNibHgwWEhRdkx5QmhibWx0WVhScGIyNXpJRzl1SUdsdWJHbHVaU0JsYkdWdFpXNTBjeUIwYUdGMElHRnlaU0JvWVhacGJtY2dkMmxrZEdndmFHVnBaMmgwSUdGdWFXMWhkR1ZrWEc1Y2RGeDBaR2x6Y0d4aGVTQTlJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrN1hHNWNibHgwWEhRdkx5QlVaWE4wSUdSbFptRjFiSFFnWkdsemNHeGhlU0JwWmlCa2FYTndiR0Y1SUdseklHTjFjbkpsYm5Sc2VTQmNJbTV2Ym1WY0lseHVYSFJjZEdOb1pXTnJSR2x6Y0d4aGVTQTlJR1JwYzNCc1lYa2dQVDA5SUZ3aWJtOXVaVndpSUQ5Y2JseDBYSFJjZEdSaGRHRmZjSEpwZGk1blpYUW9JR1ZzWlcwc0lGd2liMnhrWkdsemNHeGhlVndpSUNrZ2ZId2daR1ZtWVhWc2RFUnBjM0JzWVhrb0lHVnNaVzB1Ym05a1pVNWhiV1VnS1NBNklHUnBjM0JzWVhrN1hHNWNibHgwWEhScFppQW9JR05vWldOclJHbHpjR3hoZVNBOVBUMGdYQ0pwYm14cGJtVmNJaUFtSmlCcVVYVmxjbmt1WTNOektDQmxiR1Z0TENCY0ltWnNiMkYwWENJZ0tTQTlQVDBnWENKdWIyNWxYQ0lnS1NCN1hHNWNkRngwWEhSemRIbHNaUzVrYVhOd2JHRjVJRDBnWENKcGJteHBibVV0WW14dlkydGNJanRjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFJwWmlBb0lHOXdkSE11YjNabGNtWnNiM2NnS1NCN1hHNWNkRngwYzNSNWJHVXViM1psY21ac2IzY2dQU0JjSW1ocFpHUmxibHdpTzF4dVhIUmNkR0Z1YVcwdVlXeDNZWGx6S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGMzUjViR1V1YjNabGNtWnNiM2NnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF3SUYwN1hHNWNkRngwWEhSemRIbHNaUzV2ZG1WeVpteHZkMWdnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF4SUYwN1hHNWNkRngwWEhSemRIbHNaUzV2ZG1WeVpteHZkMWtnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF5SUYwN1hHNWNkRngwZlNrN1hHNWNkSDFjYmx4dVhIUXZMeUJ6YUc5M0wyaHBaR1VnY0dGemMxeHVYSFJtYjNJZ0tDQndjbTl3SUdsdUlIQnliM0J6SUNrZ2UxeHVYSFJjZEhaaGJIVmxJRDBnY0hKdmNITmJJSEJ5YjNBZ1hUdGNibHgwWEhScFppQW9JSEptZUhSNWNHVnpMbVY0WldNb0lIWmhiSFZsSUNrZ0tTQjdYRzVjZEZ4MFhIUmtaV3hsZEdVZ2NISnZjSE5iSUhCeWIzQWdYVHRjYmx4MFhIUmNkSFJ2WjJkc1pTQTlJSFJ2W
14938jJkc1pTQjhmQ0IyWVd4MVpTQTlQVDBnWENKMGIyZG5iR1ZjSWp0Y2JseDBYSFJjZEdsbUlDZ2dkbUZzZFdVZ1BUMDlJQ2dnYUdsa1pHVnVJRDhnWENKb2FXUmxYQ0lnT2lCY0luTm9iM2RjSWlBcElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSFJvWlhKbElHbHpJR1JoZEdGVGFHOTNJR3hsWm5RZ2IzWmxjaUJtY205dElHRWdjM1J2Y0hCbFpDQm9hV1JsSUc5eUlITm9iM2NnWVc1a0lIZGxJR0Z5WlNCbmIybHVaeUIwYnlCd2NtOWpaV1ZrSUhkcGRHZ2djMmh2ZHl3Z2QyVWdjMmh2ZFd4a0lIQnlaWFJsYm1RZ2RHOGdZbVVnYUdsa1pHVnVYRzVjZEZ4MFhIUmNkR2xtSUNnZ2RtRnNkV1VnUFQwOUlGd2ljMmh2ZDF3aUlDWW1JR1JoZEdGVGFHOTNJQ1ltSUdSaGRHRlRhRzkzV3lCd2NtOXdJRjBnSVQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUmNkRngwWEhSb2FXUmtaVzRnUFNCMGNuVmxPMXh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEdOdmJuUnBiblZsTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwWEhSdmNtbG5XeUJ3Y205d0lGMGdQU0JrWVhSaFUyaHZkeUFtSmlCa1lYUmhVMmh2ZDFzZ2NISnZjQ0JkSUh4OElHcFJkV1Z5ZVM1emRIbHNaU2dnWld4bGJTd2djSEp2Y0NBcE8xeHVYRzVjZEZ4MEx5OGdRVzU1SUc1dmJpMW1lQ0IyWVd4MVpTQnpkRzl3Y3lCMWN5Qm1jbTl0SUhKbGMzUnZjbWx1WnlCMGFHVWdiM0pwWjJsdVlXd2daR2x6Y0d4aGVTQjJZV3gxWlZ4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmthWE53YkdGNUlEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkR2xtSUNnZ0lXcFJkV1Z5ZVM1cGMwVnRjSFI1VDJKcVpXTjBLQ0J2Y21sbklDa2dLU0I3WEc1Y2RGeDBhV1lnS0NCa1lYUmhVMmh2ZHlBcElIdGNibHgwWEhSY2RHbG1JQ2dnWENKb2FXUmtaVzVjSWlCcGJpQmtZWFJoVTJodmR5QXBJSHRjYmx4MFhIUmNkRngwYUdsa1pHVnVJRDBnWkdGMFlWTm9iM2N1YUdsa1pHVnVPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSa1lYUmhVMmh2ZHlBOUlHUmhkR0ZmY0hKcGRpNWhZMk5sYzNNb0lHVnNaVzBzSUZ3aVpuaHphRzkzWENJc0lIdDlJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTNSdmNtVWdjM1JoZEdVZ2FXWWdhWFJ6SUhSdloyZHNaU0F0SUdWdVlXSnNaWE1nTG5OMGIzQW9LUzUwYjJkbmJHVW9LU0IwYnlCY0luSmxkbVZ5YzJWY0lseHVYSFJjZEdsbUlDZ2dkRzluWjJ4bElDa2dlMXh1WEhSY2RGeDBaR0YwWVZOb2IzY3VhR2xrWkdWdUlEMGdJV2hwWkdSbGJqdGNibHgwWEhSOVhHNWNkRngwYVdZZ0tDQm9hV1JrWlc0Z0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rb0lHVnNaVzBnS1M1emFHOTNLQ2s3WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHRnVhVzB1Wkc5dVpTaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVLQ0JsYkdWdElDa3VhR2xrWlNncE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYSFJjZEdGdWFXMHVaRzl1WlNobWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RIWmhjaUJ3Y205d08xeHVYRzVjZEZ4MFhIUmtZWFJoWDNCeWFYWXVjbVZ0YjNabEtDQmxiR1Z0TENCY0ltWjRjMmh2ZDF3aUlDazdYRzVjZEZ4MFhIUm1iM0lnS0NCd2NtOXdJR2x1SUc5eWFXY2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2daV3hsYlN3Z2NISnZjQ3dnYjNKcFoxc2djSEp2Y0NCZElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZTazdYRzVjZEZ4MFptOXlJQ2dnY0hKdmNDQnBiaUJ2Y21sbklDa2dlMXh1WEhSY2RGeDBkSGRsWlc0Z1BTQmpjbVZoZEdWVWQyVmxiaWdnYUdsa1pHVnVJRDhnWkdGMFlWTm9iM2RiSUhCeWIzQWdYU0E2SURBc0lIQnliM0FzSUdGdWFXMGdLVHRjYmx4dVhIUmNkRngwYVdZZ0tDQWhLQ0J3Y205d0lHbHVJR1JoZEdGVGFHOTNJQ2tnS1NCN1hHNWNkRngwWEhSY2RHUmhkR0ZUYUc5M1d5QndjbTl3SUYwZ1BTQjBkMlZsYmk1emRHRnlkRHRjYmx4MFhIUmNkRngwYVdZZ0tDQm9hV1JrWlc0Z0tTQjdYRzVjZEZ4MFhIUmNkRngwZEhkbFpXNHVaVzVrSUQwZ2RIZGxaVzR1YzNSaGNuUTdYRzVjZEZ4MFhIUmNkRngwZEhkbFpXNHVjM1JoY25RZ1BTQndjbTl3SUQwOVBTQmNJbmRwWkhSb1hDSWdmSHdnY0hKdmNDQTlQVDBnWENKb1pXbG5hSFJjSWlBL0lERWdPaUF3TzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkQzh2SUVsbUlIUm9hWE1nYVhNZ1lTQnViMjl3SUd4cGEyVWdMbWhwWkdVb0tTNW9hV1JsS0Nrc0lISmxjM1J2Y21VZ1lXNGdiM1psY25keWFYUjBaVzRnWkdsemNHeGhlU0IyWVd4MVpWeHVYSFI5SUdWc2MyVWdhV1lnS0NBb1pHbHpjR3hoZVNBOVBUMGdYQ0p1YjI1bFhDSWdQeUJrWldaaGRXeDBSR2x6Y0d4aGVTZ2daV3hsYlM1dWIyUmxUbUZ0WlNBcElEb2daR2x6Y0d4aGVTa2dQVDA5SUZ3aWFXNXNhVzVsWENJZ0tTQjdYRzVjZEZ4MGMzUjViR1V1WkdsemNHeGhlU0E5SUdScGMzQnNZWGs3WEc1Y2RIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2NISnZjRVpwYkhSbGNpZ2djSEp2Y0hNc0lITndaV05wWVd4RllYTnBibWNnS1NCN1hHNWNkSFpoY2lCcGJtUmxlQ3dnYm1GdFpTd2daV0Z6YVc1bkxDQjJZV3gxWlN3Z2FHOXZhM003WEc1Y2JseDBMeThnWTJGdFpXeERZWE5sTENCemNHVmphV0ZzUldGemFXNW5JR0Z1WkNCbGVIQmhibVFnWTNOelNHOXZheUJ3WVhOelhHNWNkR1p2Y2lBb0lHbHVaR1Y0SUdsdUlIQnliM0J6SUNrZ2UxeHVYSFJjZEc1aGJXVWdQU0JxVVhWbGNua3VZMkZ0Wld4RFlYTmxLQ0JwYm1SbGVDQXBPMXh1WEhSY2RHVmhjMmx1WnlBOUlITndaV05wWVd4RllYTnBibWRiSUc1aGJXVWdYVHRjYmx4MFhIUjJZV3gxWlNBOUlIQnliM0J6V3lCcGJtUmxlQ0JkTzF4dVhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1selFYSnlZWGtvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSbFlYTnBibWNnUFNCMllXeDFaVnNnTVNCZE8xeHVYSFJjZEZ4MGRtRnNkV1VnUFNCd2NtOXdjMXNnYVc1a1pYZ2dYU0E5SUhaaGJIVmxXeUF3SUYwN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnBibVJsZUNBaFBUMGdibUZ0WlNBcElIdGNibHgwWEhSY2RIQnliM0J6V3lCdVlXMWxJRjBnUFNCMllXeDFaVHRjYmx4MFhIUmNkR1JsYkdWMFpTQndjbTl3YzFzZ2FXNWtaWGdnWFR0Y2JseDBYSFI5WEc1Y2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2dibUZ0WlNCZE8xeHVYSFJjZEdsbUlDZ2dhRzl2YTNNZ0ppWWdYQ0psZUhCaGJtUmNJaUJwYmlCb2IyOXJjeUFwSUh0Y2JseDBYSFJjZEhaaGJIVmxJRDBnYUc5dmEzTXVaWGh3WVc1a0tDQjJZV3gxWlNBcE8xeHVYSFJjZEZ4MFpHVnNaWFJsSUhCeWIzQnpXeUJ1WVcxbElGMDdYRzVjYmx4MFhIUmNkQzh2SUU1dmRDQnhkV2wwWlNBa0xtVjRkR1Z1WkN3Z2RHaHBjeUIzYjI0bmRDQnZkbVZ5ZDNKcGRHVWdaWGhwYzNScGJtY2dhMlY1Y3k1Y2JseDBYSFJjZEM4dklGSmxkWE5wYm1jZ0oybHVaR1Y0SnlCaVpXTmhkWE5sSUhkbElHaGhkbVVnZEdobElHTnZjbkpsWTNRZ1hDSnVZVzFsWENKY2JseDBYSFJjZEdadmNpQW9JR2x1WkdWNElHbHVJSFpoYkhWbElDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lDRW9JR2x1WkdWNElHbHVJSEJ5YjNCeklDa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGNISnZjSE5iSUdsdVpHVjRJRjBnUFNCMllXeDFaVnNnYVc1a1pYZ2dYVHRjYmx4MFhIUmNkRngwWEhSemNHVmphV0ZzUldGemFXNW5XeUJwYm1SbGVDQmRJRDBnWldGemFXNW5PMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RITndaV05wWVd4RllYTnBibWRiSUc1aGJXVWdYU0E5SUdWaGMybHVaenRjYmx4MFhIUjlYRzVjZEgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnUVc1cGJXRjBhVzl1S0NCbGJHVnRMQ0J3Y205d1pYSjBhV1Z6TENCdmNIUnBiMjV6SUNrZ2UxeHVYSFIyWVhJZ2NtVnpkV3gwTEZ4dVhIUmNkSE4wYjNCd1pXUXNYRzVjZEZ4MGFXNWtaWGdnUFNBd0xGeHVYSFJjZEd4bGJtZDBhQ0E5SUdGdWFXMWhkR2x2YmxCeVpXWnBiSFJsY25NdWJHVnVaM1JvTEZ4dVhIUmNkR1JsWm1WeWNtVmtJRDBnYWxGMVpYSjVMa1JsWm1WeWNtVmtLQ2t1WVd4M1lYbHpLQ0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEM4dklFUn
14938ZiaWQwSUcxaGRHTm9JR1ZzWlcwZ2FXNGdkR2hsSURwaGJtbHRZWFJsWkNCelpXeGxZM1J2Y2x4dVhIUmNkRngwWkdWc1pYUmxJSFJwWTJzdVpXeGxiVHRjYmx4MFhIUjlLU3hjYmx4MFhIUjBhV05ySUQwZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUhOMGIzQndaV1FnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUmNkSDFjYmx4MFhIUmNkSFpoY2lCamRYSnlaVzUwVkdsdFpTQTlJR1o0VG05M0lIeDhJR055WldGMFpVWjRUbTkzS0Nrc1hHNWNkRngwWEhSY2RISmxiV0ZwYm1sdVp5QTlJRTFoZEdndWJXRjRLQ0F3TENCaGJtbHRZWFJwYjI0dWMzUmhjblJVYVcxbElDc2dZVzVwYldGMGFXOXVMbVIxY21GMGFXOXVJQzBnWTNWeWNtVnVkRlJwYldVZ0tTeGNibHgwWEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nUVc1a2NtOXBaQ0F5TGpOY2JseDBYSFJjZEZ4MEx5OGdRWEpqYUdGcFl5QmpjbUZ6YUNCaWRXY2dkMjl1SjNRZ1lXeHNiM2NnZFhNZ2RHOGdkWE5sSUdBeElDMGdLQ0F3TGpVZ2ZId2dNQ0FwWUNBb0l6RXlORGszS1Z4dVhIUmNkRngwWEhSMFpXMXdJRDBnY21WdFlXbHVhVzVuSUM4Z1lXNXBiV0YwYVc5dUxtUjFjbUYwYVc5dUlIeDhJREFzWEc1Y2RGeDBYSFJjZEhCbGNtTmxiblFnUFNBeElDMGdkR1Z0Y0N4Y2JseDBYSFJjZEZ4MGFXNWtaWGdnUFNBd0xGeHVYSFJjZEZ4MFhIUnNaVzVuZEdnZ1BTQmhibWx0WVhScGIyNHVkSGRsWlc1ekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFptOXlJQ2dnT3lCcGJtUmxlQ0E4SUd4bGJtZDBhQ0E3SUdsdVpHVjRLeXNnS1NCN1hHNWNkRngwWEhSY2RHRnVhVzFoZEdsdmJpNTBkMlZsYm5OYklHbHVaR1Y0SUYwdWNuVnVLQ0J3WlhKalpXNTBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEdSbFptVnljbVZrTG01dmRHbG1lVmRwZEdnb0lHVnNaVzBzSUZzZ1lXNXBiV0YwYVc5dUxDQndaWEpqWlc1MExDQnlaVzFoYVc1cGJtY2dYU2s3WEc1Y2JseDBYSFJjZEdsbUlDZ2djR1Z5WTJWdWRDQThJREVnSmlZZ2JHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVnRZV2x1YVc1bk8xeHVYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFpHVm1aWEp5WldRdWNtVnpiMngyWlZkcGRHZ29JR1ZzWlcwc0lGc2dZVzVwYldGMGFXOXVJRjBnS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUdaaGJITmxPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHNYRzVjZEZ4MFlXNXBiV0YwYVc5dUlEMGdaR1ZtWlhKeVpXUXVjSEp2YldselpTaDdYRzVjZEZ4MFhIUmxiR1Z0T2lCbGJHVnRMRnh1WEhSY2RGeDBjSEp2Y0hNNklHcFJkV1Z5ZVM1bGVIUmxibVFvSUh0OUxDQndjbTl3WlhKMGFXVnpJQ2tzWEc1Y2RGeDBYSFJ2Y0hSek9pQnFVWFZsY25rdVpYaDBaVzVrS0NCMGNuVmxMQ0I3SUhOd1pXTnBZV3hGWVhOcGJtYzZJSHQ5SUgwc0lHOXdkR2x2Ym5NZ0tTeGNibHgwWEhSY2RHOXlhV2RwYm1Gc1VISnZjR1Z5ZEdsbGN6b2djSEp2Y0dWeWRHbGxjeXhjYmx4MFhIUmNkRzl5YVdkcGJtRnNUM0IwYVc5dWN6b2diM0IwYVc5dWN5eGNibHgwWEhSY2RITjBZWEowVkdsdFpUb2dabmhPYjNjZ2ZId2dZM0psWVhSbFJuaE9iM2NvS1N4Y2JseDBYSFJjZEdSMWNtRjBhVzl1T2lCdmNIUnBiMjV6TG1SMWNtRjBhVzl1TEZ4dVhIUmNkRngwZEhkbFpXNXpPaUJiWFN4Y2JseDBYSFJjZEdOeVpXRjBaVlIzWldWdU9pQm1kVzVqZEdsdmJpZ2djSEp2Y0N3Z1pXNWtJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdkSGRsWlc0Z1BTQnFVWFZsY25rdVZIZGxaVzRvSUdWc1pXMHNJR0Z1YVcxaGRHbHZiaTV2Y0hSekxDQndjbTl3TENCbGJtUXNYRzVjZEZ4MFhIUmNkRngwWEhSaGJtbHRZWFJwYjI0dWIzQjBjeTV6Y0dWamFXRnNSV0Z6YVc1bld5QndjbTl3SUYwZ2ZId2dZVzVwYldGMGFXOXVMbTl3ZEhNdVpXRnphVzVuSUNrN1hHNWNkRngwWEhSY2RHRnVhVzFoZEdsdmJpNTBkMlZsYm5NdWNIVnphQ2dnZEhkbFpXNGdLVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJSFIzWldWdU8xeHVYSFJjZEZ4MGZTeGNibHgwWEhSY2RITjBiM0E2SUdaMWJtTjBhVzl1S0NCbmIzUnZSVzVrSUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYVc1a1pYZ2dQU0F3TEZ4dVhIUmNkRngwWEhSY2RDOHZJRWxtSUhkbElHRnlaU0JuYjJsdVp5QjBieUIwYUdVZ1pXNWtMQ0IzWlNCM1lXNTBJSFJ2SUhKMWJpQmhiR3dnZEdobElIUjNaV1Z1YzF4dVhIUmNkRngwWEhSY2RDOHZJRzkwYUdWeWQybHpaU0IzWlNCemEybHdJSFJvYVhNZ2NHRnlkRnh1WEhSY2RGeDBYSFJjZEd4bGJtZDBhQ0E5SUdkdmRHOUZibVFnUHlCaGJtbHRZWFJwYjI0dWRIZGxaVzV6TG14bGJtZDBhQ0E2SURBN1hHNWNkRngwWEhSY2RHbG1JQ2dnYzNSdmNIQmxaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSemRHOXdjR1ZrSUQwZ2RISjFaVHRjYmx4MFhIUmNkRngwWm05eUlDZ2dPeUJwYm1SbGVDQThJR3hsYm1kMGFDQTdJR2x1WkdWNEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFlXNXBiV0YwYVc5dUxuUjNaV1Z1YzFzZ2FXNWtaWGdnWFM1eWRXNG9JREVnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkQzh2SUZKbGMyOXNkbVVnZDJobGJpQjNaU0J3YkdGNVpXUWdkR2hsSUd4aGMzUWdabkpoYldVN0lHOTBhR1Z5ZDJselpTd2djbVZxWldOMFhHNWNkRngwWEhSY2RHbG1JQ2dnWjI5MGIwVnVaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmtaV1psY25KbFpDNXlaWE52YkhabFYybDBhQ2dnWld4bGJTd2dXeUJoYm1sdFlYUnBiMjRzSUdkdmRHOUZibVFnWFNBcE8xeHVYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkR1JsWm1WeWNtVmtMbkpsYW1WamRGZHBkR2dvSUdWc1pXMHNJRnNnWVc1cGJXRjBhVzl1TENCbmIzUnZSVzVrSUYwZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1N4Y2JseDBYSFJ3Y205d2N5QTlJR0Z1YVcxaGRHbHZiaTV3Y205d2N6dGNibHh1WEhSd2NtOXdSbWxzZEdWeUtDQndjbTl3Y3l3Z1lXNXBiV0YwYVc5dUxtOXdkSE11YzNCbFkybGhiRVZoYzJsdVp5QXBPMXh1WEc1Y2RHWnZjaUFvSURzZ2FXNWtaWGdnUENCc1pXNW5kR2dnT3lCcGJtUmxlQ3NySUNrZ2UxeHVYSFJjZEhKbGMzVnNkQ0E5SUdGdWFXMWhkR2x2YmxCeVpXWnBiSFJsY25OYklHbHVaR1Y0SUYwdVkyRnNiQ2dnWVc1cGJXRjBhVzl1TENCbGJHVnRMQ0J3Y205d2N5d2dZVzVwYldGMGFXOXVMbTl3ZEhNZ0tUdGNibHgwWEhScFppQW9JSEpsYzNWc2RDQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhRN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MGFsRjFaWEo1TG0xaGNDZ2djSEp2Y0hNc0lHTnlaV0YwWlZSM1pXVnVMQ0JoYm1sdFlYUnBiMjRnS1R0Y2JseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwWjFibU4wYVc5dUtDQmhibWx0WVhScGIyNHViM0IwY3k1emRHRnlkQ0FwSUNrZ2UxeHVYSFJjZEdGdWFXMWhkR2x2Ymk1dm
14938NIUnpMbk4wWVhKMExtTmhiR3dvSUdWc1pXMHNJR0Z1YVcxaGRHbHZiaUFwTzF4dVhIUjlYRzVjYmx4MGFsRjFaWEo1TG1aNExuUnBiV1Z5S0Z4dVhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUnBZMnNzSUh0Y2JseDBYSFJjZEdWc1pXMDZJR1ZzWlcwc1hHNWNkRngwWEhSaGJtbHRPaUJoYm1sdFlYUnBiMjRzWEc1Y2RGeDBYSFJ4ZFdWMVpUb2dZVzVwYldGMGFXOXVMbTl3ZEhNdWNYVmxkV1ZjYmx4MFhIUjlLVnh1WEhRcE8xeHVYRzVjZEM4dklHRjBkR0ZqYUNCallXeHNZbUZqYTNNZ1puSnZiU0J2Y0hScGIyNXpYRzVjZEhKbGRIVnliaUJoYm1sdFlYUnBiMjR1Y0hKdlozSmxjM01vSUdGdWFXMWhkR2x2Ymk1dmNIUnpMbkJ5YjJkeVpYTnpJQ2xjYmx4MFhIUXVaRzl1WlNnZ1lXNXBiV0YwYVc5dUxtOXdkSE11Wkc5dVpTd2dZVzVwYldGMGFXOXVMbTl3ZEhNdVkyOXRjR3hsZEdVZ0tWeHVYSFJjZEM1bVlXbHNLQ0JoYm1sdFlYUnBiMjR1YjNCMGN5NW1ZV2xzSUNsY2JseDBYSFF1WVd4M1lYbHpLQ0JoYm1sdFlYUnBiMjR1YjNCMGN5NWhiSGRoZVhNZ0tUdGNibjFjYmx4dWFsRjFaWEo1TGtGdWFXMWhkR2x2YmlBOUlHcFJkV1Z5ZVM1bGVIUmxibVFvSUVGdWFXMWhkR2x2Yml3Z2UxeHVYRzVjZEhSM1pXVnVaWEk2SUdaMWJtTjBhVzl1S0NCd2NtOXdjeXdnWTJGc2JHSmhZMnNnS1NCN1hHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2djSEp2Y0hNZ0tTQXBJSHRjYmx4MFhIUmNkR05oYkd4aVlXTnJJRDBnY0hKdmNITTdYRzVjZEZ4MFhIUndjbTl3Y3lBOUlGc2dYQ0lxWENJZ1hUdGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwY0hKdmNITWdQU0J3Y205d2N5NXpjR3hwZENoY0lpQmNJaWs3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBkbUZ5SUhCeWIzQXNYRzVjZEZ4MFhIUnBibVJsZUNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQndjbTl3Y3k1c1pXNW5kR2c3WEc1Y2JseDBYSFJtYjNJZ0tDQTdJR2x1WkdWNElEd2diR1Z1WjNSb0lEc2dhVzVrWlhnckt5QXBJSHRjYmx4MFhIUmNkSEJ5YjNBZ1BTQndjbTl3YzFzZ2FXNWtaWGdnWFR0Y2JseDBYSFJjZEhSM1pXVnVaWEp6V3lCd2NtOXdJRjBnUFNCMGQyVmxibVZ5YzFzZ2NISnZjQ0JkSUh4OElGdGRPMXh1WEhSY2RGeDBkSGRsWlc1bGNuTmJJSEJ5YjNBZ1hTNTFibk5vYVdaMEtDQmpZV3hzWW1GamF5QXBPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFJ3Y21WbWFXeDBaWEk2SUdaMWJtTjBhVzl1S0NCallXeHNZbUZqYXl3Z2NISmxjR1Z1WkNBcElIdGNibHgwWEhScFppQW9JSEJ5WlhCbGJtUWdLU0I3WEc1Y2RGeDBYSFJoYm1sdFlYUnBiMjVRY21WbWFXeDBaWEp6TG5WdWMyaHBablFvSUdOaGJHeGlZV05ySUNrN1hHNWNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkR0Z1YVcxaGRHbHZibEJ5WldacGJIUmxjbk11Y0hWemFDZ2dZMkZzYkdKaFkyc2dLVHRjYmx4MFhIUjlYRzVjZEgxY2JuMHBPMXh1WEc1cVVYVmxjbmt1YzNCbFpXUWdQU0JtZFc1amRHbHZiaWdnYzNCbFpXUXNJR1ZoYzJsdVp5d2dabTRnS1NCN1hHNWNkSFpoY2lCdmNIUWdQU0J6Y0dWbFpDQW1KaUIwZVhCbGIyWWdjM0JsWldRZ1BUMDlJRndpYjJKcVpXTjBYQ0lnUHlCcVVYVmxjbmt1WlhoMFpXNWtLQ0I3ZlN3Z2MzQmxaV1FnS1NBNklIdGNibHgwWEhSamIyMXdiR1YwWlRvZ1ptNGdmSHdnSVdadUlDWW1JR1ZoYzJsdVp5QjhmRnh1WEhSY2RGeDBhbEYxWlhKNUxtbHpSblZ1WTNScGIyNG9JSE53WldWa0lDa2dKaVlnYzNCbFpXUXNYRzVjZEZ4MFpIVnlZWFJwYjI0NklITndaV1ZrTEZ4dVhIUmNkR1ZoYzJsdVp6b2dabTRnSmlZZ1pXRnphVzVuSUh4OElHVmhjMmx1WnlBbUppQWhhbEYxWlhKNUxtbHpSblZ1WTNScGIyNG9JR1ZoYzJsdVp5QXBJQ1ltSUdWaGMybHVaMXh1WEhSOU8xeHVYRzVjZEc5d2RDNWtkWEpoZEdsdmJpQTlJR3BSZFdWeWVTNW1lQzV2Wm1ZZ1B5QXdJRG9nZEhsd1pXOW1JRzl3ZEM1a2RYSmhkR2x2YmlBOVBUMGdYQ0p1ZFcxaVpYSmNJaUEvSUc5d2RDNWtkWEpoZEdsdmJpQTZYRzVjZEZ4MGIzQjBMbVIxY21GMGFXOXVJR2x1SUdwUmRXVnllUzVtZUM1emNHVmxaSE1nUHlCcVVYVmxjbmt1Wm5ndWMzQmxaV1J6V3lCdmNIUXVaSFZ5WVhScGIyNGdYU0E2SUdwUmRXVnllUzVtZUM1emNHVmxaSE11WDJSbFptRjFiSFE3WEc1Y2JseDBMeThnVG05eWJXRnNhWHBsSUc5d2RDNXhkV1YxWlNBdElIUnlkV1V2ZFc1a1pXWnBibVZrTDI1MWJHd2dMVDRnWENKbWVGd2lYRzVjZEdsbUlDZ2diM0IwTG5GMVpYVmxJRDA5SUc1MWJHd2dmSHdnYjNCMExuRjFaWFZsSUQwOVBTQjBjblZsSUNrZ2UxeHVYSFJjZEc5d2RDNXhkV1YxWlNBOUlGd2labmhjSWp0Y2JseDBmVnh1WEc1Y2RDOHZJRkYxWlhWbGFXNW5YRzVjZEc5d2RDNXZiR1FnUFNCdmNIUXVZMjl0Y0d4bGRHVTdYRzVjYmx4MGIzQjBMbU52YlhCc1pYUmxJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2diM0IwTG05c1pDQXBJQ2tnZTF4dVhIUmNkRngwYjNCMExtOXNaQzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnZjSFF1Y1hWbGRXVWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaR1Z4ZFdWMVpTZ2dkR2hwY3l3Z2IzQjBMbkYxWlhWbElDazdYRzVjZEZ4MGZWeHVYSFI5TzF4dVhHNWNkSEpsZEhWeWJpQnZjSFE3WEc1OU8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFptRmtaVlJ2T2lCbWRXNWpkR2x2YmlnZ2MzQmxaV1FzSUhSdkxDQmxZWE5wYm1jc0lHTmhiR3hpWVdOcklDa2dlMXh1WEc1Y2RGeDBMeThnVTJodmR5QmhibmtnYUdsa1pHVnVJR1ZzWlcxbGJuUnpJR0ZtZEdWeUlITmxkSFJwYm1jZ2IzQmhZMmwwZVNCMGJ5QXdYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTXVabWxzZEdWeUtDQnBjMGhwWkdSbGJpQXBMbU56Y3lnZ1hDSnZjR0ZqYVhSNVhDSXNJREFnS1M1emFHOTNLQ2xjYmx4dVhIUmNkRngwTHk4Z1FXNXBiV0YwWlNCMGJ5QjBhR1VnZG1Gc2RXVWdjM0JsWTJsbWFXVmtYRzVjZEZ4MFhIUXVaVzVrS0NrdVlXNXBiV0YwWlNoN0lHOXdZV05wZEhrNklIUnZJSDBzSUhOd1pXVmtMQ0JsWVhOcGJtY3NJR05oYkd4aVlXTnJJQ2s3WEc1Y2RIMHNYRzVjZEdGdWFXMWhkR1U2SUdaMWJtTjBhVzl1S0NCd2NtOXdMQ0J6Y0dWbFpDd2daV0Z6YVc1bkxDQmpZV3hzWW1GamF5QXBJSHRjYmx4MFhIUjJZWElnWlcxd2RIa2dQU0JxVVhWbGNua3VhWE5GYlhCMGVVOWlhbVZqZENnZ2NISnZjQ0FwTEZ4dVhIUmNkRngwYjNCMFlXeHNJRDBnYWxGMVpYSjVMbk53WldWa0tDQnpjR1ZsWkN3Z1pXRnphVzVuTENCallXeHNZbUZqYXlBcExGeHVYSFJjZEZ4MFpHOUJibWx0WVhScGIyNGdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MEx5OGdUM0JsY21GMFpTQnZiaUJoSUdOdmNIa2diMllnY0hKdmNDQnpieUJ3WlhJdGNISnZjR1Z5ZEhrZ1pXRnphVzVuSUhkdmJpZDBJR0psSUd4dmMzUmNibHgwWEhSY2RGeDBkbUZ5SUdGdWFXMGdQU0JCYm1sdFlYUnBiMjRvSUhSb2FYTXNJR3BSZFdWeWVTNWxlSFJsYm1Rb0lIdDlMQ0J3Y205d0lDa3NJRzl3ZEdGc2JDQXBPMXh1WEc1Y2RGeDBYSFJjZEM4dklFVnRjSFI1SUdGdWFXMWhkR2x2Ym5Nc0lHOXlJR1pwYm1semFHbHVaeUJ5WlhOdmJIWmxjeUJwYlcxbFpHbGhkR1ZzZVZ4dVhIUmNkRngwWEhScFppQW9JR1Z0Y0hSNUlIeDhJR1JoZEdGZmNISnBkaTVuWlhRb0lIUm9hWE1zSUZ3aVptbHVhWE5vWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSaGJtbHRMbk4wYjNBb
149380lIUnlkV1VnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHgwWEhSY2RHUnZRVzVwYldGMGFXOXVMbVpwYm1semFDQTlJR1J2UVc1cGJXRjBhVzl1TzF4dVhHNWNkRngwY21WMGRYSnVJR1Z0Y0hSNUlIeDhJRzl3ZEdGc2JDNXhkV1YxWlNBOVBUMGdabUZzYzJVZ1AxeHVYSFJjZEZ4MGRHaHBjeTVsWVdOb0tDQmtiMEZ1YVcxaGRHbHZiaUFwSURwY2JseDBYSFJjZEhSb2FYTXVjWFZsZFdVb0lHOXdkR0ZzYkM1eGRXVjFaU3dnWkc5QmJtbHRZWFJwYjI0Z0tUdGNibHgwZlN4Y2JseDBjM1J2Y0RvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUdOc1pXRnlVWFZsZFdVc0lHZHZkRzlGYm1RZ0tTQjdYRzVjZEZ4MGRtRnlJSE4wYjNCUmRXVjFaU0E5SUdaMWJtTjBhVzl1S0NCb2IyOXJjeUFwSUh0Y2JseDBYSFJjZEhaaGNpQnpkRzl3SUQwZ2FHOXZhM011YzNSdmNEdGNibHgwWEhSY2RHUmxiR1YwWlNCb2IyOXJjeTV6ZEc5d08xeHVYSFJjZEZ4MGMzUnZjQ2dnWjI5MGIwVnVaQ0FwTzF4dVhIUmNkSDA3WEc1Y2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCMGVYQmxJQ0U5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBaMjkwYjBWdVpDQTlJR05zWldGeVVYVmxkV1U3WEc1Y2RGeDBYSFJqYkdWaGNsRjFaWFZsSUQwZ2RIbHdaVHRjYmx4MFhIUmNkSFI1Y0dVZ1BTQjFibVJsWm1sdVpXUTdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDZ2dZMnhsWVhKUmRXVjFaU0FtSmlCMGVYQmxJQ0U5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEhSb2FYTXVjWFZsZFdVb0lIUjVjR1VnZkh3Z1hDSm1lRndpTENCYlhTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUjJZWElnWkdWeGRXVjFaU0E5SUhSeWRXVXNYRzVjZEZ4MFhIUmNkR2x1WkdWNElEMGdkSGx3WlNBaFBTQnVkV3hzSUNZbUlIUjVjR1VnS3lCY0luRjFaWFZsU0c5dmEzTmNJaXhjYmx4MFhIUmNkRngwZEdsdFpYSnpJRDBnYWxGMVpYSjVMblJwYldWeWN5eGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0ZmY0hKcGRpNW5aWFFvSUhSb2FYTWdLVHRjYmx4dVhIUmNkRngwYVdZZ0tDQnBibVJsZUNBcElIdGNibHgwWEhSY2RGeDBhV1lnS0NCa1lYUmhXeUJwYm1SbGVDQmRJQ1ltSUdSaGRHRmJJR2x1WkdWNElGMHVjM1J2Y0NBcElIdGNibHgwWEhSY2RGeDBYSFJ6ZEc5d1VYVmxkV1VvSUdSaGRHRmJJR2x1WkdWNElGMGdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWm05eUlDZ2dhVzVrWlhnZ2FXNGdaR0YwWVNBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHUmhkR0ZiSUdsdVpHVjRJRjBnSmlZZ1pHRjBZVnNnYVc1a1pYZ2dYUzV6ZEc5d0lDWW1JSEp5ZFc0dWRHVnpkQ2dnYVc1a1pYZ2dLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSE4wYjNCUmRXVjFaU2dnWkdGMFlWc2dhVzVrWlhnZ1hTQXBPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUm1iM0lnS0NCcGJtUmxlQ0E5SUhScGJXVnljeTVzWlc1bmRHZzdJR2x1WkdWNExTMDdJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JSFJwYldWeWMxc2dhVzVrWlhnZ1hTNWxiR1Z0SUQwOVBTQjBhR2x6SUNZbUlDaDBlWEJsSUQwOUlHNTFiR3dnZkh3Z2RHbHRaWEp6V3lCcGJtUmxlQ0JkTG5GMVpYVmxJRDA5UFNCMGVYQmxLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUjBhVzFsY25OYklHbHVaR1Y0SUYwdVlXNXBiUzV6ZEc5d0tDQm5iM1J2Ulc1a0lDazdYRzVjZEZ4MFhIUmNkRngwWkdWeGRXVjFaU0E5SUdaaGJITmxPMXh1WEhSY2RGeDBYSFJjZEhScGJXVnljeTV6Y0d4cFkyVW9JR2x1WkdWNExDQXhJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVM1JoY25RZ2RHaGxJRzVsZUhRZ2FXNGdkR2hsSUhGMVpYVmxJR2xtSUhSb1pTQnNZWE4wSUhOMFpYQWdkMkZ6YmlkMElHWnZjbU5sWkM1Y2JseDBYSFJjZEM4dklGUnBiV1Z5Y3lCamRYSnlaVzUwYkhrZ2QybHNiQ0JqWVd4c0lIUm9aV2x5SUdOdmJYQnNaWFJsSUdOaGJHeGlZV05yY3l3Z2QyaHBZMmhjYmx4MFhIUmNkQzh2SUhkcGJHd2daR1Z4ZFdWMVpTQmlkWFFnYjI1c2VTQnBaaUIwYUdWNUlIZGxjbVVnWjI5MGIwVnVaQzVjYmx4MFhIUmNkR2xtSUNnZ1pHVnhkV1YxWlNCOGZDQWhaMjkwYjBWdVpDQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbVJsY1hWbGRXVW9JSFJvYVhNc0lIUjVjR1VnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4MFptbHVhWE5vT2lCbWRXNWpkR2x2YmlnZ2RIbHdaU0FwSUh0Y2JseDBYSFJwWmlBb0lIUjVjR1VnSVQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGRtRnlJR2x1WkdWNExGeHVYSFJjZEZ4MFhIUmtZWFJoSUQwZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnZEdocGN5QXBMRnh1WEhSY2RGeDBYSFJ4ZFdWMVpTQTlJR1JoZEdGYklIUjVjR1VnS3lCY0luRjFaWFZsWENJZ1hTeGNibHgwWEhSY2RGeDBhRzl2YTNNZ1BTQmtZWFJoV3lCMGVYQmxJQ3NnWENKeGRXVjFaVWh2YjJ0elhDSWdYU3hjYmx4MFhIUmNkRngwZEdsdFpYSnpJRDBnYWxGMVpYSjVMblJwYldWeWN5eGNibHgwWEhSY2RGeDBiR1Z1WjNSb0lEMGdjWFZsZFdVZ1B5QnhkV1YxWlM1c1pXNW5kR2dnT2lBd08xeHVYRzVjZEZ4MFhIUXZMeUJGYm1GaWJHVWdabWx1YVhOb2FXNW5JR1pzWVdjZ2IyNGdjSEpwZG1GMFpTQmtZWFJoWEc1Y2RGeDBYSFJrWVhSaExtWnBibWx6YUNBOUlIUnlkV1U3WEc1Y2JseDBYSFJjZEM4dklFVnRjSFI1SUhSb1pTQnhkV1YxWlNCbWFYSnpkRnh1WEhSY2RGeDBhbEYxWlhKNUxuRjFaWFZsS0NCMGFHbHpMQ0IwZVhCbExDQmJYU0FwTzF4dVhHNWNkRngwWEhScFppQW9JR2h2YjJ0eklDWW1JR2h2YjJ0ekxuTjBiM0FnS1NCN1hHNWNkRngwWEhSY2RHaHZiMnR6TG5OMGIzQXVZMkZzYkNnZ2RHaHBjeXdnZEhKMVpTQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCTWIyOXJJR1p2Y2lCaGJua2dZV04wYVhabElHRnVhVzFoZEdsdmJuTXNJR0Z1WkNCbWFXNXBjMmdnZEdobGJWeHVYSFJjZEZ4MFptOXlJQ2dnYVc1a1pYZ2dQU0IwYVcxbGNuTXViR1Z1WjNSb095QnBibVJsZUMwdE95QXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQjBhVzFsY25OYklHbHVaR1Y0SUYwdVpXeGxiU0E5UFQwZ2RHaHBjeUFtSmlCMGFXMWxjbk5iSUdsdVpHVjRJRjB1Y1hWbGRXVWdQVDA5SUhSNWNHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRHbHRaWEp6V3lCcGJtUmxlQ0JkTG1GdWFXMHVjM1J2Y0NnZ2RISjFaU0FwTzF4dVhIUmNkRngwWEhSY2RIUnBiV1Z5Y3k1emNHeHBZMlVvSUdsdVpHVjRMQ0F4SUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVEc
149385dmF5Qm1iM0lnWVc1NUlHRnVhVzFoZEdsdmJuTWdhVzRnZEdobElHOXNaQ0J4ZFdWMVpTQmhibVFnWm1sdWFYTm9JSFJvWlcxY2JseDBYSFJjZEdadmNpQW9JR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djWFZsZFdWYklHbHVaR1Y0SUYwZ0ppWWdjWFZsZFdWYklHbHVaR1Y0SUYwdVptbHVhWE5vSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEYxWlhWbFd5QnBibVJsZUNCZExtWnBibWx6YUM1allXeHNLQ0IwYUdseklDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1ZIVnliaUJ2Wm1ZZ1ptbHVhWE5vYVc1bklHWnNZV2RjYmx4MFhIUmNkR1JsYkdWMFpTQmtZWFJoTG1acGJtbHphRHRjYmx4MFhIUjlLVHRjYmx4MGZWeHVmU2s3WEc1Y2JtcFJkV1Z5ZVM1bFlXTm9LRnNnWENKMGIyZG5iR1ZjSWl3Z1hDSnphRzkzWENJc0lGd2lhR2xrWlZ3aUlGMHNJR1oxYm1OMGFXOXVLQ0JwTENCdVlXMWxJQ2tnZTF4dVhIUjJZWElnWTNOelJtNGdQU0JxVVhWbGNua3VabTViSUc1aGJXVWdYVHRjYmx4MGFsRjFaWEo1TG1adVd5QnVZVzFsSUYwZ1BTQm1kVzVqZEdsdmJpZ2djM0JsWldRc0lHVmhjMmx1Wnl3Z1kyRnNiR0poWTJzZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUhOd1pXVmtJRDA5SUc1MWJHd2dmSHdnZEhsd1pXOW1JSE53WldWa0lEMDlQU0JjSW1KdmIyeGxZVzVjSWlBL1hHNWNkRngwWEhSamMzTkdiaTVoY0hCc2VTZ2dkR2hwY3l3Z1lYSm5kVzFsYm5SeklDa2dPbHh1WEhSY2RGeDBkR2hwY3k1aGJtbHRZWFJsS0NCblpXNUdlQ2dnYm1GdFpTd2dkSEoxWlNBcExDQnpjR1ZsWkN3Z1pXRnphVzVuTENCallXeHNZbUZqYXlBcE8xeHVYSFI5TzF4dWZTazdYRzVjYmk4dklFZGxibVZ5WVhSbElITm9iM0owWTNWMGN5Qm1iM0lnWTNWemRHOXRJR0Z1YVcxaGRHbHZibk5jYm1wUmRXVnllUzVsWVdOb0tIdGNibHgwYzJ4cFpHVkViM2R1T2lCblpXNUdlQ2hjSW5Ob2IzZGNJaWtzWEc1Y2RITnNhV1JsVlhBNklHZGxia1o0S0Z3aWFHbGtaVndpS1N4Y2JseDBjMnhwWkdWVWIyZG5iR1U2SUdkbGJrWjRLRndpZEc5bloyeGxYQ0lwTEZ4dVhIUm1ZV1JsU1c0NklIc2diM0JoWTJsMGVUb2dYQ0p6YUc5M1hDSWdmU3hjYmx4MFptRmtaVTkxZERvZ2V5QnZjR0ZqYVhSNU9pQmNJbWhwWkdWY0lpQjlMRnh1WEhSbVlXUmxWRzluWjJ4bE9pQjdJRzl3WVdOcGRIazZJRndpZEc5bloyeGxYQ0lnZlZ4dWZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lIQnliM0J6SUNrZ2UxeHVYSFJxVVhWbGNua3VabTViSUc1aGJXVWdYU0E5SUdaMWJtTjBhVzl1S0NCemNHVmxaQ3dnWldGemFXNW5MQ0JqWVd4c1ltRmpheUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1aGJtbHRZWFJsS0NCd2NtOXdjeXdnYzNCbFpXUXNJR1ZoYzJsdVp5d2dZMkZzYkdKaFkyc2dLVHRjYmx4MGZUdGNibjBwTzF4dVhHNXFVWFZsY25rdWRHbHRaWEp6SUQwZ1cxMDdYRzVxVVhWbGNua3Vabmd1ZEdsamF5QTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUjJZWElnZEdsdFpYSXNYRzVjZEZ4MGFTQTlJREFzWEc1Y2RGeDBkR2x0WlhKeklEMGdhbEYxWlhKNUxuUnBiV1Z5Y3p0Y2JseHVYSFJtZUU1dmR5QTlJR3BSZFdWeWVTNXViM2NvS1R0Y2JseHVYSFJtYjNJZ0tDQTdJR2tnUENCMGFXMWxjbk11YkdWdVozUm9PeUJwS3lzZ0tTQjdYRzVjZEZ4MGRHbHRaWElnUFNCMGFXMWxjbk5iSUdrZ1hUdGNibHgwWEhRdkx5QkRhR1ZqYTNNZ2RHaGxJSFJwYldWeUlHaGhjeUJ1YjNRZ1lXeHlaV0ZrZVNCaVpXVnVJSEpsYlc5MlpXUmNibHgwWEhScFppQW9JQ0YwYVcxbGNpZ3BJQ1ltSUhScGJXVnljMXNnYVNCZElEMDlQU0IwYVcxbGNpQXBJSHRjYmx4MFhIUmNkSFJwYldWeWN5NXpjR3hwWTJVb0lHa3RMU3dnTVNBcE8xeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RHbG1JQ2dnSVhScGJXVnljeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBhbEYxWlhKNUxtWjRMbk4wYjNBb0tUdGNibHgwZlZ4dVhIUm1lRTV2ZHlBOUlIVnVaR1ZtYVc1bFpEdGNibjA3WEc1Y2JtcFJkV1Z5ZVM1bWVDNTBhVzFsY2lBOUlHWjFibU4wYVc5dUtDQjBhVzFsY2lBcElIdGNibHgwYWxGMVpYSjVMblJwYldWeWN5NXdkWE5vS0NCMGFXMWxjaUFwTzF4dVhIUnBaaUFvSUhScGJXVnlLQ2tnS1NCN1hHNWNkRngwYWxGMVpYSjVMbVo0TG5OMFlYSjBLQ2s3WEc1Y2RIMGdaV3h6WlNCN1hHNWNkRngwYWxGMVpYSjVMblJwYldWeWN5NXdiM0FvS1R0Y2JseDBmVnh1ZlR0Y2JseHVhbEYxWlhKNUxtWjRMbWx1ZEdWeWRtRnNJRDBnTVRNN1hHNWNibXBSZFdWeWVTNW1lQzV6ZEdGeWRDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUnBaaUFvSUNGMGFXMWxja2xrSUNrZ2UxeHVYSFJjZEhScGJXVnlTV1FnUFNCelpYUkpiblJsY25aaGJDZ2dhbEYxWlhKNUxtWjRMblJwWTJzc0lHcFJkV1Z5ZVM1bWVDNXBiblJsY25aaGJDQXBPMXh1WEhSOVhHNTlPMXh1WEc1cVVYVmxjbmt1Wm5ndWMzUnZjQ0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJqYkdWaGNrbHVkR1Z5ZG1Gc0tDQjBhVzFsY2tsa0lDazdYRzVjZEhScGJXVnlTV1FnUFNCdWRXeHNPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtWjRMbk53WldWa2N5QTlJSHRjYmx4MGMyeHZkem9nTmpBd0xGeHVYSFJtWVhOME9pQXlNREFzWEc1Y2RDOHZJRVJsWm1GMWJIUWdjM0JsWldSY2JseDBYMlJsWm1GMWJIUTZJRFF3TUZ4dWZUdGNibHh1WEc0dkx5QkNZWE5sWkNCdlptWWdiMllnZEdobElIQnNkV2RwYmlCaWVTQkRiR2x1ZENCSVpXeG1aWEp6TENCM2FYUm9JSEJsY20xcGMzTnBiMjR1WEc0dkx5Qm9kSFJ3T2k4dllteHBibVJ6YVdkdVlXeHpMbU52YlM5cGJtUmxlQzV3YUhBdk1qQXdPUzh3Tnk5cWNYVmxjbmt0WkdWc1lYa3ZYRzVxVVhWbGNua3VabTR1WkdWc1lYa2dQU0JtZFc1amRHbHZiaWdnZEdsdFpTd2dkSGx3WlNBcElIdGNibHgwZEdsdFpTQTlJR3BSZFdWeWVTNW1lQ0EvSUdwUmRXVnllUzVtZUM1emNHVmxaSE5iSUhScGJXVWdYU0I4ZkNCMGFXMWxJRG9nZEdsdFpUdGNibHgwZEhsd1pTQTlJSFI1Y0dVZ2ZId2dYQ0ptZUZ3aU8xeHVYRzVjZEhKbGRIVnliaUIwYUdsekxuRjFaWFZsS0NCMGVYQmxMQ0JtZFc1amRHbHZiaWdnYm1WNGRDd2dhRzl2YTNNZ0tTQjdYRzVjZEZ4MGRtRnlJSFJwYldWdmRYUWdQU0J6WlhSVWFXMWxiM1YwS0NCdVpYaDBMQ0IwYVcxbElDazdYRzVjZEZ4MGFHOXZhM011YzNSdmNDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWTJ4bFlYSlVhVzFsYjNWMEtDQjBhVzFsYjNWMElDazdYRzVjZEZ4MGZUdGNibHgwZlNrN1hHNTlPMXh1WEc1Y2JpaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MGRtRnlJR2x1Y0hWMElEMGdaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnZ1hDSnBibkIxZEZ3aUlDa3NYRzVjZEZ4MGMyVnNaV04wSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2dnWENKelpXeGxZM1JjSWlBcExGeHVYSFJjZEc5d2RDQTlJSE5sYkdWamRDNWhjSEJsYm1SRGFHbHNaQ2dnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ2dYQ0p2Y0hScGIyNWNJaUFwSUNrN1hHNWNibHgwYVc1d2RYUXVkSGx3WlNBOUlGd2lZMmhsWTJ0aWIzaGNJanRjYmx4dVhIUXZMeUJUZFhCd2IzSjBPaUJwVDFNOFBUVXVNU3dnUVc1a2NtOXBaRHc5TkM0eUsxeHVYSFF2THlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lCaElHTm9aV05yWW05NElITm9iM1ZzWkNCaVpTQmNJbTl1WENKY2JseDBjM1Z3Y0c5eWRDNWphR1ZqYTA5dUlEMGdhVzV3ZFhRdWRtRnNkV1VnSVQwOUlGd2lYQ0k3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLMXh1WEhRdkx5Qk5kWE4wSUdGalkyVnpjeUJ6Wld4bFkzUmxaRWx1WkdWNElIUnZJRzFoYTJVZ1pHVm1ZWFZzZENCdmNIUnBiMjV6SUhObGJHVmpkRnh1WEhSemRYQndiM0owTG05d2RGTmxiR1ZqZEdWa0lEMGdiM0IwTG5ObGJHVmpkR1ZrTzF4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1E4UFRJdU0xeHVY
14938SFF2THlCUGNIUnBiMjV6SUdsdWMybGtaU0JrYVhOaFlteGxaQ0J6Wld4bFkzUnpJR0Z5WlNCcGJtTnZjbkpsWTNSc2VTQnRZWEpyWldRZ1lYTWdaR2x6WVdKc1pXUmNibHgwYzJWc1pXTjBMbVJwYzJGaWJHVmtJRDBnZEhKMVpUdGNibHgwYzNWd2NHOXlkQzV2Y0hSRWFYTmhZbXhsWkNBOUlDRnZjSFF1WkdsellXSnNaV1E3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLMXh1WEhRdkx5QkJiaUJwYm5CMWRDQnNiM05sY3lCcGRITWdkbUZzZFdVZ1lXWjBaWElnWW1WamIyMXBibWNnWVNCeVlXUnBiMXh1WEhScGJuQjFkQ0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9JRndpYVc1d2RYUmNJaUFwTzF4dVhIUnBibkIxZEM1MllXeDFaU0E5SUZ3aWRGd2lPMXh1WEhScGJuQjFkQzUwZVhCbElEMGdYQ0p5WVdScGIxd2lPMXh1WEhSemRYQndiM0owTG5KaFpHbHZWbUZzZFdVZ1BTQnBibkIxZEM1MllXeDFaU0E5UFQwZ1hDSjBYQ0k3WEc1OUtTZ3BPMXh1WEc1Y2JuWmhjaUJ1YjJSbFNHOXZheXdnWW05dmJFaHZiMnNzWEc1Y2RHRjBkSEpJWVc1a2JHVWdQU0JxVVhWbGNua3VaWGh3Y2k1aGRIUnlTR0Z1Wkd4bE8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFlYUjBjam9nWm5WdVkzUnBiMjRvSUc1aGJXVXNJSFpoYkhWbElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCaFkyTmxjM01vSUhSb2FYTXNJR3BSZFdWeWVTNWhkSFJ5TENCdVlXMWxMQ0IyWVd4MVpTd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVnS1R0Y2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WQmRIUnlPaUJtZFc1amRHbHZiaWdnYm1GdFpTQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTVsWVdOb0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBhbEYxWlhKNUxuSmxiVzkyWlVGMGRISW9JSFJvYVhNc0lHNWhiV1VnS1R0Y2JseDBYSFI5S1R0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxlSFJsYm1Rb2UxeHVYSFJoZEhSeU9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2JtRnRaU3dnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBkbUZ5SUdodmIydHpMQ0J5WlhRc1hHNWNkRngwWEhSdVZIbHdaU0E5SUdWc1pXMHVibTlrWlZSNWNHVTdYRzVjYmx4MFhIUXZMeUJrYjI0bmRDQm5aWFF2YzJWMElHRjBkSEpwWW5WMFpYTWdiMjRnZEdWNGRDd2dZMjl0YldWdWRDQmhibVFnWVhSMGNtbGlkWFJsSUc1dlpHVnpYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTQjhmQ0J1Vkhsd1pTQTlQVDBnTXlCOGZDQnVWSGx3WlNBOVBUMGdPQ0I4ZkNCdVZIbHdaU0E5UFQwZ01pQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkdZV3hzWW1GamF5QjBieUJ3Y205d0lIZG9aVzRnWVhSMGNtbGlkWFJsY3lCaGNtVWdibTkwSUhOMWNIQnZjblJsWkZ4dVhIUmNkR2xtSUNnZ2RIbHdaVzltSUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsSUQwOVBTQnpkSEoxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbkJ5YjNBb0lHVnNaVzBzSUc1aGJXVXNJSFpoYkhWbElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRV3hzSUdGMGRISnBZblYwWlhNZ1lYSmxJR3h2ZDJWeVkyRnpaVnh1WEhSY2RDOHZJRWR5WVdJZ2JtVmpaWE56WVhKNUlHaHZiMnNnYVdZZ2IyNWxJR2x6SUdSbFptbHVaV1JjYmx4MFhIUnBaaUFvSUc1VWVYQmxJQ0U5UFNBeElIeDhJQ0ZxVVhWbGNua3VhWE5ZVFV4RWIyTW9JR1ZzWlcwZ0tTQXBJSHRjYmx4MFhIUmNkRzVoYldVZ1BTQnVZVzFsTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjZEZ4MFhIUm9iMjlyY3lBOUlHcFJkV1Z5ZVM1aGRIUnlTRzl2YTNOYklHNWhiV1VnWFNCOGZGeHVYSFJjZEZ4MFhIUW9JR3BSZFdWeWVTNWxlSEJ5TG0xaGRHTm9MbUp2YjJ3dWRHVnpkQ2dnYm1GdFpTQXBJRDhnWW05dmJFaHZiMnNnT2lCdWIyUmxTRzl2YXlBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dkbUZzZFdVZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseHVYSFJjZEZ4MGFXWWdLQ0IyWVd4MVpTQTlQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbkpsYlc5MlpVRjBkSElvSUdWc1pXMHNJRzVoYldVZ0tUdGNibHh1WEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYUc5dmEzTWdKaVlnWENKelpYUmNJaUJwYmlCb2IyOXJjeUFtSmlBb2NtVjBJRDBnYUc5dmEzTXVjMlYwS0NCbGJHVnRMQ0IyWVd4MVpTd2dibUZ0WlNBcEtTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJsYkdWdExuTmxkRUYwZEhKcFluVjBaU2dnYm1GdFpTd2dkbUZzZFdVZ0t5QmNJbHdpSUNrN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMllXeDFaVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkSDBnWld4elpTQnBaaUFvSUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnYm1GdFpTQXBLU0FoUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJ5WlhRN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwY21WMElEMGdhbEYxWlhKNUxtWnBibVF1WVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhHNWNkRngwWEhRdkx5Qk9iMjR0WlhocGMzUmxiblFnWVhSMGNtbGlkWFJsY3lCeVpYUjFjbTRnYm5Wc2JDd2dkMlVnYm05eWJXRnNhWHBsSUhSdklIVnVaR1ZtYVc1bFpGeHVYSFJjZEZ4MGNtVjBkWEp1SUhKbGRDQTlQU0J1ZFd4c0lEOWNibHgwWEhSY2RGeDBkVzVrWldacGJtVmtJRHBjYmx4MFhIUmNkRngwY21WME8xeHVYSFJjZEgxY2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WQmRIUnlPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJRzVoYldVc0lIQnliM0JPWVcxbExGeHVYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJoZEhSeVRtRnRaWE1nUFNCMllXeDFaU0FtSmlCMllXeDFaUzV0WVhSamFDZ2djbTV2ZEhkb2FYUmxJQ2s3WEc1Y2JseDBYSFJwWmlBb0lHRjBkSEpPWVcxbGN5QW1KaUJsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUNrZ2UxeHVYSFJjZEZ4MGQyaHBiR1VnS0NBb2JtRnRaU0E5SUdGMGRISk9ZVzFsYzF0cEt5dGRLU0FwSUh0Y2JseDBYSFJjZEZ4MGNISnZjRTVoYldVZ1BTQnFVWFZsY25rdWNISnZjRVpwZUZzZ2JtRnRaU0JkSUh4OElHNWhiV1U3WEc1Y2JseDBYSFJjZEZ4MEx5OGdRbTl2YkdWaGJpQmhkSFJ5YVdKMWRHVnpJR2RsZENCemNHVmphV0ZzSUhSeVpXRjBiV1Z1ZENBb0l6RXdPRGN3S1Z4dVhIUmNkRngwWEhScFppQW9JR3BSZFdWeWVTNWxlSEJ5TG0xaGRHTm9MbUp2YjJ3dWRHVnpkQ2dnYm1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RDOHZJRk5sZENCamIzSnlaWE53YjI1a2FXNW5JSEJ5YjNCbGNuUjVJSFJ2SUdaaGJITmxYRzVjZEZ4MFhIUmNkRngwWld4bGJWc2djSEp2Y0U1aGJXVWdYU0E5SUda
14938aGJITmxPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFpXeGxiUzV5WlcxdmRtVkJkSFJ5YVdKMWRHVW9JRzVoYldVZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBZWFIwY2todmIydHpPaUI3WEc1Y2RGeDBkSGx3WlRvZ2UxeHVYSFJjZEZ4MGMyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lYTjFjSEJ2Y25RdWNtRmthVzlXWVd4MVpTQW1KaUIyWVd4MVpTQTlQVDBnWENKeVlXUnBiMXdpSUNZbVhHNWNkRngwWEhSY2RGeDBhbEYxWlhKNUxtNXZaR1ZPWVcxbEtDQmxiR1Z0TENCY0ltbHVjSFYwWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSMllYSWdkbUZzSUQwZ1pXeGxiUzUyWVd4MVpUdGNibHgwWEhSY2RGeDBYSFJsYkdWdExuTmxkRUYwZEhKcFluVjBaU2dnWENKMGVYQmxYQ0lzSUhaaGJIVmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0IyWVd3Z0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSbGJHVnRMblpoYkhWbElEMGdkbUZzTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkbUZzZFdVN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNkSDFjYm4wcE8xeHVYRzR2THlCSWIyOXJjeUJtYjNJZ1ltOXZiR1ZoYmlCaGRIUnlhV0oxZEdWelhHNWliMjlzU0c5dmF5QTlJSHRjYmx4MGMyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVc0lHNWhiV1VnS1NCN1hHNWNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUXZMeUJTWlcxdmRtVWdZbTl2YkdWaGJpQmhkSFJ5YVdKMWRHVnpJSGRvWlc0Z2MyVjBJSFJ2SUdaaGJITmxYRzVjZEZ4MFhIUnFVWFZsY25rdWNtVnRiM1psUVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmxiR1Z0TG5ObGRFRjBkSEpwWW5WMFpTZ2dibUZ0WlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDFjYmx4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MGZWeHVmVHRjYm1wUmRXVnllUzVsWVdOb0tDQnFVWFZsY25rdVpYaHdjaTV0WVhSamFDNWliMjlzTG5OdmRYSmpaUzV0WVhSamFDZ2dMMXhjZHlzdlp5QXBMQ0JtZFc1amRHbHZiaWdnYVN3Z2JtRnRaU0FwSUh0Y2JseDBkbUZ5SUdkbGRIUmxjaUE5SUdGMGRISklZVzVrYkdWYklHNWhiV1VnWFNCOGZDQnFVWFZsY25rdVptbHVaQzVoZEhSeU8xeHVYRzVjZEdGMGRISklZVzVrYkdWYklHNWhiV1VnWFNBOUlHWjFibU4wYVc5dUtDQmxiR1Z0TENCdVlXMWxMQ0JwYzFoTlRDQXBJSHRjYmx4MFhIUjJZWElnY21WMExDQm9ZVzVrYkdVN1hHNWNkRngwYVdZZ0tDQWhhWE5ZVFV3Z0tTQjdYRzVjZEZ4MFhIUXZMeUJCZG05cFpDQmhiaUJwYm1acGJtbDBaU0JzYjI5d0lHSjVJSFJsYlhCdmNtRnlhV3g1SUhKbGJXOTJhVzVuSUhSb2FYTWdablZ1WTNScGIyNGdabkp2YlNCMGFHVWdaMlYwZEdWeVhHNWNkRngwWEhSb1lXNWtiR1VnUFNCaGRIUnlTR0Z1Wkd4bFd5QnVZVzFsSUYwN1hHNWNkRngwWEhSaGRIUnlTR0Z1Wkd4bFd5QnVZVzFsSUYwZ1BTQnlaWFE3WEc1Y2RGeDBYSFJ5WlhRZ1BTQm5aWFIwWlhJb0lHVnNaVzBzSUc1aGJXVXNJR2x6V0UxTUlDa2dJVDBnYm5Wc2JDQS9YRzVjZEZ4MFhIUmNkRzVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E2WEc1Y2RGeDBYSFJjZEc1MWJHdzdYRzVjZEZ4MFhIUmhkSFJ5U0dGdVpHeGxXeUJ1WVcxbElGMGdQU0JvWVc1a2JHVTdYRzVjZEZ4MGZWeHVYSFJjZEhKbGRIVnliaUJ5WlhRN1hHNWNkSDA3WEc1OUtUdGNibHh1WEc1Y2JseHVkbUZ5SUhKbWIyTjFjMkZpYkdVZ1BTQXZYaWcvT21sdWN
14938IVjBmSE5sYkdWamRIeDBaWGgwWVhKbFlYeGlkWFIwYjI0cEpDOXBPMXh1WEc1cVVYVmxjbmt1Wm00dVpYaDBaVzVrS0h0Y2JseDBjSEp2Y0RvZ1puVnVZM1JwYjI0b0lHNWhiV1VzSUhaaGJIVmxJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQmhZMk5sYzNNb0lIUm9hWE1zSUdwUmRXVnllUzV3Y205d0xDQnVZVzFsTENCMllXeDFaU3dnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0ErSURFZ0tUdGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVlFjbTl3T2lCbWRXNWpkR2x2YmlnZ2JtRnRaU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWkdWc1pYUmxJSFJvYVhOYklHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCdVlXMWxJRjBnZkh3Z2JtRnRaU0JkTzF4dVhIUmNkSDBwTzF4dVhIUjlYRzU5S1R0Y2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkSEJ5YjNCR2FYZzZJSHRjYmx4MFhIUmNJbVp2Y2x3aU9pQmNJbWgwYld4R2IzSmNJaXhjYmx4MFhIUmNJbU5zWVhOelhDSTZJRndpWTJ4aGMzTk9ZVzFsWENKY2JseDBmU3hjYmx4dVhIUndjbTl3T2lCbWRXNWpkR2x2YmlnZ1pXeGxiU3dnYm1GdFpTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJSEpsZEN3Z2FHOXZhM01zSUc1dmRIaHRiQ3hjYmx4MFhIUmNkRzVVZVhCbElEMGdaV3hsYlM1dWIyUmxWSGx3WlR0Y2JseHVYSFJjZEM4dklFUnZiaWQwSUdkbGRDOXpaWFFnY0hKdmNHVnlkR2xsY3lCdmJpQjBaWGgwTENCamIyMXRaVzUwSUdGdVpDQmhkSFJ5YVdKMWRHVWdibTlrWlhOY2JseDBYSFJwWmlBb0lDRmxiR1Z0SUh4OElHNVVlWEJsSUQwOVBTQXpJSHg4SUc1VWVYQmxJRDA5UFNBNElIeDhJRzVVZVhCbElEMDlQU0F5SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1TzF4dVhIUmNkSDFjYmx4dVhIUmNkRzV2ZEhodGJDQTlJRzVVZVhCbElDRTlQU0F4SUh4OElDRnFVWFZsY25rdWFYTllUVXhFYjJNb0lHVnNaVzBnS1R0Y2JseHVYSFJjZEdsbUlDZ2dibTkwZUcxc0lDa2dlMXh1WEhSY2RGeDBMeThnUm1sNElHNWhiV1VnWVc1a0lHRjBkR0ZqYUNCb2IyOXJjMXh1WEhSY2RGeDBibUZ0WlNBOUlHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCdVlXMWxJRjBnZkh3Z2JtRnRaVHRjYmx4MFhIUmNkR2h2YjJ0eklEMGdhbEYxWlhKNUxuQnliM0JJYjI5cmMxc2dibUZ0WlNCZE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dkbUZzZFdVZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJvYjI5cmN5QW1KaUJjSW5ObGRGd2lJR2x1SUdodmIydHpJQ1ltSUNoeVpYUWdQU0JvYjI5cmN5NXpaWFFvSUdWc1pXMHNJSFpoYkhWbExDQnVZVzFsSUNrcElDRTlQU0IxYm1SbFptbHVaV1FnUDF4dVhIUmNkRngwWEhSeVpYUWdPbHh1WEhSY2RGeDBYSFFvSUdWc1pXMWJJRzVoYldVZ1hTQTlJSFpoYkhWbElDazdYRzVjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnYm1GdFpTQXBLU0FoUFQwZ2JuVnNiQ0EvWEc1Y2RGeDBYSFJjZEhKbGRDQTZYRzVjZEZ4MFhIUmNkR1ZzWlcxYklHNWhiV1VnWFR0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MGNISnZjRWh2YjJ0ek9pQjdYRzVjZEZ4MGRHRmlTVzVrWlhnNklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUJsYkdWdExtaGhjMEYwZEhKcFluVjBaU2dnWENKMFlXSnBibVJsZUZ3aUlDa2dmSHdnY21adlkzVnpZV0pzWlM1MFpYTjBLQ0JsYkdWdExtNXZaR1ZPWVcxbElDa2dmSHdnWld4bGJTNW9jbVZtSUQ5Y2JseDBYSFJjZEZ4MFhIUmxiR1Z0TG5SaFlrbHVaR1Y0SURwY2JseDBYSFJjZEZ4MFhIUXRNVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JuMHBPMXh1WEc1cFppQW9JQ0Z6ZFhCd2IzSjBMbTl3ZEZObGJHVmpkR1ZrSUNrZ2UxeHVYSFJxVVhWbGNua3VjSEp2Y0VodmIydHpMbk5sYkdWamRHVmtJRDBnZTF4dVhIUmNkR2RsZERvZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMllYSWdjR0Z5Wlc1MElEMGdaV3hsYlM1d1lYSmxiblJPYjJSbE8xeHVYSFJjZEZ4MGFXWWdLQ0J3WVhKbGJuUWdKaVlnY0dGeVpXNTBMbkJoY21WdWRFNXZaR1VnS1NCN1hHNWNkRngwWEhSY2RIQmhjbVZ1ZEM1d1lYSmxiblJPYjJSbExuTmxiR1ZqZEdWa1NXNWtaWGc3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBYSFJ5WlhSMWNtNGdiblZzYkR0Y2JseDBYSFI5WEc1Y2RIMDdYRzU5WEc1Y2JtcFJkV1Z5ZVM1bFlXTm9LRnRjYmx4MFhDSjBZV0pKYm1SbGVGd2lMRnh1WEhSY0luSmxZV1JQYm14NVhDSXNYRzVjZEZ3aWJXRjRUR1Z1WjNSb1hDSXNYRzVjZEZ3aVkyVnNiRk53WVdOcGJtZGNJaXhjYmx4MFhDSmpaV3hzVUdGa1pHbHVaMXdpTEZ4dVhIUmNJbkp2ZDFOd1lXNWNJaXhjYmx4MFhDSmpiMnhUY0dGdVhDSXNYRzVjZEZ3aWRYTmxUV0Z3WENJc1hHNWNkRndpWm5KaGJXVkNiM0prWlhKY0lpeGNibHgwWENKamIyNTBaVzUwUldScGRHRmliR1ZjSWx4dVhTd2dablZ1WTNScGIyNG9LU0I3WEc1Y2RHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCMGFHbHpMblJ2VEc5M1pYSkRZWE5sS0NrZ1hTQTlJSFJvYVhNN1hHNTlLVHRjYmx4dVhHNWNibHh1ZG1GeUlISmpiR0Z6Y3lBOUlDOWJYRngwWEZ4eVhGeHVYRnhtWFM5bk8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFlXUmtRMnhoYzNNNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSMllYSWdZMnhoYzNObGN5d2daV3hsYlN3Z1kzVnlMQ0JqYkdGNmVpd2dhaXdnWm1sdVlXeFdZV3gxWlN4Y2JseDBYSFJjZEhCeWIyTmxaV1FnUFNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ0ppWWdkbUZzZFdVc1hHNWNkRngwWEhScElEMGdNQ3hjYmx4MFhIUmNkR3hsYmlBOUlIUm9hWE11YkdWdVozUm9PMXh1WEc1Y2RGeDBhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ2RtRnNkV1VnS1NBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0lHb2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllU2dnZEdocGN5QXBMbUZrWkVOc1lYTnpLQ0IyWVd4MVpTNWpZV3hzS0NCMGFHbHpMQ0JxTENCMGFHbHpMbU5zWVhOelRtRnRaU0FwSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSEJ5YjJObFpXUWdLU0I3WEc1Y2RGeDBYSFF2THlCVWFHVWdaR2x6YW5WdVkzUnBiMjRnYUdWeVpTQnBjeUJtYjNJZ1ltVjBkR1Z5SUdOdmJYQnlaWE56YVdKcGJHbDBlU0FvYzJWbElISmxiVzkyWlVOc1lYTnpLVnh1WEhSY2RGeDBZMnhoYzNObGN5QTlJQ2dnZG1Gc2RXVWdmSHdnWENKY0lpQXBMbTFoZEdOb0tDQnlibTkwZDJocGRHVWdLU0I4ZkNCYlhUdGNibHh1WEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkdWdU95QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RHVnNaVzBnUFNCMGFHbHpXeUJwSUYwN1hHNWNkRngwWEhSY2RHTjFjaUE5SUdWc1pXMHVibTlrWlZSNWNHVWdQVDA5SURFZ0ppWWdLQ0JsYkdWdExtTnNZWE56VG1GdFpTQS9YRzVjZEZ4MFhIUmNkRngwS0NCY0lpQmNJaUFySUdWc1pXMHVZMnhoYzNOT1lXMWxJQ3NnWENJZ1hDSWdLUzV5WlhCc1lXTmxLQ0J5WTJ4aGMzTXNJRndpSUZ3aUlDa2dPbHh1WEhSY2RGeDBYSFJjZEZ3aUlGd2lYRzVjZEZ4MFhIUmNkQ2s3WEc1Y2JseDBYSFJjZEZ4MGFXWWdLQ0JqZFhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvWTJ4aGVub2dQU0JqYkdGemMyVnpXMm9ySzEwcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JqZFhJdWFXNWtaWGhQWmlnZ1hDSWdYQ0lnS3lCamJHRjZlaUFySUZ3aUlGd2lJQ2tnUENBd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmpkWElnS3owZ1kyeGhlbm9nS3lCY0lpQmNJanRjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJ2Ym14NUlHRnpjMmxuYmlCcFppQmthV1ptWlhKbGJuUWdkRzhnWVhadmFXUWdkVzV1WldWa1pXUWdjbVZ1WkdWeWFXNW5MbHh1WEhSY2RGeDBYSFJjZEdacGJtRnNWbUZzZFdVZ1BTQnFVWFZsY25rdWRISnBiU2dnWTNWeUlDazdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQmxiR1Z0TG1Oc1lYTnpUbUZ0WlNBaFBUMGdabWx1WVd4V1lXeDFaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkR1ZzWlcwdVkyeGhjM05PWVcxbElEMGdabWx1WVd4V1lXeDFaVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN6dGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVkRiR0Z6Y3pvZ1puVnVZM1JwYjI0b0lIWmhiSFZsSUNrZ2UxeHVYSFJjZEhaaGNpQmpiR0Z6YzJWekxDQmxiR1Z0TENCamRYSXNJR05zWVhwNkxDQnFMQ0JtYVc1aGJGWmhiSFZsTEZ4dVhIUmNkRngwY0hKdlkyVmxaQ0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlEQWdmSHdnZEhsd1pXOW1JSFpoYkhWbElEMDlQU0JjSW5OMGNtbHVaMXdpSUNZbUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFEdGNibHh1WEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NCcUlDa2dlMXh1WEhSY2RGeDBYSFJxVVhWbGNua29JSFJvYVhNZ0tTNXlaVzF2ZG1WRGJHRnpjeWdnZG1Gc2RXVXVZMkZzYkNnZ2RHaHBjeXdnYWl3Z2RHaHBjeTVqYkdGemMwNWhiV1VnS1NBcE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDZ2djSEp2WTJWbFpDQXBJSHRjYmx4MFhIUmNkR05zWVhOelpYTWdQU0FvSUhaaGJIVmxJSHg4SUZ3aVhDSWdLUzV0WVhSamFDZ2djbTV2ZEhkb2FYUmxJQ2tnZkh3Z1cxMDdYRzVjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXNnYVNCZE8xeHVYSFJjZEZ4MFhIUXZMeUJVYUdseklHVjRjSEpsYzNOcGIyNGdhWE1nYUdWeVpTQm1iM0lnWW1WMGRHVnlJR052YlhCeVpYTnphV0pwYkdsMGVTQW9jMlZsSUdGa1pFTnNZWE56S1Z4dVhIUmNkRngwWEhSamRYSWdQU0JsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlDZ2daV3hsYlM1amJHRnpjMDVoYldVZ1AxeHVYSFJjZEZ4MFhIUmNkQ2dnWENJZ1hDSWdLeUJsYkdWdExtTnNZWE56VG1GdFpTQXJJRndpSUZ3aUlDa3VjbVZ3YkdGalpTZ2djbU5zWVhOekxDQmNJaUJjSWlBcElEcGNibHgwWEhSY2RGeDBYSFJjSWx3aVhHNWNkRngwWEhSY2RDazdYRzVjYmx4MFhIUmNkRngwYVdZZ0tDQmpkWElnS1NCN1hHNWNkRngwWEhSY2RGeDBhaUE5SURBN1hHNWNkRngwWEhSY2RGeDBkMmhwYkdVZ0tDQW9ZMnhoZW5vZ1BTQmpiR0Z6YzJWelcyb3JLMTBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1VtVnRiM1psSUNwaGJHd3FJR2x1YzNSaGJtTmxjMXh1WEhSY2RGeDBYSFJjZEZ4MGQyaH
14938BiR1VnS0NCamRYSXVhVzVrWlhoUFppZ2dYQ0lnWENJZ0t5QmpiR0Y2ZWlBcklGd2lJRndpSUNrZ1BqMGdNQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWTNWeUlEMGdZM1Z5TG5KbGNHeGhZMlVvSUZ3aUlGd2lJQ3NnWTJ4aGVub2dLeUJjSWlCY0lpd2dYQ0lnWENJZ0tUdGNibHgwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwWEhRdkx5QlBibXg1SUdGemMybG5iaUJwWmlCa2FXWm1aWEpsYm5RZ2RHOGdZWFp2YVdRZ2RXNXVaV1ZrWldRZ2NtVnVaR1Z5YVc1bkxseHVYSFJjZEZ4MFhIUmNkR1pwYm1Gc1ZtRnNkV1VnUFNCMllXeDFaU0EvSUdwUmRXVnllUzUwY21sdEtDQmpkWElnS1NBNklGd2lYQ0k3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdExtTnNZWE56VG1GdFpTQWhQVDBnWm1sdVlXeFdZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdWc1pXMHVZMnhoYzNOT1lXMWxJRDBnWm1sdVlXeFdZV3gxWlR0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4MGZTeGNibHh1WEhSMGIyZG5iR1ZEYkdGemN6b2dablZ1WTNScGIyNG9JSFpoYkhWbExDQnpkR0YwWlZaaGJDQXBJSHRjYmx4MFhIUjJZWElnZEhsd1pTQTlJSFI1Y0dWdlppQjJZV3gxWlR0Y2JseHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlITjBZWFJsVm1Gc0lEMDlQU0JjSW1KdmIyeGxZVzVjSWlBbUppQjBlWEJsSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSE4wWVhSbFZtRnNJRDhnZEdocGN5NWhaR1JEYkdGemN5Z2dkbUZzZFdVZ0tTQTZJSFJvYVhNdWNtVnRiM1psUTJ4aGMzTW9JSFpoYkhWbElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZG1Gc2RXVWdLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYUdsekxtVmhZMmdvWm5WdVkzUnBiMjRvSUdrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuUnZaMmRzWlVOc1lYTnpLQ0IyWVd4MVpTNWpZV3hzS0hSb2FYTXNJR2tzSUhSb2FYTXVZMnhoYzNOT1lXMWxMQ0J6ZEdGMFpWWmhiQ2tzSUhOMFlYUmxWbUZzSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbElEMDlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUXZMeUJVYjJkbmJHVWdhVzVrYVhacFpIVmhiQ0JqYkdGemN5QnVZVzFsYzF4dVhIUmNkRngwWEhSMllYSWdZMnhoYzNOT1lXMWxMRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBYSFJjZEhObGJHWWdQU0JxVVhWbGNua29JSFJvYVhNZ0tTeGNibHgwWEhSY2RGeDBYSFJqYkdGemMwNWhiV1Z6SUQwZ2RtRnNkV1V1YldGMFkyZ29JSEp1YjNSM2FHbDBaU0FwSUh4OElGdGRPMXh1WEc1Y2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0dOc1lYTnpUbUZ0WlNBOUlHTnNZWE56VG1GdFpYTmJJR2tyS3lCZEtTQXBJSHRjYmx4MFhIUmNkRngwWEhRdkx5QkRhR1ZqYXlCbFlXTm9JR05zWVhOelRtRnRaU0JuYVhabGJpd2djM0JoWTJVZ2MyVndZWEpoZEdWa0lHeHBjM1JjYmx4MFhIUmNkRngwWEhScFppQW9JSE5sYkdZdWFHRnpRMnhoYzNNb0lHTnNZWE56VG1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBjMlZzWmk1eVpXMXZkbVZEYkdGemN5Z2dZMnhoYzNOT1lXMWxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSE5sYkdZdVlXUmtRMnhoYzNNb0lHTnNZWE56VG1GdFpTQXBPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJVYjJkbmJHVWdkMmh2YkdVZ1kyeGhjM01nYm1GdFpWeHVYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2dkSGx3WlNBOVBUMGdjM1J5ZFc1a1pXWnBibVZrSUh4OElIUjVjR1VnUFQwOUlGd2lZbTl2YkdWaGJsd2lJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JSFJvYVhNdVkyeGhjM05PWVcxbElDa2dlMXh1WEhSY2RGeDBYSFJjZEM4dklITjBiM0psSUdOc1lYTnpUbUZ0WlNCcFppQnpaWFJjYmx4MFhIUmNkRngwWEhSa1lYUmhYM0J5YVhZdWMyVjBLQ0IwYUdsekxDQmNJbDlmWTJ4aGMzTk9ZVzFsWDE5Y0lpd2dkR2hwY3k1amJHRnpjMDVoYldVZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSFJvWlNCbGJHVnRaVzUwSUdoaGN5QmhJR05zWVhOeklHNWhiV1VnYjNJZ2FXWWdkMlVuY21VZ2NHRnpjMlZrSUdCbVlXeHpaV0FzWEc1Y2RGeDBYSFJjZEM4dklIUm9aVzRnY21WdGIzWmxJSFJvWlNCM2FHOXNaU0JqYkdGemMyNWhiV1VnS0dsbUlIUm9aWEpsSUhkaGN5QnZibVVzSUhSb1pTQmhZbTkyWlNCellYWmxaQ0JwZENrdVhHNWNkRngwWEhSY2RDOHZJRTkwYUdWeWQybHpaU0JpY21sdVp5QmlZV05ySUhkb1lYUmxkbVZ5SUhkaGN5QndjbVYyYVc5MWMyeDVJSE5oZG1Wa0lDaHBaaUJoYm5sMGFHbHVaeWtzWEc1Y2RGeDBYSFJjZEM4dklHWmhiR3hwYm1jZ1ltRmpheUIwYnlCMGFHVWdaVzF3ZEhrZ2MzUnlhVzVuSUdsbUlHNXZkR2hwYm1jZ2QyRnpJSE4wYjNKbFpDNWNibHgwWEhSY2RGeDBkR2hwY3k1amJHRnpjMDVoYldVZ1BTQjBhR2x6TG1Oc1lYTnpUbUZ0WlNCOGZDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ1B5QmNJbHdpSURvZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnZEdocGN5d2dYQ0pmWDJOc1lYTnpUbUZ0WlY5ZlhDSWdLU0I4ZkNCY0lsd2lPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSOUxGeHVYRzVjZEdoaGMwTnNZWE56T2lCbWRXNWpkR2x2YmlnZ2MyVnNaV04wYjNJZ0tTQjdYRzVjZEZ4MGRtRnlJR05zWVhOelRtRnRaU0E5SUZ3aUlGd2lJQ3NnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaXhjYmx4MFhIUmNkR2tnUFNBd0xGeHVYSFJjZEZ4MGJDQTlJSFJvYVhNdWJHVnVaM1JvTzF4dVhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd3N0lHa3JLeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dkR2hwYzF0cFhTNXViMlJsVkhsd1pTQTlQVDBnTVNBbUppQW9YQ0lnWENJZ0t5QjBhR2x6VzJsZExtTnNZWE56VG1GdFpTQXJJRndpSUZ3aUtTNXlaWEJzWVdObEtISmpiR0Z6Y3l3Z1hDSWdYQ0lwTG1sdVpHVjRUMllvSUdOc1lYTnpUbUZ0WlNBcElENDlJREFnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MGZWeHVmU2s3WEc1Y2JseHVYRzVjYm5aaGNpQnljbVYwZFhKdUlEMGdMMXhjY2k5bk8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MGRtRnNPaUJtZFc1amRHbHZiaWdnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBkbUZ5SUdodmIydHpMQ0J5WlhRc0lHbHpSblZ1WTNScGIyNHNYRzVjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXN3WFR0Y2JseHVYSFJjZEdsbUlDZ2dJV0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSY2RHaHZiMnR6SUQwZ2FsRjFaWEo1TG5aaGJFaHZiMnR6V3lCbGJHVnRMblI1Y0dVZ1hTQjhmQ0JxVVhWbGNua3VkbUZzU0c
149385dmEzTmJJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0JkTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnYUc5dmEzTWdKaVlnWENKblpYUmNJaUJwYmlCb2IyOXJjeUFtSmlBb2NtVjBJRDBnYUc5dmEzTXVaMlYwS0NCbGJHVnRMQ0JjSW5aaGJIVmxYQ0lnS1NrZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MGNtVjBJRDBnWld4bGJTNTJZV3gxWlR0Y2JseHVYSFJjZEZ4MFhIUnlaWFIxY200Z2RIbHdaVzltSUhKbGRDQTlQVDBnWENKemRISnBibWRjSWlBL1hHNWNkRngwWEhSY2RGeDBMeThnU0dGdVpHeGxJRzF2YzNRZ1kyOXRiVzl1SUhOMGNtbHVaeUJqWVhObGMxeHVYSFJjZEZ4MFhIUmNkSEpsZEM1eVpYQnNZV05sS0hKeVpYUjFjbTRzSUZ3aVhDSXBJRHBjYmx4MFhIUmNkRngwWEhRdkx5QklZVzVrYkdVZ1kyRnpaWE1nZDJobGNtVWdkbUZzZFdVZ2FYTWdiblZzYkM5MWJtUmxaaUJ2Y2lCdWRXMWlaWEpjYmx4MFhIUmNkRngwWEhSeVpYUWdQVDBnYm5Wc2JDQS9JRndpWENJZ09pQnlaWFE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUnBjMFoxYm1OMGFXOXVJRDBnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhaaGJIVmxJQ2s3WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ0JwSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSFpoYkR0Y2JseHVYSFJjZEZ4MGFXWWdLQ0IwYUdsekxtNXZaR1ZVZVhCbElDRTlQU0F4SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RHbG1JQ2dnYVhOR2RXNWpkR2x2YmlBcElIdGNibHgwWEhSY2RGeDBkbUZzSUQwZ2RtRnNkV1V1WTJGc2JDZ2dkR2hwY3l3Z2FTd2dhbEYxWlhKNUtDQjBhR2x6SUNrdWRtRnNLQ2tnS1R0Y2JseDBYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJjZEhaaGJDQTlJSFpoYkhWbE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJVY21WaGRDQnVkV3hzTDNWdVpHVm1hVzVsWkNCaGN5QmNJbHdpT3lCamIyNTJaWEowSUc1MWJXSmxjbk1nZEc4Z2MzUnlhVzVuWEc1Y2RGeDBYSFJwWmlBb0lIWmhiQ0E5UFNCdWRXeHNJQ2tnZTF4dVhIUmNkRngwWEhSMllXd2dQU0JjSWx3aU8xeHVYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IwZVhCbGIyWWdkbUZzSUQwOVBTQmNJbTUxYldKbGNsd2lJQ2tnZTF4dVhIUmNkRngwWEhSMllXd2dLejBnWENKY0lqdGNibHh1WEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYWxGMVpYSjVMbWx6UVhKeVlYa29JSFpoYkNBcElDa2dlMXh1WEhSY2RGeDBYSFIyWVd3Z1BTQnFVWFZsY25rdWJXRndLQ0IyWVd3c0lHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkbUZzZFdVZ1BUMGdiblZzYkNBL0lGd2lYQ0lnT2lCMllXeDFaU0FySUZ3aVhDSTdYRzVjZEZ4MFhIUmNkSDBwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhSb2IyOXJjeUE5SUdwUmRXVnllUzUyWVd4SWIyOXJjMXNnZEdocGN5NTBlWEJsSUYwZ2ZId2dhbEYxWlhKNUxuWmhiRWh2YjJ0eld5QjBhR2x6TG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dYVHRjYmx4dVhIUmNkRngwTHk4Z1NXWWdjMlYwSUhKbGRIVnlibk1nZFc1a1pXWnBibVZrTENCbVlXeHNJR0poWTJzZ2RHOGdibTl5YldGc0lITmxkSFJwYm1kY2JseDBYSFJjZEdsbUlDZ2dJV2h2YjJ0eklIeDhJQ0VvWENKelpYUmNJaUJwYmlCb2IyOXJjeWtnZkh3Z2FHOXZhM011YzJWMEtDQjBhR2x6TENCMllXd3NJRndpZG1Gc2RXVmNJaUFwSUQwOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBYSFJjZEhSb2FYTXVkbUZzZFdVZ1BTQjJZV3c3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU2s3WEc1Y2RIMWNibjBwTzF4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseDBkbUZzU0c5dmEzTTZJSHRjYmx4MFhIUnZjSFJwYjI0NklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQjJZV3dnUFNCcVVYVmxjbmt1Wm1sdVpDNWhkSFJ5S0NCbGJHVnRMQ0JjSW5aaGJIVmxYQ0lnS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhaaGJDQWhQU0J1ZFd4c0lEOWNibHgwWEhSY2RGeDBYSFIyWVd3Z09seHVYSFJjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVsRk1UQXRNVEVyWEc1Y2RGeDBYSFJjZEZ4MEx5OGdiM0IwYVc5dUxuUmxlSFFnZEdoeWIzZHpJR1Y0WTJWd2RHbHZibk1nS0NNeE5EWTROaXdnSXpFME9EVTRLVnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzUwY21sdEtDQnFVWFZsY25rdWRHVjRkQ2dnWld4bGJTQXBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU3hjYmx4MFhIUnpaV3hsWTNRNklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQjJZV3gxWlN3Z2IzQjBhVzl1TEZ4dVhIUmNkRngwWEhSY2RHOXdkR2x2Ym5NZ1BTQmxiR1Z0TG05d2RHbHZibk1zWEc1Y2RGeDBYSFJjZEZ4MGFXNWtaWGdnUFNCbGJHVnRMbk5sYkdWamRHVmtTVzVrWlhnc1hHNWNkRngwWEhSY2RGeDBiMjVsSUQwZ1pXeGxiUzUwZVhCbElEMDlQU0JjSW5ObGJHVmpkQzF2Ym1WY0lpQjhmQ0JwYm1SbGVDQThJREFzWEc1Y2RGeDBYSFJjZEZ4MGRtRnNkV1Z6SUQwZ2IyNWxJRDhnYm5Wc2JDQTZJRnRkTEZ4dVhIUmNkRngwWEhSY2RHMWhlQ0E5SUc5dVpTQS9JR2x1WkdWNElDc2dNU0E2SUc5d2RHbHZibk11YkdWdVozUm9MRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQnBibVJsZUNBOElEQWdQMXh1WEhSY2RGeDBYSFJjZEZ4MGJXRjRJRHBjYmx4MFhIUmNkRngwWEhSY2RHOXVaU0EvSUdsdVpHVjRJRG9nTUR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJNYjI5d0lIUm9jbTkxWjJnZ1lXeHNJSFJvWlNCelpXeGxZM1JsWkNCdmNIUnBiMjV6WEc1Y2RGeDBYSFJjZEdadmNpQW9JRHNnYVNBOElHMWhlRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEc5d2RHbHZiaUE5SUc5d2RHbHZibk5iSUdrZ1hUdGNibHh1WEhSY2RGeDBYSFJjZEM4dklFbEZOaTA1SUdSdlpYTnVKM1FnZFhCa1lYUmxJSE5sYkdWamRHVmtJR0ZtZEdWeUlHWnZjbTBnY21WelpYUWdLQ015TlRVeEtWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ0tDQnZjSFJwYjI0dWMyVnNaV04wWldRZ2ZId2dhU0E5UFQwZ2FXNWtaWGdnS1NBbUpseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkViMjRuZENCeVpYUjFjbTRnYjNCMGFXOXVjeUIwYUdGMElHRnlaU0JrYVhOaFlteGxaQ0J2Y2lCcGJpQmhJR1JwYzJGaWJHVmtJRzl3ZEdkeWIzVndYRzVjZEZ4MFhIUmNkRngwWEhSY2RDZ2djM1Z3Y0c5eWRDNXZjSFJFYVhOaFlteGxaQ0EvSUNGdmNIUnBiMjR1WkdsellXSnNaV1FnT2lCdmNIUnBiMjR1WjJWMFFYUjBjbWxpZFhSbEtDQmNJbVJwYzJGaWJHVmtYQ0lnS1NBOVBUMGdiblZzYkNBcElDWW1YRzVjZEZ4MFhIUmNkRngwWEhSY2RDZ2dJVzl3ZEdsdmJpNXdZWEpsYm5ST2IyUmxMbVJwYzJGaWJHVmtJSHg4SUNGcVVYVmxjbmt1Ym05a1pVNWhiV1VvSUc5d2RHbHZiaTV3WVhKbGJuUk9iMlJsTENCY0ltOXdkR2R5YjNWd1hDSWdLU0FwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkRngwWEhRdkx5QkhaWFFnZEdobElITndaV05wWm1saklIWmhiSFZsSUdadmNpQjBhR1VnYjNCMGFXOXVYRzVjZEZ4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdwUmRXVnllU2dnYjNCMGFXOXVJQ2t1ZG1Gc0tDazdYRzVjYmx4MFhIUmNkRngwWEhSY2RDOHZJRmRsSUdSdmJpZDBJRzVsWldRZ1lXNGdZWEp5WVhrZ1ptOXlJRzl1WlNCelpXeGxZM1J6WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUc5
14938dVpTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIWmhiSFZsTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEZ4MFhIUXZMeUJOZFd4MGFTMVRaV3hsWTNSeklISmxkSFZ5YmlCaGJpQmhjbkpoZVZ4dVhIUmNkRngwWEhSY2RGeDBkbUZzZFdWekxuQjFjMmdvSUhaaGJIVmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwY21WMGRYSnVJSFpoYkhWbGN6dGNibHgwWEhSY2RIMHNYRzVjYmx4MFhIUmNkSE5sZERvZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUhaaGJIVmxJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdiM0IwYVc5dVUyVjBMQ0J2Y0hScGIyNHNYRzVjZEZ4MFhIUmNkRngwYjNCMGFXOXVjeUE5SUdWc1pXMHViM0IwYVc5dWN5eGNibHgwWEhSY2RGeDBYSFIyWVd4MVpYTWdQU0JxVVhWbGNua3ViV0ZyWlVGeWNtRjVLQ0IyWVd4MVpTQXBMRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQnZjSFJwYjI1ekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFhIUjNhR2xzWlNBb0lHa3RMU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnZjSFJwYjI0Z1BTQnZjSFJwYjI1eld5QnBJRjA3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0FvYjNCMGFXOXVMbk5sYkdWamRHVmtJRDBnYWxGMVpYSjVMbWx1UVhKeVlYa29JRzl3ZEdsdmJpNTJZV3gxWlN3Z2RtRnNkV1Z6SUNrZ1BqMGdNQ2tnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ2Y0hScGIyNVRaWFFnUFNCMGNuVmxPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkQzh2SUVadmNtTmxJR0p5YjNkelpYSnpJSFJ2SUdKbGFHRjJaU0JqYjI1emFYTjBaVzUwYkhrZ2QyaGxiaUJ1YjI0dGJXRjBZMmhwYm1jZ2RtRnNkV1VnYVhNZ2MyVjBYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lXOXdkR2x2YmxObGRDQXBJSHRjYmx4MFhIUmNkRngwWEhSbGJHVnRMbk5sYkdWamRHVmtTVzVrWlhnZ1BTQXRNVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSeVpYUjFjbTRnZG1Gc2RXVnpPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlZ4dWZTazdYRzVjYmk4dklGSmhaR2x2Y3lCaGJtUWdZMmhsWTJ0aWIzaGxjeUJuWlhSMFpYSXZjMlYwZEdWeVhHNXFVWFZsY25rdVpXRmphQ2hiSUZ3aWNtRmthVzljSWl3Z1hDSmphR1ZqYTJKdmVGd2lJRjBzSUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJxVVhWbGNua3VkbUZzU0c5dmEzTmJJSFJvYVhNZ1hTQTlJSHRjYmx4MFhIUnpaWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0IyWVd4MVpTQXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1selFYSnlZWGtvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlBb0lHVnNaVzB1WTJobFkydGxaQ0E5SUdwUmRXVnllUzVwYmtGeWNtRjVLQ0JxVVhWbGNua29aV3hsYlNrdWRtRnNLQ2tzSUhaaGJIVmxJQ2tnUGowZ01DQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlR0Y2JseDBhV1lnS0NBaGMzVndjRzl5ZEM1amFHVmphMDl1SUNrZ2UxeHVYSFJjZEdwUmRXVnllUzUyWVd4SWIyOXJjMXNnZEdocGN5QmRMbWRsZENBOUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsS0Z3aWRtRnNkV1ZjSWlrZ1BUMDlJRzUxYkd3Z1B5QmNJbTl1WENJZ09pQmxiR1Z0TG5aaGJIVmxPMXh1WEhSY2RIMDdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JseHVYRzR2THlCU1pYUjFjbTRnYWxGMVpYSjVJR1p2Y2lCaGRIUnlhV0oxZEdWekxXOXViSGtnYVc1amJIVnphVzl1WEc1Y2JseHVhbEYxWlhKNUxtVmhZMmdvSUNoY0ltSnNkWElnWm05amRYTWdabTlqZFhOcGJpQm1iMk4xYzI5MWRDQnNiMkZrSUhKbGMybDZaU0J6WTNKdmJHd2dkVzVzYjJGa0lHTnNhV05ySUdSaWJHTnNhV05ySUZ3aUlDdGNibHgwWENKdGIzVnpaV1J2ZDI0Z2JXOTFjMlYxY0NCdGIzVnpaVzF2ZG1VZ2JXOTFjMlZ2ZG1WeUlHMXZkWE5sYjNWMElHMXZkWE5sWlc1MFpYSWdiVzkxYzJWc1pXRjJaU0JjSWlBclhHNWNkRndpWTJoaGJtZGxJSE5sYkdWamRDQnpkV0p0YVhRZ2EyVjVaRzkzYmlCclpYbHdjbVZ6Y3lCclpYbDFjQ0JsY25KdmNpQmpiMjUwWlhoMGJXVnVkVndpS1M1emNHeHBkQ2hjSWlCY0lpa3NJR1oxYm1OMGFXOXVLQ0JwTENCdVlXMWxJQ2tnZTF4dVhHNWNkQzh2SUVoaGJtUnNaU0JsZG1WdWRDQmlhVzVrYVc1blhHNWNkR3BSZFdWeWVTNW1ibHNnYm1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUdSaGRHRXNJR1p1SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJoY21kMWJXVnVkSE11YkdWdVozUm9JRDRnTUNBL1hHNWNkRngwWEhSMGFHbHpMbTl1S0NCdVlXMWxMQ0J1ZFd4c0xDQmtZWFJoTENCbWJpQXBJRHBjYmx4MFhIUmNkSFJvYVhNdWRISnBaMmRsY2lnZ2JtRnRaU0FwTzF4dVhIUjlPMXh1ZlNrN1hHNWNibXBSZFdWeWVTNW1iaTVsZUhSbGJtUW9lMXh1WEhSb2IzWmxjam9nWm5WdVkzUnBiMjRvSUdadVQzWmxjaXdnWm01UGRYUWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Ylc5MWMyVmxiblJsY2lnZ1ptNVBkbVZ5SUNrdWJXOTFjMlZzWldGMlpTZ2dabTVQZFhRZ2ZId2dabTVQZG1WeUlDazdYRzVjZEgwc1hHNWNibHgwWW1sdVpEb2dablZ1WTNScGIyNG9JSFI1Y0dWekxDQmtZWFJoTENCbWJpQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV2YmlnZ2RIbHdaWE1zSUc1MWJHd3NJR1JoZEdFc0lHWnVJQ2s3WEc1Y2RIMHNYRzVjZEhWdVltbHVaRG9nWm5WdVkzUnBiMjRvSUhSNWNHVnpMQ0JtYmlBcElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXZabVlvSUhSNWNHVnpMQ0J1ZFd4c0xDQm1iaUFwTzF4dVhIUjlMRnh1WEc1Y2RHUmxiR1ZuWVhSbE9pQm1kVzVqZEdsdmJpZ2djMlZzWldOMGIzSXNJSFI1Y0dWekxDQmtZWFJoTENCbWJpQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV2YmlnZ2RIbHdaWE1zSUhObGJHVmpkRzl5TENCa1lYUmhMQ0JtYmlBcE8xeHVYSFI5TEZ4dVhIUjFibVJsYkdWbllYUmxPaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0lzSUhSNWNHVnpMQ0JtYmlBcElIdGNibHgwWEhRdkx5QW9JRzVoYldWemNHRmpaU0FwSUc5eUlDZ2djMlZzWldOMGIzSXNJSFI1Y0dWeklGc3NJR1p1WFNBcFhHNWNkRngwY21WMGRYSnVJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURFZ1B5QjBhR2x6TG05bVppZ2djMlZzWldOMGIzSXNJRndpS2lwY0lpQXBJRG9nZEdocGN5NXZabVlvSUhSNWNHVnpMQ0J6Wld4bFkzUnZjaUI4ZkNCY0lpb3FYQ0lzSUdadUlDazdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JuWmhjaUJ1YjI1alpTQTlJR3BSZFdWeWVTNXViM2NvS1R0Y2JseHVkbUZ5SUhKeGRXVnllU0E5SUNndlhGdy9MeWs3WEc1Y2JseHVYRzR2THlCVGRYQndiM0owT2lCQmJtUnliMmxrSURJdU0xeHVMeThnVjI5eWEyRnliM1Z1WkNCbVlXbHNkWEpsSUhSdklITjBjbWx1WnkxallYTjBJRzUxYkd3Z2FXNXdkWFJjYm1wUmRXVnllUzV3WVhKelpVcFRUMD
14938RnUFNCbWRXNWpkR2x2YmlnZ1pHRjBZU0FwSUh0Y2JseDBjbVYwZFhKdUlFcFRUMDR1Y0dGeWMyVW9JR1JoZEdFZ0t5QmNJbHdpSUNrN1hHNTlPMXh1WEc1Y2JpOHZJRU55YjNOekxXSnliM2R6WlhJZ2VHMXNJSEJoY25OcGJtZGNibXBSZFdWeWVTNXdZWEp6WlZoTlRDQTlJR1oxYm1OMGFXOXVLQ0JrWVhSaElDa2dlMXh1WEhSMllYSWdlRzFzTENCMGJYQTdYRzVjZEdsbUlDZ2dJV1JoZEdFZ2ZId2dkSGx3Wlc5bUlHUmhkR0VnSVQwOUlGd2ljM1J5YVc1blhDSWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHNTFiR3c3WEc1Y2RIMWNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVGxjYmx4MGRISjVJSHRjYmx4MFhIUjBiWEFnUFNCdVpYY2dSRTlOVUdGeWMyVnlLQ2s3WEc1Y2RGeDBlRzFzSUQwZ2RHMXdMbkJoY25ObFJuSnZiVk4wY21sdVp5Z2daR0YwWVN3Z1hDSjBaWGgwTDNodGJGd2lJQ2s3WEc1Y2RIMGdZMkYwWTJnZ0tDQmxJQ2tnZTF4dVhIUmNkSGh0YkNBOUlIVnVaR1ZtYVc1bFpEdGNibHgwZlZ4dVhHNWNkR2xtSUNnZ0lYaHRiQ0I4ZkNCNGJXd3VaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSUZ3aWNHRnljMlZ5WlhKeWIzSmNJaUFwTG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJxVVhWbGNua3VaWEp5YjNJb0lGd2lTVzUyWVd4cFpDQllUVXc2SUZ3aUlDc2daR0YwWVNBcE8xeHVYSFI5WEc1Y2RISmxkSFZ5YmlCNGJXdzdYRzU5TzF4dVhHNWNiblpoY2x4dVhIUnlhR0Z6YUNBOUlDOGpMaW9rTHl4Y2JseDBjblJ6SUQwZ0x5aGJQeVpkS1Y4OVcxNG1YU292TEZ4dVhIUnlhR1ZoWkdWeWN5QTlJQzllS0M0cVB5azZXeUJjWEhSZEtpaGJYbHhjY2x4Y2JsMHFLU1F2Yldjc1hHNWNkQzh2SUNNM05qVXpMQ0FqT0RFeU5Td2dJemd4TlRJNklHeHZZMkZzSUhCeWIzUnZZMjlzSUdSbGRHVmpkR2x2Ymx4dVhIUnliRzlqWVd4UWNtOTBiMk52YkNBOUlDOWVLRDg2WVdKdmRYUjhZWEJ3ZkdGd2NDMXpkRzl5WVdkbGZDNHJMV1Y0ZEdWdWMybHZibnhtYVd4bGZISmxjM3gzYVdSblpYUXBPaVF2TEZ4dVhIUnlibTlEYjI1MFpXNTBJRDBnTDE0b1B6cEhSVlI4U0VWQlJDa2tMeXhjYmx4MGNuQnliM1J2WTI5c0lEMGdMMTVjWEM5Y1hDOHZMRnh1WEhSeWRYSnNJRDBnTDE0b1cxeGNkeTRyTFYwck9pa29QenBjWEM5Y1hDOG9QenBiWGx4Y0x6OGpYU3BBZkNrb1cxNWNYQzgvSXpwZEtpa29Qem82S0Z4Y1pDc3BmQ2w4S1M4c1hHNWNibHgwTHlvZ1VISmxabWxzZEdWeWMxeHVYSFFnS2lBeEtTQlVhR1Y1SUdGeVpTQjFjMlZtZFd3Z2RHOGdhVzUwY205a2RXTmxJR04xYzNSdmJTQmtZWFJoVkhsd1pYTWdLSE5sWlNCaGFtRjRMMnB6YjI1d0xtcHpJR1p2Y2lCaGJpQmxlR0Z0Y0d4bEtWeHVYSFFnS2lBeUtTQlVhR1Z6WlNCaGNtVWdZMkZzYkdWa09seHVYSFFnS2lBZ0lDQXRJRUpGUms5U1JTQmhjMnRwYm1jZ1ptOXlJR0VnZEhKaGJuTndiM0owWEc1Y2RDQXFJQ0FnSUMwZ1FVWlVSVklnY0dGeVlXMGdjMlZ5YVdGc2FYcGhkR2x2YmlBb2N5NWtZWFJoSUdseklHRWdjM1J5YVc1bklHbG1JSE11Y0hKdlkyVnpjMFJoZEdFZ2FYTWdkSEoxWlNsY2JseDBJQ29nTXlrZ2EyVjVJR2x6SUhSb1pTQmtZWFJoVkhsd1pWeHVYSFFnS2lBMEtTQjBhR1VnWTJGMFkyaGhiR3dnYzNsdFltOXNJRndpS2x3aUlHTmhiaUJpWlNCMWMyVmtYRzVjZENBcUlEVXBJR1Y0WldOMWRHbHZiaUIzYVd4c0lITjBZWEowSUhkcGRHZ2dkSEpoYm5Od2IzSjBJR1JoZEdGVWVYQmxJR0Z1WkNCVVNFVk9JR052Ym5ScGJuVmxJR1J2ZDI0Z2RHOGdYQ0lxWENJZ2FXWWdibVZsWkdWa1hHNWNkQ0FxTDF4dVhIUndjbVZtYVd4MFpYSnpJRDBnZTMwc1hHNWNibHgwTHlvZ1ZISmhibk53YjNKMGN5QmlhVzVrYVc1bmMxeHVYSFFnS2lBeEtTQnJaWGtnYVhNZ2RHaGxJR1JoZEdGVWVYQmxYRzVjZENBcUlESXBJSFJvWlNCallYUmphR0ZzYkNCemVXMWliMndnWENJcVhDSWdZMkZ1SUdKbElIVnpaV1JjYmx4MElDb2dNeWtnYzJWc1pXTjBhVzl1SUhkcGJHd2djM1JoY25RZ2QybDBhQ0IwY21GdWMzQnZjblFnWkdGMFlWUjVjR1VnWVc1a0lGUklSVTRnWjI4Z2RHOGdYQ0lxWENJZ2FXWWdibVZsWkdWa1hHNWNkQ0FxTDF4dVhIUjBjbUZ1YzNCdmNuUnpJRDBnZTMwc1hHNWNibHgwTHk4Z1FYWnZhV1FnWTI5dGJXVnVkQzF3Y205c2IyY2dZMmhoY2lCelpYRjFaVzVqWlNBb0l6RXdNRGs0S1RzZ2JYVnpkQ0JoY0hCbFlYTmxJR3hwYm5RZ1lXNWtJR1YyWVdSbElHTnZiWEJ5WlhOemFXOXVYRzVjZEdGc2JGUjVjR1Z6SUQwZ1hDSXFMMXdpTG1OdmJtTmhkQ2dnWENJcVhDSWdLU3hjYmx4dVhIUXZMeUJFYjJOMWJXVnVkQ0JzYjJOaGRHbHZibHh1WEhSaGFtRjRURzlqWVhScGIyNGdQU0IzYVc1a2IzY3ViRzlqWVhScGIyNHVhSEpsWml4Y2JseHVYSFF2THlCVFpXZHRaVzUwSUd4dlkyRjBhVzl1SUdsdWRHOGdjR0Z5ZEhOY2JseDBZV3BoZUV4dlkxQmhjblJ6SUQwZ2NuVnliQzVsZUdWaktDQmhhbUY0VEc5allYUnBiMjR1ZEc5TWIzZGxja05oYzJVb0tTQXBJSHg4SUZ0ZE8xeHVYRzR2THlCQ1lYTmxJRndpWTI5dWMzUnlkV04wYjNKY0lpQm1iM0lnYWxGMVpYSjVMbUZxWVhoUWNtVm1hV3gwWlhJZ1lXNWtJR3BSZFdWeWVTNWhhbUY0VkhKaGJuTndiM0owWEc1bWRXNWpkR2x2YmlCaFpHUlViMUJ5WldacGJIUmxjbk5QY2xSeVlXNXpjRzl5ZEhNb0lITjBjblZqZEhWeVpTQXBJSHRjYmx4dVhIUXZMeUJrWVhSaFZIbHdaVVY0Y0hKbGMzTnBiMjRnYVhNZ2IzQjBhVzl1WVd3Z1lXNWtJR1JsWm1GMWJIUnpJSFJ2SUZ3aUtsd2lYRzVjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWkdGMFlWUjVjR1ZGZUhCeVpYTnphVzl1TENCbWRXNWpJQ2tnZTF4dVhHNWNkRngwYVdZZ0tDQjBlWEJsYjJZZ1pHRjBZVlI1Y0dWRmVIQnlaWE56YVc5dUlDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFpuVnVZeUE5SUdSaGRHRlVlWEJsUlhod2NtVnpjMmx2Ymp0Y2JseDBYSFJjZEdSaGRHRlVlWEJsUlhod2NtVnpjMmx2YmlBOUlGd2lLbHdpTzF4dVhIUmNkSDFjYmx4dVhIUmNkSFpoY2lCa1lYUmhWSGx3WlN4Y2JseDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBaR0YwWVZSNWNHVnpJRDBnWkdGMFlWUjVjR1ZGZUhCeVpYTnphVzl1TG5SdlRHOTNaWEpEWVhObEtDa3ViV0YwWTJnb0lISnViM1IzYUdsMFpTQXBJSHg4SUZ0ZE8xeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnWm5WdVl5QXBJQ2tnZTF4dVhIUmNkRngwTHk4Z1JtOXlJR1ZoWTJnZ1pHRjBZVlI1Y0dVZ2FXNGdkR2hsSUdSaGRHRlVlWEJsUlhod2NtVnpjMmx2Ymx4dVhIUmNkRngwZDJocGJHVWdLQ0FvWkdGMFlWUjVjR1VnUFNCa1lYUmhWSGx3WlhOYmFTc3JYU2tnS1NCN1hHNWNkRngwWEhSY2RDOHZJRkJ5WlhCbGJtUWdhV1lnY21WeGRXVnpkR1ZrWEc1Y2RGeDBYSFJjZEdsbUlDZ2daR0YwWVZSNWNHVmJNRjBnUFQwOUlGd2lLMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR1JoZEdGVWVYQmxJRDBnWkdGMFlWUjVjR1V1YzJ4cFkyVW9JREVnS1NCOGZDQmNJaXBjSWp0Y2JseDBYSFJjZEZ4MFhIUW9jM1J5ZFdOMGRYSmxXeUJrWVhSaFZIbHdaU0JkSUQwZ2MzUnlkV04wZFhKbFd5QmtZWFJoVkhsd1pTQmRJSHg4SUZ0ZEtTNTFibk5vYVdaMEtDQm1kVzVqSUNrN1hHNWNibHgwWEhSY2RGeDBMeThnVDNSb1pYSjNhWE5sSUdGd2NHVnVaRnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZENoemRISjFZM1IxY21WYklHUmhkR0ZVZVhCbElGMGdQU0J6ZEhKMVkzUjFjbVZiSUdSaGRHRlVlWEJsSUYwZ2ZId2dXMTBwTG5CMWMyZ29JR1oxYm1NZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlR0Y2JuMWNibHh1THk4Z1FtRnpaU0JwYm5Od1pXTjBhVzl1SUdaMWJtTjBhVzl1SUdadmNpQndjbVZtYVd4MFpYSnpJR0Z1WkNCMGNtRnVjM0J2Y25SelhHNW1kVzVqZEdsdmJpQnBibk53WldOMFVISmxabWxzZEdWeWMwOXlWSEpoYm5Od2IzSjBjeWdnYzNSeWRXTjBkWEpsTENCdmNIUnBiMjV6TENCdmNtbG5hVzVoYkU5d2RHbHZibk1zSUdweFdFaFNJQ2tnZTF4dVhHNWNkSFpoY2lCcGJuTndaV04wWldRZ1BTQjdmU3hjYmx4MFhIUnpaV1ZyYVc1blZISmhibk53YjNKMElEMGdLQ0J6ZEhKMVkzUjFjbVVnUFQwOUlIUnlZVzV6Y0c5eWRITWdLVHRjYmx4dVhIUm1kVzVqZEdsdmJpQnBibk53WldOMEtDQmtZWFJoVkhsd1pTQXBJSHRjYmx4MFhIUjJZWElnYzJWc1pXTjBaV1E3WEc1Y2RGeDBhVzV6Y0dWamRHVmtXeUJrWVhSaFZIbHdaU0JkSUQwZ2RISjFaVHRjYmx4MFhIUnFVWFZsY25rdVpXRmphQ2dnYzNSeWRXTjBkWEpsV3lCa1lYUmhWSGx3WlNCZElIeDhJRnRkTENCbWRXNWpkR2x2YmlnZ1h5d2djSEpsWm1sc2RHVnlUM0pHWV
14938dOMGIzSjVJQ2tnZTF4dVhIUmNkRngwZG1GeUlHUmhkR0ZVZVhCbFQzSlVjbUZ1YzNCdmNuUWdQU0J3Y21WbWFXeDBaWEpQY2taaFkzUnZjbmtvSUc5d2RHbHZibk1zSUc5eWFXZHBibUZzVDNCMGFXOXVjeXdnYW5GWVNGSWdLVHRjYmx4MFhIUmNkR2xtSUNnZ2RIbHdaVzltSUdSaGRHRlVlWEJsVDNKVWNtRnVjM0J2Y25RZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ0lYTmxaV3RwYm1kVWNtRnVjM0J2Y25RZ0ppWWdJV2x1YzNCbFkzUmxaRnNnWkdGMFlWUjVjR1ZQY2xSeVlXNXpjRzl5ZENCZElDa2dlMXh1WEhSY2RGeDBYSFJ2Y0hScGIyNXpMbVJoZEdGVWVYQmxjeTUxYm5Ob2FXWjBLQ0JrWVhSaFZIbHdaVTl5VkhKaGJuTndiM0owSUNrN1hHNWNkRngwWEhSY2RHbHVjM0JsWTNRb0lHUmhkR0ZVZVhCbFQzSlVjbUZ1YzNCdmNuUWdLVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2djMlZsYTJsdVoxUnlZVzV6Y0c5eWRDQXBJSHRjYmx4MFhIUmNkRngwY21WMGRYSnVJQ0VvSUhObGJHVmpkR1ZrSUQwZ1pHRjBZVlI1Y0dWUGNsUnlZVzV6Y0c5eWRDQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSY2RISmxkSFZ5YmlCelpXeGxZM1JsWkR0Y2JseDBmVnh1WEc1Y2RISmxkSFZ5YmlCcGJuTndaV04wS0NCdmNIUnBiMjV6TG1SaGRHRlVlWEJsYzFzZ01DQmRJQ2tnZkh3Z0lXbHVjM0JsWTNSbFpGc2dYQ0lxWENJZ1hTQW1KaUJwYm5Od1pXTjBLQ0JjSWlwY0lpQXBPMXh1ZlZ4dVhHNHZMeUJCSUhOd1pXTnBZV3dnWlhoMFpXNWtJR1p2Y2lCaGFtRjRJRzl3ZEdsdmJuTmNiaTh2SUhSb1lYUWdkR0ZyWlhNZ1hDSm1iR0YwWENJZ2IzQjBhVzl1Y3lBb2JtOTBJSFJ2SUdKbElHUmxaWEFnWlhoMFpXNWtaV1FwWEc0dkx5QkdhWGhsY3lBak9UZzROMXh1Wm5WdVkzUnBiMjRnWVdwaGVFVjRkR1Z1WkNnZ2RHRnlaMlYwTENCemNtTWdLU0I3WEc1Y2RIWmhjaUJyWlhrc0lHUmxaWEFzWEc1Y2RGeDBabXhoZEU5d2RHbHZibk1nUFNCcVVYVmxjbmt1WVdwaGVGTmxkSFJwYm1kekxtWnNZWFJQY0hScGIyNXpJSHg4SUh0OU8xeHVYRzVjZEdadmNpQW9JR3RsZVNCcGJpQnpjbU1nS1NCN1hHNWNkRngwYVdZZ0tDQnpjbU5iSUd0bGVTQmRJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUW9JR1pzWVhSUGNIUnBiMjV6V3lCclpYa2dYU0EvSUhSaGNtZGxkQ0E2SUNnZ1pHVmxjQ0I4ZkNBb1pHVmxjQ0E5SUh0OUtTQXBJQ2xiSUd0bGVTQmRJRDBnYzNKald5QnJaWGtnWFR0Y2JseDBYSFI5WEc1Y2RIMWNibHgwYVdZZ0tDQmtaV1Z3SUNrZ2UxeHVYSFJjZEdwUmRXVnllUzVsZUhSbGJtUW9JSFJ5ZFdVc0lIUmhjbWRsZEN3Z1pHVmxjQ0FwTzF4dVhIUjlYRzVjYmx4MGNtVjBkWEp1SUhSaGNtZGxkRHRjYm4xY2JseHVMeW9nU0dGdVpHeGxjeUJ5WlhOd2IyNXpaWE1nZEc4Z1lXNGdZV3BoZUNCeVpYRjFaWE4wT2x4dUlDb2dMU0JtYVc1a2N5QjBhR1VnY21sbmFIUWdaR0YwWVZSNWNHVWdLRzFsWkdsaGRHVnpJR0psZEhkbFpXNGdZMjl1ZEdWdWRDMTBlWEJsSUdGdVpDQmxlSEJsWTNSbFpDQmtZWFJoVkhsd1pTbGNiaUFxSUMwZ2NtVjBkWEp1Y3lCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCeVpYTndiMjV6WlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJoYW1GNFNHRnVaR3hsVW1WemNHOXVjMlZ6S0NCekxDQnFjVmhJVWl3Z2NtVnpjRzl1YzJWeklDa2dlMXh1WEc1Y2RIWmhjaUJqZEN3Z2RIbHdaU3dnWm1sdVlXeEVZWFJoVkhsd1pTd2dabWx5YzNSRVlYUmhWSGx3WlN4Y2JseDBYSFJqYjI1MFpXNTBjeUE5SUhNdVkyOXVkR1Z1ZEhNc1hHNWNkRngwWkdGMFlWUjVjR1Z6SUQwZ2N5NWtZWFJoVkhsd1pYTTdYRzVjYmx4MEx5OGdVbVZ0YjNabElHRjFkRzhnWkdGMFlWUjVjR1VnWVc1a0lHZGxkQ0JqYjI1MFpXNTBMWFI1Y0dVZ2FXNGdkR2hsSUhCeWIyTmxjM05jYmx4MGQyaHBiR1VnS0NCa1lYUmhWSGx3WlhOYklEQWdYU0E5UFQwZ1hDSXFYQ0lnS1NCN1hHNWNkRngwWkdGMFlWUjVjR1Z6TG5Ob2FXWjBLQ2s3WEc1Y2RGeDBhV1lnS0NCamRDQTlQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFkzUWdQU0J6TG0xcGJXVlVlWEJsSUh4OElHcHhXRWhTTG1kbGRGSmxjM0J2Ym5ObFNHVmhaR1Z5S0Z3aVEyOXVkR1Z1ZEMxVWVYQmxYQ0lwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEM4dklFTm9aV05ySUdsbUlIZGxKM0psSUdSbFlXeHBibWNnZDJsMGFDQmhJR3R1YjNkdUlHTnZiblJsYm5RdGRIbHdaVnh1WEhScFppQW9JR04wSUNrZ2UxeHVYSFJjZEdadmNpQW9JSFI1Y0dVZ2FXNGdZMjl1ZEdWdWRITWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHTnZiblJsYm5Seld5QjBlWEJsSUYwZ0ppWWdZMjl1ZEdWdWRITmJJSFI1Y0dVZ1hTNTBaWE4wS0NCamRDQXBJQ2tnZTF4dVhIUmNkRngwWEhSa1lYUmhWSGx3WlhNdWRXNXphR2xtZENnZ2RIbHdaU0FwTzF4dVhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFF2THlCRGFHVmpheUIwYnlCelpXVWdhV1lnZDJVZ2FHRjJaU0JoSUhKbGMzQnZibk5sSUdadmNpQjBhR1VnWlhod1pXTjBaV1FnWkdGMFlWUjVjR1ZjYmx4MGFXWWdLQ0JrWVhSaFZIbHdaWE5iSURBZ1hTQnBiaUJ5WlhOd2IyNXpaWE1nS1NCN1hHNWNkRngwWm1sdVlXeEVZWFJoVkhsd1pTQTlJR1JoZEdGVWVYQmxjMXNnTUNCZE8xeHVYSFI5SUdWc2MyVWdlMXh1WEhSY2RDOHZJRlJ5ZVNCamIyNTJaWEowYVdKc1pTQmtZWFJoVkhsd1pYTmNibHgwWEhSbWIzSWdLQ0IwZVhCbElHbHVJSEpsYzNCdmJuTmxjeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dJV1JoZEdGVWVYQmxjMXNnTUNCZElIeDhJSE11WTI5dWRtVnlkR1Z5YzFzZ2RIbHdaU0FySUZ3aUlGd2lJQ3NnWkdGMFlWUjVjR1Z6V3pCZElGMGdLU0I3WEc1Y2RGeDBYSFJjZEdacGJtRnNSR0YwWVZSNWNHVWdQU0IwZVhCbE8xeHVYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEgxY2JseDBYSFJjZEdsbUlDZ2dJV1pwY25OMFJHRjBZVlI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUmNkR1pwY25OMFJHRjBZVlI1Y0dVZ1BTQjBlWEJsTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MFhIUXZMeUJQY2lCcWRYTjBJSFZ6WlNCbWFYSnpkQ0J2Ym1WY2JseDBYSFJtYVc1aGJFUmhkR0ZVZVhCbElEMGdabWx1WVd4RVlYUmhWSGx3WlNCOGZDQm1hWEp6ZEVSaGRHRlVlWEJsTzF4dVhIUjlYRzVjYmx4MEx5OGdTV1lnZDJVZ1ptOTFibVFnWVNCa1lYUmhWSGx3WlZ4dVhIUXZMeUJYWlNCaFpHUWdkR2hsSUdSaGRHRlVlWEJsSUhSdklIUm9aU0JzYVhOMElHbG1JRzVsWldSbFpGeHVYSFF2THlCaGJtUWdjbVYwZFhKdUlIUm9aU0JqYjNKeVpYTndiMjVrYVc1bklISmxjM0J2Ym5ObFhHNWNkR2xtSUNnZ1ptbHVZV3hFWVhSaFZIbHdaU0FwSUh0Y2JseDBYSFJwWmlBb0lHWnBibUZzUkdGMFlWUjVjR1VnSVQwOUlHUmhkR0ZVZVhCbGMxc2dNQ0JkSUNrZ2UxeHVYSFJjZEZ4MFpHRjBZVlI1Y0dWekxuVnVjMmhwWm5Rb0lHWnBibUZzUkdGMFlWUjVjR1VnS1R0Y2JseDBYSFI5WEc1Y2RGeDBjbVYwZFhKdUlISmxjM0J2Ym5ObGMxc2dabWx1WVd4RVlYUmhWSGx3WlNCZE8xeHVYSFI5WEc1OVhHNWNiaThxSUVOb1lXbHVJR052Ym5abGNuTnBiMjV6SUdkcGRtVnVJSFJvWlNCeVpYRjFaWE4wSUdGdVpDQjBhR1VnYjNKcFoybHVZV3dnY21WemNHOXVjMlZjYmlBcUlFRnNjMjhnYzJWMGN5QjBhR1VnY21WemNHOXVjMlZZV0ZnZ1ptbGxiR1J6SUc5dUlIUm9aU0JxY1ZoSVVpQnBibk4wWVc1alpWeHVJQ292WEc1bWRXNWpkR2x2YmlCaGFtRjRRMjl1ZG1WeWRDZ2djeXdnY21WemNHOXVjMlVzSUdweFdFaFNMQ0JwYzFOMVkyTmxjM01nS1NCN1hHNWNkSFpoY2lCamIyNTJNaXdnWTNWeWNtVnVkQ3dnWTI5dWRpd2dkRzF3TENCd2NtVjJMRnh1WEhSY2RHTnZiblpsY25SbGNuTWdQU0I3ZlN4Y2JseDBYSFF2THlCWGIzSnJJSGRwZEdnZ1lTQmpiM0I1SUc5bUlHUmhkR0ZVZVhCbGN5QnBiaUJqWVhObElIZGxJRzVsWldRZ2RHOGdiVzlrYVdaNUlHbDBJR1p2Y2lCamIyNTJaWEp6YVc5dVhHNWNkRngwWkdGMFlWUjVjR1Z6SUQwZ2N5NWtZWFJoVkhsd1pYTXVjMnhwWTJVb0tUdGNibHh1WEhRdkx5QkRjbVZoZEdVZ1kyOXVkbVZ5ZEdWeWN5QnRZWEFnZDJsMGFDQnNiM2RsY21OaGMyVmtJR3RsZVhOY2JseDBhV1lnS0NCa1lYUmhWSGx3WlhOYklERWdYU0FwSUh0Y2JseDBYSFJtYjNJZ0tDQmpiMjUySUdsdUlITXVZMjl1ZG1WeWRHVnljeUFwSUh0Y2JseDBYSFJjZEdOdmJuWmxjblJsY25OYklHTnZibll1ZEc5TWIzZGxja05oYzJVb0tTQmRJRDBnY3k1amIyNTJaWEowWlhKeld5QmpiMjUySUYwN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MFkzVnljbVZ1ZENBOUlHUmhkR0ZVZVhCbGN5NXphR2xtZENncE8xeHVYRzVjZEM4dklFTnZiblpsY25RZ2RHOGdaV0ZqYUNCelpYRjFaVzUwYVdGc0lHUmhkR0ZVZVhCbFhHNWNkSGRvYVd4bElDZ2dZM1Z5Y21WdWRDQXBJSHRjYmx4dVhIUmNkR2xtSUNnZ2N5NXlaWE53YjI1elpVWnBaV3hrYzFzZ1kzVnljbVZ1ZENCZElDa2dlMXh1WEhSY2RGeDBhbkZZU0ZKYklITXVjbVZ6Y0c5dWMyVkdhV1ZzWkhOYklHT
14938jFjbkpsYm5RZ1hTQmRJRDBnY21WemNHOXVjMlU3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUVhCd2JIa2dkR2hsSUdSaGRHRkdhV3gwWlhJZ2FXWWdjSEp2ZG1sa1pXUmNibHgwWEhScFppQW9JQ0Z3Y21WMklDWW1JR2x6VTNWalkyVnpjeUFtSmlCekxtUmhkR0ZHYVd4MFpYSWdLU0I3WEc1Y2RGeDBYSFJ5WlhOd2IyNXpaU0E5SUhNdVpHRjBZVVpwYkhSbGNpZ2djbVZ6Y0c5dWMyVXNJSE11WkdGMFlWUjVjR1VnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ3Y21WMklEMGdZM1Z5Y21WdWREdGNibHgwWEhSamRYSnlaVzUwSUQwZ1pHRjBZVlI1Y0dWekxuTm9hV1owS0NrN1hHNWNibHgwWEhScFppQW9JR04xY25KbGJuUWdLU0I3WEc1Y2JseDBYSFF2THlCVWFHVnlaU2R6SUc5dWJIa2dkMjl5YXlCMGJ5QmtieUJwWmlCamRYSnlaVzUwSUdSaGRHRlVlWEJsSUdseklHNXZiaTFoZFhSdlhHNWNkRngwWEhScFppQW9JR04xY25KbGJuUWdQVDA5SUZ3aUtsd2lJQ2tnZTF4dVhHNWNkRngwWEhSY2RHTjFjbkpsYm5RZ1BTQndjbVYyTzF4dVhHNWNkRngwWEhRdkx5QkRiMjUyWlhKMElISmxjM0J2Ym5ObElHbG1JSEJ5WlhZZ1pHRjBZVlI1Y0dVZ2FYTWdibTl1TFdGMWRHOGdZVzVrSUdScFptWmxjbk1nWm5KdmJTQmpkWEp5Wlc1MFhHNWNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQndjbVYySUNFOVBTQmNJaXBjSWlBbUppQndjbVYySUNFOVBTQmpkWEp5Wlc1MElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklGTmxaV3NnWVNCa2FYSmxZM1FnWTI5dWRtVnlkR1Z5WEc1Y2RGeDBYSFJjZEdOdmJuWWdQU0JqYjI1MlpYSjBaWEp6V3lCd2NtVjJJQ3NnWENJZ1hDSWdLeUJqZFhKeVpXNTBJRjBnZkh3Z1kyOXVkbVZ5ZEdWeWMxc2dYQ0lxSUZ3aUlDc2dZM1Z5Y21WdWRDQmRPMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JRzV2Ym1VZ1ptOTFibVFzSUhObFpXc2dZU0J3WVdseVhHNWNkRngwWEhSY2RHbG1JQ2dnSVdOdmJuWWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFptOXlJQ2dnWTI5dWRqSWdhVzRnWTI5dWRtVnlkR1Z5Y3lBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTV1lnWTI5dWRqSWdiM1YwY0hWMGN5QmpkWEp5Wlc1MFhHNWNkRngwWEhSY2RGeDBYSFIwYlhBZ1BTQmpiMjUyTWk1emNHeHBkQ2dnWENJZ1hDSWdLVHRjYmx4MFhIUmNkRngwWEhSY2RHbG1JQ2dnZEcxd1d5QXhJRjBnUFQwOUlHTjFjbkpsYm5RZ0tTQjdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnU1dZZ2NISmxkaUJqWVc0Z1ltVWdZMjl1ZG1WeWRHVmtJSFJ2SUdGalkyVndkR1ZrSUdsdWNIVjBYRzVjZEZ4MFhIUmNkRngwWEhSY2RHTnZibllnUFNCamIyNTJaWEowWlhKeld5QndjbVYySUNzZ1hDSWdYQ0lnS3lCMGJYQmJJREFnWFNCZElIeDhYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBZMjl1ZG1WeWRHVnljMXNnWENJcUlGd2lJQ3NnZEcxd1d5QXdJRjBnWFR0Y2JseDBYSFJjZEZ4MFhIUmNkRngwYVdZZ0tDQmpiMjUySUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RDOHZJRU52Ym1SbGJuTmxJR1Z4ZFdsMllXeGxibU5sSUdOdmJuWmxjblJsY25OY2JseDBYSFJjZEZ4MFhIUmNkRngwWEhScFppQW9JR052Ym5ZZ1BUMDlJSFJ5ZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFJqYjI1MklEMGdZMjl1ZG1WeWRHVnljMXNnWTI5dWRqSWdYVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTd2dhVzV6WlhKMElIUm9aU0JwYm5SbGNtMWxaR2xoZEdVZ1pHRjBZVlI1Y0dWY2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQmpiMjUyWlhKMFpYSnpXeUJqYjI1Mk1pQmRJQ0U5UFNCMGNuVmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFkzVnljbVZ1ZENBOUlIUnRjRnNnTUNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBaR0YwWVZSNWNHVnpMblZ1YzJocFpuUW9JSFJ0Y0ZzZ01TQmRJQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdKeVpXRnJPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdRWEJ3YkhrZ1kyOXVkbVZ5ZEdWeUlDaHBaaUJ1YjNRZ1lXNGdaWEYxYVhaaGJHVnVZMlVwWEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMjl1ZGlBaFBUMGdkSEoxWlNBcElIdGNibHh1WEhSY2RGeDBYSFJjZEM4dklGVnViR1Z6Y3lCbGNuSnZjbk1nWVhKbElHRnNiRzkzWldRZ2RHOGdZblZpWW14bExDQmpZWFJqYUNCaGJtUWdjbVYwZFhKdUlIUm9aVzFjYmx4MFhIUmNkRngwWEhScFppQW9JR052Ym5ZZ0ppWWdjMXNnWENKMGFISnZkM05jSWlCZElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGNtVnpjRzl1YzJVZ1BTQmpiMjUyS0NCeVpYTndiMjV6WlNBcE8xeHVYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSMGNua2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWE53YjI1elpTQTlJR052Ym5Zb0lISmxjM0J2Ym5ObElDazdYRzVjZEZ4MFhIUmNkRngwWEhSOUlHTmhkR05vSUNnZ1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIc2djM1JoZEdVNklGd2ljR0Z5YzJWeVpYSnliM0pjSWl3Z1pYSnliM0k2SUdOdmJuWWdQeUJsSURvZ1hDSk9ieUJqYjI1MlpYSnphVzl1SUdaeWIyMGdYQ0lnS3lCd2NtVjJJQ3NnWENJZ2RHOGdYQ0lnS3lCamRYSnlaVzUwSUgwN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlIc2djM1JoZEdVNklGd2ljM1ZqWTJWemMxd2lMQ0JrWVhSaE9pQnlaWE53YjI1elpTQjlPMXh1ZlZ4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseHVYSFF2THlCRGIzVnVkR1Z5SUdadmNpQm9iMnhrYVc1bklIUm9aU0J1ZFcxaVpYSWdiMllnWVdOMGFYWmxJSEYxWlhKcFpYTmNibHgwWVdOMGFYWmxPaUF3TEZ4dVhHNWNkQzh2SUV4aGMzUXRUVzlrYVdacFpXUWdhR1ZoWkdWeUlHTmhZMmhsSUdadmNpQnVaWGgwSUhKbGNYVmxjM1JjYmx4MGJHRnpkRTF2WkdsbWFXVmtPaUI3ZlN4Y2JseDBaWFJoWnpvZ2UzMHNYRzVjYmx4MFlXcGhlRk5sZEhScGJtZHpPaUI3WEc1Y2RGeDBkWEpzT2lCaGFtRjRURzlqWVhScGIyNHNYRzVjZEZ4MGRIbHdaVG9nWENKSFJWUmNJaXhjYmx4MFhIUnBjMHh2WTJGc09pQnliRzlqWVd4UWNtOTBiMk52YkM1MFpYTjBLQ0JoYW1GNFRHOWpVR0Z5ZEhOYklERWdYU0FwTEZ4dVhIUmNkR2RzYjJKaGJEb2dkSEoxWlN4Y2JseDBYSFJ3Y205alpYTnpSR0YwWVRvZ2RISjFaU3hjYmx4MFhIUmhjM2x1WXpvZ2RISjFaU3hjYmx4MFhIUmpiMjUwWlc1MFZIbHdaVG9nWENKaGNIQnNhV05oZEdsdmJpOTRMWGQzZHkxbWIzSnRMWFZ5YkdWdVkyOWtaV1E3SUdOb1lYSnpaWFE5VlZSR0xUaGNJaXhjYmx4MFhIUXZLbHh1WEhSY2RIUnBiV1Z2ZFhRNklEQXNYRzVjZEZ4MFpHRjBZVG9nYm5Wc2JDeGNibHgwWEhSa1lYUmhWSGx3WlRvZ2JuVnNiQ3hjYmx4MFhIUjFjMlZ5Ym1GdFpUb2diblZzYkN4Y2JseDBYSFJ3WVhOemQyOXlaRG9nYm5Wc2JDeGNibHgwWEhSallXTm9aVG9nYm5Wc2JDeGNibHgwWEhSMGFISnZkM002SUdaaGJITmxMRnh1WEhSY2RIUnlZV1JwZEdsdmJtRnNPaUJtWVd4elpTeGNibHgwWEhSb1pXRmtaWEp6T2lCN2ZTeGNibHgwWEhRcUwxeHVYRzVjZEZ4MFlXTmpaWEIwY3pvZ2UxeHVYSFJjZEZ4MFhDSXFYQ0k2SUdGc2JGUjVjR1Z6TEZ4dVhIUmNkRngwZEdWNGREb2dYQ0owWlho
14938MEwzQnNZV2x1WENJc1hHNWNkRngwWEhSb2RHMXNPaUJjSW5SbGVIUXZhSFJ0YkZ3aUxGeHVYSFJjZEZ4MGVHMXNPaUJjSW1Gd2NHeHBZMkYwYVc5dUwzaHRiQ3dnZEdWNGRDOTRiV3hjSWl4Y2JseDBYSFJjZEdwemIyNDZJRndpWVhCd2JHbGpZWFJwYjI0dmFuTnZiaXdnZEdWNGRDOXFZWFpoYzJOeWFYQjBYQ0pjYmx4MFhIUjlMRnh1WEc1Y2RGeDBZMjl1ZEdWdWRITTZJSHRjYmx4MFhIUmNkSGh0YkRvZ0wzaHRiQzhzWEc1Y2RGeDBYSFJvZEcxc09pQXZhSFJ0YkM4c1hHNWNkRngwWEhScWMyOXVPaUF2YW5OdmJpOWNibHgwWEhSOUxGeHVYRzVjZEZ4MGNtVnpjRzl1YzJWR2FXVnNaSE02SUh0Y2JseDBYSFJjZEhodGJEb2dYQ0p5WlhOd2IyNXpaVmhOVEZ3aUxGeHVYSFJjZEZ4MGRHVjRkRG9nWENKeVpYTndiMjV6WlZSbGVIUmNJaXhjYmx4MFhIUmNkR3B6YjI0NklGd2ljbVZ6Y0c5dWMyVktVMDlPWENKY2JseDBYSFI5TEZ4dVhHNWNkRngwTHk4Z1JHRjBZU0JqYjI1MlpYSjBaWEp6WEc1Y2RGeDBMeThnUzJWNWN5QnpaWEJoY21GMFpTQnpiM1Z5WTJVZ0tHOXlJR05oZEdOb1lXeHNJRndpS2x3aUtTQmhibVFnWkdWemRHbHVZWFJwYjI0Z2RIbHdaWE1nZDJsMGFDQmhJSE5wYm1kc1pTQnpjR0ZqWlZ4dVhIUmNkR052Ym5abGNuUmxjbk02SUh0Y2JseHVYSFJjZEZ4MEx5OGdRMjl1ZG1WeWRDQmhibmwwYUdsdVp5QjBieUIwWlhoMFhHNWNkRngwWEhSY0lpb2dkR1Y0ZEZ3aU9pQlRkSEpwYm1jc1hHNWNibHgwWEhSY2RDOHZJRlJsZUhRZ2RHOGdhSFJ0YkNBb2RISjFaU0E5SUc1dklIUnlZVzV6Wm05eWJXRjBhVzl1S1Z4dVhIUmNkRngwWENKMFpYaDBJR2gwYld4Y0lqb2dkSEoxWlN4Y2JseHVYSFJjZEZ4MEx5OGdSWFpoYkhWaGRHVWdkR1Y0ZENCaGN5QmhJR3B6YjI0Z1pYaHdjbVZ6YzJsdmJseHVYSFJjZEZ4MFhDSjBaWGgwSUdwemIyNWNJam9nYWxGMVpYSjVMbkJoY25ObFNsTlBUaXhjYmx4dVhIUmNkRngwTHk4Z1VHRnljMlVnZEdWNGRDQmhjeUI0Yld4Y2JseDBYSFJjZEZ3aWRHVjRkQ0I0Yld4Y0lqb2dhbEYxWlhKNUxuQmhjbk5sV0UxTVhHNWNkRngwZlN4Y2JseHVYSFJjZEM4dklFWnZjaUJ2Y0hScGIyNXpJSFJvWVhRZ2MyaHZkV3hrYmlkMElHSmxJR1JsWlhBZ1pYaDBaVzVrWldRNlhHNWNkRngwTHk4Z2VXOTFJR05oYmlCaFpHUWdlVzkxY2lCdmQyNGdZM1Z6ZEc5dElHOXdkR2x2Ym5NZ2FHVnlaU0JwWmx4dVhIUmNkQzh2SUdGdVpDQjNhR1Z1SUhsdmRTQmpjbVZoZEdVZ2IyNWxJSFJvWVhRZ2MyaHZkV3hrYmlkMElHSmxYRzVjZEZ4MEx5OGdaR1ZsY0NCbGVIUmxibVJsWkNBb2MyVmxJR0ZxWVhoRmVIUmxibVFwWEc1Y2RGeDBabXhoZEU5d2RHbHZibk02SUh0Y2JseDBYSFJjZEhWeWJEb2dkSEoxWlN4Y2JseDBYSFJjZEdOdmJuUmxlSFE2SUhSeWRXVmNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBMeThnUTNKbFlYUmxjeUJoSUdaMWJHd2dabXhsWkdkbFpDQnpaWFIwYVc1bmN5QnZZbXBsWTNRZ2FXNTBieUIwWVhKblpYUmNibHgwTHk4Z2QybDBhQ0JpYjNSb0lHRnFZWGhUWlhSMGFXNW5jeUJoYm1RZ2MyVjBkR2x1WjNNZ1ptbGxiR1J6TGx4dVhIUXZMeUJKWmlCMFlYSm5aWFFnYVhNZ2IyMXBkSFJsWkN3Z2QzSnBkR1Z6SUdsdWRHOGdZV3BoZUZObGRIUnBibWR6TGx4dVhIUmhhbUY0VTJWMGRYQTZJR1oxYm1OMGFXOXVLQ0IwWVhKblpYUXNJSE5sZEhScGJtZHpJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnpaWFIwYVc1bmN5QS9YRzVjYmx4MFhIUmNkQzh2SUVKMWFXeGthVzVuSUdFZ2MyVjBkR2x1WjNNZ2IySnFaV04wWEc1Y2RGeDBYSFJoYW1GNFJYaDBaVzVrS0NCaGFtRjRSWGgwWlc1a0tDQjBZWEpuWlhRc0lHcFJkV1Z5ZVM1aGFtRjRVMlYwZEdsdVozTWdLU3dnYzJWMGRHbHVaM01nS1NBNlhHNWNibHgwWEhSY2RDOHZJRVY0ZEdWdVpHbHVaeUJoYW1GNFUyVjBkR2x1WjNOY2JseDBYSFJjZEdGcVlYaEZlSFJsYm1Rb0lHcFJkV1Z5ZVM1aGFtRjRVMlYwZEdsdVozTXNJSFJoY21kbGRDQXBPMXh1WEhSOUxGeHVYRzVjZEdGcVlYaFFjbVZtYVd4MFpYSTZJR0ZrWkZSdlVISmxabWxzZEdWeWMwOXlWSEpoYm5Od2IzSjBjeWdnY0hKbFptbHNkR1Z5Y3lBcExGeHVYSFJoYW1GNFZISmhibk53YjNKME9pQmhaR1JVYjFCeVpXWnBiSFJsY25OUGNsUnlZVzV6Y0c5eWRITW9JSFJ5WVc1emNHOXlkSE1nS1N4Y2JseHVYSFF2THlCTllXbHVJRzFsZEdodlpGeHVYSFJoYW1GNE9pQm1kVzVqZEdsdmJpZ2dkWEpzTENCdmNIUnBiMjV6SUNrZ2UxeHVYRzVjZEZ4MEx5OGdTV1lnZFhKc0lHbHpJR0Z1SUc5aWFtVmpkQ3dnYzJsdGRXeGhkR1VnY0hKbExURXVOU0J6YVdkdVlYUjFjbVZjYmx4MFhIUnBaaUFvSUhSNWNHVnZaaUIxY213Z1BUMDlJRndpYjJKcVpXTjBYQ0lnS1NCN1hHNWNkRngwWEhSdmNIUnBiMjV6SUQwZ2RYSnNPMXh1WEhSY2RGeDBkWEpzSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFWnZjbU5sSUc5d2RHbHZibk1nZEc4Z1ltVWdZVzRnYjJKcVpXTjBYRzVjZEZ4MGIzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NZ2ZId2dlMzA3WEc1Y2JseDBYSFIyWVhJZ2RISmhibk53YjNKMExGeHVYSFJjZEZ4MEx5OGdWVkpNSUhkcGRHaHZkWFFnWVc1MGFTMWpZV05vWlNCd1lYSmhiVnh1WEhSY2RGeDBZMkZqYUdWVlVrd3NYRzVjZEZ4MFhIUXZMeUJTWlhOd2IyNXpaU0JvWldGa1pYSnpYRzVjZEZ4MFhIUnlaWE53YjI1elpVaGxZV1JsY25OVGRISnBibWNzWEc1Y2RGeDBYSFJ5WlhOd2IyNXpaVWhsWVdSbGNuTXNYRzVjZEZ4MFhIUXZMeUIwYVcxbGIzVjBJR2hoYm1Sc1pWeHVYSFJjZEZ4MGRHbHRaVzkxZEZScGJXVnlMRnh1WEhSY2RGeDBMeThnUTNKdmMzTXRaRzl0WVdsdUlHUmxkR1ZqZEdsdmJpQjJZWEp6WEc1Y2RGeDBYSFJ3WVhKMGN5eGNibHgwWEhSY2RDOHZJRlJ2SUd0dWIzY2dhV1lnWjJ4dlltRnNJR1YyWlc1MGN5QmhjbVVnZEc4Z1ltVWdaR2x6Y0dGMFkyaGxaRnh1WEhSY2RGeDBabWx5WlVkc2IySmhiSE1zWEc1Y2RGeDBYSFF2THlCTWIyOXdJSFpoY21saFlteGxYRzVjZEZ4MFhIUnBMRnh1WEhSY2RGeDBMeThnUTNKbFlYUmxJSFJvWlNCbWFXNWhiQ0J2Y0hScGIyNXpJRzlpYW1WamRGeHVYSFJjZEZ4MGN5QTlJR3BSZFdWeWVTNWhhbUY0VTJWMGRYQW9JSHQ5TENCdmNIUnBiMjV6SUNrc1hHNWNkRngwWEhRdkx5QkRZV3hzWW1GamEzTWdZMjl1ZEdWNGRGeHVYSFJjZEZ4MFkyRnNiR0poWTJ0RGIyNTBaWGgwSUQwZ2N5NWpiMjUwWlhoMElIeDhJSE1zWEc1Y2RGeDBYSFF2THlCRGIyNTBaWGgwSUdadmNpQm5iRzlpWVd3Z1pYWmxiblJ6SUdseklHTmhiR3hpWVdOclEyOXVkR1Y0ZENCcFppQnBkQ0JwY3lCaElFUlBUU0J1YjJSbElHOXlJR3BSZFdWeWVTQmpiMnhzWldOMGFXOXVYRzVjZEZ4MFhIUm5iRzlpWVd4RmRtVnVkRU52Ym5SbGVIUWdQU0J6TG1OdmJuUmxlSFFnSmlZZ0tDQmpZV3hzWW1GamEwTnZiblJsZUhRdWJtOWtaVlI1Y0dVZ2ZId2dZMkZzYkdKaFkydERiMjUwWlhoMExtcHhkV1Z5ZVNBcElEOWNibHgwWEhSY2RGeDBhbEYxWlhKNUtDQmpZV3hzWW1GamEwTnZiblJsZUhRZ0tTQTZYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEN4Y2JseDBYSFJjZEM4dklFUmxabVZ5Y21Wa2MxeHVYSFJjZEZ4MFpHVm1aWEp5WldRZ1BTQnFVWFZsY25rdVJHVm1aWEp5WldRb0tTeGNibHgwWEhSY2RHTnZiWEJzWlhSbFJHVm1aWEp5WldRZ1BTQnFVWFZsY25rdVEyRnNiR0poWTJ0ektGd2liMjVqWlNCdFpXMXZjbmxjSWlrc1hHNWNkRngwWEhRdkx5QlRkR0YwZFhNdFpHVndaVzVrWlc1MElHTmhiR3hpWVdOcmMxeHVYSFJjZEZ4MGMzUmhkSFZ6UTI5a1pTQTlJSE11YzNSaGRIVnpRMjlrWlNCOGZDQjdmU3hjYmx4MFhIUmNkQzh2SUVobFlXUmxjbk1nS0hSb1pYa2dZWEpsSUhObGJuUWdZV3hzSUdGMElHOXVZMlVwWEc1Y2RGeDBYSFJ5WlhGMVpYTjBTR1ZoWkdWeWN5QTlJSHQ5TEZ4dVhIUmNkRngwY21WeGRXVnpkRWhsWVdSbGNuTk9ZVzFsY3lBOUlIdDlMRnh1WEhSY2RGeDBMeThnVkdobElHcHhXRWhTSUhOMFlYUmxYRzVjZEZ4MFhIUnpkR0YwWlNBOUlEQXNYRzVjZEZ4MFhIUXZMeUJFWldaaGRXeDBJR0ZpYjNKMElHMWxjM05oWjJWY2JseDBYSFJjZEhOMGNrRmliM0owSUQwZ1hDSmpZVzVqWld4bFpGd2lMRnh1WEhSY2RGeDBMeThnUm1GclpTQjRhSEpjYmx4MFhIUmNkR3B4V0VoU0lEMGdlMXh1WEhSY2RGeDBYSFJ5WldGa2VWTjBZWFJsT2lBd0xGeHVYRzVjZEZ4MFhIUmNkQzh2SUVKMWFXeGtje
14938UJvWldGa1pYSnpJR2hoYzJoMFlXSnNaU0JwWmlCdVpXVmtaV1JjYmx4MFhIUmNkRngwWjJWMFVtVnpjRzl1YzJWSVpXRmtaWEk2SUdaMWJtTjBhVzl1S0NCclpYa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRtRnlJRzFoZEdOb08xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2MzUmhkR1VnUFQwOUlESWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUNGeVpYTndiMjV6WlVobFlXUmxjbk1nS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEhKbGMzQnZibk5sU0dWaFpHVnljeUE5SUh0OU8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSM2FHbHNaU0FvSUNodFlYUmphQ0E5SUhKb1pXRmtaWEp6TG1WNFpXTW9JSEpsYzNCdmJuTmxTR1ZoWkdWeWMxTjBjbWx1WnlBcEtTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJ5WlhOd2IyNXpaVWhsWVdSbGNuTmJJRzFoZEdOb1d6RmRMblJ2VEc5M1pYSkRZWE5sS0NrZ1hTQTlJRzFoZEdOb1d5QXlJRjA3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJjZEcxaGRHTm9JRDBnY21WemNHOXVjMlZJWldGa1pYSnpXeUJyWlhrdWRHOU1iM2RsY2tOaGMyVW9LU0JkTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdiV0YwWTJnZ1BUMGdiblZzYkNBL0lHNTFiR3dnT2lCdFlYUmphRHRjYmx4MFhIUmNkRngwZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJTWVhjZ2MzUnlhVzVuWEc1Y2RGeDBYSFJjZEdkbGRFRnNiRkpsYzNCdmJuTmxTR1ZoWkdWeWN6b2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhOMFlYUmxJRDA5UFNBeUlEOGdjbVZ6Y0c5dWMyVklaV0ZrWlhKelUzUnlhVzVuSURvZ2JuVnNiRHRjYmx4MFhIUmNkRngwZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJEWVdOb1pYTWdkR2hsSUdobFlXUmxjbHh1WEhSY2RGeDBYSFJ6WlhSU1pYRjFaWE4wU0dWaFpHVnlPaUJtZFc1amRHbHZiaWdnYm1GdFpTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHeHVZVzFsSUQwZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ0lYTjBZWFJsSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwYm1GdFpTQTlJSEpsY1hWbGMzUklaV0ZrWlhKelRtRnRaWE5iSUd4dVlXMWxJRjBnUFNCeVpYRjFaWE4wU0dWaFpHVnljMDVoYldWeld5QnNibUZ0WlNCZElIeDhJRzVoYldVN1hHNWNkRngwWEhSY2RGeDBYSFJ5WlhGMVpYTjBTR1ZoWkdWeWMxc2dibUZ0WlNCZElEMGdkbUZzZFdVN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJjZEM4dklFOTJaWEp5YVdSbGN5QnlaWE53YjI1elpTQmpiMjUwWlc1MExYUjVjR1VnYUdWaFpHVnlYRzVjZEZ4MFhIUmNkRzkyWlhKeWFXUmxUV2x0WlZSNWNHVTZJR1oxYm1OMGFXOXVLQ0IwZVhCbElDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dJWE4wWVhSbElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGN5NXRhVzFsVkhsd1pTQTlJSFI1Y0dVN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJjZEM4dklGTjBZWFIxY3kxa1pYQmxibVJsYm5RZ1kyRnNiR0poWTJ0elhHNWNkRngwWEhSY2RITjBZWFIxYzBOdlpHVTZJR1oxYm1OMGFXOXVLQ0J0WVhBZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHTnZaR1U3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0J0WVhBZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JSE4wWVhSbElEd2dNaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWm05eUlDZ2dZMjlrWlNCcGJpQnRZWEFnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MEx5OGdUR0Y2ZVMxaFpHUWdkR2hsSUc1bGR5QmpZV3hzWW1GamF5QnBiaUJoSUhkaGVTQjBhR0YwSUhCeVpYTmxjblpsY3lCdmJHUWdiMjVsYzF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhOMFlYUjFjME52WkdWYklHTnZaR1VnWFNBOUlGc2djM1JoZEhWelEyOWtaVnNnWTI5a1pTQmRMQ0J0WVhCYklHTnZaR1VnWFNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJGZUdWamRYUmxJSFJvWlNCaGNIQnliM0J5YVdGMFpTQmpZV3hzWW1GamEzTmNibHgwWEhSY2RGeDBYSFJjZEZ4MGFuRllTRkl1WVd4M1lYbHpLQ0J0WVhCYklHcHhXRWhTTG5OMFlYUjFjeUJkSUNrN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQjBhR2x6TzF4dVhIUmNkRngwWEhSOUxGeHVYRzVjZEZ4MFhIUmNkQzh2SUVOaGJtTmxiQ0IwYUdVZ2NtVnhkV1Z6ZEZ4dVhIUmNkRngwWEhSaFltOXlkRG9nWm5WdVkzUnBiMjRvSUhOMFlYUjFjMVJsZUhRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHWnBibUZzVkdWNGRDQTlJSE4wWVhSMWMxUmxlSFFnZkh3Z2MzUnlRV0p2Y25RN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NCMGNtRnVjM0J2Y25RZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSMGNtRnVjM0J2Y25RdVlXSnZjblFvSUdacGJtRnNWR1Y0ZENBcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSa2IyNWxLQ0F3TENCbWFXNWhiRlJsZUhRZ0tUdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHh1WEhSY2RDOHZJRUYwZEdGamFDQmtaV1psY25KbFpITmNibHgwWEhSa1pXWmxjbkpsWkM1d2NtOXRhWE5sS0NCcWNWaElVaUFwTG1OdmJYQnNaWFJsSUQwZ1kyOXRjR3hsZEdWRVpXWmxjbkpsWkM1aFpHUTdYRzVjZEZ4MGFuRllTRkl1YzNWalkyVnpjeUE5SUdweFdFaFNMbVJ2Ym1VN1hHNWNkRngwYW5GWVNGSXVaWEp5YjNJZ1BTQnFjVmhJVWk1bVlXbHNPMXh1WEc1Y2RGeDBMeThnVW1WdGIzWmxJR2hoYzJnZ1kyaGhjbUZqZEdWeUlDZ2pOelV6TVRvZ1lXNWtJSE4wY21sdVp5QndjbTl0YjNScGIyNHBYRzVjZEZ4MEx5OGdRV1JrSUhCeWIzUnZZMjlzSUdsbUlHNXZkQ0J3Y205MmFXUmxaQ0FvY0hKbFptbHNkR1Z5Y3lCdGFXZG9kQ0JsZUhCbFkzUWdhWFFwWEc1Y2RGeDBMeThnU0dGdVpHeGxJR1poYkhONUlIVnliQ0JwYmlCMGFHVWdjMlYwZEdsdVozTWdiMkpxWldOMElDZ2pNVEF3T1RNNklHTnZibk5wYzNSbGJtTjVJSGRwZEdnZ2IyeGtJSE5wWjI1aGRIVnlaU2xjYmx4MFhIUXZMeUJYWlNCaGJITnZJSFZ6WlNCMGFHVWdkWEpzSUhCaGNtRnRaWFJsY2lCcFppQmhkbUZwYkdGaWJHVmNibHgwWEhSekxuVnliQ0E5SUNnZ0tDQjFjbXdnZkh3Z2N5NTFjbXdnZkh3Z1lXcGhlRXh2WTJGMGFXOXVJQ2tnS3lCY0lsd2lJQ2t1Y21Wd2JHRmpaU2dnY21oaGMyZ3NJRndpWENJZ0tWeHVYSFJjZEZ4MExuSmxjR3hoWTJVb0lISndjbTkwYjJOdmJDd2dZV3BoZUV4dlkxQmhjblJ6V3lBeElGMGdLeUJjSWk4dlhDSWdLVHRjYmx4dVhIUmNkQzh2SUVGc2FXRnpJRzFsZEdodlpDQnZjSFJwYjI0Z2RHOGdkSGx3WlNCaGN5QndaWElnZEdsamEyVjBJQ014TWpBd05GeHVYSFJjZEhNdWRIbHdaU0E5SUc5d2RHbHZibk11YldWMGFHOWtJSHg4SUc5d2RHbHZibk11ZEhsd1pTQjhmQ0J6TG0xbGRHaHZaQ0I4ZkNCekxuUjVjR1U3WEc1Y2JseDBYSFF2THlCRmVIUnlZV04wSUdSaGRHRlVlWEJsY3lCc2FYTjBYRzVjZEZ4MGN5NWtZWFJoVkhsd1pYTWdQU0JxVVhWbGNua3VkSEpwYlNnZ2N5NWtZWFJoVkhsd1pTQjhmQ0JjSWlwY0lpQXBMblJ2VEc5M1pYSkRZWE5sS0NrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEc1Y2RGeDBMeThnUVNCamNtOXpjeTFrYjIxaGFXNGdjbVZ4ZFdWemRDQnBjeUJwYmlCdmNtUmxjaUIzYUdWdUlIZGxJR2hoZG1VZ1lTQndjbTkwYjJOdmJEcG9iM04wT25CdmNuUWdiV2x6YldGMFkyaGNibHgwWEhScFppQW9JSE11WTNKdmMzTkViMjFoYVc0Z1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RIQmhjblJ6SUQwZ2NuVnl
14938iQzVsZUdWaktDQnpMblZ5YkM1MGIweHZkMlZ5UTJGelpTZ3BJQ2s3WEc1Y2RGeDBYSFJ6TG1OeWIzTnpSRzl0WVdsdUlEMGdJU0VvSUhCaGNuUnpJQ1ltWEc1Y2RGeDBYSFJjZENnZ2NHRnlkSE5iSURFZ1hTQWhQVDBnWVdwaGVFeHZZMUJoY25Seld5QXhJRjBnZkh3Z2NHRnlkSE5iSURJZ1hTQWhQVDBnWVdwaGVFeHZZMUJoY25Seld5QXlJRjBnZkh4Y2JseDBYSFJjZEZ4MFhIUW9JSEJoY25Seld5QXpJRjBnZkh3Z0tDQndZWEowYzFzZ01TQmRJRDA5UFNCY0ltaDBkSEE2WENJZ1B5QmNJamd3WENJZ09pQmNJalEwTTF3aUlDa2dLU0FoUFQxY2JseDBYSFJjZEZ4MFhIUmNkQ2dnWVdwaGVFeHZZMUJoY25Seld5QXpJRjBnZkh3Z0tDQmhhbUY0VEc5alVHRnlkSE5iSURFZ1hTQTlQVDBnWENKb2RIUndPbHdpSUQ4Z1hDSTRNRndpSURvZ1hDSTBORE5jSWlBcElDa2dLVnh1WEhSY2RGeDBLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEYjI1MlpYSjBJR1JoZEdFZ2FXWWdibTkwSUdGc2NtVmhaSGtnWVNCemRISnBibWRjYmx4MFhIUnBaaUFvSUhNdVpHRjBZU0FtSmlCekxuQnliMk5sYzNORVlYUmhJQ1ltSUhSNWNHVnZaaUJ6TG1SaGRHRWdJVDA5SUZ3aWMzUnlhVzVuWENJZ0tTQjdYRzVjZEZ4MFhIUnpMbVJoZEdFZ1BTQnFVWFZsY25rdWNHRnlZVzBvSUhNdVpHRjBZU3dnY3k1MGNtRmthWFJwYjI1aGJDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZ3Y0d4NUlIQnlaV1pwYkhSbGNuTmNibHgwWEhScGJuTndaV04wVUhKbFptbHNkR1Z5YzA5eVZISmhibk53YjNKMGN5Z2djSEpsWm1sc2RHVnljeXdnY3l3Z2IzQjBhVzl1Y3l3Z2FuRllTRklnS1R0Y2JseHVYSFJjZEM4dklFbG1JSEpsY1hWbGMzUWdkMkZ6SUdGaWIzSjBaV1FnYVc1emFXUmxJR0VnY0hKbFptbHNkR1Z5TENCemRHOXdJSFJvWlhKbFhHNWNkRngwYVdZZ0tDQnpkR0YwWlNBOVBUMGdNaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJxY1ZoSVVqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QlhaU0JqWVc0Z1ptbHlaU0JuYkc5aVlXd2daWFpsYm5SeklHRnpJRzltSUc1dmR5QnBaaUJoYzJ0bFpDQjBiMXh1WEhSY2RDOHZJRVJ2YmlkMElHWnBjbVVnWlhabGJuUnpJR2xtSUdwUmRXVnllUzVsZG1WdWRDQnBjeUIxYm1SbFptbHVaV1FnYVc0Z1lXNGdRVTFFTFhWellXZGxJSE5qWlc1aGNtbHZJQ2dqTVRVeE1UZ3BYRzVjZEZ4MFptbHlaVWRzYjJKaGJITWdQU0JxVVhWbGNua3VaWFpsYm5RZ0ppWWdjeTVuYkc5aVlXdzdYRzVjYmx4MFhIUXZMeUJYWVhSamFDQm1iM0lnWVNCdVpYY2djMlYwSUc5bUlISmxjWFZsYzNSelhHNWNkRngwYVdZZ0tDQm1hWEpsUjJ4dlltRnNjeUFtSmlCcVVYVmxjbmt1WVdOMGFYWmxLeXNnUFQwOUlEQWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWRISnBaMmRsY2loY0ltRnFZWGhUZEdGeWRGd2lLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJWY0hCbGNtTmhjMlVnZEdobElIUjVjR1ZjYmx4MFhIUnpMblI1Y0dVZ1BTQnpMblI1Y0dVdWRHOVZjSEJsY2tOaGMyVW9LVHRjYmx4dVhIUmNkQzh2SUVSbGRHVnliV2x1WlNCcFppQnlaWEYxWlhOMElHaGhjeUJqYjI1MFpXNTBYRzVjZEZ4MGN5NW9ZWE5EYjI1MFpXNTBJRDBnSVhKdWIwTnZiblJsYm5RdWRHVnpkQ2dnY3k1MGVYQmxJQ2s3WEc1Y2JseDBYSFF2THlCVFlYWmxJSFJvWlNCVlVrd2dhVzRnWTJGelpTQjNaU2R5WlNCMGIzbHBibWNnZDJsMGFDQjBhR1VnU1dZdFRXOWthV1pwWldRdFUybHVZMlZjYmx4MFhIUXZMeUJoYm1RdmIzSWdTV1l0VG05dVpTMU5ZWFJqYUNCb1pXRmtaWElnYkdGMFpYSWdiMjVjYmx4MFhIUmpZV05vWlZWU1RDQTlJSE11ZFhKc08xeHVYRzVjZEZ4MEx5OGdUVzl5WlNCdmNIUnBiMjV6SUdoaGJtUnNhVzVuSUdadmNpQnlaWEYxWlhOMGN5QjNhWFJvSUc1dklHTnZiblJsYm5SY2JseDBYSFJwWmlBb0lDRnpMbWhoYzBOdmJuUmxiblFnS1NCN1hHNWNibHgwWEhSY2RDOHZJRWxtSUdSaGRHRWdhWE1nWVhaaGFXeGhZbXhsTENCaGNIQmxibVFnWkdGMFlTQjBieUIxY214Y2JseDBYSFJjZEdsbUlDZ2djeTVrWVhSaElDa2dlMXh1WEhSY2RGeDBYSFJqWVdOb1pWVlNUQ0E5SUNnZ2N5NTFjbXdnS3owZ0tDQnljWFZsY25rdWRHVnpkQ2dnWTJGamFHVlZVa3dnS1NBL0lGd2lKbHdpSURvZ1hDSS9YQ0lnS1NBcklITXVaR0YwWVNBcE8xeHVYSFJjZEZ4MFhIUXZMeUFqT1RZNE1qb2djbVZ0YjNabElHUmhkR0VnYzI4Z2RHaGhkQ0JwZENkeklHNXZkQ0IxYzJWa0lHbHVJR0Z1SUdWMlpXNTBkV0ZzSUhKbGRISjVYRzVjZEZ4MFhIUmNkR1JsYkdWMFpTQnpMbVJoZEdFN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRUZrWkNCaGJuUnBMV05oWTJobElHbHVJSFZ5YkNCcFppQnVaV1ZrWldSY2JseDBYSFJjZEdsbUlDZ2djeTVqWVdOb1pTQTlQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJjZEhNdWRYSnNJRDBnY25SekxuUmxjM1FvSUdOaFkyaGxWVkpNSUNrZ1AxeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1NXWWdkR2hsY21VZ2FYTWdZV3h5WldGa2VTQmhJQ2RmSnlCd1lYSmhiV1YwWlhJc0lITmxkQ0JwZEhNZ2RtRnNkV1ZjYmx4MFhIUmNkRngwWEhSallXTm9aVlZTVEM1eVpYQnNZV05sS0NCeWRITXNJRndpSkRGZlBWd2lJQ3NnYm05dVkyVXJLeUFwSURwY2JseHVYSFJjZEZ4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCaFpHUWdiMjVsSUhSdklIUm9aU0JsYm1SY2JseDBYSFJjZEZ4MFhIUmpZV05vWlZWU1RDQXJJQ2dnY25GMVpYSjVMblJsYzNRb0lHTmhZMmhsVlZKTUlDa2dQeUJjSWlaY0lpQTZJRndpUDF3aUlDa2dLeUJjSWw4OVhDSWdLeUJ1YjI1alpTc3JPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRk5sZENCMGFHVWdTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVWdZVzVrTDI5eUlFbG1MVTV2Ym1VdFRXRjBZMmdnYUdWaFpHVnlMQ0JwWmlCcGJpQnBaazF2WkdsbWFXVmtJRzF2WkdVdVhHNWNkRngwYVdZZ0tDQnpMbWxtVFc5a2FXWnBaV1FnS1NCN1hHNWNkRngwWEhScFppQW9JR3BSZFdWeWVTNXNZWE4wVFc5a2FXWnBaV1JiSUdOaFkyaGxWVkpNSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkR3B4V0VoU0xuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb0lGd2lTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVmNJaXdnYWxGMVpYSjVMbXhoYzNSTmIyUnBabWxsWkZzZ1kyRmphR1ZWVWt3Z1hTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBhV1lnS0NCcVVYVmxjbmt1WlhSaFoxc2dZMkZqYUdWVlVrd2dYU0FwSUh0Y2JseDBYSFJjZEZ4MGFuRllTRkl1YzJWMFVtVnhkV1Z6ZEVobFlXUmxjaWdnWENKSlppMU9iMjVsTFUxaGRHTm9YQ0lzSUdwUmRXVnllUzVsZEdGbld5QmpZV05vWlZWU1RDQmRJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMElIUm9aU0JqYjNKeVpXTjBJR2hsWVdSbGNpd2dhV1lnWkdGMFlTQnBjeUJpWldsdVp5QnpaVzUwWEc1Y2RGeDBhV1lnS0NCekxtUmhkR0VnSmlZZ2N5NW9ZWE5EYjI1MFpXNTBJQ1ltSUhNdVkyOXVkR1Z1ZEZSNWNHVWdJVDA5SUdaaGJITmxJSHg4SUc5d2RHbHZibk11WTI5dWRHVnVkRlI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUnFjVmhJVWk1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NCY0lrTnZiblJsYm5RdFZIbHdaVndpTENCekxtTnZiblJsYm5SVWVYQmxJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMElIUm9aU0JCWTJObGNIUnpJR2hsWVdSbGNpQm1iM0lnZEdobElITmxjblpsY2l3Z1pHVndaVzVrYVc1bklHOXVJSFJvWlNCa1lYUmhWSGx3WlZ4dVhIUmNkR3B4V0VoU0xuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb1hHNWNkRngwWEhSY0lrRmpZMlZ3ZEZ3aUxGeHVYSFJjZEZ4MGN5NWtZWFJoVkhsd1pYTmJJREFnWFNBbUppQnpMbUZqWTJWd2RITmJJSE11WkdGMFlWUjVjR1Z6V3pCZElGMGdQMXh1WEhSY2RGeDBYSFJ6TG1GalkyVndkSE5iSUhNdVpHRjBZVlI1Y0dWeld6QmRJRjBnS3lBb0lITXVaR0YwWVZSNWNHVnpXeUF3
14938SUYwZ0lUMDlJRndpS2x3aUlEOGdYQ0lzSUZ3aUlDc2dZV3hzVkhsd1pYTWdLeUJjSWpzZ2NUMHdMakF4WENJZ09pQmNJbHdpSUNrZ09seHVYSFJjZEZ4MFhIUnpMbUZqWTJWd2RITmJJRndpS2x3aUlGMWNibHgwWEhRcE8xeHVYRzVjZEZ4MEx5OGdRMmhsWTJzZ1ptOXlJR2hsWVdSbGNuTWdiM0IwYVc5dVhHNWNkRngwWm05eUlDZ2dhU0JwYmlCekxtaGxZV1JsY25NZ0tTQjdYRzVjZEZ4MFhIUnFjVmhJVWk1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NCcExDQnpMbWhsWVdSbGNuTmJJR2tnWFNBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFRnNiRzkzSUdOMWMzUnZiU0JvWldGa1pYSnpMMjFwYldWMGVYQmxjeUJoYm1RZ1pXRnliSGtnWVdKdmNuUmNibHgwWEhScFppQW9JSE11WW1WbWIzSmxVMlZ1WkNBbUppQW9JSE11WW1WbWIzSmxVMlZ1WkM1allXeHNLQ0JqWVd4c1ltRmphME52Ym5SbGVIUXNJR3B4V0VoU0xDQnpJQ2tnUFQwOUlHWmhiSE5sSUh4OElITjBZWFJsSUQwOVBTQXlJQ2tnS1NCN1hHNWNkRngwWEhRdkx5QkJZbTl5ZENCcFppQnViM1FnWkc5dVpTQmhiSEpsWVdSNUlHRnVaQ0J5WlhSMWNtNWNibHgwWEhSY2RISmxkSFZ5YmlCcWNWaElVaTVoWW05eWRDZ3BPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZpYjNKMGFXNW5JR2x6SUc1dklHeHZibWRsY2lCaElHTmhibU5sYkd4aGRHbHZibHh1WEhSY2RITjBja0ZpYjNKMElEMGdYQ0poWW05eWRGd2lPMXh1WEc1Y2RGeDBMeThnU1c1emRHRnNiQ0JqWVd4c1ltRmphM01nYjI0Z1pHVm1aWEp5WldSelhHNWNkRngwWm05eUlDZ2dhU0JwYmlCN0lITjFZMk5sYzNNNklERXNJR1Z5Y205eU9pQXhMQ0JqYjIxd2JHVjBaVG9nTVNCOUlDa2dlMXh1WEhSY2RGeDBhbkZZU0ZKYklHa2dYU2dnYzFzZ2FTQmRJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUjJWMElIUnlZVzV6Y0c5eWRGeHVYSFJjZEhSeVlXNXpjRzl5ZENBOUlHbHVjM0JsWTNSUWNtVm1hV3gwWlhKelQzSlVjbUZ1YzNCdmNuUnpLQ0IwY21GdWMzQnZjblJ6TENCekxDQnZjSFJwYjI1ekxDQnFjVmhJVWlBcE8xeHVYRzVjZEZ4MEx5OGdTV1lnYm04Z2RISmhibk53YjNKMExDQjNaU0JoZFhSdkxXRmliM0owWEc1Y2RGeDBhV1lnS0NBaGRISmhibk53YjNKMElDa2dlMXh1WEhSY2RGeDBaRzl1WlNnZ0xURXNJRndpVG04Z1ZISmhib
14938k53YjNKMFhDSWdLVHRjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGFuRllTRkl1Y21WaFpIbFRkR0YwWlNBOUlERTdYRzVjYmx4MFhIUmNkQzh2SUZObGJtUWdaMnh2WW1Gc0lHVjJaVzUwWEc1Y2RGeDBYSFJwWmlBb0lHWnBjbVZIYkc5aVlXeHpJQ2tnZTF4dVhIUmNkRngwWEhSbmJHOWlZV3hGZG1WdWRFTnZiblJsZUhRdWRISnBaMmRsY2lnZ1hDSmhhbUY0VTJWdVpGd2lMQ0JiSUdweFdFaFNMQ0J6SUYwZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSY2RDOHZJRlJwYldWdmRYUmNibHgwWEhSY2RHbG1JQ2dnY3k1aGMzbHVZeUFtSmlCekxuUnBiV1Z2ZFhRZ1BpQXdJQ2tnZTF4dVhIUmNkRngwWEhSMGFXMWxiM1YwVkdsdFpYSWdQU0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUmNkR3B4V0VoU0xtRmliM0owS0Z3aWRHbHRaVzkxZEZ3aUtUdGNibHgwWEhSY2RGeDBmU3dnY3k1MGFXMWxiM1YwSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RIUnllU0I3WEc1Y2RGeDBYSFJjZEhOMFlYUmxJRDBnTVR0Y2JseDBYSFJjZEZ4MGRISmhibk53YjNKMExuTmxibVFvSUhKbGNYVmxjM1JJWldGa1pYSnpMQ0JrYjI1bElDazdYRzVjZEZ4MFhIUjlJR05oZEdOb0lDZ2daU0FwSUh0Y2JseDBYSFJjZEZ4MEx5OGdVSEp2Y0dGbllYUmxJR1Y0WTJWd2RHbHZiaUJoY3lCbGNuSnZjaUJwWmlCdWIzUWdaRzl1WlZ4dVhIUmNkRngwWEhScFppQW9JSE4wWVhSbElEd2dNaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmtiMjVsS0NBdE1Td2daU0FwTzF4dVhIUmNkRngwWEhRdkx5QlRhVzF3YkhrZ2NtVjBhSEp2ZHlCdmRHaGxjbmRwYzJWY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUjBhSEp2ZHlCbE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMkZzYkdKaFkyc2dabTl5SUhkb1pXNGdaWFpsY25sMGFHbHVaeUJwY3lCa2IyNWxYRzVjZEZ4MFpuVnVZM1JwYjI0Z1pHOXVaU2dnYzNSaGRIVnpMQ0J1WVhScGRtVlRkR0YwZFhOVVpYaDBMQ0J5WlhOd2IyNXpaWE1zSUdobFlXUmxjbk1nS1NCN1hHNWNkRngwWEhSMllYSWdhWE5UZFdOalpYTnpMQ0J6ZFdOalpYTnpMQ0JsY25KdmNpd2djbVZ6Y0c5dWMyVXNJRzF2WkdsbWFXVmtMRnh1WEhSY2RGeDBYSFJ6ZEdGMGRYTlVaWGgwSUQwZ2JtRjBhWFpsVTNSaGRIVnpWR1Y0ZER0Y2JseHVYSFJjZEZ4MEx5OGdRMkZzYkdWa0lHOXVZMlZjYmx4MFhIUmNkR2xtSUNnZ2MzUmhkR1VnUFQwOUlESWdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1UzUmhkR1VnYVhNZ1hDSmtiMjVsWENJZ2JtOTNYRzVjZEZ4MFhIUnpkR0YwWlNBOUlESTdYRzVjYmx4MFhIUmNkQzh2SUVOc1pXRnlJSFJwYldWdmRYUWdhV1lnYVhRZ1pYaHBjM1J6WEc1Y2RGeDBYSFJwWmlBb0lIUnBiV1Z2ZFhSVWFXMWxjaUFwSUh0Y2JseDBYSFJjZEZ4MFkyeGxZWEpVYVcxbGIzVjBLQ0IwYVcxbGIzVjBWR2x0WlhJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUkdWeVpXWmxjbVZ1WTJVZ2RISmhibk53YjNKMElHWnZjaUJsWVhKc2VTQm5ZWEppWVdkbElHTnZiR3hsWTNScGIyNWNibHgwWEhSY2RDOHZJQ2h1YnlCdFlYUjBaWElnYUc5M0lHeHZibWNnZEdobElHcHhXRWhTSUc5aWFtVmpkQ0IzYVd4c0lHSmxJSFZ6WldRcFhHNWNkRngwWEhSMGNtRnVjM0J2Y25RZ1BTQjFibVJsWm1sdVpXUTdYRzVjYmx4MFhIUmNkQzh2SUVOaFkyaGxJSEpsYzNCdmJuTmxJR2hsWVdSbGNuTmNibHgwWEhSY2RISmxjM0J2Ym5ObFNHVmhaR1Z5YzFOMGNtbHVaeUE5SUdobFlXUmxjbk1nZkh3Z1hDSmNJanRjYmx4dVhIUmNkRngwTHk4Z1UyVjBJSEpsWVdSNVUzUmhkR1ZjYmx4MFhIUmNkR3B4V0VoU0xuSmxZV1I1VTNSaGRHVWdQU0J6ZEdGMGRYTWdQaUF3SUQ4Z05DQTZJREE3WEc1Y2JseDBYSFJjZEM4dklFUmxkR1Z5YldsdVpTQnBaaUJ6ZFdOalpYTnpablZzWEc1Y2RGeDBYSFJwYzFOMVkyTmxjM01nUFNCemRHRjBkWE1nUGowZ01qQXdJQ1ltSUhOMFlYUjFjeUE4SURNd01DQjhmQ0J6ZEdGMGRYTWdQVDA5SURNd05EdGNibHh1WEhSY2RGeDBMeThnUjJWMElISmxjM0J2Ym5ObElHUmhkR0ZjYmx4MFhIUmNkR2xtSUNnZ2NtVnpjRzl1YzJWeklDa2dlMXh1WEhSY2RGeDBYSFJ5WlhOd2IyNXpaU0E5SUdGcVlYaElZVzVrYkdWU1pYTndiMjV6WlhNb0lITXNJR3B4V0VoU0xDQnlaWE53YjI1elpYTWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1EyOXVkbVZ5ZENCdWJ5QnRZWFIwWlhJZ2QyaGhkQ0FvZEdoaGRDQjNZWGtnY21WemNHOXVjMlZZV0ZnZ1ptbGxiR1J6SUdGeVpTQmhiSGRoZVhNZ2MyVjBLVnh1WEhSY2RGeDBjbVZ6Y0c5dWMyVWdQU0JoYW1GNFEyOXVkbVZ5ZENnZ2N5d2djbVZ6Y0c5dWMyVXNJR3B4V0VoU0xDQnBjMU4xWTJObGMzTWdLVHRjYmx4dVhIUmNkRngwTHk4Z1NXWWdjM1ZqWTJWemMyWjFiQ3dnYUdGdVpHeGxJSFI1Y0dVZ1kyaGhhVzVwYm1kY2JseDBYSFJjZEdsbUlDZ2dhWE5UZFdOalpYTnpJQ2tnZTF4dVhHNWNkRngwWEhSY2RDOHZJRk5sZENCMGFHVWdTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVWdZVzVrTDI5eUlFbG1MVTV2Ym1VdFRXRjBZMmdnYUdWaFpHVnlMQ0JwWmlCcGJpQnBaazF2WkdsbWFXVmtJRzF2WkdVdVhHNWNkRngwWEhSY2RHbG1JQ2dnY3k1cFprMXZaR2xtYVdWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEcxdlpHbG1hV1ZrSUQwZ2FuRllTRkl1WjJWMFVtVnpjRzl1YzJWSVpXRmtaWElvWENKTVlYTjBMVTF2WkdsbWFXVmtYQ0lwTzF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnYlc5a2FXWnBaV1FnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJxVVhWbGNua3ViR0Z6ZEUxdlpHbG1hV1ZrV3lCallXTm9aVlZTVENCZElEMGdiVzlrYVdacFpXUTdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RHMXZaR2xtYVdWa0lEMGdhbkZZU0ZJdVoyVjBVbVZ6Y0c5dWMyVklaV0ZrWlhJb1hDSmxkR0ZuWENJcE8xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JXOWthV1pwWldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScVVYVmxjbmt1WlhSaFoxc2dZMkZqYUdWVlVrd2dYU0E5SUcxdlpHbG1hV1ZrTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklHbG1JRzV2SUdOdmJuUmxiblJjYmx4MFhIUmNkRngwYVdZZ0tDQnpkR0YwZFhNZ1BUMDlJREl3TkNCOGZDQnpMblI1Y0dVZ1BUMDlJRndpU0VWQlJGd2lJQ2tnZTF4dVhIUmNkRngwWEhSY2RITjBZWFIxYzFSbGVIUWdQU0JjSW01dlkyOXVkR1Z1ZEZ3aU8xeHVYRzVjZEZ4MFhIUmNkQzh2SUdsbUlHNXZkQ0J0YjJScFptbGxaRnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCemRHRjBkWE1nUFQwOUlETXdOQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnpkR0YwZFhOVVpYaDBJRDBnWENKdWIzUnRiMlJwWm1sbFpGd2lPMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSGRsSUdoaGRtVWdaR0YwWVN3Z2JHVjBKM01nWTI5dWRtVnlkQ0JwZEZ4dVhIUmNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSY2RITjBZWFIxYzFSbGVIUWdQU0J5WlhOd2IyNXpaUzV6ZEdGMFpUdGNibHgwWEhSY2RGeDBYSFJ6ZFdOalpYTnpJRDBnY21WemNHOXVjMlV1W
14938kdGMFlUdGNibHgwWEhSY2RGeDBYSFJsY25KdmNpQTlJSEpsYzNCdmJuTmxMbVZ5Y205eU8xeHVYSFJjZEZ4MFhIUmNkR2x6VTNWalkyVnpjeUE5SUNGbGNuSnZjanRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwTHk4Z1JYaDBjbUZqZENCbGNuSnZjaUJtY205dElITjBZWFIxYzFSbGVIUWdZVzVrSUc1dmNtMWhiR2w2WlNCbWIzSWdibTl1TFdGaWIzSjBjMXh1WEhSY2RGeDBYSFJsY25KdmNpQTlJSE4wWVhSMWMxUmxlSFE3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djM1JoZEhWeklIeDhJQ0Z6ZEdGMGRYTlVaWGgwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSE4wWVhSMWMxUmxlSFFnUFNCY0ltVnljbTl5WENJN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NCemRHRjBkWE1nUENBd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGMzUmhkSFZ6SUQwZ01EdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlYwSUdSaGRHRWdabTl5SUhSb1pTQm1ZV3RsSUhob2NpQnZZbXBsWTNSY2JseDBYSFJjZEdweFdFaFNMbk4wWVhSMWN5QTlJSE4wWVhSMWN6dGNibHgwWEhSY2RHcHhXRWhTTG5OMFlYUjFjMVJsZUhRZ1BTQW9JRzVoZEdsMlpWTjBZWFIxYzFSbGVIUWdmSHdnYzNSaGRIVnpWR1Y0ZENBcElDc2dYQ0pjSWp0Y2JseHVYSFJjZEZ4MEx5OGdVM1ZqWTJWemN5OUZjbkp2Y2x4dVhIUmNkRngwYVdZZ0tDQnBjMU4xWTJObGMzTWdLU0I3WEc1Y2RGeDBYSFJjZEdSbFptVnljbVZrTG5KbGMyOXNkbVZYYVhSb0tDQmpZV3hzWW1GamEwTnZiblJsZUhRc0lGc2djM1ZqWTJWemN5d2djM1JoZEhWelZHVjRkQ3dnYW5GWVNGSWdYU0FwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWkdWbVpYSnlaV1F1Y21WcVpXTjBWMmwwYUNnZ1kyRnNiR0poWTJ0RGIyNTBaWGgwTENCYklHcHhXRWhTTENCemRHRjBkWE5VWlhoMExDQmxjbkp2Y2lCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZOMFlYUjFjeTFrWlhCbGJtUmxiblFnWTJGc2JHSmhZMnR6WEc1Y2RGeDBYSFJxY1ZoSVVpNXpkR0YwZFhORGIyUmxLQ0J6ZEdGMGRYTkRiMlJsSUNrN1hHNWNkRngwWEhSemRHRjBkWE5EYjJSbElEMGdkVzVrWldacGJtVmtPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHWnBjbVZIYkc5aVlXeHpJQ2tnZTF4dVhIUmNkRngwWEhSbmJHOWlZV3hGZG1WdWRFTnZiblJsZUhRdWRISnBaMmRsY2lnZ2FYTlRkV05qWlhOeklEOGdYQ0poYW1GNFUzVmpZMlZ6YzF3aUlEb2dYQ0poYW1GNFJYSnliM0pjSWl4Y2JseDBYSFJjZEZ4MFhIUmJJR3B4V0VoU0xDQnpMQ0JwYzFOMVkyTmxjM01nUHlCemRXTmpaWE56SURvZ1pYSnliM0lnWFNBcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJEYjIxd2JHVjBaVnh1WEhSY2RGeDBZMjl0Y0d4bGRHVkVaV1psY25KbFpDNW1hWEpsVjJsMGFDZ2dZMkZzYkdKaFkydERiMjUwWlhoMExDQmJJR3B4V0VoU0xDQnpkR0YwZFhOVVpYaDBJRjBnS1R0Y2JseHVYSFJjZEZ4MGFXWWdLQ0JtYVhKbFIyeHZZbUZzY3lBcElIdGNibHgwWEhSY2RGeDBaMnh2WW1Gc1JYWmxiblJEYjI1MFpYaDBMblJ5YVdkblpYSW9JRndpWVdwaGVFTnZiWEJzWlhSbFhDSXNJRnNnYW5GWVNGSXNJSE1nWFNBcE8xeHVYSFJjZEZ4MFhIUXZMeUJJWVc1a2JHVWdkR2hsSUdkc2IySmhiQ0JCU2tGWUlHTnZkVzUwWlhKY2JseDBYSFJjZEZ4MGFXWWdLQ0FoS0NBdExXcFJkV1Z5ZVM1aFkzUnBkbVVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWRISnBaMmRsY2loY0ltRnFZWGhUZEc5d1hDSXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlHcHhXRWhTTzF4dVhIUjlMRnh1WEc1Y2RHZGxkRXBUVDA0NklHWjFibU4wYVc5dUtDQjFjbXdzSUdSaGRHRXNJR05oYkd4aVlXTnJJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVoyVjBLQ0IxY213c0lHUmhkR0VzSUdOaGJHeGlZV05yTENCY0ltcHpiMjVjSWlBcE8xeHVYSFI5TEZ4dVhHNWNkR2RsZEZOamNtbHdkRG9nWm5WdVkzUnBiMjRvSUhWeWJDd2dZMkZzYkdKaFkyc2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1blpYUW9JSFZ5YkN3Z2RXNWtaV1pwYm1Wa0xDQmpZV3hzWW1GamF5d2dYQ0p6WTNKcGNIUmNJaUFwTzF4dVhIUjlYRzU5S1R0Y2JseHVhbEYxWlhKNUxtVmhZMmdvSUZzZ1hDSm5aWFJjSWl3Z1hDSndiM04wWENJZ1hTd2dablZ1WTNScGIyNG9JR2tzSUcxbGRHaHZaQ0FwSUh0Y2JseDBhbEYxWlhKNVd5QnRaWFJvYjJRZ1hTQTlJR1oxYm1OMGFXOXVLQ0IxY213c0lHUmhkR0VzSUdOaGJHeGlZV05yTENCMGVYQmxJQ2tnZTF4dVhIUmNkQzh2SUZOb2FXWjBJR0Z5WjNWdFpXNTBjeUJwWmlCa1lYUmhJR0Z5WjNWdFpXNTBJSGRoY3lCdmJXbDBkR1ZrWEc1Y2RGeDBhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ1pHRjBZU0FwSUNrZ2UxeHVYSFJjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWTJGc2JHSmhZMnM3WEc1Y2RGeDBYSFJqWVd4c1ltRmpheUE5SUdSaGRHRTdYRzVjZEZ4MFhIUmtZWFJoSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VZV3BoZUNoN1hHNWNkRngwWEhSMWNtdzZJSFZ5YkN4Y2JseDBYSFJjZEhSNWNHVTZJRzFsZEdodlpDeGNibHgwWEhSY2RHUmhkR0ZVZVhCbE9pQjBlWEJsTEZ4dVhIUmNkRngwWkdGMFlUb2daR0YwWVN4Y2JseDBYSFJjZEhOMVkyTmxjM002SUdOaGJHeGlZV05yWEc1Y2RGeDBmU2s3WEc1Y2RIMDdYRzU5S1R0Y2JseHVYRzVxVVhWbGNua3VYMlYyWVd4VmNtd2dQU0JtZFc1amRHbHZiaWdnZFhKc0lDa2dlMXh1WEhSeVpYUjFjbTRnYWxGMVpYSjVMbUZxWVhnb2UxeHVYSFJjZEhWeWJEb2dkWEpzTEZ4dVhIUmNkSFI1Y0dVNklGd2lSMFZVWENJc1hHNWNkRngwWkdGMFlWUjVjR1U2SUZ3aWMyTnlhWEIwWENJc1hHNWNkRngwWVhONWJtTTZJR1poYkhObExGeHVYSFJjZEdkc2IySmhiRG9nWm1Gc2MyVXNYRzVjZEZ4MFhDSjBhSEp2ZDNOY0lqb2dkSEoxWlZ4dVhIUjlLVHRjYm4wN1hHNWNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RIZHlZWEJCYkd3NklHWjFibU4wYVc5dUtDQm9kRzFzSUNrZ2UxeHVYSFJjZEhaaGNpQjNjbUZ3TzF4dVhHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2dhSFJ0YkNBcElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ2dhU0FwSUh0Y2JseDBYSFJjZEZ4MGFsRjFaWEo1S0NCMGFHbHpJQ2t1ZDNKaGNFRnNiQ2dnYUhSdGJDNWpZV3hzS0hSb2FYTXNJR2twSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSFJvYVhOYklEQWdYU0FwSUh0Y2JseHVYSFJjZEZ4MEx5OGdWR2hsSUdWc1pXMWxiblJ6SUhSdklIZHlZWEFnZEdobElIUmhjbWRsZENCaGNtOTFibVJjYmx4MFhIUmNkSGR5WVhBZ1BTQnFVWFZsY25rb0lHaDBiV3dzSUhSb2FYTmJJREFnWFM1dmQyNWxja1J2WTNWdFpXNTBJQ2t1WlhFb0lEQWdLUzVqYkc5dVpTZ2dkSEoxWlNBcE8xeHVYRzVjZEZ4MFhIUnBaaUFvSUhSb2FYTmJJREFnWFM1d1lYSmxiblJPYjJSbElDa2dlMXh1WEhSY2RGeDBYSFIzY21Gd0xtbHVjMlZ5ZEVKbFptOXlaU2dnZEdocGMxc2dNQ0JkSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RIZHlZWEF1YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFIyWVhJZ1pXeGxiU0E5SUhSb2FYTTdYRzVjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0JsYkdWdExtWnBjbk4wUld4bGJXVnVkRU5vYVd4a0lDa2dlMXh1WEhSY2RGeDBYSFJjZEdWc1pXMGdQU0JsYkdWdExtWnBjbk4wUld4bGJXVnVkRU5vYVd4a08xeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwY21WMGRYSnVJR1ZzWlcwN1hHNWNkRngwWEhSOUtTNWhjSEJsYm1Rb0lIUm9hWE1nS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBmU3hjYmx4dVhIUjNjbUZ3U1c1dVpYSTZJR1oxYm1OMGFXOXVLQ0JvZEcxc0lDa2dlMXh1WEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUdoMGJXd2dLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYU
14938dsekxtVmhZMmdvWm5WdVkzUnBiMjRvSUdrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuZHlZWEJKYm01bGNpZ2dhSFJ0YkM1allXeHNLSFJvYVhNc0lHa3BJQ2s3WEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwZG1GeUlITmxiR1lnUFNCcVVYVmxjbmtvSUhSb2FYTWdLU3hjYmx4MFhIUmNkRngwWTI5dWRHVnVkSE1nUFNCelpXeG1MbU52Ym5SbGJuUnpLQ2s3WEc1Y2JseDBYSFJjZEdsbUlDZ2dZMjl1ZEdWdWRITXViR1Z1WjNSb0lDa2dlMXh1WEhSY2RGeDBYSFJqYjI1MFpXNTBjeTUzY21Gd1FXeHNLQ0JvZEcxc0lDazdYRzVjYmx4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkSE5sYkdZdVlYQndaVzVrS0NCb2RHMXNJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGQzSmhjRG9nWm5WdVkzUnBiMjRvSUdoMGJXd2dLU0I3WEc1Y2RGeDBkbUZ5SUdselJuVnVZM1JwYjI0Z1BTQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2dhSFJ0YkNBcE8xeHVYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTXVaV0ZqYUNobWRXNWpkR2x2YmlnZ2FTQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuZHlZWEJCYkd3b0lHbHpSblZ1WTNScGIyNGdQeUJvZEcxc0xtTmhiR3dvZEdocGN5d2dhU2tnT2lCb2RHMXNJQ2s3WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGRXNTNjbUZ3T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXdZWEpsYm5Rb0tTNWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0FoYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0IwYUdsekxDQmNJbUp2WkhsY0lpQXBJQ2tnZTF4dVhIUmNkRngwWEhScVVYVmxjbmtvSUhSb2FYTWdLUzV5WlhCc1lXTmxWMmwwYUNnZ2RHaHBjeTVqYUdsc1pFNXZaR1Z6SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlNrdVpXNWtLQ2s3WEc1Y2RIMWNibjBwTzF4dVhHNWNibXBSZFdWeWVTNWxlSEJ5TG1acGJIUmxjbk11YUdsa1pHVnVJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRTl3WlhKaElEdzlJREV5TGpFeVhHNWNkQzh2SUU5d1pYSmhJSEpsY0c5eWRITWdiMlptYzJWMFYybGtkR2h6SUdGdVpDQnZabVp6WlhSSVpXbG5hSFJ6SUd4bGMzTWdkR2hoYmlCNlpYSnZJRzl1SUhOdmJXVWdaV3hsYldWdWRITmNibHgwY21WMGRYSnVJR1ZzWlcwdWIyWm1jMlYwVjJsa2RHZ2dQRDBnTUNBbUppQmxiR1Z0TG05bVpuTmxkRWhsYVdkb2RDQThQU0F3TzF4dWZUdGNibXBSZFdWeWVTNWxlSEJ5TG1acGJIUmxjbk11ZG1semFXSnNaU0E5SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUnlaWFIxY200Z0lXcFJkV1Z5ZVM1bGVIQnlMbVpwYkhSbGNuTXVhR2xrWkdWdUtDQmxiR1Z0SUNrN1hHNTlPMXh1WEc1Y2JseHVYRzUyWVhJZ2NqSXdJRDBnTHlVeU1DOW5MRnh1WEhSeVluSmhZMnRsZENBOUlDOWNYRnRjWEYwa0x5eGNibHgwY2tOU1RFWWdQU0F2WEZ4eVAxeGNiaTluTEZ4dVhIUnljM1ZpYldsMGRHVnlWSGx3WlhNZ1BTQXZYaWcvT25OMVltMXBkSHhpZFhSMGIyNThhVzFoWjJWOGNtVnpaWFI4Wm1sc1pTa2tMMmtzWEc1Y2RISnpkV0p0YVhSMFlXSnNaU0E5SUM5ZUtEODZhVzV3ZFhSOGMyVnNaV04wZkhSbGVIUmhjbVZoZkd0bGVXZGxiaWt2YVR0Y2JseHVablZ1WTNScGIyNGdZblZwYkdSUVlYSmhiWE1vSUhCeVpXWnBlQ3dnYjJKcUxDQjBjbUZrYVhScGIyNWhiQ3dnWVdSa0lDa2dlMXh1WEhSMllYSWdibUZ0WlR0Y2JseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwRnljbUY1S0NCdlltb2dLU0FwSUh0Y2JseDBYSFF2THlCVFpYSnBZV3hwZW1VZ1lYSnlZWGtnYVhSbGJTNWNibHgwWEhScVVYVmxjbmt1WldGamFDZ2diMkpxTENCbWRXNWpkR2x2YmlnZ2FTd2dkaUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dkSEpoWkdsMGFXOXVZV3dnZkh3Z2NtSnlZV05yWlhRdWRHVnpkQ2dnY0hKbFptbDRJQ2tnS1NCN1hHNWNkRngwWEhSY2RDOHZJRlJ5WldGMElHVmhZMmdnWVhKeVlYa2dhWFJsYlNCaGN5QmhJSE5qWVd4aGNpNWNibHgwWEhSY2RGeDBZV1JrS0NCd2NtVm1hWGdzSUhZZ0tUdGNibHh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBMeThnU1hSbGJTQnBjeUJ1YjI0dGMyTmhiR0Z5SUNoaGNuSmhlU0J2Y2lCdlltcGxZM1FwTENCbGJtTnZaR1VnYVhSeklHNTFiV1Z5YVdNZ2FXNWtaWGd1WEc1Y2RGeDBYSFJjZEdKMWFXeGtVR0Z5WVcxektDQndjbVZtYVhnZ0t5QmNJbHRjSWlBcklDZ2dkSGx3Wlc5bUlIWWdQVDA5SUZ3aWIySnFaV04wWENJZ1B5QnBJRG9nWENKY0lpQXBJQ3NnWENKZFhDSXNJSFlzSUhSeVlXUnBkR2x2Ym1Gc0xDQmhaR1FnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseHVYSFI5SUdWc2MyVWdhV1lnS0NBaGRISmhaR2wwYVc5dVlXd2dKaVlnYWxGMVpYSjVMblI1Y0dVb0lHOWlhaUFwSUQwOVBTQmNJbTlpYW1WamRGd2lJQ2tnZTF4dVhIUmNkQzh2SUZObGNtbGhiR2w2WlNCdlltcGxZM1FnYVhSbGJTNWNibHgwWEhSbWIzSWdLQ0J1WVcxbElHbHVJRzlpYWlBcElIdGNibHgwWEhSY2RHSjFhV3hrVUdGeVlXMXpLQ0J3Y21WbWFYZ2dLeUJjSWx0Y0lpQXJJRzVoYldVZ0t5QmNJbDFjSWl3Z2IySnFXeUJ1WVcxbElGMHNJSFJ5WVdScGRHbHZibUZzTENCaFpHUWdLVHRjYmx4MFhIUjlYRzVjYmx4MGZTQmxiSE5sSUh0Y2JseDBYSFF2THlCVFpYSnBZV3hwZW1VZ2MyTmhiR0Z5SUdsMFpXMHVYRzVjZEZ4MFlXUmtLQ0J3Y21WbWFYZ3NJRzlpYWlBcE8xeHVYSFI5WEc1OVhHNWNiaTh2SUZObGNtbGhiR2w2WlNCaGJpQmhjbkpoZVNCdlppQm1iM0p0SUdWc1pXMWxiblJ6SUc5eUlHRWdjMlYwSUc5bVhHNHZMeUJyWlhrdmRtRnNkV1Z6SUdsdWRHOGdZU0J4ZFdWeWVTQnpkSEpwYm1kY2JtcFJkV1Z5ZVM1d1lYSmhiU0E5SUdaMWJtTjBhVzl1S0NCaExDQjBjbUZrYVhScGIyNWhiQ0FwSUh0Y2JseDBkbUZ5SUhCeVpXWnBlQ3hjYmx4MFhIUnpJRDBnVzEwc1hHNWNkRngwWVdSa0lEMGdablZ1WTNScGIyNG9JR3RsZVN3Z2RtRnNkV1VnS1NCN1hHNWNkRngwWEhRdkx5QkpaaUIyWVd4MVpTQnBjeUJoSUdaMWJtTjBhVzl1TENCcGJuWnZhMlVnYVhRZ1lXNWtJSEpsZEhWeWJpQnBkSE1nZG1Gc2RXVmNibHgwWEhSY2RIWmhiSFZsSUQwZ2FsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lIWmhiSFZsSUNrZ1B5QjJZV3gxWlNncElEb2dLQ0IyWVd4MVpTQTlQU0J1ZFd4c0lEOGdYQ0pjSWlBNklIWmhiSFZsSUNrN1hHNWNkRngwWEhSeld5QnpMbXhsYm1kMGFDQmRJRDBnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0NCclpYa2dLU0FySUZ3aVBWd2lJQ3NnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0NCMllXeDFaU0FwTzF4dVhIUmNkSDA3WEc1Y2JseDBMeThnVTJWMElIUnlZV1JwZEdsdmJtRnNJSFJ2SUhSeWRXVWdabTl5SUdwUmRXVnllU0E4UFNBeExqTXVNaUJpWldoaGRtbHZjaTVjYmx4MGFXWWdLQ0IwY21Ga2FYUnBiMjVoYkNBOVBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkSFJ5WVdScGRHbHZibUZzSUQwZ2FsRjFaWEo1TG1GcVlYaFRaWFIwYVc1bmN5QW1KaUJxVVhWbGNua3VZV3BoZUZObGRIUnBibWR6TG5SeVlXUnBkR2x2Ym1Gc08xeHVYSFI5WEc1Y2JseDBMeThnU1dZZ1lXNGdZWEp5WVhrZ2QyRnpJSEJoYzNObFpDQnBiaXdnWVhOemRXMWxJSFJvWVhRZ2FYUWdhWE1nWVc0Z1lYSnlZWGtnYjJZZ1ptOXliU0JsYkdWdFpXNTBjeTVjYmx4MGFXWWdLQ0JxVVhWbGNua3VhWE5CY25KaG
14938VTZ2dZU0FwSUh4OElDZ2dZUzVxY1hWbGNua2dKaVlnSVdwUmRXVnllUzVwYzFCc1lXbHVUMkpxWldOMEtDQmhJQ2tnS1NBcElIdGNibHgwWEhRdkx5QlRaWEpwWVd4cGVtVWdkR2hsSUdadmNtMGdaV3hsYldWdWRITmNibHgwWEhScVVYVmxjbmt1WldGamFDZ2dZU3dnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSaFpHUW9JSFJvYVhNdWJtRnRaU3dnZEdocGN5NTJZV3gxWlNBcE8xeHVYSFJjZEgwcE8xeHVYRzVjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBMeThnU1dZZ2RISmhaR2wwYVc5dVlXd3NJR1Z1WTI5a1pTQjBhR1VnWENKdmJHUmNJaUIzWVhrZ0tIUm9aU0IzWVhrZ01TNHpMaklnYjNJZ2IyeGtaWEpjYmx4MFhIUXZMeUJrYVdRZ2FYUXBMQ0J2ZEdobGNuZHBjMlVnWlc1amIyUmxJSEJoY21GdGN5QnlaV04xY25OcGRtVnNlUzVjYmx4MFhIUm1iM0lnS0NCd2NtVm1hWGdnYVc0Z1lTQXBJSHRjYmx4MFhIUmNkR0oxYVd4a1VHRnlZVzF6S0NCd2NtVm1hWGdzSUdGYklIQnlaV1pwZUNCZExDQjBjbUZrYVhScGIyNWhiQ3dnWVdSa0lDazdYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBMeThnVW1WMGRYSnVJSFJvWlNCeVpYTjFiSFJwYm1jZ2MyVnlhV0ZzYVhwaGRHbHZibHh1WEhSeVpYUjFjbTRnY3k1cWIybHVLQ0JjSWlaY0lpQXBMbkpsY0d4aFkyVW9JSEl5TUN3Z1hDSXJYQ0lnS1R0Y2JuMDdYRzVjYm1wUmRXVnllUzVtYmk1bGVIUmxibVFvZTF4dVhIUnpaWEpwWVd4cGVtVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdWNHRnlZVzBvSUhSb2FYTXVjMlZ5YVdGc2FYcGxRWEp5WVhrb0tTQXBPMXh1WEhSOUxGeHVYSFJ6WlhKcFlXeHBlbVZCY25KaGVUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBMeThnUTJGdUlHRmtaQ0J3Y205d1NHOXZheUJtYjNJZ1hDSmxiR1Z0Wlc1MGMxd2lJSFJ2SUdacGJIUmxjaUJ2Y2lCaFpHUWdabTl5YlNCbGJHVnRaVzUwYzF4dVhIUmNkRngwZG1GeUlHVnNaVzFsYm5SeklEMGdhbEYxWlhKNUxuQnliM0FvSUhSb2FYTXNJRndpWld4bGJXVnVkSE5jSWlBcE8xeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMWxiblJ6SUQ4Z2FsRjFaWEo1TG0xaGEyVkJjbkpoZVNnZ1pXeGxiV1Z1ZEhNZ0tTQTZJSFJvYVhNN1hHNWNkRngwZlNsY2JseDBYSFF1Wm1sc2RHVnlLR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwZG1GeUlIUjVjR1VnUFNCMGFHbHpMblI1Y0dVN1hHNWNibHgwWEhSY2RDOHZJRlZ6WlNBdWFYTW9JRndpT21ScGMyRmliR1ZrWENJZ0tTQnpieUIwYUdGMElHWnBaV3hrYzJWMFcyUnBjMkZpYkdWa1hTQjNiM0pyYzF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNdWJtRnRaU0FtSmlBaGFsRjFaWEo1S0NCMGFHbHpJQ2t1YVhNb0lGd2lPbVJwYzJGaWJHVmtYQ0lnS1NBbUpseHVYSFJjZEZ4MFhIUnljM1ZpYldsMGRHRmliR1V1ZEdWemRDZ2dkR2hwY3k1dWIyUmxUbUZ0WlNBcElDWW1JQ0Z5YzNWaWJXbDBkR1Z5Vkhsd1pYTXVkR1Z6ZENnZ2RIbHdaU0FwSUNZbVhHNWNkRngwWEhSY2RDZ2dkR2hwY3k1amFHVmphMlZrSUh4OElDRnlZMmhsWTJ0aFlteGxWSGx3WlM1MFpYTjBLQ0IwZVhCbElDa2dLVHRjYmx4MFhIUjlLVnh1WEhSY2RDNXRZWEFvWm5WdVkzUnBiMjRvSUdrc0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMllYSWdkbUZzSUQwZ2FsRjFaWEo1S0NCMGFHbHpJQ2t1ZG1Gc0tDazdYRzVjYmx4MFhIUmNkSEpsZEhWeWJpQjJZV3dnUFQwZ2JuVnNiQ0EvWEc1Y2RGeDBYSFJjZEc1MWJHd2dPbHh1WEhSY2RGeDBYSFJxVVhWbGNua3VhWE5CY25KaGVTZ2dkbUZzSUNrZ1AxeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXRZWEFvSUhaaGJDd2dablZ1WTNScGIyNG9JSFpoYkNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhKbGRIVnliaUI3SUc1aGJXVTZJR1ZzWlcwdWJtRnRaU3dnZG1Gc2RXVTZJSFpoYkM1eVpYQnNZV05sS0NCeVExSk1SaXdnWENKY1hISmNYRzVjSWlBcElIMDdYRzVjZEZ4MFhIUmNkRngwZlNrZ09seHVYSFJjZEZ4MFhIUmNkSHNnYm1GdFpUb2daV3hsYlM1dVlXMWxMQ0IyWVd4MVpUb2dkbUZzTG5KbGNHeGhZMlVvSUhKRFVreEdMQ0JjSWx4Y2NseGNibHdpSUNrZ2ZUdGNibHgwWEhSOUtTNW5aWFFvS1R0Y2JseDBmVnh1ZlNrN1hHNWNibHh1YWxGMVpYSjVMbUZxWVhoVFpYUjBhVzVuY3k1NGFISWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBkSEo1SUh0Y2JseDBYSFJ5WlhSMWNtNGdibVYzSUZoTlRFaDBkSEJTWlhGMVpYTjBLQ2s3WEc1Y2RIMGdZMkYwWTJnb0lHVWdLU0I3ZlZ4dWZUdGNibHh1ZG1GeUlIaG9ja2xrSUQwZ01DeGNibHgwZUdoeVEyRnNiR0poWTJ0eklEMGdlMzBzWEc1Y2RIaG9jbE4xWTJObGMzTlRkR0YwZFhNZ1BTQjdYRzVjZEZ4MEx5OGdabWxzWlNCd2NtOTBiMk52YkNCaGJIZGhlWE1nZVdsbGJHUnpJSE4wWVhSMWN5QmpiMlJsSURBc0lHRnpjM1Z0WlNBeU1EQmNibHgwWEhRd09pQXlNREFzWEc1Y2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVNVhHNWNkRngwTHk4Z0l6RTBOVEE2SUhOdmJXVjBhVzFsY3lCSlJTQnlaWFIxY201eklERXlNak1nZDJobGJpQnBkQ0J6YUc5MWJHUWdZbVVnTWpBMFhHNWNkRngwTVRJeU16b2dNakEwWEc1Y2RIMHNYRzVjZEhob2NsTjFjSEJ2Y25SbFpDQTlJR3BSZFdWeWVTNWhhbUY0VTJWMGRHbHVaM011ZUdoeUtDazdYRzVjYmk4dklGTjFjSEJ2Y25RNklFbEZPVnh1THk4Z1QzQmxiaUJ5WlhGMVpYTjBjeUJ0ZFhOMElHSmxJRzFoYm5WaGJHeDVJR0ZpYjNKMFpXUWdiMjRnZFc1c2IyRmtJQ2dqTlRJNE1DbGNiaTh2SUZObFpTQm9kSFJ3Y3pvdkwzTjFjSEJ2Y25RdWJXbGpjbTl6YjJaMExtTnZiUzlyWWk4eU9EVTJOelEySUdadmNpQnRiM0psSUdsdVptOWNibWxtSUNnZ2QybHVaRzkzTG1GMGRHRmphRVYyWlc1MElDa2dlMXh1WEhSM2FXNWtiM2N1WVhSMFlXTm9SWFpsYm5Rb0lGd2liMjUxYm14dllXUmNJaXdnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWm05eUlDZ2dkbUZ5SUd0bGVTQnBiaUI0YUhKRFlXeHNZbUZqYTNNZ0tTQjdYRzVjZEZ4MFhIUjRhSEpEWVd4c1ltRmphM05iSUd0bGVTQmRLQ2s3WEc1Y2RGeDBmVnh1WEhSOUtUdGNibjFjYmx4dWMzVndjRzl5ZEM1amIzSnpJRDBnSVNGNGFISlRkWEJ3YjNKMFpXUWdKaVlnS0NCY0luZHBkR2hEY21Wa1pXNTBhV0ZzYzF3aUlHbHVJSGhvY2xOMWNIQnZjblJsWkNBcE8xeHVjM1Z3Y0c5eWRDNWhhbUY0SUQwZ2VHaHlVM1Z3Y0c5eWRHVmtJRDBnSVNGNGFISlRkWEJ3YjNKMFpXUTdYRzVjYm1wUmRXVnllUzVoYW1GNFZISmhibk53YjNKMEtHWjFibU4wYVc5dUtDQnZjSFJwYjI1eklDa2dlMXh1WEhSMllYSWdZMkZzYkdKaFkyczdYRzVjYmx4MEx5OGdRM0p2YzNNZ1pHOXRZV2x1SUc5dWJIa2dZV3hzYjNkbFpDQnBaaUJ6ZFhCd2IzSjBaV1FnZEdoeWIzVm5hQ0JZVFV4SWRIUndVbVZ4ZFdWemRGeHVYSFJwWmlBb0lITjFjSEJ2Y25RdVkyOXljeUI4ZkNCNGFISlRkWEJ3YjNKMFpXUWdKaVlnSVc5d2RHbHZibk11WTNKdmMzTkViMjFoYVc0Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUh0Y2JseDBYSFJjZEhObGJtUTZJR1oxYm1OMGFXOXVLQ0JvWldGa1pYSnpMQ0JqYjIxd2JHVjBaU0FwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR2tzWEc1Y2RGeDBYSFJjZEZ4MGVHaHlJRDBnYjNCMGFXOXVjeTU0YUhJb0tTeGNibHgwWEhSY2RGeDBYSFJwWkNBOUlDc3JlR2h5U1dRN1hHNWNibHgwWEhSY2RGeDBlR2h5TG05d1pXNG9JRzl3ZEdsdmJuTXVkSGx3WlN3Z2IzQjBhVzl1Y3k1MWNtd3NJRzl3ZEdsdmJuTXVZWE41Ym1Nc0lHOXdkR2x2Ym5NdWRYTmxjbTVoYldVc0lHOXdkR2x2Ym5NdWNHRnpjM2R2Y21RZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCQmNIQnNlU0JqZFhOMGIyMGdabWxsYkdSeklHbG1JSEJ5YjNacFpHVmtYRzVjZEZ4MFhIUmNkR2xtSUNnZ2IzQjBhVzl1Y3k1NGFISkdhV1ZzWkhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWm05eUlDZ2dhU0JwYmlCdmNIUnBiMjV6TG5ob2NrWnBaV3hrY3lBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhob2Nsc2dhU0JkSUQwZ2IzQjBhVzl1Y3k1NGFISkdhV1ZzWkhOYklHa2dYVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFF2THlCUGRtVnljbWxrWlNCdGFXMWxJSFI1Y0dVZ2FXWWdibVZsWkdWa1hHNWNkRngwWEhSY2RHbG1JQ2dnYjNCMGFXOXVjeTV0YVcxbFZIbHdaU0FtSmlCNGFISXViM1psY25KcFpHVk5hVzFsVkhsd1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSNGFISXViM1psY25KcFpHVk5hVzFsVkhsd1pTZ2diM0IwYVc5dWN5NXRhVzFsVkhsd1pTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdXQzFTWlhGMVpYTjBaV1F0VjJsMGFDQm9aV0ZrWlhKY2JseDBYSFJjZEZ4MEx5OGdSbTl5SUdOeWIzTnpMV1J2YldGcGJpQnlaWEYxWlhOMGN5d2djMlZsYVc1bklHRnpJR052Ym1ScGRHbHZibk1nWm05eUlHRWdjSEpsWm14cFoyaDBJR0Z5WlZ4dVhIUmNkRngwWEhRdkx5QmhhMmx1SUhSdklHRWdhbWxuYzJGM0lIQjFlbnBzWlN3Z2QyVWdjMmx0Y0d4NUlHNWxkbVZ5SUhObGRDQnBkQ0IwYnlCaVpTQnpkWEpsTGx4dVhIUmNkRngwWEhRdkx5QW9hWFFnWTJGdUlHRnNkMkY1Y3lCaVpTQnpaWFFnYjI0Z1lTQndaWEl0Y21WeGRXVnpkQ0JpWVhOcGN5QnZjaUJsZG1WdUlIVnphVzVuSUdGcVlYaFRaWFIxY0NsY2JseDBYSFJjZEZ4MEx5OGdSbTl5SUhOaGJXVXRaRzl0WVdsdUlISmxjWFZsYzNSekxDQjNiMjRuZENCamFHRnVaMlVnYUdWaFpHVnlJR2xtSUdGc2NtVmhaSGtnY0hKdmRtbGtaV1F1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJVzl3ZEdsdmJuTXVZM0p2YzNORWIyMWhhVzRnSmlZZ0lXaGxZV1JsY25OYlhDSllMVkpsY1hWbGMzUmxaQzFYYVhSb1hDSmRJQ2tnZTF4dVhIUmNkRngwWEhSY2RHaGxZV1JsY25OYlhDSllMVkpsY1hWbGMzUmxaQzFYYVhSb1hDSmRJRDBnWENKWVRVeElkSFJ3VW1WeGRXVnpkRndpTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnVTJWMElHaGxZV1JsY25OY2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNCcGJpQm9aV0ZrWlhKeklDa2dlMXh1WEhSY2RGeDBYSFJjZEhob2NpNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtDQnBMQ0JvWldGa1pYSnpXeUJwSUYwZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklFTmhiR3hpWVdOclhHNWNkRngwWEhSY2RHTmhiR3hpWVdOcklEMGdablZ1WTNScGIyNG9JSFI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCallXeHNZbUZqYXlBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFpHVnNaWFJsSUhob2NrTmhiR3hpWVdOcmMxc2dhV1FnWFR0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCNGFISXViMjVzYjJGa0lEMGdlR2h5TG05dVpYSnliM0lnUFNCdWRXeHNPMXh1WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2RIbHdaU0E5UFQwZ1hDSmhZbTl5ZEZ3aUlDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSGhvY2k1aFltOXlkQ2dwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCMGVYQmxJRDA5UFNCY0ltVnljbTl5WENJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBZMjl0Y0d4bGRHVW9YRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCbWFXeGxPaUJ3Y205MGIyTnZiQ0JoYkhkaGVYTWdlV2xsYkdSeklITjBZWFIxY3lBd095QnpaV1VnSXpnMk1EVXNJQ014TkRJd04xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBlR2h5TG5OMFlYUjFjeXhjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEhob2NpNXpkR0YwZFhOVVpYaDBYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmpiMjF3YkdWMFpTaGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSGhvY2xOMVkyTmxjM05UZEdGMGRYTmJJSGhvY2k1emRHRjBkWE1nWFNCOGZDQjRhSEl1YzNSaGRIVnpMRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwZUdoeUxuTjBZWFIxYzFSbGVIUXNYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJUbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkQzh2SUVGalkyVnpjMmx1WnlCaWFXNWhjbmt0WkdGMFlTQnlaWE53YjI1elpWUmxlSFFnZEdoeWIzZHpJR0Z1SUdWNFkyVndkR2x2Ymx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MEx5OGdLQ014TVRReU5pbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSFI1Y0dWdlppQjRhSEl1Y21WemNHOXVjMlZVWlhoMEl
14938EMDlQU0JjSW5OMGNtbHVaMXdpSUQ4Z2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFIwWlhoME9pQjRhSEl1Y21WemNHOXVjMlZVWlhoMFhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUjlJRG9nZFc1a1pXWnBibVZrTEZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MGVHaHlMbWRsZEVGc2JGSmxjM0J2Ym5ObFNHVmhaR1Z5Y3lncFhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MEtUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RIMDdYRzVjZEZ4MFhIUmNkSDA3WEc1Y2JseDBYSFJjZEZ4MEx5OGdUR2x6ZEdWdUlIUnZJR1YyWlc1MGMxeHVYSFJjZEZ4MFhIUjRhSEl1YjI1c2IyRmtJRDBnWTJGc2JHSmhZMnNvS1R0Y2JseDBYSFJjZEZ4MGVHaHlMbTl1WlhKeWIzSWdQU0JqWVd4c1ltRmpheWhjSW1WeWNtOXlYQ0lwTzF4dVhHNWNkRngwWEhSY2RDOHZJRU55WldGMFpTQjBhR1VnWVdKdmNuUWdZMkZzYkdKaFkydGNibHgwWEhSY2RGeDBZMkZzYkdKaFkyc2dQU0I0YUhKRFlXeHNZbUZqYTNOYklHbGtJRjBnUFNCallXeHNZbUZqYXloY0ltRmliM0owWENJcE8xeHVYRzVjZEZ4MFhIUmNkSFJ5ZVNCN1hHNWNkRngwWEhSY2RGeDBMeThnUkc4Z2MyVnVaQ0IwYUdVZ2NtVnhkV1Z6ZENBb2RHaHBjeUJ0WVhrZ2NtRnBjMlVnWVc0Z1pYaGpaWEIwYVc5dUtWeHVYSFJjZEZ4MFhIUmNkSGhvY2k1elpXNWtLQ0J2Y0hScGIyNXpMbWhoYzBOdmJuUmxiblFnSmlZZ2IzQjBhVzl1Y3k1a1lYUmhJSHg4SUc1MWJHd2dLVHRjYmx4MFhIUmNkRngwZlNCallYUmphQ0FvSUdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z0l6RTBOamd6T2lCUGJteDVJSEpsZEdoeWIzY2dhV1lnZEdocGN5Qm9ZWE51SjNRZ1ltVmxiaUJ1YjNScFptbGxaQ0JoY3lCaGJpQmxjbkp2Y2lCNVpYUmNibHgwWEhSY2RGeDBYSFJwWmlBb0lHTmhiR3hpWVdOcklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRHaHliM2NnWlR0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDBzWEc1Y2JseDBYSFJjZEdGaWIzSjBPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JqWVd4c1ltRmpheUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmpZV3hzWW1GamF5Z3BPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVHRjYmx4MGZWeHVmU2s3WEc1Y2JseHVYRzVjYmk4dklFbHVjM1JoYkd3Z2MyTnlhWEIwSUdSaGRHRlVlWEJsWEc1cVVYVmxjbmt1WVdwaGVGTmxkSFZ3S0h0Y2JseDBZV05qWlhCMGN6b2dlMXh1WEhSY2RITmpjbWx3ZERvZ1hDSjBaWGgwTDJwaGRtRnpZM0pwY0hRc0lHRndjR3hwWTJGMGFXOXVMMnBoZG1GelkzSnBjSFFzSUdGd2NHeHBZMkYwYVc5dUwyVmpiV0Z6WTNKcGNIUXNJR0Z3Y0d4cFkyRjBhVzl1TDNndFpXTnRZWE5qY21sd2RGd2lYRzVjZEgwc1hHNWNkR052Ym5SbGJuUnpPaUI3WEc1Y2RGeDBjMk55YVhCME9pQXZLRDg2YW1GMllYeGxZMjFoS1hOamNtbHdkQzljYmx4MGZTeGNibHgwWTI5dWRtVnlkR1Z5Y3pvZ2UxeHVYSFJjZEZ3aWRHVjRkQ0J6WTNKcGNIUmNJam9nWm5WdVkzUnBiMjRvSUhSbGVIUWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaMnh2WW1Gc1JYWmhiQ2dnZEdWNGRDQXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlIUmxlSFE3WEc1Y2RGeDBmVnh1WEhSOVhHNTlLVHRjYmx4dUx5OGdTR0Z1Wkd4bElHTmhZMmhsSjNNZ2MzQmxZMmxoYkNCallYTmxJR0Z1WkNCamNtOXpjMFJ2YldGcGJseHVhbEYxWlhKNUxtRnFZWGhRY21WbWFXeDBaWElvSUZ3aWMyTnlhWEIwWENJc0lHWjFibU4wYVc5dUtDQnpJQ2tnZTF4dVhIUnBaaUFvSUhNdVkyRmphR1VnUFQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUnpMbU5oWTJobElEMGdabUZzYzJVN1hHNWNkSDFjYmx4MGFXWWdLQ0J6TG1OeWIzTnpSRzl0WVdsdUlDa2dlMXh1WEhSY2RITXVkSGx3WlNBOUlGd2lSMFZVWENJN1hHNWNkSDFjYm4wcE8xeHVYRzR2THlCQ2FXNWtJSE5qY21sd2RDQjBZV2NnYUdGamF5QjBjbUZ1YzNCdmNuUmNibXBSZFdWeWVTNWhhbUY0VkhKaGJuTndiM0owS0NCY0luTmpjbWx3ZEZ3aUxDQm1kVzVqZEdsdmJpZ2djeUFwSUh0Y2JseDBMeThnVkdocGN5QjBjbUZ1YzNCdmNuUWdiMjVzZVNCa1pXRnNjeUIzYVhSb0lHTnliM056SUdSdmJXRnBiaUJ5WlhGMVpYTjBjMXh1WEhScFppQW9JSE11WTNKdmMzTkViMjFoYVc0Z0tTQjdYRzVjZEZ4MGRtRnlJSE5qY21sd2RDd2dZMkZzYkdKaFkyczdYRzVjZEZ4MGNtVjBkWEp1SUh0Y2JseDBYSFJjZEhObGJtUTZJR1oxYm1OMGFXOXVLQ0JmTENCamIyMXdiR1YwWlNBcElIdGNibHgwWEhSY2RGeDBjMk55YVhCMElEMGdhbEYxWlhKNUtGd2lQSE5qY21sd2RENWNJaWt1Y0hKdmNDaDdYRzVjZEZ4MFhIUmNkRngwWVhONWJtTTZJSFJ5ZFdVc1hHNWNkRngwWEhSY2RGeDBZMmhoY25ObGREb2djeTV6WTNKcGNIUkRhR0Z5YzJWMExGeHVYSFJjZEZ4MFhIUmNkSE55WXpvZ2N5NTFjbXhjYmx4MFhIUmNkRngwZlNrdWIyNG9YRzVjZEZ4MFhIUmNkRngwWENKc2IyRmtJR1Z5Y205eVhDSXNYRzVjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCbWRXNWpkR2x2YmlnZ1pYWjBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBjMk55YVhCMExuSmxiVzkyWlNncE8xeHVYSFJjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCdWRXeHNPMXh1WEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JsZG5RZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RHTnZiWEJzWlhSbEtDQmxkblF1ZEhsd1pTQTlQVDBnWENKbGNuSnZjbHdpSUQ4Z05EQTBJRG9nTWpBd0xDQmxkblF1ZEhsd1pTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwS1R0Y2JseDBYSFJjZEZ4MFpHOWpkVzFsYm5RdWFHVmhaQzVoY0hCbGJtUkRhR2xzWkNnZ2MyTnlhWEIwV3lBd0lGMGdLVHRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFJoWW05eWREb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMkZzYkdKaFkyc2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyRnNiR0poWTJzb0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMDdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JseHVYRzUyWVhJZ2IyeGtRMkZzYkdKaFkydHpJRDBnVzEwc1hHNWNkSEpxYzI5dWNDQTlJQzhvUFNsY1hEOG9QejBtZkNRcGZGeGNQMXhjUHk4N1hHNWNiaTh2SUVSbFptRjFiSFFnYW5OdmJuQWdjMlYwZEdsdVozTmNibXBSZFdWeWVTNWhhbUY0VTJWMGRYQW9lMXh1WEhScWMyOXVjRG9nWENKall
14938XeHNZbUZqYTF3aUxGeHVYSFJxYzI5dWNFTmhiR3hpWVdOck9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWTJGc2JHSmhZMnNnUFNCdmJHUkRZV3hzWW1GamEzTXVjRzl3S0NrZ2ZId2dLQ0JxVVhWbGNua3VaWGh3WVc1a2J5QXJJRndpWDF3aUlDc2dLQ0J1YjI1alpTc3JJQ2tnS1R0Y2JseDBYSFIwYUdseld5QmpZV3hzWW1GamF5QmRJRDBnZEhKMVpUdGNibHgwWEhSeVpYUjFjbTRnWTJGc2JHSmhZMnM3WEc1Y2RIMWNibjBwTzF4dVhHNHZMeUJFWlhSbFkzUXNJRzV2Y20xaGJHbDZaU0J2Y0hScGIyNXpJR0Z1WkNCcGJuTjBZV3hzSUdOaGJHeGlZV05yY3lCbWIzSWdhbk52Ym5BZ2NtVnhkV1Z6ZEhOY2JtcFJkV1Z5ZVM1aGFtRjRVSEpsWm1sc2RHVnlLQ0JjSW1wemIyNGdhbk52Ym5CY0lpd2dablZ1WTNScGIyNG9JSE1zSUc5eWFXZHBibUZzVTJWMGRHbHVaM01zSUdweFdFaFNJQ2tnZTF4dVhHNWNkSFpoY2lCallXeHNZbUZqYTA1aGJXVXNJRzkyWlhKM2NtbDBkR1Z1TENCeVpYTndiMjV6WlVOdmJuUmhhVzVsY2l4Y2JseDBYSFJxYzI5dVVISnZjQ0E5SUhNdWFuTnZibkFnSVQwOUlHWmhiSE5sSUNZbUlDZ2djbXB6YjI1d0xuUmxjM1FvSUhNdWRYSnNJQ2tnUDF4dVhIUmNkRngwWENKMWNteGNJaUE2WEc1Y2RGeDBYSFIwZVhCbGIyWWdjeTVrWVhSaElEMDlQU0JjSW5OMGNtbHVaMXdpSUNZbUlDRW9JSE11WTI5dWRHVnVkRlI1Y0dVZ2ZId2dYQ0pjSWlBcExtbHVaR1Y0VDJZb1hDSmhjSEJzYVdOaGRHbHZiaTk0TFhkM2R5MW1iM0p0TFhWeWJHVnVZMjlrWldSY0lpa2dKaVlnY21wemIyNXdMblJsYzNRb0lITXVaR0YwWVNBcElDWW1JRndpWkdGMFlWd2lYRzVjZEZ4MEtUdGNibHh1WEhRdkx5QklZVzVrYkdVZ2FXWm1JSFJvWlNCbGVIQmxZM1JsWkNCa1lYUmhJSFI1Y0dVZ2FYTWdYQ0pxYzI5dWNGd2lJRzl5SUhkbElHaGhkbVVnWVNCd1lYSmhiV1YwWlhJZ2RHOGdjMlYwWEc1Y2RHbG1JQ2dnYW5OdmJsQnliM0FnZkh3Z2N5NWtZWFJoVkhsd1pYTmJJREFnWFNBOVBUMGdYQ0pxYzI5dWNGd2lJQ2tnZTF4dVhHNWNkRngwTHk4Z1IyVjBJR05oYkd4aVlXTnJJRzVoYldVc0lISmxiV1Z0WW1WeWFXNW5JSEJ5WldWNGFYTjBhVzVuSUhaaGJIVmxJR0Z6YzI5amFXRjBaV1FnZDJsMGFDQnBkRnh1WEhSY2RHTmhiR3hpWVdOclRtRnRaU0E5SUhNdWFuTnZibkJEWVd4c1ltRmpheUE5SUdwUmRXVnllUzVwYzBaMWJtTjBhVzl1S0NCekxtcHpiMjV3UTJGc2JHSmhZMnNnS1NBL1hHNWNkRngwWEhSekxtcHpiMjV3UTJGc2JHSmhZMnNvS1NBNlhHNWNkRngwWEhSekxtcHpiMjV3UTJGc2JHSmhZMnM3WEc1Y2JseDBYSFF2THlCSmJuTmxjblFnWTJGc2JHSmhZMnNnYVc1MGJ5QjFjbXdnYjNJZ1ptOXliU0JrWVhSaFhHNWNkRngwYVdZZ0tDQnFjMjl1VUhKdmNDQXBJSHRjYmx4MFhIUmNkSE5iSUdwemIyNVFjbTl3SUYwZ1BTQnpXeUJxYzI5dVVISnZjQ0JkTG5KbGNHeGhZMlVvSUhKcWMyOXVjQ3dnWENJa01Wd2lJQ3NnWTJGc2JHSmhZMnRPWVcxbElDazdYRzVjZEZ4MGZTQmxiSE5sSUdsbUlDZ2djeTVxYzI5dWNDQWhQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJ6TG5WeWJDQXJQU0FvSUhKeGRXVnllUzUwWlhOMEtDQnpMblZ5YkNBcElEOGdYQ0ltWENJZ09pQmNJajljSWlBcElDc2djeTVxYzI5dWNDQXJJRndpUFZ3aUlDc2dZMkZzYkdKaFkydE9ZVzFsTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUZWelpTQmtZWFJoSUdOdmJuWmxjblJsY2lCMGJ5QnlaWFJ5YVdWMlpTQnFjMjl1SUdGbWRHVnlJSE5qY21sd2RDQmxlR1ZqZFhScGIyNWNibHgwWEhSekxtTnZiblpsY25SbGNuTmJYQ0p6WTNKcGNIUWdhbk52Ymx3aVhTQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQWhjbVZ6Y0c5dWMyVkRiMjUwWVdsdVpYSWdLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzVsY25KdmNpZ2dZMkZzYkdKaFkydE9ZVzFsSUNzZ1hDSWdkMkZ6SUc1dmRDQmpZV3hzWldSY0lpQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBjbVYwZFhKdUlISmxjM0J2Ym5ObFEyOXVkR0ZwYm1WeVd5QXdJRjA3WEc1Y2RGeDBmVHRjYmx4dVhIUmNkQzh2SUdadmNtTmxJR3B6YjI0Z1pHRjBZVlI1Y0dWY2JseDBYSFJ6TG1SaGRHRlVlWEJsYzFzZ01DQmRJRDBnWENKcWMyOXVYQ0k3WEc1Y2JseDBYSFF2THlCSmJuTjBZV3hzSUdOaGJHeGlZV05yWEc1Y2RGeDBiM1psY25keWFYUjBaVzRnUFNCM2FXNWtiM2RiSUdOaGJHeGlZV05yVG1GdFpTQmRPMXh1WEhSY2RIZHBibVJ2ZDFzZ1kyRnNiR0poWTJ0T1lXMWxJRjBnUFNCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RISmxjM0J2Ym5ObFEyOXVkR0ZwYm1WeUlEMGdZWEpuZFcxbGJuUnpPMXh1WEhSY2RIMDdYRzVjYmx4MFhIUXZMeUJEYkdWaGJpMTFjQ0JtZFc1amRHbHZiaUFvWm1seVpYTWdZV1owWlhJZ1kyOXVkbVZ5ZEdWeWN5bGNibHgwWEhScWNWaElVaTVoYkhkaGVYTW9ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFF2THlCU1pYTjBiM0psSUhCeVpXVjRhWE4wYVc1bklIWmhiSFZsWEc1Y2RGeDBYSFIzYVc1a2IzZGJJR05oYkd4aVlXTnJUbUZ0WlNCZElEMGdiM1psY25keWFYUjBaVzQ3WEc1Y2JseDBYSFJjZEM4dklGTmhkbVVnWW1GamF5QmhjeUJtY21WbFhHNWNkRngwWEhScFppQW9JSE5iSUdOaGJHeGlZV05yVG1GdFpTQmRJQ2tnZTF4dVhIUmNkRngwWEhRdkx5QnRZV3RsSUhOMWNtVWdkR2hoZENCeVpTMTFjMmx1WnlCMGFHVWdiM0IwYVc5dWN5QmtiMlZ6YmlkMElITmpjbVYzSUhSb2FXNW5jeUJoY205MWJtUmNibHgwWEhSY2RGeDBjeTVxYzI5dWNFTmhiR3hpWVdOcklEMGdiM0pwWjJsdVlXeFRaWFIwYVc1bmN5NXFjMjl1Y0VOaGJHeGlZV05yTzF4dVhHNWNkRngwWEhSY2RDOHZJSE5oZG1VZ2RHaGxJR05oYkd4aVlXTnJJRzVoYldVZ1ptOXlJR1oxZEhWeVpTQjFjMlZjYmx4MFhIUmNkRngwYjJ4a1EyRnNiR0poWTJ0ekxuQjFjMmdvSUdOaGJHeGlZV05yVG1GdFpTQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCRFlXeHNJR2xtSUdsMElIZGhjeUJoSUdaMWJtTjBhVzl1SUdGdVpDQjNaU0JvWVhabElHRWdjbVZ6Y0c5dWMyVmNibHgwWEhSY2RHbG1JQ2dnY21WemNHOXVjMlZEYjI1MFlXbHVaWElnSmlZZ2FsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lHOTJaWEozY21sMGRHVnVJQ2tnS1NCN1hHNWNkRngwWEhSY2RHOTJaWEozY21sMGRHVnVLQ0J5WlhOd2IyNXpaVU52Ym5SaGFXNWxjbHNnTUNCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSEpsYzNCdmJuTmxRMjl1ZEdGcGJtVnlJRDBnYjNabGNuZHlhWFIwWlc0Z1BTQjFibVJsWm1sdVpXUTdYRzVjZEZ4MGZTazdYRzVjYmx4MFhIUXZMeUJFWld4bFoyRjBaU0IwYnlCelkzSnBjSFJjYmx4MFhIUnlaWFIxY200Z1hDSnpZM0pwY0hSY0lqdGNibHgwZlZ4dWZTazdYRzVjYmx4dVhHNWNiaTh2SUdSaGRHRTZJSE4wY21sdVp5QnZaaUJvZEcxc1hHNHZMeUJqYjI1MFpYaDBJQ2h2Y0hScGIyNWhiQ2s2SUVsbUlITndaV05wWm1sbFpDd2dkR2hsSUdaeVlXZHRaVzUwSUhkcGJHd2dZbVVnWTNKbFlYUmxaQ0JwYmlCMGFHbHpJR0
1493852Ym5SbGVIUXNJR1JsWm1GMWJIUnpJSFJ2SUdSdlkzVnRaVzUwWEc0dkx5QnJaV1Z3VTJOeWFYQjBjeUFvYjNCMGFXOXVZV3dwT2lCSlppQjBjblZsTENCM2FXeHNJR2x1WTJ4MVpHVWdjMk55YVhCMGN5QndZWE56WldRZ2FXNGdkR2hsSUdoMGJXd2djM1J5YVc1blhHNXFVWFZsY25rdWNHRnljMlZJVkUxTUlEMGdablZ1WTNScGIyNG9JR1JoZEdFc0lHTnZiblJsZUhRc0lHdGxaWEJUWTNKcGNIUnpJQ2tnZTF4dVhIUnBaaUFvSUNGa1lYUmhJSHg4SUhSNWNHVnZaaUJrWVhSaElDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ1ZFd4c08xeHVYSFI5WEc1Y2RHbG1JQ2dnZEhsd1pXOW1JR052Ym5SbGVIUWdQVDA5SUZ3aVltOXZiR1ZoYmx3aUlDa2dlMXh1WEhSY2RHdGxaWEJUWTNKcGNIUnpJRDBnWTI5dWRHVjRkRHRjYmx4MFhIUmpiMjUwWlhoMElEMGdabUZzYzJVN1hHNWNkSDFjYmx4MFkyOXVkR1Y0ZENBOUlHTnZiblJsZUhRZ2ZId2daRzlqZFcxbGJuUTdYRzVjYmx4MGRtRnlJSEJoY25ObFpDQTlJSEp6YVc1bmJHVlVZV2N1WlhobFl5Z2daR0YwWVNBcExGeHVYSFJjZEhOamNtbHdkSE1nUFNBaGEyVmxjRk5qY21sd2RITWdKaVlnVzEwN1hHNWNibHgwTHk4Z1UybHVaMnhsSUhSaFoxeHVYSFJwWmlBb0lIQmhjbk5sWkNBcElIdGNibHgwWEhSeVpYUjFjbTRnV3lCamIyNTBaWGgwTG1OeVpXRjBaVVZzWlcxbGJuUW9JSEJoY25ObFpGc3hYU0FwSUYwN1hHNWNkSDFjYmx4dVhIUndZWEp6WldRZ1BTQnFVWFZsY25rdVluVnBiR1JHY21GbmJXVnVkQ2dnV3lCa1lYUmhJRjBzSUdOdmJuUmxlSFFzSUhOamNtbHdkSE1nS1R0Y2JseHVYSFJwWmlBb0lITmpjbWx3ZEhNZ0ppWWdjMk55YVhCMGN5NXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MGFsRjFaWEo1S0NCelkzSnBjSFJ6SUNrdWNtVnRiM1psS0NrN1hHNWNkSDFjYmx4dVhIUnlaWFIxY200Z2FsRjFaWEo1TG0xbGNtZGxLQ0JiWFN3Z2NHRnljMlZrTG1Ob2FXeGtUbTlrWlhNZ0tUdGNibjA3WEc1Y2JseHVMeThnUzJWbGNDQmhJR052Y0hrZ2IyWWdkR2hsSUc5c1pDQnNiMkZrSUcxbGRHaHZaRnh1ZG1GeUlGOXNiMkZrSUQwZ2FsRjFaWEo1TG1adUxteHZZV1E3WEc1Y2JpOHFLbHh1SUNvZ1RHOWhaQ0JoSUhWeWJDQnBiblJ2SUdFZ2NHRm5aVnh1SUNvdlhHNXFVWFZsY25rdVptNHViRzloWkNBOUlHWjFibU4wYVc5dUtDQjFjbXdzSUhCaGNtRnRjeXdnWTJGc2JHSmhZMnNnS1NCN1hHNWNkR2xtSUNnZ2RIbHdaVzltSUhWeWJDQWhQVDBnWENKemRISnBibWRjSWlBbUppQmZiRzloWkNBcElIdGNibHgwWEhSeVpYUjFjbTRnWDJ4dllXUXVZWEJ3Ykhrb0lIUm9hWE1zSUdGeVozVnRaVzUwY3lBcE8xeHVYSFI5WEc1Y2JseDBkbUZ5SUhObGJHVmpkRzl5TENCMGVYQmxMQ0J5WlhOd2IyNXpaU3hjYmx4MFhIUnpaV3htSUQwZ2RHaHBjeXhjYmx4MFhIUnZabVlnUFNCMWNtd3VhVzVrWlhoUFppaGNJaUJjSWlrN1hHNWNibHgwYVdZZ0tDQnZabVlnUGowZ01DQXBJSHRjYmx4MFhIUnpaV3hsWTNSdmNpQTlJR3BSZFdWeWVTNTBjbWx0S0NCMWNtd3VjMnhwWTJVb0lHOW1aaUFwSUNrN1hHNWNkRngwZFhKc0lEMGdkWEpzTG5Oc2FXTmxLQ0F3TENCdlptWWdLVHRjYmx4MGZWeHVYRzVjZEM4dklFbG1JR2wwSjNNZ1lTQm1kVzVqZEdsdmJseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwWjFibU4wYVc5dUtDQndZWEpoYlhNZ0tTQXBJSHRjYmx4dVhIUmNkQzh2SUZkbElHRnpjM1Z0WlNCMGFHRjBJR2wwSjNNZ2RHaGxJR05oYkd4aVlXTnJYRzVjZEZ4MFkyRnNiR0poWTJzZ1BTQndZWEpoYlhNN1hHNWNkRngwY0dGeVlXMXpJRDBnZFc1a1pXWnBibVZrTzF4dVhHNWNkQzh2SUU5MGFHVnlkMmx6WlN3Z1luVnBiR1FnWVNCd1lYSmhiU0J6ZEhKcGJtZGNibHgwZlNCbGJITmxJR2xtSUNnZ2NHRnlZVzF6SUNZbUlIUjVjR1Z2WmlCd1lYSmhiWE1nUFQwOUlGd2liMkpxWldOMFhDSWdLU0I3WEc1Y2RGeDBkSGx3WlNBOUlGd2lVRTlUVkZ3aU8xeHVYSFI5WEc1Y2JseDBMeThnU1dZZ2QyVWdhR0YyWlNCbGJHVnRaVzUwY3lCMGJ5QnRiMlJwWm5rc0lHMWhhMlVnZEdobElISmxjWFZsYzNSY2JseDBhV1lnS0NCelpXeG1MbXhsYm1kMGFDQStJREFnS1NCN1hHNWNkRngwYWxGMVpYSjVMbUZxWVhnb2UxeHVYSFJjZEZ4MGRYSnNPaUIxY213c1hHNWNibHgwWEhSY2RDOHZJR2xtSUZ3aWRIbHdaVndpSUhaaGNtbGhZbXhsSUdseklIVnVaR1ZtYVc1bFpDd2dkR2hsYmlCY0lrZEZWRndpSUcxbGRHaHZaQ0IzYVd4c0lHSmxJSFZ6WldSY2JseDBYSFJjZEhSNWNHVTZJSFI1Y0dVc1hHNWNkRngwWEhSa1lYUmhWSGx3WlRvZ1hDSm9kRzFzWENJc1hHNWNkRngwWEhSa1lYUmhPaUJ3WVhKaGJYTmNibHgwWEhSOUtTNWtiMjVsS0daMWJtTjBhVzl1S0NCeVpYTndiMjV6WlZSbGVIUWdLU0I3WEc1Y2JseDBYSFJjZEM4dklGTmhkbVVnY21WemNHOXVjMlVnWm05eUlIVnpaU0JwYmlCamIyMXdiR1YwWlNCallXeHNZbUZqYTF4dVhIUmNkRngwY21WemNHOXVjMlVnUFNCaGNtZDFiV1Z1ZEhNN1hHNWNibHgwWEhSY2RITmxiR1l1YUhSdGJDZ2djMlZzWldOMGIzSWdQMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JR0VnYzJWc1pXTjBiM0lnZDJGeklITndaV05wWm1sbFpDd2diRzlqWVhSbElIUm9aU0J5YVdkb2RDQmxiR1Z0Wlc1MGN5QnBiaUJoSUdSMWJXMTVJR1JwZGx4dVhIUmNkRngwWEhRdkx5QkZlR05zZFdSbElITmpjbWx3ZEhNZ2RHOGdZWFp2YVdRZ1NVVWdKMUJsY20xcGMzTnBiMjRnUkdWdWFXVmtKeUJsY25KdmNuTmNibHgwWEhSY2RGeDBhbEYxWlhKNUtGd2lQR1JwZGo1Y0lpa3VZWEJ3Wlc1a0tDQnFVWFZsY25rdWNHRnljMlZJVkUxTUtDQnlaWE53YjI1elpWUmxlSFFnS1NBcExtWnBibVFvSUhObGJHVmpkRzl5SUNrZ09seHVYRzVjZEZ4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCMWMyVWdkR2hsSUdaMWJHd2djbVZ6ZFd4MFhHNWNkRngwWEhSY2RISmxjM0J2Ym5ObFZHVjRkQ0FwTzF4dVhHNWNkRngwZlNrdVkyOXRjR3hsZEdVb0lHTmhiR3hpWVdOcklDWW1JR1oxYm1OMGFXOXVLQ0JxY1ZoSVVpd2djM1JoZEhWeklDa2dlMXh1WEhSY2RGeDBjMlZzWmk1bFlXTm9LQ0JqWVd4c1ltRmpheXdnY21WemNHOXVjMlVnZkh3Z1d5QnFjVmhJVWk1eVpYTndiMjV6WlZSbGVIUXNJSE4wWVhSMWN5d2dhbkZZU0ZJZ1hTQXBPMXh1WEhSY2RIMHBPMXh1WEhSOVhHNWNibHgwY21WMGRYSnVJSFJvYVhNN1hHNTlPMXh1WEc1Y2JseHVYRzR2THlCQmRIUmhZMmdnWVNCaWRXNWphQ0J2WmlCbWRXNWpkR2x2Ym5NZ1ptOXlJR2hoYm1Sc2FXNW5JR052YlcxdmJpQkJTa0ZZSUdWMlpXNTBjMXh1YWxGMVpYSjVMbVZoWTJnb0lGc2dYQ0poYW1GNFUzUmhjblJjSWl3Z1hDSmhhbUY0VTNSdmNGd2lMQ0JjSW1GcVlYaERiMjF3YkdWMFpWd2lMQ0JjSW1GcVlYaEZjbkp2Y2x3aUxDQmNJbUZxWVhoVGRXTmpaWE56WENJc0lGd2lZV3BoZUZObGJtUmNJaUJkTENCbWRXNWpkR2x2YmlnZ2FTd2dkSGx3WlNBcElIdGNibHgwYWxGMVpYSjVMbVp1V3lCMGVYQmxJRjBnUFNCbWRXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YjI0b0lIUjVjR1VzSUdadUlDazdYRzVjZEgwN1hHNTlLVHRjYmx4dVhHNWNibHh1YWxGMVpYSjVMbVY0Y0hJdVptbHNkR1Z5Y3k1aGJtbHRZWFJsWkNBOUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtZHlaWEFvYWxGMVpYSjVMblJwYldWeWN5d2dablZ1WTNScGIyNG9JR1p1SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdElEMDlQU0JtYmk1bGJHVnRPMXh1WEhSOUtTNXNaVzVuZEdnN1hHNTlPMXh1WEc1Y2JseHVYRzUyWVhJZ1pHOWpSV3hsYlNBOUlIZHBibVJ2ZHk1a2IyTjFiV1Z1ZEM1a2IyTjFiV1Z1ZEVWc1pXMWxiblE3WEc1Y2JpOHFLbHh1SUNvZ1IyVjBjeUJoSUhkcGJtUnZkeUJtY205dElHRnVJR1ZzWlcxbGJuUmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBWMmx1Wkc5M0tDQmxiR1Z0SUNrZ2UxeHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtbHpWMmx1Wkc5M0tDQmxiR1Z0SUNrZ1B5QmxiR1Z0SURvZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ09TQW1KaUJsYkdWdExtUmxabUYxYkhSV2FXVjNPMXh1ZlZ4dVhHNXFVWFZsY25rdWIyWm1jMlYwSUQwZ2UxeHVYSFJ6WlhSUFptWnpaWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0J2Y0hScGIyNXpMQ0JwSUNrZ2UxeHVYSFJjZEhaaGNpQmpkWEpRYjNOcGRHbHZiaXdnWTNWeVRHVm1kQ3dnWTNWeVExTlRWRzl3TENCamRYSlViM0FzSUdOMWNrOW1abk5sZEN3Z1kzVnlRMU5UVEdWbWRDd2dZMkZzWTNWc1lYUmxVRzl6YVhScGIyNHNYRzVjZEZ4MFhIUndiM05wZEdsdmJpQTlJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpY0c5emFYUnBiMjVjSWlBcExGeHVYSFJjZEZ4MFkzVnlSV3hsYlNBOUlHcFJkV1Z5ZVNnZ1pXeGxiU0FwTEZ4dVhIUmNkRngwY0hKdmNITWdQU0I3ZlR0Y2JseHVYSFJjZEM4dklGTmxkQ0J3YjNOcGRHbHZiaUJtYVhKemRDd2dhVzR0WTJGelpTQjBiM0F2YkdWbWRDQmhjbVVnYzJWMElHVjJaVzRnYjI0Z2MzUmhkR2xqSUdWc1pXMWNibHgwWEhScFppQW9JSEJ2YzJsMGFXOXVJRDA5UFNCY0luTjBZWFJwWTF3aUlDa2dlMXh1WEhSY2RGeDBaV3hsYlM1emRIbHNaUzV3YjNOcGRHbHZiaUE5SUZ3aWNtVnNZWFJ
14938wZG1WY0lqdGNibHgwWEhSOVhHNWNibHgwWEhSamRYSlBabVp6WlhRZ1BTQmpkWEpGYkdWdExtOW1abk5sZENncE8xeHVYSFJjZEdOMWNrTlRVMVJ2Y0NBOUlHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2lkRzl3WENJZ0tUdGNibHgwWEhSamRYSkRVMU5NWldaMElEMGdhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0pzWldaMFhDSWdLVHRjYmx4MFhIUmpZV3hqZFd4aGRHVlFiM05wZEdsdmJpQTlJQ2dnY0c5emFYUnBiMjRnUFQwOUlGd2lZV0p6YjJ4MWRHVmNJaUI4ZkNCd2IzTnBkR2x2YmlBOVBUMGdYQ0ptYVhobFpGd2lJQ2tnSmlaY2JseDBYSFJjZENnZ1kzVnlRMU5UVkc5d0lDc2dZM1Z5UTFOVFRHVm1kQ0FwTG1sdVpHVjRUMllvWENKaGRYUnZYQ0lwSUQ0Z0xURTdYRzVjYmx4MFhIUXZMeUJPWldWa0lIUnZJR0psSUdGaWJHVWdkRzhnWTJGc1kzVnNZWFJsSUhCdmMybDBhVzl1SUdsbUlHVnBkR2hsY2x4dVhIUmNkQzh2SUhSdmNDQnZjaUJzWldaMElHbHpJR0YxZEc4Z1lXNWtJSEJ2YzJsMGFXOXVJR2x6SUdWcGRHaGxjaUJoWW5OdmJIVjBaU0J2Y2lCbWFYaGxaRnh1WEhSY2RHbG1JQ2dnWTJGc1kzVnNZWFJsVUc5emFYUnBiMjRnS1NCN1hHNWNkRngwWEhSamRYSlFiM05wZEdsdmJpQTlJR04xY2tWc1pXMHVjRzl6YVhScGIyNG9LVHRjYmx4MFhIUmNkR04xY2xSdmNDQTlJR04xY2xCdmMybDBhVzl1TG5SdmNEdGNibHgwWEhSY2RHTjFja3hsWm5RZ1BTQmpkWEpRYjNOcGRHbHZiaTVzWldaME8xeHVYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEdOMWNsUnZjQ0E5SUhCaGNuTmxSbXh2WVhRb0lHTjFja05UVTFSdmNDQXBJSHg4SURBN1hHNWNkRngwWEhSamRYSk1aV1owSUQwZ2NHRnljMlZHYkc5aGRDZ2dZM1Z5UTFOVFRHVm1kQ0FwSUh4OElEQTdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnYjNCMGFXOXVjeUFwSUNrZ2UxeHVYSFJjZEZ4MGIzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NdVkyRnNiQ2dnWld4bGJTd2dhU3dnWTNWeVQyWm1jMlYwSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnZjSFJwYjI1ekxuUnZjQ0FoUFNCdWRXeHNJQ2tnZTF4dVhIUmNkRngwY0hKdmNITXVkRzl3SUQwZ0tDQnZjSFJwYjI1ekxuUnZjQ0F0SUdOMWNrOW1abk5sZEM1MGIzQWdLU0FySUdOMWNsUnZjRHRjYmx4MFhIUjlYRzVjZEZ4MGFXWWdLQ0J2Y0hScGIyNXpMbXhsWm5RZ0lUMGdiblZzYkNBcElIdGNibHgwWEhSY2RIQnliM0J6TG14bFpuUWdQU0FvSUc5d2RHbHZibk11YkdWbWRDQXRJR04xY2s5bVpuTmxkQzVzWldaMElDa2dLeUJqZFhKTVpXWjBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnWENKMWMybHVaMXdpSUdsdUlHOXdkR2x2Ym5NZ0tTQjdYRzVjZEZ4MFhIUnZjSFJwYjI1ekxuVnphVzVuTG1OaGJHd29JR1ZzWlcwc0lIQnliM0J6SUNrN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWTNWeVJXeGxiUzVqYzNNb0lIQnliM0J6SUNrN1hHNWNkRngwZlZ4dVhIUjlYRzU5TzF4dVhHNXFVWFZsY25rdVptNHVaWGgwWlc1a0tIdGNibHgwYjJabWMyVjBPaUJtZFc1amRHbHZiaWdnYjNCMGFXOXVjeUFwSUh0Y2JseDBYSFJwWmlBb0lHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2IzQjBhVzl1Y3lBOVBUMGdkVzVrWldacGJtVmtJRDljYmx4MFhIUmNkRngwZEdocGN5QTZYRzVjZEZ4MFhIUmNkSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdnYVNBcElIdGNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3ViMlptYzJWMExuTmxkRTltWm5ObGRDZ2dkR2hwY3l3Z2IzQjBhVzl1Y3l3Z2FTQXBPMXh1WEhSY2RGeDBYSFI5S1R0Y2JseDBYSFI5WEc1Y2JseDBYSFIyWVhJZ1pHOWpSV3hsYlN3Z2QybHVMRnh1WEhSY2RGeDBaV3hsYlNBOUlIUm9hWE5iSURBZ1hTeGNibHgwWEhSY2RHSnZlQ0E5SUhzZ2RHOXdPaUF3TENCc1pXWjBPaUF3SUgwc1hHNWNkRngwWEhSa2IyTWdQU0JsYkdWdElDWW1JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkRHRjYmx4dVhIUmNkR2xtSUNnZ0lXUnZZeUFwSUh0Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUmtiMk5GYkdWdElEMGdaRzlqTG1SdlkzVnRaVzUwUld4bGJXVnVkRHRjYmx4dVhIUmNkQzh2SUUxaGEyVWdjM1Z5WlNCcGRDZHpJRzV2ZENCaElHUnBjMk52Ym01bFkzUmxaQ0JFVDAwZ2JtOWtaVnh1WEhSY2RHbG1JQ2dnSVdwUmRXVnllUzVqYjI1MFlXbHVjeWdnWkc5alJXeGxiU3dnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR0p2ZUR0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCVGRYQndiM0owT2lCQ2JHRmphMEpsY25KNUlEVXNJR2xQVXlBeklDaHZjbWxuYVc1aGJDQnBVR2h2Ym1VcFhHNWNkRngwTHk4Z1NXWWdkMlVnWkc5dUozUWdhR0YyWlNCblFrTlNMQ0JxZFhOMElIVnpaU0F3TERBZ2NtRjBhR1Z5SUhSb1lXNGdaWEp5YjNKY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCbGJHVnRMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENBaFBUMGdjM1J5ZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFltOTRJRDBnWld4bGJTNW5aWFJDYjNWdVpHbHVaME5zYVdWdWRGSmxZM1FvS1R0Y2JseDBYSFI5WEc1Y2RGeDBkMmx1SUQwZ1oyVjBWMmx1Wkc5M0tDQmtiMk1nS1R0Y2JseDBYSFJ5WlhSMWNtNGdlMXh1WEhSY2RGeDBkRzl3T2lCaWIzZ3VkRzl3SUNzZ2QybHVMbkJoWjJWWlQyWm1jMlYwSUMwZ1pHOWpSV3hsYlM1amJHbGxiblJVYjNBc1hHNWNkRngwWEhSc1pXWjBPaUJpYjNndWJHVm1kQ0FySUhkcGJpNXdZV2RsV0U5bVpuTmxkQ0F0SUdSdlkwVnNaVzB1WTJ4cFpXNTBUR1ZtZEZ4dVhIUmNkSDA3WEc1Y2RIMHNYRzVjYmx4MGNHOXphWFJwYjI0NklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RHbG1JQ2dnSVhSb2FYTmJJREFnWFNBcElIdGNibHgwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFI5WEc1Y2JseDBYSFIyWVhJZ2IyWm1jMlYwVUdGeVpXNTBMQ0J2Wm1aelpYUXNYRzVjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXNnTUNCZExGeHVYSFJjZEZ4MGNHRnlaVzUwVDJabWMyVjBJRDBnZXlCMGIzQTZJREFzSUd4bFpuUTZJREFnZlR0Y2JseHVYSFJjZEM4dklFWnBlR1ZrSUdWc1pXMWxiblJ6SUdGeVpTQnZabVp6WlhRZ1puSnZiU0IzYVc1a2IzY2dLSEJoY21WdWRFOW1abk5sZENBOUlIdDBiM0E2TUN3Z2JHVm1kRG9nTUgwc0lHSmxZMkYxYzJVZ2FYUWdhWE1nYVhSeklHOXViSGtnYjJabWMyVjBJSEJoY21WdWRGeHVYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0p3YjNOcGRHbHZibHdpSUNrZ1BUMDlJRndpWm1sNFpXUmNJaUFwSUh0Y2JseDBYSFJjZEM4dklFRnpjM1Z0WlNCblpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUWdhWE1nZEdobGNtVWdkMmhsYmlCamIyMXdkWFJsWkNCd2IzTn
14938BkR2x2YmlCcGN5Qm1hWGhsWkZ4dVhIUmNkRngwYjJabWMyVjBJRDBnWld4bGJTNW5aWFJDYjNWdVpHbHVaME5zYVdWdWRGSmxZM1FvS1R0Y2JseHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFF2THlCSFpYUWdLbkpsWVd3cUlHOW1abk5sZEZCaGNtVnVkRnh1WEhSY2RGeDBiMlptYzJWMFVHRnlaVzUwSUQwZ2RHaHBjeTV2Wm1aelpYUlFZWEpsYm5Rb0tUdGNibHh1WEhSY2RGeDBMeThnUjJWMElHTnZjbkpsWTNRZ2IyWm1jMlYwYzF4dVhIUmNkRngwYjJabWMyVjBJRDBnZEdocGN5NXZabVp6WlhRb0tUdGNibHgwWEhSY2RHbG1JQ2dnSVdwUmRXVnllUzV1YjJSbFRtRnRaU2dnYjJabWMyVjBVR0Z5Wlc1MFd5QXdJRjBzSUZ3aWFIUnRiRndpSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkSEJoY21WdWRFOW1abk5sZENBOUlHOW1abk5sZEZCaGNtVnVkQzV2Wm1aelpYUW9LVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1FXUmtJRzltWm5ObGRGQmhjbVZ1ZENCaWIzSmtaWEp6WEc1Y2RGeDBYSFJ3WVhKbGJuUlBabVp6WlhRdWRHOXdJQ3M5SUdwUmRXVnllUzVqYzNNb0lHOW1abk5sZEZCaGNtVnVkRnNnTUNCZExDQmNJbUp2Y21SbGNsUnZjRmRwWkhSb1hDSXNJSFJ5ZFdVZ0tUdGNibHgwWEhSY2RIQmhjbVZ1ZEU5bVpuTmxkQzVzWldaMElDczlJR3BSZFdWeWVTNWpjM01vSUc5bVpuTmxkRkJoY21WdWRGc2dNQ0JkTENCY0ltSnZjbVJsY2t4bFpuUlhhV1IwYUZ3aUxDQjBjblZsSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UzVmlkSEpoWTNRZ2NHRnlaVzUwSUc5bVpuTmxkSE1nWVc1a0lHVnNaVzFsYm5RZ2JXRnlaMmx1YzF4dVhIUmNkSEpsZEhWeWJpQjdYRzVjZEZ4MFhIUjBiM0E2SUc5bVpuTmxkQzUwYjNBZ0xTQndZWEpsYm5SUFptWnpaWFF1ZEc5d0lDMGdhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0p0WVhKbmFXNVViM0JjSWl3Z2RISjFaU0FwTEZ4dVhIUmNkRngwYkdWbWREb2diMlptYzJWMExteGxablFnTFNCd1lYSmxiblJQWm1aelpYUXViR1ZtZENBdElHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2liV0Z5WjJsdVRHVm1kRndpTENCMGNuVmxJQ2xjYmx4MFhIUjlPMXh1WEhSOUxGeHVYRzVjZEc5bVpuTmxkRkJoY21WdWREb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBkbUZ5SUc5bVpuTmxkRkJoY21WdWRDQTlJSFJvYVhNdWIyWm1jMlYwVUdGeVpXNTBJSHg4SUdSdlkwVnNaVzA3WEc1Y2JseDBYSFJjZEhkb2FXeGxJQ2dnYjJabWMyVjBVR0Z5Wlc1MElDWW1JQ2dnSVdwUmRXVnllUzV1YjJSbFRtRnRaU2dnYjJabWMyVjBVR0Z5Wlc1MExDQmNJbWgwYld4Y0lpQXBJQ1ltSUdwUmRXVnllUzVqYzNNb0lHOW1abk5sZEZCaGNtVnVkQ3dnWENKd2IzTnBkR2x2Ymx3aUlDa2dQVDA5SUZ3aWMzUmhkR2xqWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwYjJabWMyVjBVR0Z5Wlc1MElEMGdiMlptYzJWMFVHRnlaVzUwTG05bVpuTmxkRkJoY21WdWREdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHOW1abk5sZEZCaGNtVnVkQ0I4ZkNCa2IyTkZiR1Z0TzF4dVhIUmNkSDBwTzF4dVhIUjlYRzU5S1R0Y2JseHVMeThnUTNKbFlYUmxJSE5qY205c2JFeGxablFnWVc1a0lITmpjbTlzYkZSdmNDQnRaWFJvYjJSelhHNXFVWFZsY25rdVpXRmphQ2dnZXlCelkzSnZiR3hNWldaME9pQmNJbkJoWjJWWVQyWm1jMlYwWENJc0lITmpjbTlzYkZSdmNEb2dYQ0p3WVdkbFdVOW1abk5sZEZ3aUlIMHNJR1oxYm1OMGFXOXVLQ0J0WlhSb2IyUXNJSEJ5YjNBZ0tTQjdYRzVjZEhaaGNpQjBiM0FnUFNCY0luQmhaMlZaVDJabWMyVjBYQ0lnUFQwOUlIQnliM0E3WEc1Y2JseDBhbEYxWlhKNUxtWnVXeUJ0WlhSb2IyUWdYU0E5SUdaMWJtTjBhVzl1S0NCMllXd2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHRmpZMlZ6Y3lnZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzFsZEdodlpDd2dkbUZzSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSGRwYmlBOUlHZGxkRmRwYm1SdmR5Z2daV3hsYlNBcE8xeHVYRzVjZEZ4MFhIUnBaaUFvSUhaaGJDQTlQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2QybHVJRDhnZDJsdVd5QndjbTl3SUYwZ09pQmxiR1Z0V3lCdFpYUm9iMlFnWFR0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MGFXWWdLQ0IzYVc0Z0tTQjdYRzVjZEZ4MFhIUmNkSGRwYmk1elkzSnZiR3hVYnloY2JseDBYSFJjZEZ4MFhIUWhkRzl3SUQ4Z2RtRnNJRG9nZDJsdVpHOTNMbkJoWjJWWVQyWm1jMlYwTEZ4dVhIUmNkRngwWEhSY2RIUnZjQ0EvSUhaaGJDQTZJSGRwYm1SdmR5NXdZV2RsV1U5bVpuTmxkRnh1WEhSY2RGeDBYSFFwTzF4dVhHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSbGJHVnRXeUJ0WlhSb2IyUWdYU0E5SUhaaGJEdGNibHgwWEhSY2RIMWNibHgwWEhSOUxDQnRaWFJvYjJRc0lIWmhiQ3dnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3dnYm5Wc2JDQXBPMXh1WEhSOU8xeHVmU2s3WEc1Y2JpOHZJRk4xY0hCdmNuUTZJRk5oWm1GeWFUdzNLeXdnUTJoeWIyMWxQRE0zSzF4dUx5OGdRV1JrSUhSb1pTQjBiM0F2YkdWbWRDQmpjM05JYjI5cmN5QjFjMmx1WnlCcVVYVmxjbmt1Wm00dWNHOXphWFJwYjI1Y2JpOHZJRmRsWW10cGRDQmlkV2M2SUdoMGRIQnpPaTh2WW5WbmN5NTNaV0pyYVhRdWIzSm5MM05vYjNkZlluVm5MbU5uYVQ5cFpEMHlPVEE0TkZ4dUx5OGdRbXhwYm1zZ1luVm5PaUJvZEhSd2N6b3ZMMk52WkdVdVoyOXZaMnhsTG1OdmJTOXdMMk5vY205dGFYVnRMMmx6YzNWbGN5OWtaWFJoYVd3L2FXUTlNakk1TWpnd1hHNHZMeUJuWlhSRGIyMXdkWFJsWkZOMGVXeGxJSEpsZEhWeWJuTWdjR1Z5WTJWdWRDQjNhR1Z1SUhOd1pXTnBabWxsWkNCbWIzSWdkRzl3TDJ4bFpuUXZZbTkwZEc5dEwzSnBaMmgwTzF4dUx5OGdjbUYwYUdWeUlIUm9ZVzRnYldGclpTQjBhR1VnWTNOeklHMXZaSFZzWlNCa1pYQmxibVFnYjI0Z2RHaGxJRzltWm5ObGRDQnRiMlIxYkdVc0lHcDFjM1FnWTJobFkyc2dabTl5SUdsMElHaGxjbVZjYm1wUmRXVnllUzVsWVdOb0tDQmJJRndpZEc5d1hDSXNJRndpYkdWbWRGd2lJRjBzSUdaMWJtTjBhVzl1S0NCcExDQndjbTl3SUNrZ2UxeHVYSFJxVVhWbGNua3VZM056U0c5dmEzTmJJSEJ5YjNBZ1hTQTlJR0ZrWkVkbGRFaHZiMnRKWmlnZ2MzVndjRzl5ZEM1d2FYaGxiRkJ2YzJsMGFXOXVMRnh1WEhSY2RHWjFibU4wYVc5dUtDQmxiR1Z0TENCamIyMXdkWFJsWkNBcElIdGNibHgwWEhSY2RHbG1JQ2dnWTI5dGNIVjBaV1FnS1NCN1hHNWNkRngwWEhSY2RHTnZiWEIxZEdWa0lEMGdZM1Z5UTFOVEtDQmxiR1Z0TENCd2NtOXdJQ2s3WEc1Y2RGeDBYSFJjZEM4dklFbG1JR04xY2tOVFV5QnlaWFIxY201eklIQmxjbU5sYm5SaFoyVXNJR1poYkd4aVlXTnJJSFJ2SUc5bVpuTmxkRnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjbTUxYlc1dmJuQjRMblJsYzNRb0lHTnZiWEIxZEdWa0lDa2dQMXh1WEhSY2RGeDBYSFJjZEdwUmRXVnllU2dnWld4bGJTQXBMbkJ2YzJsMGFXOXVLQ2xiSUhCeWIzQWdYU0FySUZ3aWNIaGNJaUE2WEc1Y2RGeDBYSFJjZEZ4MFkyOXRjSFYwWldRN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUXBPMXh1ZlNrN1hHNWNibHh1THk4Z1EzSmxZWFJsSUdsdWJtVnlTR1ZwWjJoMExDQnBibTVsY2xkcFpIUm9MQ0JvWldsbmFIUXNJSGRwWkhSb0xDQnZkWFJsY2tobGFXZG9kQ0JoYm1RZ2IzVjBaWEpYYVdSMGFDQnRaWFJvYjJSelhHNXFVWFZsY25rdVpXRmphQ2dnZXlCSVpXbG5hSFE2SUZ3aWFHVnBaMmgwWENJc0lGZHBaSFJvT2lCY0luZHBaSFJvWENJZ2ZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lIUjVjR1VnS1NCN1hHNWNkR3BSZFdWeWVTNWxZV05vS0NCN0lIQmhaR1JwYm1jNklGd2lhVzV1WlhKY0lpQXJJRzVoYldVc0lHTnZiblJsYm5RNklIUjVjR1VzSUZ3aVhDSTZJRndpYjNWMFpYSmNJaUFySUc1aGJXVWdmU3dnWm5WdVkzUnBiMjRvSUdSbFptRjFiSFJGZUhSeVlTd2dablZ1WTA1aGJXVWdLU0I3WEc1Y2RGeDBMeThnVFdGeVoybHVJR2x6SUc5dWJIa2dabTl5SUc5MWRHVnlTR1ZwWjJoMExDQnZkWFJsY2xkcFpIUm9YRzVjZEZ4MGFsRjFaWEo1TG1adVd5Qm1kVzVqVG1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUcxaGNtZHBiaXdnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBYSFIyWVhJZ1kyaGhhVzVoWW14bElEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQW1KaUFvSUdSbFptRjFiSFJGZUhSeVlTQjhmQ0IwZVhCbGIyWWdiV0Z5WjJsdUlDRTlQU0JjSW1KdmIyeGxZVzVjSWlBcExGeHVYSFJjZEZ4MFhIUmxlSFJ5WVNBOUlHUmxabUYxYkhSRmVIUnlZU0I4ZkNBb0lHMWhjbWRwYmlBOVBUMGdkSEoxWlNCOGZDQjJZV3gxWlNBOVBUMGdkSEoxWlNBL0lGd2liV0Z5WjJsdVhDSWdPaUJjSW1KdmNtUmxjbHdpSUNrN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCaFkyTmxjM01vSUhSb2FYTXNJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQjBlWEJsTENCMllXeDFaU0FwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR1J2WXp0Y2JseHVYSFJjZEZ4MFhIUnBaaUFvSUdwUmRXVnllUzVwYzFkcGJtUnZkeWdnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RDOHZJRUZ6SUc5bUlEVXZPQzh5TURFeUlIUm9hWE1nZDJsc2JDQjVhV1ZzWkNCcGJtTnZjbkpsWTNRZ2NtVnpkV3gwY3lCbWIzSWdUVzlpYVd4bElGTmhabUZ5YVN3Z1luVjBJSFJvWlhKbFhHNWNkRngwWEhSY2RGeDBMeThnYVhOdUozUWdZU0IzYUc5c1pTQnNiM1FnZDJVZ1kyRnVJR1J2TGlCVFpXVWdjSFZzYkNCeVpYRjFaWE4wSUdGMElIUm9hWE1nVlZKTUlHWnZjaUJrYVhOamRYTnphVzl1T2x4dVhIUmNkRngwWEhSY2RDOHZJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlxY1hWbGNua3ZhbkYxWlhKNUwzQjFiR3d2TnpZMFhHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1Wkc5amRXMWxiblF1Wkc5amRXMWxiblJGYkdWdFpXNTBXeUJjSW1Oc2FXVnVkRndpSUNzZ2JtRnRaU0JkTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnUjJWMElHUnZZM1Z0Wlc1MElIZHBaSFJvSUc5e
14938UlHaGxhV2RvZEZ4dVhIUmNkRngwWEhScFppQW9JR1ZzWlcwdWJtOWtaVlI1Y0dVZ1BUMDlJRGtnS1NCN1hHNWNkRngwWEhSY2RGeDBaRzlqSUQwZ1pXeGxiUzVrYjJOMWJXVnVkRVZzWlcxbGJuUTdYRzVjYmx4MFhIUmNkRngwWEhRdkx5QkZhWFJvWlhJZ2MyTnliMnhzVzFkcFpIUm9MMGhsYVdkb2RGMGdiM0lnYjJabWMyVjBXMWRwWkhSb0wwaGxhV2RvZEYwZ2IzSWdZMnhwWlc1MFcxZHBaSFJvTDBobGFXZG9kRjBzWEc1Y2RGeDBYSFJjZEZ4MEx5OGdkMmhwWTJobGRtVnlJR2x6SUdkeVpXRjBaWE4wWEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUUxaGRHZ3ViV0Y0S0Z4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlM1aWIyUjVXeUJjSW5OamNtOXNiRndpSUNzZ2JtRnRaU0JkTENCa2IyTmJJRndpYzJOeWIyeHNYQ0lnS3lCdVlXMWxJRjBzWEc1Y2RGeDBYSFJjZEZ4MFhIUmxiR1Z0TG1KdlpIbGJJRndpYjJabWMyVjBYQ0lnS3lCdVlXMWxJRjBzSUdSdlkxc2dYQ0p2Wm1aelpYUmNJaUFySUc1aGJXVWdYU3hjYmx4MFhIUmNkRngwWEhSY2RHUnZZMXNnWENKamJHbGxiblJjSWlBcklHNWhiV1VnWFZ4dVhIUmNkRngwWEhSY2RDazdYRzVjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSeVpYUjFjbTRnZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNBL1hHNWNkRngwWEhSY2RGeDBMeThnUjJWMElIZHBaSFJvSUc5eUlHaGxhV2RvZENCdmJpQjBhR1VnWld4bGJXVnVkQ3dnY21WeGRXVnpkR2x1WnlCaWRYUWdibTkwSUdadmNtTnBibWNnY0dGeWMyVkdiRzloZEZ4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lIUjVjR1VzSUdWNGRISmhJQ2tnT2x4dVhHNWNkRngwWEhSY2RGeDBMeThnVTJWMElIZHBaSFJvSUc5eUlHaGxhV2RvZENCdmJpQjBhR1VnWld4bGJXVnVkRnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2daV3hsYlN3Z2RIbHdaU3dnZG1Gc2RXVXNJR1Y0ZEhKaElDazdYRzVjZEZ4MFhIUjlMQ0IwZVhCbExDQmphR0ZwYm1GaWJHVWdQeUJ0WVhKbmFXNGdPaUIxYm1SbFptbHVaV1FzSUdOb1lXbHVZV0pzWlN3Z2JuVnNiQ0FwTzF4dVhIUmNkSDA3WEc1Y2RIMHBPMXh1ZlNrN1hHNWNibHh1THk4Z1ZHaGxJRzUxYldKbGNpQnZaaUJsYkdWdFpXNTBjeUJqYjI1MFlXbHVaV1FnYVc0Z2RHaGxJRzFoZEdOb1pXUWdaV3hsYldWdWRDQnpaWFJjYm1wUmRXVnllUzVtYmk1emFYcGxJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkSEpsZEhWeWJpQjBhR2x6TG14bGJtZDBhRHRjYm4wN1hHNWNibXBSZFdWeWVTNW1iaTVoYm1SVFpXeG1JRDBnYWxGMVpYSjVMbVp1TG1Ga1pFSmhZMnM3WEc1Y2JseHVYRzVjYmk4dklGSmxaMmx6ZEdWeUlHRnpJR0VnYm1GdFpXUWdRVTFFSUcxdlpIVnNaU3dnYzJsdVkyVWdhbEYxWlhKNUlHTmhiaUJpWlNCamIyNWpZWFJsYm1GMFpXUWdkMmwwYUNCdmRHaGxjbHh1THk4Z1ptbHNaWE1nZEdoaGRDQnRZWGtnZFhObElHUmxabWx1WlN3Z1luVjBJRzV2ZENCMmFXRWdZU0J3Y205d1pYSWdZMjl1WTJGMFpXNWhkR2x2YmlCelkzSnBjSFFnZEdoaGRGeHVMeThnZFc1a1pYSnpkR0Z1WkhNZ1lXNXZibmx0YjNWeklFRk5SQ0J0YjJSMWJHVnpMaUJCSUc1aGJXVmtJRUZOUkNCcGN5QnpZV1psYzNRZ1lXNWtJRzF2YzNRZ2NtOWlkWE4wWEc0dkx5QjNZWGtnZEc4Z2NtVm5hWE4wWlhJdUlFeHZkMlZ5WTJGelpTQnFjWFZsY25rZ2FYTWdkWE5sWkNCaVpXTmhkWE5sSUVGTlJDQnRiMlIxYkdVZ2JtRnRaWE1nWVhKbFhHNHZMeUJrWlhKcGRtVmtJR1p5YjIwZ1ptbHNaU0J1WVcxbGN5d2dZVzVrSUdwUmRXVnllU0JwY3lCdWIzSnRZV3hzZVNCa1pXeHBkbVZ5WldRZ2FXNGdZU0JzYjNkbGNtTmhjMlZjYmk4dklHWnBiR1VnYm1GdFpTNGdSRzhnZEdocGN5QmhablJsY2lCamNtVmhkR2x1WnlCMGFHVWdaMnh2WW1Gc0lITnZJSFJvWVhRZ2FXWWdZVzRnUVUxRUlHMXZaSFZzWlNCM1lXNTBjMXh1THk4Z2RHOGdZMkZzYkNCdWIwTnZibVpzYVdOMElIUnZJR2hwWkdVZ2RHaHBjeUIyWlhKemFXOXVJRzltSUdwUmRXVnllU3dnYVhRZ2QybHNiQ0IzYjNKckxseHVYRzR2THlCT2IzUmxJSFJvWVhRZ1ptOXlJRzFoZUdsdGRXMGdjRzl5ZEdGaWFXeHBkSGtzSUd4cFluSmhjbWxsY3lCMGFHRjBJR0Z5WlNCdWIzUWdhbEYxWlhKNUlITm9iM1ZzWkZ4dUx5OGdaR1ZqYkdGeVpTQjBhR1Z0YzJWc2RtVnpJR0Z6SUdGdWIyNTViVzkxY3lCdGIyUjFiR1Z6TENCaGJtUWdZWFp2YVdRZ2MyVjBkR2x1WnlCaElHZHNiMkpoYkNCcFppQmhibHh1THk4Z1FVMUVJR3h2WVdSbGNpQnBjeUJ3Y21WelpXNTBMaUJxVVhWbGNua2dhWE1nWVNCemNHVmphV0ZzSUdOaGMyVXVJRVp2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TENCelpXVmNiaTh2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5cWNtSjFjbXRsTDNKbGNYVnBjbVZxY3k5M2FXdHBMMVZ3WkdGMGFXNW5MV1Y0YVhOMGFXNW5MV3hwWW5KaGNtbGxjeU4zYVd0cExXRnViMjVjYmx4dWFXWWdLQ0IwZVhCbGIyWWdaR1ZtYVc1bElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdaR1ZtYVc1bExtRnRaQ0FwSUh0Y2JseDBaR1ZtYVc1bEtDQmNJbXB4ZFdWeWVWd2lMQ0JiWFN3Z1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllVHRjYmx4MGZTazdYRzU5WEc1Y2JseHVYRzVjYm5aaGNseHVYSFF2THlCTllYQWdiM1psY2lCcVVYVmxjbmtnYVc0Z1kyRnpaU0J2WmlCdmRtVnlkM0pwZEdWY2JseDBYMnBSZFdWeWVTQTlJSGRwYm1SdmR5NXFVWFZsY25rc1hHNWNibHgwTHk4Z1RXRndJRzkyWlhJZ2RHaGxJQ1FnYVc0Z1kyRnpaU0J2WmlCdmRtVnlkM0pwZEdWY2JseDBYeVFnUFNCM2FXNWtiM2N1SkR0Y2JseHVhbEYxWlhKNUxtNXZRMjl1Wm14cFkzUWdQU0JtZFc1amRHbHZiaWdnWkdWbGNDQXBJSHRjYmx4MGFXWWdLQ0IzYVc1a2IzY3VKQ0E5UFQwZ2FsRjFaWEo1SUNrZ2UxeHVYSFJjZEhkcGJtUnZkeTRrSUQwZ1h5UTdYRzVjZEgxY2JseHVYSFJwWmlBb0lHUmxaWEFnSmlZZ2QybHVaRzkzTG1wUmRXVnllU0E5UFQwZ2FsRjFaWEo1SUNrZ2UxeHVYSFJjZEhkcGJtUnZkeTVxVVhWbGNua2dQU0JmYWxGMVpYSjVPMXh1WEhSOVhHNWNibHgwY21WMGRYSnVJR3BSZFdWeWVUdGNibjA3WEc1Y2JpOHZJRVY0Y0c5elpTQnFVWFZsY25rZ1lXNWtJQ1FnYVdSbGJuUnBabWxsY25Nc0lHVjJaVzRnYVc0Z1FVMUVYRzR2THlBb0l6Y3hNRElqWTI5dGJXVnVkRG94TUN3Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwycHhkV1Z5ZVM5cWNYVmxjbmt2Y0hWc2JDODFOVGNwWEc0dkx5QmhibVFnUTI5dGJXOXVTbE1nWm05eUlHSnliM2R6WlhJZ1pXMTFiR0YwYjNKeklDZ2pNVE0xTmpZcFhHNXBaaUFvSUhSNWNHVnZaaUJ1YjBkc2IySmhiQ0E5UFQwZ2MzUnlkVzVrWldacGJtVmtJQ2tnZTF4dVhIUjNhVzVrYjNjdWFsRjFaWEo1SUQwZ2QybHVaRzkzTGlRZ1BTQnFVWFZsY25rN1hHNTlYRzVjYmx4dVhHNWNibkpsZEhWeWJpQnFVWFZsY25rN1hHNWNibjBwS1R0Y2JseHVPeUJpY205M2MyVnlhV1o1WDNOb2FXMWZYMlJsWm1sdVpWOWZiVzlrZFd4bFgxOWxlSEJ2Y25SZlh5aDBlWEJsYjJZZ0pDQWhQU0JjSW5WdVpHVm1hVzVsWkZ3aUlEOGdKQ0E2SUhkcGJtUnZkeTRrS1R0Y2JseHVmU2t1WTJGc2JDaG5iRzlpWVd3c0lIVnVaR1ZtYVc1bFpDd2dkVzVrWldacGJtVmtMQ0IxYm1SbFptbHVaV1FzSUhWdVpHVm1hVzVsWkN3Z1puVnVZM1JwYjI0Z1pHVm1hVzVsUlhod2IzSjBLR1Y0S1NCN0lHMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1pYZzdJSDBwTzF4dUlsMTkiLCIvKlxuICAgICBfIF8gICAgICBfICAgICAgIF9cbiBfX198IChfKSBfX198IHwgX18gIChfKV9fX1xuLyBfX3wgfCB8LyBf
14938X3wgfC8gLyAgfCAvIF9ffFxuXFxfXyBcXCB8IHwgKF9ffCAgIDwgXyB8IFxcX18gXFxcbnxfX18vX3xffFxcX19ffF98XFxfKF8pLyB8X19fL1xuICAgICAgICAgICAgICAgICAgIHxfXy9cblxuIFZlcnNpb246IDEuOC4wXG4gIEF1dGhvcjogS2VuIFdoZWVsZXJcbiBXZWJzaXRlOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW9cbiAgICBEb2NzOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW8vc2xpY2tcbiAgICBSZXBvOiBodHRwOi8vZ2l0aHViLmNvbS9rZW53aGVlbGVyL3NsaWNrXG4gIElzc3VlczogaHR0cDovL2dpdGh1Yi5jb20va2Vud2hlZWxlci9zbGljay9pc3N1ZXNcblxuICovXG4vKiBnbG9iYWwgd2luZG93LCBkb2N1bWVudCwgZGVmaW5lLCBqUXVlcnksIHNldEludGVydmFsLCBjbGVhckludGVydmFsICovXG47KGZ1bmN0aW9uKGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5KGpRdWVyeSk7XG4gICAgfVxuXG59KGZ1bmN0aW9uKCQpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIFNsaWNrID0gd2luZG93LlNsaWNrIHx8IHt9O1xuXG4gICAgU2xpY2sgPSAoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIGluc3RhbmNlVWlkID0gMDtcblxuICAgICAgICBmdW5jdGlvbiBTbGljayhlbGVtZW50LCBzZXR0aW5ncykge1xuXG4gICAgICAgICAgICB2Y
14938XIgXyA9IHRoaXMsIGRhdGFTZXR0aW5ncztcblxuICAgICAgICAgICAgXy5kZWZhdWx0cyA9IHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFkYXB0aXZlSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6ICQoZWxlbWVudCksXG4gICAgICAgICAgICAgICAgYXBwZW5kRG90czogJChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgYXNOYXZGb3I6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJldkFycm93OiAnPGJ1dHRvbiBjbGFzcz1cInNsaWNrLXByZXZcIiBhcmlhLWxhYmVsPVwiUHJldmlvdXNcIiB0eXBlPVwiYnV0dG9uXCI+UHJldmlvdXM8L2J1dHRvbj4nLFxuICAgICAgICAgICAgICAgIG5leHRBcnJvdzogJzxidXR0b24gY2xhc3M9XCJzbGljay1uZXh0XCIgYXJpYS1sYWJlbD1cIk5leHRcIiB0eXBlPVwiYnV0dG9uXCI+TmV4dDwvYnV0dG9uPicsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzUwcHgnLFxuICAgICAgICAgICAgICAgIGNzc0Vhc2U6ICdlYXNlJyxcbiAgICAgICAgICAgICAgICBjdXN0b21QYWdpbmc6IGZ1bmN0aW9uKHNsaWRlciwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgLz4nKS50ZXh0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRvdHNDbGFzczogJ3NsaWNrLWRvdHMnLFxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlYXNpbmc6ICdsaW5lYXInLFxuICAgICAgICAgICAgICAgIGVkZ2VGcmljdGlvbjogMC4zNSxcbiAgICAgICAgICAgICAgICBmYWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uQ2hhbmdlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgbGF6eUxvYWQ6ICdvbmRlbWFuZCcsXG4gICAgICAgICAgICAgICAgbW9iaWxlRmlyc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgcGF1c2VPbkRvdHNIb3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzcG9uZFRvOiAnd2luZG93JyxcbiAgICAgICAgICAgICAgICByZXNwb25zaXZlOiBudWxsLFxuICAgICAgICAgICAgICAgIHJvd3M6IDEsXG4gICAgICAgICAgICAgICAgcnRsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZTogJycsXG4gICAgICAgICAgICAgICAgc2xpZGVzUGVyUm93OiAxLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICBzcGVlZDogNTAwLFxuICAgICAgICAgICAgICAgIHN3aXBlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdG91Y2hNb3ZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRvdWNoVGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgICAgIHVzZUNTUzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VUcmFuc2Zvcm06IHRydWUsXG4gICAgICAgICAgICAgICAgdmFyaWFibGVXaWR0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsU3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2FpdEZvckFuaW1hdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBfLmluaXRpYWxzID0ge1xuICAgICAgICAgICAgICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9QbGF5VGltZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICBjdXJyZW50U2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAxLFxuICAgICAgICAgICAgICAgICRkb3RzOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpc3RXaWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICBsaXN0SGVpZ2h0OiBudWxsLFxuICAgICAgICAgICAgICAgIGxvYWRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAkbmV4dEFycm93OiBudWxsLFxuICAgICAgICAgICAgICAgICRwcmV2QXJyb3c6IG51bGwsXG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZUNvdW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlVHJhY2s6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlczogbnVsbCxcbiAgICAgICAgICAgICAgICBzbGlkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBzd2lwZUxlZnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJGxpc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgdG91Y2hPYmplY3Q6IHt9LFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB1bnNsaWNrZWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAkLmV4dGVuZChfLCBfLmluaXRpYWxzKTtcblxuICAgICAgICAgICAgXy5hY3RpdmVCcmVha3BvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy5hbmltUHJvcCA9IG51bGw7XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRzID0gW107XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5ncyA9IFtdO1xuICAgICAgICAgICAgXy5jc3NUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgXy5mb2N1c3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5oaWRkZW4gPSAnaGlkZGVuJztcbiAgICAgICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIF8ucG9zaXRpb25Qcm9wID0gbnVsbDtcbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gbnVsbDtcbiAgICAgICAgICAgIF8ucm93Q291bnQgPSAxO1xuICAgICAgICAgICAgXy5zaG91bGRDbGljayA9IHRydWU7XG4gICAgICAgICAgICBfLiRzbGlkZXIgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gbnVsbDtcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgXy53aW5kb3dXaWR0aCA9IDA7XG4gICAgICAgICAgICBfLndpbmRvd1RpbWVyID0gbnVsbDtcblxuICAgICAgICAgICAgZGF0YVNldHRpbmdzID0gJChlbGVtZW50KS5kYXRhKCdzbGljaycpIHx8IHt9O1xuXG4gICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5kZWZhdWx0cywgc2V0dGluZ3MsIGRhdGFTZXR0aW5ncyk7XG5cbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcblxuICAgICAgICAgICAgXy5vcmlnaW5hbFNldHRpbmdzID0gXy5vcHRpb25zO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50Lm1vekhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICdtb3pIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICdtb3p2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgI
14938H0gZWxzZSBpZiAodHlwZW9mIGRvY3VtZW50LndlYmtpdEhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICd3ZWJraXRIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5hdXRvUGxheSA9ICQucHJveHkoXy5hdXRvUGxheSwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5Q2xlYXIgPSAkLnByb3h5KF8uYXV0b1BsYXlDbGVhciwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5SXRlcmF0b3IgPSAkLnByb3h5KF8uYXV0b1BsYXlJdGVyYXRvciwgXyk7XG4gICAgICAgICAgICBfLmNoYW5nZVNsaWRlID0gJC5wcm94eShfLmNoYW5nZVNsaWRlLCBfKTtcbiAgICAgICAgICAgIF8uY2xpY2tIYW5kbGVyID0gJC5wcm94eShfLmNsaWNrSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNlbGVjdEhhbmRsZXIgPSAkLnByb3h5KF8uc2VsZWN0SGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNldFBvc2l0aW9uID0gJC5wcm94eShfLnNldFBvc2l0aW9uLCBfKTtcbiAgICAgICAgICAgIF8uc3dpcGVIYW5kbGVyID0gJC5wcm94eShfLnN3aXBlSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLmRyYWdIYW5kbGVyID0gJC5wcm94eShfLmRyYWdIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8ua2V5SGFuZGxlciA9ICQucHJveHkoXy5rZXlIYW5kbGVyLCBfKTtcblxuICAgICAgICAgICAgXy5pbnN0YW5jZVVpZCA9IGluc3RhbmNlVWlkKys7XG5cbiAgICAgICAgICAgIC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG4gICAgICAgICAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAobXVzdCBzdGFydCB3aXRoIDwpXG4gICAgICAgICAgICAvLyBFeHRyYWN0ZWQgZnJvbSBqUXVlcnkgdjEuMTEgc291cmNlXG4gICAgICAgICAgICBfLmh0bWxFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qKSQvO1xuXG5cbiAgICAgICAgICAgIF8ucmVnaXN0ZXJCcmVha3BvaW50cygpO1xuICAgICAgICAgICAgXy5pbml0KHRydWUpO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2xpY2s7XG5cbiAgICB9KCkpO1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFjdGl2YXRlQURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1hY3RpdmUnKS5hdHRyKHtcbiAgICAgICAgICAgICdhcmlhLWh
14938pZGRlbic6ICdmYWxzZSdcbiAgICAgICAgfSkuZmluZCgnYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0JykuYXR0cih7XG4gICAgICAgICAgICAndGFiaW5kZXgnOiAnMCdcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFkZFNsaWRlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrQWRkID0gZnVuY3Rpb24obWFya3VwLCBpbmRleCwgYWRkQmVmb3JlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0eXBlb2YoaW5kZXgpID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGFkZEJlZm9yZSA9IGluZGV4O1xuICAgICAgICAgICAgaW5kZXggPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMCB8fCAoaW5kZXggPj0gXy5zbGlkZUNvdW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgXy51bmxvYWQoKTtcblxuICAgICAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBfLiRzbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhZGRCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QmVmb3JlKF8uJHNsaWRlcy5lcShpbmRleCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QWZ0ZXIoXy4kc2xpZGVzLmVxKGluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWRkQmVmb3JlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVzID0gXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmFwcGVuZChfLiRzbGlkZXMpO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFuaW1hdGVIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0XG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hbmltYXRlU2xpZGUgPSBmdW5jdGlvbih0YXJnZXRMZWZ0LCBjYWxsYmFjaykge1xuXG4gICAgICAgIHZhciBhbmltUHJvcHMgP
14938SB7fSxcbiAgICAgICAgICAgIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlICYmIF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRhcmdldExlZnQgPSAtdGFyZ2V0TGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy50cmFuc2Zvcm1zRW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCwgXy5vcHRpb25zLmVhc2luZywgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnJ0bCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gLShfLmN1cnJlbnRMZWZ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJCh7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1TdGFydDogXy5jdXJyZW50TGVmdFxuICAgICAgICAgICAgICAgIH0pLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBhbmltU3RhcnQ6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBfLm9wdGlvbnMuc3BlZWQsXG4gICAgICAgICAgICAgICAgICAgIGVhc2luZzogXy5vcHRpb25zLmVhc2luZyxcbiAgICAgICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24obm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3cgPSBNYXRoLmNlaWwobm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4LCAwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhhbmltUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKDBweCwnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4KSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MoYW5pbVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSBNYXRoLmNlaWwodGFyZ2V0TGVmdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoJyArIHRhcmdldExlZnQgKyAncHgsIDBweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKDBweCwnICsgdGFyZ2V0TGVmdCArICdweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKGFuaW1Qcm9wcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgXy5kaXNhYmxlVHJhbnNpdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZUYXJnZXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBhc05hdkZvciA9IF8ub3B0aW9ucy5hc05hdkZvcjtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICYmIGFzTmF2Rm9yICE9PSBudWxsICkge1xuICAgICAgICAgICAgYXNOYXZGb3IgPSAkKGFzTmF2Rm9yKS5ub3QoXy4kc2xpZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc05hdkZvcjtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXNOYXZGb3IgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGFzTmF2Rm9yID0gXy5nZXROYXZUYXJnZXQoKTtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICE9PSBudWxsICYmIHR5cGVvZiBhc05hdkZvciA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICBhc05hdkZvci5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAkKHRoaXMpLnNsaWNrKCdnZXRTbGljaycpO1xuICAgICAgICAgICAgICAgIGlmKCF0YXJnZXQudW5zbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zbGlkZUhhbmRsZXIoaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFwcGx5VHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSBfLnRyYW5zZm9ybVR5cGUgKyAnICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9ICdvcGFjaXR5ICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3ModHJhbnNpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGUpLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hdXRvUGxheSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcblxuICAgICAgICBpZiAoIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKSB7XG4gICAgICAgICAgICBfLmF1dG9QbGF5VGltZXIgPSBzZXRJbnRlcnZhbCggXy5hdXRvUGxheUl0ZXJhdG9yLCBfLm9wdGlvbnMuYXV0b3BsYXlTcGVlZCApO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5Q2xlYXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uYXV0b1BsYXlUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfLmF1dG9QbGF5VGltZXIpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5SXRlcmF0b3IgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgaWYgKCAhXy5wYXVzZWQgJiYgIV8uaW50ZXJydXB0ZWQgJiYgIV8uZm9jdXNzZWQgKSB7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSApIHtcblxuICAgICAgICAgICAgICAgIGlmICggXy5kaXJlY3Rpb24gPT09IDEgJiYgKCBfLmN1cnJlbnRTbGlkZSArIDEgKSA9PT0gKCBfLnNsaWRlQ291bnQgLSAxICkpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5kaXJlY3Rpb24gPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBfLmRpcmVjdGlvbiA9PT0gMCApIHtcblxuICAgICAgICAgICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgLSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBfLmN1cnJlbnRTbGlkZSAtIDEgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmRpcmVjdGlvbiA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnNsaWRlSGFuZGxlciggc2xpZGVUbyApO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRBcnJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgKSB7XG5cbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyA9ICQoXy5vcHRpb25zLnByZXZBcnJvdykuYWRkQ2xhc3MoJ3NsaWNrLWFycm93Jyk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cgPSAkKF8ub3B0aW9ucy5uZXh0QXJyb3cpLmFkZENsYXNzKCdzbGljay1hcnJvdycpO1xuXG4gICAgICAgICAgICBpZiggXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2staGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gdGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWhpZGRlbicpLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIHRhYmluZGV4Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5wcmV2QXJyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5wcmVwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8uaHRtbEV4cHIudGVzdChfLm9wdGlvbnMubmV4dEFycm93KSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cuYXBwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5hZGQoIF8uJG5leHRBcnJvdyApXG5cbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkRG90cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIGRvdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWRvdHRlZCcpO1xuXG4gICAgICAgICAgICBkb3QgPSAkKCc8dWwgLz4nKS5hZGRDbGFzcyhfLm9wdGlvbnMuZG90c0NsYXNzKTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBfLmdldERvdENvdW50KCk7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGRvdC5hcHBlbmQoJCgnPGxpIC8+JykuYXBwZW5kKF8ub3B0aW9ucy5jdXN0b21QYWdpbmcuY2FsbCh0aGlzLCBfLCBpKSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLiRkb3RzID0gZG90LmFwcGVuZFRvKF8ub3B0aW9ucy5hcHBlbmREb3RzKTtcblxuICAgICAgICAgICAgXy4kZG90cy5maW5kKCdsaScpLmZpcnN0KCkuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRPdXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kc2xpZGVzID1cbiAgICAgICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbiggXy5vcHRpb25zLnNsaWRlICsgJzpub3QoLnNsaWNrLWNsb25lZCknKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stc2xpZGUnKTtcblxuICAgICAgICBfLnNsaWRlQ291bnQgPSBfLiRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGF0YSgnb3JpZ2luYWxTdHlsaW5nJywgJChlbGVtZW50KS5hdHRyKCdzdHlsZScpIHx8ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay1zbGlkZXInKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrID0gKF8uc2xpZGVDb3VudCA9PT0gMCkgP1xuICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cInNsaWNrLXRyYWNrXCIvPicpLmFwcGVuZFRvKF8uJHNsaWRlcikgOlxuICAgICAgICAgICAgXy4kc2xpZGVzLndyYXBBbGwoJzxkaXYgY2xhc3M9XCJzbGljay10cmFja1wiLz4nKS5wYXJlbnQoKTtcblxuICAgICAgICBfLiRsaXN0ID0gXy4kc2xpZGVUcmFjay53cmFwKFxuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJzbGljay1saXN0XCIvPicpLnBhcmVudCgpO1xuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcygnb3BhY2l0eScsIDApO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBfLiRzbGlkZXIpLm5vdCgnW3NyY10nKS5hZGRDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uc2V0dXBJbmZpbml0ZSgpO1xuXG4gICAgICAgIF8uYnVpbGRBcnJvd3MoKTtcblxuICAgICAgICBfLmJ1aWxkRG90cygpO1xuXG4gICAgICAgIF8udXBkYXRlRG90cygpO1xuXG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXModHlwZW9mIF8uY3VycmVudFNsaWRlID09PSAnbnVtYmVyJyA/IF8uY3VycmVudFNsaWRlIDogMCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kcmFnZ2FibGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3QuYWRkQ2xhc3MoJ2RyYWdnYWJsZScpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkUm93cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgYSwgYiwgYywgbmV3U2xpZGVzLCBudW1PZlNsaWRlcywgb3JpZ2luYWxTbGlkZXMsc2xpZGVzUGVyU2VjdGlvbjtcblxuICAgICAgICBuZXdTbGlkZXMgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVyLmNoaWxkcmVuKCk7XG5cbiAgICAgICAgaWYoXy5vcHRpb25zLnJvd3MgPiAwKSB7XG5cbiAgICAgICAgICAgIHNsaWRlc1BlclNlY3Rpb24gPSBfLm9wdGlvbnMuc2xpZGVzUGVyUm93ICogXy5vcHRpb25zLnJvd3M7XG4gICAgICAgICAgICBudW1PZlNsaWRlcyA9IE1hdGguY2VpbChcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFNsaWRlcy5sZW5ndGggLyBzbGlkZXNQZXJTZWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IoYSA9IDA7IGEgPCBudW1PZlNsaWRlczsgYSsrKXtcbiAgICAgICAgICAgICAgICB2Y
14938XIgc2xpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBmb3IoYiA9IDA7IGIgPCBfLm9wdGlvbnMucm93czsgYisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGMgPSAwOyBjIDwgXy5vcHRpb25zLnNsaWRlc1BlclJvdzsgYysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gKGEgKiBzbGlkZXNQZXJTZWN0aW9uICsgKChiICogXy5vcHRpb25zLnNsaWRlc1BlclJvdykgKyBjKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlLmFwcGVuZENoaWxkKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1NsaWRlcy5hcHBlbmRDaGlsZChzbGlkZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uJHNsaWRlci5lbXB0eSgpLmFwcGVuZChuZXdTbGlkZXMpO1xuICAgICAgICAgICAgXy4kc2xpZGVyLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5jaGlsZHJlbigpXG4gICAgICAgICAgICAgICAgLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6KDEwMCAvIF8ub3B0aW9ucy5zbGlkZXNQZXJSb3cpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6ICdpbmxpbmUtYmxvY2snXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jaGVja1Jlc3BvbnNpdmUgPSBmdW5jdGlvbihpbml0aWFsLCBmb3JjZVVwZGF0ZSkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGJyZWFrcG9pbnQsIHRhcmdldEJyZWFrcG9pbnQsIHJlc3BvbmRUb1dpZHRoLCB0cmlnZ2VyQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgICAgICB2Y
14938XIgc2xpZGVyV2lkdGggPSBfLiRzbGlkZXIud2lkdGgoKTtcbiAgICAgICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgJCh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICAgICAgaWYgKF8ucmVzcG9uZFRvID09PSAnd2luZG93Jykge1xuICAgICAgICAgICAgcmVzcG9uZFRvV2lkdGggPSB3aW5kb3dXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChfLnJlc3BvbmRUbyA9PT0gJ3NsaWRlcicpIHtcbiAgICAgICAgICAgIHJlc3BvbmRUb1dpZHRoID0gc2xpZGVyV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5yZXNwb25kVG8gPT09ICdtaW4nKSB7XG4gICAgICAgICAgICByZXNwb25kVG9XaWR0aCA9IE1hdGgubWluKHdpbmRvd1dpZHRoLCBzbGlkZXJXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5yZXNwb25zaXZlICYmXG4gICAgICAgICAgICBfLm9wdGlvbnMucmVzcG9uc2l2ZS5sZW5ndGggJiZcbiAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGJyZWFrcG9pbnQgaW4gXy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRzLmhhc093blByb3BlcnR5KGJyZWFrcG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9yaWdpbmFsU2V0dGluZ3MubW9iaWxlRmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPCBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPiBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QnJlYWtwb2ludCAhPT0gXy5hY3RpdmVCcmVha3BvaW50IHx8IGZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8udW5zbGljayh0YXJnZXRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLm9wdGlvbnMuaW5pdGlhbFNsaWRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy51bnNsaWNrKHRhcmdldEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSBfLm9yaWdpbmFsU2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgI
14938H1cbiAgICAgICAgICAgICAgICAgICAgXy5yZWZyZXNoKGluaXRpYWwpO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgYnJlYWtwb2ludHMgZHVyaW5nIGFuIGFjdHVhbCBicmVhay4gbm90IG9uIGluaXRpYWxpemUuXG4gICAgICAgICAgICBpZiggIWluaXRpYWwgJiYgdHJpZ2dlckJyZWFrcG9pbnQgIT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdicmVha3BvaW50JywgW18sIHRyaWdnZXJCcmVha3BvaW50XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2hhbmdlU2xpZGUgPSBmdW5jdGlvbihldmVudCwgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICAkdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KSxcbiAgICAgICAgICAgIGluZGV4T2Zmc2V0LCBzbGlkZU9mZnNldCwgdW5ldmVuT2Zmc2V0O1xuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBhIGxpbmssIHByZXZlbnQgZGVmYXVsdCBhY3Rpb24uXG4gICAgICAgIGlmKCR0YXJnZXQuaXMoJ2EnKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBub3QgdGhlIDxsaT4gZWxlbWVudCAoaWU6IGEgY2hpbGQpLCBmaW5kIHRoZSA8bGk+LlxuICAgICAgICBpZighJHRhcmdldC5pcygnbGknKSkge1xuICAgICAgICAgICAgJHRhcmdldCA9ICR0YXJnZXQuY2xvc2VzdCgnbGknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuZXZlbk9mZnNldCA9IChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApO1xuICAgICAgICBpbmRleE9mZnNldCA9IHVuZXZlbk9mZnNldCA/IDAgOiAoXy5zbGlkZUNvdW50IC0gXy5jdXJyZW50U2xpZGUpICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5tZXNzYWdlKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIGluZGV4T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKF8uY3VycmVudFNsaWRlIC0gc2xpZGVPZmZzZXQsIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jdXJyZW50U2xpZGUgKyBzbGlkZU9mZnNldCwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2luZGV4JzpcbiAgICAgICAgICAgICAgICB2Y
14938XIgaW5kZXggPSBldmVudC5kYXRhLmluZGV4ID09PSAwID8gMCA6XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXggfHwgJHRhcmdldC5pbmRleCgpICogXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jaGVja05hdmlnYWJsZShpbmRleCksIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNoZWNrTmF2aWdhYmxlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBuYXZpZ2FibGVzLCBwcmV2TmF2aWdhYmxlO1xuXG4gICAgICAgIG5hdmlnYWJsZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKTtcbiAgICAgICAgcHJldk5hdmlnYWJsZSA9IDA7XG4gICAgICAgIGlmIChpbmRleCA+IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgaW5kZXggPSBuYXZpZ2FibGVzW25hdmlnYWJsZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuIGluIG5hdmlnYWJsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBuYXZpZ2FibGVzW25dKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcHJldk5hdmlnYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByZXZOYXZpZ2FibGUgPSBuYXZpZ2FibGVzW25dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgJiYgXy4kZG90cyAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICAkKCdsaScsIF8uJGRvdHMpXG4gICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snLCBfLmNoYW5nZVNsaWRlKVxuICAgICAgICAgICAgICAgIC5vZmYoJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub2ZmKCdtb3VzZWxlYXZlLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgZmFsc2UpKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kZG90cy5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdjbGljay5zbGljaycsIF8uY2hhbmdlU2xpZGUpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93ICYmIF8uJG5leHRBcnJvdy5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jaGFuZ2VTbGlkZSk7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cgJiYgXy4kbmV4dEFycm93Lm9mZigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hzdGFydC5zbGljayBtb3VzZWRvd24uc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaG1vdmUuc2xpY2sgbW91c2Vtb3ZlLnNsaWNrJywgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vZmYoJ3RvdWNoY2FuY2VsLnNsaWNrIG1vdXNlbGVhdmUuc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jbGlja0hhbmRsZXIpO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLm9mZihfLnZpc2liaWxpdHlDaGFuZ2UsIF8udmlzaWJpbGl0eSk7XG5cbiAgICAgICAgXy5jbGVhblVwU2xpZGVFdmVudHMoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3Qub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9mZignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9mZignb3JpZW50YXRpb25jaGFuZ2Uuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8ub3JpZW50YXRpb25DaGFuZ2UpO1xuXG4gICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5yZXNpemUpO1xuXG4gICAgICAgICQoJ1tkcmFnZ2FibGUhPXRydWVdJywgXy4kc2xpZGVUcmFjaykub2ZmKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub2ZmKCdsb2FkLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCBfLnNldFBvc2l0aW9uKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJGxpc3Qub2ZmKCdtb3VzZWVudGVyLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgdHJ1ZSkpO1xuICAgICAgICBfLiRsaXN0Lm9mZignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsZWFuVXBSb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBvcmlnaW5hbFNsaWRlcztcblxuICAgICAgICBpZihfLm9wdGlvbnMucm93cyA+IDApIHtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVzLmNoaWxkcmVuKCkuY2hpbGRyZW4oKTtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAgICAgICBfLiRzbGlkZXIuZW1wdHkoKS5hcHBlbmQob3JpZ2luYWxTbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLnNob3VsZENsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbn
14938REZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKHJlZnJlc2gpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuXG4gICAgICAgIF8uY2xlYW5VcEV2ZW50cygpO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLmRldGFjaCgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLiRwcmV2QXJyb3cgJiYgXy4kcHJldkFycm93Lmxlbmd0aCApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCBzbGljay1hcnJvdyBzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbiBhcmlhLWRpc2FibGVkIHRhYmluZGV4JylcbiAgICAgICAgICAgICAgICAuY3NzKCdkaXNwbGF5JywnJyk7XG5cbiAgICAgICAgICAgIGlmICggXy5odG1sRXhwci50ZXN0KCBfLm9wdGlvbnMucHJldkFycm93ICkpIHtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8uJG5leHRBcnJvdyAmJiBfLiRuZXh0QXJyb3cubGVuZ3RoICkge1xuXG4gICAgICAgICAgICBfLiRuZXh0QXJyb3dcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgnKVxuICAgICAgICAgICAgICAgIC5jc3MoJ2Rpc3BsYXknLCcnKTtcblxuICAgICAgICAgICAgaWYgKCBfLmh0bWxFeHByLnRlc3QoIF8ub3B0aW9ucy5uZXh0QXJyb3cgKSkge1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKF8uJHNsaWRlcykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLXNsaWNrLWluZGV4JylcbiAgICAgICAgICAgICAgICAuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3N0eWxlJywgJCh0aGlzKS5kYXRhKCdvcmlnaW5hbFN0eWxpbmcnKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kbGlzdC5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLmFwcGVuZChfLiRzbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5jbGVhblVwUm93cygpO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGVyJyk7XG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1kb3R0ZWQnKTtcblxuICAgICAgICBfLnVuc2xpY2tlZCA9IHRydWU7XG5cbiAgICAgICAgaWYoIXJlZnJlc2gpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdkZXN0cm95JywgW19dKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5kaXNhYmxlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSAnJztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZSkuY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZhZGVTbGlkZSA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgsIGNhbGxiYWNrKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuY3NzKHtcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXhcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy5hcHBseVRyYW5zaXRpb24oc2xpZGVJbmRleCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5jc3Moe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBfLmRpc2FibGVUcmFuc2l0aW9uKHNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoKTtcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgI
14938H1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmFkZVNsaWRlT3V0ID0gZnVuY3Rpb24oc2xpZGVJbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMlxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbihzbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmNzcyh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0ZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlcikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmZpbHRlcihmaWx0ZXIpLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZm9jdXNIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpXG4gICAgICAgICAgICAub24oJ2ZvY3VzLnNsaWNrIGJsdXIuc2xpY2snLCAnKicsIGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyICRzZiA9ICQodGhpcyk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnBhdXNlT25Gb2N1cyApIHtcbiAgICAgICAgICAgICAgICAgICAgXy5mb2N1c3NlZCA9ICRzZi5pcygnOmZvY3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0Q3VycmVudCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0N1cnJlbnRTbGlkZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF8uY3VycmVudFNsaWRlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXREb3RDb3VudCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICB2Y
14938XIgYnJlYWtQb2ludCA9IDA7XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgdmFyIHBhZ2VyUXR5ID0gMDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGNvdW50ZXIgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcGFnZXJRdHkgPSBfLnNsaWRlQ291bnQ7XG4gICAgICAgIH0gZWxzZSBpZighXy5vcHRpb25zLmFzTmF2Rm9yKSB7XG4gICAgICAgICAgICBwYWdlclF0eSA9IDEgKyBNYXRoLmNlaWwoKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIC8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBjb3VudGVyICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhZ2VyUXR5IC0gMTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgdmVydGljYWxIZWlnaHQsXG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9IDAsXG4gICAgICAgICAgICB0YXJnZXRTbGlkZSxcbiAgICAgICAgICAgIGNvZWY7XG5cbiAgICAgICAgXy5zbGlkZU9mZnNldCA9IDA7XG4gICAgICAgIHZlcnRpY2FsSGVpZ2h0ID0gXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKF8uc2xpZGVXaWR0aCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogLTE7XG4gICAgICAgICAgICAgICAgY29lZiA9IC0xXG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTEuNTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9ICh2ZXJ0aWNhbEhlaWdodCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogY29lZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA+IF8uc2xpZGVDb3VudCAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ID4gXy5zbGlkZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5zbGlkZU9mZnNldCA9ICgoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpICogdmVydGljYWxIZWlnaHQpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPiBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogXy5zbGlkZVdpZHRoO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogdmVydGljYWxIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAwO1xuICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSAvIDIpIC0gKChfLnNsaWRlV2lkdGggKiBfLnNsaWRlQ291bnQpIC8gMik7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgJiYgXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ICs9IF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIC0gXy5zbGlkZVdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgKz0gXy5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIF8uc2xpZGVXaWR0aCkgKiAtMSkgKyBfLnNsaWRlT2Zmc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xKSArIHZlcnRpY2FsT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyB8fCBfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2st
14938c2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSAoXy4kc2xpZGVUcmFjay53aWR0aCgpIC0gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAtIHRhcmdldFNsaWRlLndpZHRoKCkpICogLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IHx8IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKF8uJHNsaWRlVHJhY2sud2lkdGgoKSAtIHRhcmdldFNsaWRlWzBdLm9mZnNldExlZnQgLSB0YXJnZXRTbGlkZS53aWR0aCgpKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ICs9IChfLiRsaXN0LndpZHRoKCkgLSB0YXJnZXRTbGlkZS5vdXRlcldpZHRoKCkpIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRMZWZ0O1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRPcHRpb24gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHZXRPcHRpb24gPSBmdW5jdGlvbihvcHRpb24pIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF8ub3B0aW9uc1tvcHRpb25dO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZpZ2FibGVJbmRleGVzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYnJlYWtQb2ludCA9IDAsXG4gICAgICAgICAgICBjb3VudGVyID0gMCxcbiAgICAgICAgICAgIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgIG1heDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgY291bnRlciA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50ICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChicmVha1BvaW50IDwgbWF4KSB7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goYnJlYWtQb2ludCk7XG4gICAgICAgICAgICBicmVha1BvaW50ID0gY291bnRlciArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWNrID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWRlQ291bnQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZXNUcmF2ZXJzZWQsIHN3aXBlZFNsaWRlLCBjZW50ZXJPZmZzZXQ7XG5cbiAgICAgICAgY2VudGVyT2Zmc2V0ID0gXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgPyBfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSA6IDA7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLXNsaWRlJykuZWFjaChmdW5jdGlvbihpbmRleCwgc2xpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGUub2Zmc2V0TGVmdCAtIGNlbnRlck9mZnNldCArICgkKHNsaWRlKS5vdXRlcldpZHRoKCkgLyAyKSA+IChfLnN3aXBlTGVmdCAqIC0xKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2lwZWRTbGlkZSA9IHNsaWRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNsaWRlc1RyYXZlcnNlZCA9IE1hdGguYWJzKCQoc3dpcGVkU2xpZGUpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKSAtIF8uY3VycmVudFNsaWRlKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gc2xpZGVzVHJhdmVyc2VkO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdvVG8gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHb1RvID0gZnVuY3Rpb24oc2xpZGUsIGRvbnRBbmltYXRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCcsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHBhcnNlSW50KHNsaWRlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkb250QW5pbWF0ZSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihjcmVhdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoISQoXy4kc2xpZGVyKS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuXG4gICAgICAgICAgICAkKF8uJHNsaWRlcikuYWRkQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgICAgIF8uYnVpbGRSb3dzKCk7XG4gICAgICAgICAgICBfLmJ1aWxkT3V0KCk7XG4gICAgICAgICAgICBfLnNldFByb3BzKCk7XG4gICAgICAgICAgICBfLnN0YXJ0TG9hZCgpO1xuICAgICAgICAgICAgXy5sb2FkU2xpZGVyKCk7XG4gICAgICAgICAgICBfLmluaXRpYWxpemVFdmVudHMoKTtcbiAgICAgICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG4gICAgICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgICAgIF8uY2hlY2tSZXNwb25zaXZlKHRydWUpO1xuICAgICAgICAgICAgXy5mb2N1c0hhbmRsZXIoKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0aW9uKSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignaW5pdCcsIFtfXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uaW5pdEFEQSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG5cbiAgICAgICAgICAgIF8ucGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICAgICBudW1Eb3RHcm91cHMgPSBNYXRoLmNlaWwoXy5zbGlkZUNvdW50IC8gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyksXG4gICAgICAgICAgICAgICAgdGFiQ29udHJvbEluZGV4ZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKS5maWx0ZXIoZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodmFsID49IDApICYmICh2YWwgPCBfLnNsaWRlQ291bnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlcy5hZGQoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnLFxuICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICB9KS5maW5kKCdhLCBpbnB1dCwgYnV0dG9uLCBzZWxlY3QnKS5hdHRyKHtcbiAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5ub3QoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZUNvbnRyb2xJbmRleCA9IHRhYkNvbnRyb2xJbmRleGVzLmluZGV4T2YoaSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICd0YWJwYW5lbCcsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgaSxcbiAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogLTFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChzbGlkZUNvbnRyb2xJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICB2Y
14938XIgYXJpYUJ1dHRvbkNvbnRyb2wgPSAnc2xpY2stc2xpZGUtY29udHJvbCcgKyBfLmluc3RhbmNlVWlkICsgc2xpZGVDb250cm9sSW5kZXhcbiAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBhcmlhQnV0dG9uQ29udHJvbCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYUJ1dHRvbkNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXy4kZG90cy5hdHRyKCdyb2xlJywgJ3RhYmxpc3QnKS5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXBwZWRTbGlkZUluZGV4ID0gdGFiQ29udHJvbEluZGV4ZXNbaV07XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICdwcmVzZW50YXRpb24nXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ2J1dHRvbicpLmZpcnN0KCkuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3RhYicsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZS1jb250cm9sJyArIF8uaW5zdGFuY2VVaWQgKyBpLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1jb250cm9scyc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgbWFwcGVkU2xpZGVJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAoaSArIDEpICsgJyBvZiAnICsgbnVtRG90R3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSkuZXEoXy5jdXJyZW50U2xpZGUpLmZpbmQoJ2J1dHRvbicpLmF0dHIoe1xuICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogJ3RydWUnLFxuICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICcwJ1xuICAgICAgICAgICAgfSkuZW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpPV8uY3VycmVudFNsaWRlLCBtYXg9aStfLm9wdGlvbnMuc2xpZGVzVG9TaG93OyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShpKS5hdHRyKHsndGFiaW5kZXgnOiAnMCd9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKGkpLnJlbW92ZUF0dHIoJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy5hY3RpdmF0ZUFEQSgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QXJyb3dFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycpXG4gICAgICAgICAgICAgICAub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAncHJldmlvdXMnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvd1xuICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snKVxuICAgICAgICAgICAgICAgLm9uKCdjbGljay5zbGljaycsIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93Lm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXREb3RFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cykub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCdcbiAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRkb3RzLm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMucGF1c2VPbkRvdHNIb3ZlciA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cylcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLnBhdXNlT25Ib3ZlciApIHtcblxuICAgICAgICAgICAgXy4kbGlzdC5vbignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKTtcbiAgICAgICAgICAgIF8uJGxpc3Qub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdGlhbGl6ZUV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuXG4gICAgICAgIF8uaW5pdERvdEV2ZW50cygpO1xuICAgICAgICBfLmluaXRTbGlkZUV2ZW50cygpO1xuXG4gICAgICAgIF8uJGxpc3Qub24oJ3RvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnc3RhcnQnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ21vdmUnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2VuZCdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZW5kJ1xuICAgICAgICB9LCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vbignY2xpY2suc2xpY2snLCBfLmNsaWNrSGFuZGxlcik7XG5cbiAgICAgICAgJChkb2N1bWVudCkub24oXy52aXNpYmlsaXR5Q2hhbmdlLCAkLnByb3h5KF8udmlzaWJpbGl0eSwgXykpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5vbigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25TZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICQoXy4kc2xpZGVUcmFjaykuY2hpbGRyZW4oKS5vbignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgJC5wcm94eShfLm9yaWVudGF0aW9uQ2hhbmdlLCBfKSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsICQucHJveHkoXy5yZXNpemUsIF8pKTtcblxuICAgICAgICAkKCdbZHJhZ2dhYmxlIT10cnVlXScsIF8uJHNsaWRlVHJhY2spLm9uKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub24oJ2xvYWQuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8uc2V0UG9zaXRpb24pO1xuICAgICAgICAkKF8uc2V0UG9zaXRpb24pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0VUkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cuc2hvdygpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LnNob3coKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kZG90cy5zaG93KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5rZXlIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgICAvL0RvbnQgc2xpZGUgaWYgdGhlIGN1cnNvciBpcyBpbnNpZGUgdGhlIGZvcm0gZmllbGRzIGFuZCBhcnJvdyBrZXlzIGFyZSBwcmVzc2VkXG4gICAgICAgIGlmKCFldmVudC50YXJnZXQudGFnTmFtZS5tYXRjaCgnVEVYVEFSRUF8SU5QVVR8U0VMRUNUJykpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzNyAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ25leHQnIDogICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSAzOSAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ3ByZXZpb3VzJyA6ICduZXh0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubGF6eUxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBsb2FkUmFuZ2UsIGNsb25lUmFuZ2UsIHJhbmdlU3RhcnQsIHJhbmdlRW5kO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZXMoaW1hZ2VzU2NvcGUpIHtcblxuICAgICAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBpbWFnZXNTY29wZSkuZWFjaChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU291cmNlID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxhenknKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc3Jjc2V0JyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZXMgID0gJCh0aGlzKS5hdHRyKCdkYXRhLXNpemVzJykgfHwgXy4kc2xpZGVyLmF0dHIoJ2RhdGEtc2l6ZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDAgfSwgMTAwLCBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNyY1NldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyY3NldCcsIGltYWdlU3JjU2V0ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NpemVzJywgaW1hZ2VTaXplcyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyYycsIGltYWdlU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDEgfSwgMjAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2RhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbXywgaW1hZ2UsIGltYWdlU291cmNlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCAnZGF0YS1sYXp5JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoICdzbGljay1sb2FkaW5nJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICdzbGljay1sYXp5bG9hZC1lcnJvcicgKTtcblxuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRFcnJvcicsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLnNyYyA9IGltYWdlU291cmNlO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8uY3VycmVudFNsaWRlICsgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSk7XG4gICAgICAgICAgICAgICAgcmFuZ2VFbmQgPSByYW5nZVN0YXJ0ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJhbmdlU3RhcnQgPSBNYXRoLm1heCgwLCBfLmN1cnJlbnRTbGlkZSAtIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEpKTtcbiAgICAgICAgICAgICAgICByYW5nZUVuZCA9IDIgKyAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKSArIF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8ub3B0aW9ucy5pbmZpbml0ZSA/IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBfLmN1cnJlbnRTbGlkZSA6IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSBNYXRoLmNlaWwocmFuZ2VTdGFydCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpO1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlU3RhcnQgPiAwKSByYW5nZVN0YXJ0LS07XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kIDw9IF8uc2xpZGVDb3VudCkgcmFuZ2VFbmQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxvYWRSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKS5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ2FudGljaXBhdGVkJykge1xuICAgICAgICAgICAgdmFyIHByZXZTbGlkZSA9IHJhbmdlU3RhcnQgLSAxLFxuICAgICAgICAgICAgICAgIG5leHRTbGlkZSA9IHJhbmdlRW5kLFxuICAgICAgICAgICAgICAgICRzbGlkZXMgPSBfLiRzbGlkZXIuZmluZCgnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldlNsaWRlIDwgMCkgcHJldlNsaWRlID0gXy5zbGlkZUNvdW50IC0gMTtcbiAgICAgICAgICAgICAgICBsb2FkUmFuZ2UgPSBsb2FkUmFuZ2UuYWRkKCRzbGlkZXMuZXEocHJldlNsaWRlKSk7XG4gICAgICAgICAgICAgICAgbG9hZFJhbmdlID0gbG9hZFJhbmdlLmFkZCgkc2xpZGVzLmVxKG5leHRTbGlkZSkpO1xuICAgICAgICAgICAgICAgI
14938HByZXZTbGlkZS0tO1xuICAgICAgICAgICAgICAgIG5leHRTbGlkZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9hZEltYWdlcyhsb2FkUmFuZ2UpO1xuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKTtcbiAgICAgICAgICAgIGxvYWRJbWFnZXMoY2xvbmVSYW5nZSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stY2xvbmVkJykuc2xpY2UoMCwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBsb2FkSW1hZ2VzKGNsb25lUmFuZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID09PSAwKSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1jbG9uZWQnKS5zbGljZShfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICogLTEpO1xuICAgICAgICAgICAgbG9hZEltYWdlcyhjbG9uZVJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5sb2FkU2xpZGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uaW5pdFVJKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ3Byb2dyZXNzaXZlJykge1xuICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubmV4dCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja05leHQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5vcmllbnRhdGlvbkNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnBhdXNlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUGF1c2UgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG4gICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucGxheSA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1BsYXkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICBfLm9wdGlvbnMuYXV0b3BsYXkgPSB0cnVlO1xuICAgICAgICBfLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICBfLmZvY3Vzc2VkID0gZmFsc2U7XG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSBmYWxzZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucG9zdFNsaWRlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYoICFfLnVuc2xpY2tlZCApIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FmdGVyQ2hhbmdlJywgW18sIGluZGV4XSk7XG5cbiAgICAgICAgICAgIF8uYW5pbWF0aW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgXy5zZXRQb3NpdGlvbigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5pbml0QURBKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRjdXJyZW50U2xpZGUgPSAkKF8uJHNsaWRlcy5nZXQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRTbGlkZS5hdHRyKCd0YWJpbmRleCcsIDApLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldiA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1ByZXYgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnByb2dyZXNzaXZlTGF6eUxvYWQgPSBmdW5jdGlvbiggdHJ5Q291bnQgKSB7XG5cbiAgICAgICAgdHJ5Q291bnQgPSB0cnlDb3VudCB8fCAxO1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICRpbWdzVG9Mb2FkID0gJCggJ2ltZ1tkYXRhLWxhenldJywgXy4kc2xpZGVyICksXG4gICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgIGltYWdlU291cmNlLFxuICAgICAgICAgICAgaW1hZ2VTcmNTZXQsXG4gICAgICAgICAgICBpbWFnZVNpemVzLFxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQ7XG5cbiAgICAgICAgaWYgKCAkaW1nc1RvTG9hZC5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIGltYWdlID0gJGltZ3NUb0xvYWQuZmlyc3QoKTtcbiAgICAgICAgICAgIGltYWdlU291cmNlID0gaW1hZ2UuYXR0cignZGF0YS1sYXp5Jyk7XG4gICAgICAgICAgICBpbWFnZVNyY1NldCA9IGltYWdlLmF0dHIoJ2RhdGEtc3Jjc2V0Jyk7XG4gICAgICAgICAgICBpbWFnZVNpemVzICA9IGltYWdlLmF0dHIoJ2RhdGEtc2l6ZXMnKSB8fCBfLiRzbGlkZXIuYXR0cignZGF0YS1zaXplcycpO1xuICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTcmNTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzcmNzZXQnLCBpbWFnZVNyY1NldCApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNpemVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzaXplcycsIGltYWdlU2l6ZXMgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCAnc3JjJywgaW1hZ2VTb3VyY2UgKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMnKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgICAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ID09PSB0cnVlICkge1xuICAgICAgICAgICAgICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcbiAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0cnlDb3VudCA8IDMgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIHRyeSB0byBsb2FkIHRoZSBpbWFnZSAzIHRpbWVzLFxuICAgICAgICAgICAgICAgICAgICAgKiBsZWF2ZSBhIHNsaWdodCBkZWxheSBzbyB3ZSBkb24ndCBnZXRcbiAgICAgICAgICAgICAgICAgICAgICogc2VydmVycyBibG9ja2luZyB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCB0cnlDb3VudCArIDEgKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwICk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0ciggJ2RhdGEtbGF6eScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCAnc2xpY2stbG9hZGluZycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCAnc2xpY2stbGF6eWxvYWQtZXJyb3InICk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkRXJyb3InLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcblxuICAgICAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQuc3JjID0gaW1hZ2VTb3VyY2U7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FsbEltYWdlc0xvYWRlZCcsIFsgXyBdKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiggaW5pdGlhbGl6aW5nICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgY3VycmVudFNsaWRlLCBsYXN0VmlzaWJsZUluZGV4O1xuXG4gICAgICAgIGxhc3RWaXNpYmxlSW5kZXggPSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuXG4gICAgICAgIC8vIGluIG5vbi1pbmZpbml0ZSBzbGlkZXJzLCB3ZSBkb24ndCB3YW50IHRvIGdvIHBhc3QgdGhlXG4gICAgICAgIC8vIGxhc3QgdmlzaWJsZSBpbmRleC5cbiAgICAgICAgaWYoICFfLm9wdGlvbnMuaW5maW5pdGUgJiYgKCBfLmN1cnJlbnRTbGlkZSA+IGxhc3RWaXNpYmxlSW5kZXggKSkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBsYXN0VmlzaWJsZUluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgbGVzcyBzbGlkZXMgdGhhbiB0byBzaG93LCBnbyB0byBzdGFydC5cbiAgICAgICAgaWYgKCBfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gMDtcblxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFNsaWRlID0gXy5jdXJyZW50U2xpZGU7XG5cbiAgICAgICAgXy5kZXN0cm95KHRydWUpO1xuXG4gICAgICAgICQuZXh0ZW5kKF8sIF8uaW5pdGlhbHMsIHsgY3VycmVudFNsaWRlOiBjdXJyZW50U2xpZGUgfSk7XG5cbiAgICAgICAgXy5pbml0KCk7XG5cbiAgICAgICAgaWYoICFpbml0aWFsaXppbmcgKSB7XG5cbiAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRTbGlkZVxuICAgICAgICAgICAgICAgI
14938H1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZ2lzdGVyQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsIGJyZWFrcG9pbnQsIGN1cnJlbnRCcmVha3BvaW50LCBsLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZVNldHRpbmdzID0gXy5vcHRpb25zLnJlc3BvbnNpdmUgfHwgbnVsbDtcblxuICAgICAgICBpZiAoICQudHlwZShyZXNwb25zaXZlU2V0dGluZ3MpID09PSAnYXJyYXknICYmIHJlc3BvbnNpdmVTZXR0aW5ncy5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gXy5vcHRpb25zLnJlc3BvbmRUbyB8fCAnd2luZG93JztcblxuICAgICAgICAgICAgZm9yICggYnJlYWtwb2ludCBpbiByZXNwb25zaXZlU2V0dGluZ3MgKSB7XG5cbiAgICAgICAgICAgICAgICBsID0gXy5icmVha3BvaW50cy5sZW5ndGgtMTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zaXZlU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYnJlYWtwb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrcG9pbnQgPSByZXNwb25zaXZlU2V0dGluZ3NbYnJlYWtwb2ludF0uYnJlYWtwb2ludDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIGFuZCBjdXQgb3V0IGFueSBleGlzdGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmVzIHdpdGggdGhlIHNhbWUgYnJlYWtwb2ludCBudW1iZXIsIHdlIGRvbid0IHdhbnQgZHVwZXMuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKCBsID49IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5icmVha3BvaW50c1tsXSAmJiBfLmJyZWFrcG9pbnRzW2xdID09PSBjdXJyZW50QnJlYWtwb2ludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRzLnNwbGljZShsLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbC0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50cy5wdXNoKGN1cnJlbnRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbY3VycmVudEJyZWFrcG9pbnRdID0gcmVzcG9uc2l2ZVNldHRpbmdzW2JyZWFrcG9pbnRdLnNldHRpbmdzO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uYnJlYWtwb2ludHMuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICggXy5vcHRpb25zLm1vYmlsZUZpcnN0ICkgPyBhLWIgOiBiLWE7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZXMgPVxuICAgICAgICAgICAgXy4kc2xpZGVUcmFja1xuICAgICAgICAgICAgICAgIC5jaGlsZHJlbihfLm9wdGlvbnMuc2xpZGUpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1zbGlkZScpO1xuXG4gICAgICAgIF8uc2xpZGVDb3VudCA9IF8uJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAmJiBfLmN1cnJlbnRTbGlkZSAhPT0gMCkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLmN1cnJlbnRTbGlkZSAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5yZWdpc3RlckJyZWFrcG9pbnRzKCk7XG5cbiAgICAgICAgXy5zZXRQcm9wcygpO1xuICAgICAgICBfLnNldHVwSW5maW5pdGUoKTtcbiAgICAgICAgXy5idWlsZEFycm93cygpO1xuICAgICAgICBfLnVwZGF0ZUFycm93cygpO1xuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuICAgICAgICBfLmJ1aWxkRG90cygpO1xuICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgXy5pbml0RG90RXZlbnRzKCk7XG4gICAgICAgIF8uY2xlYW5VcFNsaWRlRXZlbnRzKCk7XG4gICAgICAgIF8uaW5pdFNsaWRlRXZlbnRzKCk7XG5cbiAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3Nlcyh0eXBlb2YgXy5jdXJyZW50U2xpZGUgPT09ICdudW1iZXInID8gXy5jdXJyZW50U2xpZGUgOiAwKTtcblxuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgIF8uZm9jdXNIYW5kbGVyKCk7XG5cbiAgICAgICAgXy5wYXVzZWQgPSAhXy5vcHRpb25zLmF1dG9wbGF5O1xuICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3JlSW5pdCcsIFtfXSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgIT09IF8ud2luZG93V2lkdGgpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChfLndpbmRvd0RlbGF5KTtcbiAgICAgICAgICAgIF8ud2luZG93RGVsYXkgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBfLndpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoKTtcbiAgICAgICAgICAgICAgICBpZiggIV8udW5zbGlja2VkICkgeyBfLnNldFBvc2l0aW9uKCk7IH1cbiAgICAgICAgICAgI
14938H0sIDUwKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVtb3ZlU2xpZGUgPSBTbGljay5wcm90b3R5cGUuc2xpY2tSZW1vdmUgPSBmdW5jdGlvbihpbmRleCwgcmVtb3ZlQmVmb3JlLCByZW1vdmVBbGwpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZihpbmRleCkgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmVtb3ZlQmVmb3JlID0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IHJlbW92ZUJlZm9yZSA9PT0gdHJ1ZSA/IDAgOiBfLnNsaWRlQ291bnQgLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggPSByZW1vdmVCZWZvcmUgPT09IHRydWUgPyAtLWluZGV4IDogaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDwgMSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPiBfLnNsaWRlQ291bnQgLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgIGlmIChyZW1vdmVBbGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oKS5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5lcShpbmRleCkucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXMgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suYXBwZW5kKF8uJHNsaWRlcyk7XG5cbiAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgXy5yZWluaXQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0Q1NTID0gZnVuY3Rpb24ocG9zaXRpb24pIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge30sXG4gICAgICAgICAgICB4LCB5O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IC1wb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB4ID0gXy5wb3NpdGlvblByb3AgPT0gJ2xlZnQnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcbiAgICAgICAgeSA9IF8ucG9zaXRpb25Qcm9wID09ICd0b3AnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcblxuICAgICAgICBwb3NpdGlvblByb3BzW18ucG9zaXRpb25Qcm9wXSA9IHBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChfLnRyYW5zZm9ybXNFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MocG9zaXRpb25Qcm9wcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge307XG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICsgeCArICcsICcgKyB5ICsgJyknO1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHBvc2l0aW9uUHJvcHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKCcgKyB4ICsgJywgJyArIHkgKyAnLCAwcHgpJztcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhwb3NpdGlvblByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXREaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICgnMHB4ICcgKyBfLm9wdGlvbnMuY2VudGVyUGFkZGluZylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJGxpc3QuaGVpZ2h0KF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IChfLm9wdGlvbnMuY2VudGVyUGFkZGluZyArICcgMHB4JylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF8ubGlzdFdpZHRoID0gXy4kbGlzdC53aWR0aCgpO1xuICAgICAgICBfLmxpc3RIZWlnaHQgPSBfLiRsaXN0LmhlaWdodCgpO1xuXG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UgJiYgXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNsaWRlV2lkdGggPSBNYXRoLmNlaWwoXy5saXN0V2lkdGggLyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2sud2lkdGgoTWF0aC5jZWlsKChfLnNsaWRlV2lkdGggKiBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5sZW5ndGgpKSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay53aWR0aCg1MDAwICogXy5zbGlkZUNvdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2xpZGVXaWR0aCA9IE1hdGguY2VpbChfLmxpc3RXaWR0aCk7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmhlaWdodChNYXRoLmNlaWwoKF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy4kc2xpZGVUcmFjay5jaGlsZHJlbignLnNsaWNrLXNsaWRlJykubGVuZ3RoKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9mZnNldCA9IF8uJHNsaWRlcy5maXJzdCgpLm91dGVyV2lkdGgodHJ1ZSkgLSBfLiRzbGlkZXMuZmlyc3QoKS53aWR0aCgpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS53aWR0aChfLnNsaWRlV2lkdGggLSBvZmZzZXQpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRGYWRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdGFyZ2V0TGVmdDtcblxuICAgICAgICBfLiRzbGlkZXMuZWFjaChmdW5jdGlvbihpbmRleCwgZWxlbWVudCkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IChfLnNsaWRlV2lkdGggKiBpbmRleCkgKiAtMTtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChlbGVtZW50KS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHRhcmdldExlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleCAtIDIsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgI
14938H1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5jc3Moe1xuICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmNzcygnaGVpZ2h0JywgdGFyZ2V0SGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRPcHRpb24gPVxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlja1NldE9wdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhY2NlcHRzIGFyZ3VtZW50cyBpbiBmb3JtYXQgb2Y6XG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciBjaGFuZ2luZyBhIHNpbmdsZSBvcHRpb24ncyB2YWx1ZTpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoIClcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIGNoYW5naW5nIGEgc2V0IG9mIHJlc3BvbnNpdmUgb3B0aW9uczpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCAncmVzcG9uc2l2ZScsIFt7fSwgLi4uXSwgcmVmcmVzaCApXG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciB1cGRhdGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgb25jZSAobm90IHJlc3BvbnNpdmUpXG4gICAgICAgICAqICAgICAuc2xpY2soXCJzZXRPcHRpb25cIiwgeyAnb3B0aW9uJzogdmFsdWUsIC4uLiB9LCByZWZyZXNoIClcbiAgICAgICAgICovXG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBsLCBpdGVtLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoID0gZmFsc2UsIHR5cGU7XG5cbiAgICAgICAgaWYoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdvYmplY3QnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgcmVmcmVzaCA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgIHR5cGUgPSAnbXVsdGlwbGUnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdzdHJpbmcnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICAgICAgICByZWZyZXNoID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICAgICAgICBpZiAoIGFyZ3VtZW50c1swXSA9PT0gJ3Jlc3BvbnNpdmUnICYmICQudHlwZSggYXJndW1lbnRzWzFdICkgPT09ICdhcnJheScgKSB7XG5cbiAgICAgICAgICAgICAgICB0eXBlID0gJ3Jlc3BvbnNpdmUnO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgYXJndW1lbnRzWzFdICE9PSAndW5kZWZpbmVkJyApIHtcblxuICAgICAgICAgICAgICAgIHR5cGUgPSAnc2luZ2xlJztcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHR5cGUgPT09ICdzaW5nbGUnICkge1xuXG4gICAgICAgICAgICBfLm9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlO1xuXG5cbiAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ211bHRpcGxlJyApIHtcblxuICAgICAgICAgICAgJC5lYWNoKCBvcHRpb24gLCBmdW5jdGlvbiggb3B0LCB2YWwgKSB7XG5cbiAgICAgICAgICAgICAgICBfLm9wdGlvbnNbb3B0XSA9IHZhbDtcblxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAncmVzcG9uc2l2ZScgKSB7XG5cbiAgICAgICAgICAgIGZvciAoIGl0ZW0gaW4gdmFsdWUgKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggJC50eXBlKCBfLm9wdGlvbnMucmVzcG9uc2l2ZSApICE9PSAnYXJyYXknICkge1xuXG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlID0gWyB2YWx1ZVtpdGVtXSBdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBsID0gXy5vcHRpb25zLnJlc3BvbnNpdmUubGVuZ3RoLTE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCB0aHJvdWdoIHRoZSByZXNwb25zaXZlIG9iamVjdCBhbmQgc3BsaWNlIG91dCBkdXBsaWNhdGVzLlxuICAgICAgICAgICAgICAgICAgICB3aGlsZSggbCA+PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnJlc3BvbnNpdmVbbF0uYnJlYWtwb2ludCA9PT0gdmFsdWVbaXRlbV0uYnJlYWtwb2ludCApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZShsLDEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGwtLTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUucHVzaCggdmFsdWVbaXRlbV0gKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHJlZnJlc2ggKSB7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zZXREaW1lbnNpb25zKCk7XG5cbiAgICAgICAgXy5zZXRIZWlnaHQoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNldENTUyhfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2V0RmFkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3NldFBvc2l0aW9uJywgW19dKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UHJvcHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBib2R5U3R5bGUgPSBkb2N1bWVudC5ib2R5LnN0eWxlO1xuXG4gICAgICAgIF8ucG9zaXRpb25Qcm9wID0gXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlID8gJ3RvcCcgOiAnbGVmdCc7XG5cbiAgICAgICAgaWYgKF8ucG9zaXRpb25Qcm9wID09PSAndG9wJykge1xuICAgICAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5XZWJraXRUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5Nb3pUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5tc1RyYW5zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy51c2VDU1MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLmNzc1RyYW5zaXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmZhZGUgKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBfLm9wdGlvbnMuekluZGV4ID09PSAnbnVtYmVyJyApIHtcbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnpJbmRleCA8IDMgKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy56SW5kZXggPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5vcHRpb25zLnpJbmRleCA9IF8uZGVmYXVsdHMuekluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5PVHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAnT1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW8tdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnT1RyYW5zaXRpb24nO1xuICAgICAgICAgICAgaWYgKGJvZHlTdHlsZS5wZXJzcGVjdGl2ZVByb3BlcnR5ID09PSB1bmRlZmluZWQgJiYgYm9keVN0eWxlLndlYmtpdFBlcnNwZWN0aXZlID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLk1velRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ01velRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1vei10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICdNb3pUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUucGVyc3BlY3RpdmVQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkICYmIGJvZHlTdHlsZS5Nb3pQZXJzcGVjdGl2ZSA9PT0gdW5kZWZpbmVkKSBfLmFuaW1UeXBlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJvZHlTdHlsZS53ZWJraXRUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICd3ZWJraXRUcmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gJy13ZWJraXQtdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnd2Via2l0VHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLnBlcnNwZWN0aXZlUHJvcGVydHkgPT09IHVuZGVmaW5lZCAmJiBib2R5U3R5bGUud2Via2l0UGVyc3BlY3RpdmUgPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUubXNUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICdtc1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1zLXRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zaXRpb25UeXBlID0gJ21zVHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLm1zVHJhbnNmb3JtID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkICYmIF8uYW5pbVR5cGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAndHJhbnNpdGlvbic7XG4gICAgICAgIH1cbiAgICAgICAgXy50cmFuc2Zvcm1zRW5hYmxlZCA9IF8ub3B0aW9ucy51c2VUcmFuc2Zvcm0gJiYgKF8uYW5pbVR5cGUgIT09IG51bGwgJiYgXy5hbmltVHlwZSAhPT0gZmFsc2UpO1xuICAgIH07XG5cblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRTbGlkZUNsYXNzZXMgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGNlbnRlck9mZnNldCwgYWxsU2xpZGVzLCBpbmRleE9mZnNldCwgcmVtYWluZGVyO1xuXG4gICAgICAgIGFsbFNsaWRlcyA9IF8uJHNsaWRlclxuICAgICAgICAgICAgLmZpbmQoJy5zbGljay1zbGlkZScpXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXG4gICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jdXJyZW50Jyk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgI
14938HZhciBldmVuQ29lZiA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJSAyID09PSAwID8gMSA6IDA7XG5cbiAgICAgICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2VudGVyT2Zmc2V0ICYmIGluZGV4IDw9IChfLnNsaWRlQ291bnQgLSAxKSAtIGNlbnRlck9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCAtIGNlbnRlck9mZnNldCArIGV2ZW5Db2VmLCBpbmRleCArIGNlbnRlck9mZnNldCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gY2VudGVyT2Zmc2V0ICsgMSArIGV2ZW5Db2VmLCBpbmRleE9mZnNldCArIGNlbnRlck9mZnNldCArIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmVxKGFsbFNsaWRlcy5sZW5ndGggLSAxIC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBfLnNsaWRlQ291bnQgLSAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXEoXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy4kc2xpZGVzXG4gICAgICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSB7XG5cbiAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4LCBpbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2xpZGVzLmxlbmd0aCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUgPyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXggOiBpbmRleDtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAmJiAoXy5zbGlkZUNvdW50IC0gaW5kZXgpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSByZW1haW5kZXIpLCBpbmRleE9mZnNldCArIHJlbWFpbmRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
14938pZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleE9mZnNldCwgaW5kZXhPZmZzZXQgKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ29uZGVtYW5kJyB8fCBfLm9wdGlvbnMubGF6eUxvYWQgPT09ICdhbnRpY2lwYXRlZCcpIHtcbiAgICAgICAgICAgIF8ubGF6eUxvYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0dXBJbmZpbml0ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIHNsaWRlSW5kZXgsIGluZmluaXRlQ291bnQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuY2VudGVyTW9kZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgc2xpZGVJbmRleCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluZmluaXRlQ291bnQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IF8uc2xpZGVDb3VudDsgaSA+IChfLnNsaWRlQ291bnQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCk7IGkgLT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICQoXy4kc2xpZGVzW3NsaWRlSW5kZXhdKS5jbG9uZSh0cnVlKS5hdHRyKCdpZCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBzbGlkZUluZGV4IC0gXy5zbGlkZUNvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbmZpbml0ZUNvdW50ICArIF8uc2xpZGVDb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAkKF8uJHNsaWRlc1tzbGlkZUluZGV4XSkuY2xvbmUodHJ1ZSkuYXR0cignaWQnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4Jywgc2xpZGVJbmRleCArIF8uc2xpZGVDb3VudClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLWNsb25lZCcpLmZpbmQoJ1tpZF0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2lkJywgJycpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBmdW5jdGlvbiggdG9nZ2xlICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiggIXRvZ2dsZSApIHtcbiAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBfLmludGVycnVwdGVkID0gdG9nZ2xlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZWxlY3RIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHRhcmdldEVsZW1lbnQgPVxuICAgICAgICAgICAgJChldmVudC50YXJnZXQpLmlzKCcuc2xpY2stc2xpZGUnKSA/XG4gICAgICAgICAgICAgICAgJChldmVudC50YXJnZXQpIDpcbiAgICAgICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VJbnQodGFyZ2V0RWxlbWVudC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4JykpO1xuXG4gICAgICAgIGlmICghaW5kZXgpIGluZGV4ID0gMDtcblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB9XG5cbiAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlkZUhhbmRsZXIgPSBmdW5jdGlvbihpbmRleCwgc3luYywgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgdGFyZ2V0U2xpZGUsIGFuaW1TbGlkZSwgb2xkU2xpZGUsIHNsaWRlTGVmdCwgdGFyZ2V0TGVmdCA9IG51bGwsXG4gICAgICAgICAgICBfID0gdGhpcywgbmF2VGFyZ2V0O1xuXG4gICAgICAgIHN5bmMgPSBzeW5jIHx8IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLmFuaW1hdGluZyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMud2FpdEZvckFuaW1hdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSAmJiBfLmN1cnJlbnRTbGlkZSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy5hc05hdkZvcihpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRTbGlkZSA9IGluZGV4O1xuICAgICAgICB0YXJnZXRMZWZ0ID0gXy5nZXRMZWZ0KHRhcmdldFNsaWRlKTtcbiAgICAgICAgc2xpZGVMZWZ0ID0gXy5nZXRMZWZ0KF8uY3VycmVudFNsaWRlKTtcblxuICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gXy5zd2lwZUxlZnQgPT09IG51bGwgPyBzbGlkZUxlZnQgOiBfLnN3aXBlTGVmdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UgJiYgKGluZGV4IDwgMCB8fCBpbmRleCA+IF8uZ2V0RG90Q291bnQoKSAqIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHNsaWRlTGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID4gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICAgICBfLmFuaW1hdGVTbGlkZShzbGlkZUxlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUodGFyZ2V0U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF8uYXV0b1BsYXlUaW1lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0U2xpZGUgPCAwKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gXy5zbGlkZUNvdW50IC0gKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IF8uc2xpZGVDb3VudCArIHRhcmdldFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldFNsaWRlID49IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IHRhcmdldFNsaWRlIC0gXy5zbGlkZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5pbVNsaWRlID0gdGFyZ2V0U2xpZGU7XG4gICAgICAgIH1cblxuICAgICAgICBfLmFuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2JlZm9yZUNoYW5nZScsIFtfLCBfLmN1cnJlbnRTbGlkZSwgYW5pbVNsaWRlXSk7XG5cbiAgICAgICAgb2xkU2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBhbmltU2xpZGU7XG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXMoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFzTmF2Rm9yICkge1xuXG4gICAgICAgICAgICBuYXZUYXJnZXQgPSBfLmdldE5hdlRhcmdldCgpO1xuICAgICAgICAgICAgbmF2VGFyZ2V0ID0gbmF2VGFyZ2V0LnNsaWNrKCdnZXRTbGljaycpO1xuXG4gICAgICAgICAgICBpZiAoIG5hdlRhcmdldC5zbGlkZUNvdW50IDw9IG5hdlRhcmdldC5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgICAgICBuYXZUYXJnZXQuc2V0U2xpZGVDbGFzc2VzKF8uY3VycmVudFNsaWRlKTtcbiAgICAgICAgICAgI
14938H1cblxuICAgICAgICB9XG5cbiAgICAgICAgXy51cGRhdGVEb3RzKCk7XG4gICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlT3V0KG9sZFNsaWRlKTtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlKGFuaW1TbGlkZSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbnRBbmltYXRlICE9PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHRhcmdldExlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3RhcnRMb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LmhpZGUoKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5oaWRlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHMuaGlkZSgpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVEaXJlY3Rpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgeERpc3QsIHlEaXN0LCByLCBzd2lwZUFuZ2xlLCBfID0gdGhpcztcblxuICAgICAgICB4RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRYIC0gXy50b3VjaE9iamVjdC5jdXJYO1xuICAgICAgICB5RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRZIC0gXy50b3VjaE9iamVjdC5jdXJZO1xuICAgICAgICByID0gTWF0aC5hdGFuMih5RGlzdCwgeERpc3QpO1xuXG4gICAgICAgIHN3aXBlQW5nbGUgPSBNYXRoLnJvdW5kKHIgKiAxODAgLyBNYXRoLlBJKTtcbiAgICAgICAgaWYgKHN3aXBlQW5nbGUgPCAwKSB7XG4gICAgICAgICAgICBzd2lwZUFuZ2xlID0gMzYwIC0gTWF0aC5hYnMoc3dpcGVBbmdsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPD0gNDUpICYmIChzd2lwZUFuZ2xlID49IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzd2lwZUFuZ2xlIDw9IDM2MCkgJiYgKHN3aXBlQW5nbGUgPj0gMzE1KSkge1xuICAgICAgICAgICAgcmV0dXJuIChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/ICdsZWZ0JyA6ICdyaWdodCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoc3dpcGVBbmdsZSA+PSAxMzUpICYmIChzd2lwZUFuZ2xlIDw9IDIyNSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXy5vcHRpb25zLnJ0bCA9PT0gZmFsc2UgPyAncmlnaHQnIDogJ2xlZnQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChzd2lwZUFuZ2xlID49IDM1KSAmJiAoc3dpcGVBbmdsZSA8PSAxMzUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb3duJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd1cCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3ZlcnRpY2FsJztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVFbmQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlQ291bnQsXG4gICAgICAgICAgICBkaXJlY3Rpb247XG5cbiAgICAgICAgXy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICBfLnN3aXBpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXy5zY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIF8uc2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG4gICAgICAgIF8uc2hvdWxkQ2xpY2sgPSAoIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiAxMCApID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5jdXJYID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9PT0gdHJ1ZSApIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdlZGdlJywgW18sIF8uc3dpcGVEaXJlY3Rpb24oKSBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+PSBfLnRvdWNoT2JqZWN0Lm1pblN3aXBlICkge1xuXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoIGRpcmVjdGlvbiApIHtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgKyBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSArIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndXAnOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgLSBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSAtIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoIGRpcmVjdGlvbiAhPSAndmVydGljYWwnICkge1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoIHNsaWRlQ291bnQgKTtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0ID0ge307XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3N3aXBlJywgW18sIGRpcmVjdGlvbiBdKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zdGFydFggIT09IF8udG91Y2hPYmplY3QuY3VyWCApIHtcblxuICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKCBfLmN1cnJlbnRTbGlkZSApO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKChfLm9wdGlvbnMuc3dpcGUgPT09IGZhbHNlKSB8fCAoJ29udG91Y2hlbmQnIGluIGRvY3VtZW50ICYmIF8ub3B0aW9ucy5zd2lwZSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmRyYWdnYWJsZSA9PT0gZmFsc2UgJiYgZXZlbnQudHlwZS5pbmRleE9mKCdtb3VzZScpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5maW5nZXJDb3VudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aCA6IDE7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5taW5Td2lwZSA9IF8ubGlzdFdpZHRoIC8gXy5vcHRpb25zXG4gICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QubWluU3dpcGUgPSBfLmxpc3RIZWlnaHQgLyBfLm9wdGlvbnNcbiAgICAgICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuYWN0aW9uKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlTW92ZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgXy5zd2lwZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZU1vdmUgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGVkZ2VXYXNIaXQgPSBmYWxzZSxcbiAgICAgICAgICAgIGN1ckxlZnQsIHN3aXBlRGlyZWN0aW9uLCBzd2lwZUxlbmd0aCwgcG9zaXRpb25PZmZzZXQsIHRvdWNoZXMsIHZlcnRpY2FsU3dpcGVMZW5ndGg7XG5cbiAgICAgICAgdG91Y2hlcyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCA/IGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlcyA6IG51bGw7XG5cbiAgICAgICAgaWYgKCFfLmRyYWdnaW5nIHx8IF8uc2Nyb2xsaW5nIHx8IHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1ckxlZnQgPSBfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXNbMF0ucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LmN1clkgPSB0b3VjaGVzICE9PSB1bmRlZmluZWQgPyB0b3VjaGVzWzBdLnBhZ2VZIDogZXZlbnQuY2xpZW50WTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clggLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WCwgMikpKTtcblxuICAgICAgICB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clkgLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WSwgMikpKTtcblxuICAgICAgICBpZiAoIV8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgIV8uc3dpcGluZyAmJiB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSB2ZXJ0aWNhbFN3aXBlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpcGVEaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCAmJiBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zd2lwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBwb3NpdGlvbk9mZnNldCA9IChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/IDEgOiAtMSkgKiAoXy50b3VjaE9iamVjdC5jdXJYID4gXy50b3VjaE9iamVjdC5zdGFydFggPyAxIDogLTEpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb25PZmZzZXQgPSBfLnRvdWNoT2JqZWN0LmN1clkgPiBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA/IDEgOiAtMTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoKF8uY3VycmVudFNsaWRlID09PSAwICYmIHN3aXBlRGlyZWN0aW9uID09PSAncmlnaHQnKSB8fCAoXy5jdXJyZW50U2xpZGUgPj0gXy5nZXREb3RDb3VudCgpICYmIHN3aXBlRGlyZWN0aW9uID09PSAnbGVmdCcpKSB7XG4gICAgICAgICAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoICogXy5vcHRpb25zLmVkZ2VGcmljdGlvbjtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0LmVkZ2VIaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHN3aXBlTGVuZ3RoICogcG9zaXRpb25PZmZzZXQ7XG4gICAgICAgI
14938H0gZWxzZSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IGN1ckxlZnQgKyAoc3dpcGVMZW5ndGggKiAoXy4kbGlzdC5oZWlnaHQoKSAvIF8ubGlzdFdpZHRoKSkgKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy5zd2lwZUxlZnQgPSBjdXJMZWZ0ICsgc3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMudG91Y2hNb3ZlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uYW5pbWF0aW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldENTUyhfLnN3aXBlTGVmdCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnN3aXBlU3RhcnQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHRvdWNoZXM7XG5cbiAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKF8udG91Y2hPYmplY3QuZmluZ2VyQ291bnQgIT09IDEgfHwgXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRvdWNoZXMgPSBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WCA9IF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA9IF8udG91Y2hPYmplY3QuY3VyWSA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVkgOiBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIF8uZHJhZ2dpbmcgPSB0cnVlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1VuZmlsdGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRzbGlkZXNDYWNoZSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLnJlbW92ZSgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uJHByZXZBcnJvdyAmJiBfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLnByZXZBcnJvdykpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLiRuZXh0QXJyb3cgJiYgXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5uZXh0QXJyb3cpKSB7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLXZpc2libGUgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpXG4gICAgICAgICAgICAuY3NzKCd3aWR0aCcsICcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5zbGljayA9IGZ1bmN0aW9uKGZyb21CcmVha3BvaW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcigndW5zbGljaycsIFtfLCBmcm9tQnJlYWtwb2ludF0pO1xuICAgICAgICBfLmRlc3Ryb3koKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudXBkYXRlQXJyb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0O1xuXG4gICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJlxuICAgICAgICAgICAgIV8ub3B0aW9ucy5pbmZpbml0ZSApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIGlmIChfLmN1cnJlbnRTbGlkZSA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgI
14938H0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAtIDEgJiYgXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51cGRhdGVEb3RzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRkb3RzICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHNcbiAgICAgICAgICAgICAgICAuZmluZCgnbGknKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgIC5lbmQoKTtcblxuICAgICAgICAgICAgXy4kZG90c1xuICAgICAgICAgICAgICAgIC5maW5kKCdsaScpXG4gICAgICAgICAgICAgICAgLmVxKE1hdGguZmxvb3IoXy5jdXJyZW50U2xpZGUgLyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJyk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS52aXNpYmlsaXR5ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuXG4gICAgICAgICAgICBpZiAoIGRvY3VtZW50W18uaGlkZGVuXSApIHtcblxuICAgICAgICAgICAgICAgIF8uaW50ZXJydXB0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgICQuZm4uc2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgb3B0ID0gYXJndW1lbnRzWzBdLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICAgICAgICBsID0gXy5sZW5ndGgsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcmV0O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb3B0ID09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIF9baV0uc2xpY2sgPSBuZXcgU2xpY2soX1tpXSwgb3B0KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXQgPSBfW2ldLnNsaWNrW29wdF0uYXBwbHkoX1tpXS5zbGljaywgYXJncyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJldCAhPSAndW5kZWZpbmVkJykgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXztcbiAgICB9O1xuXG59KSk7XG4iLCIoZnVuY3Rpb24gKGdsb2JhbCl7XG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndW5kZXJzY29yZScsIGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwgfHwgc2VsZiwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudCA9IGdsb2JhbC5fO1xuICAgIHZhciBleHBvcnRzID0gZ2xvYmFsLl8gPSBmYWN0b3J5KCk7XG4gICAgZXhwb3J0cy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgeyBnbG9iYWwuXyA9IGN1cnJlbnQ7IHJldHVybiBleHBvcnRzOyB9O1xuICB9KCkpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHtcbiAgLy8gICAgIFVuZGVyc2NvcmUuanMgMS4xMy4xXG4gIC8vICAgICBodHRwczovL3VuZGVyc2NvcmVqcy5vcmdcbiAgLy8gICAgIChjKSAyMDA5LTIwMjEgSmVyZW15IEFzaGtlbmFzLCBKdWxpYW4gR29uZ2dyaWpwLCBhbmQgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gIC8vICAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuXG4gIC8vIEN1cnJlbnQgdmVyc2lvbi5cbiAgdmFyIFZFUlNJT04gPSAnMS4xMy4xJztcblxuICAvLyBFc3RhYmxpc2ggdGhlIHJvb3Qgb2JqZWN0LCBgd2luZG93YCAoYHNlbGZgKSBpbiB0aGUgYnJvd3NlciwgYGdsb2JhbGBcbiAgLy8gb24gdGhlIHNlcnZlciwgb3IgYHRoaXNgIGluIHNvbWUgdmlydHVhbCBtYWNoaW5lcy4gV2UgdXNlIGBzZWxmYFxuICAvLyBpbnN0ZWFkIG9mIGB3aW5kb3dgIGZvciBgV2ViV29ya2VyYCBzdXBwb3J0LlxuICB2YXIgcm9vdCA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYuc2VsZiA9PT0gc2VsZiAmJiBzZWxmIHx8XG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbC5nbG9iYWwgPT09IGdsb2JhbCAmJiBnbG9iYWwgfHxcbiAgICAgICAgICAgIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCkgfHxcbiAgICAgICAgICAgI
14938Ht9O1xuXG4gIC8vIFNhdmUgYnl0ZXMgaW4gdGhlIG1pbmlmaWVkIChidXQgbm90IGd6aXBwZWQpIHZlcnNpb246XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLCBPYmpQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBTeW1ib2xQcm90byA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnID8gU3ltYm9sLnByb3RvdHlwZSA6IG51bGw7XG5cbiAgLy8gQ3JlYXRlIHF1aWNrIHJlZmVyZW5jZSB2YXJpYWJsZXMgZm9yIHNwZWVkIGFjY2VzcyB0byBjb3JlIHByb3RvdHlwZXMuXG4gIHZhciBwdXNoID0gQXJyYXlQcm90by5wdXNoLFxuICAgICAgc2xpY2UgPSBBcnJheVByb3RvLnNsaWNlLFxuICAgICAgdG9TdHJpbmcgPSBPYmpQcm90by50b1N0cmluZyxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqUHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgLy8gTW9kZXJuIGZlYXR1cmUgZGV0ZWN0aW9uLlxuICB2YXIgc3VwcG9ydHNBcnJheUJ1ZmZlciA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICBzdXBwb3J0c0RhdGFWaWV3ID0gdHlwZW9mIERhdGFWaWV3ICE9PSAndW5kZWZpbmVkJztcblxuICAvLyBBbGwgKipFQ01BU2NyaXB0IDUrKiogbmF0aXZlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0IHdlIGhvcGUgdG8gdXNlXG4gIC8vIGFyZSBkZWNsYXJlZCBoZXJlLlxuICB2YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXksXG4gICAgICBuYXRpdmVLZXlzID0gT2JqZWN0LmtleXMsXG4gICAgICBuYXRpdmVDcmVhdGUgPSBPYmplY3QuY3JlYXRlLFxuICAgICAgbmF0aXZlSXNWaWV3ID0gc3VwcG9ydHNBcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG5cbiAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgdG8gdGhlc2UgYnVpbHRpbiBmdW5jdGlvbnMgYmVjYXVzZSB3ZSBvdmVycmlkZSB0aGVtLlxuICB2YXIgX2lzTmFOID0gaXNOYU4sXG4gICAgICBfaXNGaW5pdGUgPSBpc0Zpbml0ZTtcblxuICAvLyBLZXlzIGluIElFIDwgOSB0aGF0IHdvbid0IGJlIGl0ZXJhdGVkIGJ5IGBmb3Iga2V5IGluIC4uLmAgYW5kIHRodXMgbWlzc2VkLlxuICB2YXIgaGFzRW51bUJ1ZyA9ICF7dG9TdHJpbmc6IG51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpO1xuICB2YXIgbm9uRW51bWVyYWJsZVByb3BzID0gWyd2YWx1ZU9mJywgJ2lzUHJvdG90eXBlT2YnLCAndG9TdHJpbmcnLFxuICAgICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICdoYXNPd25Qcm9wZXJ0eScsICd0b0xvY2FsZVN0cmluZyddO1xuXG4gIC8vIFRoZSBsYXJnZXN0IGludGVnZXIgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgZXhhY3RseS5cbiAgdmFyIE1BWF9BUlJBWV9JTkRFWCA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbiAgLy8gU29tZSBmdW5jdGlvbnMgdGFrZSBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMsIG9yIGEgZmV3IGV4cGVjdGVkXG4gIC8vIGFyZ3VtZW50cyBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVuIGEgdmFyaWFibGUgbnVtYmVyIG9mIHZhbHVlcyB0byBvcGVyYXRlXG4gIC8vIG9uLiBUaGlzIGhlbHBlciBhY2N1bXVsYXRlcyBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBwYXN0IHRoZSBmdW5jdGlvbuKAmXNcbiAgLy8gYXJndW1lbnQgbGVuZ3RoIChvciBhbiBleHBsaWNpdCBgc3RhcnRJbmRleGApLCBpbnRvIGFuIGFycmF5IHRoYXQgYmVjb21lc1xuICAvLyB0aGUgbGFzdCBhcmd1bWVudC4gU2ltaWxhciB0byBFUzbigJlzIFwicmVzdCBwYXJhbWV0ZXJcIi5cbiAgZnVuY3Rpb24gcmVzdEFyZ3VtZW50cyhmdW5jLCBzdGFydEluZGV4KSB7XG4gICAgc3RhcnRJbmRleCA9IHN0YXJ0SW5kZXggPT0gbnVsbCA/IGZ1bmMubGVuZ3RoIC0gMSA6ICtzdGFydEluZGV4O1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChhcmd1bWVudHMubGVuZ3RoIC0gc3RhcnRJbmRleCwgMCksXG4gICAgICAgICAgcmVzdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3RbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4ICsgc3RhcnRJbmRleF07XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIHJlc3QpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJndW1lbnRzWzBdLCByZXN0KTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdLCByZXN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkoc3RhcnRJbmRleCArIDEpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc3RhcnRJbmRleDsgaW5kZXgrKykge1xuICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICBhcmdzW3N0YXJ0SW5kZXhdID0gcmVzdDtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIGFuIG9iamVjdD9cbiAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGUgPT09ICdvYmplY3QnICYmICEhb2JqO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBlcXVhbCB0byBudWxsP1xuICBmdW5jdGlvbiBpc051bGwob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgdW5kZWZpbmVkP1xuICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSB2b2lkIDA7XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgYm9vbGVhbj9cbiAgZnVuY3Rpb24gaXNCb29sZWFuKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSB8fCB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBET00gZWxlbWVudD9cbiAgZnVuY3Rpb24gaXNFbGVtZW50KG9iaikge1xuICAgIHJldHVybiAhIShvYmogJiYgb2JqLm5vZGVUeXBlID09PSAxKTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGB0b1N0cmluZ2AtYmFzZWQgdHlwZSB0ZXN0ZXIuXG4gIGZ1bmN0aW9uIHRhZ1Rlc3RlcihuYW1lKSB7XG4gICAgdmFyIHRhZyA9ICdbb2JqZWN0ICcgKyBuYW1lICsgJ10nO1xuICAgIHJldHVybi
14938BmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IHRhZztcbiAgICB9O1xuICB9XG5cbiAgdmFyIGlzU3RyaW5nID0gdGFnVGVzdGVyKCdTdHJpbmcnKTtcblxuICB2YXIgaXNOdW1iZXIgPSB0YWdUZXN0ZXIoJ051bWJlcicpO1xuXG4gIHZhciBpc0RhdGUgPSB0YWdUZXN0ZXIoJ0RhdGUnKTtcblxuICB2YXIgaXNSZWdFeHAgPSB0YWdUZXN0ZXIoJ1JlZ0V4cCcpO1xuXG4gIHZhciBpc0Vycm9yID0gdGFnVGVzdGVyKCdFcnJvcicpO1xuXG4gIHZhciBpc1N5bWJvbCA9IHRhZ1Rlc3RlcignU3ltYm9sJyk7XG5cbiAgdmFyIGlzQXJyYXlCdWZmZXIgPSB0YWdUZXN0ZXIoJ0FycmF5QnVmZmVyJyk7XG5cbiAgdmFyIGlzRnVuY3Rpb24gPSB0YWdUZXN0ZXIoJ0Z1bmN0aW9uJyk7XG5cbiAgLy8gT3B0aW1pemUgYGlzRnVuY3Rpb25gIGlmIGFwcHJvcHJpYXRlLiBXb3JrIGFyb3VuZCBzb21lIGB0eXBlb2ZgIGJ1Z3MgaW4gb2xkXG4gIC8vIHY4LCBJRSAxMSAoIzE2MjEpLCBTYWZhcmkgOCAoIzE5MjkpLCBhbmQgUGhhbnRvbUpTICgjMjIzNikuXG4gIHZhciBub2RlbGlzdCA9IHJvb3QuZG9jdW1lbnQgJiYgcm9vdC5kb2N1bWVudC5jaGlsZE5vZGVzO1xuICBpZiAodHlwZW9mIC8uLyAhPSAnZnVuY3Rpb24nICYmIHR5cGVvZiBJbnQ4QXJyYXkgIT0gJ29iamVjdCcgJiYgdHlwZW9mIG5vZGVsaXN0ICE9ICdmdW5jdGlvbicpIHtcbiAgICBpc0Z1bmN0aW9uID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nIHx8IGZhbHNlO1xuICAgIH07XG4gIH1cblxuICB2YXIgaXNGdW5jdGlvbiQxID0gaXNGdW5jdGlvbjtcblxuICB2YXIgaGFzT2JqZWN0VGFnID0gdGFnVGVzdGVyKCdPYmplY3QnKTtcblxuICAvLyBJbiBJRSAxMCAtIEVkZ2UgMTMsIGBEYXRhVmlld2AgaGFzIHN0cmluZyB0YWcgYCdbb2JqZWN0IE9iamVjdF0nYC5cbiAgLy8gSW4gSUUgMTEsIHRoZSBtb3N0IGNvbW1vbiBhbW9uZyB0aGVtLCB0aGlzIHByb2JsZW0gYWxzbyBhcHBsaWVzIHRvXG4gIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgLlxuICB2YXIgaGFzU3RyaW5nVGFnQnVnID0gKFxuICAgICAgICBzdXBwb3J0c0RhdGFWaWV3ICYmIGhhc09iamVjdFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKSlcbiAgICAgICksXG4gICAgICBpc0lFMTEgPSAodHlwZW9mIE1hcCAhPT0gJ3VuZGVmaW5lZCcgJiYgaGFzT2JqZWN0VGFnKG5ldyBNYXApKTtcblxuICB2YXIgaXNEYXRhVmlldyA9IHRhZ1Rlc3RlcignRGF0YVZpZXcnKTtcblxuICAvLyBJbiBJRSAxMCAtIEVkZ2UgMTMsIHdlIG5lZWQgYSBkaWZmZXJlbnQgaGV1cmlzdGljXG4gIC8vIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIG9iamVjdCBpcyBhIGBEYXRhVmlld2AuXG4gIGZ1bmN0aW9uIGllMTBJc0RhdGFWaWV3KG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBpc0Z1bmN0aW9uJDEob2JqLmdldEludDgpICYmIGlzQXJyYXlCdWZmZXIob2JqLmJ1ZmZlcik7XG4gIH1cblxuICB2YXIgaXNEYXRhVmlldyQxID0gKGhhc1N0cmluZ1RhZ0J1ZyA/IGllMTBJc0RhdGFWaWV3IDogaXNEYXRhVmlldyk7XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhbiBhcnJheT9cbiAgLy8gRGVsZWdhdGVzIHRvIEVDTUE1J3MgbmF0aXZlIGBBcnJheS5pc0FycmF5YC5cbiAgdmFyIGlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IHRhZ1Rlc3RlcignQXJyYXknKTtcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIGBrZXlgIGlzIGFuIG93biBwcm9wZXJ0eSBuYW1lIG9mIGBvYmpgLlxuICBmdW5jdGlvbiBoYXMkMShvYmosIGtleSkge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbiAgfVxuXG4gIHZhciBpc0FyZ3VtZW50cyA9IHRhZ1Rlc3RlcignQXJndW1lbnRzJyk7XG5cbiAgLy8gRGVmaW5lIGEgZmFsbGJhY2sgdmVyc2lvbiBvZiB0aGUgbWV0aG9kIGluIGJyb3dzZXJzIChhaGVtLCBJRSA8IDkpLCB3aGVyZVxuICAvLyB0aGVyZSBpc24ndCBhbnkgaW5zcGVjdGFibGUgXCJBcmd1bWVudHNcIiB0eXBlLlxuICAoZnVuY3Rpb24oKSB7XG4gICAgaWYgKCFpc0FyZ3VtZW50cyhhcmd1bWVudHMpKSB7XG4gICAgICBpc0FyZ3VtZW50cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICByZXR1cm4gaGFzJDEob2JqLCAnY2FsbGVlJyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSgpKTtcblxuICB2YXIgaXNBcmd1bWVudHMkMSA9IGlzQXJndW1lbnRzO1xuXG4gIC8vIElzIGEgZ2l2ZW4gb2JqZWN0IGEgZmluaXRlIG51bWJlcj9cbiAgZnVuY3Rpb24gaXNGaW5pdGUkMShvYmopIHtcbiAgICByZXR1cm4gIWlzU3ltYm9sKG9iaikgJiYgX2lzRmluaXRlKG9iaikgJiYgIWlzTmFOKHBhcnNlRmxvYXQob2JqKSk7XG4gIH1cblxuICAvLyBJcyB0aGUgZ2l2ZW4gdmFsdWUgYE5hTmA/XG4gIGZ1bmN0aW9uIGlzTmFOJDEob2JqKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG9iaikgJiYgX2lzTmFOKG9iaik7XG4gIH1cblxuICAvLyBQcmVkaWNhdGUtZ2VuZXJhdGluZyBmdW5jdGlvbi4gT2Z0ZW4gdXNlZnVsIG91dHNpZGUgb2YgVW5kZXJzY29yZS5cbiAgZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIC8vIENvbW1vbiBpbnRlcm5hbCBsb2dpYyBmb3IgYGlzQXJyYXlMaWtlYCBhbmQgYGlzQnVmZmVyTGlrZWAuXG4gIGZ1bmN0aW9uIGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldFNpemVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uKSB7XG4gICAgICB2Y
14938XIgc2l6ZVByb3BlcnR5ID0gZ2V0U2l6ZVByb3BlcnR5KGNvbGxlY3Rpb24pO1xuICAgICAgcmV0dXJuIHR5cGVvZiBzaXplUHJvcGVydHkgPT0gJ251bWJlcicgJiYgc2l6ZVByb3BlcnR5ID49IDAgJiYgc2l6ZVByb3BlcnR5IDw9IE1BWF9BUlJBWV9JTkRFWDtcbiAgICB9XG4gIH1cblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gZ2VuZXJhdGUgYSBmdW5jdGlvbiB0byBvYnRhaW4gcHJvcGVydHkgYGtleWAgZnJvbSBgb2JqYC5cbiAgZnVuY3Rpb24gc2hhbGxvd1Byb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/IHZvaWQgMCA6IG9ialtrZXldO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gb2J0YWluIHRoZSBgYnl0ZUxlbmd0aGAgcHJvcGVydHkgb2YgYW4gb2JqZWN0LlxuICB2YXIgZ2V0Qnl0ZUxlbmd0aCA9IHNoYWxsb3dQcm9wZXJ0eSgnYnl0ZUxlbmd0aCcpO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgc3BlbmQgZXh0ZW5zaXZlIGNoZWNrcyBhZ2FpbnN0XG4gIC8vIGBBcnJheUJ1ZmZlcmAgZXQgYWwuXG4gIHZhciBpc0J1ZmZlckxpa2UgPSBjcmVhdGVTaXplUHJvcGVydHlDaGVjayhnZXRCeXRlTGVuZ3RoKTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgdHlwZWQgYXJyYXk/XG4gIHZhciB0eXBlZEFycmF5UGF0dGVybiA9IC9cXFtvYmplY3QgKChJfFVpKW50KDh8MTZ8MzIpfEZsb2F0KDMyfDY0KXxVaW50OENsYW1wZWR8QmlnKEl8VWkpbnQ2NClBcnJheVxcXS87XG4gIGZ1bmN0aW9uIGlzVHlwZWRBcnJheShvYmopIHtcbiAgICAvLyBgQXJyYXlCdWZmZXIuaXNWaWV3YCBpcyB0aGUgbW9zdCBmdXR1cmUtcHJvb2YsIHNvIHVzZSBpdCB3aGVuIGF2YWlsYWJsZS5cbiAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayBvbiB0aGUgYWJvdmUgcmVndWxhciBleHByZXNzaW9uLlxuICAgIHJldHVybiBuYXRpdmVJc1ZpZXcgPyAobmF0aXZlSXNWaWV3KG9iaikgJiYgIWlzRGF0YVZpZXckMShvYmopKSA6XG4gICAgICAgICAgICAgICAgICBpc0J1ZmZlckxpa2Uob2JqKSAmJiB0eXBlZEFycmF5UGF0dGVybi50ZXN0KHRvU3RyaW5nLmNhbGwob2JqKSk7XG4gIH1cblxuICB2YXIgaXNUeXBlZEFycmF5JDEgPSBzdXBwb3J0c0FycmF5QnVmZmVyID8gaXNUeXBlZEFycmF5IDogY29uc3RhbnQoZmFsc2UpO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBvYnRhaW4gdGhlIGBsZW5ndGhgIHByb3BlcnR5IG9mIGFuIG9iamVjdC5cbiAgdmFyIGdldExlbmd0aCA9IHNoYWxsb3dQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGNyZWF0ZSBhIHNpbXBsZSBsb29rdXAgc3RydWN0dXJlLlxuICAvLyBgY29sbGVjdE5vbkVudW1Qcm9wc2AgdXNlZCB0byBkZXBlbmQgb24gYF8uY29udGFpbnNgLCBidXQgdGhpcyBsZWQgdG9cbiAgLy8gY2lyY3VsYXIgaW1wb3J0cy4gYGVtdWxhdGVkU2V0YCBpcyBhIG9uZS1vZmYgc29sdXRpb24gdGhhdCBvbmx5IHdvcmtzIGZvclxuICAvLyBhcnJheXMgb2Ygc3RyaW5ncy5cbiAgZnVuY3Rpb24gZW11bGF0ZWRTZXQoa2V5cykge1xuICAgIHZhciBoYXNoID0ge307XG4gICAgZm9yICh2YXIgbCA9IGtleXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7ICsraSkgaGFzaFtrZXlzW2ldXSA9IHRydWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5zOiBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGhhc2hba2V5XTsgfSxcbiAgICAgIHB1c2g6IGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBoYXNoW2tleV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4ga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlci4gQ2hlY2tzIGBrZXlzYCBmb3IgdGhlIHByZXNlbmNlIG9mIGtleXMgaW4gSUUgPCA5IHRoYXQgd29uJ3RcbiAgLy8gYmUgaXRlcmF0ZWQgYnkgYGZvciBrZXkgaW4gLi4uYCBhbmQgdGh1cyBtaXNzZWQuIEV4dGVuZHMgYGtleXNgIGluIHBsYWNlIGlmXG4gIC8vIG5lZWRlZC5cbiAgZnVuY3Rpb24gY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpIHtcbiAgICBrZXlzID0gZW11bGF0ZWRTZXQoa2V5cyk7XG4gICAgdmFyIG5vbkVudW1JZHggPSBub25FbnVtZXJhYmxlUHJvcHMubGVuZ3RoO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IG9iai5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgcHJvdG8gPSBpc0Z1bmN0aW9uJDEoY29uc3RydWN0b3IpICYmIGNvbnN0cnVjdG9yLnByb3RvdHlwZSB8fCBPYmpQcm90bztcblxuICAgIC8vIENvbnN0cnVjdG9yIGlzIGEgc3BlY2lhbCBjYXNlLlxuICAgIHZhciBwcm9wID0gJ2NvbnN0cnVjdG9yJztcbiAgICBpZiAoaGFzJDEob2JqLCBwcm9wKSAmJiAha2V5cy5jb250YWlucyhwcm9wKSkga2V5cy5wdXNoKHByb3ApO1xuXG4gICAgd2hpbGUgKG5vbkVudW1JZHgtLSkge1xuICAgICAgcHJvcCA9IG5vbkVudW1lcmFibGVQcm9wc1tub25FbnVtSWR4XTtcbiAgICAgIGlmIChwcm9wIGluIG9iaiAmJiBvYmpbcHJvcF0gIT09IHByb3RvW3Byb3BdICYmICFrZXlzLmNvbnRhaW5zKHByb3ApKSB7XG4gICAgICAgIGtleXMucHVzaChwcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXRyaWV2ZSB0aGUgbmFtZXMgb2YgYW4gb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMuXG4gIC8vIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBPYmplY3Qua2V5c2AuXG4gIGZ1bmN0aW9uIGtleXMob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgaWYgKG5hdGl2ZUtleXMpIHJldHVybiBuYXRpdmVLZXlzKG9iaik7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoaGFzJDEob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgICAvLyBBaGVtLCBJRSA8IDkuXG4gICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0IGVtcHR5P1xuICAvLyBBbiBcImVtcHR5XCIgb2JqZWN0IGhhcyBubyBlbnVtZXJhYmxlIG93bi1wcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiBpc0VtcHR5KG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgLy8gU2tpcCB0aGUgbW9yZSBleHBlbnNpdmUgYHRvU3RyaW5nYC1iYXNlZCB0eXBlIGNoZWNrcyBpZiBgb2JqYCB
14938oYXMgbm9cbiAgICAvLyBgLmxlbmd0aGAuXG4gICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChvYmopO1xuICAgIGlmICh0eXBlb2YgbGVuZ3RoID09ICdudW1iZXInICYmIChcbiAgICAgIGlzQXJyYXkob2JqKSB8fCBpc1N0cmluZyhvYmopIHx8IGlzQXJndW1lbnRzJDEob2JqKVxuICAgICkpIHJldHVybiBsZW5ndGggPT09IDA7XG4gICAgcmV0dXJuIGdldExlbmd0aChrZXlzKG9iaikpID09PSAwO1xuICB9XG5cbiAgLy8gUmV0dXJucyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBzZXQgb2YgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBhdHRycykge1xuICAgIHZhciBfa2V5cyA9IGtleXMoYXR0cnMpLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSByZXR1cm4gIWxlbmd0aDtcbiAgICB2YXIgb2JqID0gT2JqZWN0KG9iamVjdCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IF9rZXlzW2ldO1xuICAgICAgaWYgKGF0dHJzW2tleV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBJZiBVbmRlcnNjb3JlIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBpdCByZXR1cm5zIGEgd3JhcHBlZCBvYmplY3QgdGhhdCBjYW5cbiAgLy8gYmUgdXNlZCBPTy1zdHlsZS4gVGhpcyB3cmFwcGVyIGhvbGRzIGFsdGVyZWQgdmVyc2lvbnMgb2YgYWxsIGZ1bmN0aW9ucyBhZGRlZFxuICAvLyB0aHJvdWdoIGBfLm1peGluYC4gV3JhcHBlZCBvYmplY3RzIG1heSBiZSBjaGFpbmVkLlxuICBmdW5jdGlvbiBfJDEob2JqKSB7XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIF8kMSkgcmV0dXJuIG9iajtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgXyQxKSkgcmV0dXJuIG5ldyBfJDEob2JqKTtcbiAgICB0aGlzLl93cmFwcGVkID0gb2JqO1xuICB9XG5cbiAgXyQxLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gIC8vIEV4dHJhY3RzIHRoZSByZXN1bHQgZnJvbSBhIHdyYXBwZWQgYW5kIGNoYWluZWQgb2JqZWN0LlxuICBfJDEucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyYXBwZWQ7XG4gIH07XG5cbiAgLy8gUHJvdmlkZSB1bndyYXBwaW5nIHByb3hpZXMgZm9yIHNvbWUgbWV0aG9kcyB1c2VkIGluIGVuZ2luZSBvcGVyYXRpb25zXG4gIC8vIHN1Y2ggYXMgYXJpdGhtZXRpYyBhbmQgSlNPTiBzdHJpbmdpZmljYXRpb24uXG4gIF8kMS5wcm90b3R5cGUudmFsdWVPZiA9IF8kMS5wcm90b3R5cGUudG9KU09OID0gXyQxLnByb3RvdHlwZS52YWx1ZTtcblxuICBfJDEucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLl93cmFwcGVkKTtcbiAgfTtcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cmFwIG9yIHNoYWxsb3ctY29weSBhbiBBcnJheUJ1ZmZlcixcbiAgLy8gdHlwZWQgYXJyYXkgb3IgRGF0YVZpZXcgdG8gYSBuZXcgdmlldywgcmV1c2luZyB0aGUgYnVmZmVyLlxuICBmdW5jdGlvbiB0b0J1ZmZlclZpZXcoYnVmZmVyU291cmNlKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFxuICAgICAgYnVmZmVyU291cmNlLmJ1ZmZlciB8fCBidWZmZXJTb3VyY2UsXG4gICAgICBidWZmZXJTb3VyY2UuYnl0ZU9mZnNldCB8fCAwLFxuICAgICAgZ2V0Qnl0ZUxlbmd0aChidWZmZXJTb3VyY2UpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdlIHVzZSB0aGlzIHN0cmluZyB0d2ljZSwgc28gZ2l2ZSBpdCBhIG5hbWUgZm9yIG1pbmlmaWNhdGlvbi5cbiAgdmFyIHRhZ0RhdGFWaWV3ID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYF8uaXNFcXVhbGAuXG4gIGZ1bmN0aW9uIGVxKGEsIGIsIGFTdGFjaywgYlN0YWNrKSB7XG4gICAgLy8gSWRlbnRpY2FsIG9iamVjdHMgYXJlIGVxdWFsLiBgMCA9PT0gLTBgLCBidXQgdGhleSBhcmVuJ3QgaWRlbnRpY2FsLlxuICAgIC8vIFNlZSB0aGUgW0hhcm1vbnkgYGVnYWxgIHByb3Bvc2FsXShodHRwczovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTplZ2FsKS5cbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIGEgIT09IDAgfHwgMSAvIGEgPT09IDEgLyBiO1xuICAgIC8vIGBudWxsYCBvciBgdW5kZWZpbmVkYCBvbmx5IGVxdWFsIHRvIGl0c2VsZiAoc3RyaWN0IGNvbXBhcmlzb24pLlxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICBpZiAoYSAhPT0gYSkgcmV0dXJuIGIgIT09IGI7XG4gICAgLy8gRXhoYXVzdCBwcmltaXRpdmUgY2hlY2tzXG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgYTtcbiAgICBpZiAodHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiAhPSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBkZWVwRXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgcmVjdXJzaXZlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGBfLmlzRXF1YWxgLlxuICBmdW5jdGlvbiBkZWVwRXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBVbndyYXAgYW55IHdyYXBwZWQgb2JqZWN0cy5cbiAgICBpZiAoYSBpbnN0YW5jZW9mIF8kMSkgYSA9IGEuX3dyYXBwZWQ7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBfJDEpIGIgPSBiLl93cmFwcGVkO1xuICAgIC8vIENvbXBhcmUgYFtbQ2xhc3NdXWAgbmFtZXMuXG4gICAgdmFyIGNsYXNzTmFtZSA9IHRvU3RyaW5nLmNhbGwoYSk7XG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdG9TdHJpbmcuY2FsbChiKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFdvcmsgYXJvdW5kIGEgYnVnIGluIElFIDEwIC0gRWRnZSAxMy5cbiAgICBpZiAoaGFzU3RyaW5nVGFnQnVnICYmIGNsYXNzTmFtZSA9PSAnW29iamVjdCBPYmplY3RdJyAmJiBpc0RhdGFWaWV3JDEoYSkpIHtcbiAgICAgIGlmICghaXNEYXRhVmlldyQxKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgICBjbGFzc05hbWUgPSB0YWdEYXRhVmlldztcbiAgICB9XG4gICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgIC8vIFRoZXNlIHR5cGVzIGFyZSBjb21wYXJlZCBieSB2YWx1ZS
149385cbiAgICAgIGNhc2UgJ1tvYmplY3QgUmVnRXhwXSc6XG4gICAgICAgIC8vIFJlZ0V4cHMgYXJlIGNvZXJjZWQgdG8gc3RyaW5ncyBmb3IgY29tcGFyaXNvbiAoTm90ZTogJycgKyAvYS9pID09PSAnL2EvaScpXG4gICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxuICAgICAgICAvLyBQcmltaXRpdmVzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIG9iamVjdCB3cmFwcGVycyBhcmUgZXF1aXZhbGVudDsgdGh1cywgYFwiNVwiYCBpc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIGBuZXcgU3RyaW5nKFwiNVwiKWAuXG4gICAgICAgIHJldHVybiAnJyArIGEgPT09ICcnICsgYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgTnVtYmVyXSc6XG4gICAgICAgIC8vIGBOYU5gcyBhcmUgZXF1aXZhbGVudCwgYnV0IG5vbi1yZWZsZXhpdmUuXG4gICAgICAgIC8vIE9iamVjdChOYU4pIGlzIGVxdWl2YWxlbnQgdG8gTmFOLlxuICAgICAgICBpZiAoK2EgIT09ICthKSByZXR1cm4gK2IgIT09ICtiO1xuICAgICAgICAvLyBBbiBgZWdhbGAgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgZm9yIG90aGVyIG51bWVyaWMgdmFsdWVzLlxuICAgICAgICByZXR1cm4gK2EgPT09IDAgPyAxIC8gK2EgPT09IDEgLyBiIDogK2EgPT09ICtiO1xuICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XG4gICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcbiAgICAgICAgLy8gQ29lcmNlIGRhdGVzIGFuZCBib29sZWFucyB0byBudW1lcmljIHByaW1pdGl2ZSB2YWx1ZXMuIERhdGVzIGFyZSBjb21wYXJlZCBieSB0aGVpclxuICAgICAgICAvLyBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnMuIE5vdGUgdGhhdCBpbnZhbGlkIGRhdGVzIHdpdGggbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zXG4gICAgICAgIC8vIG9mIGBOYU5gIGFyZSBub3QgZXF1aXZhbGVudC5cbiAgICAgICAgcmV0dXJuICthID09PSArYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3ltYm9sXSc6XG4gICAgICAgIHJldHVybiBTeW1ib2xQcm90by52YWx1ZU9mLmNhbGwoYSkgPT09IFN5bWJvbFByb3RvLnZhbHVlT2YuY2FsbChiKTtcbiAgICAgIGNhc2UgJ1tvYmplY3QgQXJyYXlCdWZmZXJdJzpcbiAgICAgIGNhc2UgdGFnRGF0YVZpZXc6XG4gICAgICAgIC8vIENvZXJjZSB0byB0eXBlZCBhcnJheSBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLlxuICAgICAgICByZXR1cm4gZGVlcEVxKHRvQnVmZmVyVmlldy
14938hhKSwgdG9CdWZmZXJWaWV3KGIpLCBhU3RhY2ssIGJTdGFjayk7XG4gICAgfVxuXG4gICAgdmFyIGFyZUFycmF5cyA9IGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICBpZiAoIWFyZUFycmF5cyAmJiBpc1R5cGVkQXJyYXkkMShhKSkge1xuICAgICAgICB2YXIgYnl0ZUxlbmd0aCA9IGdldEJ5dGVMZW5ndGgoYSk7XG4gICAgICAgIGlmIChieXRlTGVuZ3RoICE9PSBnZXRCeXRlTGVuZ3RoKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhLmJ1ZmZlciA9PT0gYi5idWZmZXIgJiYgYS5ieXRlT2Zmc2V0ID09PSBiLmJ5dGVPZmZzZXQpIHJldHVybiB0cnVlO1xuICAgICAgICBhcmVBcnJheXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWFyZUFycmF5cykge1xuICAgICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3RgcyBvciBgQXJyYXlgc1xuICAgICAgLy8gZnJvbSBkaWZmZXJlbnQgZnJhbWVzIGFyZS5cbiAgICAgIHZhciBhQ3RvciA9IGEuY29uc3RydWN0b3IsIGJDdG9yID0gYi5jb25zdHJ1Y3RvcjtcbiAgICAgIGlmIChhQ3RvciAhPT0gYkN0b3IgJiYgIShpc0Z1bmN0aW9uJDEoYUN0b3IpICYmIGFDdG9yIGluc3RhbmNlb2YgYUN0b3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uJDEoYkN0b3IpICYmIGJDdG9yIGluc3RhbmNlb2YgYkN0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmICgnY29uc3RydWN0b3InIGluIGEgJiYgJ2NvbnN0cnVjdG9yJyBpbiBiKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3IgY3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWNcbiAgICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBhYnN0cmFjdCBvcGVyYXRpb24gYEpPYC5cblxuICAgIC8vIEluaXRpYWxpemluZyBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAvLyBJdCdzIGRvbmUgaGVyZSBzaW5jZSB3ZSBvbmx5IG5lZWQgdGhlbSBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzIGNvbXBhcmlzb24uXG4gICAgYVN0YWNrID0gYVN0YWNrIHx8IFtdO1xuICAgIGJTdGFjayA9IGJTdGFjayB8fCBbXTtcbiAgICB2YXIgbGVuZ3RoID0gYVN0YWNrLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIC8vIExpbmVhciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZlxuICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuICAgICAgaWYgKGFTdGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wdXNoKGEpO1xuICAgIGJTdGFjay5wdXNoKGIpO1xuXG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaWYgKGFyZUFycmF
149385cykge1xuICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBhIGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuXG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgdGhlIGNvbnRlbnRzLCBpZ25vcmluZyBub24tbnVtZXJpYyBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmICghZXEoYVtsZW5ndGhdLCBiW2xlbmd0aF0sIGFTdGFjaywgYlN0YWNrKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgb2JqZWN0cy5cbiAgICAgIHZhciBfa2V5cyA9IGtleXMoYSksIGtleTtcbiAgICAgIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS5cbiAgICAgIGlmIChrZXlzKGIpLmxlbmd0aCAhPT0gbGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgLy8gRGVlcCBjb21wYXJlIGVhY2ggbWVtYmVyXG4gICAgICAgIGtleSA9IF9rZXlzW2xlbmd0aF07XG4gICAgICAgIGlmICghKGhhcyQxKGIsIGtleSkgJiYgZXEoYVtrZXldLCBiW2tleV0sIGFTdGFjaywgYlN0YWNrKSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIHRoZSBmaXJzdCBvYmplY3QgZnJvbSB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnBvcCgpO1xuICAgIGJTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFBlcmZvcm0gYSBkZWVwIGNvbXBhcmlzb24gdG8gY2hlY2sgaWYgdHdvIG9iamVjdHMgYXJlIGVxdWFsLlxuICBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gZXEoYSwgYik7XG4gIH1cblxuICAvLyBSZXRyaWV2ZSBhbGwgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYW4gb2JqZWN0LlxuICBmdW5jdGlvbiBhbGxLZXlzKG9iaikge1xuICAgIGlmICghaXNPYmplY3Qob2JqKSkgcmV0dXJuIFtdO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikga2V5cy5wdXNoKGtleSk7XG4gICAgLy8gQWhlbSwgSUUgPCA5LlxuICAgIGlmIChoYXNFbnVtQnVnKSBjb2xsZWN0Tm9uRW51bVByb3BzKG9iaiwga2V5cyk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH1cblxuICAvLyBTaW5jZSB0aGUgcmVndWxhciBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgdHlwZSB0ZXN0cyBkb24ndCB3b3JrIGZvclxuICAvLyBzb21lIHR5cGVzIGluIElFIDExLCB3ZSB1c2UgYSBmaW5nZXJwcmludGluZyBoZXVyaXN0aWMgaW5zdGVhZCwgYmFzZWRcbiAgLy8gb24gdGhlIG1ldGhvZHMuIEl0J3Mgbm90IGdyZWF0LCBidXQgaXQncyB0aGUgYmVzdCB3ZSBnb3QuXG4gIC8vIFRoZSBmaW5nZXJwcmludCBtZXRob2QgbGlzdHMgYXJlIGRlZmluZWQgYmVsb3cuXG4gIGZ1bmN0aW9uIGllMTFmaW5nZXJwcmludChtZXRob2RzKSB7XG4gICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChtZXRob2RzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgIGhhdmUgbm8gZW51bWVyYWJsZSBrZXlzLlxuICAgICAgdmFyIGtleXMgPSBhbGxLZXlzKG9iaik7XG4gICAgICBpZiAoZ2V0TGVuZ3RoKGtleXMpKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNGdW5jdGlvbiQxKG9ialttZXRob2RzW2ldXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHdlIGFyZSB0ZXN0aW5nIGFnYWluc3QgYFdlYWtNYXBgLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBgb2JqYCBkb2Vzbid0IGhhdmUgYSBgZm9yRWFjaGAgbWV0aG9kIGluIG9yZGVyIHRvIGRpc3Rpbmd1aXNoXG4gICAgICAvLyBpdCBmcm9tIGEgcmVndWxhciBgTWFwYC5cbiAgICAgIHJldHVybiBtZXRob2RzICE9PSB3ZWFrTWFwTWV0aG9kcyB8fCAhaXNGdW5jdGlvbiQxKG9ialtmb3JFYWNoTmFtZV0pO1xuICAgIH07XG4gIH1cblxuICAvLyBJbiB0aGUgaW50ZXJlc3Qgb2YgY29tcGFjdCBtaW5pZmljYXRpb24sIHdlIHdyaXRlXG4gIC8vIGVhY2ggc3RyaW5nIGluIHRoZSBmaW5nZXJwcmludHMgb25seSBvbmNlLlxuICB2YXIgZm9yRWFjaE5hbWUgPSAnZm9yRWFjaCcsXG4gICAgICBoYXNOYW1lID0gJ2hhcycsXG4gICAgICBjb21tb25Jbml0ID0gWydjbGVhcicsICdkZWxldGUnXSxcbiAgICAgIG1hcFRhaWwgPSBbJ2dldCcsIGhhc05hbWUsICdzZXQnXTtcblxuICAvLyBgTWFwYCwgYFdlYWtNYXBgIGFuZCBgU2V0YCBlYWNoIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50XG4gIC8vIGNvbWJpbmF0aW9ucyBvZiB0aGUgYWJvdmUgc3VibGlzdHMuXG4gIHZhciBtYXBNZXRob2RzID0gY29tbW9uSW5pdC5jb25jYXQoZm9yRWFjaE5hbWUsIG1hcFRhaWwpLFxuICAgICAgd2Vha01hcE1ldGhvZHMgPSBjb21tb25Jbml0LmNvbmNhdChtYXBUYWlsKSxcbiAgICAgIHNldE1ldGhvZHMgPSBbJ2FkZCddLmNvbmNhdChjb21tb25Jbml0LCBmb3JFYWNoTmFtZSwgaGFzTmFtZSk7XG5cbiAgdmFyIGlzTWFwID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KG1hcE1ldGhvZHMpIDogdGFnVGVzdGVyKCdNYXAnKTtcblxuICB2YXIgaXNXZWFrTWFwID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KHdlYWtNYXBNZXRob2RzKSA6IHRhZ1Rlc3RlcignV2Vha01hcCcpO1xuXG4gIHZhciBpc1NldCA9IGlzSUUxMSA/IGllMTFmaW5nZXJwcmludChzZXRNZXRob2RzKSA6IHRhZ1Rlc3RlcignU2V0Jyk7XG5cbiAgdmFyIGlzV2Vha1NldCA9IHRhZ1Rlc3RlcignV2Vha1NldCcpO1xuXG4gIC8vIFJldHJpZXZlIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgZnVuY3Rpb24gdmFsdWVzKG9iaikge1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgIHZhciB2YWx1ZXMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlc1tpXSA9IG9ialtfa2V5c1tpXV07XG4gICAgfVxuICAgIHJldHVybi
14938B2YWx1ZXM7XG4gIH1cblxuICAvLyBDb252ZXJ0IGFuIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBgW2tleSwgdmFsdWVdYCBwYWlycy5cbiAgLy8gVGhlIG9wcG9zaXRlIG9mIGBfLm9iamVjdGAgd2l0aCBvbmUgYXJndW1lbnQuXG4gIGZ1bmN0aW9uIHBhaXJzKG9iaikge1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgIHZhciBwYWlycyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcGFpcnNbaV0gPSBbX2tleXNbaV0sIG9ialtfa2V5c1tpXV1dO1xuICAgIH1cbiAgICByZXR1cm4gcGFpcnM7XG4gIH1cblxuICAvLyBJbnZlcnQgdGhlIGtleXMgYW5kIHZhbHVlcyBvZiBhbiBvYmplY3QuIFRoZSB2YWx1ZXMgbXVzdCBiZSBzZXJpYWxpemFibGUuXG4gIGZ1bmN0aW9uIGludmVydChvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W29ialtfa2V5c1tpXV1dID0gX2tleXNbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiB0aGUgZnVuY3Rpb24gbmFtZXMgYXZhaWxhYmxlIG9uIHRoZSBvYmplY3QuXG4gIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmopIHtcbiAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoaXNGdW5jdGlvbiQxKG9ialtrZXldKSkgbmFtZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZXMuc29ydCgpO1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGFzc2lnbmVyIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoa2V5c0Z1bmMsIGRlZmF1bHRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAoZGVmYXVsdHMpIG9iaiA9IE9iamVjdChvYmopO1xuICAgICAgaWYgKGxlbmd0aCA8IDIgfHwgb2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaW5kZXhdLFxuICAgICAgICAgICAga2V5cyA9IGtleXNGdW5jKHNvdXJjZSksXG4gICAgICAgICAgICBsID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKCFkZWZhdWx0cyB8fCBvYmpba2V5XSA9PT0gdm9pZCAwKSBvYmpba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH07XG4gIH1cblxuICAvLyBFeHRlbmQgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIHByb3BlcnRpZXMgaW4gcGFzc2VkLWluIG9iamVjdChzKS5cbiAgdmFyIGV4dGVuZCA9IGNyZWF0ZUFzc2lnbmVyKGFsbEtleXMpO1xuXG4gIC8vIEFzc2lnbnMgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIG93biBwcm9wZXJ0aWVzIGluIHRoZSBwYXNzZWQtaW5cbiAgLy8gb2JqZWN0KHMpLlxuICAvLyAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnbilcbiAgdmFyIGV4dGVuZE93biA9IGNyZWF0ZUFzc2lnbmVyKGtleXMpO1xuXG4gIC8vIEZpbGwgaW4gYSBnaXZlbiBvYmplY3Qgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXMuXG4gIHZhciBkZWZhdWx0cyA9IGNyZWF0ZUFzc2lnbmVyKGFsbEtleXMsIHRydWUpO1xuXG4gIC8vIENyZWF0ZSBhIG5ha2VkIGZ1bmN0aW9uIHJlZmVyZW5jZSBmb3Igc3Vycm9nYXRlLXByb3RvdHlwZS1zd2FwcGluZy5cbiAgZnVuY3Rpb24gY3RvcigpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKXt9O1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gYW5vdGhlci5cbiAgZnVuY3Rpb24gYmFzZUNyZWF0ZShwcm90b3R5cGUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvdHlwZSkpIHJldHVybiB7fTtcbiAgICBpZiAobmF0aXZlQ3JlYXRlKSByZXR1cm4gbmF0aXZlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgdmFyIEN0b3IgPSBjdG9yKCk7XG4gICAgQ3Rvci5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBDdG9yO1xuICAgIEN0b3IucHJvdG90eXBlID0gbnVsbDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBnaXZlbiBwcm90b3R5cGUgb2JqZWN0LlxuICAvLyBJZiBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkIHRoZW4gdGhleSB3aWxsIGJlIGFkZGVkIHRvIHRoZVxuICAvLyBjcmVhdGVkIG9iamVjdC5cbiAgZnVuY3Rpb24gY3JlYXRlKHByb3RvdHlwZSwgcHJvcHMpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgIGlmIChwcm9wcykgZXh0ZW5kT3duKHJlc3VsdCwgcHJvcHMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDcmVhdGUgYSAoc2hhbGxvdy1jbG9uZWQpIGR1cGxpY2F0ZSBvZiBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIGNsb25lKG9iaikge1xuICAgIGlmICghaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gaXNBcnJheShvYmopID8gb2JqLnNsaWNlKCkgOiBleHRlbmQoe30sIG9iaik7XG4gIH1cblxuICAvLyBJbnZva2VzIGBpbnRlcmNlcHRvcmAgd2l0aCB0aGUgYG9iamAgYW5kIHRoZW4gcmV0dXJucyBgb2JqYC5cbiAgLy8gVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4sIGluXG4gIC8vIG9yZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4gdGhlIGNoYWluLlxuICBmdW5jdGlvbiB0YXAob2JqLCBpbnRlcmNlcHRvcikge1xuICAgIGludGVyY2VwdG9yKG9iaik7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBhIChkZWVwKSBwcm9wZXJ0eSBgcGF0aGAgdG8gYXJyYXkuXG4gIC8vIExpa2UgYF8uaXRlcmF0ZWVgLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjdXN0b21pemVkLlxuICBmdW5jdGlvbiB0b1BhdGgkMShwYXRoKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkocGF0aCkgPyBwYXRoIDogW3BhdGhdO1xuICB9XG4gIF8kMS50b1BhdGggPSB0b1BhdGgkMTtcblxuICAvLyBJbnRlcm5hbCB3cmFwcGVyIGZvciBgXy50b1BhdGhgIHRvIGVuYWJsZSBtaW5pZmljYXRpb24uXG4gIC8vIFNpbWlsYXIgdG8gYGNiYCBmb3IgYF8uaXRlcmF0ZWVgLlxuICBmdW5jdGlvbiB0b1BhdGgocGF0aCkge1xuICAgIHJldHVybi
14938BfJDEudG9QYXRoKHBhdGgpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gb2J0YWluIGEgbmVzdGVkIHByb3BlcnR5IGluIGBvYmpgIGFsb25nIGBwYXRoYC5cbiAgZnVuY3Rpb24gZGVlcEdldChvYmosIHBhdGgpIHtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgICAgb2JqID0gb2JqW3BhdGhbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gbGVuZ3RoID8gb2JqIDogdm9pZCAwO1xuICB9XG5cbiAgLy8gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgKGRlZXApIHByb3BlcnR5IG9uIGBwYXRoYCBmcm9tIGBvYmplY3RgLlxuICAvLyBJZiBhbnkgcHJvcGVydHkgaW4gYHBhdGhgIGRvZXMgbm90IGV4aXN0IG9yIGlmIHRoZSB2YWx1ZSBpc1xuICAvLyBgdW5kZWZpbmVkYCwgcmV0dXJuIGBkZWZhdWx0VmFsdWVgIGluc3RlYWQuXG4gIC8vIFRoZSBgcGF0aGAgaXMgbm9ybWFsaXplZCB0aHJvdWdoIGBfLnRvUGF0aGAuXG4gIGZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB2YWx1ZSA9IGRlZXBHZXQob2JqZWN0LCB0b1BhdGgocGF0aCkpO1xuICAgIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiB2YWx1ZTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgZGlyZWN0bHkgb25cbiAgLy8gaXRzZWxmIChpbiBvdGhlciB3b3Jkcywgbm90IG9uIGEgcHJvdG90eXBlKS4gVW5saWtlIHRoZSBpbnRlcm5hbCBgaGFzYFxuICAvLyBmdW5jdGlvbiwgdGhpcyBwdWJsaWMgdmVyc2lvbiBjYW4gYWxzbyB0cmF2ZXJzZSBuZXN0ZWQgcHJvcGVydGllcy5cbiAgZnVuY3Rpb24gaGFzKG9iaiwgcGF0aCkge1xuICAgIHBhdGggPSB0b1BhdGgocGF0aCk7XG4gICAgdmFyIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwYXRoW2ldO1xuICAgICAgaWYgKCFoYXMkMShvYmosIGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIG9iaiA9IG9ialtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gISFsZW5ndGg7XG4gIH1cblxuICAvLyBLZWVwIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBhcm91bmQgZm9yIGRlZmF1bHQgaXRlcmF0ZWVzLlxuICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcmVkaWNhdGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZlxuICAvLyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gbWF0Y2hlcihhdHRycykge1xuICAgIGF0dHJzID0gZXh0ZW5kT3duKHt9LCBhdHRycyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIGlzTWF0Y2gob2JqLCBhdHRycyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIHBhc3NlZCBhbiBvYmplY3QsIHdpbGwgdHJhdmVyc2UgdGhhdCBvYmplY3TigJlzXG4gIC8vIHByb3BlcnRpZXMgZG93biB0aGUgZ2l2ZW4gYHBhdGhgLCBzcGVjaWZpZWQgYXMgYW4gYXJyYXkgb2Yga2V5cyBvciBpbmRpY2VzLlxuICBmdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gZGVlcEdldChvYmosIHBhdGgpO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZWZmaWNpZW50IChmb3IgY3VycmVudCBlbmdpbmVzKSB2ZXJzaW9uXG4gIC8vIG9mIHRoZSBwYXNzZWQtaW4gY2FsbGJhY2ssIHRvIGJlIHJlcGVhdGVkbHkgYXBwbGllZCBpbiBvdGhlciBVbmRlcnNjb3JlXG4gIC8vIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gb3B0aW1pemVDYihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jO1xuICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVsbCA/IDMgOiBhcmdDb3VudCkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgLy8gVGhlIDItYXJndW1lbnQgY2FzZSBpcyBvbWl0dGVkIGJlY2F1c2Ugd2XigJlyZSBub3QgdXNpbmcgaXQuXG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNhbGxiYWNrcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGVhY2hcbiAgLy8gZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24sIHJldHVybmluZyB0aGUgZGVzaXJlZCByZXN1bHQg4oCUIGVpdGhlciBgXy5pZGVudGl0eWAsXG4gIC8vIGFuIGFyYml0cmFyeSBjYWxsYmFjaywgYSBwcm9wZXJ0eSBtYXRjaGVyLCBvciBhIHByb3BlcnR5IGFjY2Vzc29yLlxuICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBpZGVudGl0eTtcbiAgICBpZiAoaXNGdW5jdGlvbiQxKHZhbHVlKSkgcmV0dXJuIG9wdGltaXplQ2IodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgICBpZiAoaXNPYmplY3QodmFsdWUpICYmICFpc0FycmF
149385KHZhbHVlKSkgcmV0dXJuIG1hdGNoZXIodmFsdWUpO1xuICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvLyBFeHRlcm5hbCB3cmFwcGVyIGZvciBvdXIgY2FsbGJhY2sgZ2VuZXJhdG9yLiBVc2VycyBtYXkgY3VzdG9taXplXG4gIC8vIGBfLml0ZXJhdGVlYCBpZiB0aGV5IHdhbnQgYWRkaXRpb25hbCBwcmVkaWNhdGUvaXRlcmF0ZWUgc2hvcnRoYW5kIHN0eWxlcy5cbiAgLy8gVGhpcyBhYnN0cmFjdGlvbiBoaWRlcyB0aGUgaW50ZXJuYWwtb25seSBgYXJnQ291bnRgIGFyZ3VtZW50LlxuICBmdW5jdGlvbiBpdGVyYXRlZSh2YWx1ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIEluZmluaXR5KTtcbiAgfVxuICBfJDEuaXRlcmF0ZWUgPSBpdGVyYXRlZTtcblxuICAvLyBUaGUgZnVuY3Rpb24gd2UgY2FsbCBpbnRlcm5hbGx5IHRvIGdlbmVyYXRlIGEgY2FsbGJhY2suIEl0IGludm9rZXNcbiAgLy8gYF8uaXRlcmF0ZWVgIGlmIG92ZXJyaWRkZW4sIG90aGVyd2lzZSBgYmFzZUl0ZXJhdGVlYC5cbiAgZnVuY3Rpb24gY2IodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKF8kMS5pdGVyYXRlZSAhPT0gaXRlcmF0ZWUpIHJldHVybiBfJDEuaXRlcmF0ZWUodmFsdWUsIGNvbnRleHQpO1xuICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGBpdGVyYXRlZWAgdG8gZWFjaCBlbGVtZW50IG9mIGBvYmpgLlxuICAvLyBJbiBjb250cmFzdCB0byBgXy5tYXBgIGl0IHJldHVybnMgYW4gb2JqZWN0LlxuICBmdW5jdGlvbiBtYXBPYmplY3Qob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gX2tleXMubGVuZ3RoLFxuICAgICAgICByZXN1bHRzID0ge307XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5c1tpbmRleF07XG4gICAgICByZXN1bHRzW2N1cnJlbnRLZXldID0gaXRlcmF0ZWUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9uLiBPZnRlbiB1c2VmdWwgb3V0c2lkZSBvZiBVbmRlcnNjb3JlLlxuICBmdW5jdGlvbiBub29wKCl7fVxuXG4gIC8vIEdlbmVyYXRlcyBhIGZ1bmN0aW9uIGZvciBhIGdpdmVuIG9iamVjdCB0aGF0IHJldHVybnMgYSBnaXZlbiBwcm9wZXJ0eS5cbiAgZnVuY3Rpb24gcHJvcGVydHlPZihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBub29wO1xuICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gZ2V0KG9iaiwgcGF0aCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICBmdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciBhY2N1bSA9IEFycmF5KE1hdGgubWF4KDAsIG4pKTtcbiAgICBpdGVyYXRlZSA9IG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSBhY2N1bVtpXSA9IGl0ZXJhdGVlKGkpO1xuICAgIHJldHVybiBhY2N1bTtcbiAgfVxuXG4gIC8vIFJldHVybiBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gYG1pbmAgYW5kIGBtYXhgIChpbmNsdXNpdmUpLlxuICBmdW5jdGlvbiByYW5kb20obWluLCBtYXgpIHtcbiAgICBpZiAobWF4ID09IG51bGwpIHtcbiAgICAgIG1heCA9IG1pbjtcbiAgICAgIG1pbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBtaW4gKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpO1xuICB9XG5cbiAgLy8gQSAocG9zc2libHkgZmFzdGVyKSB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBhcyBhbiBpbnRlZ2VyLlxuICB2YXIgbm93ID0gRGF0ZS5ub3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIGVzY2FwaW5nIGFuZCB1bmVzY2FwaW5nIHN0cmluZ3NcbiAgLy8gdG8vZnJvbSBIVE1MIGludGVycG9sYXRpb24uXG4gIGZ1bmN0aW9uIGNyZWF0ZUVzY2FwZXIobWFwKSB7XG4gICAgdmFyIGVzY2FwZXIgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hcFttYXRjaF07XG4gICAgfTtcbiAgICAvLyBSZWdleGVzIGZvciBpZGVudGlmeWluZyBhIGtleSB0aGF0IG5lZWRzIHRvIGJlIGVzY2FwZWQuXG4gICAgdmFyIHNvdXJjZSA9ICcoPzonICsga2V5cyhtYXApLmpvaW4oJ3wnKSArICcpJztcbiAgICB2YXIgdGVzdFJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UpO1xuICAgIHZhciByZXBsYWNlUmVnZXhwID0gUmVnRXhwKHNvdXJjZSwgJ2cnKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgPT0gbnVsbCA/ICcnIDogJycgKyBzdHJpbmc7XG4gICAgICByZXR1cm4gdGVzdFJlZ2V4cC50ZXN0KHN0cmluZykgPyBzdHJpbmcucmVwbGFjZShyZXBsYWNlUmVnZXhwLCBlc2NhcGVyKSA6IHN0cmluZztcbiAgICB9O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGZvciBlc2NhcGluZy5cbiAgdmFyIGVzY2FwZU1hcCA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmI3gyNzsnLFxuICAgICdgJzogJyYjeDYwOydcbiAgfTtcblxuICAvLyBGdW5jdGlvbiBmb3IgZXNjYXBpbmcgc3RyaW5ncyB0byBIVE1MIGludGVycG9sYXRpb24uXG4gIHZhciBfZXNjYXBlID0gY3JlYXRlRXNjYXBlcihlc2NhcGVNYXApO1xuXG4gIC8vIEludGVybmFsIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBmb3IgdW5lc2NhcGluZy5cbiAgdmFyIHVuZXNjYXBlTWFwID0gaW52ZXJ0KGVzY2FwZU1hcCk7XG5cbiAgLy8gRnVuY3Rpb24gZm9yIHVuZXNjYXBpbmcgc3RyaW5ncyBmcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIF91bmVzY2FwZSA9IGNyZWF0ZUVzY2FwZXIodW5lc2NhcGVNYXApO1xuXG4gIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycy4gQ2hhbmdlIHRoZVxuICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gIHZhciB0ZW1wbGF0ZVNldHRpbmdzID0gXyQxLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG4gICAgZXZhbHVhdGU6IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgaW50ZXJwb2xhdGU6IC88JT0oW1xcc1xcU10rPyklPi9nLFxuICAgIGVzY2FwZTogLzwlLShbXFxzXFxTXSs/KSU+L2dcbiAgfTtcblxuICAvLyBXaGVuIGN1c3RvbWl6aW5nIGBfLnRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW5cbiAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpc1xuICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC5cbiAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87XG5cbiAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHR
14938oZXkgY2FuIGJlIHB1dCBpbnRvIGFcbiAgLy8gc3RyaW5nIGxpdGVyYWwuXG4gIHZhciBlc2NhcGVzID0ge1xuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAnXFxyJzogJ3InLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIHZhciBlc2NhcGVSZWdFeHAgPSAvXFxcXHwnfFxccnxcXG58XFx1MjAyOHxcXHUyMDI5L2c7XG5cbiAgZnVuY3Rpb24gZXNjYXBlQ2hhcihtYXRjaCkge1xuICAgIHJldHVybiAnXFxcXCcgKyBlc2NhcGVzW21hdGNoXTtcbiAgfVxuXG4gIC8vIEluIG9yZGVyIHRvIHByZXZlbnQgdGhpcmQtcGFydHkgY29kZSBpbmplY3Rpb24gdGhyb3VnaFxuICAvLyBgXy50ZW1wbGF0ZVNldHRpbmdzLnZhcmlhYmxlYCwgd2UgdGVzdCBpdCBhZ2FpbnN0IHRoZSBmb2xsb3dpbmcgcmVndWxhclxuICAvLyBleHByZXNzaW9uLiBJdCBpcyBpbnRlbnRpb25hbGx5IGEgYml0IG1vcmUgbGliZXJhbCB0aGFuIGp1c3QgbWF0Y2hpbmcgdmFsaWRcbiAgLy8gaWRlbnRpZmllcnMsIGJ1dCBzdGlsbCBwcmV2ZW50cyBwb3NzaWJsZSBsb29waG9sZXMgdGhyb3VnaCBkZWZhdWx0cyBvclxuICAvLyBkZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQuXG4gIHZhciBiYXJlSWRlbnRpZmllciA9IC9eXFxzKihcXHd8XFwkKStcXHMqJC87XG5cbiAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi5cbiAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLFxuICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS5cbiAgLy8gTkI6IGBvbGRTZXR0aW5nc2Agb25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZXh0LCBzZXR0aW5ncywgb2xkU2V0dGluZ3MpIHtcbiAgICBpZiAoIXNldHRpbmdzICYmIG9sZFNldHRpbmdzKSBzZXR0aW5ncyA9IG9sZFNldHRpbmdzO1xuICAgIHNldHRpbmdzID0gZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfJDEudGVtcGxhdGVTZXR0aW5ncyk7XG5cbiAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi5cbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cChbXG4gICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsXG4gICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlXG4gICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpO1xuXG4gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS5cbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBzb3VyY2UgPSBcIl9fcCs9J1wiO1xuICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkge1xuICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShlc2NhcGVSZWdFeHAsIGVzY2FwZUNoYXIpO1xuICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBlc2NhcGUgKyBcIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBpbnRlcnBvbGF0ZSArIFwiKSk9PW51bGw/Jyc6X190KStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZSArIFwiXFxuX19wKz0nXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCByZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZnNldC5cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcbiAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgdmFyIGFyZ3VtZW50ID0gc2V0dGluZ3MudmFyaWFibGU7XG4gICAgaWYgKGFyZ3VtZW50KSB7XG4gICAgICAvLyBJbnN1cmUgYWdhaW5zdCB0aGlyZC1wYXJ0eSBjb2RlIGluamVjdGlvbi4gKENWRS0yMDIxLTIzMzU4KVxuICAgICAgaWYgKCFiYXJlSWRlbnRpZmllci50ZXN0KGFyZ3VtZW50KSkgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndmFyaWFibGUgaXMgbm90IGEgYmFyZSBpZGVudGlmaWVyOiAnICsgYXJndW1lbnRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuXG4gICAgICBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcXG4nICsgc291cmNlICsgJ31cXG4nO1xuICAgICAgYXJndW1lbnQgPSAnb2JqJztcbiAgICB9XG5cbiAgICBzb3VyY2UgPSBcInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbixcIiArXG4gICAgICBcInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XFxuXCIgK1xuICAgICAgc291cmNlICsgJ3JldHVybiBfX3A7XFxuJztcblxuICAgIHZhciByZW5kZXI7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihhcmd1bWVudCwgJ18nLCBzb3VyY2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGUuc291cmNlID0gc291cmNlO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyQxKTtcbiAgICB9O1xuXG4gICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLlxuICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgYXJndW1lbnQgKyAnKXtcXG4nICsgc291cmNlICsgJ30nO1xuXG4gICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9XG5cbiAgLy8gVHJhdmVyc2VzIHRoZSBjaGlsZHJlbiBvZiBgb2JqYCBhbG9uZyBgcGF0aGAuIElmIGEgY2hpbGQgaXMgYSBmdW5jdGlvbiwgaXRcbiAgLy8gaXMgaW52b2tlZCB3aXRoIGl0cyBwYXJlbnQgYXMgY29udGV4dC4gUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpbmFsXG4gIC8vIGNoaWxkLCBvciBgZmFsbGJhY2tgIGlmIGFueSBjaGlsZCBpcyB1bmRlZmluZWQuXG4gIGZ1bmN0aW9uIHJlc3VsdChvYmosIHBhdGgsIGZhbGxiYWNrKSB7XG4gICAgcGF0aCA9IHRvUGF0aC
14938hwYXRoKTtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgIHJldHVybiBpc0Z1bmN0aW9uJDEoZmFsbGJhY2spID8gZmFsbGJhY2suY2FsbChvYmopIDogZmFsbGJhY2s7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gb2JqID09IG51bGwgPyB2b2lkIDAgOiBvYmpbcGF0aFtpXV07XG4gICAgICBpZiAocHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHByb3AgPSBmYWxsYmFjaztcbiAgICAgICAgaSA9IGxlbmd0aDsgLy8gRW5zdXJlIHdlIGRvbid0IGNvbnRpbnVlIGl0ZXJhdGluZy5cbiAgICAgIH1cbiAgICAgIG9iaiA9IGlzRnVuY3Rpb24kMShwcm9wKSA/IHByb3AuY2FsbChvYmopIDogcHJvcDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGludGVnZXIgaWQgKHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBjbGllbnQgc2Vzc2lvbikuXG4gIC8vIFVzZWZ1bCBmb3IgdGVtcG9yYXJ5IERPTSBpZHMuXG4gIHZhciBpZENvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICB2YXIgaWQgPSArK2lkQ291bnRlciArICcnO1xuICAgIHJldHVybiBwcmVmaXggPyBwcmVmaXggKyBpZCA6IGlkO1xuICB9XG5cbiAgLy8gU3RhcnQgY2hhaW5pbmcgYSB3cmFwcGVkIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBmdW5jdGlvbiBjaGFpbihvYmopIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBfJDEob2JqKTtcbiAgICBpbnN0YW5jZS5fY2hhaW4gPSB0cnVlO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYHNvdXJjZUZ1bmNgIGJvdW5kIHRvIGBjb250ZXh0YCB3aXRoIG9wdGlvbmFsXG4gIC8vIGBhcmdzYC4gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiBhcyBhIGNvbnN0cnVjdG9yIG9yIGFzIGFcbiAgLy8gbm9ybWFsIGZ1bmN0aW9uLlxuICBmdW5jdGlvbiBleGVjdXRlQm91bmQoc291cmNlRnVuYywgYm91bmRGdW5jLCBjb250ZXh0LCBjYWxsaW5nQ29udGV4dCwgYXJncykge1xuICAgIGlmICghKGNhbGxpbmdDb250ZXh0IGluc3RhbmNlb2YgYm91bmRGdW5jKSkgcmV0dXJuIHNvdXJjZUZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgdmFyIHNlbGYgPSBiYXNlQ3JlYXRlKHNvdXJjZUZ1bmMucHJvdG90eXBlKTtcbiAgICB2YXIgcmVzdWx0ID0gc291cmNlRnVuYy5hcHBseShzZWxmLCBhcmdzKTtcbiAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG4gIC8vIFBhcnRpYWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQgc29tZSBvZiBpdHNcbiAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcgaXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuIGBfYCBhY3RzXG4gIC8vIGFzIGEgcGxhY2Vob2xkZXIgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYW55IGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB0byBiZVxuICAvLyBwcmUtZmlsbGVkLiBTZXQgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgZm9yIGEgY3VzdG9tIHBsYWNlaG9sZGVyIGFyZ3VtZW50LlxuICB2YXIgcGFydGlhbCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oZnVuYywgYm91bmRBcmdzKSB7XG4gICAgdmFyIHBsYWNlaG9sZGVyID0gcGFydGlhbC5wbGFjZWhvbGRlcjtcbiAgICB2YXIgYm91bmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IDAsIGxlbmd0aCA9IGJvdW5kQXJncy5sZW5ndGg7XG4gICAgICB2Y
14938XIgYXJncyA9IEFycmF5KGxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFyZ3NbaV0gPSBib3VuZEFyZ3NbaV0gPT09IHBsYWNlaG9sZGVyID8gYXJndW1lbnRzW3Bvc2l0aW9uKytdIDogYm91bmRBcmdzW2ldO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgYXJndW1lbnRzLmxlbmd0aCkgYXJncy5wdXNoKGFyZ3VtZW50c1twb3NpdGlvbisrXSk7XG4gICAgICByZXR1cm4gZXhlY3V0ZUJvdW5kKGZ1bmMsIGJvdW5kLCB0aGlzLCB0aGlzLCBhcmdzKTtcbiAgICB9O1xuICAgIHJldHVybiBib3VuZDtcbiAgfSk7XG5cbiAgcGFydGlhbC5wbGFjZWhvbGRlciA9IF8kMTtcblxuICAvLyBDcmVhdGUgYSBmdW5jdGlvbiBib3VuZCB0byBhIGdpdmVuIG9iamVjdCAoYXNzaWduaW5nIGB0aGlzYCwgYW5kIGFyZ3VtZW50cyxcbiAgLy8gb3B0aW9uYWxseSkuXG4gIHZhciBiaW5kID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdzKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uJDEoZnVuYykpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdW5jdGlvbicpO1xuICAgIHZhciBib3VuZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oY2FsbEFyZ3MpIHtcbiAgICAgIHJldHVybiBleGVjdXRlQm91bmQoZnVuYywgYm91bmQsIGNvbnRleHQsIHRoaXMsIGFyZ3MuY29uY2F0KGNhbGxBcmdzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9KTtcblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgZm9yIGNvbGxlY3Rpb24gbWV0aG9kcyB0byBkZXRlcm1pbmUgd2hldGhlciBhIGNvbGxlY3Rpb25cbiAgLy8gc2hvdWxkIGJlIGl0ZXJhdGVkIGFzIGFuIGFycmF5IG9yIGFzIGFuIG9iamVjdC5cbiAgLy8gUmVsYXRlZDogaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvbGVuZ3RoXG4gIC8vIEF2b2lkcyBhIHZlcnkgbmFzdHkgaU9TIDggSklUIGJ1ZyBvbiBBUk0tNjQuICMyMDk0XG4gIHZhciBpc0FycmF5TGlrZSA9IGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldExlbmd0aCk7XG5cbiAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYSByZWN1cnNpdmUgYGZsYXR0ZW5gIGZ1bmN0aW9uLlxuICBmdW5jdGlvbiBmbGF0dGVuJDEoaW5wdXQsIGRlcHRoLCBzdHJpY3QsIG91dHB1dCkge1xuICAgIG91dHB1dCA9IG91dHB1dCB8fCBbXTtcbiAgICBpZiAoIWRlcHRoICYmIGRlcHRoICE9PSAwKSB7XG4gICAgICBkZXB0aCA9IEluZmluaXR5O1xuICAgIH0gZWxzZSBpZiAoZGVwdGggPD0gMCkge1xuICAgICAgcmV0dXJuIG91dHB1dC5jb25jYXQoaW5wdXQpO1xuICAgIH1cbiAgICB2YXIgaWR4ID0gb3V0cHV0Lmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGlucHV0KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIgdmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiYgKGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzJDEodmFsdWUpKSkge1xuICAgICAgICAvLyBGbGF0dGVuIGN1cnJlbnQgbGV2ZWwgb2YgYXJyYXkgb3IgYXJndW1lbnRzIG9iamVjdC5cbiAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgIGZsYXR0ZW4kMSh2YWx1ZSwgZGVwdGggLSAxLCBzdHJpY3QsIG91dHB1dCk7XG4gICAgICAgICAgaWR4ID0gb3V0cHV0Lmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaiA9IDAsIGxlbiA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaiA8IGxlbikgb3V0cHV0W2lkeCsrXSA9IHZhbHVlW2orK107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCkge1xuICAgICAgICBvdXRwdXRbaWR4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICAvLyBCaW5kIGEgbnVtYmVyIG9mIGFuIG9iamVjdCdzIG1ldGhvZHMgdG8gdGhhdCBvYmplY3QuIFJlbWFpbmluZyBhcmd1bWVudHNcbiAgLy8gYXJlIHRoZSBtZXRob2QgbmFtZXMgdG8gYmUgYm91bmQuIFVzZWZ1bCBmb3IgZW5zdXJpbmcgdGhhdCBhbGwgY2FsbGJhY2tzXG4gIC8vIGRlZmluZWQgb24gYW4gb2JqZWN0IGJlbG9uZyB0byBpdC5cbiAgdmFyIGJpbmRBbGwgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIGtleXMgPSBmbGF0dGVuJDEoa2V5cywgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgaW5kZXggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAoaW5kZXggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMnKTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaW5kZXhdO1xuICAgICAgb2JqW2tleV0gPSBiaW5kKG9ialtrZXldLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9KTtcblxuICAvLyBNZW1vaXplIGFuIGV4cGVuc2l2ZSBmdW5jdGlvbiBieSBzdG9yaW5nIGl0cyByZXN1bHRzLlxuICBmdW5jdGlvbiBtZW1vaXplKGZ1bmMsIGhhc2hlcikge1xuICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2Y
14938XIgY2FjaGUgPSBtZW1vaXplLmNhY2hlO1xuICAgICAgdmFyIGFkZHJlc3MgPSAnJyArIChoYXNoZXIgPyBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleSk7XG4gICAgICBpZiAoIWhhcyQxKGNhY2hlLCBhZGRyZXNzKSkgY2FjaGVbYWRkcmVzc10gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICByZXR1cm4gY2FjaGVbYWRkcmVzc107XG4gICAgfTtcbiAgICBtZW1vaXplLmNhY2hlID0ge307XG4gICAgcmV0dXJuIG1lbW9pemU7XG4gIH1cblxuICAvLyBEZWxheXMgYSBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIGFuZCB0aGVuIGNhbGxzXG4gIC8vIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC5cbiAgdmFyIGRlbGF5ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9LCB3YWl0KTtcbiAgfSk7XG5cbiAgLy8gRGVmZXJzIGEgZnVuY3Rpb24sIHNjaGVkdWxpbmcgaXQgdG8gcnVuIGFmdGVyIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzXG4gIC8vIGNsZWFyZWQuXG4gIHZhciBkZWZlciA9IHBhcnRpYWwoZGVsYXksIF8kMSwgMSk7XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCB3aGVuIGludm9rZWQsIHdpbGwgb25seSBiZSB0cmlnZ2VyZWQgYXQgbW9zdCBvbmNlXG4gIC8vIGR1cmluZyBhIGdpdmVuIHdpbmRvdyBvZiB0aW1lLiBOb3JtYWxseSwgdGhlIHRocm90dGxlZCBmdW5jdGlvbiB3aWxsIHJ1blxuICAvLyBhcyBtdWNoIGFzIGl0IGNhbiwgd2l0aG91dCBldmVyIGdvaW5nIG1vcmUgdGhhbiBvbmNlIHBlciBgd2FpdGAgZHVyYXRpb247XG4gIC8vIGJ1dCBpZiB5b3UnZCBsaWtlIHRvIGRpc2FibGUgdGhlIGV4ZWN1dGlvbiBvbiB0aGUgbGVhZGluZyBlZGdlLCBwYXNzXG4gIC8vIGB7bGVhZGluZzogZmFsc2V9YC4gVG8gZGlzYWJsZSBleGVjdXRpb24gb24gdGhlIHRyYWlsaW5nIGVkZ2UsIGRpdHRvLlxuICBmdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIHRpbWVvdXQsIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgcHJldmlvdXMgPSAwO1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBwcmV2aW91cyA9IG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UgPyAwIDogbm93KCk7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuXG4gICAgdmFyIHRocm90dGxlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIF9ub3cgPSBub3coKTtcbiAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBfbm93O1xuICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAoX25vdyAtIHByZXZpb3VzKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHByZXZpb3VzID0gX25vdztcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdGhyb3R0bGVkLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgcHJldmlvdXMgPSAwO1xuICAgICAgdGltZW91dCA9IGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRocm90dGxlZDtcbiAgfVxuXG4gIC8vIFdoZW4gYSBzZXF1ZW5jZSBvZiBjYWxscyBvZiB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gZW5kcywgdGhlIGFyZ3VtZW50XG4gIC8vIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZC4gVGhlIGVuZCBvZiBhIHNlcXVlbmNlIGlzIGRlZmluZWQgYnkgdGhlIGB3YWl0YFxuICAvLyBwYXJhbWV0ZXIuIElmIGBpbW1lZGlhdGVgIGlzIHBhc3NlZCwgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uIHdpbGwgYmVcbiAgLy8gdHJpZ2dlcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlIGluc3RlYWQgb2YgYXQgdGhlIGVuZC5cbiAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7XG4gICAgdmFyIHRpbWVvdXQsIHByZXZpb3VzLCBhcmdzLCByZXN1bHQsIGNvbnRleHQ7XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwYXNzZWQgPSBub3coKSAtIHByZXZpb3VzO1xuICAgICAgaWYgKHdhaXQgPiBwYXNzZWQpIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgLSBwYXNzZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIGlmICghaW1tZWRpYXRlKSByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIGBmdW5jYCBjYW4gcmVjdXJzaXZlbHkgaW52b2tlIGBkZWJvdW5jZWRgLlxuICAgICAgICBpZiAoIXRpbWVvdXQpIGFyZ3MgPSBjb250ZXh0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGRlYm91bmNlZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oX2FyZ3MpIHtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IF9hcmdzO1xuICAgICAgcHJldmlvdXMgPSBub3coKTtcbiAgICAgIGlmICghdGltZW91dCkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgICAgIGlmIChpbW1lZGlhdGUpIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgZGVib3VuY2VkLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IGFyZ3MgPSBjb250ZXh0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGZ1bmN0aW9uIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgc2Vjb25kLFxuICAvLyBhbGxvd2luZyB5b3UgdG8gYWRqdXN0IGFyZ3VtZW50cywgcnVuIGNvZGUgYmVmb3JlIGFuZCBhZnRlciwgYW5kXG4gIC8vIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIHdyYXAoZnVuYywgd3JhcHBlcikge1xuICAgIHJldHVybi
14938BwYXJ0aWFsKHdyYXBwZXIsIGZ1bmMpO1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIG5lZ2F0ZWQgdmVyc2lvbiBvZiB0aGUgcGFzc2VkLWluIHByZWRpY2F0ZS5cbiAgZnVuY3Rpb24gbmVnYXRlKHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBhIGxpc3Qgb2YgZnVuY3Rpb25zLCBlYWNoXG4gIC8vIGNvbnN1bWluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGZvbGxvd3MuXG4gIGZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHN0YXJ0ID0gYXJncy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpID0gc3RhcnQ7XG4gICAgICB2YXIgcmVzdWx0ID0gYXJnc1tzdGFydF0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHdoaWxlIChpLS0pIHJlc3VsdCA9IGFyZ3NbaV0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9uIGFuZCBhZnRlciB0aGUgTnRoIGNhbGwuXG4gIGZ1bmN0aW9uIGFmdGVyKHRpbWVzLCBmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPCAxKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgb25seSBiZSBleGVjdXRlZCB1cCB0byAoYnV0IG5vdCBpbmNsdWRpbmcpIHRoZVxuICAvLyBOdGggY2FsbC5cbiAgZnVuY3Rpb24gYmVmb3JlKHRpbWVzLCBmdW5jKSB7XG4gICAgdmFyIG1lbW87XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPiAwKSB7XG4gICAgICAgIG1lbW8gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgICBpZiAodGltZXMgPD0gMSkgZnVuYyA9IG51bGw7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBtb3N0IG9uZSB0aW1lLCBubyBtYXR0ZXIgaG93XG4gIC8vIG9mdGVuIHlvdSBjYWxsIGl0LiBVc2VmdWwgZm9yIGxhenkgaW5pdGlhbGl6YXRpb24uXG4gIHZhciBvbmNlID0gcGFydGlhbChiZWZvcmUsIDIpO1xuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGtleSBvbiBhbiBvYmplY3QgdGhhdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBmaW5kS2V5KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSBrZXlzKG9iaiksIGtleTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gX2tleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IF9rZXlzW2ldO1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpba2V5XSwga2V5LCBvYmopKSByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgLlxuICBmdW5jdGlvbiBjcmVhdGVQcmVkaWNhdGVJbmRleEZpbmRlcihkaXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICAgIHZhciBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgICAgdmFyIGluZGV4ID0gZGlyID4gMCA/IDAgOiBsZW5ndGggLSAxO1xuICAgICAgZm9yICg7IGluZGV4ID49IDAgJiYgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IGRpcikge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBpbmRleCBvbiBhbiBhcnJheS1saWtlIHRoYXQgcGFzc2VzIGEgdHJ1dGggdGVzdC5cbiAgdmFyIGZpbmRJbmRleCA9IGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKDEpO1xuXG4gIC8vIFJldHVybnMgdGhlIGxhc3QgaW5kZXggb24gYW4gYXJyYXktbGlrZSB0aGF0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIHZhciBmaW5kTGFzdEluZGV4ID0gY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIoLTEpO1xuXG4gIC8vIFVzZSBhIGNvbXBhcmF0b3IgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB0aGUgc21hbGxlc3QgaW5kZXggYXQgd2hpY2hcbiAgLy8gYW4gb2JqZWN0IHNob3VsZCBiZSBpbnNlcnRlZCBzbyBhcyB0byBtYWludGFpbiBvcmRlci4gVXNlcyBiaW5hcnkgc2VhcmNoLlxuICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgb2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIHZhciB2YWx1ZSA9IGl0ZXJhdGVlKG9iaik7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICB2Y
14938XIgbWlkID0gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKTtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVttaWRdKSA8IHZhbHVlKSBsb3cgPSBtaWQgKyAxOyBlbHNlIGhpZ2ggPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgYF8uaW5kZXhPZmAgYW5kIGBfLmxhc3RJbmRleE9mYCBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluZGV4RmluZGVyKGRpciwgcHJlZGljYXRlRmluZCwgc29ydGVkSW5kZXgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGlkeCkge1xuICAgICAgdmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgICAgaWYgKHR5cGVvZiBpZHggPT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGRpciA+IDApIHtcbiAgICAgICAgICBpID0gaWR4ID49IDAgPyBpZHggOiBNYXRoLm1heChpZHggKyBsZW5ndGgsIGkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxlbmd0aCA9IGlkeCA+PSAwID8gTWF0aC5taW4oaWR4ICsgMSwgbGVuZ3RoKSA6IGlkeCArIGxlbmd0aCArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc29ydGVkSW5kZXggJiYgaWR4ICYmIGxlbmd0aCkge1xuICAgICAgICBpZHggPSBzb3J0ZWRJbmRleChhcnJheSwgaXRlbSk7XG4gICAgICAgIHJldHVybiBhcnJheVtpZHhdID09PSBpdGVtID8gaWR4IDogLTE7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbSAhPT0gaXRlbSkge1xuICAgICAgICBpZHggPSBwcmVkaWNhdGVGaW5kKHNsaWNlLmNhbGwoYXJyYXksIGksIGxlbmd0aCksIGlzTmFOJDEpO1xuICAgICAgICByZXR1cm4gaWR4ID49IDAgPyBpZHggKyBpIDogLTE7XG4gICAgICB9XG4gICAgICBmb3IgKGlkeCA9IGRpciA+IDAgPyBpIDogbGVuZ3RoIC0gMTsgaWR4ID49IDAgJiYgaWR4IDwgbGVuZ3RoOyBpZHggKz0gZGlyKSB7XG4gICAgICAgIGlmIChhcnJheVtpZHhdID09PSBpdGVtKSByZXR1cm4gaWR4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXksXG4gIC8vIG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuXG4gIC8vIElmIHRoZSBhcnJheSBpcyBsYXJnZSBhbmQgYWxyZWFkeSBpbiBzb3J0IG9yZGVyLCBwYXNzIGB0cnVlYFxuICAvLyBmb3IgKippc1NvcnRlZCoqIHRvIHVzZSBiaW5hcnkgc2VhcmNoLlxuICB2YXIgaW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKDEsIGZpbmRJbmRleCwgc29ydGVkSW5kZXgpO1xuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhbiBpdGVtIGluIGFuIGFycmF5LFxuICAvLyBvciAtMSBpZiB0aGUgaXRlbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFycmF5LlxuICB2YXIgbGFzdEluZGV4T2YgPSBjcmVhdGVJbmRleEZpbmRlcigtMSwgZmluZExhc3RJbmRleCk7XG5cbiAgLy8gUmV0dXJuIHRoZSBmaXJzdCB2YWx1ZSB3aGljaCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBmaW5kKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIGtleUZpbmRlciA9IGlzQXJyYXlMaWtlKG9iaikgPyBmaW5kSW5kZXggOiBmaW5kS2V5O1xuICAgIHZhciBrZXkgPSBrZXlGaW5kZXIob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIGlmIChrZXkgIT09IHZvaWQgMCAmJiBrZXkgIT09IC0xKSByZXR1cm4gb2JqW2tleV07XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBfLmZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdFxuICAvLyBvYmplY3QgY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gZmluZFdoZXJlKG9iaiwgYXR0cnMpIHtcbiAgICByZXR1cm4gZmluZChvYmosIG1hdGNoZXIoYXR0cnMpKTtcbiAgfVxuXG4gIC8vIFRoZSBjb3JuZXJzdG9uZSBmb3IgY29sbGVjdGlvbiBmdW5jdGlvbnMsIGFuIGBlYWNoYFxuICAvLyBpbXBsZW1lbnRhdGlvbiwgYWthIGBmb3JFYWNoYC5cbiAgLy8gSGFuZGxlcyByYXcgb2JqZWN0cyBpbiBhZGRpdGlvbiB0byBhcnJheS1saWtlcy4gVHJlYXRzIGFsbFxuICAvLyBzcGFyc2UgYXJyYXktbGlrZXMgYXMgaWYgdGhleSB3ZXJlIGRlbnNlLlxuICBmdW5jdGlvbiBlYWNoKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBpLCBsZW5ndGg7XG4gICAgaWYgKGlzQXJyYXlMaWtlKG9iaikpIHtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRlZShvYmpbaV0sIGksIG9iaik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtfa2V5c1tpXV0sIF9rZXlzW2ldLCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBpdGVyYXRlZSB0byBlYWNoIGVsZW1lbnQuXG4gIGZ1bmN0aW9uIG1hcChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIF9rZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYga2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoX2tleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIHJlc3VsdHNbaW5kZXhdID0gaXRlcmF0ZWUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBjcmVhdGUgYSByZWR1Y2luZyBmdW5jdGlvbiwgaXRlcmF0aW5nIGxlZnQgb3IgcmlnaHQuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJlZ
14938HVjZShkaXIpIHtcbiAgICAvLyBXcmFwIGNvZGUgdGhhdCByZWFzc2lnbnMgYXJndW1lbnQgdmFyaWFibGVzIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24gdGhhblxuICAgIC8vIHRoZSBvbmUgdGhhdCBhY2Nlc3NlcyBgYXJndW1lbnRzLmxlbmd0aGAgdG8gYXZvaWQgYSBwZXJmIGhpdC4gKCMxOTkxKVxuICAgIHZhciByZWR1Y2VyID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgaW5pdGlhbCkge1xuICAgICAgdmFyIF9rZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYga2V5cyhvYmopLFxuICAgICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGRpciA+IDAgPyAwIDogbGVuZ3RoIC0gMTtcbiAgICAgIGlmICghaW5pdGlhbCkge1xuICAgICAgICBtZW1vID0gb2JqW19rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXhdO1xuICAgICAgICBpbmRleCArPSBkaXI7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaW5kZXggPj0gMCAmJiBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gZGlyKSB7XG4gICAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgICAgbWVtbyA9IGl0ZXJhdGVlKG1lbW8sIG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgY29udGV4dCkge1xuICAgICAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoID49IDM7XG4gICAgICByZXR1cm4gcmVkdWNlcihvYmosIG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDQpLCBtZW1vLCBpbml0aWFsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gKipSZWR1Y2UqKiBidWlsZHMgdXAgYSBzaW5nbGUgcmVzdWx0IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYWthIGBpbmplY3RgLFxuICAvLyBvciBgZm9sZGxgLlxuICB2YXIgcmVkdWNlID0gY3JlYXRlUmVkdWNlKDEpO1xuXG4gIC8vIFRoZSByaWdodC1hc3NvY2lhdGl2ZSB2ZXJzaW9uIG9mIHJlZHVjZSwgYWxzbyBrbm93biBhcyBgZm9sZHJgLlxuICB2YXIgcmVkdWNlUmlnaHQgPSBjcmVhdGVSZWR1Y2UoLTEpO1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgcGFzcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbHRlcihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgbGlzdCkpIHJlc3VsdHMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBmb3Igd2hpY2ggYSB0cnV0aCB0ZXN0IGZhaWxzLlxuICBmdW5jdGlvbiByZWplY3Qob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gZmlsdGVyKG9iaiwgbmVnYXRlKGNiKHByZWRpY2F0ZSkpLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB3aGV0aGVyIGFsbCBvZiB0aGUgZWxlbWVudHMgcGFzcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGV2ZXJ5KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2Y
14938XIgY3VycmVudEtleSA9IF9rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAoIXByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIG9iamVjdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBzb21lKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IF9rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAocHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERldGVybWluZSBpZiB0aGUgYXJyYXkgb3Igb2JqZWN0IGNvbnRhaW5zIGEgZ2l2ZW4gaXRlbSAodXNpbmcgYD09PWApLlxuICBmdW5jdGlvbiBjb250YWlucyhvYmosIGl0ZW0sIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKG9iaikpIG9iaiA9IHZhbHVlcyhvYmopO1xuICAgIGlmICh0eXBlb2YgZnJvbUluZGV4ICE9ICdudW1iZXInIHx8IGd1YXJkKSBmcm9tSW5kZXggPSAwO1xuICAgIHJldHVybiBpbmRleE9mKG9iaiwgaXRlbSwgZnJvbUluZGV4KSA+PSAwO1xuICB9XG5cbiAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uXG4gIHZhciBpbnZva2UgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwgcGF0aCwgYXJncykge1xuICAgIHZhciBjb250ZXh0UGF0aCwgZnVuYztcbiAgICBpZiAoaXNGdW5jdGlvbiQxKHBhdGgpKSB7XG4gICAgICBmdW5jID0gcGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICAgIGNvbnRleHRQYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgICBwYXRoID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbWFwKG9iaiwgZnVuY3Rpb24oY29udGV4dCkge1xuICAgICAgdmFyIG1ldGhvZCA9IGZ1bmM7XG4gICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICBpZiAoY29udGV4dFBhdGggJiYgY29udGV4dFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGV4dCA9IGRlZXBHZXQoY29udGV4dCwgY29udGV4dFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgICAgIG1ldGhvZCA9IGNvbnRleHRbcGF0aF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWV0aG9kID09IG51bGwgPyBtZXRob2QgOiBtZXRob2QuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8ubWFwYDogZmV0Y2hpbmcgYSBwcm9wZXJ0eS5cbiAgZnVuY3Rpb24gcGx1Y2sob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gbWFwKG9iaiwgcHJvcGVydHkoa2V5KSk7XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBfLmZpbHRlcmA6IHNlbGVjdGluZyBvbmx5XG4gIC8vIG9iamVjdHMgY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gd2hlcmUob2JqLCBhdHRycykge1xuICAgIHJldHVybiBmaWx0ZXIob2JqLCBtYXRjaGVyKGF0dHJzKSk7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG1heGltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIGZ1bmN0aW9uIG1heChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IC1JbmZpbml0eSwgbGFzdENvbXB1dGVkID0gLUluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgfHwgdHlwZW9mIGl0ZXJhdGVlID09ICdudW1iZXInICYmIHR5cGVvZiBvYmpbMF0gIT0gJ29iamVjdCcgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IGlzQXJyYXlMaWtlKG9iaikgPyBvYmogOiB2YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlID4gcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odiwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2LCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA+IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gLUluZmluaXR5ICYmIHJlc3VsdCA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdjtcbiAgICAgICAgICBsYXN0Q29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG1pbmltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIGZ1bmN0aW9uIG1pbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IEluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSBJbmZpbml0eSxcbiAgICAgICAgdmFsdWUsIGNvbXB1dGVkO1xuICAgIGlmIChpdGVyYXRlZSA9PSBudWxsIHx8IHR5cGVvZiBpdGVyYXRlZSA9PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqWzBdICE9ICdvYmplY3QnICYmIG9iaiAhPSBudWxsKSB7XG4gICAgICBvYmogPSBpc0FycmF
149385TGlrZShvYmopID8gb2JqIDogdmFsdWVzKG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSA8IHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgZWFjaChvYmosIGZ1bmN0aW9uKHYsIGluZGV4LCBsaXN0KSB7XG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodiwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPCBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IEluZmluaXR5ICYmIHJlc3VsdCA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2O1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFNhbXBsZSAqKm4qKiByYW5kb20gdmFsdWVzIGZyb20gYSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBtb2Rlcm4gdmVyc2lvbiBvZiB0aGVcbiAgLy8gW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXLigJNZYXRlc19zaHVmZmxlKS5cbiAgLy8gSWYgKipuKiogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC5cbiAgLy8gVGhlIGludGVybmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBmdW5jdGlvbiBzYW1wbGUob2JqLCBuLCBndWFyZCkge1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHtcbiAgICAgIGlmICghaXNBcnJheUxpa2Uob2JqKSkgb2JqID0gdmFsdWVzKG9iaik7XG4gICAgICByZXR1cm4gb2JqW3JhbmRvbShvYmoubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICB2YXIgc2FtcGxlID0gaXNBcnJheUxpa2Uob2JqKSA/IGNsb25lKG9iaikgOiB2YWx1ZXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKHNhbXBsZSk7XG4gICAgbiA9IE1hdGgubWF4KE1hdGgubWluKG4sIGxlbmd0aCksIDApO1xuICAgIHZhciBsYXN0ID0gbGVuZ3RoIC0gMTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbjsgaW5kZXgrKykge1xuICAgICAgdmFyIHJhbmQgPSByYW5kb20oaW5kZXgsIGxhc3QpO1xuICAgICAgdmFyIHRlbXAgPSBzYW1wbGVbaW5kZXhdO1xuICAgICAgc2FtcGxlW2luZGV4XSA9IHNhbXBsZVtyYW5kXTtcbiAgICAgIHNhbXBsZVtyYW5kXSA9IHRlbXA7XG4gICAgfVxuICAgIHJldHVybiBzYW1wbGUuc2xpY2UoMCwgbik7XG4gIH1cblxuICAvLyBTaHVmZmxlIGEgY29sbGVjdGlvbi5cbiAgZnVuY3Rpb24gc2h1ZmZsZShvYmopIHtcbiAgICByZXR1cm4gc2FtcGxlKG9iaiwgSW5maW5pdHkpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uIHByb2R1Y2VkIGJ5IGFuIGl0ZXJhdGVlLlxuICBmdW5jdGlvbiBzb3J0Qnkob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgcmV0dXJuIHBsdWNrKG1hcChvYmosIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGxpc3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgaW5kZXg6IGluZGV4KyssXG4gICAgICAgIGNyaXRlcmlhOiBpdGVyYXRlZSh2YWx1ZSwga2V5LCBsaXN0KVxuICAgICAgfTtcbiAgICB9KS5zb3J0KGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgICB2Y
14938XIgYSA9IGxlZnQuY3JpdGVyaWE7XG4gICAgICB2YXIgYiA9IHJpZ2h0LmNyaXRlcmlhO1xuICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgaWYgKGEgPiBiIHx8IGEgPT09IHZvaWQgMCkgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhIDwgYiB8fCBiID09PSB2b2lkIDApIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7XG4gICAgfSksICd2YWx1ZScpO1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3IgYWdncmVnYXRlIFwiZ3JvdXAgYnlcIiBvcGVyYXRpb25zLlxuICBmdW5jdGlvbiBncm91cChiZWhhdmlvciwgcGFydGl0aW9uKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJ0aXRpb24gPyBbW10sIFtdXSA6IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIG9iaik7XG4gICAgICAgIGJlaGF2aW9yKHJlc3VsdCwgdmFsdWUsIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEdyb3VwcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLiBQYXNzIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGVcbiAgLy8gdG8gZ3JvdXAgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjcml0ZXJpb24uXG4gIHZhciBncm91cEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKGhhcyQxKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7IGVsc2UgcmVzdWx0W2tleV0gPSBbdmFsdWVdO1xuICB9KTtcblxuICAvLyBJbmRleGVzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24sIHNpbWlsYXIgdG8gYF8uZ3JvdXBCeWAsIGJ1dCBmb3JcbiAgLy8gd2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5kZXggdmFsdWVzIHdpbGwgYmUgdW5pcXVlLlxuICB2YXIgaW5kZXhCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gIH0pO1xuXG4gIC8vIENvdW50cyBpbnN0YW5jZXMgb2YgYW4gb2JqZWN0IHRoYXQgZ3JvdXAgYnkgYSBjZXJ0YWluIGNyaXRlcmlvbi4gUGFzc1xuICAvLyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlIHRvIGNvdW50IGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgLy8gY3JpdGVyaW9uLlxuICB2YXIgY291bnRCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIGlmIChoYXMkMShyZXN1bHQsIGtleSkpIHJlc3VsdFtrZXldKys7IGVsc2UgcmVzdWx0W2tleV0gPSAxO1xuICB9KTtcblxuICAvLyBTcGxpdCBhIGNvbGxlY3Rpb24gaW50byB0d28gYXJyYXlzOiBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIHBhc3MgdGhlIGdpdmVuXG4gIC8vIHRydXRoIHRlc3QsIGFuZCBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIGRvIG5vdCBwYXNzIHRoZSB0cnV0aCB0ZXN0LlxuICB2YXIgcGFydGl0aW9uID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwgcGFzcykge1xuICAgIHJlc3VsdFtwYXNzID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICB9LCB0cnVlKTtcblxuICAvLyBTYWZlbHkgY3JlYXRlIGEgcmVhbCwgbGl2ZSBhcnJheSBmcm9tIGFueXRoaW5nIGl0ZXJhYmxlLlxuICB2YXIgcmVTdHJTeW1ib2wgPSAvW15cXHVkODAwLVxcdWRmZmZdfFtcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl18W1xcdWQ4MDAtXFx1ZGZmZl0vZztcbiAgZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICAgIGlmIChpc0FycmF5KG9iaikpIHJldHVybiBzbGljZS5jYWxsKG9iaik7XG4gICAgaWYgKGlzU3RyaW5nKG9iaikpIHtcbiAgICAgIC8vIEtlZXAgc3Vycm9nYXRlIHBhaXIgY2hhcmFjdGVycyB0b2dldGhlci5cbiAgICAgIHJldHVybiBvYmoubWF0Y2gocmVTdHJTeW1ib2wpO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheUxpa2Uob2JqKSkgcmV0dXJuIG1hcChvYmosIGlkZW50aXR5KTtcbiAgICByZXR1cm4gdmFsdWVzKG9iaik7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIGNvbGxlY3Rpb24uXG4gIGZ1bmN0aW9uIHNpemUob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gMDtcbiAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqKSA/IG9iai5sZW5ndGggOiBrZXlzKG9iaikubGVuZ3RoO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgYF8ucGlja2AgaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGBrZXlgIGlzIGFuIGVudW1lcmFibGVcbiAgLy8gcHJvcGVydHkgbmFtZSBvZiBgb2JqYC5cbiAgZnVuY3Rpb24ga2V5SW5PYmoodmFsdWUsIGtleSwgb2JqKSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG4gIH1cblxuICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgb25seSBjb250YWluaW5nIHRoZSBhbGxvd2VkIHByb3BlcnRpZXMuXG4gIHZhciBwaWNrID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge30sIGl0ZXJhdGVlID0ga2V5c1swXTtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiByZXN1bHQ7XG4gICAgaWYgKGlzRnVuY3Rpb24kMShpdGVyYXRlZSkpIHtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwga2V5c1sxXSk7XG4gICAgICBrZXlzID0gYWxsS2V5cyhvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IGtleUluT2JqO1xuICAgICAga2V5cyA9IGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgaWYgKGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iaikpIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBkaXNhbGxvd2VkIHByb3BlcnRpZXMuXG4gIHZhciBvbWl0ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICB2YXIgaXRlcmF0ZWUgPSBrZXlzWzBdLCBjb250ZXh0O1xuICAgIGlmIChpc0Z1bmN0aW9uJDEoaXRlcmF0ZWUpKSB7XG4gICAgICBpdGVyYXRlZSA9IG5lZ2F0ZShpdGVyYXRlZSk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAxKSBjb250ZXh0ID0ga2V5c1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IG1hcChmbGF0dGVuJDEoa2V5cywgZmFsc2UsIGZhbHNlKSwgU3RyaW5nKTtcbiAgICAgIGl0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICByZXR1cm4gIWNvbnRhaW5zKGtleXMsIGtleSk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGljayhvYmosIGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgLy8gUmV0dXJucyBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEVzcGVjaWFsbHkgdXNlZnVsIG9uXG4gIC8vIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIGFsbCB0aGUgdmFsdWVzIGluXG4gIC8vIHRoZSBhcnJheSwgZXhjbHVkaW5nIHRoZSBsYXN0IE4uXG4gIGZ1bmN0aW9uIGluaXRpYWwoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIChuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbikpKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgZmlyc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LiBUaGUgKipndWFyZCoqIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgZnVuY3Rpb24gZmlyc3QoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoIDwgMSkgcmV0dXJuIG4gPT0gbnVsbCB8fCBndWFyZCA/IHZvaWQgMCA6IFtdO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVswXTtcbiAgICByZXR1cm4gaW5pdGlhbChhcnJheSwgYXJyYXkubGVuZ3RoIC0gbik7XG4gIH1cblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgYGFycmF5YC4gRXNwZWNpYWxseSB1c2VmdWwgb25cbiAgLy8gdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gUGFzc2luZyBhbiAqKm4qKiB3aWxsIHJldHVybiB0aGUgcmVzdCBOIHZhbHVlcyBpbiB0aGVcbiAgLy8gYGFycmF5YC5cbiAgZnVuY3Rpb24gcmVzdChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgbiA9PSBudWxsIHx8IGd1YXJkID8gMSA6IG4pO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYW4gYXJyYXkuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gdGhlIGxhc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LlxuICBmdW5jdGlvbiBsYXN0KGFycmF5LCBuLCBndWFyZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsIHx8IGFycmF5Lmxlbmd0aCA8IDEpIHJldHVybiBuID09IG51bGwgfHwgZ3VhcmQgPyB2b2lkIDAgOiBbXTtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIHJlc3QoYXJyYXksIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIG4pKTtcbiAgfVxuXG4gIC8vIFRyaW0gb3V0IGFsbCBmYWxzeSB2YWx1ZXMgZnJvbSBhbiBhcnJheS5cbiAgZnVuY3Rpb24gY29tcGFjdChhcnJheSkge1xuICAgIHJldHVybiBmaWx0ZXIoYXJyYXksIEJvb2xlYW4pO1xuICB9XG5cbiAgLy8gRmxhdHRlbiBvdXQgYW4gYXJyYXksIGVpdGhlciByZWN1cnNpdmVseSAoYnkgZGVmYXVsdCksIG9yIHVwIHRvIGBkZXB0aGAuXG4gIC8vIFBhc3NpbmcgYHRydWVgIG9yIGBmYWxzZWAgYXMgYGRlcHRoYCBtZWFucyBgMWAgb3IgYEluZmluaXR5YCwgcmVzcGVjdGl2ZWx5LlxuICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5LCBkZXB0aCkge1xuICAgIHJldHVybiBmbGF0dGVuJDEoYXJyYXksIGRlcHRoLCBmYWxzZSk7XG4gIH1cblxuICAvLyBUYWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb25lIGFycmF5IGFuZCBhIG51bWJlciBvZiBvdGhlciBhcnJheXMuXG4gIC8vIE9ubHkgdGhlIGVsZW1lbnRzIHByZXNlbnQgaW4ganVzdCB0aGUgZmlyc3QgYXJyYXkgd2lsbCByZW1haW4uXG4gIHZhciBkaWZmZXJlbmNlID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheSwgcmVzdCkge1xuICAgIHJlc3QgPSBmbGF0dGVuJDEocmVzdCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZpbHRlcihhcnJheSwgZnVuY3Rpb24odmFsdWUpe1xuICAgICAgcmV0dXJuICFjb250YWlucyhyZXN0LCB2YWx1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJldHVybiBhIHZlcnNpb24gb2YgdGhlIGFycmF5IHRoYXQgZG9lcyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIHZhbHVlKHMpLlxuICB2YXIgd2l0aG91dCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJyYXksIG90aGVyQXJyYXlzKSB7XG4gICAgcmV0dXJuIGRpZmZlcmVuY2UoYXJyYXksIG90aGVyQXJyYXlzKTtcbiAgfSk7XG5cbiAgLy8gUHJvZHVjZSBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgdGhlIGFycmF5LiBJZiB0aGUgYXJyYXkgaGFzIGFscmVhZHlcbiAgLy8gYmVlbiBzb3J0ZWQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgdXNpbmcgYSBmYXN0ZXIgYWxnb3JpdGhtLlxuICAvLyBUaGUgZmFzdGVyIGFsZ29yaXRobSB3aWxsIG5vdCB3b3JrIHdpdGggYW4gaXRlcmF0ZWUgaWYgdGhlIGl0ZXJhdGVlXG4gIC8vIGlzIG5vdCBhIG9uZS10by1vbmUgZnVuY3Rpb24sIHNvIHByb3ZpZGluZyBhbiBpdGVyYXRlZSB3aWxsIGRpc2FibGVcbiAgLy8gdGhlIGZhc3RlciBhbGdvcml0aG0uXG4gIGZ1bmN0aW9uIHVuaXEoYXJyYXksIGlzU29ydGVkLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmICghaXNCb29sZWFuKGlzU29ydGVkKSkge1xuICAgICAgY29udGV4dCA9IGl0ZXJhdGVlO1xuICAgICAgaXRlcmF0ZWUgPSBpc1NvcnRlZDtcbiAgICAgIGlzU29ydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVyYXRlZSAhPSBudWxsKSBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIgdmFsdWUgPSBhcnJheVtpXSxcbiAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUsIGksIGFycmF5KSA6IHZhbHVlO1xuICAgICAgaWYgKGlzU29ydGVkICYmICFpdGVyYXRlZSkge1xuICAgICAgICBpZiAoIWkgfHwgc2VlbiAhPT0gY29tcHV0ZWQpIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgfSBlbHNlIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGNvbXB1dGVkKSkge1xuICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjb250YWlucyhyZXN1bHQsIHZhbHVlKSkge1xuICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHVuaW9uOiBlYWNoIGRpc3RpbmN0IGVsZW1lbnQgZnJvbSBhbGwgb2ZcbiAgLy8gdGhlIHBhc3NlZC1pbiBhcnJheXMuXG4gIHZhciB1bmlvbiA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgcmV0dXJuIHVuaXEoZmxhdHRlbiQxKGFycmF5cywgdHJ1ZSwgdHJ1ZSkpO1xuICB9KTtcblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgZXZlcnkgaXRlbSBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlXG4gIC8vIHBhc3NlZC1pbiBhcnJheXMuXG4gIGZ1bmN0aW9uIGludGVyc2VjdGlvbihhcnJheSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBhcnJheVtpXTtcbiAgICAgIGlmIChjb250YWlucyhyZXN1bHQsIGl0ZW0pKSBjb250aW51ZTtcbiAgICAgIHZhciBqO1xuICAgICAgZm9yIChqID0gMTsgaiA8IGFyZ3NMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoIWNvbnRhaW5zKGFyZ3VtZW50c1tqXSwgaXRlbSkpIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGogPT09IGFyZ3NMZW5ndGgpIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQ29tcGxlbWVudCBvZiB6aXAuIFVuemlwIGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIGFuZCBncm91cHNcbiAgLy8gZWFjaCBhcnJheSdzIGVsZW1lbnRzIG9uIHNoYXJlZCBpbmRpY2VzLlxuICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSAmJiBtYXgoYXJyYXksIGdldExlbmd0aCkubGVuZ3RoIHx8IDA7XG4gICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gcGx1Y2soYXJyYXksIGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFppcCB0b2dldGhlciBtdWx0aXBsZSBsaXN0cyBpbnRvIGEgc2luZ2xlIGFycmF5IC0tIGVsZW1lbnRzIHRoYXQgc2hhcmVcbiAgLy8gYW4gaW5kZXggZ28gdG9nZXRoZXIuXG4gIHZhciB6aXAgPSByZXN0QXJndW1lbnRzKHVuemlwKTtcblxuICAvLyBDb252ZXJ0cyBsaXN0cyBpbnRvIG9iamVjdHMuIFBhc3MgZWl0aGVyIGEgc2luZ2xlIGFycmF5IG9mIGBba2V5LCB2YWx1ZV1gXG4gIC8vIHBhaXJzLCBvciB0d28gcGFyYWxsZWwgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCAtLSBvbmUgb2Yga2V5cywgYW5kIG9uZSBvZlxuICAvLyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMuIFBhc3NpbmcgYnkgcGFpcnMgaXMgdGhlIHJldmVyc2Ugb2YgYF8ucGFpcnNgLlxuICBmdW5jdGlvbiBvYmplY3QobGlzdCwgdmFsdWVzKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgobGlzdCk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICByZXN1bHRbbGlzdFtpXV0gPSB2YWx1ZXNbaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbbGlzdFtpXVswXV0gPSBsaXN0W2ldWzFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBBcnJheSBjb250YWluaW5nIGFuIGFyaXRobWV0aWMgcHJvZ3Jlc3Npb24uIEEgcG9ydCBvZlxuICAvLyB0aGUgbmF0aXZlIFB5dGhvbiBgcmFuZ2UoKWAgZnVuY3Rpb24uIFNlZVxuICAvLyBbdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI3JhbmdlKS5cbiAgZnVuY3Rpb24gcmFuZ2Uoc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICBpZiAoc3RvcCA9PSBudWxsKSB7XG4gICAgICBzdG9wID0gc3RhcnQgfHwgMDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgaWYgKCFzdGVwKSB7XG4gICAgICBzdGVwID0gc3RvcCA8IHN0YXJ0ID8gLTEgOiAxO1xuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkgLyBzdGVwKSwgMCk7XG4gICAgdmFyIHJhbmdlID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgaWR4KyssIHN0YXJ0ICs9IHN0ZXApIHtcbiAgICAgIHJhbmdlW2lkeF0gPSBzdGFydDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cblxuICAvLyBDaHVuayBhIHNpbmdsZSBhcnJheSBpbnRvIG11bHRpcGxlIGFycmF5cywgZWFjaCBjb250YWluaW5nIGBjb3VudGAgb3IgZmV3ZXJcbiAgLy8gaXRlbXMuXG4gIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBjb3VudCkge1xuICAgIGlmIChjb3VudCA9PSBudWxsIHx8IGNvdW50IDwgMSkgcmV0dXJuIFtdO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0LnB1c2goc2xpY2UuY2FsbChhcnJheSwgaSwgaSArPSBjb3VudCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIGNoYWluaW5nIGludGVybWVkaWF0ZSByZXN1bHRzLlxuICBmdW5jdGlvbiBjaGFpblJlc3VsdChpbnN0YW5jZSwgb2JqKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLl9jaGFpbiA/IF8kMShvYmopLmNoYWluKCkgOiBvYmo7XG4gIH1cblxuICAvLyBBZGQgeW91ciBvd24gY3VzdG9tIGZ1bmN0aW9ucyB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QuXG4gIGZ1bmN0aW9uIG1peGluKG9iaikge1xuICAgIGVhY2goZnVuY3Rpb25zKG9iaiksIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gXyQxW25hbWVdID0gb2JqW25hbWVdO1xuICAgICAgXyQxLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2Y
14938XIgYXJncyA9IFt0aGlzLl93cmFwcGVkXTtcbiAgICAgICAgcHVzaC5hcHBseShhcmdzLCBhcmd1bWVudHMpO1xuICAgICAgICByZXR1cm4gY2hhaW5SZXN1bHQodGhpcywgZnVuYy5hcHBseShfJDEsIGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIF8kMTtcbiAgfVxuXG4gIC8vIEFkZCBhbGwgbXV0YXRvciBgQXJyYXlgIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgZWFjaChbJ3BvcCcsICdwdXNoJywgJ3JldmVyc2UnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXyQxLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9iaiA9IHRoaXMuX3dyYXBwZWQ7XG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKChuYW1lID09PSAnc2hpZnQnIHx8IG5hbWUgPT09ICdzcGxpY2UnKSAmJiBvYmoubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIG9ialswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQWRkIGFsbCBhY2Nlc3NvciBgQXJyYXlgIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgZWFjaChbJ2NvbmNhdCcsICdqb2luJywgJ3NsaWNlJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14938XIgb2JqID0gdGhpcy5fd3JhcHBlZDtcbiAgICAgIGlmIChvYmogIT0gbnVsbCkgb2JqID0gbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjaGFpblJlc3VsdCh0aGlzLCBvYmopO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIE5hbWVkIEV4cG9ydHNcblxuICB2YXIgYWxsRXhwb3J0cyA9IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgVkVSU0lPTjogVkVSU0lPTixcbiAgICByZXN0QXJndW1lbnRzOiByZXN0QXJndW1lbnRzLFxuICAgIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgICBpc051bGw6IGlzTnVsbCxcbiAgICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXG4gICAgaXNCb29sZWFuOiBpc0Jvb2xlYW4sXG4gICAgaXNFbGVtZW50OiBpc0VsZW1lbnQsXG4gICAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICBpc0RhdGU6IGlzRGF0ZSxcbiAgICBpc1JlZ0V4cDogaXNSZWdFeHAsXG4gICAgaXNFcnJvcjogaXNFcnJvcixcbiAgICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gICAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgICBpc0RhdGFWaWV3OiBpc0RhdGFWaWV3JDEsXG4gICAgaXNBcnJheTogaXNBcnJheSxcbiAgICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uJDEsXG4gICAgaXNBcmd1bWVudHM6IGlzQXJndW1lbnRzJDEsXG4gICAgaXNGaW5pdGU6IGlzRmluaXRlJDEsXG4gICAgaXNOYU46IGlzTmFOJDEsXG4gICAgaXNUeXBlZEFycmF5OiBpc1R5cGVkQXJyYXkkMSxcbiAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgIGlzTWF0Y2g6IGlzTWF0Y2gsXG4gICAgaXNFcXVhbDogaXNFcXVhbCxcbiAgICBpc01hcDogaXNNYXAsXG4gICAgaXNXZWFrTWFwOiBpc1dlYWtNYXAsXG4gICAgaXNTZXQ6IGlzU2V0LFxuICAgIGlzV2Vha1NldDogaXNXZWFrU2V0LFxuICAgIGtleXM6IGtleXMsXG4gICAgYWxsS2V5czogYWxsS2V5cyxcbiAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICBwYWlyczogcGFpcnMsXG4gICAgaW52ZXJ0OiBpbnZlcnQsXG4gICAgZnVuY3Rpb25zOiBmdW5jdGlvbnMsXG4gICAgbWV0aG9kczogZnVuY3Rpb25zLFxuICAgIGV4dGVuZDogZXh0ZW5kLFxuICAgIGV4dGVuZE93bjogZXh0ZW5kT3duLFxuICAgIGFzc2lnbjogZXh0ZW5kT3duLFxuICAgIGRlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICBjcmVhdGU6IGNyZWF0ZSxcbiAgICBjbG9uZTogY2xvbmUsXG4gICAgdGFwOiB0YXAsXG4gICAgZ2V0OiBnZXQsXG4gICAgaGFzOiBoYXMsXG4gICAgbWFwT2JqZWN0OiBtYXBPYmplY3QsXG4gICAgaWRlbnRpdHk6IGlkZW50aXR5LFxuICAgIGNvbnN0YW50OiBjb25zdGFudCxcbiAgICBub29wOiBub29wLFxuICAgIHRvUGF0aDogdG9QYXRoJDEsXG4gICAgcHJvcGVydHk6IHByb3BlcnR5LFxuICAgIHByb3BlcnR5T2Y6IHByb3BlcnR5T2YsXG4gICAgbWF0Y2hlcjogbWF0Y2hlcixcbiAgICBtYXRjaGVzOiBtYXRjaGVyLFxuICAgIHRpbWVzOiB0aW1lcyxcbiAgICByYW5kb206IHJhbmRvbSxcbiAgICBub3c6IG5vdyxcbiAgICBlc2NhcGU6IF9lc2NhcGUsXG4gICAgdW5lc2NhcGU6IF91bmVzY2FwZSxcbiAgICB0ZW1wbGF0ZVNldHRpbmdzOiB0ZW1wbGF0ZVNldHRpbmdzLFxuICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICByZXN1bHQ6IHJlc3VsdCxcbiAgICB1bmlxdWVJZDogdW5pcXVlSWQsXG4gICAgY2hhaW46IGNoYWluLFxuICAgIGl0ZXJhdGVlOiBpdGVyYXRlZSxcbiAgICBwYXJ0aWFsOiBwYXJ0aWFsLFxuICAgIGJpbmQ6IGJpbmQsXG4gICAgYmluZEFsbDogYmluZEFsbCxcbiAgICBtZW1vaXplOiBtZW1vaXplLFxuICAgIGRlbGF5OiBkZWxheSxcbiAgICBkZWZlcjogZGVmZXIsXG4gICAgdGhyb3R0bGU6IHRocm90dGxlLFxuICAgIGRlYm91bmNlOiBkZWJvdW5jZSxcbiAgICB3cmFwOiB3cmFwLFxuICAgIG5lZ2F0ZTogbmVnYXRlLFxuICAgIGNvbXBvc2U6IGNvbXBvc2UsXG4gICAgYWZ0ZXI6IGFmdGVyLFxuICAgIGJlZm9yZTogYmVmb3JlLFxuICAgIG9uY2U6IG9uY2UsXG4gICAgZmluZEtleTogZmluZEtleSxcbiAgICBmaW5kSW5kZXg6IGZpbmRJbmRleCxcbiAgICBmaW5kTGFzdEluZGV4OiBmaW5kTGFzdEluZGV4LFxuICAgIHNvcnRlZEluZGV4OiBzb3J0ZWRJbmRleCxcbiAgICBpbmRleE9mOiBpbmRleE9mLFxuICAgIGxhc3RJbmRleE9mOiBsYXN0SW5kZXhPZixcbiAgICBmaW5kOiBmaW5kLFxuICAgIGRldGVjdDogZmluZCxcbiAgICBmaW5kV2hlcmU6IGZpbmRXaGVyZSxcbiAgICBlYWNoOiBlYWNoLFxuICAgIGZvckVhY2g6IGVhY2gsXG4gICAgbWFwOiBtYXAsXG4gICAgY29sbGVjdDogbWFwLFxuICAgIHJlZHVjZTogcmVkdWNlLFxuICAgIGZvbGRsOiByZWR1Y2UsXG4gICAgaW5qZWN0OiByZWR1Y2UsXG4gICAgcmVkdWNlUmlnaHQ6IHJlZHVjZVJpZ2h0LFxuICAgIGZvbGRyOiByZWR1Y2VSaWdodCxcbiAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICBzZWxlY3Q6IGZpbHRlcixcbiAgICByZWplY3Q6IHJlamVjdCxcbiAgICBldmVyeTogZXZlcnksXG4gICAgYWxsOiBldmVyeSxcbiAgICBzb21lOiBzb21lLFxuICAgIGFueTogc29tZSxcbiAgICBjb250YWluczogY29udGFpbnMsXG4gICAgaW5jbHVkZXM6IGNvbnRhaW5zLFxuICAgIGluY2x1ZGU6IGNvbnRhaW5zLFxuICAgIGludm9rZTogaW52b2tlLFxuICAgIHBsdWNrOiBwbHVjayxcbiAgICB3aGVyZTogd2hlcmUsXG4gICAgbWF4OiBtYXgsXG4gICAgbWluOiBtaW4sXG4gICAgc2h1ZmZsZTogc2h1ZmZsZSxcbiAgICBzYW1wbGU6IHNhbXBsZSxcbiAgICBzb3J0Qnk6IHNvcnRCeSxcbiAgICBncm91cEJ5OiBncm91cEJ5LFxuICAgIGluZGV4Qnk6IGluZGV4QnksXG4gICAgY291bnRCeTogY291bnRCeSxcbiAgICBwYXJ0aXRpb246IHBhcnRpdGlvbixcbiAgICB0b0FycmF5OiB0b0FycmF5LFxuICAgIHNpemU6IHNpemUsXG4gICAgcGljazogcGljayxcbiAgICBvbWl0OiBvbWl0LFxuICAgIGZpcnN0OiBmaXJzdCxcbiAgICBoZWFkOiBmaXJzdCxcbiAgICB0YWtlOiBmaXJzdCxcbiAgICBpbml0aWFsOiBpbml0aWFsLFxuICAgIGxhc3Q6IGxhc3QsXG4gICAgcmVzdDogcmVzdCxcbiAgICB0YWlsOiByZXN0LFxuICAgIGRyb3A6IHJlc3QsXG4gICAgY29tcGFjdDogY29tcGFjdCxcbiAgICBmbGF0dGVuOiBmbGF0dGVuLFxuICAgIHdpdGhvdXQ6IHdpdGhvdXQsXG4gICAgdW5pcTogdW5pcSxcbiAgICB1bmlxdWU6IHVuaXEsXG4gICAgdW5pb246IHVuaW9uLFxuICAgIGludGVyc2VjdGlvbj
14938ogaW50ZXJzZWN0aW9uLFxuICAgIGRpZmZlcmVuY2U6IGRpZmZlcmVuY2UsXG4gICAgdW56aXA6IHVuemlwLFxuICAgIHRyYW5zcG9zZTogdW56aXAsXG4gICAgemlwOiB6aXAsXG4gICAgb2JqZWN0OiBvYmplY3QsXG4gICAgcmFuZ2U6IHJhbmdlLFxuICAgIGNodW5rOiBjaHVuayxcbiAgICBtaXhpbjogbWl4aW4sXG4gICAgJ2RlZmF1bHQnOiBfJDFcbiAgfTtcblxuICAvLyBEZWZhdWx0IEV4cG9ydFxuXG4gIC8vIEFkZCBhbGwgb2YgdGhlIFVuZGVyc2NvcmUgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgdmFyIF8gPSBtaXhpbihhbGxFeHBvcnRzKTtcbiAgLy8gTGVnYWN5IE5vZGUuanMgQVBJLlxuICBfLl8gPSBfO1xuXG4gIHJldHVybiBfO1xuXG59KSkpO1xuXG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OTFibVJsY25OamIzSmxMM1Z1WkdWeWMyTnZjbVV0ZFcxa0xtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWlobWRXNWpkR2x2YmlBb1oyeHZZbUZzTENCbVlXTjBiM0o1S1NCN1hHNGdJSFI1Y0dWdlppQmxlSEJ2Y25SeklEMDlQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnYlc5a2RXeGxJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5QS9JRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdabUZqZEc5eWVTZ3BJRHBjYmlBZ2RIbHdaVzltSUdSbFptbHVaU0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUJrWldacGJtVXVZVzFrSUQ4Z1pHVm1hVzVsS0NkMWJtUmxjbk5qYjNKbEp5d2dabUZqZEc5eWVTa2dPbHh1SUNBb1oyeHZZbUZzSUQwZ2RIbHdaVzltSUdkc2IySmhiRlJvYVhNZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUQ4Z1oyeHZZbUZzVkdocGN5QTZJR2RzYjJKaGJDQjhmQ0J6Wld4bUxDQW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCamRYSnlaVzUwSUQwZ1oyeHZZbUZzTGw4N1hHNGdJQ0FnZG1GeUlHVjRjRzl5ZEhNZ1BTQm5iRzlpWVd3dVh5QTlJR1poWTNSdmNua29LVHRjYmlBZ0lDQmxlSEJ2Y25SekxtNXZRMjl1Wm14cFkzUWdQU0JtZFc1amRHbHZiaUFvS1NCN0lHZHNiMkpoYkM1ZklEMGdZM1Z5Y21WdWREc2djbVYwZFhKdUlHVjRjRzl5ZEhNN0lIMDdYRzRnSUgwb0tTa3BPMXh1ZlNoMGFHbHpMQ0FvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0F2THlBZ0lDQWdWVzVrWlhKelkyOXlaUzVxY3lBeExqRXpMakZjYmlBZ0x5OGdJQ0FnSUdoMGRIQnpPaTh2ZFc1a1pYSnpZMjl5WldwekxtOXlaMXh1SUNBdkx5QWdJQ0FnS0dNcElESXdNRGt0TWpBeU1TQktaWEpsYlhrZ1FYTm9hMlZ1WVhNc0lFcDFiR2xoYmlCSGIyNW5aM0pwYW5Bc0lHRnVaQ0JFYjJOMWJXVnVkRU5zYjNWa0lHRnVaQ0JKYm5abGMzUnBaMkYwYVhabElGSmxjRzl5ZEdWeWN5QW1JRVZrYVhSdmNuTmNiaUFnTHk4Z0lDQWdJRlZ1WkdWeWMyTnZjbVVnYldGNUlHSmxJR1p5WldWc2VTQmthWE4wY21saWRYUmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVdVhHNWNiaUFnTHk4Z1EzVnljbVZ1ZENCMlpYSnphVzl1TGx4dUlDQjJZWElnVmtWU1UwbFBUaUE5SUNjeExqRXpMakVuTzF4dVhHNGdJQzh2SUVWemRHRmliR2x6YUNCMGFHVWdjbTl2ZENCdlltcGxZM1FzSUdCM2FXNWtiM2RnSUNoZ2MyVnNabUFwSUdsdUlIUm9aU0JpY205M2MyVnlMQ0JnWjJ4dlltRnNZRnh1SUNBdkx5QnZiaUIwYUdVZ2MyVnlkbVZ5TENCdmNpQmdkR2hwYzJBZ2FXNGdjMjl0WlNCMmFYSjBkV0ZzSUcxaFkyaHBibVZ6TGlCWFpTQjFjMlVnWUhObGJHWmdYRzRnSUM4dklHbHVjM1JsWVdRZ2IyWWdZSGRwYm1SdmQyQWdabTl5SUdCWFpXSlhiM0pyWlhKZ0lITjFjSEJ2Y25RdVhHNGdJSFpoY2lCeWIyOTBJRDBnZEhsd1pXOW1JSE5sYkdZZ1BUMGdKMjlpYW1WamRDY2dKaVlnYzJWc1ppNXpaV3htSUQwOVBTQnpaV3htSUNZbUlITmxiR1lnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQm5iRzlpWVd3Z1BUMGdKMjlpYW1WamRDY2dKaVlnWjJ4dlltRnNMbWRzYjJKaGJDQTlQVDBnWjJ4dlltRnNJQ1ltSUdkc2IySmhiQ0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdSblZ1WTNScGIyNG9KM0psZEhWeWJpQjBhR2x6Snlrb0tTQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ2UzMDdYRzVjYmlBZ0x5OGdVMkYyWlNCaWVYUmxjeUJwYmlCMGFHVWdiV2x1YVdacFpXUWdLR0oxZENCdWIzUWdaM3BwY0hCbFpDa2dkbVZ5YzJsdmJqcGNiaUFnZG1GeUlFRnljbUY1VUhKdmRHOGdQU0JCY25KaGVTNXdjbTkwYjNSNWNHVXNJRTlpYWxCeWIzUnZJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaVHRjYmlBZ2RtRnlJRk41YldKdmJGQnliM1J2SUQwZ2RIbHdaVzltSUZONWJXSnZiQ0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJUZVcxaWIyd3VjSEp2ZEc5MGVYQmxJRG9nYm5Wc2JEdGNibHh1SUNBdkx5QkRjbVZoZEdVZ2NYVnBZMnNnY21WbVpYSmxibU5sSUhaaGNtbGhZbXhsY3lCbWIzSWdjM0JsWldRZ1lXTmpaWE56SUhSdklHTnZjbVVnY0hKdmRHOTBlWEJsY3k1Y2JpQWdkbUZ5SUhCMWMyZ2dQU0JCY25KaGVWQnliM1J2TG5CMWMyZ3NYRzRnSUNBZ0lDQnpiR2xqWlNBOUlFRnljbUY1VUhKdmRHOHVjMnhwWTJVc1hHNGdJQ0FnSUNCMGIxTjBjbWx1WnlBOUlFOWlhbEJ5YjNSdkxuUnZVM1J5YVc1bkxGeHVJQ0FnSUNBZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNCUFltcFFjbTkwYnk1b1lYTlBkMjVRY205d1pYSjBlVHRjYmx4dUlDQXZMeUJOYjJSbGNtNGdabVZoZEhWeVpTQmtaWFJsWTNScGIyNHVYRzRnSUhaaGNpQnpkWEJ3YjNKMGMwRnljbUY1UW5WbVptVnlJRDBnZEhsd1pXOW1JRUZ5Y21GNVFuVm1abVZ5SUNFOVBTQW5kVzVrWldacGJtVmtKeXhjYmlBZ0lDQWdJSE4xY0hCdmNuUnpSR0YwWVZacFpYY2dQU0IwZVhCbGIyWWdSR0YwWVZacFpYY2dJVDA5SUNkMWJtUmxabWx1WldRbk8xeHVYRzRnSUM4dklFRnNiQ0FxS2tWRFRVRlRZM0pwY0hRZ05Tc3FLaUJ1WVhScGRtVWdablZ1WTNScGIyNGdhVzF3YkdWd
14938FpXNTBZWFJwYjI1eklIUm9ZWFFnZDJVZ2FHOXdaU0IwYnlCMWMyVmNiaUFnTHk4Z1lYSmxJR1JsWTJ4aGNtVmtJR2hsY21VdVhHNGdJSFpoY2lCdVlYUnBkbVZKYzBGeWNtRjVJRDBnUVhKeVlYa3VhWE5CY25KaGVTeGNiaUFnSUNBZ0lHNWhkR2wyWlV0bGVYTWdQU0JQWW1wbFkzUXVhMlY1Y3l4Y2JpQWdJQ0FnSUc1aGRHbDJaVU55WldGMFpTQTlJRTlpYW1WamRDNWpjbVZoZEdVc1hHNGdJQ0FnSUNCdVlYUnBkbVZKYzFacFpYY2dQU0J6ZFhCd2IzSjBjMEZ5Y21GNVFuVm1abVZ5SUNZbUlFRnljbUY1UW5WbVptVnlMbWx6Vm1sbGR6dGNibHh1SUNBdkx5QkRjbVZoZEdVZ2NtVm1aWEpsYm1ObGN5QjBieUIwYUdWelpTQmlkV2xzZEdsdUlHWjFibU4wYVc5dWN5QmlaV05oZFhObElIZGxJRzkyWlhKeWFXUmxJSFJvWlcwdVhHNGdJSFpoY2lCZmFYTk9ZVTRnUFNCcGMwNWhUaXhjYmlBZ0lDQWdJRjlwYzBacGJtbDBaU0E5SUdselJtbHVhWFJsTzF4dVhHNGdJQzh2SUV0bGVYTWdhVzRnU1VVZ1BDQTVJSFJvWVhRZ2QyOXVKM1FnWW1VZ2FYUmxjbUYwWldRZ1lua2dZR1p2Y2lCclpYa2dhVzRnTGk0dVlDQmhibVFnZEdoMWN5QnRhWE56WldRdVhHNGdJSFpoY2lCb1lYTkZiblZ0UW5WbklEMGdJWHQwYjFOMGNtbHVaem9nYm5Wc2JIMHVjSEp2Y0dWeWRIbEpjMFZ1ZFcxbGNtRmliR1VvSjNSdlUzUnlhVzVuSnlrN1hHNGdJSFpoY2lCdWIyNUZiblZ0WlhKaFlteGxVSEp2Y0hNZ1BTQmJKM1poYkhWbFQyWW5MQ0FuYVhOUWNtOTBiM1I1Y0dWUFppY3NJQ2QwYjFOMGNtbHVaeWNzWEc0Z0lDQWdKM0J5YjNCbGNuUjVTWE5GYm5WdFpYSmhZbXhsSnl3Z0oyaGhjMDkzYmxCeWIzQmxjblI1Snl3Z0ozUnZURzlqWVd4bFUzUnlhVzVuSjEwN1hHNWNiaUFnTHk4Z1ZHaGxJR3hoY21kbGMzUWdhVzUwWldkbGNpQjBhR0YwSUdOaGJpQmlaU0J5WlhCeVpYTmxiblJsWkNCbGVHRmpkR3g1TGx4dUlDQjJZWElnVFVGWVgwRlNVa0ZaWDBsT1JFVllJRDBnVFdGMGFDNXdiM2NvTWl3Z05UTXBJQzBnTVR0Y2JseHVJQ0F2THlCVGIyMWxJR1oxYm1OMGFXOXVjeUIwWVd0bElHRWdkbUZ5YVdGaWJHVWdiblZ0WW1WeUlHOW1JR0Z5WjNWdFpXNTBjeXdnYjNJZ1lTQm1aWGNnWlhod1pXTjBaV1JjYmlBZ0x5OGdZWEpuZFcxbGJuUnpJR0YwSUhSb1pTQmlaV2RwYm01cGJtY2dZVzVrSUhSb1pXNGdZU0IyWVhKcFlXSnNaU0J1ZFcxaVpYSWdiMllnZG1Gc2RXVnpJSFJ2SUc5d1pYSmhkR1ZjYmlBZ0x5OGdiMjR1SUZSb2FYTWdhR1ZzY0dWeUlHRmpZM1Z0ZFd4aGRHVnpJR0ZzYkNCeVpXMWhhVzVwYm1jZ1lYSm5kVzFsYm5SeklIQmhjM1FnZEdobElHWjFibU4wYVc5dTRvQ1pjMXh1SUNBdkx5QmhjbWQxYldWdWRDQnNaVzVuZEdnZ0tHOXlJR0Z1SUdWNGNHeHBZMmwwSUdCemRHRnlkRWx1WkdWNFlDa3NJR2x1ZEc4Z1lXNGdZWEp5WVhrZ2RHaGhkQ0JpWldOdmJXVnpYRzRnSUM4dklIUm9aU0JzWVhOMElHRnlaM1Z0Wlc1MExpQlRhVzFwYkdGeUlIUnZJRVZUTnVLQW1YTWdYQ0p5WlhOMElIQmhjbUZ0WlhSbGNsd2lMbHh1SUNCbWRXNWpkR2x2YmlCeVpYTjBRWEpuZFcxbGJuUnpLR1oxYm1Nc0lITjBZWEowU1c1a1pYZ3BJSHRjYmlBZ0lDQnpkR0Z5ZEVsdVpHVjRJRDBnYzNSaGNuUkpibVJsZUNBOVBTQnVkV3hzSUQ4Z1puVnVZeTVzWlc1bmRHZ2dMU0F4SURvZ0szTjBZWEowU1c1a1pYZzdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR3hsYm1kMGFDQTlJRTFoZEdndWJXRjRLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0J6ZEdGeWRFbHVaR1Y0TENBd0tTeGNiaUFnSUNBZ0lDQWdJQ0J5WlhOMElEMGdRWEp5WVhrb2JHVnVaM1JvS1N4Y2JpQWdJQ0FnSUNBZ0lDQnBibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQm1iM0lnS0RzZ2FXNWtaWGdnUENCc1pXNW5kR2c3SUdsdVpHVjRLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2NtVnpkRnRwYm1SbGVGMGdQU0JoY21kMWJXVnVkSE5iYVc1a1pYZ2dLeUJ6ZEdGeWRFbHVaR1Y0WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhOM2FYUmphQ0FvYzNSaGNuUkpibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQmpZWE5sSURBNklISmxkSFZ5YmlCbWRXNWpMbU5oYkd3b2RHaHBjeXdnY21WemRDazdYRzRnSUNBZ0lDQWdJR05oYzJVZ01Ub2djbVYwZFhKdUlHWjFibU11WTJGc2JDaDBhR2x6TENCaGNtZDFiV1Z1ZEhOYk1GMHNJSEpsYzNRcE8xeHVJQ0FnSUNBZ0lDQmpZWE5sSURJNklISmxkSFZ5YmlCbWRXNWpMbU5oYkd3b2RHaHBjeXdnWVhKbmRXMWxiblJ6V3pCZExDQmhjbWQxYldWdWRITmJNVjBzSUhKbGMzUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUdGeVozTWdQU0JCY25KaGVTaHpkR0Z5ZEVsdVpHVjRJQ3NnTVNrN1hHNGdJQ0FnSUNCbWIzSWdLR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0J6ZEdGeWRFbHVaR1Y0T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNBZ0lHRnlaM05iYVc1a1pYaGRJRDBnWVhKbmRXMWxiblJ6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR0Z5WjNOYmMzUmhjblJKYm1SbGVGMGdQU0J5WlhOME8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaMWJtTXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmN5azdYRzRnSUNBZ2ZUdGNiaUFnZlZ4dVhHNGdJQzh2SUVseklHRWdaMmwyWlc0Z2RtRnlhV0ZpYkdVZ1lXNGdiMkpxWldOMFAxeHVJQ0JtZFc1amRHbHZiaUJwYzA5aWFtVmpkQ2h2WW1vcElIdGNiaUFnSUNCMllYSWdkSGx3WlNBOUlIUjVjR1Z2WmlCdlltbzdYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVWdQVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2dkSGx3WlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnSVNGdlltbzdYRzRnSUgxY2JseHVJQ0F2THlCSmN5QmhJR2RwZG1WdUlIWmhiSFZsSUdWeGRXRnNJSFJ2SUc1MWJHdy9YRzRnSUdaMWJtTjBhVzl1SUdselRuVnNiQ2h2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTRnYjJKcUlEMDlQU0J1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCMllYSnBZV0pzWlNCMWJtUmxabWx1WldRL1hHNGdJR1oxYm1OMGFXOXVJR2x6Vlc1a1pXWnBibVZrS0c5aWFpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdlltb2dQVDA5SUhadmFXUWdNRHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHpJR0VnWjJsMlpXNGdkbUZzZFdVZ1lTQmliMjlzWldGdVAxeHVJQ0JtZFc1amRHbHZiaUJwYzBKdmIyeGxZVzRvYjJKcUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc5aWF
14938pQTlQVDBnZEhKMVpTQjhmQ0J2WW1vZ1BUMDlJR1poYkhObElIeDhJSFJ2VTNSeWFXNW5MbU5oYkd3b2IySnFLU0E5UFQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbk8xeHVJQ0I5WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCMllXeDFaU0JoSUVSUFRTQmxiR1Z0Wlc1MFAxeHVJQ0JtZFc1amRHbHZiaUJwYzBWc1pXMWxiblFvYjJKcUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUNFaEtHOWlhaUFtSmlCdlltb3VibTlrWlZSNWNHVWdQVDA5SURFcE8xeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnWm5WdVkzUnBiMjRnWm05eUlHTnlaV0YwYVc1bklHRWdZSFJ2VTNSeWFXNW5ZQzFpWVhObFpDQjBlWEJsSUhSbGMzUmxjaTVjYmlBZ1puVnVZM1JwYjI0Z2RHRm5WR1Z6ZEdWeUtHNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2RHRm5JRDBnSjF0dlltcGxZM1FnSnlBcklHNWhiV1VnS3lBblhTYzdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c5aWFpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnZVM1J5YVc1bkxtTmhiR3dvYjJKcUtTQTlQVDBnZEdGbk8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQjJZWElnYVhOVGRISnBibWNnUFNCMFlXZFVaWE4wWlhJb0oxTjBjbWx1WnljcE8xeHVYRzRnSUhaaGNpQnBjMDUxYldKbGNpQTlJSFJoWjFSbGMzUmxjaWduVG5WdFltVnlKeWs3WEc1Y2JpQWdkbUZ5SUdselJHRjBaU0E5SUhSaFoxUmxjM1JsY2lnblJHRjBaU2NwTzF4dVhHNGdJSFpoY2lCcGMxSmxaMFY0Y0NBOUlIUmhaMVJsYzNSbGNpZ25VbVZuUlhod0p5azdYRzVjYmlBZ2RtRnlJR2x6UlhKeWIzSWdQU0IwWVdkVVpYTjBaWElvSjBWeWNtOXlKeWs3WEc1Y2JpQWdkbUZ5SUdselUzbHRZbTlzSUQwZ2RHRm5WR1Z6ZEdWeUtDZFRlVzFpYjJ3bktUdGNibHh1SUNCMllYSWdhWE5CY25KaG
14938VVSjFabVpsY2lBOUlIUmhaMVJsYzNSbGNpZ25RWEp5WVhsQ2RXWm1aWEluS1R0Y2JseHVJQ0IyWVhJZ2FYTkdkVzVqZEdsdmJpQTlJSFJoWjFSbGMzUmxjaWduUm5WdVkzUnBiMjRuS1R0Y2JseHVJQ0F2THlCUGNIUnBiV2w2WlNCZ2FYTkdkVzVqZEdsdmJtQWdhV1lnWVhCd2NtOXdjbWxoZEdVdUlGZHZjbXNnWVhKdmRXNWtJSE52YldVZ1lIUjVjR1Z2Wm1BZ1luVm5jeUJwYmlCdmJHUmNiaUFnTHk4Z2RqZ3NJRWxGSURFeElDZ2pNVFl5TVNrc0lGTmhabUZ5YVNBNElDZ2pNVGt5T1Nrc0lHRnVaQ0JRYUdGdWRHOXRTbE1nS0NNeU1qTTJLUzVjYmlBZ2RtRnlJRzV2WkdWc2FYTjBJRDBnY205dmRDNWtiMk4xYldWdWRDQW1KaUJ5YjI5MExtUnZZM1Z0Wlc1MExtTm9hV3hrVG05a1pYTTdYRzRnSUdsbUlDaDBlWEJsYjJZZ0x5NHZJQ0U5SUNkbWRXNWpkR2x2YmljZ0ppWWdkSGx3Wlc5bUlFbHVkRGhCY25KaGVTQWhQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnYm05a1pXeHBjM1FnSVQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lHbHpSblZ1WTNScGIyNGdQU0JtZFc1amRHbHZiaWh2WW1vcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnYjJKcUlEMDlJQ2RtZFc1amRHbHZiaWNnZkh3Z1ptRnNjMlU3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUhaaGNpQnBjMFoxYm1OMGFXOXVKREVnUFNCcGMwWjFibU4wYVc5dU8xeHVYRzRnSUhaaGNpQm9ZWE5QWW1wbFkzUlVZV2NnUFNCMFlXZFVaWE4wWlhJb0owOWlhbVZqZENjcE8xeHVYRzRnSUM4dklFbHVJRWxGSURFd0lDMGdSV1JuWlNBeE15d2dZRVJoZEdGV2FXVjNZQ0JvWVhNZ2MzUnlhVzVuSUhSaFp5QmdKMXR2WW1wbFkzUWdUMkpxWldOMFhTZGdMbHh1SUNBdkx5QkpiaUJKUlNBeE1Td2dkR2hsSUcxdmMzUWdZMjl0Ylc5dUlHRnRiMjVuSUhSb1pXMHNJSFJvYVhNZ2NISnZZbXhsYlNCaGJITnZJR0Z3Y0d4cFpYTWdkRzljYmlBZ0x5OGdZRTFoY0dBc0lHQlhaV0ZyVFdGd1lDQmhibVFnWUZObGRHQXVYRzRnSUhaaGNpQm9ZWE5UZEhKcGJtZFVZV2RDZFdjZ1BTQW9YRzRnSUNBZ0lDQWdJSE4xY0hCdmNuUnpSR0YwWVZacFpYY2dKaVlnYUdGelQySnFaV04wVkdGbktHNWxkeUJFWVhSaFZtbGxkeWh1WlhjZ1FYSnlZWGxDZFdabVpYSW9PQ2twS1Z4dUlDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUdselNVVXhNU0E5SUNoMGVYQmxiMllnVFdGd0lDRTlQU0FuZFc1a1pXWnBibVZrSnlBbUppQm9ZWE5QWW1wbFkzUlVZV2NvYm1WM0lFMWhjQ2twTzF4dVhHNGdJSFpoY2lCcGMwUmhkR0ZXYVdWM0lEMGdkR0ZuVkdWemRHVnlLQ2RFWVhSaFZtbGxkeWNwTzF4dVhHNGdJQzh2SUVsdUlFbEZJREV3SUMwZ1JXUm5aU0F4TXl3Z2QyVWdibVZsWkNCaElHUnBabVpsY21WdWRDQm9aWFZ5YVhOMGFXTmNiaUFnTHk4Z2RHOGdaR1YwWlhKdGFXNWxJSGRvWlhSb1pYSWdZVzRnYjJKcVpXTjBJR2x6SUdFZ1lFUmhkR0ZXYVdWM1lDNWNiaUFnWm5WdVkzUnBiMjRnYVdVeE1FbHpSR0YwWVZacFpYY29iMkpxS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHbHpSblZ1WTNScGIyNGtNU2h2WW1vdVoyVjBTVzUwT0NrZ0ppWWdhWE5CY25KaG
14938VVSjFabVpsY2lodlltb3VZblZtWm1WeUtUdGNiaUFnZlZ4dVhHNGdJSFpoY2lCcGMwUmhkR0ZXYVdWM0pERWdQU0FvYUdGelUzUnlhVzVuVkdGblFuVm5JRDhnYVdVeE1FbHpSR0YwWVZacFpYY2dPaUJwYzBSaGRHRldhV1YzS1R0Y2JseHVJQ0F2THlCSmN5QmhJR2RwZG1WdUlIWmhiSFZsSUdGdUlHRnljbUY1UDF4dUlDQXZMeUJFWld4bFoyRjBaWE1nZEc4Z1JVTk5RVFVuY3lCdVlYUnBkbVVnWUVGeWNtRjVMbWx6UVhKeVlYbGdMbHh1SUNCMllYSWdhWE5CY25KaGVTQTlJRzVoZEdsMlpVbHpRWEp5WVhrZ2ZId2dkR0ZuVkdWemRHVnlLQ2RCY25KaGVTY3BPMXh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJ2SUdOb1pXTnJJSGRvWlhSb1pYSWdZR3RsZVdBZ2FYTWdZVzRnYjNkdUlIQnliM0JsY25SNUlHNWhiV1VnYjJZZ1lHOWlhbUF1WEc0Z0lHWjFibU4wYVc5dUlHaGhjeVF4S0c5aWFpd2dhMlY1S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iMkpxTENCclpYa3BPMXh1SUNCOVhHNWNiaUFnZG1GeUlHbHpRWEpuZFcxbGJuUnpJRDBnZEdGblZHVnpkR1Z5S0NkQmNtZDFiV1Z1ZEhNbktUdGNibHh1SUNBdkx5QkVaV1pwYm1VZ1lTQm1ZV3hzWW1GamF5QjJaWEp6YVc5dUlHOW1JSFJvWlNCdFpYUm9iMlFnYVc0Z1luSnZkM05sY25NZ0tHRm9aVzBzSUVsRklEd2dPU2tzSUhkb1pYSmxYRzRnSUM4dklIUm9aWEpsSUdsemJpZDBJR0Z1ZVNCcGJuTndaV04wWVdKc1pTQmNJa0Z5WjNWdFpXNTBjMXdpSUhSNWNHVXVYRzRnSUNobWRXNWpkR2x2YmlncElIdGNiaUFnSUNCcFppQW9JV2x6UVhKbmRXMWxiblJ6S0dGeVozVnRaVzUwY3lrcElIdGNiaUFnSUNBZ0lHbHpRWEpuZFcxbGJuUnpJRDBnWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm9ZWE1rTVNodlltb3NJQ2RqWVd4c1pXVW5LVHRjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNCOUtDa3BPMXh1WEc0Z0lIWmhjaUJwYzBGeVozVnRaVzUwY3lReElEMGdhWE5CY21kMWJXVnVkSE03WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCdlltcGxZM1FnWVNCbWFXNXBkR1VnYm5WdFltVnlQMXh1SUNCbWRXNWpkR2x2YmlCcGMwWnBibWwwWlNReEtHOWlhaWtnZTF4dUlDQWdJSEpsZEhWeWJpQWhhWE5UZVcxaWIyd29iMkpxS1NBbUppQmZhWE5HYVc1cGRHVW9iMkpxS1NBbUppQWhhWE5PWVU0b2NHRnljMlZHYkc5aGRDaHZZbW9wS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx6SUhSb1pTQm5hWFpsYmlCMllXeDFaU0JnVG1GT1lEOWNiaUFnWm5WdVkzUnBiMjRnYVhOT1lVNGtNU2h2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTRnYVhOT2RXMWlaWElvYjJKcUtTQW1KaUJmYVhOT1lVNG9iMkpxS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRkJ5WldScFkyRjBaUzFuWlc1bGNtRjBhVzVuSUdaMWJtTjBhVzl1TGlCUFpuUmxiaUIxYzJWbWRXd2diM1YwYzJsa1pTQnZaaUJWYm1SbGNuTmpiM0psTGx4dUlDQm1kVzVqZEdsdmJpQmpiMjV6ZEdGdWRDaDJZV3gxWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpUdGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnUTI5dGJXOXVJR2x1ZEdWeWJtRnNJR3h2WjJsaklHWnZjaUJnYVhOQmNuSmhlVXhwYTJWZ0lHRnVaQ0JnYVhOQ2RXWm1aWEpNYVd0bFlDNWNiaUFnWm5WdVkzUnBiMjRnWTNKbFlYUmxVMmw2WlZCeWIzQmxjblI1UTJobFkyc29aMlYwVTJsNlpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0dOdmJHeGxZM1JwYjI0cElIdGNiaUFnSUNBZ0lIWmhjaUJ6YVhwbFVISnZjR1Z5ZEhrZ1BTQm5aWFJUYVhwbFVISnZjR1Z5ZEhrb1kyOXNiR1ZqZEdsdmJpazdYRzRnSUNBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhOcGVtVlFjbTl3WlhKMGVTQTlQU0FuYm5WdFltVnlKeUFtSmlCemFYcGxVSEp2Y0dWeWRIa2dQajBnTUNBbUppQnphWHBsVUhKdmNHVnlkSGtnUEQwZ1RVRllYMEZTVWtGWlgwbE9SRVZZTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCMGJ5Qm5aVzVsY21GMFpTQmhJR1oxYm1OMGFXOXVJSFJ2SUc5aWRHRnBiaUJ3Y205d1pYSjBlU0JnYTJWNVlDQm1jbTl0SUdCdlltcGdMbHh1SUNCbWRXNWpkR2x2YmlCemFHRnNiRzkzVUhKdmNHVnlkSGtvYTJWNUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c5aWFpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhaUE5UFNCdWRXeHNJRDhnZG05cFpDQXdJRG9nYjJKcVcydGxlVjA3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCMGJ5QnZZblJoYVc0Z2RHaGxJR0JpZVhSbFRHVnVaM1JvWUNCd2NtOXdaWEowZVNCdlppQmhiaUJ2WW1wbFkzUXVYRzRnSUhaaGNpQm5aWFJDZVhSbFRHVnVaM1JvSUQwZ2MyaGhiR3h2ZDFCeWIzQmxjblI1S0NkaWVYUmxUR1Z1WjNSb0p5azdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJR1JsZEdWeWJXbHVaU0IzYUdWMGFHVnlJSGRsSUhOb2IzVnNaQ0J6Y0dWdVpDQmxlSFJsYm5OcGRtVWdZMmhsWTJ0eklHRm5ZV2x1YzNSY2JpQWdMeThnWUVGeWNtRjVRblZtWm1WeVlDQmxkQ0JoYkM1Y2JpQWdkbUZ5SUdselFuVm1abVZ5VEdsclpTQTlJR055WldGMFpWTnBlbVZRY205d1pYSjBlVU5vWldOcktHZGxkRUo1ZEdWTVpXNW5kR2dwTzF4dVhHNGdJQzh2SUVseklHRWdaMmwyWlc0Z2RtRnNkV1VnWVNCMGVYQmxaQ0JoY25KaGVUOWNiaUFnZG1GeUlIUjVjR1ZrUVhKeVlYbFFZWFIwWlhKdUlEMGdMMXhjVzI5aWFtVmpkQ0FvS0VsOFZXa3BiblFvT0h3eE5ud3pNaWw4Um14dllYUW9Neko4TmpRcGZGVnBiblE0UTJ4aGJYQmxaSHhDYVdjb1NYeFZhU2x1ZERZMEtVRnljbUY1WEZ4ZEx6dGNiaUFnWm5WdVkzUnBiMjRnYVhOVWVYQmxaRUZ5Y21GNUtHOWlhaWtnZTF4dUlDQWdJQzh2SUdCQmNuSmhlVUoxWm1abGNpNXBjMVpwWlhkZ0lHbHpJSFJvWlNCdGIzTjBJR1oxZEhWeVpTMXdjbTl2Wml3Z2MyOGdkWE5sSUdsMElIZG9aVzRnWVhaaGFXeGhZbXhsTGx4dUlDQWdJQzh2SUU5MGFHVnlkMmx6WlN3Z1ptRnNiQ0JpWVdOcklHOXVJSFJvWlNCaFltOTJaU0J5WldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjR1WEc0Z0lDQWdjbVYwZFhKdUlHNWhkR2wyWlVselZtbGxkeUEvSUNodVlYUnBkbVZKYzFacFpYY29iMkpxS1NBbUppQWhhWE5FWVhSaFZtbGxkeVF4S0c5aWF
14938pa3BJRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdselFuVm1abVZ5VEdsclpTaHZZbW9wSUNZbUlIUjVjR1ZrUVhKeVlYbFFZWFIwWlhKdUxuUmxjM1FvZEc5VGRISnBibWN1WTJGc2JDaHZZbW9wS1R0Y2JpQWdmVnh1WEc0Z0lIWmhjaUJwYzFSNWNHVmtRWEp5WVhra01TQTlJSE4xY0hCdmNuUnpRWEp5WVhsQ2RXWm1aWElnUHlCcGMxUjVjR1ZrUVhKeVlYa2dPaUJqYjI1emRHRnVkQ2htWVd4elpTazdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJRzlpZEdGcGJpQjBhR1VnWUd4bGJtZDBhR0FnY0hKdmNHVnlkSGtnYjJZZ1lXNGdiMkpxWldOMExseHVJQ0IyWVhJZ1oyVjBUR1Z1WjNSb0lEMGdjMmhoYkd4dmQxQnliM0JsY25SNUtDZHNaVzVuZEdnbktUdGNibHh1SUNBdkx5QkpiblJsY201aGJDQm9aV3h3WlhJZ2RHOGdZM0psWVhSbElHRWdjMmx0Y0d4bElHeHZiMnQxY0NCemRISjFZM1IxY21VdVhHNGdJQzh2SUdCamIyeHNaV04wVG05dVJXNTFiVkJ5YjNCellDQjFjMlZrSUhSdklHUmxjR1Z1WkNCdmJpQmdYeTVqYjI1MFlXbHVjMkFzSUdKMWRDQjBhR2x6SUd4bFpDQjBiMXh1SUNBdkx5QmphWEpqZFd4aGNpQnBiWEJ2Y25SekxpQmdaVzExYkdGMFpXUlRaWFJnSUdseklHRWdiMjVsTFc5bVppQnpiMngxZEdsdmJpQjBhR0YwSUc5dWJIa2dkMjl5YTNNZ1ptOXlYRzRnSUM4dklHRnljbUY1Y3lCdlppQnpkSEpwYm1kekxseHVJQ0JtZFc1amRHbHZiaUJsYlhWc1lYUmxaRk5sZENoclpYbHpLU0I3WEc0Z0lDQWdkbUZ5SUdoaGMyZ2dQU0I3ZlR0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJzSUQwZ2EyVjVjeTVzWlc1bmRHZ3NJR2tnUFNBd095QnBJRHdnYkRzZ0t5dHBLU0JvWVhOb1cydGxlWE5iYVYxZElEMGdkSEoxWlR0Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdZMjl1ZEdGcGJuTTZJR1oxYm1OMGFXOXVLR3RsZVNrZ2V5QnlaWFIxY200Z2FHRnphRnRyWlhsZE95QjlMRnh1SUNBZ0lDQWdjSFZ6YURvZ1puVnVZM1JwYjI0b2EyVjVLU0I3WEc0Z0lDQWdJQ0FnSUdoaGMyaGJhMlY1WFNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJyWlhsekxuQjFjMmdvYTJWNUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnYUdWc2NHVnlMaUJEYUdWamEzTWdZR3RsZVhOZ0lHWnZjaUIwYUdVZ2NISmxjMlZ1WTJVZ2IyWWdhMlY1Y3lCcGJpQkpSU0E4SURrZ2RHaGhkQ0IzYjI0bmRGeHVJQ0F2THlCaVpTQnBkR1Z5WVhSbFpDQmllU0JnWm05eUlHdGxlU0JwYmlBdUxpNWdJR0Z1WkNCMGFIVnpJRzFwYzNObFpDNGdSWGgwWlc1a2N5QmdhMlY1YzJBZ2FXNGdjR3hoWTJVZ2FXWmNiaUFnTHk4Z2JtVmxaR1ZrTGx4dUlDQm1kVzVqZEdsdmJpQmpiMnhzWldOMFRtOXVSVzUxYlZCeWIzQnpLRzlpYWl3Z2EyVjVjeWtnZTF4dUlDQWdJR3RsZVhNZ1BTQmxiWFZzWVhSbFpGTmxkQ2hyWlhsektUdGNiaUFnSUNCMllYSWdibTl1Ulc1MWJVbGtlQ0E5SUc1dmJrVnVkVzFsY21GaWJHVlFjbTl3Y3k1c1pXNW5kR2c3WEc0Z0lDQWdkbUZ5SUdOdmJuTjBjblZqZEc5eUlEMGdiMkpxTG1OdmJuTjBjblZqZEc5eU8xeHVJQ0FnSUhaaGNpQndjbTkwYnlBOUlHbHpSblZ1WTNScGIyNGtNU2hqYjI1emRISjFZM1J2Y2lrZ0ppWWdZMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsSUh4OElFOWlhbEJ5YjNSdk8xeHVYRzRnSUNBZ0x5OGdRMjl1YzNSeWRXTjBiM0lnYVhNZ1lTQnpjR1ZqYVdGc0lHTmhjMlV1WEc0Z0lDQWdkbUZ5SUhCeWIzQWdQU0FuWTI5dWMzUnlkV04wYjNJbk8xeHVJQ0FnSUdsbUlDaG9ZWE1rTVNodlltb3NJSEJ5YjNBcElDWW1JQ0ZyWlhsekxtTnZiblJoYVc1ektIQnliM0FwS1NCclpYbHpMbkIxYzJnb2NISnZjQ2s3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9ibTl1Ulc1MWJVbGtlQzB0S1NCN1hHNGdJQ0FnSUNCd2NtOXdJRDBnYm05dVJXNTFiV1Z5WVdKc1pWQnliM0J6VzI1dmJrVnVkVzFKWkhoZE8xeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNBZ2FXNGdiMkpxSUNZbUlHOWlhbHR3Y205d1hTQWhQVDBnY0hKdmRHOWJjSEp2Y0YwZ0ppWWdJV3RsZVhNdVkyOXVkR0ZwYm5Nb2NISnZjQ2twSUh0Y2JpQWdJQ0FnSUNBZ2EyVjVjeTV3ZFhOb0tIQnliM0FwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSEpwWlhabElIUm9aU0J1WVcxbGN5QnZaaUJoYmlCdlltcGxZM1FuY3lCdmQyNGdjSEp2Y0dWeWRHbGxjeTVjYmlBZ0x5OGdSR1ZzWldkaGRHVnpJSFJ2SUNvcVJVTk5RVk5qY21sd2RDQTFLaW9uY3lCdVlYUnBkbVVnWUU5aWFtVmpkQzVyWlhsellDNWNiaUFnWm5WdVkzUnBiMjRnYTJWNWN5aHZZbW9wSUh0Y2JpQWdJQ0JwWmlBb0lXbHpUMkpxWldOMEtHOWlhaWtwSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0JwWmlBb2JtRjBhWFpsUzJWNWN5a2djbVYwZFhKdUlHNWhkR2wyWlV0bGVYTW9iMkpxS1R0Y2JpQWdJQ0IyWVhJZ2EyVjVjeUE5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJ2WW1vcElHbG1JQ2hvWVhNa01TaHZZbW9zSUd0bGVTa3BJR3RsZVhNdWNIVnphQ2hyWlhrcE8xeHVJQ0FnSUM4dklFRm9aVzBzSUVsRklEd2dPUzVjYmlBZ0lDQnBaaUFvYUdGelJXNTFiVUoxWnlrZ1kyOXNiR1ZqZEU1dmJrVnVkVzFRY205d2N5aHZZbW9zSUd0bGVYTXBPMXh1SUNBZ0lISmxkSFZ5YmlCclpYbHpPMXh1SUNCOVhHNWNiaUFnTHk4Z1NYTWdZU0JuYVhabGJpQmhjbkpoZVN3Z2MzUnlhVzVuTENCdmNpQnZZbXBsWTNRZ1pXMXdkSGsvWEc0Z0lDOHZJRUZ1SUZ3aVpXMXdkSGxjSWlCdlltcGxZM1FnYUdGeklHNXZJR1Z1ZFcxbGNtRmliR1VnYjNkdUxYQnliM0JsY25ScFpYTXVYRzRnSUdaMWJtTjBhVzl1SUdselJXMXdkSGtvYjJKcUtTQjdYRzRnSUNBZ2FXWWdLRzlpYWlBOVBTQnVkV3hzS1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBdkx5QlRhMmx3SUhSb1pTQnRiM0psSUdWNGNHVnVjMmwyWlNCZ2RHOVRkSEpwYm1kZ0xXSmhjMlZrSUhSNWNHVWdZMmhsWTJ0eklHbG1JR0J2WW1wZ0lHaGhjeUJ1YjF4dUlDQWdJQzh2SUdBdWJHVnVaM1JvWUM1Y2JpQWdJQ0IyWVhJZ2JHVnVaM1JvSUQwZ1oyVjBUR1Z1WjNSb0tHOWlhaWs3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJzWlc1bmRHZ2dQVDBnSjI1MWJXSmxjaWNnSmlZZ0tGeHVJQ0FnSUNBZ2FYTkJjbkpoZVNodlltb3BJSHg4SUdselUzUnlhVzVuS0c5aWFpa2dmSHdnYVhOQmNtZDFiV1Z1ZEhNa01TaHZZbW9wWEc0Z0lDQWdLU2tnY21WMGRYSnVJR3hsYm1kMGFDQTlQVDBnTUR0Y2JpQWdJQ0J5WlhSMWNtNGdaMlYwVEdWdVozUm9LR3RsZVhNb2IySnFLU2tnUFQwOUlEQTdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUhkb1pYUm9aWElnWVc0Z2IySnFaV04wSUdoaGN5QmhJR2RwZG1WdUlITmxkQ0J2WmlCZ2EyVjVPblpoYkhWbFlDQndZV2x5Y3k1Y2JpQWdablZ1WTNScGIyNGdhWE5OWVhSamFDaHZZbXBsWTNRc0lHRjBkSEp6S1NCN1hHNGdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWhoZEhSeWN5a3NJR3hsYm1kMGFDQTlJRjlyWlhsekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2IySnFaV04wSUQwOUlHNTFiR3dwSUhKbGRIVnliaUFoYkdWdVozUm9PMXh1SUNBZ0lIWmhjaUJ2WW1vZ1BTQlBZbXBsWTNRb2IySnFaV04wS1R0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnYTJWNUlEMGdYMnRsZVhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvWVhSMGNuTmJhMlY1WFNBaFBUMGdiMkpxVzJ0bGVWMGdmSHdnSVNoclpYa2dhVzRnYjJKcUtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbG1JRlZ1WkdWeWMyTnZjbVVnYVhNZ1kyRnNiR1ZrSUdGeklHRWdablZ1WTNScGIyNHNJR2wwSUhKbGRIVnlibk1nWVNCM2NtRndjR1ZrSUc5aWFtVmpkQ0IwYUdGMElHTmhibHh1SUNBdkx5QmlaU0IxYzJWa0lFOVBMWE4wZVd4bExpQlVhR2x6SUhkeVlYQndaWElnYUc5c1pITWdZV3gwWlhKbFpDQjJaWEp6YVc5dWN5QnZaaUJoYkd3Z1puVnVZM1JwYjI1eklHRmtaR1ZrWEc0Z0lDOHZJSFJvY205MVoyZ2dZRjh1YldsNGFXNWdMaUJYY21Gd2NHVmtJRzlpYW1WamRITWdiV0Y1SUdKbElHTm9ZV2x1WldRdVhHNGdJR1oxYm1OMGFXOXVJRjhrTVNodlltb3BJSHRjYmlBZ0lDQnBaaUFvYjJKcUlHbHVjM1JoYm1ObGIyWWdYeVF4S1NCeVpYUjFjbTRnYjJKcU8xeHVJQ0FnSUdsbUlDZ2hLSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQmZKREVwS1NCeVpYUjFjbTRnYm1WM0lGOGtNU2h2WW1vcE8xeHVJQ0FnSUhSb2FYTXVYM2R5WVhCd1pXUWdQU0J2WW1vN1hHNGdJSDFjYmx4dUlDQmZKREV1VmtWU1UwbFBUaUE5SUZaRlVsTkpUMDQ3WEc1Y2JpQWdMeThnUlhoMGNtRmpkSE1nZEdobElISmxjM1ZzZENCbWNtOXRJR0VnZDNKaGNIQmxaQ0JoYm1RZ1kyaGhhVzVsWkNCdlltcGxZM1F1WEc0Z0lGOGtNUzV3Y205MGIzUjVjR1V1ZG1Gc2RXVWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmQzSmhjSEJsWkR0Y2JpQWdmVHRjYmx4dUlDQXZMeUJRY205MmFXUmxJSFZ1ZDNKaGNIQnBibWNnY0hKdmVHbGxjeUJtYjNJZ2MyOXRaU0J0WlhSb2IyUnpJSFZ6WldRZ2FXNGdaVzVuYVc1bElHOXdaWEpoZEdsdmJuTmNiaUFnTHk4Z2MzVmphQ0JoY3lCaGNtbDBhRzFsZEdsaklHRnVaQ0JLVTA5T0lITjBjbWx1WjJsbWFXTmhkR2x2Ymk1Y2JpQWdYeVF4TG5CeWIzUnZkSGx3WlM1Mll
14938XeDFaVTltSUQwZ1h5UXhMbkJ5YjNSdmRIbHdaUzUwYjBwVFQwNGdQU0JmSkRFdWNISnZkRzkwZVhCbExuWmhiSFZsTzF4dVhHNGdJRjhrTVM1d2NtOTBiM1I1Y0dVdWRHOVRkSEpwYm1jZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1UzUnlhVzVuS0hSb2FYTXVYM2R5WVhCd1pXUXBPMXh1SUNCOU8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHWjFibU4wYVc5dUlIUnZJSGR5WVhBZ2IzSWdjMmhoYkd4dmR5MWpiM0I1SUdGdUlFRnljbUY1UW5WbVptVnlMRnh1SUNBdkx5QjBlWEJsWkNCaGNuSmhlU0J2Y2lCRVlYUmhWbWxsZHlCMGJ5QmhJRzVsZHlCMmFXVjNMQ0J5WlhWemFXNW5JSFJvWlNCaWRXWm1aWEl1WEc0Z0lHWjFibU4wYVc5dUlIUnZRblZtWm1WeVZtbGxkeWhpZFdabVpYSlRiM1Z5WTJVcElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGVnBiblE0UVhKeVlYa29YRzRnSUNBZ0lDQmlkV1ptWlhKVGIzVnlZMlV1WW5WbVptVnlJSHg4SUdKMVptWmxjbE52ZFhKalpTeGNiaUFnSUNBZ0lHSjFabVpsY2xOdmRYSmpaUzVpZVhSbFQyWm1jMlYwSUh4OElEQXNYRzRnSUNBZ0lDQm5aWFJDZVhSbFRHVnVaM1JvS0dKMVptWmxjbE52ZFhKalpTbGNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdMeThnVjJVZ2RYTmxJSFJvYVhNZ2MzUnlhVzVuSUhSM2FXTmxMQ0J6YnlCbmFYWmxJR2wwSUdFZ2JtRnRaU0JtYjNJZ2JXbHVhV1pwWTJGMGFXOXVMbHh1SUNCMllYSWdkR0ZuUkdGMFlWWnBaWGNnUFNBblcyOWlhbVZqZENCRVlYUmhWbWxsZDEwbk8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lISmxZM1Z5YzJsMlpTQmpiMjF3WVhKcGMyOXVJR1oxYm1OMGFXOXVJR1p2Y2lCZ1h5NXBjMFZ4ZFdGc1lDNWNiaUFnWm5WdVkzUnBiMjRnWlhFb1lTd2dZaXdnWVZOMFlXTnJMQ0JpVTNSaFkyc3BJSHRjYmlBZ0lDQXZMeUJKWkdWdWRHbGpZV3dnYjJKcVpXTjBjeUJoY21VZ1pYRjFZV3d1SUdBd0lEMDlQU0F0TUdBc0lHSjFkQ0IwYUdWNUlHRnlaVzRuZENCcFpHVnVkR2xqWVd3dVhHNGdJQ0FnTHk4Z1UyVmxJSFJvWlNCYlNHRnliVzl1ZVNCZ1pXZGhiR0FnY0hKdmNHOXpZV3hkS0doMGRIQnpPaTh2ZDJscmFTNWxZMjFoYzJOeWFYQjBMbTl5Wnk5a2IydDFMbkJvY0Q5cFpEMW9ZWEp0YjI1NU9tVm5ZV3dwTGx4dUlDQWdJR2xtSUNoaElEMDlQU0JpS1NCeVpYUjFjbTRnWVNBaFBUMGdNQ0I4ZkNBeElDOGdZU0E5UFQwZ01TQXZJR0k3WEc0Z0lDQWdMeThnWUc1MWJHeGdJRzl5SUdCMWJtUmxabWx1WldSZ0lHOXViSGtnWlhGMVlXd2dkRzhnYVhSelpXeG1JQ2h6ZEhKcFkzUWdZMjl0Y0dGeWFYTnZiaWt1WEc0Z0lDQWdhV1lnS0dFZ1BUMGdiblZzYkNCOGZDQmlJRDA5SUc1MWJHd3BJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0F2THlCZ1RtRk9ZSE1nWVhKbElHVnhkV2wyWVd4bGJuUXNJR0oxZENCdWIyNHRjbVZtYkdWNGFYWmxMbHh1SUNBZ0lHbG1JQ2hoSUNFOVBTQmhLU0J5WlhSMWNtNGdZaUFoUFQwZ1lqdGNiaUFnSUNBdkx5QkZlR2hoZFhOMElIQnlhVzFwZEdsMlpTQmphR1ZqYTNOY2JpQWdJQ0IyWVhJZ2RIbHdaU0E5SUhSNWNHVnZaaUJoTzF4dUlDQWdJR2xtSUNoMGVYQmxJQ0U5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dVZ0lUMDlJQ2R2WW1wbFkzUW5JQ1ltSUhSNWNHVnZaaUJpSUNFOUlDZHZZbXBsWTNRbktTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdjbVYwZFhKdUlHUmxaWEJGY1NoaExDQmlMQ0JoVTNSaFkyc3NJR0pUZEdGamF5azdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCeVpXTjFjbk5wZG1VZ1kyOXRjR0Z5YVhOdmJpQm1kVzVqZEdsdmJpQm1iM0lnWUY4dWFYTkZjWFZoYkdBdVhHNGdJR1oxYm1OMGFXOXVJR1JsWlhCRmNTaGhMQ0JpTENCaFUzUmhZMnNzSUdKVGRHRmpheWtnZTF4dUlDQWdJQzh2SUZWdWQzSmhjQ0JoYm5rZ2QzSmhjSEJsWkNCdlltcGxZM1J6TGx4dUlDQWdJR2xtSUNoaElHbHVjM1JoYm1ObGIyWWdYeVF4S1NCaElEMGdZUzVmZDNKaGNIQmxaRHRjYmlBZ0lDQnBaaUFvWWlCcGJuTjBZVzVqWlc5bUlGOGtNU2tnWWlBOUlHSXVYM2R5WVhCd1pXUTdYRzRnSUNBZ0x5OGdRMjl0Y0dGeVpTQmdXMXREYkdGemMxMWRZQ0J1WVcxbGN5NWNiaUFnSUNCMllYSWdZMnhoYzNOT1lXMWxJRDBnZEc5VGRISnBibWN1WTJGc2JDaGhLVHRjYmlBZ0lDQnBaaUFvWTJ4aGMzTk9ZVzFsSUNFOVBTQjBiMU4wY21sdVp5NWpZV3hzS0dJcEtTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdMeThnVjI5eWF5QmhjbTkxYm1RZ1lTQmlkV2NnYVc0Z1NVVWdNVEFnTFNCRlpHZGxJREV6TGx4dUlDQWdJR2xtSUNob1lYTlRkSEpwYm1kVVlXZENkV2NnSmlZZ1kyeGhjM05PWVcxbElEMDlJQ2RiYjJKcVpXTjBJRTlpYW1WamRGMG5JQ1ltSUdselJHRjBZVlpwWlhja01TaGhLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBjMFJoZEdGV2FXVjNKREVvWWlrcElISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJR05zWVhOelRtRnRaU0E5SUhSaFowUmhkR0ZXYVdWM08xeHVJQ0FnSUgxY2JpQWdJQ0J6ZDJsMFkyZ2dLR05zWVhOelRtRnRaU2tnZTF4dUlDQWdJQ0FnTHk4Z1ZHaGxjMlVnZEhsd1pYTWdZWEpsSUdOdmJYQmhjbVZrSUdKNUlIWmhiSFZsTGx4dUlDQWdJQ0FnWTJGelpTQW5XMjlpYW1WamRDQlNaV2RGZUhCZEp6cGNiaUFnSUNBZ0lDQWdMeThnVW1WblJYaHdjeUJoY21VZ1kyOWxjbU5sWkNCMGJ5QnpkSEpwYm1keklHWnZjaUJqYjIxd1lYSnBjMjl1SUNoT2IzUmxPaUFuSnlBcklDOWhMMmtnUFQwOUlDY3ZZUzlwSnlsY2JpQWdJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdVM1J5YVc1blhTYzZYRzRnSUNBZ0lDQWdJQzh2SUZCeWFXMXBkR2wyWlhNZ1lXNWtJSFJvWldseUlHTnZjbkpsYzNCdmJtUnBibWNnYjJKcVpXTjBJSGR5WVhCd1pYSnpJR0Z5WlNCbGNYVnBkbUZzWlc1ME95QjBhSFZ6TENCZ1hDSTFYQ0pnSUdselhHNGdJQ0FnSUNBZ0lDOHZJR1Z4ZFdsMllXeGxiblFnZEc4Z1lHNWxkeUJUZEhKcGJtY29YQ0kxWENJcFlDNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDY25JQ3NnWVNBOVBUMGdKeWNnS3lCaU8xeHVJQ0FnSUNBZ1kyRnpaU0FuVzI5aWFtVmpkQ0JPZFcxaVpYSmRKenBjYmlBZ0lDQWdJQ0FnTHk4Z1lFNWhUbUJ6SUdGeVpTQmxjWFZwZG1Gc1pXNTBMQ0JpZFhRZ2JtOXVMWEpsWm14bGVHbDJaUzVjYmlBZ0lDQWdJQ0FnTHk4Z1QySnFaV04wS0U1aFRpa2dhWE1nWlhGMWFYWmhiR1Z1ZENCMGJ5Qk9ZVTR1WEc0Z0lDQWdJQ0FnSUdsbUlDZ3JZU0FoUFQwZ0syRXBJSEpsZEhWeWJpQXJZaUFoUFQwZ0sySTdYRzRnSUNBZ0lDQWdJQzh2SUVGdUlHQmxaMkZzWUNCamIyMXdZWEpwYzI5dUlHbHpJSEJ
14938sY21admNtMWxaQ0JtYjNJZ2IzUm9aWElnYm5WdFpYSnBZeUIyWVd4MVpYTXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXJZU0E5UFQwZ01DQS9JREVnTHlBcllTQTlQVDBnTVNBdklHSWdPaUFyWVNBOVBUMGdLMkk3WEc0Z0lDQWdJQ0JqWVhObElDZGJiMkpxWldOMElFUmhkR1ZkSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdRbTl2YkdWaGJsMG5PbHh1SUNBZ0lDQWdJQ0F2THlCRGIyVnlZMlVnWkdGMFpYTWdZVzVrSUdKdmIyeGxZVzV6SUhSdklHNTFiV1Z5YVdNZ2NISnBiV2wwYVhabElIWmhiSFZsY3k0Z1JHRjBaWE1nWVhKbElHTnZiWEJoY21Wa0lHSjVJSFJvWldseVhHNGdJQ0FnSUNBZ0lDOHZJRzFwYkd4cGMyVmpiMjVrSUhKbGNISmxjMlZ1ZEdGMGFXOXVjeTRnVG05MFpTQjBhR0YwSUdsdWRtRnNhV1FnWkdGMFpYTWdkMmwwYUNCdGFXeHNhWE5sWTI5dVpDQnlaWEJ5WlhObGJuUmhkR2x2Ym5OY2JpQWdJQ0FnSUNBZ0x5OGdiMllnWUU1aFRtQWdZWEpsSUc1dmRDQmxjWFZwZG1Gc1pXNTBMbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLMkVnUFQwOUlDdGlPMXh1SUNBZ0lDQWdZMkZ6WlNBblcyOWlhbVZqZENCVGVXMWliMnhkSnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZONWJXSnZiRkJ5YjNSdkxuWmhiSFZsVDJZdVkyRnNiQ2hoS1NBOVBUMGdVM2x0WW05c1VISnZkRzh1ZG1Gc2RXVlBaaTVqWVd4c0tHSXBPMXh1SUNBZ0lDQWdZMkZ6WlNBblcyOWlhbVZqZENCQmNuSmhlVUoxWm1abGNsMG5PbHh1SUNBZ0lDQWdZMkZ6WlNCMFlXZEVZWFJoVm1sbGR6cGNiaUFnSUNBZ0lDQWdMeThnUTI5bGNtTmxJSFJ2SUhSNWNHVmtJR0Z5Y21GNUlITnZJSGRsSUdOaGJpQm1ZV3hzSUhSb2NtOTFaMmd1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrWldWd1JYRW9kRzlDZFdabVpYSldhV1YzS0dFcExDQjBiMEoxWm1abGNsWnBaWGNvWWlrc0lHRlRkR0ZqYXl3Z1lsTjBZV05yS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ1lYSmxRWEp5WVhseklEMGdZMnhoYzNOT1lXMWxJRDA5UFNBblcyOWlhbVZqZENCQmNuSmhlVjBuTzF4dUlDQWdJR2xtSUNnaFlYSmxRWEp5WVhseklDWW1JR2x6Vkhsd1pXUkJjbkpoZVNReEtHRXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmllWFJsVEdWdVozUm9JRDBnWjJWMFFubDBaVXhsYm1kMGFDaGhLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHSjVkR1ZNWlc1bmRHZ2dJVDA5SUdkbGRFSjVkR1ZNWlc1bmRHZ29ZaWtwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdhV1lnS0dFdVluVm1abVZ5SUQwOVBTQmlMbUoxWm1abGNpQW1KaUJoTG1KNWRHVlBabVp6WlhRZ1BUMDlJR0l1WW5sMFpVOW1abk5sZENrZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJR0Z5WlVGeWNtRjVjeUE5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDZ2hZWEpsUVhKeVlYbHpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdFZ0lUMGdKMjlpYW1WamRDY2dmSHdnZEhsd1pXOW1JR0lnSVQwZ0oyOWlhbVZqZENjcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnTHk4Z1QySnFaV04wY3lCM2FYUm9JR1JwWm1abGNtVnVkQ0JqYjI1emRISjFZM1J2Y25NZ1lYSmxJRzV2ZENCbGNYVnBkbUZzWlc1MExDQmlkWFFnWUU5aWFtVmpkR0J6SUc5eUlHQkJjbkpoZVdCelhHNGdJQ0FnSUNBdkx5Qm1jbTl0SUdScFptWmxjbVZ1ZENCbWNtRnRaWE1nWVhKbExseHVJQ0FnSUNBZ2RtRnlJR0ZEZEc5eUlEMGdZUzVqYjI1emRISjFZM1J2Y2l3Z1lrTjBiM0lnUFNCaUxtTnZibk4wY25WamRHOXlPMXh1SUNBZ0lDQWdhV1lnS0dGRGRHOXlJQ0U5UFNCaVEzUnZjaUFtSmlBaEtHbHpSblZ1WTNScGIyNGtNU2hoUTNSdmNpa2dKaVlnWVVOMGIzSWdhVzV6ZEdGdVkyVnZaaUJoUTNSdmNpQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbHpSblZ1WTNScGIyNGtNU2hpUTNSdmNpa2dKaVlnWWtOMGIzSWdhVzV6ZEdGdVkyVnZaaUJpUTNSdmNpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKaVlnS0NkamIyNXpkSEoxWTNSdmNpY2dhVzRnWVNBbUppQW5ZMjl1YzNSeWRXTjBiM0luSUdsdUlHSXBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnTHk4Z1FYTnpkVzFsSUdWeGRXRnNhWFI1SUdadmNpQmplV05zYVdNZ2MzUnlkV04wZFhKbGN5NGdWR2hsSUdGc1oyOXlhWFJvYlNCbWIzSWdaR1YwWldOMGFXNW5JR041WTJ4cFkxeHVJQ0FnSUM4dklITjBjblZqZEhWeVpYTWdhWE1nWVdSaGNIUmxaQ0JtY205dElFVlRJRFV1TVNCelpXTjBhVzl1SURFMUxqRXlMak1zSUdGaWMzUnlZV04wSUc5d1pYSmhkR2x2YmlCZ1NrOWdMbHh1WEc0Z0lDQWdMeThnU1c1cGRHbGhiR2w2YVc1bklITjBZV05ySUc5bUlIUnlZWFpsY25ObFpDQnZZbXBsWTNSekxseHVJQ0FnSUM4dklFbDBKM01nWkc5dVpTQm9aWEpsSUhOcGJtTmxJSGRsSUc5dWJIa2dibVZsWkNCMGFHVnRJR1p2Y2lCdlltcGxZM1J6SUdGdVpDQmhjbkpoZVhNZ1kyOXRjR0Z5YVhOdmJpNWNiaUFnSUNCaFUzUmhZMnNnUFNCaFUzUmhZMnNnZkh3Z1cxMDdYRzRnSUNBZ1lsTjBZV05ySUQwZ1lsTjBZV05ySUh4OElGdGRPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0JoVTNSaFkyc3ViR1Z1WjNSb08xeHVJQ0FnSUhkb2FXeGxJQ2hzWlc1bmRHZ3RMU2tnZTF4dUlDQWdJQ0FnTHk4Z1RHbHVaV0Z5SUhObFlYSmphQzRnVUdWeVptOXliV0Z1WTJVZ2FYTWdhVzUyWlhKelpXeDVJSEJ5YjNCdmNuUnBiMjVoYkNCMGJ5QjBhR1VnYm5WdFltVnlJRzltWEc0Z0lDQWdJQ0F2THlCMWJtbHhkV1VnYm1WemRHVmtJSE4wY25WamRIVnlaWE11WEc0Z0lDQWdJQ0JwWmlBb1lWTjBZV05yVzJ4bGJtZDBhRjBnUFQwOUlHRXBJSEpsZEhWeWJpQmlVM1JoWTJ0YmJHVnVaM1JvWFNBOVBUMGdZanRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJCWkdRZ2RHaGxJR1pwY25OMElHOWlhbVZqZENCMGJ5QjBhR1VnYzNSaFkyc2diMllnZEhKaGRtVnljMlZrSUc5aWFtVmpkSE11WEc0Z0lDQWdZVk4wWVdOckxuQjFjMmdvWVNrN1hHNGdJQ0FnWWxOMFlXTnJMbkIxYzJnb1lpazdYRzVjYmlBZ0lDQXZMeUJTWldOMWNuTnBkbVZzZVNCamIyMXdZWEpsSUc5aWFtVmpkSE1nWVc1a0lHRnljbUY1Y3k1Y2JpQWdJQ0JwWmlBb1lYSmxRWEp5WVhsektTQjdYRzRnSUNBZ0lDQXZMeUJEYjIxd1lYSmxJR0Z5Y21GNUlHeGxibWQwYUhNZ2RHOGdaR1YwWlhKdGFXNWxJR2xtSUdFZ1pHVmxjQ0JqYjIxd1lYSnBjMjl1SUdseklHNWxZMlZ6YzJGeWVTNWNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHRXViR1Z1WjNSb08xeHVJQ0FnSUNBZ2FXWWdLR3hsYm1kMGFDQWhQVDBnWWk1c1pXNW5kR2dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDOHZJRVJsWlhBZ1kyOX
14938RjR0Z5WlNCMGFHVWdZMjl1ZEdWdWRITXNJR2xuYm05eWFXNW5JRzV2YmkxdWRXMWxjbWxqSUhCeWIzQmxjblJwWlhNdVhHNGdJQ0FnSUNCM2FHbHNaU0FvYkdWdVozUm9MUzBwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZsY1NoaFcyeGxibWQwYUYwc0lHSmJiR1Z1WjNSb1hTd2dZVk4wWVdOckxDQmlVM1JoWTJzcEtTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDOHZJRVJsWlhBZ1kyOXRjR0Z5WlNCdlltcGxZM1J6TGx4dUlDQWdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWhoS1N3Z2EyVjVPMXh1SUNBZ0lDQWdiR1Z1WjNSb0lEMGdYMnRsZVhNdWJHVnVaM1JvTzF4dUlDQWdJQ0FnTHk4Z1JXNXpkWEpsSUhSb1lYUWdZbTkwYUNCdlltcGxZM1J6SUdOdmJuUmhhVzRnZEdobElITmhiV1VnYm5WdFltVnlJRzltSUhCeWIzQmxjblJwWlhNZ1ltVm1iM0psSUdOdmJYQmhjbWx1WnlCa1pXVndJR1Z4ZFdGc2FYUjVMbHh1SUNBZ0lDQWdhV1lnS0d0bGVYTW9ZaWt1YkdWdVozUm9JQ0U5UFNCc1pXNW5kR2dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIZG9hV3hsSUNoc1pXNW5kR2d0TFNrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJFWldWd0lHTnZiWEJoY21VZ1pXRmphQ0J0WlcxaVpYSmNiaUFnSUNBZ0lDQWdhMlY1SUQwZ1gydGxlWE5iYkdWdVozUm9YVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRW9hR0Z6SkRFb1lpd2dhMlY1S1NBbUppQmxjU2hoVzJ0bGVWMHNJR0piYTJWNVhTd2dZVk4wWVdOckxDQmlVM1JoWTJzcEtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQXZMeUJTWlcxdmRtVWdkR2hsSUdacGNuTjBJRzlpYW1WamRDQm1jbTl0SUhSb1pTQnpkR0ZqYXlCdlppQjBjbUYyWlhKelpXUWdiMkpxWldOMGN5NWNiaUFnSUNCaFUzUmhZMnN1Y0c5d0tDazdYRzRnSUNBZ1lsTjBZV05yTG5CdmNDZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1VHVnlabTl5YlNCaElHUmxaWEFnWTI5dGNHRnlhWE52YmlCMGJ5QmphR1ZqYXlCcFppQjBkMjhnYjJKcVpXTjBjeUJoY21VZ1pYRjFZV3d1WEc0Z0lHWjFibU4wYVc5dUlHbHpSWEYxWVd3b1lTd2dZaWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxjU2hoTENCaUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRISnBaWFpsSUdGc2JDQjBhR1VnWlc1MWJXVnlZV0pzWlNCd2NtOXdaWEowZVNCdVlXMWxjeUJ2WmlCaGJpQnZZbXBsWTNRdVhHNGdJR1oxYm1OMGFXOXVJR0ZzYkV0bGVYTW9iMkpxS1NCN1hHNGdJQ0FnYVdZZ0tDRnBjMDlpYW1WamRDaHZZbW9wS1NCeVpYUjFjbTRnVzEwN1hHNGdJQ0FnZG1GeUlHdGxlWE1nUFNCYlhUdGNiaUFnSUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnYjJKcUtTQnJaWGx6TG5CMWMyZ29hMlY1S1R0Y2JpQWdJQ0F2THlCQmFHVnRMQ0JKUlNBOElEa3VYRzRnSUNBZ2FXWWdLR2hoYzBWdWRXMUNkV2NwSUdOdmJHeGxZM1JPYjI1RmJuVnRVSEp2Y0hNb2IySnFMQ0JyWlhsektUdGNiaUFnSUNCeVpYUjFjbTRnYTJWNWN6dGNiaUFnZlZ4dVhHNGdJQzh2SUZOcGJtTmxJSFJvWlNCeVpXZDFiR0Z5SUdCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuWUNCMGVYQmxJSFJsYzNSeklHUnZiaWQwSUhkdmNtc2dabTl5WEc0Z0lDOHZJSE52YldVZ2RIbHdaWE1nYVc0Z1NVVWdNVEVzSUhkbElIVnpaU0JoSUdacGJtZGxjbkJ5YVc1MGFXNW5JR2hsZFhKcGMzUnBZeUJwYm5OMFpXRmtMQ0JpWVhObFpGeHVJQ0F2THlCdmJpQjBhR1VnYldWMGFHOWtjeTRnU1hRbmN5QnViM1FnWjNKbFlYUXNJR0oxZENCcGRDZHpJSFJvWlNCaVpYTjBJSGRsSUdkdmRDNWNiaUFnTHk4Z1ZHaGxJR1pwYm1kbGNuQnlhVzUwSUcxbGRHaHZaQ0JzYVhOMGN5QmhjbVVnWkdWbWFXNWxaQ0JpWld4dmR5NWNiaUFnWm5WdVkzUnBiMjRnYVdVeE1XWnBibWRsY25CeWFXNTBLRzFsZEdodlpITXBJSHRjYmlBZ0lDQjJZWElnYkdWdVozUm9JRDBnWjJWMFRHVnVaM1JvS0cxbGRHaHZaSE1wTzF4dUlDQWdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaHZZbW9wSUh0Y2JpQWdJQ0FnSUdsbUlDaHZZbW9nUFQwZ2JuVnNiQ2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0x5OGdZRTFoY0dBc0lHQlhaV0ZyVFdGd1lDQmhibVFnWUZObGRHQWdhR0YyWlNCdWJ5QmxiblZ0WlhKaFlteGxJR3RsZVhNdVhHNGdJQ0FnSUNCMllYSWdhMlY1Y3lBOUlHRnNiRXRsZVhNb2IySnFLVHRjYmlBZ0lDQWdJR2xtSUNoblpYUk1aVzVuZEdnb2EyVjVjeWtwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBaMWJtTjBhVzl1SkRFb2IySnFXMjFsZEdodlpITmJhVjFkS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdMeThnU1dZZ2QyVWdZWEpsSUhSbGMzUnBibWNnWVdkaGFXNXpkQ0JnVjJWaGEwMWhjR0FzSUhkbElHNWxaV1FnZEc4Z1pXNXpkWEpsSUhSb1lYUmNiaUFnSUNBZ0lDOHZJR0J2WW1wZ0lHUnZaWE51SjNRZ2FHRjJaU0JoSUdCbWIzSkZZV05vWUNCdFpYUm9iMlFnYVc0Z2IzSmtaWElnZEc4Z1pHbHpkR2x1WjNWcGMyaGNiaUFnSUNBZ0lDOHZJR2wwSUdaeWIyMGdZU0J5WldkMWJHRnlJR0JOWVhCZ0xseHVJQ0FnSUNBZ2NtVjBkWEp1SUcxbGRHaHZaSE1nSVQwOUlIZGxZV3ROWVhCTlpYUm9iMlJ6SUh4OElDRnBjMFoxYm1OMGFXOXVKREVvYjJKcVcyWnZja1ZoWTJoT1lXMWxYU2s3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVJSFJvWlNCcGJuUmxjbVZ6ZENCdlppQmpiMjF3WVdOMElHMXBibWxtYVdOaGRHbHZiaXdnZDJVZ2QzSnBkR1ZjYmlBZ0x5OGdaV0ZqYUNCemRISnBibWNnYVc0Z2RHaGxJR1pwYm1kbGNuQnlhVzUwY3lCdmJteDVJRzl1WTJVdVhHNGdJSFpoY2lCbWIzSkZZV05vVG1GdFpTQTlJQ2RtYjNKRllXTm9KeXhjYmlBZ0lDQWdJR2hoYzA1aGJXVWdQU0FuYUdGekp5eGNiaUFnSUNBZ0lHTnZiVzF2YmtsdWFYUWdQU0JiSjJOc1pXRnlKeXdnSjJSbGJHVjBaU2RkTEZ4dUlDQWdJQ0FnYldGd1ZHRnBiQ0E5SUZzbloyVjBKeXdnYUdGelRtRnRaU3dnSjNObGRDZGRPMXh1WEc0Z0lDOHZJR0JOWVhCZ0xDQmdWMlZoYTAxaGNHQWdZVzVrSUdCVFpYUmdJR1ZoWTJnZ2FHRjJaU0J6YkdsbmFIUnNlU0JrYVdabVpYSmxiblJjYmlBZ0x5OGdZMjl0WW1sdVlYUnBiMjV6SUc5bUlIUm9aU0JoWW05MlpTQnpkV0pzYVhOMGN5NWNiaUFnZG1GeUlHMWhjRTFsZEdodlpITWdQU0JqYjIxdGIyNUpibWwwTG1OdmJtTmhkQ2htYjNKRllXTm9UbUZ0WlN3Z2JXRndWR0ZwYkNrc1hHNGdJQ0FnSUNCM1pXRnJUV0Z3VFdWMGFHOWtjeUE5SUdOdmJXMXZia2x1YVhRdVkyOXVZMkYwS0cxaGNGUmhhV3dwTEZ4dUlDQWdJQ0FnYzJWMFRXVjBhRzlrY3lBOUlGc25ZV1JrSjEwdVkyOXVZMkYwS0dOdmJXMXZia2x1YVhRc0lHWnZja1ZoWTJoT1lXMWxMQ0JvWVhOT1lXMWxLVHRjYmx4dUlDQjJZWElnYVhOTllYQWdQU0JwYzBsRk1URWdQeUJwWlRFeFptbHVaMlZ5Y0hKcGJuUW9iV0Z3VFdWMGFHOWtjeWtnT2lCMFlXZFVaWE4wWlhJb0owMWhjQ2NwTzF4dVhHNGdJSFpoY2lCcGMxZGxZV3ROWVhBZ1BTQnBjMGxGTVRFZ1B5QnBaVEV4Wm1sdVoyVnljSEpwYm5Rb2QyVmhhMDFoY0UxbGRHaHZaSE1wSURvZ2RHRm5WR1Z6ZEdWeUtDZFhaV0ZyVFdGd0p5azdYRzVjYmlBZ2RtRnlJR2x6VTJWMElEMGdhWE5KUlRFeElEOGdhV1V4TVdacGJtZGxjbkJ5YVc1MEtITmxkRTFsZEdodlpITXBJRG9nZEdGblZHVnpkR1Z5S0NkVFpYUW5LVHRjYmx4dUlDQjJZWElnYVhOWFpXRnJVMlYwSUQwZ2RHRm5WR1Z6ZEdWeUtDZFhaV0ZyVTJWMEp5azdYRzVjYmlBZ0x5OGdVbVYwY21sbGRtVWdkR2hsSUhaaGJIVmxjeUJ2WmlCaGJpQnZZbXBsWTNRbmN5QndjbTl3WlhKMGFXVnpMbHh1SUNCbWRXNWpkR2x2YmlCMllXeDFaWE1vYjJ
14938KcUtTQjdYRzRnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0JmYTJWNWN5NXNaVzVuZEdnN1hHNGdJQ0FnZG1GeUlIWmhiSFZsY3lBOUlFRnljbUY1S0d4bGJtZDBhQ2s3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnNkV1Z6VzJsZElEMGdiMkpxVzE5clpYbHpXMmxkWFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsY3p0Y2JpQWdmVnh1WEc0Z0lDOHZJRU52Ym5abGNuUWdZVzRnYjJKcVpXTjBJR2x1ZEc4Z1lTQnNhWE4wSUc5bUlHQmJhMlY1TENCMllXeDFaVjFnSUhCaGFYSnpMbHh1SUNBdkx5QlVhR1VnYjNCd2IzTnBkR1VnYjJZZ1lGOHViMkpxWldOMFlDQjNhWFJvSUc5dVpTQmhjbWQxYldWdWRDNWNiaUFnWm5WdVkzUnBiMjRnY0dGcGNuTW9iMkpxS1NCN1hHNGdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWh2WW1vcE8xeHVJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQmZhMlY1Y3k1c1pXNW5kR2c3WEc0Z0lDQWdkbUZ5SUhCaGFYSnpJRDBnUVhKeVlYa29iR1Z1WjNSb0tUdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J3WVdseWMxdHBYU0E5SUZ0ZmEyVjVjMXRwWFN3Z2IySnFXMTlyWlhselcybGRYVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCd1lXbHljenRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkbVZ5ZENCMGFHVWdhMlY1Y3lCaGJtUWdkbUZzZFdWeklHOW1JR0Z1SUc5aWFtVmpkQzRnVkdobElIWmhiSFZsY3lCdGRYTjBJR0psSUhObGNtbGhiR2w2WVdKc1pTNWNiaUFnWm5WdVkzUnBiMjRnYVc1MlpYSjBLRzlpYWlrZ2UxeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQjdmVHRjYmlBZ0lDQjJZWElnWDJ0bGVYTWdQU0JyWlhsektHOWlhaWs3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBc0lHeGxibWQwYUNBOUlGOXJaWGx6TG14bGJtZDBhRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUmJiMkpxVzE5clpYbHpXMmxkWFYwZ1BTQmZhMlY1YzF0cFhUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUJoSUhOdmNuUmxaQ0JzYVhOMElHOW1JSFJvWlNCbWRXNWpkR2x2YmlCdVlXMWxjeUJoZG1GcGJHRmliR1VnYjI0Z2RHaGxJRzlpYW1WamRDNWNiaUFnWm5WdVkzUnBiMjRnWm5WdVkzUnBiMjV6S0c5aWFpa2dlMXh1SUNBZ0lIWmhjaUJ1WVcxbGN5QTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR3RsZVNCcGJpQnZZbW9wSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVKREVvYjJKcVcydGxlVjBwS1NCdVlXMWxjeTV3ZFhOb0tHdGxlU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdVlXMWxjeTV6YjNKMEtDazdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQm1iM0lnWTNKbFlYUnBibWNnWVhOemFXZHVaWElnWm5WdVkzUnBiMjV6TGx4dUlDQm1kVzVqZEdsdmJpQmpjbVZoZEdWQmMzTnBaMjVsY2loclpYbHpSblZ1WXl3Z1pHVm1ZWFZzZEhNcElIdGNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ0lDQjJZWElnYkdWdVozUm9JRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHRjYmlBZ0lDQWdJR2xtSUNoa1pXWmhkV3gwY3lrZ2IySnFJRDBnVDJKcVpXTjBLRzlpYWlrN1hHNGdJQ0FnSUNCcFppQW9iR1Z1WjNSb0lEd2dNaUI4ZkNCdlltb2dQVDBnYm5Wc2JDa2djbVYwZFhKdUlHOWlhanRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNVHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlITnZkWEpqWlNBOUlHRnlaM1Z0Wlc1MGMxdHBibVJsZUYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhseklEMGdhMlY1YzBaMWJtTW9jMjkxY21ObEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUd3Z1BTQnJaWGx6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYTJWNUlEMGdhMlY1YzF0cFhUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lXUmxabUYxYkhSeklIeDhJRzlpYWx0clpYbGRJRDA5UFNCMmIybGtJREFwSUc5aWFsdHJaWGxkSUQwZ2MyOTFjbU5sVzJ0bGVWMDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFVjRkR1Z1WkNCaElHZHBkbVZ1SUc5aWFtVmpkQ0IzYVhSb0lHRnNiQ0IwYUdVZ2NISnZjR1Z5ZEdsbGN5QnBiaUJ3WVhOelpXUXRhVzRnYjJKcVpXTjBLSE1wTGx4dUlDQjJZWElnWlhoMFpXNWtJRDBnWTNKbFlYUmxRWE56YVdkdVpYSW9ZV3hzUzJWNWN5azdYRzVjYmlBZ0x5OGdRWE56YVdkdWN5QmhJR2RwZG1WdUlHOWlhbVZqZENCM2FYUm9JR0ZzYkNCMGFHVWdiM2R1SUhCeWIzQmxjblJwWlhNZ2FXNGdkR2hsSUhCaGMzTmxaQzFwYmx4dUlDQXZMeUJ2WW1wbFkzUW9jeWt1WEc0Z0lDOHZJQ2hvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5a2IyTnpMMWRsWWk5S1lYWmhVMk55YVhCMEwxSmxabVZ5Wlc1alpTOUhiRzlpWVd4ZlQySnFaV04wY3k5UFltcGxZM1F2WVhOemFXZHVLVnh1SUNCMllYSWdaWGgwWlc1a1QzZHVJRDBnWTNKbFlYUmxRWE56YVdkdVpYSW9hMlY1Y3lrN1hHNWNiaUFnTHk4Z1JtbHNiQ0JwYmlCaElHZHBkbVZ1SUc5aWFtVmpkQ0IzYVhSb0lHUmxabUYxYkhRZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnZG1GeUlHUmxabUYxYkhSeklEMGdZM0psWVhSbFFYTnphV2R1WlhJb1lXeHNTMlY1Y3l3Z2RISjFaU2s3WEc1Y2JpQWdMeThnUTNKbFlYUmxJR0VnYm1GclpXUWdablZ1WTNScGIyNGdjbVZtWlhKbGJtTmxJR1p2Y2lCemRYSnliMmRoZEdVdGNISnZkRzkwZVhCbExYTjNZWEJ3YVc1bkxseHVJQ0JtZFc1amRHbHZiaUJqZEc5eUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlncGUzMDdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQm1iM0lnWTNKbFlYUnBibWNnWVNCdVpYY2diMkpxWldOMElIUm9ZWFFnYVc1b1pYSnBkSE1nWm5KdmJTQmhibTkwYUdWeUxseHVJQ0JtZFc1amRHbHZiaUJpWVhObFEzSmxZWFJsS0hCeWIzUnZkSGx3WlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5QWW1wbFkzUW9jSEp2ZEc5MGVYQmxLU2tnY21WMGRYSnVJSHQ5TzF4dUlDQWdJR2xtSUNodVlYUnBkbVZEY21WaGRHVXBJSEpsZEhWeWJpQnVZWFJwZG1WRGNtVmhkR1VvY0hKdmRHOTBlWEJsS1R0Y2JpQWdJQ0IyWVhJZ1EzUnZjaUE5SUdOMGIzSW9LVHRjYmlBZ0lDQkRkRzl5TG5CeWIzUnZkSGx3WlNBOUlIQnliM1J2ZEhsd1pUdGNiaUFnSUNCMllYSWdjbVZ6ZFd4MElEMGdibVYzSUVOMGIzSTdYRzRnSUNBZ1EzUnZjaTV3Y205MGIzUjVjR1VnUFNCdWRXeHNPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lIMWNibHh1SUNBdkx5QkRjbVZoZEdWeklHRnVJRzlpYW1WamRDQjBhR0YwSUdsdWFHVnlhWFJ6SUdaeWIyMGdkR2hsSUdkcGRtVnVJSEJ5YjNSdmRIbHdaU0J2WW1wbFkzUXVYRzRnSUM4dklFbG1JR0ZrWkdsMGFXOXVZV3dnY0hKdmNHVnlkR2xsY3lCaGNtVWdjSEp2ZG1sa1pXUWdkR2hsYmlCMGFHVjVJSGRwYkd3Z1ltVWdZV1JrWldRZ2RHOGdkR2hsWEc0Z0lDOHZJR0
1493855WldGMFpXUWdiMkpxWldOMExseHVJQ0JtZFc1amRHbHZiaUJqY21WaGRHVW9jSEp2ZEc5MGVYQmxMQ0J3Y205d2N5a2dlMXh1SUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0JpWVhObFEzSmxZWFJsS0hCeWIzUnZkSGx3WlNrN1hHNGdJQ0FnYVdZZ0tIQnliM0J6S1NCbGVIUmxibVJQZDI0b2NtVnpkV3gwTENCd2NtOXdjeWs3WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHZJRU55WldGMFpTQmhJQ2h6YUdGc2JHOTNMV05zYjI1bFpDa2daSFZ3YkdsallYUmxJRzltSUdGdUlHOWlhbVZqZEM1Y2JpQWdablZ1WTNScGIyNGdZMnh2Ym1Vb2IySnFLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwOWlhbVZqZENodlltb3BLU0J5WlhSMWNtNGdiMkpxTzF4dUlDQWdJSEpsZEhWeWJpQnBjMEZ5Y21GNUtHOWlhaWtnUHlCdlltb3VjMnhwWTJVb0tTQTZJR1Y0ZEdWdVpDaDdmU3dnYjJKcUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUVsdWRtOXJaWE1nWUdsdWRHVnlZMlZ3ZEc5eVlDQjNhWFJvSUhSb1pTQmdiMkpxWUNCaGJtUWdkR2hsYmlCeVpYUjFjbTV6SUdCdlltcGdMbHh1SUNBdkx5QlVhR1VnY0hKcGJXRnllU0J3ZFhKd2IzTmxJRzltSUhSb2FYTWdiV1YwYUc5a0lHbHpJSFJ2SUZ3aWRHRndJR2x1ZEc5Y0lpQmhJRzFsZEdodlpDQmphR0ZwYml3Z2FXNWNiaUFnTHk4Z2IzSmtaWElnZEc4Z2NHVnlabTl5YlNCdmNHVnlZWFJwYjI1eklHOXVJR2x1ZEdWeWJXVmthV0YwWlNCeVpYTjFiSFJ6SUhkcGRHaHBiaUIwYUdVZ1kyaGhhVzR1WEc0Z0lHWjFibU4wYVc5dUlIUmhjQ2h2WW1vc0lHbHVkR1Z5WTJWd2RHOXlLU0I3WEc0Z0lDQWdhVzUwWlhKalpYQjBiM0lvYjJKcUtUdGNiaUFnSUNCeVpYUjFjbTRnYjJKcU8xeHVJQ0I5WEc1Y2JpQWdMeThnVG05eWJXRnNhWHBsSUdFZ0tHUmxaWEFwSUhCeWIzQmxjblI1SUdCd1lYUm9ZQ0IwYnlCaGNuSmhlUzVjYmlBZ0x5OGdUR2xyWlNCZ1h5NXBkR1Z5WVhSbFpXQXNJSFJvYVhNZ1puVnVZM1JwYjI0Z1kyRnVJR0psSUdOMWMzUnZiV2w2WldRdVhHNGdJR1oxYm1OMGFXOXVJSFJ2VUdGMGFDUXhLSEJoZEdncElIdGNiaUFnSUNCeVpYUjFjbTRnYVhOQmNuSmhlU2h3WVhSb0tTQS9JSEJoZEdnZ09pQmJjR0YwYUYwN1hHNGdJSDFjYmlBZ1h5UXhMblJ2VUdGMGFDQTlJSFJ2VUdGMGFDUXhPMXh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJSGR5WVhCd1pYSWdabTl5SUdCZkxuUnZVR0YwYUdBZ2RHOGdaVzVoWW14bElHMXBibWxtYVdOaGRHbHZiaTVjYmlBZ0x5OGdVMmx0YVd4aGNpQjBieUJnWTJKZ0lHWnZjaUJnWHk1cGRHVnlZWFJsWldBdVhHNGdJR1oxYm1OMGFXOXVJSFJ2VUdGMGFDaHdZWFJvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRjhrTVM1MGIxQmhkR2dvY0dGMGFDazdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCbWRXNWpkR2x2YmlCMGJ5QnZZblJoYVc0Z1lTQnVaWE4wWldRZ2NISnZjR1Z5ZEhrZ2FXNGdZRzlpYW1BZ1lXeHZibWNnWUhCaGRHaGdMbHh1SUNCbWRXNWpkR2x2YmlCa1pXVndSMlYwS0c5aWFpd2djR0YwYUNrZ2UxeHVJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQndZWFJvTG14bGJtZDBhRHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9iMkpxSUQwOUlHNTFiR3dwSUhKbGRIVnliaUIyYjJsa0lEQTdYRzRnSUNBZ0lDQnZZbW9nUFNCdlltcGJjR0YwYUZ0cFhWMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJzWlc1bmRHZ2dQeUJ2WW1vZ09pQjJiMmxrSURBN1hHNGdJSDFjYmx4dUlDQXZMeUJIWlhRZ2RHaGxJSFpoYkhWbElHOW1JSFJvWlNBb1pHVmxjQ2tnY0hKdmNHVnlkSGtnYjI0Z1lIQmhkR2hnSUdaeWIyMGdZRzlpYW1WamRHQXVYRzRnSUM4dklFbG1JR0Z1ZVNCd2NtOXdaWEowZVNCcGJpQmdjR0YwYUdBZ1pHOWxjeUJ1YjNRZ1pYaHBjM1FnYjNJZ2FXWWdkR2hsSUhaaGJIVmxJR2x6WEc0Z0lDOHZJR0IxYm1SbFptbHVaV1JnTENCeVpYUjFjbTRnWUdSbFptRjFiSFJXWVd4MVpXQWdhVzV6ZEdWaFpDNWNiaUFnTHk4Z1ZHaGxJR0J3WVhSb1lDQnBjeUJ1YjNKdFlXeHBlbVZrSUhSb2NtOTFaMmdnWUY4dWRHOVFZWFJvWUM1Y2JpQWdablZ1WTNScGIyNGdaMlYwS0c5aWFtVmpkQ3dnY0dGMGFDd2daR1ZtWVhWc2RGWmhiSFZsS1NCN1hHNGdJQ0FnZG1GeUlIWmhiSFZsSUQwZ1pHVmxjRWRsZENodlltcGxZM1FzSUhSdlVHRjBhQ2h3WVhSb0tTazdYRzRnSUNBZ2NtVjBkWEp1SUdselZXNWtaV1pwYm1Wa0tIWmhiSFZsS1NBL0lHUmxabUYxYkhSV1lXeDFaU0E2SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1UyaHZjblJqZFhRZ1puVnVZM1JwYjI0Z1ptOXlJR05vWldOcmFXNW5JR2xtSUdGdUlHOWlhbVZqZENCb1lYTWdZU0JuYVhabGJpQndjbTl3WlhKMGVTQmthWEpsWTNSc2VTQnZibHh1SUNBdkx5QnBkSE5sYkdZZ0tHbHVJRzkwYUdWeUlIZHZjbVJ6TENCdWIzUWdiMjRnWVNCd2NtOTBiM1I1Y0dVcExpQlZibXhwYTJVZ2RHaGxJR2x1ZEdWeWJtRnNJR0JvWVhOZ1hHNGdJQzh2SUdaMWJtTjBhVzl1TENCMGFHbHpJSEIxWW14cFl5QjJaWEp6YVc5dUlHTmhiaUJoYkhOdklIUnlZWFpsY25ObElHNWxjM1JsWkNCd2NtOXdaWEowYVdWekxseHVJQ0JtZFc1amRHbHZiaUJvWVhNb2IySnFMQ0J3WVhSb0tTQjdYRzRnSUNBZ2NHRjBhQ0E5SUhSdlVHRjBhQ2h3WVhSb0tUdGNiaUFnSUNCMllYSWdiR1Z1WjNSb0lEMGdjR0YwYUM1c1pXNW5kR2c3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR3RsZVNBOUlIQmhkR2hiYVYwN1hHNGdJQ0FnSUNCcFppQW9JV2hoY3lReEtHOWlhaXdnYTJWNUtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnYjJKcUlEMGdiMkpxVzJ0bGVWMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUFoSVd4bGJtZDBhRHRjYmlBZ2ZWeHVYRzRnSUM4dklFdGxaWEFnZEdobElHbGtaVzUwYVhSNUlHWjFibU4wYVc5dUlHRnliM1Z1WkNCbWIzSWdaR1ZtWVhWc2RDQnBkR1Z5WVhSbFpYTXVYRzRnSUdaMWJtTjBhVzl1SUdsa1pXNTBhWFI1S0haaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ0x5OGdVbVYwZFhKdWN5QmhJSEJ5WldScFkyRjBaU0JtYjNJZ1kyaGxZMnRwYm1jZ2QyaGxkR2hsY2lCaGJpQnZZbXBsWTNRZ2FHRnpJR0VnWjJsMlpXNGdjMlYwSUc5bVhHNGdJQzh2SUdCclpYazZkbUZzZFdWZ0lIQmhhWEp6TGx4dUlDQm1kVzVqZEdsdmJpQnRZWFJqYUdWeUtHRjBkSEp6S1NCN1hHNGdJQ0FnWVhSMGNuTWdQU0JsZUhSbGJtUlBkMjRvZTMwc0lHRjBkSEp6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9iMkpxS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhOTllYUmphQ2h2WW1vc0lHRjBkSEp6S1R0Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5OGdRM0psWVhSbGN5QmhJR1oxYm1OMGFXOXVJSFJvWVhRc0lIZG9aVzRnY0dGemMyVmtJR0Z1SUc5aWFtVmpkQ3dnZDJsc2JDQjBjbUYyWlhKelpTQjBhR0YwSUc5aWFtVmpkT0tBbVhOY2JpQWdMeThnY0hKdmNHVnlkR2xsY3lCa2IzZHVJSFJvWlNCbmFYWmxiaUJnY0dGMGFHQXNJSE53WldOcFptbGxaQ0JoY3lCaGJpQmhjbkpoZVNCdlppQnJaWGx6SUc5eUlHbHVaR2xqWlhNdVhHNGdJR1oxYm1OMGFXOXVJSEJ5YjNCbGNuUjVLSEJoZEdncElIdGNiaUFnSUNCd1lYUm9JRDBnZEc5UVlYUm9LSEJoZEdncE8xeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWh2WW1vcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCa1pXVndSMlYwS0c5aWFpd2djR0YwYUNrN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJvWVhRZ2NtVjBkWEp1Y3lCaGJpQmxabVpwWTJsbGJuUWdLR1p2Y2lCamRYSnlaVzUwSUdWdVoybHVaWE1wSUhabGNuTnBiMjVjYmlBZ0x5OGdiMllnZEdobElIQmhjM05sWkMxcGJpQmpZV3hzWW1GamF5d2dkRzhnWW1VZ2NtVndaV0YwWldSc2VTQmhjSEJzYVdWa0lHbHVJRzkwYUdWeUlGVnVaR1Z5YzJOdmNtVmNiaUFnTHk4Z1puVnVZM1JwYjI1ekxseHVJQ0JtZFc1amRHbHZiaUJ2Y0hScGJXbDZaVU5pS0daMWJtTXNJR052Ym5SbGVIUXNJR0Z5WjBOdmRXNTBLU0I3WEc0Z0lDQWdhV1lnS0dOdmJuUmxlSFFnUFQwOUlIWnZhV1FnTUNrZ2NtVjBkWEp1SUdaMWJtTTdYRzRnSUNBZ2MzZHBkR05vSUNoaGNtZERiM1Z1ZENBOVBTQnVkV3hzSUQ4Z015QTZJR0Z5WjBOdmRXNTBLU0I3WEc0Z0lDQWdJQ0JqWVhObElERTZJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1puVnVZeTVqWVd4c0tHTnZiblJsZUhRc0lIWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBdkx5QlVhR1VnTWkxaGNtZDFiV1Z1ZENCallYTmxJR2x6SUc5dGFYUjBaV1FnWW1WallYVnpaU0IzWmVLQW1YSmxJRzV2ZENCMWMybHVaeUJwZEM1Y2JpQWdJQ0FnSUdOaGMyVWdNem9nY21WMGRYSnVJR1oxYm1OMGFXOXVLSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdablZ1WXk1allXeHNLR052Ym5SbGVIUXNJSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpazdYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdZMkZ6WlNBME9pQnlaWFIxY200Z1puVnVZM1JwYjI0b1lXTmpkVzExYkdGMGIzSXNJSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdablZ1WXk1allXeHNLR052Ym5SbGVIUXNJR0ZqWTNWdGRXeGhkRzl5TENCMllXeDFaU3dnYVc1a1pYZ3NJR052Ykd4bFkzUnBiMjRwTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWjFibU11WVhCd2JIa29ZMjl1ZEdWNGRDd2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1FXNGdhVzUwWlhKdVlXd2dablZ1WTNScGIyNGdkRzhnWjJWdVpYSmhkR1VnWTJGc2JHSmhZMnR6SUhSb1lYUWdZMkZ1SUdKbElHRndjR3hwWldRZ2RHOGdaV0ZqYUZ4dUlDQXZMeUJsYkdWdFpXNTBJR2x1SUdFZ1kyOXNiR1ZqZEdsdmJpd2djbVYwZFhKdWFXNW5JSFJvWlNCa1pYTnBjbVZrSUhKbGMzVnNkQ0RpZ0pRZ1pXbDBhR1Z5SUdCZkxtbGtaVzUwYVhSNVlDeGNiaUFnTHk4Z1lXNGdZWEppYVhSeVlYSjVJR05oYkd4aVlXTnJMQ0JoSUhCeWIzQmxjblI1SUcxaGRHTm9aWElzSUc5eUlHRWdjSEp2Y0dWeWRIa2dZV05qWlhOemIzSXVYRzRnSUdaMWJtTjBhVzl1SUdKaGMyVkpkR1Z5WVhSbFpTaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1lYSm5RMjkxYm5RcElIdGNiaUFnSUNCcFppQW9kbUZzZFdVZ1BUMGdiblZzYkNrZ2NtVjBkWEp1SUdsa1pXNTBhWFI1TzF4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUpERW9kbUZzZFdVcEtTQnlaWFIxY200Z2IzQjBhVzFwZW1WRFlpaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1lYSm5RMjkxYm5RcE8xeHVJQ0FnSUdsbUlDaHBjMDlpYW1WamRDaDJZV3gxWlNrZ0ppWWdJV2x6UVhKeVlYa29kbUZzZFdVcEtTQnlaWFIxY200Z2JXRjBZMmhsY2loMllXeDFaU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQnliM0JsY25SNUtIWmhiSFZsS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRVY0ZEdWeWJtRnNJSGR5WVhCd1pYSWdabTl5SUc5MWNpQmpZV3hzWW1GamF5Qm5aVzVsY21GMGIzSXVJRlZ6WlhKeklHMWhlU0JqZFhOMGIyMXBlbVZjYmlBZ0x5OGdZRjh1YVhSbGNtRjBaV1ZnSUdsbUlIUm9aWGtnZDJGdWRDQmhaR1JwZEdsdmJtRnNJSEJ5WldScFkyRjBaUzlwZEdWeVlYUmxaU0J6YUc5eWRHaGhibVFnYzNSNWJHVnpMbHh1SUNBdkx5QlVhR2x6SUdGaWMzUnlZV04wYVc5dUlHaHBaR1Z6SUhSb1pTQnBiblJsY201aGJDMXZibXg1SUdCaGNtZERiM1Z1ZEdBZ1lYSm5kVzFsYm5RdVhHNGdJR1oxYm1OMGFXOXVJR2wwWlhKaGRHVmxLSFpoYkhWbExDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdKaGMyVkpkR1Z5WVhSbFpTaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1NXNW1hVzVwZEhrcE8xeHVJQ0I5WEc0Z0lGOGtNUzVwZEdWeVlYUmxaU0E5SUdsMFpYSmhkR1ZsTzF4dVhHNGdJQzh2SUZSb1pTQm1kVzVqZEdsdmJpQjNaU0JqWVd4c0lHbHVkR1Z5Ym1Gc2JIa2dkRzhnWjJWdVpYSmhkR1VnWVNCallXeHNZbUZqYXk0Z1NYUWdhVzUyYjJ0bGMxeHVJQ0F2THlCZ1h5NXBkR1Z5WVhSbFpXQWdhV1lnYjNabGNuSnBaR1JsYml3Z2IzUm9aWEozYVhObElHQmlZWE5sU1hSbGNtRjBaV1ZnTGx4dUlDQm1kVzVqZEdsdmJpQmpZaWgyWVd4MVpTd2dZMjl1ZEdWNGRDd2dZWEpuUTI5MWJuUXBJSHRjYmlBZ0lDQnBaaUFvWHlReExtbDBaWEpoZEdWbElDRTlQU0JwZEdWeVlYUmxaU2tnY21WMGRYSnVJRjhrTVM1cGRHVnlZWFJsWlNoMllXeDFaU3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHSmhjMlZKZEdWeVlYUmxaU2gyW
14938Vd4MVpTd2dZMjl1ZEdWNGRDd2dZWEpuUTI5MWJuUXBPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdjbVZ6ZFd4MGN5QnZaaUJoY0hCc2VXbHVaeUIwYUdVZ1lHbDBaWEpoZEdWbFlDQjBieUJsWVdOb0lHVnNaVzFsYm5RZ2IyWWdZRzlpYW1BdVhHNGdJQzh2SUVsdUlHTnZiblJ5WVhOMElIUnZJR0JmTG0xaGNHQWdhWFFnY21WMGRYSnVjeUJoYmlCdlltcGxZM1F1WEc0Z0lHWjFibU4wYVc5dUlHMWhjRTlpYW1WamRDaHZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BMRnh1SUNBZ0lDQWdJQ0JzWlc1bmRHZ2dQU0JmYTJWNWN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZEhNZ1BTQjdmVHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBibVJsZUNBOUlEQTdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNzcktTQjdYRzRnSUNBZ0lDQjJZWElnWTNWeWNtVnVkRXRsZVNBOUlGOXJaWGx6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJSEpsYzNWc2RITmJZM1Z5Y21WdWRFdGxlVjBnUFNCcGRHVnlZWFJsWlNodlltcGJZM1Z5Y21WdWRFdGxlVjBzSUdOMWNuSmxiblJMWlhrc0lHOWlhaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJ6TzF4dUlDQjlYRzVjYmlBZ0x5OGdVSEpsWkdsallYUmxMV2RsYm1WeVlYUnBibWNnWm5WdVkzUnBiMjR1SUU5bWRHVnVJSFZ6WldaMWJDQnZkWFJ6YVdSbElHOW1JRlZ1WkdWeWMyTnZjbVV1WEc0Z0lHWjFibU4wYVc5dUlHNXZiM0FvS1h0OVhHNWNiaUFnTHk4Z1IyVnVaWEpoZEdWeklHRWdablZ1WTNScGIyNGdabTl5SUdFZ1oybDJaVzRnYjJKcVpXTjBJSFJvWVhRZ2NtVjBkWEp1Y3lCaElHZHBkbVZ1SUhCeWIzQmxjblI1TGx4dUlDQm1kVzVqZEdsdmJpQndjbTl3WlhKMGVVOW1LRzlpYWlrZ2UxeHVJQ0FnSUdsbUlDaHZZbW9nUFQwZ2JuVnNiQ2tnY21WMGRYSnVJRzV2YjNBN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVLSEJoZEdncElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCblpYUW9iMkpxTENCd1lYUm9LVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1VuVnVJR0VnWm5WdVkzUnBiMjRnS2lwdUtpb2dkR2x0WlhNdVhHNGdJR1oxYm1OMGFXOXVJSFJwYldWektHNHNJR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUdGalkzVnRJRDBnUVhKeVlYa29UV0YwYUM1dFlYZ29NQ3dnYmlrcE8xeHVJQ0FnSUdsMFpYSmhkR1ZsSUQwZ2IzQjBhVzFwZW1WRFlpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDd2dNU2s3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J1T3lCcEt5c3BJR0ZqWTNWdFcybGRJRDBnYVhSbGNtRjBaV1VvYVNrN1hHNGdJQ0FnY21WMGRYSnVJR0ZqWTNWdE8xeHVJQ0I5WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0VnY21GdVpHOXRJR2x1ZEdWblpYSWdZbVYwZDJWbGJpQmdiV2x1WUNCaGJtUWdZRzFoZUdBZ0tHbHVZMngxYzJsMlpTa3VYRzRnSUdaMWJtTjBhVzl1SUhKaGJtUnZiU2h0YVc0c0lHMWhlQ2tnZTF4dUlDQWdJR2xtSUNodFlYZ2dQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdiV0Y0SUQwZ2JXbHVPMXh1SUNBZ0lDQWdiV2x1SUQwZ01EdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFwYmlBcklFMWhkR2d1Wm14dmIzSW9UV0YwYUM1eVlXNWtiMjBvS1NBcUlDaHRZWGdnTFNCdGFXNGdLeUF4S1NrN1hHNGdJSDFjYmx4dUlDQXZMeUJCSUNod2IzTnphV0pzZVNCbVlYTjBaWElwSUhkaGVTQjBieUJuWlhRZ2RHaGxJR04xY25KbGJuUWdkR2x0WlhOMFlXMXdJR0Z6SUdGdUlHbHVkR1ZuWlhJdVhHNGdJSFpoY2lCdWIzY2dQU0JFWVhSbExtNXZkeUI4ZkNCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNGdJSDA3WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnYUdWc2NHVnlJSFJ2SUdkbGJtVnlZWFJsSUdaMWJtTjBhVzl1Y3lCbWIzSWdaWE5qWVhCcGJtY2dZVzVrSUhWdVpYTmpZWEJwYm1jZ2MzUnlhVzVuYzF4dUlDQXZMeUIwYnk5bWNtOXRJRWhVVFV3Z2FXNTBaWEp3YjJ4aGRHbHZiaTVjYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUlhOallYQmxjaWh0WVhBcElIdGNiaUFnSUNCMllYSWdaWE5qWVhCbGNpQTlJR1oxYm1OMGFXOXVLRzFoZEdOb0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JXRndXMjFoZEdOb1hUdGNiaUFnSUNCOU8xeHVJQ0FnSUM4dklGSmxaMlY0WlhNZ1ptOXlJR2xrWlc1MGFXWjVhVzVuSUdFZ2EyVjVJSFJvWVhRZ2JtVmxaSE1nZEc4Z1ltVWdaWE5qWVhCbFpDNWNiaUFnSUNCMllYSWdjMjkxY21ObElEMGdKeWcvT2ljZ0t5QnJaWGx6S0cxaGNDa3VhbTlwYmlnbmZDY3BJQ3NnSnlrbk8xeHVJQ0FnSUhaaGNpQjBaWE4wVW1WblpYaHdJRDBnVW1WblJYaHdLSE52ZFhKalpTazdYRzRnSUNBZ2RtRnlJSEpsY0d4aFkyVlNaV2RsZUhBZ1BTQlNaV2RGZUhBb2MyOTFjbU5sTENBblp5Y3BPMXh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmloemRISnBibWNwSUh0Y2JpQWdJQ0FnSUhOMGNtbHVaeUE5SUhOMGNtbHVaeUE5UFNCdWRXeHNJRDhnSnljZ09pQW5KeUFySUhOMGNtbHVaenRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBaWE4wVW1WblpYaHdMblJsYzNRb2MzUnlhVzVuS1NBL0lITjBjbWx1Wnk1eVpYQnNZV05sS0hKbGNHeGhZMlZTWldkbGVIQXNJR1Z6WTJGd1pYSXBJRG9nYzNSeWFXNW5PMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCc2FYTjBJRzltSUVoVVRVd2daVzUwYVhScFpYTWdabTl5SUdWelkyRndhVzVuTGx4dUlDQjJZWElnWlhOallYQmxUV0Z3SUQwZ2UxeHVJQ0FnSUNjbUp6b2dKeVpoYlhBN0p5eGNiaUFnSUNBblBDYzZJQ2NtYkhRN0p5eGNiaUFnSUNBblBpYzZJQ2NtWjNRN0p5eGNiaUFnSUNBblhDSW5PaUFuSm5GMWIzUTdKeXhjYmlBZ0lDQmNJaWRjSWpvZ0p5WWplREkzT3ljc1hHNGdJQ0FnSjJBbk9pQW5KaU40TmpBN0oxeHVJQ0I5TzF4dVhHNGdJQzh2SUVaMWJtTjBhVzl1SUdadmNpQmxjMk5oY0dsdVp5QnpkSEpwYm1keklIUnZJRWhVVFV3Z2FXNTBaWEp3YjJ4aGRHbHZiaTVjYmlBZ2RtRnlJRjlsYzJOaGNHVWdQU0JqY21WaGRHVkZjMk5oY0dWeUtHVnpZMkZ3WlUxaGNDazdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2diR2x6ZENCdlppQklWRTFNSUdWdWRHbDBhV1Z6SUdadmNpQjFibVZ6WTJGd2FXNW5MbHh1SUNCMllYSWdkVzVsYzJOaGNHVk5ZWEFnUFNCcGJuWmxjblFvWlhOallYQmxUV0Z3S1R0Y2JseHVJQ0F2THlCR2RXNWpkR2x2YmlCbWIzSWdkVzVsYzJOaGNHbHVaeUJ6ZEhKcGJtZHpJR1p5YjIwZ1NGUk5UQ0JwYm5SbGNuQnZiR0YwYVc5dUxseHVJQ0IyWVhJZ1gzVnVaWE5qWVhCbElEMGdZM0
14938psWVhSbFJYTmpZWEJsY2loMWJtVnpZMkZ3WlUxaGNDazdYRzVjYmlBZ0x5OGdRbmtnWkdWbVlYVnNkQ3dnVlc1a1pYSnpZMjl5WlNCMWMyVnpJRVZTUWkxemRIbHNaU0IwWlcxd2JHRjBaU0JrWld4cGJXbDBaWEp6TGlCRGFHRnVaMlVnZEdobFhHNGdJQzh2SUdadmJHeHZkMmx1WnlCMFpXMXdiR0YwWlNCelpYUjBhVzVuY3lCMGJ5QjFjMlVnWVd4MFpYSnVZWFJwZG1VZ1pHVnNhVzFwZEdWeWN5NWNiaUFnZG1GeUlIUmxiWEJzWVhSbFUyVjBkR2x1WjNNZ1BTQmZKREV1ZEdWdGNHeGhkR1ZUWlhSMGFXNW5jeUE5SUh0Y2JpQWdJQ0JsZG1Gc2RXRjBaVG9nTHp3bEtGdGNYSE5jWEZOZEt6OHBKVDR2Wnl4Y2JpQWdJQ0JwYm5SbGNuQnZiR0YwWlRvZ0x6d2xQU2hiWEZ4elhGeFRYU3MvS1NVK0wyY3NYRzRnSUNBZ1pYTmpZWEJsT2lBdlBDVXRLRnRjWEhOY1hGTmRLejhwSlQ0dloxeHVJQ0I5TzF4dVhHNGdJQzh2SUZkb1pXNGdZM1Z6ZEc5dGFYcHBibWNnWUY4dWRHVnRjR3hoZEdWVFpYUjBhVzVuYzJBc0lHbG1JSGx2ZFNCa2IyNG5kQ0IzWVc1MElIUnZJR1JsWm1sdVpTQmhibHh1SUNBdkx5QnBiblJsY25CdmJHRjBhVzl1TENCbGRtRnNkV0YwYVc5dUlHOXlJR1Z6WTJGd2FXNW5JSEpsWjJWNExDQjNaU0J1WldWa0lHOXVaU0IwYUdGMElHbHpYRzRnSUM4dklHZDFZWEpoYm5SbFpXUWdibTkwSUhSdklHMWhkR05vTGx4dUlDQjJZWElnYm05TllYUmphQ0E5SUM4b0xpbGVMenRjYmx4dUlDQXZMeUJEWlhKMFlXbHVJR05vWVhKaFkzUmxjbk1nYm1WbFpDQjBieUJpWlNCbGMyTmhjR1ZrSUhOdklIUm9ZWFFnZEdobGVTQmpZVzRnWW1VZ2NIVjBJR2x1ZEc4Z1lWeHVJQ0F2THlCemRISnBibWNnYkdsMFpYSmhiQzVjYmlBZ2RtRnlJR1Z6WTJGd1pYTWdQU0I3WEc0Z0lDQWdYQ0luWENJNklGd2lKMXdpTEZ4dUlDQWdJQ2RjWEZ4Y0p6b2dKMXhjWEZ3bkxGeHVJQ0FnSUNkY1hISW5PaUFuY2ljc1hHNGdJQ0FnSjF4Y2JpYzZJQ2R1Snl4Y2JpQWdJQ0FuWEZ4MU1qQXlPQ2M2SUNkMU1qQXlPQ2NzWEc0Z0lDQWdKMXhjZFRJd01qa25PaUFuZFRJd01qa25YRzRnSUgwN1hHNWNiaUFnZG1GeUlHVnpZMkZ3WlZKbFowVjRjQ0E5SUM5Y1hGeGNmQ2Q4WEZ4eWZGeGNibnhjWEhVeU1ESTRmRnhjZFRJd01qa3ZaenRjYmx4dUlDQm1kVzVqZEdsdmJpQmxjMk5oY0dWRGFHRnlLRzFoZEdOb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUNkY1hGeGNKeUFySUdWelkyRndaWE5iYldGMFkyaGRPMXh1SUNCOVhHNWNiaUFnTHk4Z1NXNGdiM0prWlhJZ2RHOGdjSEpsZG1WdWRDQjBhR2x5WkMxd1lYSjBlU0JqYjJSbElHbHVhbVZqZEdsdmJpQjBhSEp2ZFdkb1hHNGdJQzh2SUdCZkxuUmxiWEJzWVhSbFUyVjBkR2x1WjNNdWRtRnlhV0ZpYkdWZ0xDQjNaU0IwWlhOMElHbDBJR0ZuWVdsdWMzUWdkR2hsSUdadmJHeHZkMmx1WnlCeVpXZDFiR0Z5WEc0Z0lDOHZJR1Y0Y0hKbGMzTnBiMjR1SUVsMElHbHpJR2x1ZEdWdWRHbHZibUZzYkhrZ1lTQmlhWFFnYlc5eVpTQnNhV0psY21Gc0lIUm9ZVzRnYW5WemRDQnRZWFJqYUdsdVp5QjJZV3hwWkZ4dUlDQXZMeUJwWkdWdWRHbG1hV1Z5Y3l3Z1luVjBJSE4wYVd4c0lIQnlaWFpsYm5SeklIQnZjM05wWW14bElHeHZiM0JvYjJ4bGN5QjBhSEp2ZFdkb0lHUmxabUYxYkhSeklHOXlYRzRnSUM4dklHUmxjM1J5ZFdOMGRYSnBibWNnWVhOemFXZHViV1Z1ZEM1Y2JpQWdkbUZ5SUdKaGNtVkpaR1Z1ZEdsbWFXVnlJRDBnTDE1Y1hITXFLRnhjZDN4Y1hDUXBLMXhjY3lva0x6dGNibHh1SUNBdkx5QktZWFpoVTJOeWFYQjBJRzFwWTNKdkxYUmxiWEJzWVhScGJtY3NJSE5wYldsc1lYSWdkRzhnU205b2JpQlNaWE5wWnlkeklHbHRjR3hsYldWdWRHRjBhVzl1TGx4dUlDQXZMeUJWYm1SbGNuTmpiM0psSUhSbGJYQnNZWFJwYm1jZ2FHRnVaR3hsY3lCaGNtSnBkSEpoY25rZ1pHVnNhVzFwZEdWeWN5d2djSEpsYzJWeWRtVnpJSGRvYVhSbGMzQmhZMlVzWEc0Z0lDOHZJR0Z1WkNCamIzSnlaV04wYkhrZ1pYTmpZWEJsY3lCeGRXOTBaWE1nZDJsMGFHbHVJR2x1ZEdWeWNHOXNZWFJsWkNCamIyUmxMbHh1SUNBdkx5Qk9Ram9nWUc5c1pGTmxkSFJwYm1kellDQnZibXg1SUdWNGFYTjBjeUJtYjNJZ1ltRmphM2RoY21SeklHTnZiWEJoZEdsaWFXeHBkSGt1WEc0Z0lHWjFibU4wYVc5dUlIUmxiWEJzWVhSbEtIUmxlSFFzSUhObGRIUnBibWR6TENCdmJHUlRaWFIwYVc1bmN5a2dlMXh1SUNBZ0lHbG1JQ2doYzJWMGRHbHVaM01nSmlZZ2IyeGtVMlYwZEdsdVozTXBJSE5sZEhScGJtZHpJRDBnYjJ4a1UyVjBkR2x1WjNNN1hHNGdJQ0FnYzJWMGRHbHVaM01nUFNCa1pXWmhkV3gwY3loN2ZTd2djMlYwZEdsdVozTXNJRjhrTVM1MFpXMXdiR0YwWlZObGRIUnBibWR6S1R0Y2JseHVJQ0FnSUM4dklFTnZiV0pwYm1VZ1pHVnNhVzFwZEdWeWN5QnBiblJ2SUc5dVpTQnlaV2QxYkdGeUlHVjRjSEpsYzNOcGIyNGdkbWxoSUdGc2RHVnlibUYwYVc5dUxseHVJQ0FnSUhaaGNpQnRZWFJqYUdWeUlEMGdVbVZuUlhod0tGdGNiaUFnSUNBZ0lDaHpaWFIwYVc1bmN5NWxjMk5oY0dVZ2ZId2dibTlOWVhSamFDa3VjMjkxY21ObExGeHVJQ0FnSUNBZ0tITmxkSFJwYm1kekxtbHVkR1Z5Y0c5c1lYUmxJSHg4SUc1dlRXRjBZMmdwTG5OdmRYSmpaU3hjYmlBZ0lDQWdJQ2h6WlhSMGFXNW5jeTVsZG1Gc2RXRjBaU0I4ZkNCdWIwMWhkR05vS1M1emIzVnlZMlZjYmlBZ0lDQmRMbXB2YVc0b0ozd25LU0FySUNkOEpDY3NJQ2RuSnlrN1hHNWNiaUFnSUNBdkx5QkRiMjF3YVd4bElIUm9aU0IwWlcxd2JHRjBaU0J6YjNWeVkyVXNJR1Z6WTJGd2FXNW5JSE4wY21sdVp5QnNhWFJsY21Gc2N5QmhjSEJ5YjNCeWFXRjBaV3g1TGx4dUlDQWdJSFpoY2lCcGJtUmxlQ0E5SURBN1hHNGdJQ0FnZG1GeUlITnZkWEpqWlNBOUlGd2lYMTl3S3owblhDSTdYRzRnSUNBZ2RHVjRkQzV5WlhCc1lXTmxLRzFoZEdOb1pYSXNJR1oxYm1OMGFXOXVLRzFoZEdOb0xDQmxjMk5oY0dVc0lHbHVkR1Z5Y0c5c1lYUmxMQ0JsZG1Gc2RXRjBaU3dnYjJabWMyVjBLU0I3WEc0Z0lDQWdJQ0J6YjNWeVkyVWdLejBnZEdWNGRDNXpiR2xqWlNocGJtUmxlQ3dnYjJabWMyVjBLUzV5WlhCc1lXTmxLR1Z6WTJGd1pWSmxaMFY0Y0N3Z1pYTmpZWEJsUTJoaGNpazdYRzRnSUNBZ0lDQnBibVJsZUNBOUlHOW1abk5sZENBcklHMWhkR05vTG14bGJtZDBhRHRjYmx4dUlDQWdJQ0FnYVdZZ0tHVnpZMkZ3WlNrZ2UxeHVJQ0FnSUNBZ0lDQnpiM1Z5WTJVZ0t6MGdYQ0luSzF4Y2JpZ29YMTkwUFNoY0lpQXJJR1Z6WTJGd1pTQXJJRndpS1NrOVBXNTFiR3cvSnljNlh5NWxjMk5oY0dVb1gxOTBLU2tyWEZ4dUoxd2lPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hwYm5SbGNuQnZiR0YwWlNrZ2UxeHVJQ0FnSUNBZ0lDQnpiM1Z5WTJVZ0t6MGdYQ0luSzF4Y2JpZ29YMTkwUFNoY0lpQXJJR2x1ZEdWeWNHOXNZWFJsSUNzZ1hDSXBLVDA5Ym5Wc2JEOG5KenBmWDNRcEsxeGNiaWRjSWp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1pYWmhiSFZoZEdVcElIdGNiaUFnSUNBZ0lDQWdjMjkxY21ObElDczlJRndpSnp0Y1hHNWNJaUFySUdWMllXeDFZWFJsSUNzZ1hDSmNYRzVmWDNBclBTZGNJanRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1FXUnZZbVVnVmsxeklHNWxaV1FnZEdobElHMWhkR05vSUhKbGRIVnlibVZrSUhSdklIQnliMlIxWTJVZ2RHaGxJR052Y25KbFkzUWdiMlptYzJWMExseHVJQ0FnSUNBZ2NtVjBkWEp1SUcxaGRHTm9PMXh1SUNBZ0lIMHBPMXh1SUNBZ0lITnZkWEpqWlNBclBTQmNJaWM3WEZ4dVhDSTdYRzVjYmlBZ0lDQjJZWElnWVhKbmRXMWxiblFnUFNCelpYUjBhVzVuY3k1MllYSnBZV0pzWlR0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5RcElIdGNiaUFnSUNBZ0lDOHZJRWx1YzNWeVpTQmhaMkZwYm5OMElIUm9hWEprTFhCaGNuUjVJR052WkdVZ2FXNXFaV04wYVc5dUxpQW9RMVpGTFRJd01qRXRNak16TlRncFhHNGdJQ0FnSUNCcFppQW9JV0poY21WSlpHVnVkR2xtYVdWeUxuUmxjM1FvWVhKbmRXMWxiblFwS1NCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNkMllYSnBZV0pzWlNCcGN5QnViM1FnWVNCaVlYSmxJR2xrWlc1MGFXWnBaWEk2SUNjZ0t5QmhjbWQxYldWdWRGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1NXWWdZU0IyWVhKcFlXSnNaU0JwY3lCdWIzUWdjM0JsWTJsbWFXVmtMQ0J3YkdGalpTQmtZWFJoSUhaaGJIVmxjeUJwYmlCc2IyTmhiQ0J6WTI5
14938d1pTNWNiaUFnSUNBZ0lITnZkWEpqWlNBOUlDZDNhWFJvS0c5aWFueDhlMzBwZTF4Y2JpY2dLeUJ6YjNWeVkyVWdLeUFuZlZ4Y2JpYzdYRzRnSUNBZ0lDQmhjbWQxYldWdWRDQTlJQ2R2WW1vbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhOdmRYSmpaU0E5SUZ3aWRtRnlJRjlmZEN4ZlgzQTlKeWNzWDE5cVBVRnljbUY1TG5CeWIzUnZkSGx3WlM1cWIybHVMRndpSUN0Y2JpQWdJQ0FnSUZ3aWNISnBiblE5Wm5WdVkzUnBiMjRvS1h0ZlgzQXJQVjlmYWk1allXeHNLR0Z5WjNWdFpXNTBjeXduSnlrN2ZUdGNYRzVjSWlBclhHNGdJQ0FnSUNCemIzVnlZMlVnS3lBbmNtVjBkWEp1SUY5ZmNEdGNYRzRuTzF4dVhHNGdJQ0FnZG1GeUlISmxibVJsY2p0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVnVaR1Z5SUQwZ2JtVjNJRVoxYm1OMGFXOXVLR0Z5WjNWdFpXNTBMQ0FuWHljc0lITnZkWEpqWlNrN1hHNGdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ1pTNXpiM1Z5WTJVZ1BTQnpiM1Z5WTJVN1hHNGdJQ0FnSUNCMGFISnZkeUJsTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCMFpXMXdiR0YwWlNBOUlHWjFibU4wYVc5dUtHUmhkR0VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ5Wlc1a1pYSXVZMkZzYkNoMGFHbHpMQ0JrWVhSaExDQmZKREVwTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0F2THlCUWNtOTJhV1JsSUhSb1pTQmpiMjF3YVd4bFpDQnpiM1Z5WTJVZ1lYTWdZU0JqYjI1MlpXNXBaVzVqWlNCbWIzSWdjSEpsWTI5dGNHbHNZWFJwYjI0dVhHNGdJQ0FnZEdWdGNHeGhkR1V1YzI5MWNtTmxJRDBnSjJaMWJtTjBhVzl1S0NjZ0t5QmhjbWQxYldWdWRDQXJJQ2NwZTF4Y2JpY2dLeUJ6YjNWeVkyVWdLeUFuZlNjN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdWdGNHeGhkR1U3WEc0Z0lIMWNibHh1SUNBdkx5QlVjbUYyWlhKelpYTWdkR2hsSUdOb2FXeGtjbVZ1SUc5bUlHQnZZbXBnSUdGc2IyNW5JR0J3WVhSb1lDNGdTV1lnWVNCamFHbHNaQ0JwY3lCaElHWjFibU4wYVc5dUxDQnBkRnh1SUNBdkx5QnBjeUJwYm5admEyVmtJSGRwZEdnZ2FYUnpJSEJoY21WdWRDQmhjeUJqYjI1MFpYaDBMaUJTWlhSMWNtNXpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdabWx1WVd4Y2JpQWdMeThnWTJocGJHUXNJRzl5SUdCbVlXeHNZbUZqYTJBZ2FXWWdZVzU1SUdOb2FXeGtJR2x6SUhWdVpHVm1hVzVsWkM1Y2JpQWdablZ1WTNScGIyNGdjbVZ6ZFd4MEtHOWlhaXdnY0dGMGFDd2dabUZzYkdKaFkyc3BJSHRjYmlBZ0lDQndZWFJvSUQwZ2RHOVFZWFJvS0hCaGRHZ3BPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0J3WVhSb0xteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb0lXeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdselJuVnVZM1JwYjI0a01TaG1ZV3hzWW1GamF5a2dQeUJtWVd4c1ltRmpheTVqWVd4c0tHOWlhaWtnT2lCbVlXeHNZbUZqYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJ5YjNBZ1BTQnZZbW9nUFQwZ2JuVnNiQ0EvSUhadmFXUWdNQ0E2SUc5aWFsdHdZWFJvVzJsZFhUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d0lEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJQ0FnY0hKdmNDQTlJR1poYkd4aVlXTnJPMXh1SUNBZ0lDQWdJQ0JwSUQwZ2JHVnVaM1JvT3lBdkx5QkZibk4xY21VZ2QyVWdaRzl1SjNRZ1kyOXVkR2x1ZFdVZ2FYUmxjbUYwYVc1bkxseHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2IySnFJRDBnYVhOR2RXNWpkR2x2YmlReEtIQnliM0FwSUQ4Z2NISnZjQzVqWVd4c0tHOWlhaWtnT2lCd2NtOXdPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYjJKcU8xeHVJQ0I5WEc1Y2JpQWdMeThnUjJWdVpYSmhkR1VnWVNCMWJtbHhkV1VnYVc1MFpXZGxjaUJwWkNBb2RXNXBjWFZsSUhkcGRHaHBiaUIwYUdVZ1pXNTBhWEpsSUdOc2FXVnVkQ0J6WlhOemFXOXVLUzVjYmlBZ0x5OGdWWE5sWm5Wc0lHWnZjaUIwWlcxd2IzSmhjbmtnUkU5TklHbGtjeTVjYmlBZ2RtRnlJR2xrUTI5MWJuUmxjaUE5SURBN1hHNGdJR1oxYm1OMGFXOXVJSFZ1YVhGMVpVbGtLSEJ5WldacGVDa2dlMXh1SUNBZ0lIWmhjaUJwWkNBOUlDc3JhV1JEYjNWdWRHVnlJQ3NnSnljN1hHNGdJQ0FnY21WMGRYSnVJSEJ5WldacGVDQS9JSEJ5WldacGVDQXJJR2xrSURvZ2FXUTdYRzRnSUgxY2JseHVJQ0F2THlCVGRHRnlkQ0JqYUdGcGJtbHVaeUJoSUhkeVlYQndaV1FnVlc1a1pYSnpZMjl5WlNCdlltcGxZM1F1WEc0Z0lHWjFibU4wYVc5dUlHTm9ZV2x1S0c5aWFpa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMFlXNWpaU0E5SUY4a01TaHZZbW9wTzF4dUlDQWdJR2x1YzNSaGJtTmxMbDlqYUdGcGJpQTlJSFJ5ZFdVN1hHNGdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1NXNTBaWEp1WVd3Z1puVnVZM1JwYjI0Z2RHOGdaWGhsWTNWMFpTQmdjMjkxY21ObFJuVnVZMkFnWW05MWJtUWdkRzhnWUdOdmJuUmxlSFJnSUhkcGRHZ2diM0IwYVc5dVlXeGNiaUFnTHk4Z1lHRnlaM05nTGlCRVpYUmxjbTFwYm1WeklIZG9aWFJvWlhJZ2RHOGdaWGhsWTNWMFpTQmhJR1oxYm1OMGFXOXVJR0Z6SUdFZ1kyOXVjM1J5ZFdOMGIzSWdiM0lnWVhNZ1lWeHVJQ0F2THlCdWIzSnRZV3dnWm5WdVkzUnBiMjR1WEc0Z0lHWjFibU4wYVc5dUlHVjRaV04xZEdWQ2IzVnVaQ2h6YjNWeVkyVkdkVzVqTENCaWIzVnVaRVoxYm1Nc0lHTnZiblJsZUhRc0lHTmhiR3hwYm1kRGIyNTBaWGgwTENCaGNtZHpLU0I3WEc0Z0lDQWdhV1lnS0NFb1kyRnNiR2x1WjBOdmJuUmxlSFFnYVc1emRHRnVZMlZ2WmlCaWIzVnVaRVoxYm1NcEtTQnlaWFIxY200Z2MyOTFjbU5sUm5WdVl5NWhjSEJzZVNoamIyNTBaWGgwTENCaGNtZHpLVHRjYmlBZ0lDQjJZWElnYzJWc1ppQTlJR0poYzJWRGNtVmhkR1VvYzI5MWNtTmxSblZ1WXk1d2NtOTBiM1I1Y0dVcE8xeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQnpiM1Z5WTJWR2RXNWpMbUZ3Y0d4NUtITmxiR1lzSUdGeVozTXBPMXh1SUNBZ0lHbG1JQ2hwYzA5aWFtVmpkQ2h5WlhOMWJIUXBLU0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUhKbGRIVnliaUJ6Wld4bU8xeHVJQ0I5WEc1Y2JpQWdMeThnVUdGeWRHbGhiR3g1SUdGd2NHeDVJR0VnWm5WdVkzUnBiMjRnWW5rZ1kzSmxZWFJwYm1jZ1lTQjJaWEp6YVc5dUlIUm9ZWFFnYUdGeklHaGhaQ0J6YjIxbElHOW1JR2wwYzF4dUlDQXZMeUJoY21kMWJXVnVkSE1nY0hKbExXWnBiR3hsWkN3Z2QybDBhRzkxZENCamFHRnVaMmx1WnlCcGRITWdaSGx1WVcxcFl5QmdkR2hwYzJBZ1kyOXVkR1Y0ZEM0Z1lGOWdJR0ZqZEhOY2JpQWdMeThnWVhNZ1lTQndiR0ZqWldodmJHUmxjaUJpZVNCa1pXWmhkV3gwTENCaGJHeHZkMmx1WnlCaGJua2dZMjl0WW1sdVlYUnBiMjRnYjJZZ1lYSm5kVzFsYm5SeklIUnZJR0psWEc0Z0lDOHZJSEJ5WlMxbWFXeHNaV1F1SUZObGRDQmdYeTV3WVhKMGFXRnNMbkJzWVdObGFHOXNaR1Z5WUNCbWIzSWdZU0JqZFhOMGIyMGdjR3hoWTJWb2IyeGtaWElnWVhKbmRXMWxiblF1WEc0Z0lIWmhjaUJ3WVhKMGFXRnNJRDBnY21WemRFRnlaM1Z0Wlc1MGN5aG1kVzVqZEdsdmJpaG1kVzVqTENCaWIzVnVaRUZ5WjNNcElIdGNiaUFnSUNCMllYSWdjR3hoWTJWb2IyeGtaWElnUFNCd1lYSjBhV0ZzTG5Cc1lXTmxhRzlzWkdWeU8xeHVJQ0FnSUhaaGNpQmliM1Z1WkNBOUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhCdmMybDBhVzl1SUQwZ01Dd2diR1Z1WjNSb0lEMGdZbTkxYm1SQmNtZHpMbXhsYm1kMGFEdGNiaUFnSUNBZ0lIWmhjaUJoY21keklEMGdRWEp5WVhrb2JHVnVaM1JvS1R0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2JHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWVhKbmMxdHBYU0E5SUdKdmRXNWtRWEpuYzF0cFhTQTlQVDBnY0d4aFkyVm9iMnhrWlhJZ1B5QmhjbWQxYldWdWRITmJjRzl6YVhScGIyNHJLMTBnT2lCaWIzVnVaRUZ5WjNOYmFWMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjNhR2xzWlNBb2NHOXphWFJwYjI0Z1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb0tTQmhjbWR6TG5CMWMyZ29ZWEpuZFcxbGJuUnpXM0J2YzJsMGFXOXVLeXRkS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJsZUdWamRYUmxRbTkxYm1Rb1puVnVZeXdnWW05MWJtUXNJSFJvYVhNc0lIUm9hWE1zSUdGeVozTXBPMXh1SUNBZ0lIMDdYRzRnSUNBZ2NtVjBkWEp1SUdKdmRXNWtPMXh1SUNCOUtUdGNibHh1SUNCd1lYSjBhV0ZzTG5Cc1lXTmxhRzlzWkdWeUlEMGdYeVF4TzF4dVhHNGdJQzh2SUVOeVpXRjBaU0JoSUdaMWJtTjBhVzl1SUdKdmRXNWtJSFJ2SUdFZ1oybDJaVzRnYjJKcVpXTjBJQ2hoYzNOcFoyNXBibWNnWUhSb2FYTmdMQ0JoYm1RZ1lYSm5kVzFsYm5SekxGeHVJQ0F2THlCdmNIUnBiMjVoYkd4NUtTNWNiaUFnZG1GeUlHSnBibVFnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLR1oxYm1Nc0lHTnZiblJsZUhRc0lHRnlaM01wSUh0Y2JpQWdJQ0JwWmlBb0lXbHpSblZ1WTNScGIyNGtNU2htZFc1aktTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWduUW1sdVpDQnRkWE4wSUdKbElHTmhiR3hsWkNCdmJpQmhJR1oxYm1OMGFXOXVKeWs3WEc0Z0lDQWdkbUZ5SUdKdmRXNWtJRDBnY21WemRFRnlaM1Z0Wlc1MGN5aG1kVzVqZEdsdmJpaGpZV3hzUVhKbmN5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVjRaV04xZEdWQ2IzVnVaQ2htZFc1akxDQmliM1Z1WkN3Z1kyOXVkR1Y0ZEN3Z2RHaHBjeXdnWVhKbmN5NWpiMjVqWVhRb1kyRnNiRUZ5WjNNcEtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnWW05MWJtUTdYRzRnSUgwcE8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCbWIzSWdZMjlzYkdWamRHbHZiaUJ0WlhSb2IyUnpJSFJ2SUdSbGRHVnliV2x1WlNCM2FHVjBhR1Z5SUdFZ1kyOXNiR1ZqZEdsdmJseHVJQ0F2THlCemFHOTFiR1FnWW1VZ2FYUmxjbUYwWldRZ1lYTWdZVzRnWVhKeVlYa2diM0lnWVhNZ1lXNGdiMkpxWldOMExseHVJQ0F2THlCU1pXeGhkR1ZrT2lCb2RIUndjem92TDNCbGIzQnNaUzV0YjNwcGJHeGhMbTl5Wnk5K2FtOXlaVzVrYjNKbVppOWxjell0WkhKaFpuUXVhSFJ0YkNOelpXTXRkRzlzWlc1bmRHaGNiaUFnTHk4Z1FYWnZhV1J6SUdFZ2RtVnllU0J1WVhOMGVTQnBUMU1nT0NCS1NWUWdZblZuSUc5dUlFRlNUUzAyTkM0Z0l6SXdPVFJjYmlBZ2RtRnlJR2x6UVhKeVlYbE1hV3RsSUQwZ1kzSmxZWFJsVTJsNlpWQnliM0JsY25SNVEyaGxZMnNvWjJWMFRHVnVaM1JvS1R0Y2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCcGJYQnNaVzFsYm5SaGRHbHZiaUJ2WmlCaElISmxZM1Z5YzJsMlpTQmdabXhoZEhSbGJtQWdablZ1WTNScGIyNHVYRzRnSUdaMWJtTjBhVzl1SUdac1lYUjBaVzRrTVNocGJuQjFkQ3dnWkdWd2RHZ3NJSE4wY21samRDd2diM1YwY0hWMEtTQjdYRzRnSUNBZ2IzVjBjSFYwSUQwZ2IzVjBjSFYwSUh4OElGdGRPMXh1SUNBZ0lHbG1JQ2doWkdWd2RHZ2dKaVlnWkdWd2RHZ2dJVDA5SURBcElIdGNiaUFnSUNBZ0lHUmxjSFJvSUQwZ1NXNW1hVzVwZEhrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoa1pYQjBhQ0E4UFNBd0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IzVjBjSFYwTG1OdmJtTmhkQ2hwYm5CMWRDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnBaSGdnUFNCdmRYUndkWFF1YkdWdVozUm9PMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb2FXNXdkWFFwT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjJZV3gxWlNBOUlHbHVjSFYwVzJsZE8xeHVJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYbE1hV3RsS0haaGJIVmxLU0FtSmlBb2FYTkJjbkpoZVNoMllXeDFaU2tnZkh3Z2FYTkJjbWQxYldWdWRITWtNU2gyWVd4MVpTa3BLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFWnNZWFIwWlc0Z1kzVnljbVZ1ZENCc1pYWmxiQ0J2WmlCaGNuSmhlU0J2Y2lCaGNtZDFiV1Z1ZEhNZ2IySnFaV04wTGx4dUlDQWdJQ0FnSUNCcFppQW9aR1Z3ZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pteGhkSFJsYmlReEtIWmhiSFZsTENCa1pYQjBhQ0F0SURFc0lITjBjbWxqZEN3Z2IzVjBjSFYwS1R0Y2JpQWdJQ0FnSUNBZ0lDQnBaSGdnUFNCdmRYUndkWFF1YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnFJRDBnTUN3Z2JHVnVJRDBnZG1Gc2RXVXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaHFJRHdnYkdWdUtTQnZkWFJ3ZFhSYmFXUjRLeXRkSUQwZ2RtRnNkV1ZiYWlzclhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2doYzNSeWFXTjBLU0I3WEc0Z0lDQWdJQ0FnSUc5MWRIQjFkRnRwWkhncksxMGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzkxZEhCMWREdGNiaUFnZlZ4dVhHNGdJQzh2SUVKcGJtUWdZU0J1ZFcxaVpYSWdiMllnWVc0Z2IySnFaV04wSjNNZ2JXVjBhRzlrY3lCMGJ5QjBhR0YwSUc5aWFtVmpkQzRnVW1WdFlXbHVhVzVuSUdGeVozVnRaVzUwYzF4dUlDQXZMeUJoY21VZ2RHaGxJRzFsZEdodlpDQnVZVzFsY3lCMGJ5QmlaU0JpYjNWdVpDNGdWWE5sWm5Wc0lHWnZjaUJsYm5OMWNtbHVaeUIwYUdGMElHRnNiQ0JqWVd4c1ltRmphM05jYmlBZ0x5OGdaR1ZtYVc1bFpDQnZiaUJoYmlCdlltcGxZM1FnWW1Wc2IyNW5JSFJ2SUdsMExseHVJQ0IyWVhJZ1ltbHVaRUZzYkNBOUlISmxjM1JCY21kMWJXVnVkSE1vWm5WdVkzUnBiMjRvYjJKcUxDQnJaWGx6S1NCN1hHNGdJQ0FnYTJWNWN5QTlJR1pzWVhSMFpXNGtNU2hyWlhsekxDQm1ZV3h6WlN3Z1ptRnNjMlVwTzF4dUlDQWdJSFpoY2lCcGJtUmxlQ0E5SUd0bGVYTXViR1Z1WjNSb08xeHVJQ0FnSUdsbUlDaHBibVJsZUNBOElERXBJSFJvY205M0lHNWxkeUJGY25KdmNpZ25ZbWx1WkVGc2JDQnRkWE4wSUdKbElIQmhjM05sWkNCbWRXNWpkR2x2YmlCdVlXMWxjeWNwTzF4dUlDQWdJSGRvYVd4bElDaHBibVJsZUMwdEtTQjdYRzRnSUNBZ0lDQjJZWElnYTJWNUlEMGdhMlY1YzF0cGJtUmxlRjA3WEc0Z0lDQWdJQ0J2WW1wYmEyVjVYU0E5SUdKcGJtUW9iMkpxVzJ0bGVWMHNJRzlpYWlrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lIMHBPMXh1WEc0Z0lDOHZJRTFsYlc5cGVtVWdZVzRnWlhod1pXNXphWFpsSUdaMWJtTjBhVzl1SUdKNUlITjBiM0pwYm1jZ2FYUnpJSEpsYzNWc2RITXVYRzRnSUdaMWJtTjBhVzl1SUcxbGJXOXBlbVVvWm5WdVl5d2dhR0Z6YUdWeUtTQjdYRzRnSUNBZ2RtRnlJRzFsYlc5cGVtVWdQU0JtZFc1amRHbHZiaWhyWlhrcElIdGNiaUFnSUNBZ0lIWmhjaUJqWVdOb1pTQTlJRzFsYlc5cGVtVXVZMkZqYUdVN1hHNGdJQ0FnSUNCMllYSWdZV1JrY21WemN5QTlJQ2NuSUNzZ0tHaGhjMmhsY2lBL0lHaGhjMmhsY2k1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBJRG9nYTJWNUtUdGNiaUFnSUNBZ0lHbG1JQ2doYUdGekpERW9ZMkZqYUdVc0lHRmtaSEpsYzNNcEtTQmpZV05vWlZ0aFpHUnlaWE56WFNBOUlHWjFibU11WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCallXTm9aVnRoWkdSeVpYTnpYVHRjYmlBZ0lDQjlPMXh1SUNBZ0lHMWxiVzlwZW1VdVkyRmphR1VnUFNCN2ZUdGNiaUFnSUNCeVpYUjFjbTRnYldWdGIybDZaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFUmxiR0Y1Y3lCaElHWjFibU4wYVc5dUlHWnZjaUIwYUdVZ1oybDJaVzRnYm5WdFltVnlJRzltSUcxcGJHeHBjMlZqYjI1a2N5d2dZVzVrSUhSb1pXNGdZMkZzYkhOY2JpQWdMeThnYVhRZ2QybDBhQ0IwYUdVZ1lYSm5kVzFsYm5SeklITjFjSEJzYVdWa0xseHVJQ0IyWVhJZ1pHVnNZWGtnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLR1oxYm1Nc0lIZGhhWFFzSUdGeVozTXBJSHRjYmlBZ0lDQnlaWFIxY200Z2MyVjBWR2x0Wlc5MWRDaG1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQm1kVzVqTG1Gd2NHeDVLRzUxYkd3c0lHRnlaM01wTzF4dUlDQWdJSDBzSUhkaGFYUXBPMXh1SUNCOUtUdGNibHh1SUNBdkx5QkVaV1psY25NZ1lTQm1kVzVqZEdsdmJpd2djMk5vWldSMWJHbHVaeUJwZENCMGJ5QnlkVzRnWVdaMFpYSWdkR2hsSUdOMWNuSmxiblFnWTJGc2JDQnpkR0ZqYXlCb1lYTmNiaUFnTHk4Z1kyeGxZWEpsWkM1Y2JpQWdkbUZ5SUdSbFptVnlJRDBnY0dGeWRHbGhiQ2hrWld4aGVTd2dYeVF4TENBeEtUdGNibHh1SUNBdkx5QlNaWFIxY201eklHRWdablZ1WTNScGIyNHNJSFJvWVhRc0lIZG9aVzRnYVc1MmIydGxaQ3dnZDJsc2JDQnZibXg1SUdKbElIUnlhV2RuWlhKbFpDQmhkQ0J0YjNOMElHOXVZMlZjYmlBZ0x5OGdaSFZ5YVc1bklHRWdaMmwyWlc0Z2QybHVaRzkzSUc5bUlIUnBiV1V1SUU1dmNtMWhiR3g1TENCMGFHVWdkR2h5YjNSMGJHVmtJR1oxYm1OMGFXOXVJSGRwYkd3Z2NuVnVYRzRnSUM4dklHRnpJRzExWTJnZ1lYTWdhWFFnWTJGdUxDQjNhWFJvYjNWMElHVjJaWElnWjI5cGJtY2diVzl5WlNCMGFHRnVJRzl1WTJVZ2NHVnlJR0IzWVdsMFlDQmtkWEpoZEdsdmJqdGNiaUFnTHk4Z1luVjBJR2xtSUhsdmRTZGtJR3hwYTJVZ2RHOGdaR2x6WVdKc1pTQjBhR1VnWlhobFkzVjBhVzl1SUc5dUlIUm9aU0JzWldGa2FXNW5JR1ZrWjJVc0lIQmhjM05jYmlBZ0x5OGdZSHRzWldGa2FXNW5PaUJtWVd4elpYMWdMaUJVYnlCa2FYTmhZbXhsSUdWNFpXTjFkR2x2YmlCdmJpQjBhR1VnZEhKaGFXeHBibWNnWldSblpTd2daR2wwZEc4dVhHNGdJR1oxYm1OMGFXOXVJSFJvY205MGRHeGxLR1oxYm1Nc0lIZGhhWFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0IyWVhJZ2RHbHRaVzkxZEN3Z1kyOXVkR1Y0ZEN3Z1lYSm5jeXdnY21WemRXeDBPMXh1SUNBZ0lIWmhjaUJ3Y21WMmFXOTFjeUE5SURBN1hHNGdJQ0FnYVdZZ0tDRnZjSFJwYjI1ektTQnZjSFJwYjI1eklEMGdlMzA3WEc1Y2JpQWdJQ0IyWVhJZ2JHRjBaWElnUFNCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNBZ0lIQnlaWFpwYjNWeklEMGdiM0IwYVc5dWN5NXNaV0ZrYVc1bklEMDlQU0JtWVd4elpTQS9JREFnT2lCdWIzY29LVHRjYmlBZ0lDQWdJSFJwYldWdmRYUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1puVnVZeTVoY0hCc2VTaGpiMjUwWlhoMExDQmhjbWR6S1R0Y2JpQWdJQ0FnSUdsbUlDZ2hkR2x0Wlc5MWRDa2dZMjl1ZEdWNGRDQTlJR0Z5WjNNZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0IyWVhJZ2RHaHliM1IwYkdWa0l
14938EMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1gyNXZkeUE5SUc1dmR5Z3BPMXh1SUNBZ0lDQWdhV1lnS0NGd2NtVjJhVzkxY3lBbUppQnZjSFJwYjI1ekxteGxZV1JwYm1jZ1BUMDlJR1poYkhObEtTQndjbVYyYVc5MWN5QTlJRjl1YjNjN1hHNGdJQ0FnSUNCMllYSWdjbVZ0WVdsdWFXNW5JRDBnZDJGcGRDQXRJQ2hmYm05M0lDMGdjSEpsZG1sdmRYTXBPMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJSFJvYVhNN1hHNGdJQ0FnSUNCaGNtZHpJRDBnWVhKbmRXMWxiblJ6TzF4dUlDQWdJQ0FnYVdZZ0tISmxiV0ZwYm1sdVp5QThQU0F3SUh4OElISmxiV0ZwYm1sdVp5QStJSGRoYVhRcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hScGJXVnZkWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiR1ZoY2xScGJXVnZkWFFvZEdsdFpXOTFkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2RHbHRaVzkxZENBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NISmxkbWx2ZFhNZ1BTQmZibTkzTzF4dUlDQWdJQ0FnSUNCeVpYTjFiSFFnUFNCbWRXNWpMbUZ3Y0d4NUtHTnZiblJsZUhRc0lHRnlaM01wTzF4dUlDQWdJQ0FnSUNCcFppQW9JWFJwYldWdmRYUXBJR052Ym5SbGVIUWdQU0JoY21keklEMGdiblZzYkR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb0lYUnBiV1Z2ZFhRZ0ppWWdiM0IwYVc5dWN5NTBjbUZwYkdsdVp5QWhQVDBnWm1Gc2MyVXBJSHRjYmlBZ0lDQWdJQ0FnZEdsdFpXOTFkQ0E5SUhObGRGUnBiV1Z2ZFhRb2JHRjBaWElzSUhKbGJXRnBibWx1WnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhSEp2ZEhSc1pXUXVZMkZ1WTJWc0lEMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaVzkxZENrN1hHNGdJQ0FnSUNCd2NtVjJhVzkxY3lBOUlEQTdYRzRnSUNBZ0lDQjBhVzFsYjNWMElEMGdZMjl1ZEdWNGRDQTlJR0Z5WjNNZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2h5YjNSMGJHVmtPMXh1SUNCOVhHNWNiaUFnTHk4Z1YyaGxiaUJoSUhObGNYVmxibU5sSUc5bUlHTmhiR3h6SUc5bUlIUm9aU0J5WlhSMWNtNWxaQ0JtZFc1amRHbHZiaUJsYm1SekxDQjBhR1VnWVhKbmRXMWxiblJjYmlBZ0x5OGdablZ1WTNScGIyNGdhWE1nZEhKcFoyZGxjbVZrTGlCVWFHVWdaVzVrSUc5bUlHRWdjMlZ4ZFdWdVkyVWdhWE1nWkdWbWFXNWxaQ0JpZVNCMGFHVWdZSGRoYVhSZ1hHNGdJQzh2SUhCaGNtRnRaWFJsY2k0Z1NXWWdZR2x0YldWa2FXRjBaV0FnYVhNZ2NHRnpjMlZrTENCMGFHVWdZWEpuZFcxbGJuUWdablZ1WTNScGIyNGdkMmxzYkNCaVpWeHVJQ0F2THlCMGNtbG5aMlZ5WldRZ1lYUWdkR2hsSUdKbFoybHVibWx1WnlCdlppQjBhR1VnYzJWeGRXVnVZMlVnYVc1emRHVmhaQ0J2WmlCaGRDQjBhR1VnWlc1a0xseHVJQ0JtZFc1amRHbHZiaUJrWldKdmRXNWpaU2htZFc1akxDQjNZV2wwTENCcGJXMWxaR2xoZEdVcElIdGNiaUFnSUNCMllYSWdkR2x0Wlc5MWRDd2djSEpsZG1sdmRYTXNJR0Z5WjNNc0lISmxjM1ZzZEN3Z1kyOXVkR1Y0ZER0Y2JseHVJQ0FnSUhaaGNpQnNZWFJsY2lBOUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhCaGMzTmxaQ0E5SUc1dmR5Z3BJQzBnY0hKbGRtbHZkWE03WEc0Z0lDQWdJQ0JwWmlBb2QyRnBkQ0ErSUhCaGMzTmxaQ2tnZTF4dUlDQWdJQ0FnSUNCMGFXMWxiM1YwSUQwZ2MyVjBWR2x0Wlc5MWRDaHNZWFJsY2l3Z2QyRnBkQ0F0SUhCaGMzTmxaQ2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYVcxbGIzVjBJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGJXMWxaR2xoZEdVcElISmxjM1ZzZENBOUlHWjFibU11WVhCd2JIa29ZMjl1ZEdWNGRDd2dZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lDOHZJRlJvYVhNZ1kyaGxZMnNnYVhNZ2JtVmxaR1ZrSUdKbFkyRjFjMlVnWUdaMWJtTmdJR05oYmlCeVpXTjFjbk5wZG1Wc2VTQnBiblp2YTJVZ1lHUmxZbTkxYm1ObFpHQXVYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHbHRaVzkxZENrZ1lYSm5jeUE5SUdOdmJuUmxlSFFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjJZWElnWkdWaWIzVnVZMlZrSUQwZ2NtVnpkRUZ5WjNWdFpXNTBjeWhtZFc1amRHbHZiaWhmWVhKbmN5a2dlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJSFJvYVhNN1hHNGdJQ0FnSUNCaGNtZHpJRDBnWDJGeVozTTdYRzRnSUNBZ0lDQndjbVYyYVc5MWN5QTlJRzV2ZHlncE8xeHVJQ0FnSUNBZ2FXWWdLQ0YwYVcxbGIzVjBLU0I3WEc0Z0lDQWdJQ0FnSUhScGJXVnZkWFFnUFNCelpYUlVhVzFsYjNWMEtHeGhkR1Z5TENCM1lXbDBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHRiV1ZrYVdGMFpTa2djbVZ6ZFd4MElEMGdablZ1WXk1aGNIQnNlU2hqYjI1MFpYaDBMQ0JoY21kektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0JrWldKdmRXNWpaV1F1WTJGdVkyVnNJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNCamJHVmhjbFJwYldWdmRYUW9kR2x0Wlc5MWRDazdYRzRnSUNBZ0lDQjBhVzFsYjNWMElEMGdZWEpuY3lBOUlHTnZiblJsZUhRZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdaR1ZpYjNWdVkyVmtPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdabWx5YzNRZ1puVnVZM1JwYjI0Z2NHRnpjMlZrSUdGeklHRnVJR0Z5WjNWdFpXNTBJSFJ2SUhSb1pTQnpaV052Ym1Rc1hHNGdJQzh2SUdGc2JHOTNhVzVuSUhsdmRTQjBieUJoWkdwMWMzUWdZWEpuZFcxbGJuUnpMQ0J5ZFc0Z1kyOWtaU0JpWldadmNtVWdZVzVrSUdGbWRHVnlMQ0JoYm1SY2JpQWdMeThnWTI5dVpHbDBhVzl1WVd4c2VTQmxlR1ZqZFhSbElIUm9aU0J2Y21sbmFXNWhiQ0JtZFc1amRHbHZiaTVjYmlBZ1puVnVZM1JwYjI0Z2QzSmhjQ2htZFc1akxDQjNjbUZ3Y0dWeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCaGNuUnBZV3dvZDNKaGNIQmxjaXdnWm5WdVl5azdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUdFZ2JtVm5ZWFJsWkNCMlpYSnphVzl1SUc5bUlIUm9aU0J3WVhOelpXUXRhVzRnY0hKbFpHbGpZWFJsTGx4dUlDQm1kVzVqZEdsdmJpQnVaV2RoZEdVb2NISmxaR2xqWVhSbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNGd2NtVmthV05oZEdVdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVhNZ2RHaGxJR052YlhCdmMybDBhVzl1SUc5bUlHRWdiR2x6ZENCdlppQm1kVzVqZEdsdmJuTXNJR1ZoWTJoY2JpQWdMeThnWTI5dWMzVnRhVzVuSUhSb1pTQnlaWFIxY200Z2RtRnNkV1VnYjJZZ2RHaGxJR1oxYm1OMGFXOXVJSFJvWVhRZ1ptOXNiRzkzY3k1Y2JpQWdablZ1WTNScGIyNGdZMjl0Y0c5elpTZ3BJSHRjYmlBZ0lDQjJZWElnWVhKbmN5QTlJR0Z5WjNWdFpXNTBje
14938nRjYmlBZ0lDQjJZWElnYzNSaGNuUWdQU0JoY21kekxteGxibWQwYUNBdElERTdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2tnUFNCemRHRnlkRHRjYmlBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCaGNtZHpXM04wWVhKMFhTNWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnZDJocGJHVWdLR2t0TFNrZ2NtVnpkV3gwSUQwZ1lYSm5jMXRwWFM1allXeHNLSFJvYVhNc0lISmxjM1ZzZENrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUdFZ1puVnVZM1JwYjI0Z2RHaGhkQ0IzYVd4c0lHOXViSGtnWW1VZ1pYaGxZM1YwWldRZ2IyNGdZVzVrSUdGbWRHVnlJSFJvWlNCT2RHZ2dZMkZzYkM1Y2JpQWdablZ1WTNScGIyNGdZV1owWlhJb2RHbHRaWE1zSUdaMWJtTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQnBaaUFvTFMxMGFXMWxjeUE4SURFcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWjFibU11WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnVW1WMGRYSnVjeUJoSUdaMWJtTjBhVzl1SUhSb1lYUWdkMmxzYkNCdmJteDVJR0psSUdWNFpXTjFkR1ZrSUhWd0lIUnZJQ2hpZFhRZ2JtOTBJR2x1WTJ4MVpHbHVaeWtnZEdobFhHNGdJQzh2SUU1MGFDQmpZV3hzTGx4dUlDQm1kVzVqZEdsdmJpQmlaV1p2Y21Vb2RHbHRaWE1zSUdaMWJtTXBJSHRjYmlBZ0lDQjJZWElnYldWdGJ6dGNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNCcFppQW9MUzEwYVcxbGN5QStJREFwSUh0Y2JpQWdJQ0FnSUNBZ2JXVnRieUE5SUdaMWJtTXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhVzFsY3lBOFBTQXhLU0JtZFc1aklEMGdiblZzYkR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ0Wlcxdk8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZMeUJTWlhSMWNtNXpJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQjNhV3hzSUdKbElHVjRaV04xZEdWa0lHRjBJRzF2YzNRZ2IyNWxJSFJwYldVc0lHNXZJRzFoZEhSbGNpQm9iM2RjYmlBZ0x5OGdiMlowWlc0Z2VXOTFJR05oYkd3Z2FYUXVJRlZ6WldaMWJDQm1iM0lnYkdGNmVTQnBibWwwYVdGc2FYcGhkR2x2Ymk1Y2JpQWdkbUZ5SUc5dVkyVWdQU0J3WVhKMGFXRnNLR0psWm05eVpTd2dNaWs3WEc1Y2JpQWdMeThnVW1WMGRYSnVjeUIwYUdVZ1ptbHljM1FnYTJWNUlHOXVJR0Z1SUc5aWFtVmpkQ0IwYUdGMElIQmhjM05sY3lCaElIUnlkWFJvSUhSbGMzUXVYRzRnSUdaMWJtTjBhVzl1SUdacGJtUkxaWGtvYjJKcUxDQndjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQndjbVZrYVdOaGRHVWdQU0JqWWlod2NtVmthV05oZEdVc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUhaaGNpQmZhMlY1Y3lBOUlHdGxlWE1vYjJKcUtTd2dhMlY1TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNaVzVuZEdnZ1BTQmZhMlY1Y3k1c1pXNW5kR2c3SUdrZ1BDQnNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYTJWNUlEMGdYMnRsZVhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvY0hKbFpHbGpZWFJsS0c5aWFsdHJaWGxkTENCclpYa3NJRzlpYWlrcElISmxkSFZ5YmlCclpYazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnWm5WdVkzUnBiMjRnZEc4Z1oyVnVaWEpoZEdVZ1lGOHVabWx1WkVsdVpHVjRZQ0JoYm1RZ1lGOHVabWx1WkV4aGMzUkpibVJsZUdBdVhHNGdJR1oxYm1OMGFXOXVJR055WldGMFpWQnlaV1JwWTJGMFpVbHVaR1Y0Um1sdVpHVnlLR1JwY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWhoY25KaGVTd2djSEpsWkdsallYUmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0J3Y21Wa2FXTmhkR1VnUFNCallpaHdjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdkbUZ5SUd4bGJtZDBhQ0E5SUdkbGRFeGxibWQwYUNoaGNuSmhlU2s3WEc0Z0lDQWdJQ0IyWVhJZ2FXNWtaWGdnUFNCa2FYSWdQaUF3SUQ4Z01DQTZJR3hsYm1kMGFDQXRJREU3WEc0Z0lDQWdJQ0JtYjNJZ0tEc2dhVzVrWlhnZ1BqMGdNQ0FtSmlCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ2dLejBnWkdseUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtVmthV05oZEdVb1lYSnlZWGxiYVc1a1pYaGRMQ0JwYm1SbGVDd2dZWEp5WVhrcEtTQnlaWFIxY200Z2FXNWtaWGc3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5Ym5NZ2RHaGxJR1pwY25OMElHbHVaR1Y0SUc5dUlHRnVJR0Z5Y21GNUxXeHBhMlVnZEdoaGRDQndZWE56WlhNZ1lTQjBjblYwYUNCMFpYTjBMbHh1SUNCMllYSWdabWx1WkVsdVpHVjRJRDBnWTNKbFlYUmxVSEpsWkdsallYUmxTVzVrWlhoR2FXNWtaWElvTVNrN1hHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdiR0Z6ZENCcGJtUmxlQ0J2YmlCaGJpQmhjbkpoZVMxc2FXdGxJSFJvWVhRZ2NHRnpjMlZ6SUdFZ2RISjFkR2dnZEdWemRDNWNiaUFnZG1GeUlHWnBibVJNWVhOMFNXNWtaWGdnUFNCamNtVmhkR1ZRY21Wa2FXTmhkR1ZKYm1SbGVFWnBibVJsY2lndE1TazdYRzVjYmlBZ0x5OGdWWE5sSUdFZ1kyOXRjR0Z5WVhSdmNpQm1kVzVqZEdsdmJpQjBieUJtYVdkMWNtVWdiM1YwSUhSb1pTQnpiV0ZzYkdWemRDQnBibVJsZUNCaGRDQjNhR2xqYUZ4dUlDQXZMeUJoYmlCdlltcGxZM1FnYzJodmRXeGtJR0psSUdsdWMyVnlkR1ZrSUhOdklHRnpJSFJ2SUcxaGFXNTBZV2x1SUc5eVpHVnlMaUJWYzJWeklHSnBibUZ5ZVNCelpXRnlZMmd1WEc0Z0lHWjFibU4wYVc5dUlITnZjblJsWkVsdVpHVjRLR0Z5Y21GNUxDQnZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDd2dNU2s3WEc0Z0lDQWdkbUZ5SUhaaGJIVmxJRDBnYVhSbGNtRjBaV1VvYjJKcUtUdGNiaUFnSUNCMllYSWdiRzkzSUQwZ01Dd2dhR2xuYUNBOUlHZGxkRXhsYm1kMGFDaGhjbkpoZVNrN1hHNGdJQ0FnZDJocGJHVWdLR3h2ZHlBOElHaHBaMmdwSUh0Y2JpQWdJQ0FnSUhaaGNpQnRhV1FnUFNCTllYUm9MbVpzYjI5eUtDaHNiM2NnS3lCb2FXZG9LU0F2SURJcE8xeHVJQ0FnSUNBZ2FXWWdLR2wwWlhKaGRHVmxLR0Z5Y21GNVcyMXBaRjBwSUR3Z2RtRnNkV1VwSUd4dmR5QTlJRzFwWkNBcklERTdJR1ZzYzJVZ2FHbG5hQ0E5SUcxcFpEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR3h2ZHp0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJ2SUdkbGJtVnlZWFJsSUhSb1pTQmdYeTVwYm1SbGVFOW1ZQ0JoYm1RZ1lGOHViR0Z6ZEVsdVpHVjRUMlpnSUdaMWJtTjBhVzl1Y3k1Y2JpQWdablZ1WTNScGIyNGdZM0psWVhSbFNXNWtaWGhHYVc1a1pYSW9aR2x5TENCd2NtVmthV05oZEdWR2FXNWtMQ0J6YjNKMFpXUkpibVJsZUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWhoY25KaGVTd2dhWFJsYlN3Z2FXUjRLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2FTQTlJREFzSUd4bGJtZDBhQ0E5SUdkbGRFeGxibWQwYUNoaGNuSmhlU2s3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdsa2VDQTlQU0FuYm5WdFltVnlKeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9aR2x5SUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdrZ1BTQnBaSGdnUGowZ01DQS9JR2xrZUNBNklFMWhkR2d1YldGNEtHbGtlQ0FySUd4bGJtZDBhQ3dnYVNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdhV1I0SUQ0OUlEQWdQeUJOWVhSb0xtMXBiaWhwWkhnZ0t5QXhMQ0JzWlc1bmRHZ3BJRG9nYVdSNElDc2diR1Z1WjNSb0lDc2dNVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoemIzSjBaV1JKYm1SbGVDQW1KaUJwWkhnZ0ppWWdiR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQWdJR2xrZUNBOUlITnZjblJsWkVsdVpHVjRLR0Z5Y21GNUxDQnBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGeWNtRjVXMmxrZUYwZ1BUMDlJR2wwWlcwZ1B5QnBaSGdnT2lBdE1UdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2hwZEdWdElDRTlQU0JwZEdWdEtTQjdYRzRnSUNBZ0lDQWdJR2xrZUNBOUlIQnlaV1JwWTJGMFpVWnBibVFvYzJ4cFkyVXVZMkZzYkNoaGNuSmhlU3dnYVN3Z2JHVnVaM1JvS1N3Z2FYTk9ZVTRrTVNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCcFpIZ2dQajBnTUNBL0lHbGtlQ0FySUdrZ09pQXRNVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1p2Y2lBb2FXUjRJRDBnWkdseUlENGdNQ0EvSUdrZ09pQnNaVzVuZEdnZ0xTQXhPeUJwWkhnZ1BqMGdNQ0FtSmlCcFpIZ2dQQ0JzWlc1bmRHZzdJR2xrZUNBclBTQmthWElwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5Y21GNVcybGtlRjBnUFQwOUlHbDBaVzBwSUhKbGRIVnliaUJwWkhnN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnTFRFN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRkpsZEhWeWJpQjBhR1VnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1pwY25OMElHOWpZM1Z5Y21WdVkyVWdiMllnWVc0Z2FYUmxiU0JwYmlCaGJpQmhjbkpoZVN4Y2JpQWdMeThnYjNJZ0xURWdhV1lnZEdobElHbDBaVzBnYVhNZ2JtOTBJR2x1WTJ4MVpHVmtJR2x1SUhSb1pTQmhjbkpoZVM1Y2JpQWdMeThnU1dZZ2RHaGxJR0Z5Y21GNUlHbHpJR3hoY21kbElHRnVaQ0JoYkhKbFlXUjVJR2x1SUhOdmNuUWdiM0prWlhJc0lIQmhjM01nWUhSeWRXVmdYRzRnSUM4dklHWnZjaUFxS21selUyOXlkR1ZrS2lvZ2RHOGdkWE5sSUdKcGJtRnllU0J6WldGeVkyZ3VYRzRnSUhaaGNpQnBibVJsZUU5bUlEMGdZM0
14938psWVhSbFNXNWtaWGhHYVc1a1pYSW9NU3dnWm1sdVpFbHVaR1Y0TENCemIzSjBaV1JKYm1SbGVDazdYRzVjYmlBZ0x5OGdVbVYwZFhKdUlIUm9aU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdiR0Z6ZENCdlkyTjFjbkpsYm1ObElHOW1JR0Z1SUdsMFpXMGdhVzRnWVc0Z1lYSnlZWGtzWEc0Z0lDOHZJRzl5SUMweElHbG1JSFJvWlNCcGRHVnRJR2x6SUc1dmRDQnBibU5zZFdSbFpDQnBiaUIwYUdVZ1lYSnlZWGt1WEc0Z0lIWmhjaUJzWVhOMFNXNWtaWGhQWmlBOUlHTnlaV0YwWlVsdVpHVjRSbWx1WkdWeUtDMHhMQ0JtYVc1a1RHRnpkRWx1WkdWNEtUdGNibHh1SUNBdkx5QlNaWFIxY200Z2RHaGxJR1pwY25OMElIWmhiSFZsSUhkb2FXTm9JSEJoYzNObGN5QmhJSFJ5ZFhSb0lIUmxjM1F1WEc0Z0lHWjFibU4wYVc5dUlHWnBibVFvYjJKcUxDQndjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYTJWNVJtbHVaR1Z5SUQwZ2FYTkJjbkpoZVV4cGEyVW9iMkpxS1NBL0lHWnBibVJKYm1SbGVDQTZJR1pwYm1STFpYazdYRzRnSUNBZ2RtRnlJR3RsZVNBOUlHdGxlVVpwYm1SbGNpaHZZbW9zSUhCeVpXUnBZMkYwWlN3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnYVdZZ0tHdGxlU0FoUFQwZ2RtOXBaQ0F3SUNZbUlHdGxlU0FoUFQwZ0xURXBJSEpsZEhWeWJpQnZZbXBiYTJWNVhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVOdmJuWmxibWxsYm1ObElIWmxjbk5wYjI0Z2IyWWdZU0JqYjIxdGIyNGdkWE5sSUdOaGMyVWdiMllnWUY4dVptbHVaR0E2SUdkbGRIUnBibWNnZEdobElHWnBjbk4wWEc0Z0lDOHZJRzlpYW1WamRDQmpiMjUwWVdsdWFXNW5JSE53WldOcFptbGpJR0JyWlhrNmRtRnNkV1ZnSUhCaGFYSnpMbHh1SUNCbWRXNWpkR2x2YmlCbWFXNWtWMmhsY21Vb2IySnFMQ0JoZEhSeWN5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWFXNWtLRzlpYWl3Z2JXRjBZMmhsY2loaGRIUnljeWtwTzF4dUlDQjlYRzVjYmlBZ0x5OGdWR2hsSUdOdmNtNWxjbk4wYjI1bElHWnZjaUJqYjJ4c1pXTjBhVzl1SUdaMWJtTjBhVzl1Y3l3Z1lXNGdZR1ZoWTJoZ1hHNGdJQzh2SUdsdGNHeGxiV1Z1ZEdGMGFXOXVMQ0JoYTJFZ1lHWnZja1ZoWTJoZ0xseHVJQ0F2THlCSVlXNWtiR1Z6SUhKaGR5QnZZbXBsWTNSeklHbHVJR0ZrWkdsMGFXOXVJSFJ2SUdGeWNtRjVMV3hwYTJWekxpQlVjbVZoZEhNZ1lXeHNYRzRnSUM4dklITndZWEp6WlNCaGNuSmhlUzFzYVd0bGN5QmhjeUJwWmlCMGFHVjVJSGRsY21VZ1pHVnVjMlV1WEc0Z0lHWjFibU4wYVc5dUlHVmhZMmdvYjJKcUxDQnBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lHbDBaWEpoZEdWbElEMGdiM0IwYVcxcGVtVkRZaWhwZEdWeVlYUmxaU3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdkbUZ5SUdrc0lHeGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2FYTkJjbkpoZVV4cGEyVW9iMkpxS1NrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hwSUQwZ01Dd2diR1Z1WjNSb0lEMGdiMkpxTG14bGJtZDBhRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsMFpYSmhkR1ZsS0c5aWFsdHBYU3dnYVN3Z2IySnFLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BPMXh1SUNBZ0lDQWdabTl5SUNocElEMGdNQ3dnYkdWdVozUm9JRDBnWDJ0bGVYTXViR1Z1WjNSb095QnBJRHdnYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdhWFJsY21GMFpXVW9iMkpxVzE5clpYbHpXMmxkWFN3Z1gydGxlWE5iYVYwc0lHOWlhaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdlltbzdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTRnZEdobElISmxjM1ZzZEhNZ2IyWWdZWEJ3YkhscGJtY2dkR2hsSUdsMFpYSmhkR1ZsSUhSdklHVmhZMmdnWld4bGJXVnVkQzVjYmlBZ1puVnVZM1JwYjI0Z2JXRndLRzlpYWl3Z2FYUmxjbUYwWldVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQjJZWElnWDJ0bGVYTWdQU0FoYVhOQmNuSmhlVXhwYTJVb2IySnFLU0FtSmlCclpYbHpLRzlpYWlrc1hHNGdJQ0FnSUNBZ0lHeGxibWQwYUNBOUlDaGZhMlY1Y3lCOGZDQnZZbW9wTG14bGJtZDBhQ3hjYmlBZ0lDQWdJQ0FnY21WemRXeDBjeUE5SUVGeWNtRjVLR3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FXNWtaWGdnUFNBd095QnBibVJsZUNBOElHeGxibWQwYURzZ2FXNWtaWGdyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR04xY25KbGJuUkxaWGtnUFNCZmEyVjVjeUEvSUY5clpYbHpXMmx1WkdWNFhTQTZJR2x1WkdWNE8xeHVJQ0FnSUNBZ2NtVnpkV3gwYzF0cGJtUmxlRjBnUFNCcGRHVnlZWFJsWlNodlltcGJZM1Z5Y21WdWRFdGxlVjBzSUdOMWNuSmxiblJMWlhrc0lHOWlhaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJ6TzF4dUlDQjlYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJR055WldGMFpTQmhJSEpsWkhWamFXNW5JR1oxYm1OMGFXOXVMQ0JwZEdWeVlYUnBibWNnYkdWbWRDQnZjaUJ5YVdkb2RDNWNiaUFnWm5WdVkzUnBiMjRnWTNKbFlYUmxVbVZrZFdObEtHUnBjaWtnZTF4dUlDQWdJQzh2SUZkeVlYQWdZMjlrWlNCMGFHRjBJSEpsWVhOemFXZHVjeUJoY21kMWJXVnVkQ0IyWVhKcFlXSnNaWE1nYVc0Z1lTQnpaWEJoY21GMFpTQm1kVzVqZEdsdmJpQjBhR0Z1WEc0Z0lDQWdMeThnZEdobElHOXVaU0IwYUdGMElHRmpZMlZ6YzJWeklHQmhjbWQxYldWdWRITXViR1Z1WjNSb1lDQjBieUJoZG05cFpDQmhJSEJsY21ZZ2FHbDBMaUFvSXpFNU9URXBYRzRnSUNBZ2RtRnlJSEpsWkhWalpYSWdQU0JtZFc1amRHbHZiaWh2WW1vc0lHbDBaWEpoZEdWbExDQnRaVzF2TENCcGJtbDBhV0ZzS1NCN1hHNGdJQ0FnSUNCMllYSWdYMnRsZVhNZ1BTQWhhWE5CY25KaG
14938VVeHBhMlVvYjJKcUtTQW1KaUJyWlhsektHOWlhaWtzWEc0Z0lDQWdJQ0FnSUNBZ2JHVnVaM1JvSUQwZ0tGOXJaWGx6SUh4OElHOWlhaWt1YkdWdVozUm9MRnh1SUNBZ0lDQWdJQ0FnSUdsdVpHVjRJRDBnWkdseUlENGdNQ0EvSURBZ09pQnNaVzVuZEdnZ0xTQXhPMXh1SUNBZ0lDQWdhV1lnS0NGcGJtbDBhV0ZzS1NCN1hHNGdJQ0FnSUNBZ0lHMWxiVzhnUFNCdlltcGJYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRjA3WEc0Z0lDQWdJQ0FnSUdsdVpHVjRJQ3M5SUdScGNqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHWnZjaUFvT3lCcGJtUmxlQ0ErUFNBd0lDWW1JR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQmthWElwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR04xY25KbGJuUkxaWGtnUFNCZmEyVjVjeUEvSUY5clpYbHpXMmx1WkdWNFhTQTZJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQnRaVzF2SUQwZ2FYUmxjbUYwWldVb2JXVnRieXdnYjJKcVcyTjFjbkpsYm5STFpYbGRMQ0JqZFhKeVpXNTBTMlY1TENCdlltb3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHMWxiVzg3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaHZZbW9zSUdsMFpYSmhkR1ZsTENCdFpXMXZMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2FXNXBkR2xoYkNBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BqMGdNenRjYmlBZ0lDQWdJSEpsZEhWeWJpQnlaV1IxWTJWeUtHOWlhaXdnYjNCMGFXMXBlbVZEWWlocGRHVnlZWFJsWlN3Z1kyOXVkR1Y0ZEN3Z05Da3NJRzFsYlc4c0lHbHVhWFJwWVd3cE8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZMeUFxS2xKbFpIVmpaU29xSUdKMWFXeGtjeUIxY0NCaElITnBibWRzWlNCeVpYTjFiSFFnWm5KdmJTQmhJR3hwYzNRZ2IyWWdkbUZzZFdWekxDQmhhMkVnWUdsdWFtVmpkR0FzWEc0Z0lDOHZJRzl5SUdCbWIyeGtiR0F1WEc0Z0lIWmhjaUJ5WldSMVkyVWdQU0JqY21WaGRHVlNaV1IxWTJVb01TazdYRzVjYmlBZ0x5OGdWR2hsSUhKcFoyaDBMV0Z6YzI5amFXRjBhWFpsSUhabGNuTnBiMjRnYjJZZ2NtVmtkV05sTENCaGJITnZJR3R1YjNkdUlHRnpJR0JtYjJ4a2NtQXVYRzRnSUhaaGNpQnlaV1IxWTJWU2FXZG9kQ0E5SUdOeVpXRjBaVkpsWkhWalpTZ3RNU2s3WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0ZzYkNCMGFHVWdaV3hsYldWdWRITWdkR2hoZENCd1lYTnpJR0VnZEhKMWRHZ2dkR1Z6ZEM1Y2JpQWdablZ1WTNScGIyNGdabWxzZEdWeUtHOWlhaXdnY0hKbFpHbGpZWFJsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlISmxjM1ZzZEhNZ1BTQmJYVHRjYmlBZ0lDQndjbVZrYVdOaGRHVWdQU0JqWWlod2NtVmthV05oZEdVc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUdWaFkyZ29iMkpxTENCbWRXNWpkR2x2YmloMllXeDFaU3dnYVc1a1pYZ3NJR3hwYzNRcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y21Wa2FXTmhkR1VvZG1Gc2RXVXNJR2x1WkdWNExDQnNhWE4wS1NrZ2NtVnpkV3gwY3k1d2RYTm9LSFpoYkhWbEtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBjenRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5YmlCaGJHd2dkR2hsSUdWc1pXMWxiblJ6SUdadmNpQjNhR2xqYUNCaElIUnlkWFJvSUhSbGMzUWdabUZwYkhNdVhHNGdJR1oxYm1OMGFXOXVJSEpsYW1WamRDaHZZbW9zSUhCeVpXUnBZMkYwWlN3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtYVd4MFpYSW9iMkpxTENCdVpXZGhkR1VvWTJJb2NISmxaR2xqWVhSbEtTa3NJR052Ym5SbGVIUXBPMXh1SUNCOVhHNWNiaUFnTHk4Z1JHVjBaWEp0YVc1bElIZG9aWFJvWlhJZ1lXeHNJRzltSUhSb1pTQmxiR1Z0Wlc1MGN5QndZWE56SUdFZ2RISjFkR2dnZEdWemRDNWNiaUFnWm5WdVkzUnBiMjRnWlhabGNua29iMkpxTENCd2NtVmthV05oZEdVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCd2NtVmthV05oZEdVZ1BTQmpZaWh3Y21Wa2FXTmhkR1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCZmEyVjVjeUE5SUNGcGMwRnljbUY1VEdsclpTaHZZbW9wSUNZbUlHdGxlWE1vYjJKcUtTeGNiaUFnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdLRjlyWlhseklIeDhJRzlpYWlrdWJHVnVaM1JvTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCamRYSnlaVzUwUzJWNUlEMGdYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRHRjYmlBZ0lDQWdJR2xtSUNnaGNISmxaR2xqWVhSbEtHOWlhbHRqZFhKeVpXNTBTMlY1WFN3Z1kzVnljbVZ1ZEV0bGVTd2diMkpxS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzh2SUVSbGRHVnliV2x1WlNCcFppQmhkQ0JzWldGemRDQnZibVVnWld4bGJXVnVkQ0JwYmlCMGFHVWdiMkpxWldOMElIQmhjM05sY3lCaElIUnlkWFJvSUhSbGMzUXVYRzRnSUdaMWJtTjBhVzl1SUhOdmJXVW9iMkpxTENCd2NtVmthV05oZEdVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCd2NtVmthV05oZEdVZ1BTQmpZaWh3Y21Wa2FXTmhkR1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCZmEyVjVjeUE5SUNGcGMwRnljbUY1VEdsclpTaHZZbW9wSUNZbUlHdGxlWE1vYjJKcUtTeGNiaUFnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdLRjlyWlhseklIeDhJRzlpYWlrdWJHVnVaM1JvTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCamRYSnlaVzUwUzJWNUlEMGdYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRHRjYmlBZ0lDQWdJR2xtSUNod2NtVmthV05oZEdVb2IySnFXMk4xY25KbGJuUkxaWGxkTENCamRYSnlaVzUwUzJWNUxDQnZZbW9wS1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdMeThnUkdWMFpYSnRhVzVsSUdsbUlIUm9aU0JoY25KaGVTQnZjaUJ2WW1wbFkzUWdZMjl1ZEdGcGJuTWdZU0JuYVhabGJpQnBkR1Z0SUNoMWMybHVaeUJnUFQwOVlDa3VYRzRnSUdaMWJtTjBhVzl1SUdOdmJuUmhhVzV6S0c5aWFpd2dhWFJsYlN3Z1puSnZiVWx1WkdWNExDQm5kV0Z5WkNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5CY25KaG
14938VVeHBhMlVvYjJKcUtTa2diMkpxSUQwZ2RtRnNkV1Z6S0c5aWFpazdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQm1jbTl0U1c1a1pYZ2dJVDBnSjI1MWJXSmxjaWNnZkh3Z1ozVmhjbVFwSUdaeWIyMUpibVJsZUNBOUlEQTdYRzRnSUNBZ2NtVjBkWEp1SUdsdVpHVjRUMllvYjJKcUxDQnBkR1Z0TENCbWNtOXRTVzVrWlhncElENDlJREE3WEc0Z0lIMWNibHh1SUNBdkx5Qkpiblp2YTJVZ1lTQnRaWFJvYjJRZ0tIZHBkR2dnWVhKbmRXMWxiblJ6S1NCdmJpQmxkbVZ5ZVNCcGRHVnRJR2x1SUdFZ1kyOXNiR1ZqZEdsdmJpNWNiaUFnZG1GeUlHbHVkbTlyWlNBOUlISmxjM1JCY21kMWJXVnVkSE1vWm5WdVkzUnBiMjRvYjJKcUxDQndZWFJvTENCaGNtZHpLU0I3WEc0Z0lDQWdkbUZ5SUdOdmJuUmxlSFJRWVhSb0xDQm1kVzVqTzF4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUpERW9jR0YwYUNrcElIdGNiaUFnSUNBZ0lHWjFibU1nUFNCd1lYUm9PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCd1lYUm9JRDBnZEc5UVlYUm9LSEJoZEdncE8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEZCaGRHZ2dQU0J3WVhSb0xuTnNhV05sS0RBc0lDMHhLVHRjYmlBZ0lDQWdJSEJoZEdnZ1BTQndZWFJvVzNCaGRHZ3ViR1Z1WjNSb0lDMGdNVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYQW9iMkpxTENCbWRXNWpkR2x2YmloamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCMllYSWdiV1YwYUc5a0lEMGdablZ1WXp0Y2JpQWdJQ0FnSUdsbUlDZ2hiV1YwYUc5a0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoamIyNTBaWGgwVUdGMGFDQW1KaUJqYjI1MFpYaDBVR0YwYUM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjUwWlhoMElEMGdaR1ZsY0VkbGRDaGpiMjUwWlhoMExDQmpiMjUwWlhoMFVHRjBhQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLR052Ym5SbGVIUWdQVDBnYm5Wc2JDa2djbVYwZFhKdUlIWnZhV1FnTUR0Y2JpQWdJQ0FnSUNBZ2JXVjBhRzlrSUQwZ1kyOXVkR1Y0ZEZ0d1lYUm9YVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnRaWFJvYjJRZ1BUMGdiblZzYkNBL0lHMWxkR2h2WkNBNklHMWxkR2h2WkM1aGNIQnNlU2hqYjI1MFpYaDBMQ0JoY21kektUdGNiaUFnSUNCOUtUdGNiaUFnZlNrN1hHNWNiaUFnTHk4Z1EyOXVkbVZ1YVdWdVkyVWdkbVZ5YzJsdmJpQnZaaUJoSUdOdmJXMXZiaUIxYzJVZ1kyRnpaU0J2WmlCZ1h5NXRZWEJnT2lCbVpYUmphR2x1WnlCaElIQnliM0JsY25SNUxseHVJQ0JtZFc1amRHbHZiaUJ3YkhWamF5aHZZbW9zSUd0bGVTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdFlYQW9iMkpxTENCd2NtOXdaWEowZVNoclpYa3BLVHRjYmlBZ2ZWeHVYRzRnSUM4dklFTnZiblpsYm1sbGJtTmxJSFpsY25OcGIyNGdiMllnWVNCamIyMXRiMjRnZFhObElHTmhjMlVnYjJZZ1lGOHVabWxzZEdWeVlEb2djMlZzWldOMGFXNW5JRzl1YkhsY2JpQWdMeThnYjJKcVpXTjBjeUJqYjI1MFlXbHVhVzVuSUhOd1pXTnBabWxqSUdCclpYazZkbUZzZFdWZ0lIQmhhWEp6TGx4dUlDQm1kVzVqZEdsdmJpQjNhR1Z5WlNodlltb3NJR0YwZEhKektTQjdYRzRnSUNBZ2NtVjBkWEp1SUdacGJIUmxjaWh2WW1vc0lHMWhkR05vWlhJb1lYUjBjbk1wS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRkpsZEhWeWJpQjBhR1VnYldGNGFXMTFiU0JsYkdWdFpXNTBJQ2h2Y2lCbGJHVnRaVzUwTFdKaGMyVmtJR052YlhCMWRHRjBhVzl1S1M1Y2JpQWdablZ1WTNScGIyNGdiV0Y0S0c5aWFpd2dhWFJsY21GMFpXVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnTFVsdVptbHVhWFI1TENCc1lYTjBRMjl0Y0hWMFpXUWdQU0F0U1c1bWFXNXBkSGtzWEc0Z0lDQWdJQ0FnSUhaaGJIVmxMQ0JqYjIxd2RYUmxaRHRjYmlBZ0lDQnBaaUFvYVhSbGNtRjBaV1VnUFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnYVhSbGNtRjBaV1VnUFQwZ0oyNTFiV0psY2ljZ0ppWWdkSGx3Wlc5bUlHOWlhbHN3WFNBaFBTQW5iMkpxWldOMEp5QW1KaUJ2WW1vZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2IySnFJRDBnYVhOQmNuSmhlVXhwYTJVb2IySnFLU0EvSUc5aWFpQTZJSFpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJRzlpYWk1c1pXNW5kR2c3SUdrZ1BDQnNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUc5aWFsdHBYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dnSmlZZ2RtRnNkV1VnUGlCeVpYTjFiSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwZEdWeVlYUmxaU0E5SUdOaUtHbDBaWEpoZEdWbExDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lHVmhZMmdvYjJKcUxDQm1kVzVqZEdsdmJpaDJMQ0JwYm1SbGVDd2diR2x6ZENrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjF3ZFhSbFpDQTlJR2wwWlhKaGRHVmxLSFlzSUdsdVpHVjRMQ0JzYVhOMEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJYQjFkR1ZrSUQ0Z2JHRnpkRU52YlhCMWRHVmtJSHg4SUdOdmJYQjFkR1ZrSUQwOVBTQXRTVzVtYVc1cGRIa2dKaVlnY21WemRXeDBJRDA5UFNBdFNXNW1hVzVwZEhrcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0IyTzF4dUlDQWdJQ0FnSUNBZ0lHeGhjM1JEYjIxd2RYUmxaQ0E5SUdOdmJYQjFkR1ZrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUIwYUdVZ2JXbHVhVzExYlNCbGJHVnRaVzUwSUNodmNpQmxiR1Z0Wlc1MExXSmhjMlZrSUdOdmJYQjFkR0YwYVc5dUtTNWNiaUFnWm5WdVkzUnBiMjRnYldsdUtHOWlhaXdnYVhSbGNtRjBaV1VzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1NXNW1hVzVwZEhrc0lHeGhjM1JEYjIxd2RYUmxaQ0E5SUVsdVptbHVhWFI1TEZ4dUlDQWdJQ0FnSUNCMllXeDFaU3dnWTI5dGNIVjBaV1E3WEc0Z0lDQWdhV1lnS0dsMFpYSmhkR1ZsSUQwOUlHNTFiR3dnZkh3Z2RIbHdaVzltSUdsMFpYSmhkR1ZsSUQwOUlDZHVkVzFpWlhJbklDWW1JSFI1Y0dWdlppQnZZbXBiTUYwZ0lUMGdKMjlpYW1WamRDY2dKaVlnYjJKcUlDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHOWlhaUE5SUdselFYSnlZWGxNYVd0bEtHOWlhaWtnUHlCdlltb2dPaUIyWVd4MVpYTW9iMkpxS1R0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0JzWlc1bmRHZ2dQU0J2WW1vdWJHVnVaM1JvT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCdlltcGJhVjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzSUNZbUlIWmhiSFZsSUR3Z2NtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MElEMGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaH
14938BkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQmxZV05vS0c5aWFpd2dablZ1WTNScGIyNG9kaXdnYVc1a1pYZ3NJR3hwYzNRcElIdGNiaUFnSUNBZ0lDQWdZMjl0Y0hWMFpXUWdQU0JwZEdWeVlYUmxaU2gyTENCcGJtUmxlQ3dnYkdsemRDazdYRzRnSUNBZ0lDQWdJR2xtSUNoamIyMXdkWFJsWkNBOElHeGhjM1JEYjIxd2RYUmxaQ0I4ZkNCamIyMXdkWFJsWkNBOVBUMGdTVzVtYVc1cGRIa2dKaVlnY21WemRXeDBJRDA5UFNCSmJtWnBibWwwZVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJSFk3WEc0Z0lDQWdJQ0FnSUNBZ2JHRnpkRU52YlhCMWRHVmtJRDBnWTI5dGNIVjBaV1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0I5WEc1Y2JpQWdMeThnVTJGdGNHeGxJQ29xYmlvcUlISmhibVJ2YlNCMllXeDFaWE1nWm5KdmJTQmhJR052Ykd4bFkzUnBiMjRnZFhOcGJtY2dkR2hsSUcxdlpHVnliaUIyWlhKemFXOXVJRzltSUhSb1pWeHVJQ0F2THlCYlJtbHphR1Z5TFZsaGRHVnpJSE5vZFdabWJHVmRLR2gwZEhCek9pOHZaVzR1ZDJscmFYQmxaR2xoTG05eVp5OTNhV3RwTDBacGMyaGxjdUtBazFsaGRHVnpYM05vZFdabWJHVXBMbHh1SUNBdkx5QkpaaUFxS200cUtpQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0xDQnlaWFIxY201eklHRWdjMmx1WjJ4bElISmhibVJ2YlNCbGJHVnRaVzUwTGx4dUlDQXZMeUJVYUdVZ2FXNTBaWEp1WVd3Z1lHZDFZWEprWUNCaGNtZDFiV1Z1ZENCaGJHeHZkM01nYVhRZ2RHOGdkMjl5YXlCM2FYUm9JR0JmTG0xaGNHQXVYRzRnSUdaMWJtTjBhVzl1SUhOaGJYQnNaU2h2WW1vc0lHNHNJR2QxWVhKa0tTQjdYRzRnSUNBZ2FXWWdLRzRnUFQwZ2JuVnNiQ0I4ZkNCbmRXRnlaQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBjMEZ5Y21GNVRHbHJaU2h2WW1vcEtTQnZZbW9nUFNCMllXeDFaWE1vYjJKcUtUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdlltcGJjbUZ1Wkc5dEtHOWlhaTVzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCellXMXdiR1VnUFNCcGMwRnljbUY1VEdsclpTaHZZbW9wSUQ4Z1kyeHZibVVvYjJKcUtTQTZJSFpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJSFpoY2lCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb2MyRnRjR3hsS1R0Y2JpQWdJQ0J1SUQwZ1RXRjBhQzV0WVhnb1RXRjBhQzV0YVc0b2Jpd2diR1Z1WjNSb0tTd2dNQ2s3WEc0Z0lDQWdkbUZ5SUd4aGMzUWdQU0JzWlc1bmRHZ2dMU0F4TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0J1T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdjbUZ1WkNBOUlISmhibVJ2YlNocGJtUmxlQ3dnYkdGemRDazdYRzRnSUNBZ0lDQjJZWElnZEdWdGNDQTlJSE5oYlhCc1pWdHBibVJsZUYwN1hHNGdJQ0FnSUNCellXMXdiR1ZiYVc1a1pYaGRJRDBnYzJGdGNHeGxXM0poYm1SZE8xeHVJQ0FnSUNBZ2MyRnRjR3hsVzNKaGJtUmRJRDBnZEdWdGNEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSE5oYlhCc1pTNXpiR2xqWlNnd0xDQnVLVHRjYmlBZ2ZWeHVYRzRnSUM4dklGTm9kV1ptYkdVZ1lTQmpiMnhzWldOMGFXOXVMbHh1SUNCbWRXNWpkR2x2YmlCemFIVm1abXhsS0c5aWFpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCellXMXdiR1VvYjJKcUxDQkpibVpwYm1sMGVTazdYRzRnSUgxY2JseHVJQ0F2THlCVGIzSjBJSFJvWlNCdlltcGxZM1FuY3lCMllXeDFaWE1nWW5rZ1lTQmpjbWwwWlhKcGIyNGdjSEp2WkhWalpXUWdZbmtnWVc0Z2FYUmxjbUYwWldVdVhHNGdJR1oxYm1OMGFXOXVJSE52Y25SQ2VTaHZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlHbHVaR1Y0SUQwZ01EdGNiaUFnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQnlaWFIxY200Z2NHeDFZMnNvYldGd0tHOWlhaXdnWm5WdVkzUnBiMjRvZG1Gc2RXVXNJR3RsZVN3Z2JHbHpkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJSFpoYkhWbExGeHVJQ0FnSUNBZ0lDQnBibVJsZURvZ2FXNWtaWGdyS3l4Y2JpQWdJQ0FnSUNBZ1kzSnBkR1Z5YVdFNklHbDBaWEpoZEdWbEtIWmhiSFZsTENCclpYa3NJR3hwYzNRcFhHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwcExuTnZjblFvWm5WdVkzUnBiMjRvYkdWbWRDd2djbWxuYUhRcElIdGNiaUFnSUNBZ0lIWmhjaUJoSUQwZ2JHVm1kQzVqY21sMFpYSnBZVHRjYmlBZ0lDQWdJSFpoY2lCaUlEMGdjbWxuYUhRdVkzSnBkR1Z5YVdFN1hHNGdJQ0FnSUNCcFppQW9ZU0FoUFQwZ1lpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1lTQStJR0lnZkh3Z1lTQTlQVDBnZG05cFpDQXdLU0J5WlhSMWNtNGdNVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRWdQQ0JpSUh4OElHSWdQVDA5SUhadmFXUWdNQ2tnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR3hsWm5RdWFXNWtaWGdnTFNCeWFXZG9kQzVwYm1SbGVEdGNiaUFnSUNCOUtTd2dKM1poYkhWbEp5azdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQjFjMlZrSUdadmNpQmhaMmR5WldkaGRHVWdYQ0puY205MWNDQmllVndpSUc5d1pYSmhkR2x2Ym5NdVhHNGdJR1oxYm1OMGFXOXVJR2R5YjNWd0tHSmxhR0YyYVc5eUxDQndZWEowYVhScGIyNHBJSHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0b2IySnFMQ0JwZEdWeVlYUmxaU3dnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlIQmhjblJwZEdsdmJpQS9JRnRiWFN3Z1cxMWRJRG9nZTMwN1hHNGdJQ0FnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJR1ZoWTJnb2IySnFMQ0JtZFc1amRHbHZiaWgyWVd4MVpTd2dhVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUd0bGVTQTlJR2wwWlhKaGRHVmxLSFpoYkhWbExDQnBibVJsZUN3Z2IySnFLVHRjYmlBZ0lDQWdJQ0FnWW1Wb1lYWnBiM0lvY21WemRXeDBMQ0IyWVd4MVpTd2dhMlY1S1R0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1IzSnZkWEJ6SUhSb1pTQnZZbXBsWTNRbmN5QjJZV3gxWlhNZ1lua2dZU0JqY21sMFpYSnBiMjR1SUZCaGMzTWdaV2wwYU
14938dWeUlHRWdjM1J5YVc1bklHRjBkSEpwWW5WMFpWeHVJQ0F2THlCMGJ5Qm5jbTkxY0NCaWVTd2diM0lnWVNCbWRXNWpkR2x2YmlCMGFHRjBJSEpsZEhWeWJuTWdkR2hsSUdOeWFYUmxjbWx2Ymk1Y2JpQWdkbUZ5SUdkeWIzVndRbmtnUFNCbmNtOTFjQ2htZFc1amRHbHZiaWh5WlhOMWJIUXNJSFpoYkhWbExDQnJaWGtwSUh0Y2JpQWdJQ0JwWmlBb2FHRnpKREVvY21WemRXeDBMQ0JyWlhrcEtTQnlaWE4xYkhSYmEyVjVYUzV3ZFhOb0tIWmhiSFZsS1RzZ1pXeHpaU0J5WlhOMWJIUmJhMlY1WFNBOUlGdDJZV3gxWlYwN1hHNGdJSDBwTzF4dVhHNGdJQzh2SUVsdVpHVjRaWE1nZEdobElHOWlhbVZqZENkeklIWmhiSFZsY3lCaWVTQmhJR055YVhSbGNtbHZiaXdnYzJsdGFXeGhjaUIwYnlCZ1h5NW5jbTkxY0VKNVlDd2dZblYwSUdadmNseHVJQ0F2THlCM2FHVnVJSGx2ZFNCcmJtOTNJSFJvWVhRZ2VXOTFjaUJwYm1SbGVDQjJZV3gxWlhNZ2QybHNiQ0JpWlNCMWJtbHhkV1V1WEc0Z0lIWmhjaUJwYm1SbGVFSjVJRDBnWjNKdmRYQW9ablZ1WTNScGIyNG9jbVZ6ZFd4MExDQjJZV3gxWlN3Z2EyVjVLU0I3WEc0Z0lDQWdjbVZ6ZFd4MFcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ2ZTazdYRzVjYmlBZ0x5OGdRMjkxYm5SeklHbHVjM1JoYm1ObGN5QnZaaUJoYmlCdlltcGxZM1FnZEdoaGRDQm5jbTkxY0NCaWVTQmhJR05sY25SaGFXNGdZM0pwZEdWeWFXOXVMaUJRWVhOelhHNGdJQzh2SUdWcGRHaGxjaUJoSUhOMGNtbHVaeUJoZEhSeWFXSjFkR1VnZEc4Z1kyOTFiblFnWW5rc0lHOXlJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQnlaWFIxY201eklIUm9aVnh1SUNBdkx5QmpjbWwwWlhKcGIyNHVYRzRnSUhaaGNpQmpiM1Z1ZEVKNUlEMGdaM0p2ZFhBb1puVnVZM1JwYjI0b2NtVnpkV3gwTENCMllXeDFaU3dnYTJWNUtTQjdYRzRnSUNBZ2FXWWdLR2hoY3lReEtISmxjM1ZzZEN3Z2EyVjVLU2tnY21WemRXeDBXMnRsZVYwckt6c2daV3h6WlNCeVpYTjFiSFJiYTJWNVhTQTlJREU3WEc0Z0lIMHBPMXh1WEc0Z0lDOHZJRk53YkdsMElHRWdZMjlzYkdWamRHbHZiaUJwYm5SdklIUjNieUJoY25KaGVYTTZJRzl1WlNCM2FHOXpaU0JsYkdWdFpXNTBjeUJoYkd3Z2NHRnpjeUIwYUdVZ1oybDJaVzVjYmlBZ0x5OGdkSEoxZEdnZ2RHVnpkQ3dnWVc1a0lHOXVaU0IzYUc5elpTQmxiR1Z0Wlc1MGN5QmhiR3dnWkc4Z2JtOTBJSEJoYzNNZ2RHaGxJSFJ5ZFhSb0lIUmxjM1F1WEc0Z0lIWmhjaUJ3WVhKMGFYUnBiMjRnUFNCbmNtOTFjQ2htZFc1amRHbHZiaWh5WlhOMWJIUXNJSFpoYkhWbExDQndZWE56S1NCN1hHNGdJQ0FnY21WemRXeDBXM0JoYzNNZ1B5QXdJRG9nTVYwdWNIVnphQ2gyWVd4MVpTazdYRzRnSUgwc0lIUnlkV1VwTzF4dVhHNGdJQzh2SUZOaFptVnNlU0JqY21WaGRHVWdZU0J5WldGc0xDQnNhWFpsSUdGeWNtRjVJR1p5YjIwZ1lXNTVkR2hwYm1jZ2FYUmxjbUZpYkdVdVhHNGdJSFpoY2lCeVpWTjBjbE41YldKdmJDQTlJQzliWGx4Y2RXUTRNREF0WEZ4MVpHWm1abDE4VzF4Y2RXUTRNREF0WEZ4MVpHSm1abDFiWEZ4MVpHTXdNQzFjWEhWa1ptWm1YWHhiWEZ4MVpEZ3dNQzFjWEhWa1ptWm1YUzluTzF4dUlDQm1kVzVqZEdsdmJpQjBiMEZ5Y21GNUtHOWlhaWtnZTF4dUlDQWdJR2xtSUNnaGIySnFLU0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdhV1lnS0dselFYSnlZWGtvYjJKcUtTa2djbVYwZFhKdUlITnNhV05sTG1OaGJHd29iMkpxS1R0Y2JpQWdJQ0JwWmlBb2FYTlRkSEpwYm1jb2IySnFLU2tnZTF4dUlDQWdJQ0FnTHk4Z1MyVmxjQ0J6ZFhKeWIyZGhkR1VnY0dGcGNpQmphR0Z5WVdOMFpYSnpJSFJ2WjJWMGFHVnlMbHh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhaTV0WVhSamFDaHlaVk4wY2xONWJXSnZiQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwYzBGeWNtRjVUR2xyWlNodlltb3BLU0J5WlhSMWNtNGdiV0Z3S0c5aWFpd2dhV1JsYm5ScGRIa3BPMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE1vYjJKcUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUIwYUdVZ2JuVnRZbVZ5SUc5bUlHVnNaVzFsYm5SeklHbHVJR0VnWTI5c2JHVmpkR2x2Ymk1Y2JpQWdablZ1WTNScGIyNGdjMmw2WlNodlltb3BJSHRjYmlBZ0lDQnBaaUFvYjJKcUlEMDlJRzUxYkd3cElISmxkSFZ5YmlBd08xeHVJQ0FnSUhKbGRIVnliaUJwYzBGeWNtRjVUR2xyWlNodlltb3BJRDhnYjJKcUxteGxibWQwYUNBNklHdGxlWE1vYjJKcUtTNXNaVzVuZEdnN1hHNGdJSDFjYmx4dUlDQXZMeUJKYm5SbGNtNWhiQ0JnWHk1d2FXTnJZQ0JvWld4d1pYSWdablZ1WTNScGIyNGdkRzhnWkdWMFpYSnRhVzVsSUhkb1pYUm9aWElnWUd0bGVXQWdhWE1nWVc0Z1pXNTFiV1Z5WVdKc1pWeHVJQ0F2THlCd2NtOXdaWEowZVNCdVlXMWxJRzltSUdCdlltcGdMbHh1SUNCbWRXNWpkR2x2YmlCclpYbEpiazlpYWloMllXeDFaU3dnYTJWNUxDQnZZbW9wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdhMlY1SUdsdUlHOWlhanRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5YmlCaElHTnZjSGtnYjJZZ2RHaGxJRzlpYW1WamRDQnZibXg1SUdOdmJuUmhhVzVwYm1jZ2RHaGxJR0ZzYkc5M1pXUWdjSEp2Y0dWeWRHbGxjeTVjYmlBZ2RtRnlJSEJwWTJzZ1BTQnlaWE4wUVhKbmRXMWxiblJ6S0daMWJtTjBhVzl1S0c5aWFpd2dhMlY1Y3lrZ2UxeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQjdmU3dnYVhSbGNtRjBaV1VnUFNCclpYbHpXekJkTzF4dUlDQWdJR2xtSUNodlltb2dQVDBnYm5Wc2JDa2djbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0JwWmlBb2FYTkdkVzVqZEdsdmJpUXhLR2wwWlhKaGRHVmxLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHdGxlWE11YkdWdVozUm9JRDRnTVNrZ2FYUmxjbUYwWldVZ1BTQnZjSFJwYldsNlpVTmlLR2wwWlhKaGRHVmxMQ0JyWlhseld6RmRLVHRjYmlBZ0lDQWdJR3RsZVhNZ1BTQmhiR3hMWlhsektHOWlhaWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHbDBaWEpoZEdWbElEMGdhMlY1U1c1UFltbzdYRzRnSUNBZ0lDQnJaWGx6SUQwZ1pteGhkSFJsYmlReEtHdGxlWE1zSUdaaGJITmxMQ0JtWVd4elpTazdYRzRnSUNBZ0lDQnZZbW9nUFNCUFltcGxZM1FvYjJKcUtUdGNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJR3RsZVhNdWJHVnVaM1JvT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQnJaWGtnUFNCclpYbHpXMmxkTzF4dUlDQWdJQ0FnZG1GeUlIWmhiSFZsSUQwZ2IySnFXMnRsZVYwN1hHNGdJQ0FnSUNCcFppQW9hWFJsY21GMFpXVW9kbUZzZFdVc0lHdGxlU3dnYjJKcUtTa2djbVZ6ZFd4MFcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZTazdYRzVjYmlBZ0x5OGdVbVYwZFhKdUlHRWdZMjl3ZVNCdlppQjBhR1VnYjJKcVpXTjBJSGRwZEdodmRYUWdkR2hsSUdScGMyRnNiRzkzWldRZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnZG1GeUlHOXRhWFFnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLRzlpYWl3Z2EyVjVjeWtnZTF4dUlDQWdJSFpoY2lCcGRHVnlZWFJsWlNBOUlHdGxlWE5iTUYwc0lHTnZiblJsZUhRN1hHNGdJQ0FnYVdZZ0tHbHpSblZ1WTNScGIyNGtNU2hwZEdWeVlYUmxaU2twSUh0Y2JpQWdJQ0FnSUdsMFpYSmhkR1ZsSUQwZ2JtVm5ZWFJsS0dsMFpYSmhkR1ZsS1R0Y2JpQWdJQ0FnSUdsbUlDaHJaWGx6TG14bGJtZDBhQ0ErSURFcElHTnZiblJsZUhRZ1BTQnJaWGx6V3pGZE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JyWlhseklEMGdiV0Z3S0dac1lYUjBaVzRrTVNoclpYbHpMQ0JtWVd4elpTd2dabUZzYzJVcExDQlRkSEpwYm1jcE8xeHVJQ0FnSUNBZ2FYUmxjbUYwWldVZ1BTQm1kVzVqZEdsdmJpaDJZV3gxWlN3Z2EyVjVLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFoWTI5dWRHRnBibk1vYTJWNWN5d2dhMlY1S1R0Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQndhV05yS0c5aWFpd2dhWFJsY21GMFpXVXNJR052Ym5SbGVIUXBPMXh1SUNCOUtUdGNibHh1SUNBdkx5QlNaWFIxY201eklHVjJaWEo1ZEdocGJtY2dZblYwSUhSb1pTQnNZWE4wSUdWdWRISjVJRzltSUhSb1pTQmhjbkpoZVM0Z1JYTndaV05wWVd4c2VTQjFjMlZtZFd3Z2IyNWNiaUFnTHk4Z2RHaGxJR0Z5WjNWdFpXNTBjeUJ2WW1wbFkzUXVJRkJoYzNOcGJtY2dLaXB1S2lvZ2QybHNiQ0J5WlhSMWNtNGdZV3hzSUhSb1pTQjJZV3gxWlhNZ2FXNWNiaUFnTHk4Z2RHaGxJR0Z5Y21GNUxDQmxlR05zZFdScGJtY2dkR2hsSUd4aGMzUWdUaTVjYmlBZ1puVnVZM1JwYjI0Z2FXNXBkR2xoYkNoaGNuSmhlU3dnYml3Z1ozVmhjbVFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMnhwWTJVdVkyRnNiQ2hoY25KaGVTd2dNQ3dnVFdGMGFDNXRZWGdvTUN3Z1lYSnlZWGt1YkdWdVozUm9JQzBnS0c0Z1BUMGdiblZzYkNCOGZDQm5kV0Z5WkNBL0lERWdPaUJ1S1NrcE8xeHVJQ0I5WEc1Y2JpQWdMeThnUjJWMElIUm9aU0JtYVhKemRDQmxiR1Z0Wlc1MElHOW1JR0Z1SUdGeWNtRjVMaUJRWVhOemFXNW5JQ29xYmlvcUlIZHBiR3dnY21WMGRYSnVJSFJvWlNCbWFYSnpkQ0JPWEc0Z0lDOHZJSFpoYkhWbGN5QnBiaUIwYUdVZ1lYSnlZWGt1SUZSb1pTQXFLbWQxWVhKa0tpb2dZMmhsWTJzZ1lXeHNiM2R6SUdsMElIUnZJSGR2Y21zZ2QybDBhQ0JnWHk1dFlYQmdMbHh1SUNCbWRXNWpkR2x2YmlCbWFYSnpkQ2hoY25KaGVTd2diaXdnWjNWaGNtUXBJSHRjYmlBZ0lDQnBaaUFvWVhKeVlYa2dQVDBnYm5Wc2JDQjhmQ0JoY25KaGVTNXNaVzVuZEdnZ1BDQXhLU0J5WlhSMWNtNGdiaUE5UFNCdWRXeHNJSHg4SUdkMVlYSmtJRDhnZG05cFpDQXdJRG9nVzEwN1hHNGdJQ0FnYVdZZ0tHNGdQVDBnYm5Wc2JDQjhmQ0JuZFdGeVpDa2djbVYwZFhKdUlHRnljbUY1V3pCZE8xeHVJQ0FnSUhKbGRIVnliaUJwYm1sMGFXRnNLR0Z5Y21GNUxDQmhjbkpoZVM1c1pXNW5kR2dnTFNCdUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnlibk1nWlhabGNubDBhR2x1WnlCaWRYUWdkR2hsSUdacGNuTjBJR1Z1ZEhKNUlHOW1JSFJvWlNCZ1lYSnlZWGxnTGlCRmMzQmxZMmxoYkd4NUlIVnpaV1oxYkNCdmJseHVJQ0F2THlCMGFHVWdZR0Z5WjNWdFpXNTBjMkFnYjJKcVpXTjBMaUJRWVhOemFXNW5JR0Z1SUNvcWJpb3FJSGRwYkd3Z2NtVjBkWEp1SUhSb1pTQnlaWE4wSUU0Z2RtRnNkV1Z6SUdsdUlIUm9aVnh1SUNBdkx5QmdZWEp5WVhsZ0xseHVJQ0JtZFc1amRHbHZiaUJ5WlhOMEtHRnljbUY1TENCdUxDQm5kV0Z5WkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ6YkdsalpTNWpZV3hzS0dGeWNtRjVMQ0J1SUQwOUlHNTFiR3dnZkh3Z1ozVmhjbVFnUHlBeElEb2diaWs3WEc0Z0lIMWNibHh1SUNBdkx5QkhaWFFnZEdobElHeGhjM1FnWld4bGJXVnVkQ0J2WmlCaGJpQmhjbkpoZVM0Z1VHRnpjMmx1WnlBcUttNHFLaUIzYVd4c0lISmxkSFZ5YmlCMGFHVWdiR0Z6ZENCT1hHNGdJQzh2SUhaaGJIVmxjeUJwYmlCMGFHVWdZWEp5WVhrdVhHNGdJR1oxYm1OMGFXOXVJR3hoYzNRb1lYSnlZWGtzSUc0c0lHZDFZWEprS1NCN1hHNGdJQ0FnYVdZZ0tHRnljbUY1SUQwOUlHNTFiR3dnZkh3Z1lYSnlZWGt1YkdWdVozUm9JRHdnTVNrZ2NtVjBkWEp1SUc0Z1BUMGdiblZzYkNCOGZDQm5kV0Z5WkNBL0lIWnZhV1FnTUNBNklGdGRPMXh1SUNBZ0lHbG1JQ2h1SUQwOUlHNTFiR3dnZkh3Z1ozVmhjbVFwSUhKbGRIVnliaUJoY25KaGVWdGhjbkpoZVM1c1pXNW5kR2dnTFNBeFhUdGNiaUFnSUNCeVpYUjFjbTRnY21WemRDaGhjbkpoZVN3Z1RXRjBhQzV0WVhnb01Dd2dZWEp5WVhrdWJHVnVaM1JvSUMwZ2Jpa3BPMXh1SUNCOVhHNWNiaUFnTHk4Z1ZISnBiU0J2ZFhRZ1lXeHNJR1poYkhONUlIWmhiSFZsY3lCbWNtOXRJR0Z1SUdGeWNtRjVMbHh1SUNCbWRXNWpkR2x2YmlCamIyMXdZV04wS0dGeWNtRjVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWnBiSFJsY2loaGNuSmhlU3dnUW05dmJHVmhiaWs3WEc0Z0lIMWNibHh1SUNBdkx5QkdiR0YwZEdWdUlHOTFkQ0JoYmlCaGNuSmhlU3dnWldsMGFHVnlJSEpsWTNWeWMybDJaV3g1SUNoaWVTQmtaV1poZFd4MEtTd2diM0lnZFhBZ2RHOGdZR1JsY0hSb1lDNWNiaUFnTHk4Z1VHRnpjMmx1WnlCZ2RISjFaV0FnYjNJZ1lHWmhiSE5sWUNCaGN5QmdaR1Z3ZEdoZ0lHMWxZVzV6SUdBeFlDQnZjaUJnU1c1bWFXNXBkSGxnTENCeVpYTndaV04wYVhabGJIa3VYRzRnSUdaMWJtTjBhVzl1SUdac1lYUjBaVzRvWVhKeVlYa3NJR1JsY0hSb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUdac1lYUjBaVzRrTVNoaGNuSmhlU3dnWkdWd2RHZ3NJR1poYkhObEtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZSaGEyVWdkR2hsSUdScFptWmxjbVZ1WTJVZ1ltVjBkMlZsYmlCdmJtVWdZWEp5WVhrZ1lXNWtJR0VnYm5WdFltVnlJRzltSUc5MGFHVnlJR0Z5Y21GNWN5NWNiaUFnTHk4Z1QyNXNlU0IwYUdVZ1pXeGxiV1Z1ZEhNZ2NISmxjMlZ1ZENCcGJpQnFkWE4wSUhSb1pTQm1hWEp6ZENCaGNuSmhlU0IzYVd4c0lISmxiV0ZwYmk1Y2JpQWdkbUZ5SUdScFptWmxjbVZ1WTJVZ1BTQnlaWE4wUVhKbmRXMWxiblJ6S0daMWJtTjBhVzl1S0dGeWNtRjVMQ0J5WlhOMEtTQjdYRzRnSUNBZ2NtVnpkQ0E5SUdac1lYUjBaVzRrTVNoeVpYTjBMQ0IwY25WbExDQjBjblZsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdabWxzZEdWeUtHRnljbUY1TENCbWRXNWpkR2x2YmloMllXeDFaU2w3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdJV052Ym5SaGFXNXpLSEpsYzNRc0lIWmhiSFZsS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdmU2s3WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0VnZG1WeWMybHZiaUJ2WmlCMGFHVWdZWEp5WVhrZ2RHaGhkQ0JrYjJWeklHNXZkQ0JqYjI1MFlXbHVJSFJvWlNCemNHVmphV1pwWldRZ2RtRnNkV1VvY3lrdVhHNGdJSFpoY2lCM2FYUm9iM1YwSUQwZ2NtVnpkRUZ5WjNWdFpXNTBjeWhtZFc1amRHbHZiaWhoY25KaGVTd2diM1JvWlhKQmNuSmhlWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaR2xtWm1WeVpXNWpaU2hoY25KaGVTd2diM1JvWlhKQmNuSmhlWE1wTzF4dUlDQjlLVHRjYmx4dUlDQXZMeUJRY205a2RXTmxJR0VnWkhWd2JHbGpZWFJsTFdaeVpXVWdkbVZ5YzJsdmJpQnZaaUIwYU
14938dVZ1lYSnlZWGt1SUVsbUlIUm9aU0JoY25KaGVTQm9ZWE1nWVd4eVpXRmtlVnh1SUNBdkx5QmlaV1Z1SUhOdmNuUmxaQ3dnZVc5MUlHaGhkbVVnZEdobElHOXdkR2x2YmlCdlppQjFjMmx1WnlCaElHWmhjM1JsY2lCaGJHZHZjbWwwYUcwdVhHNGdJQzh2SUZSb1pTQm1ZWE4wWlhJZ1lXeG5iM0pwZEdodElIZHBiR3dnYm05MElIZHZjbXNnZDJsMGFDQmhiaUJwZEdWeVlYUmxaU0JwWmlCMGFHVWdhWFJsY21GMFpXVmNiaUFnTHk4Z2FYTWdibTkwSUdFZ2IyNWxMWFJ2TFc5dVpTQm1kVzVqZEdsdmJpd2djMjhnY0hKdmRtbGthVzVuSUdGdUlHbDBaWEpoZEdWbElIZHBiR3dnWkdsellXSnNaVnh1SUNBdkx5QjBhR1VnWm1GemRHVnlJR0ZzWjI5eWFYUm9iUzVjYmlBZ1puVnVZM1JwYjI0Z2RXNXBjU2hoY25KaGVTd2dhWE5UYjNKMFpXUXNJR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwSnZiMnhsWVc0b2FYTlRiM0owWldRcEtTQjdYRzRnSUNBZ0lDQmpiMjUwWlhoMElEMGdhWFJsY21GMFpXVTdYRzRnSUNBZ0lDQnBkR1Z5WVhSbFpTQTlJR2x6VTI5eWRHVmtPMXh1SUNBZ0lDQWdhWE5UYjNKMFpXUWdQU0JtWVd4elpUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHbDBaWEpoZEdWbElDRTlJRzUxYkd3cElHbDBaWEpoZEdWbElEMGdZMklvYVhSbGNtRjBaV1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCeVpYTjFiSFFnUFNCYlhUdGNiaUFnSUNCMllYSWdjMlZsYmlBOUlGdGRPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb1lYSnlZWGtwT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjJZV3gxWlNBOUlHRnljbUY1VzJsZExGeHVJQ0FnSUNBZ0lDQWdJR052YlhCMWRHVmtJRDBnYVhSbGNtRjBaV1VnUHlCcGRHVnlZWFJsWlNoMllXeDFaU3dnYVN3Z1lYSnlZWGtwSURvZ2RtRnNkV1U3WEc0Z0lDQWdJQ0JwWmlBb2FYTlRiM0owWldRZ0ppWWdJV2wwWlhKaGRHVmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hhU0I4ZkNCelpXVnVJQ0U5UFNCamIyMXdkWFJsWkNrZ2NtVnpkV3gwTG5CMWMyZ29kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQnpaV1Z1SUQwZ1kyOXRjSFYwWldRN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHbDBaWEpoZEdWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFkyOXVkR0ZwYm5Nb2MyVmxiaXdnWTI5dGNIVjBaV1FwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZsYmk1d2RYTm9LR052YlhCMWRHVmtLVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9JV052Ym5SaGFXNXpLSEpsYzNWc2RDd2dkbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDNXdkWE5vS0haaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZWeHVYRzRnSUM4dklGQnliMlIxWTJVZ1lXNGdZWEp5WVhrZ2RHaGhkQ0JqYjI1MFlXbHVjeUIwYUdVZ2RXNXBiMjQ2SUdWaFkyZ2daR2x6ZEdsdVkzUWdaV3hsYldWdWRDQm1jbTl0SUdGc2JDQnZabHh1SUNBdkx5QjBhR1VnY0dGemMyVmtMV2x1SUdGeWNtRjVjeTVjYmlBZ2RtRnlJSFZ1YVc5dUlEMGdjbVZ6ZEVGeVozVnRaVzUwY3lobWRXNWpkR2x2YmloaGNuSmhlWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVwY1NobWJHRjBkR1Z1SkRFb1lYSnlZWGx6TENCMGNuVmxMQ0IwY25WbEtTazdYRzRnSUgwcE8xeHVYRzRnSUM4dklGQnliMlIxWTJVZ1lXNGdZWEp5WVhrZ2RHaGhkQ0JqYjI1MFlXbHVjeUJsZG1WeWVTQnBkR1Z0SUhOb1lYSmxaQ0JpWlhSM1pXVnVJR0ZzYkNCMGFHVmNiaUFnTHk4Z2NHRnpjMlZrTFdsdUlHRnljbUY1Y3k1Y2JpQWdablZ1WTNScGIyNGdhVzUwWlhKelpXTjBhVzl1S0dGeWNtRjVLU0I3WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUZ0ZE8xeHVJQ0FnSUhaaGNpQmhjbWR6VEdWdVozUm9JRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTUN3Z2JHVnVaM1JvSUQwZ1oyVjBUR1Z1WjNSb0tHRnljbUY1S1RzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdhWFJsYlNBOUlHRnljbUY1VzJsZE8xeHVJQ0FnSUNBZ2FXWWdLR052Ym5SaGFXNXpLSEpsYzNWc2RDd2dhWFJsYlNrcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2RtRnlJR283WEc0Z0lDQWdJQ0JtYjNJZ0tHb2dQU0F4T3lCcUlEd2dZWEpuYzB4bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFkyOXVkR0ZwYm5Nb1lYSm5kVzFsYm5SelcycGRMQ0JwZEdWdEtTa2dZbkpsWVdzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9haUE5UFQwZ1lYSm5jMHhsYm1kMGFDa2djbVZ6ZFd4MExuQjFjMmdvYVhSbGJTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0F2THlCRGIyMXdiR1Z0Wlc1MElHOW1JSHBwY0M0Z1ZXNTZhWEFnWVdOalpYQjBjeUJoYmlCaGNuSmhlU0J2WmlCaGNuSmhlWE1nWVc1a0lHZHliM1Z3YzF4dUlDQXZMeUJsWVdOb0lHRnljbUY1SjNNZ1pXeGxiV1Z1ZEhNZ2IyNGdjMmhoY21Wa0lHbHVaR2xqWlhNdVhHNGdJR1oxYm1OMGFXOXVJSFZ1ZW1sd0tHRnljbUY1S1NCN1hHNGdJQ0FnZG1GeUlHeGxibWQwYUNBOUlHRnljbUY1SUNZbUlHMWhlQ2hoY25KaGVTd2daMlYwVEdWdVozUm9LUzVzWlc1bmRHZ2dmSHdnTUR0Y2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1FYSnlZWGtvYkdWdVozUm9LVHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSEpsYzNWc2RGdHBibVJsZUYwZ1BTQndiSFZqYXloaGNuSmhlU3dnYVc1a1pYZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNCOVhHNWNiaUFnTHk4Z1dtbHdJSFJ2WjJWMGFHVnlJRzExYkhScGNHeGxJR3hwYzNSeklHbHVkRzhnWVNCemFXNW5iR1VnWVhKeVlYa2dMUzBnWld4bGJXVnVkSE1nZEdoaGRDQnphR0Z5WlZ4dUlDQXZMeUJoYmlCcGJtUmxlQ0JuYnlCMGIyZGxkR2hsY2k1Y2JpQWdkbUZ5SUhwcGNDQTlJSEpsYzNSQmNtZDFiV1Z1ZEhNb2RXNTZhWEFwTzF4dVhHNGdJQzh2SUVOdmJuWmxjblJ6SUd4cGMzUnpJR2x1ZEc4Z2IySnFaV04wY3k0Z1VHRnpjeUJsYVhSb1pYSWdZU0J6YVc1bmJHVWdZWEp5WVhrZ2IyWWdZRnRyWlhrc0lIWmhiSFZsWFdCY2JpQWdMeThnY0dGcGNuTXNJRzl5SUhSM2J5QndZWEpoYkd4bGJDQmhjbkpoZVhNZ2IyWWdkR2hsSUhOaGJXVWdiR1Z1WjNSb0lDMHRJRzl1WlNCdlppQnJaWGx6TENCaGJtUWdiMjVsSUc5bVhHNGdJQzh2SUhSb1pTQmpiM0p5WlhOd2IyNWthVzVuSUhaaGJIVmxjeTRnVUdGemMybHVaeUJpZVNCd1lXbHljeUJwY3lCMGFHVWdjbVYyWlhKelpTQnZaaUJnWHk1d1lXbHljMkF1WEc0Z0lHWjFibU4wYVc5dUlHOWlhbVZqZENoc2FYTjBMQ0IyWVd4MVpYTXBJSHRjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJR2RsZEV4bGJtZDBhQ2hzYVhOMEtUc2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVnpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnRzYVhOMFcybGRYU0E5SUhaaGJIVmxjMXRwWFR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnRzYVhOMFcybGRXekJkWFNBOUlHeHBjM1JiYVYxYk1WMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0F2THlCSFpXNWxjbUYwWlNCaGJpQnBiblJsWjJWeUlFRnljbUY1SUdOdmJuUmhhVzVwYm1jZ1lXNGdZWEpwZEdodFpYUnBZeUJ3Y205bmNtVnpjMmx2Ymk0Z1FTQndiM0owSUc5b
14938VhHNGdJQzh2SUhSb1pTQnVZWFJwZG1VZ1VIbDBhRzl1SUdCeVlXNW5aU2dwWUNCbWRXNWpkR2x2Ymk0Z1UyVmxYRzRnSUM4dklGdDBhR1VnVUhsMGFHOXVJR1J2WTNWdFpXNTBZWFJwYjI1ZEtHaDBkSEJ6T2k4dlpHOWpjeTV3ZVhSb2IyNHViM0puTDJ4cFluSmhjbmt2Wm5WdVkzUnBiMjV6TG1oMGJXd2pjbUZ1WjJVcExseHVJQ0JtZFc1amRHbHZiaUJ5WVc1blpTaHpkR0Z5ZEN3Z2MzUnZjQ3dnYzNSbGNDa2dlMXh1SUNBZ0lHbG1JQ2h6ZEc5d0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lITjBiM0FnUFNCemRHRnlkQ0I4ZkNBd08xeHVJQ0FnSUNBZ2MzUmhjblFnUFNBd08xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lYTjBaWEFwSUh0Y2JpQWdJQ0FnSUhOMFpYQWdQU0J6ZEc5d0lEd2djM1JoY25RZ1B5QXRNU0E2SURFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlHeGxibWQwYUNBOUlFMWhkR2d1YldGNEtFMWhkR2d1WTJWcGJDZ29jM1J2Y0NBdElITjBZWEowS1NBdklITjBaWEFwTENBd0tUdGNiaUFnSUNCMllYSWdjbUZ1WjJVZ1BTQkJjbkpoZVNoc1pXNW5kR2dwTzF4dVhHNGdJQ0FnWm05eUlDaDJZWElnYVdSNElEMGdNRHNnYVdSNElEd2diR1Z1WjNSb095QnBaSGdyS3l3Z2MzUmhjblFnS3owZ2MzUmxjQ2tnZTF4dUlDQWdJQ0FnY21GdVoyVmJhV1I0WFNBOUlITjBZWEowTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlZVzVuWlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRU5vZFc1cklHRWdjMmx1WjJ4bElHRnljbUY1SUdsdWRHOGdiWFZzZEdsd2JHVWdZWEp5WVhsekxDQmxZV05vSUdOdmJuUmhhVzVwYm1jZ1lHTnZkVzUwWUNCdmNpQm1aWGRsY2x4dUlDQXZMeUJwZEdWdGN5NWNiaUFnWm5WdVkzUnBiMjRnWTJoMWJtc29ZWEp5WVhrc0lHTnZkVzUwS1NCN1hHNGdJQ0FnYVdZZ0tHTnZkVzUwSUQwOUlHNTFiR3dnZkh3Z1kyOTFiblFnUENBeEtTQnlaWFIxY200Z1cxMDdYRzRnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJRnRkTzF4dUlDQWdJSFpoY2lCcElEMGdNQ3dnYkdWdVozUm9JRDBnWVhKeVlYa3ViR1Z1WjNSb08xeHVJQ0FnSUhkb2FXeGxJQ2hwSUR3Z2JHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaHpiR2xqWlM1allXeHNLR0Z5Y21GNUxDQnBMQ0JwSUNzOUlHTnZkVzUwS1NrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJSDFjYmx4dUlDQXZMeUJJWld4d1pYSWdablZ1WTNScGIyNGdkRzhnWTI5dWRHbHVkV1VnWTJoaGFXNXBibWNnYVc1MFpYSnRaV1JwWVhSbElISmxjM1ZzZEhNdVhHNGdJR1oxYm1OMGFXOXVJR05vWVdsdVVtVnpkV3gwS0dsdWMzUmhibU5sTENCdlltb3BJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNXpkR0Z1WTJVdVgyTm9ZV2x1SUQ4Z1h5UXhLRzlpYWlrdVkyaGhhVzRvS1NBNklHOWlhanRjYmlBZ2ZWeHVYRzRnSUM4dklFRmtaQ0I1YjNWeUlHOTNiaUJqZFhOMGIyMGdablZ1WTNScGIyNXpJSFJ2SUhSb1pTQlZibVJsY25OamIzSmxJRzlpYW1WamRDNWNiaUFnWm5WdVkzUnBiMjRnYldsNGFXNG9iMkpxS1NCN1hHNGdJQ0FnWldGamFDaG1kVzVqZEdsdmJuTW9iMkpxS1N3Z1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlDQWdJQ0FnZG1GeUlHWjFibU1nUFNCZkpERmJibUZ0WlYwZ1BTQnZZbXBiYm1GdFpWMDdYRzRnSUNBZ0lDQmZKREV1Y0hKdmRHOTBlWEJsVzI1aGJXVmRJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJoY21keklEMGdXM1JvYVhNdVgzZHlZWEJ3WldSZE8xeHVJQ0FnSUNBZ0lDQndkWE5vTG1Gd2NHeDVLR0Z5WjNNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmphR0ZwYmxKbGMzVnNkQ2gwYUdsekxDQm1kVzVqTG1Gd2NHeDVLRjhrTVN3Z1lYSm5jeWtwTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdYeVF4TzF4dUlDQjlYRzVjYmlBZ0x5OGdRV1JrSUdGc2JDQnRkWFJoZEc5eUlHQkJjbkpoZVdBZ1puVnVZM1JwYjI1eklIUnZJSFJvWlNCM2NtRndjR1Z5TGx4dUlDQmxZV05vS0ZzbmNHOXdKeXdnSjNCMWMyZ25MQ0FuY21WMlpYSnpaU2NzSUNkemFHbG1kQ2NzSUNkemIzSjBKeXdnSjNOd2JHbGpaU2NzSUNkMWJuTm9hV1owSjEwc0lHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2JXVjBhRzlrSUQwZ1FYSnlZWGxRY205MGIxdHVZVzFsWFR0Y2JpQWdJQ0JmSkRFdWNISnZkRzkwZVhCbFcyNWhiV1ZkSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQjJZWElnYjJKcUlEMGdkR2hwY3k1ZmQzSmhjSEJsWkR0Y2JpQWdJQ0FnSUdsbUlDaHZZbW9nSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCdFpYUm9iMlF1WVhCd2JIa29iMkpxTENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvS0c1aGJXVWdQVDA5SUNkemFHbG1kQ2NnZkh3Z2JtRnRaU0E5UFQwZ0ozTndiR2xqWlNjcElDWW1JRzlpYWk1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCa1pXeGxkR1VnYjJKcVd6QmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZMmhoYVc1U1pYTjFiSFFvZEdocGN5d2diMkpxS1R0Y2JpQWdJQ0I5TzF4dUlDQjlLVHRjYmx4dUlDQXZMeUJCWkdRZ1lXeHNJR0ZqWTJWemMyOXlJR0JCY25KaGVXQWdablZ1WTNScGIyNXpJSFJ2SUhSb1pTQjNjbUZ3Y0dWeUxseHVJQ0JsWVdOb0tGc25ZMjl1WTJGMEp5d2dKMnB2YVc0bkxDQW5jMnhwWTJVblhTd2dablZ1WTNScGIyNG9ibUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQnRaWFJvYjJRZ1BTQkJjbkpoZVZCeWIzUnZXMjVoYldWZE8xeHVJQ0FnSUY4a01TNXdjbTkwYjNSNWNHVmJibUZ0WlYwZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCdlltb2dQU0IwYUdsekxsOTNjbUZ3Y0dWa08xeHVJQ0FnSUNBZ2FXWWdLRzlpYWlBaFBTQnVkV3hzS1NCdlltb2dQU0J0WlhSb2IyUXVZWEJ3Ykhrb2IySnFMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJR05vWVdsdVVtVnpkV3gwS0hSb2FYTXNJRzlpYWlrN1hHNGdJQ0FnZlR0Y2JpQWdmU2s3WEc1Y2JpQWdMeThnVG1GdFpXUWdSWGh3YjNKMGMxeHVYRzRnSUhaaGNpQmhiR3hGZUhCdmNuUnpJRDBnZTF4dUlDQWdJRjlmY0hKdmRHOWZYem9nYm5Wc2JDeGNiaUFnSUNCV1JWSlRTVTlPT2lCV1JWSlRTVTlPTEZ4dUlDQWdJSEpsYzNSQmNtZDFiV1Z1ZEhNNklISmxjM1JCY21kMWJXVnVkSE1zWEc0Z0lDQWdhWE5QWW1wbFkzUTZJR2x6VDJKcVpXTjBMRnh1SUNBZ0lHbHpUblZzYkRvZ2FYTk9kV3hzTEZ4dUlDQWdJR2x6Vlc1a1pXWnBibVZrT2lCcGMxVnVaR1ZtYVc1bFpDeGNiaUFnSUNCcGMwSnZiMnhsWVc0NklHbHpRbTl2YkdWaGJpeGNiaUFnSUNCcGMwVnNaVzFsYm5RNklHbHpSV3hsYldWdWRDeGNiaU
14938FnSUNCcGMxTjBjbWx1WnpvZ2FYTlRkSEpwYm1jc1hHNGdJQ0FnYVhOT2RXMWlaWEk2SUdselRuVnRZbVZ5TEZ4dUlDQWdJR2x6UkdGMFpUb2dhWE5FWVhSbExGeHVJQ0FnSUdselVtVm5SWGh3T2lCcGMxSmxaMFY0Y0N4Y2JpQWdJQ0JwYzBWeWNtOXlPaUJwYzBWeWNtOXlMRnh1SUNBZ0lHbHpVM2x0WW05c09pQnBjMU41YldKdmJDeGNiaUFnSUNCcGMwRnljbUY1UW5WbVptVnlPaUJwYzBGeWNtRjVRblZtWm1WeUxGeHVJQ0FnSUdselJHRjBZVlpwWlhjNklHbHpSR0YwWVZacFpYY2tNU3hjYmlBZ0lDQnBjMEZ5Y21GNU9pQnBjMEZ5Y21GNUxGeHVJQ0FnSUdselJuVnVZM1JwYjI0NklHbHpSblZ1WTNScGIyNGtNU3hjYmlBZ0lDQnBjMEZ5WjNWdFpXNTBjem9nYVhOQmNtZDFiV1Z1ZEhNa01TeGNiaUFnSUNCcGMwWnBibWwwWlRvZ2FYTkdhVzVwZEdVa01TeGNiaUFnSUNCcGMwNWhUam9nYVhOT1lVNGtNU3hjYmlBZ0lDQnBjMVI1Y0dWa1FYSnlZWGs2SUdselZIbHdaV1JCY25KaGVTUXhMRnh1SUNBZ0lHbHpSVzF3ZEhrNklHbHpSVzF3ZEhrc1hHNGdJQ0FnYVhOTllYUmphRG9nYVhOTllYUmphQ3hjYmlBZ0lDQnBjMFZ4ZFdGc09pQnBjMFZ4ZFdGc0xGeHVJQ0FnSUdselRXRndPaUJwYzAxaGNDeGNiaUFnSUNCcGMxZGxZV3ROWVhBNklHbHpWMlZoYTAxaGNDeGNiaUFnSUNCcGMxTmxkRG9nYVhOVFpYUXNYRzRnSUNBZ2FYTlhaV0ZyVTJWME9pQnBjMWRsWVd0VFpYUXNYRzRnSUNBZ2EyVjVjem9nYTJWNWN5eGNiaUFnSUNCaGJHeExaWGx6T2lCaGJHeExaWGx6TEZ4dUlDQWdJSFpoYkhWbGN6b2dkbUZzZFdWekxGeHVJQ0FnSUhCaGFYSnpPaUJ3WVdseWN5eGNiaUFnSUNCcGJuWmxjblE2SUdsdWRtVnlkQ3hjYmlBZ0lDQm1kVzVqZEdsdmJuTTZJR1oxYm1OMGFXOXVjeXhjYmlBZ0lDQnRaWFJvYjJSek9pQm1kVzVqZEdsdmJuTXNYRzRnSUNBZ1pYaDBaVzVrT2lCbGVIUmxibVFzWEc0Z0lDQWdaWGgwWlc1a1QzZHVPaUJsZUhSbGJtUlBkMjRzWEc0Z0lDQWdZWE56YVdkdU9pQmxlSFJsYm1SUGQyNHNYRzRnSUNBZ1pHVm1ZWFZzZEhNNklHUmxabUYxYkhSekxGeHVJQ0FnSUdOeVpXRjBaVG9nWTNKbFlYUmxMRnh1SUNBZ0lHTnNiMjVsT2lCamJHOXVaU3hjYmlBZ0lDQjBZWEE2SUhSaGNDeGNiaUFnSUNCblpYUTZJR2RsZEN4Y2JpQWdJQ0JvWVhNNklHaGhjeXhjYmlBZ0lDQnRZWEJQWW1wbFkzUTZJRzFoY0U5aWFtVmpkQ3hjYmlBZ0lDQnBaR1Z1ZEdsMGVUb2dhV1JsYm5ScGRIa3NYRzRnSUNBZ1kyOXVjM1JoYm5RNklHTnZibk4wWVc1MExGeHVJQ0FnSUc1dmIzQTZJRzV2YjNBc1hHNGdJQ0FnZEc5UVlYUm9PaUIwYjFCaGRHZ2tNU3hjYmlBZ0lDQndjbTl3WlhKMGVUb2djSEp2Y0dWeWRIa3NYRzRnSUNBZ2NISnZjR1Z5ZEhsUFpqb2djSEp2Y0dWeWRIbFBaaXhjYmlBZ0lDQnRZWFJqYUdWeU9pQnRZWFJqYUdWeUxGeHVJQ0FnSUcxaGRHTm9aWE02SUcxaGRHTm9aWElzWEc0Z0lDQWdkR2x0WlhNNklIUnBiV1Z6TEZ4dUlDQWdJSEpoYm1SdmJUb2djbUZ1Wkc5dExGeHVJQ0FnSUc1dmR6b2dibTkzTEZ4dUlDQWdJR1Z6WTJGd1pUb2dYMlZ6WTJGd1pTeGNiaUFnSUNCMWJtVnpZMkZ3WlRvZ1gzVnVaWE5qWVhCbExGeHVJQ0FnSUhSbGJYQnNZWFJsVTJWMGRHbHVaM002SUhSbGJYQnNZWFJsVTJWMGRHbHVaM01zWEc0Z0lDQWdkR1Z0Y0d4aGRHVTZJSFJsYlhCc1lYUmxMRnh1SUNBZ0lISmxjM1ZzZERvZ2NtVnpkV3gwTEZ4dUlDQWdJSFZ1YVhGMVpVbGtPaUIxYm1seGRXVkpaQ3hjYmlBZ0lDQmphR0ZwYmpvZ1kyaGhhVzRzWEc0Z0lDQWdhWFJsY21GMFpXVTZJR2wwWlhKaGRHVmxMRnh1SUNBZ0lIQmhjblJwWVd3NklIQmhjblJwWVd3c1hHNGdJQ0FnWW1sdVpEb2dZbWx1WkN4Y2JpQWdJQ0JpYVc1a1FXeHNPaUJpYVc1a1FXeHNMRnh1SUNBZ0lHMWxiVzlwZW1VNklHMWxiVzlwZW1Vc1hHNGdJQ0FnWkdWc1lYazZJR1JsYkdGNUxGeHVJQ0FnSUdSbFptVnlPaUJrWldabGNpeGNiaU
14938FnSUNCMGFISnZkSFJzWlRvZ2RHaHliM1IwYkdVc1hHNGdJQ0FnWkdWaWIzVnVZMlU2SUdSbFltOTFibU5sTEZ4dUlDQWdJSGR5WVhBNklIZHlZWEFzWEc0Z0lDQWdibVZuWVhSbE9pQnVaV2RoZEdVc1hHNGdJQ0FnWTI5dGNHOXpaVG9nWTI5dGNHOXpaU3hjYmlBZ0lDQmhablJsY2pvZ1lXWjBaWElzWEc0Z0lDQWdZbVZtYjNKbE9pQmlaV1p2Y21Vc1hHNGdJQ0FnYjI1alpUb2diMjVqWlN4Y2JpQWdJQ0JtYVc1a1MyVjVPaUJtYVc1a1MyVjVMRnh1SUNBZ0lHWnBibVJKYm1SbGVEb2dabWx1WkVsdVpHVjRMRnh1SUNBZ0lHWnBibVJNWVhOMFNXNWtaWGc2SUdacGJtUk1ZWE4wU1c1a1pYZ3NYRzRnSUNBZ2MyOXlkR1ZrU1c1a1pYZzZJSE52Y25SbFpFbHVaR1Y0TEZ4dUlDQWdJR2x1WkdWNFQyWTZJR2x1WkdWNFQyWXNYRzRnSUNBZ2JHRnpkRWx1WkdWNFQyWTZJR3hoYzNSSmJtUmxlRTltTEZ4dUlDQWdJR1pwYm1RNklHWnBibVFzWEc0Z0lDQWdaR1YwWldOME9pQm1hVzVrTEZ4dUlDQWdJR1pwYm1SWGFHVnlaVG9nWm1sdVpGZG9aWEpsTEZ4dUlDQWdJR1ZoWTJnNklHVmhZMmdzWEc0Z0lDQWdabTl5UldGamFEb2daV0ZqYUN4Y2JpQWdJQ0J0WVhBNklHMWhjQ3hjYmlBZ0lDQmpiMnhzWldOME9pQnRZWEFzWEc0Z0lDQWdjbVZrZFdObE9pQnlaV1IxWTJVc1hHNGdJQ0FnWm05c1pHdzZJSEpsWkhWalpTeGNiaUFnSUNCcGJtcGxZM1E2SUhKbFpIVmpaU3hjYmlBZ0lDQnlaV1IxWTJWU2FXZG9kRG9nY21Wa2RXTmxVbWxuYUhRc1hHNGdJQ0FnWm05c1pISTZJSEpsWkhWalpWSnBaMmgwTEZ4dUlDQWdJR1pwYkhSbGNqb2dabWxzZEdWeUxGeHVJQ0FnSUhObGJHVmpkRG9nWm1sc2RHVnlMRnh1SUNBZ0lISmxhbVZqZERvZ2NtVnFaV04wTEZ4dUlDQWdJR1YyWlhKNU9pQmxkbVZ5ZVN4Y2JpQWdJQ0JoYkd3NklHVjJaWEo1TEZ4dUlDQWdJSE52YldVNklITnZiV1VzWEc0Z0lDQWdZVzU1T2lCemIyMWxMRnh1SUNBZ0lHTnZiblJoYVc1ek9pQmpiMjUwWVdsdWN5eGNiaUFnSUNCcGJtTnNkV1JsY3pvZ1kyOXVkR0ZwYm5Nc1hHNGdJQ0FnYVc1amJIVmtaVG9nWTI5dWRHRnBibk1zWEc0Z0lDQWdhVzUyYjJ0bE9pQnBiblp2YTJVc1hHNGdJQ0FnY0d4MVkyczZJSEJzZFdOckxGeHVJQ0FnSUhkb1pYSmxPaUIzYUdWeVpTeGNiaUFnSUNCdFlYZzZJRzFoZUN4Y2JpQWdJQ0J0YVc0NklHMXBiaXhjYmlBZ0lDQnphSFZtWm14bE9pQnphSFZtWm14bExGeHVJQ0FnSUhOaGJYQnNaVG9nYzJGdGNHeGxMRnh1SUNBZ0lITnZjblJDZVRvZ2MyOXlkRUo1TEZ4dUlDQWdJR2R5YjNWd1FuazZJR2R5YjNWd1Fua3NYRzRnSUNBZ2FXNWtaWGhDZVRvZ2FXNWtaWGhDZVN4Y2JpQWdJQ0JqYjNWdWRFSjVPaUJqYjNWdWRFSjVMRnh1SUNBZ0lIQmhjblJwZEdsdmJqb2djR0Z5ZEdsMGFXOXVMRnh1SUNBZ0lIUnZRWEp5WVhrNklIUnZRWEp5WVhrc1hHNGdJQ0FnYzJsNlpUb2djMmw2WlN4Y2JpQWdJQ0J3YVdOck9pQndhV05yTEZ4dUlDQWdJRzl0YVhRNklHOXRhWFFzWEc0Z0lDQWdabWx5YzNRNklHWnBjbk4wTEZ4dUlDQWdJR2hsWVdRNklHWnBjbk4wTEZ4dUlDQWdJSFJoYTJVNklHWnBjbk4wTEZ4dUlDQWdJR2x1YVhScFlXdzZJR2x1YVhScFlXd3NYRzRnSUNBZ2JHRnpkRG9nYkdGemRDeGNiaUFnSUNCeVpYTjBPaUJ5WlhOMExGeHVJQ0FnSUhSaGFXdzZJSEpsYzNRc1hHNGdJQ0FnWkhKdmNEb2djbVZ6ZEN4Y2JpQWdJQ0JqYjIxd1lXTjBPaUJqYjIxd1lXTjBMRnh1SUNBZ0lHWnNZWFIwWlc0NklHWnNZWFIwWlc0c1hHNGdJQ0FnZDJsMGFHOTFkRG9nZDJsMGFHOTFkQ3hjYmlBZ0lDQjFibWx4T2lCMWJtbHhMRnh1SUNBZ0lIVnVhWEYxWlRvZ2RXNXBjU3hjYmlBZ0lDQjFibWx2YmpvZ2RXNXBiMjRzWEc0Z0lDQWdhVzUwWlhKelpXTjBhVzl1T2lCcGJuUmxjbk5sWTNScGIyNHNYRzRnSUNBZ1pHbG1abVZ5Wlc1alpUb2daR2xtWm1WeVpXNWpaU3hjYmlBZ0lDQjFibnBwY0RvZ2RXNTZhWEFzWEc0Z0lDQWdkSEpoYm5Od2IzTmxPaUIxYm5wcGNDeGNiaUFnSUNCNmFYQTZJSHBwY0N4Y2JpQWdJQ0J2WW1wbFkzUTZJRzlpYW1WamRDeGNiaUFnSUNCeVlXNW5aVG9nY21GdVoyVXNYRzRnSUNBZ1kyaDFibXM2SUdOb2RXNXJMRnh1SUNBZ0lHMXBlR2x1T2lCdGFYaHBiaXhjYmlBZ0lDQW5aR1ZtWVhWc2RDYzZJRjhrTVZ4dUlDQjlPMXh1WEc0Z0lDOHZJRVJsWm1GMWJIUWdSWGh3YjNKMFhHNWNiaUFnTHk4Z1FXUmtJR0ZzYkNCdlppQjBhR1VnVlc1a1pYSnpZMjl5WlNCbWRXNWpkR2x2Ym5NZ2RHOGdkR2hsSUhkeVlYQndaWElnYjJKcVpXTjBMbHh1SUNCMllYSWdYeUE5SUcxcGVHbHVLR0ZzYkVWNGNHOXlkSE1wTzF4dUlDQXZMeUJNWldkaFkza2dUbTlrWlM1cWN5QkJVRWt1WEc0Z0lGOHVYeUE5SUY4N1hHNWNiaUFnY21WMGRYSnVJRjg3WEc1Y2JuMHBLU2s3WEc0dkx5TWdjMjkxY21ObFRXRndjR2x1WjFWU1REMTFibVJsY25OamIzSmxMWFZ0WkM1cWN5NXRZWEJjYmlKZGZRPT0iLCJ2YXIgJCA9IHJlcXVpcmUoJ2pxdWVyeScpO1xyXG52YXIgYnJlYWtwb2ludCA9IHJlcXVpcmUoXCIuL2FwcC1icmVha3BvaW50c1wiKTtcclxuXHJcbiQoZnVuY3Rpb24oKXtcclxuICAgICQoJy5hY2NvcmRpb24nKS5maW5kKCcuYWNjb3JkaW9uLXRvZ2dsZScpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ2FjY29yZGlvbi10b2dnbGUtLW9wZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcuYWNjb3JkaW9uJykuZmluZCgnLmFjY29yZGlvbi10b2dnbGUtLW9wZW4nKS5yZW1vdmVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiYWNjb3JkaW9uLXRvZ2dsZS0tb3BlblwiKS5uZXh0KCkuc2xpZGVUb2dnbGUoJ2Zhc3QnLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgaWYoYnJlYWtwb2ludCgpICE9IFwic21hcnRwaG9uZVwiKSB7XHJcblx0ICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcclxuXHQgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMpLm9mZnNldCgpLnRvcCAtICggKCQoJy5jLW5hdmlnYXRpb24nKS5vdXRlckhlaWdodCh0cnVlKSAqIDIpICsgKCQodGhpcykucHJldigpLm91dGVySGVpZ2h0KHRydWUpICogMikpXHJcblx0ICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgXHRcdH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG59KTtcclxuXHJcbi8qXHJcbnZhciBicmVha3BvaW50ID0gcmVxdWlyZShcIi4vYXBwLWJyZWFrcG9pbnRzXCIpO1xyXG5cclxualF1ZXJ5KCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCAkICkge1xyXG4gICAgJCgnLmFjY29yZGlvbicpLmZpbmQoJy5hY2NvcmRpb24tdG9nZ2xlJykuY2xpY2soZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ2FjY29yZGlvbi10b2dnbGUtLW9wZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcuYWNjb3JkaW9uJykuZmluZCgnLmFjY29yZGlvbi10b2dnbGUtLW9wZW4nKS5yZW1vdmVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiYWNjb3JkaW9uLXRvZ2dsZS0tb3BlblwiKS5uZXh0KCkuc2xpZGVUb2dnbGUoJ2Zhc3QnLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgaWYoYnJlYWtwb2ludCgpICE9IFwic21hcnRwaG9uZVwiKSB7XHJcblx0ICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcclxuXHQgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMpLm9mZnNldCgpLnRvcCAtICggKCQoJy5uYXZpZ2F0aW9uJykub3V0ZXJIZWlnaHQodHJ1ZSkgKiAyKSArICgkKHRoaXMpLnByZXYoKS5vdXRlckhlaWdodCh0cnVlKSAqIDIpKVxyXG5cdCAgICAgICAgICAgICAgI
14938H0sIDUwMCk7XHJcbiAgICAgICAgIFx0XHR9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJhY2NvcmRpb24tdG9nZ2xlLS1vcGVuXCIpLm5leHQoKS5zbGlkZVRvZ2dsZSgnZmFzdCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9KTtcclxufSk7XHJcblxyXG4gKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLCAnOmJlZm9yZScpLmdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnKTtcclxufTtcclxuIiwidmFyIHN0eWxlcyA9IFtcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwiYWRtaW5pc3RyYXRpdmVcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwibGFiZWxzLnRleHQuZmlsbFwiLFxyXG4gICAgICAgIFwic3R5bGVyc1wiOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjNDQ0NDQ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcImxhbmRzY2FwZVwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiI2YyZjJmMlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwiZmVhdHVyZVR5cGVcIjogXCJwb2lcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCI6IFwib2ZmXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWRcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJzYXR1cmF0aW9uXCI6IC0xMDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJsaWdodG5lc3NcIjogNDVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWQuaGlnaHdheVwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJzaW1wbGlmaWVkXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWQuYXJ0ZXJpYWxcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwibGFiZWxzLmljb25cIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvZmZcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwidHJhbnNpdFwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvZmZcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwid2F0ZXJcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiM0NmJjZWNcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvblwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl1cclxuO1xyXG5cclxud2luZG93LmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgcGluID0gW107XHJcblx0dmFyIGluZm93aW5kb3cgPSAgbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coe1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCJcclxuICAgIH0pO1xyXG5cdHZhciBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcblx0dmFyIHpvb20gPSA4O1xyXG5cclxuXHR2YXIgc3R5bGVkTWFwID0gbmV3IGdvb2dsZS5tYXBzLlN0eWxlZE1hcFR5cGUoc3R5bGVzLCB7bmFtZTogXCJjdXN0b20tbWFwXCJ9KTtcclxuXHJcblxyXG5cdHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHpvb20gICAgICA6IHpvb20sXHJcbiAgICAgICAvLyBjZW50ZXIgICAgOiBsYXRMbmcsXHJcbiAgICAgICAgc2Nyb2xsd2hlZWw6IGZhbHNlLFxyXG4gICAgICAgIG1hcFR5cGVJZCA6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZC5URVJSQUlOLCAvLyBUeXBlIGRlIGNhcnRlLCBkaWZmw6lyZW50ZXMgdmFsZXVycyBwb3NzaWJsZSBIWUJSSUQsIFJPQURNQVAsIFNBVEVMTElURSwgVEVSUkFJTlxyXG4gICAgICAgIG1heFpvb20gICA6IDIwLFxyXG4gICAgICAgIG1hcFR5cGVDb250cm9sT3B0aW9uczoge1xyXG4gICAgICAgICAgICBtYXBUeXBlSWRzOiBbZ29vZ2xlLm1hcHMuTWFwVHlwZUlkLlJPQURNQVAsICdtYXBfc3R5bGUnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgem9vbUNvbnRyb2w6IHRydWVcclxuICAgIH07XHJcblxyXG5cdGlmKCQoJy5waW4nKS5sZW5ndGgpIHtcclxuICAgIFx0JCgnLnBpbicpLmVhY2goZnVuY3Rpb24oKXtcclxuXHRcdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICBcdFwibGF0XCI6ICQodGhpcykuYXR0cihcImRhdGEtbGF0XCIpLFxyXG5cdCAgICAgICAgXHRcImxuZ1wiOiAkKHRoaXMpLmF0dHIoXCJkYXRhLV9sbmdcIiksXHJcblx0ICAgICAgICBcdFwicGluXCI6ICQodGhpcykuYXR0cihcImRhdGEtcGluXCIpXHJcbiAgICBcdFx0fTtcclxuXHJcbiAgICBcdFx0cGluLnB1c2goZGF0YSk7XHJcbiAgICBcdH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHBpbi5sZW5ndGgpIHtcclxuICAgIFx0dmFyIGxhdCA9IHBpblswXVsnbGF0J107XHJcbiAgICBcdHZhciBsYXRMbmcgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKHBpblswXVsnbGF0J10sIHBpblswXVsnbG5nJ10pO1xyXG4gICAgXHR2YXIgbWFya2VyX3BpbiA9IHBpblswXVsncGluJ10
149387XHJcblx0XHRvcHRpb25zLmNlbnRlciA9IGxhdExuZztcclxuXHR9XHJcblxyXG5cdG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZScpLCBvcHRpb25zKTtcclxuXHRtYXAubWFwVHlwZXMuc2V0KCdtYXBfc3R5bGUnLCBzdHlsZWRNYXApO1xyXG5cdG1hcC5zZXRNYXBUeXBlSWQoJ21hcF9zdHlsZScpO1xyXG5cclxuXHRpZihwaW4ubGVuZ3RoKSB7XHJcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHBpbi5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcblx0XHRcdFx0bWFwOiBtYXAsXHJcblx0XHRcdFx0cG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcocGluW2ldWydsYXQnXSwgcGluW2ldWydsbmcnXSksXHJcblx0XHRcdFx0aWNvbjogbmV3IGdvb2dsZS5tYXBzLk1hcmtlckltYWdlKHBpbltpXVsncGluJ10pXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gbG9hZFNjcmlwdCgpIHtcclxuICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICBzY3JpcHQuc3JjID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz92PTMuZXhwJyArXHJcbiAgICAgICcmY2FsbGJhY2s9aW5pdGlhbGl6ZSZrZXk9QUl6YVN5RDhRdXBqUWx3YThSdm5CSEZJVHc0MzZCdlJnQmdkYk40JztcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbn1cclxuXHJcbmlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvb2dsZVwiKSkge1xyXG4gICAgd2luZG93Lm9ubG9hZCA9IGxvYWRTY3JpcHQ7XHJcbn0iXX0=
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.