Socket
Socket
Sign inDemoInstall

ng3-tour

Package Overview
Dependencies
9
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.7 to 0.1.8

2

bundles/ng3-tour.umd.min.js

@@ -15,3 +15,3 @@ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("rxjs"),require("rxjs/operators"),require("@angular/router")):"function"==typeof define&&define.amd?define("ng3-tour",["exports","@angular/core","@angular/common","rxjs","rxjs/operators","@angular/router"],e):e((t=t||self)["ng3-tour"]={},t.ng.core,t.ng.common,t.rxjs,t.rxjs.operators,t.ng.router)}(this,(function(t,e,o,r,n,i){"use strict";

and limitations under the License.
***************************************************************************** */var s=function(){return(s=Object.assign||function(t){for(var e,o=1,r=arguments.length;o<r;o++)for(var n in e=arguments[o])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};var a=function(){function t(){this.targetExist$=new r.BehaviorSubject(null)}return t.prototype.maxHeight=function(){return Math.round(Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight,window.innerHeight))},t.prototype.getSizeAndPosition=function(t){var e=t.getBoundingClientRect(),o=document.body.getBoundingClientRect(),r=Math.round(e.top-o.top),n=Math.round(e.left-o.left),i=Math.round(e.bottom-o.top),s=Math.round(e.left-o.left),a=Math.round(e.height||i-r);return{top:r,left:n,bottom:i,right:s,width:Math.round(e.width||s-n),height:a,pageHeight:this.maxHeight()}},t.prototype.resizeTarget=function(t,e){return t.left-=e[0],t.right+=e[0],t.top-=e[1]||e[0],t.bottom+=e[1]||e[0],t.width+=2*e[0],t.height+=2*(e[1]||e[0]),t},t.prototype.getTargetSubject=function(){return this.targetExist$},t.prototype.setTargetSubject=function(t){this.targetExist$.next(t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[]},t}();var p={done:{"en-EN":"done","ru-RU":"закр","fr-FR":"fini"},prev:{"en-EN":"prev","ru-RU":"пред","fr-FR":"préc"},next:{"en-EN":"next","ru-RU":"след","fr-FR":"proch"}};var u={className:"",continueIfTargetAbsent:!0,withoutCounter:!1,withoutPrev:!1,customTemplate:!1,smoothScroll:!1,scrollTo:!0,themeColor:"rgb(20, 60, 60)",opacity:.6,placement:"down",arrowToTarget:!0,stepTargetResize:[0],delay:1e3,animatedStep:!0,fixed:!1,backdrop:!0,minWidth:"250px",minHeight:"150px",maxWidth:"400px",maxHeight:"600px",autofocus:!0,closeOnClickOutside:!1},c=function(t){void 0===t&&(t=u);var e=t.className,o=t.continueIfTargetAbsent,r=t.withoutCounter,n=t.withoutPrev,i=t.customTemplate,s=t.smoothScroll,a=t.scrollTo,p=t.themeColor,c=t.opacity,h=t.placement,l=t.arrowToTarget,d=t.stepTargetResize,m=t.maxHeight,g=t.maxWidth,f=t.minHeight,y=t.minWidth,v=t.delay,b=t.animatedStep,S=t.fixed,x=t.backdrop,w=t.autofocus,k=t.closeOnClickOutside;this.className=e,this.placement=h,this.arrowToTarget=l,this.themeColor=p,this.opacity=c,this.backdrop=x,this.customTemplate=i,this.withoutCounter=r,this.withoutPrev=n,this.continueIfTargetAbsent=o,this.stepTargetResize=d,this.maxHeight=m,this.maxWidth=g,this.minHeight=f,this.minWidth=y,this.delay=v,this.animatedStep=b,this.smoothScroll=s,this.scrollTo=a,this.fixed=S,this.autofocus=w,this.closeOnClickOutside=k};var h=function(t){},l={tourStart:h,tourEnd:h,tourBreak:h,next:h,prev:h},d=function(){function t(t,e,n){this.router=t,this.targetService=e,this.tourStarted=!1,this.stepsStream$=new r.BehaviorSubject(null),this.history=[],this.routeChanged=!1,this.presets={},this.tourBreak=l.tourBreak,this.tourEnd=l.tourEnd,this.next=l.next,this.prev=l.prev,this.nextStep=this.nextStep.bind(this),this.prevStep=this.prevStep.bind(this),this.stopTour=this.stopTour.bind(this),this.isBrowser=o.isPlatformBrowser(n),this.isBrowser?this.lang=navigator.language:this.lang=""}return t.prototype.validateOptions=function(t){var e=/^top$|^down$|^left$|^right$|^center$|^right-center$|^left-center$|^right-top$|^left-top$/i,o=!0;return t.steps.forEach((function(t){t.options&&t.options.placement&&(o=e.test(t.options.placement))})),t.tourOptions.placement&&(o=e.test(t.tourOptions.placement)),o},t.prototype.setSteps=function(t){var o=this,r=new c(s({},u,this.presets,t.tourOptions));this.steps=t.steps.map((function(e,n){return e.index=n,e.description&&"object"==typeof e.description&&(e.description=o.defineLocalName(e.description)),e.title&&"object"==typeof e.title&&(e.title=o.defineLocalName(e.title)),e.options=e.options?s({},r,e.options):r,e.total=t.steps.length,e.ctrlBtns=o.defineLocalBtnNames(t.ctrlBtns||p),e})),e.isDevMode()&&(console.log("mode: ",e.isDevMode()),console.log("ng3-tour is initiated with steps:"),console.log(this.steps))},t.prototype.defineLocalName=function(t){var e,o=this;if(!this.isBrowser)return"";if(t.hasOwnProperty(this.lang))e=t[this.lang];else{var r=Object.keys(t),n=r.filter((function(t){return t.includes(o.lang.slice(0,2))}))[0];e=n?t[n]:t[r[0]]}return"string"==typeof e?e:(console.error("Tour configuration error with "+JSON.stringify(t)),"Error")},t.prototype.defineLocalBtnNames=function(t){var e=this,o={};for(var r in t)if(t.hasOwnProperty(r)){var n=void 0;if("string"==typeof t[r])n=t[r];else if("object"==typeof t[r]&&"string"===t[r][this.lang])n=t[r][this.lang];else{var i=Object.keys(t[r]),s=i.filter((function(t){return t.includes(e.lang.slice(0,2))}))[0];"string"==typeof(n=s?t[r][s]:t[r][i[0]])?o[r]=n:this.isBrowser&&(console.error("Tour configuration error with "+JSON.stringify(t)),o[r]="Error")}}return o},t.prototype.initStep=function(t){var e=this.history.length?this.getLastStep():{route:null},o=this.steps[t];this.routeChanged=e.route!==o.route,this.history.push(t),o.route&&this.routeChanged&&this.router.navigate([o.route]),this.stepsStream$.next(o.stepName)},t.prototype.getHistory=function(){return this.history},t.prototype.setPresets=function(t){this.presets=s({},this.presets,t)},t.prototype.resetStep=function(t,e){var o="number"==typeof t?t:this.getStepByName(t).index;this.steps[o]=s({},e)},t.prototype.getStepByName=function(t){return this.steps.filter((function(e){return e.stepName===t}))[0]},t.prototype.getStepByIndex=function(t){return void 0===t&&(t=0),this.steps[t]},t.prototype.getLastStep=function(){return this.history.length?this.steps[this.history.slice(-1)[0]]:null},t.prototype.getStepsStream=function(){return this.stepsStream$},t.prototype.isRouteChanged=function(){return this.routeChanged},t.prototype.setTourStatus=function(t){this.tourStarted=t},t.prototype.getTourStatus=function(){return this.tourStarted},t.prototype.startTour=function(t){if(!this.validateOptions(t))throw new Error("Placement option of the ng3-tour or one of it step is invalid");var e=s({},l,t.tourEvents),o=e.tourBreak,r=e.tourStart,n=e.tourEnd,i=e.next,a=e.prev;r({tourEvent:"Tour start",tour:t}),this.tourBreak=o,this.tourEnd=n,this.next=i,this.prev=a,this.setTourStatus(!0),this.setSteps(t),this.initStep(0)},t.prototype.stopTour=function(){var t=this.getLastStep().index,e=this.steps.length-1;t<e?this.tourBreak({tourEvent:"Tour break",step:t,history:this.history}):e===t&&this.tourEnd({tourEvent:"Tour end",step:t,history:this.history}),this.setTourStatus(!1),this.steps.length=0,this.stepsStream$.next(null),this.history.length=0,this.targetService.setTargetSubject(null)},t.prototype.nextStep=function(){var t=this.getLastStep().index+1;this.next({tourEvent:"Init next",step:t,history:this.history}),this.initStep(t)},t.prototype.prevStep=function(){var t=this.getLastStep().index-1;this.prev({tourEvent:"Init prev",step:t,history:this.history}),this.initStep(t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:i.Router},{type:a},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t}();var m=function(){function t(t,n,i,s,a){this.tourService=t,this.stepTargetService=n,this.elem=i,this.ref=s,this.currentStep=null,this.steps$=null,this.onDestroy=new r.Subject,this.timeouts=[],this.next=new e.EventEmitter,this.prev=new e.EventEmitter,this.done=new e.EventEmitter,this.break=new e.EventEmitter,this.isBrowser=o.isPlatformBrowser(a)}return t.prototype.clickOutsideToClose=function(t){this.currentStep&&this.currentStep.options.closeOnClickOutside&&!this.elem.nativeElement.contains(t.target)&&this.onClose(t)},t.prototype.onResize=function(t){this.target&&this.currentStep&&(this.saveTarget(this.targetElement),this.defineStepPlacement())},t.prototype.ngOnInit=function(){var t=this;this.isBrowser&&(this.stepModalPosition={top:-500,left:-500},this.subscribeToStepsStream(),this.steps$=this.stepTargetService.getTargetSubject().pipe(n.map((function(e){return t.currentStep?t.currentStep:e&&t.tourService.getTourStatus?(t.targetElement=e.target,t.currentStep=t.tourService.getStepByName(e.stepName),t.saveStepData(),t.saveTarget(e.target),t.currentStep):e}))))},t.prototype.ngOnDestroy=function(){this.onDestroy.next(),this.timeouts.forEach((function(t){return clearTimeout(t)}))},t.prototype.subscribeToStepsStream=function(){var t=this;this.tourService.getStepsStream().pipe(n.takeUntil(this.onDestroy),n.map((function(e){if(!e)return t.currentStep=null,e;var o=(t.currentStep&&t.currentStep.options||t.tourService.getStepByIndex().options).themeColor;t.currentStep=null,t.resetClasses();var r=t.tourService.getStepByName(e).options.delay;return t.targetBackground=o,t.tourService.isRouteChanged()?t.timeouts[t.timeouts.length]=setTimeout((function(){return t.checkTarget(e)}),r+100):t.timeouts[t.timeouts.length]=setTimeout((function(){return t.checkTarget(e)}),100),e}))).subscribe()},t.prototype.checkTarget=function(t,e){var o=this;if(void 0===e&&(e=2),t&&this.tourService.getTourStatus()){var r=this.tourService.getStepByName(t).options.delay,n=document.querySelector("[ngtourstep="+t+"]");if(e&&this.tourService.isRouteChanged()&&!n)this.timeouts[this.timeouts.length]=setTimeout((function(){return o.checkTarget(t,e-1)}),r);else if(!n){if(console.warn("Target is missed for step "+t),this.tourService.getStepByName(t).options.continueIfTargetAbsent)this.tourService.getStepByName(t).index+1<this.tourService.getLastStep().total?this.tourService.nextStep():(console.warn("The tour is stopped because of no targets is found for step "+t+" and next ones"),this.tourService.stopTour(),this.stepTargetService.setTargetSubject(null))}}},t.prototype.resetClasses=function(){var t=this.currentStep,e=t&&t.options||this.tourService.getStepByIndex().options,o=e.arrowToTarget,r=e.animatedStep,n=e.placement,i=e.className,s=o?"with-arrow":"",a=r?t?"animation-on":"fade-on":t?"":"fade-on";this.class=(s+" "+i+" pos-"+n+" "+a).trim()},t.prototype.saveTarget=function(t){var e=this;this.target=this.stepTargetService.resizeTarget(this.stepTargetService.getSizeAndPosition(t),this.currentStep.options.stepTargetResize),this.timeouts[this.timeouts.length]=setTimeout((function(){return e.defineStepPlacement()}),0)},t.prototype.saveStepData=function(){this.resetClasses(),this.targetBackground="transparent"},t.prototype.defineStepPlacement=function(){var t=this,e=document.querySelector(".tour-step-modal");if(e){var o=e.getBoundingClientRect();this.modalHeight=Math.round(o.height?o.height:o.bottom-o.top);var r=Math.round(o.width?o.width:o.right-o.left),n=this.currentStep.options,i=n.placement,s=n.scrollTo,a=this.target,p=a.top,u=a.bottom,c=a.width,h=a.left,l=a.right;/^down$/i.test(i)?this.stepModalPosition={top:u+20,left:Math.round(h-r/2)}:/^top$/i.test(i)?this.stepModalPosition={top:p-this.modalHeight-20,left:Math.round(h-r/2)}:/^left$/i.test(i)?this.stepModalPosition={left:h-r-20,top:p}:/^right$/i.test(i)?this.stepModalPosition={left:l+c+20,top:p}:/^left-top$/i.test(i)?this.stepModalPosition={left:h-r-20,top:p-this.modalHeight+50}:/^right-top$/i.test(i)?this.stepModalPosition={left:l+c+20,top:p-this.modalHeight+50}:/^right-center$/i.test(i)?this.stepModalPosition={right:50,top:Math.round(window.innerHeight/2-this.modalHeight/2)}:/^left-center$/i.test(i)?this.stepModalPosition={left:50,top:Math.round(window.innerHeight/2-this.modalHeight/2)}:/^center$/i.test(i)&&(this.stepModalPosition={left:Math.round(window.innerWidth/2-r/2),top:Math.round(window.innerHeight/2-this.modalHeight/2)}),this.currentStep.options.autofocus&&this.setFocus(e),s&&this.scrollTo()}else this.timeouts[this.timeouts.length]=setTimeout((function(){return t.defineStepPlacement()}),100)},t.prototype.setFocus=function(t){var e=t.querySelector(".tour-btn-next"),o=t.querySelector(".tour-btn-done");e?e.focus():o&&o.focus()},t.prototype.scrollTo=function(){var t=this.currentStep.options,e=t.placement,o=t.fixed,r=this.target.left,n="top"!==e?this.target.top-100:this.target.top-this.modalHeight-50,i=this.currentStep.options.smoothScroll?"smooth":"auto";o?document.documentElement.scroll({top:0,left:0,behavior:i}):document.documentElement.scroll({top:n,left:r,behavior:i})},t.prototype.onNext=function(t){this.next.emit({stepEvent:"next",index:this.currentStep.index+1,history:this.tourService.getHistory()}),this.tourService.nextStep()},t.prototype.onPrev=function(t){this.prev.emit({stepEvent:"prev",index:this.currentStep.index-1,history:this.tourService.getHistory()}),this.tourService.prevStep()},t.prototype.onClose=function(t){this.currentStep.index!==this.currentStep.total-1?this.break.emit({stepEvent:"break",index:this.currentStep.index,history:this.tourService.getHistory()}):this.done.emit({stepEvent:"done",index:this.currentStep.index,history:this.tourService.getHistory()}),this.tourService.stopTour()},t.decorators=[{type:e.Component,args:[{selector:"ng-tour-step-template",template:'<div class="tour-step-wrapper" *ngIf="steps$ | async as step" [ngClass]="class">\n <ng-tour-step-back\n *ngIf="step.options.backdrop && target"\n [themeColor]="step.options.themeColor"\n [stepBackSize]="target"\n [position]="step.options.fixed ? \'fixed\' : \'absolute\'"\n [targetBackground]="targetBackground"\n [opacity]="step.options.opacity"\n >\n </ng-tour-step-back>\n <div\n *ngIf="currentStep"\n class="tour-step-modal"\n [style.max-width]="step.options.maxWidth"\n [style.max-height]="step.options.maxHeight"\n [style.top.px]="stepModalPosition.top"\n [style.left.px]="stepModalPosition.left"\n [style.bottom.px]="stepModalPosition.bottom"\n [style.right.px]="stepModalPosition.right"\n [style.min-width]="step.options.minWidth"\n [style.min-height]="step.options.minHeight"\n [style.position]="step.options.fixed ? \'fixed\' : \'absolute\'"\n [style.color]="step.options.themeColor"\n > \n <div *ngIf="!step.options.customTemplate" class="tour-step-modal__content">\n <div class="tour-step-modal__header">\n <h3 class="tour-step-modal__title">\n {{step.title}}\n </h3>\n <button class="tour-btn-close" type="button" (click)="onClose($event)">\n &times;\n </button>\n </div>\n <div class="tour-step-modal__body">\n <p class="tour-step-modal__description">\n {{step.description}}\n </p>\n </div>\n <div class="tour-step-modal__footer">\n <div *ngIf="!step.withoutCounter" class="tour-step-modal__counter">\n {{step.index + 1}} of {{step.total}}\n </div>\n <button\n *ngIf="!step.withoutPrev && step.index" \n type="button" \n class="tour-btn tour-btn-prev"\n (click)="onPrev($event)"\n >\n {{step.ctrlBtns.prev}}\n </button>\n <button\n *ngIf="step.index + 1 !== step.total"\n type="button"\n class="tour-btn tour-btn-next"\n (click)="onNext($event)" \n >\n {{step.ctrlBtns.next}}\n </button>\n <button\n *ngIf="step.index + 1 === step.total"\n type="button"\n class="tour-btn tour-btn-done"\n (click)="onClose($event)"\n >\n {{step.ctrlBtns.done}}\n </button>\n </div>\n </div>\n \n <ng-content ></ng-content>\n \n </div>\n</div>\n',encapsulation:e.ViewEncapsulation.None,exportAs:"steps$",styles:['.tour-step-wrapper.fade-on .tour-step-modal{opacity:0}.tour-step-wrapper:not(.animation-on) .tour-step-modal{-webkit-animation:.4s ease-in-out fade;animation:.4s ease-in-out fade}.tour-step-wrapper.pos-down.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepDown;animation:.4s ease-in-out stepDown}.tour-step-wrapper.pos-down.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-bottom:.4rem solid #fff;border-left:.4rem solid transparent;border-right:.4rem solid transparent;top:-.4rem;right:45%}.tour-step-wrapper.pos-top.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepTop;animation:.4s ease-in-out stepTop}.tour-step-wrapper.pos-top.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-top:.4rem solid #fff;border-left:.4rem solid transparent;border-right:.4rem solid transparent;bottom:-.4rem;right:45%}.tour-step-wrapper.pos-left.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepLeft;animation:.4s ease-in-out stepLeft}.tour-step-wrapper.pos-left.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-left:.4rem solid #fff;border-top:.4rem solid transparent;border-bottom:.4rem solid transparent;right:-.4rem;top:1rem}.tour-step-wrapper.pos-right.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepRight;animation:.4s ease-in-out stepRight}.tour-step-wrapper.pos-right.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-right:.4rem solid #fff;border-top:.4rem solid transparent;border-bottom:.4rem solid transparent;left:-.4rem;top:1rem}.tour-step-wrapper.pos-center.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out fade;animation:.4s ease-in-out fade}.tour-step-modal{background:#fff;border-radius:4px;box-shadow:0 0 12px 4px rgba(0,0,0,.55);z-index:1100}.tour-step-modal__content{padding:.8rem;box-sizing:border-box}.tour-step-modal__header{width:100%;display:flex;justify-content:space-between}.tour-step-modal__title{font-weight:500;font-size:22px}.tour-step-modal__body{padding:1rem 0;min-height:50px;flex-grow:2}.tour-step-modal__description{line-height:24px}.tour-step-modal .tour-btn-close{background:0 0;border:none;color:#a9a9a9;font-size:1.6rem;margin:-5px -5px 0 0;cursor:pointer}.tour-step-modal .tour-btn-close:hover{color:var(--pale-grey)}.tour-step-modal__footer{padding:1px 0;display:flex;justify-content:space-between;align-items:center;justify-self:end;width:100%}.tour-btn{width:auto;height:auto;border-radius:4px;background:0 0;color:grey;cursor:pointer;padding:8px 16px;box-shadow:0 0 2px 2px rgba(0,0,0,.24),inset 0 1px 3px 0 rgba(0,0,0,.16);border:1px solid grey;transition:.3s}.tour-btn:focus,.tour-btn:hover{border-color:#737373;box-shadow:1px 1px 2px 1px rgba(0,0,0,.34);outline:0}@-webkit-keyframes fade{0%{opacity:0}100%{opacity:1}}@keyframes fade{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes stepDown{0%{transform:translateY(30px);opacity:0}100%{transform:translateY(0);opacity:1}}@keyframes stepDown{0%{transform:translateY(30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes stepLeft{0%{transform:translateX(-30px);opacity:0}100%{transform:translateX(0);opacity:1}}@keyframes stepLeft{0%{transform:translateX(-30px);opacity:0}100%{transform:translateX(0);opacity:1}}@-webkit-keyframes stepRight{0%{transform:translateX(30px);opacity:0}100%{transform:translateX(0);opacity:1}}@keyframes stepRight{0%{transform:translateX(30px);opacity:0}100%{transform:translateX(0);opacity:1}}@-webkit-keyframes stepTop{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@keyframes stepTop{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}']}]}],t.ctorParameters=function(){return[{type:d},{type:a},{type:e.ElementRef},{type:e.ViewContainerRef},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={next:[{type:e.Output}],prev:[{type:e.Output}],done:[{type:e.Output}],break:[{type:e.Output}],clickOutsideToClose:[{type:e.HostListener,args:["document:click",["$event"]]}],onResize:[{type:e.HostListener,args:["window:resize",["$event"]]}]},t}();var g=function(){function t(){}return t.prototype.ngOnInit=function(){},t.decorators=[{type:e.Component,args:[{selector:"ng-tour-step-back",template:'<div\n class="tour-step-backdrop"\n [style.height.px]="stepBackSize.pageHeight"\n [style.position]="position"\n [style.opacity]="opacity"\n>\n <div class="tour-step-backdrop__container" >\n <div \n class="tour-step-backdrop__top"\n [style.height.px]="stepBackSize.top"\n [style.background]="themeColor"\n ></div>\n <div \n class="tour-step-backdrop__middle"\n [style.height.px]="stepBackSize.height"\n >\n <div \n class="tour-step-backdrop__left"\n [style.height.px]="stepBackSize.height"\n [style.width.px]="stepBackSize.left"\n [style.background]="themeColor"\n ></div>\n <div\n class="target-window"\n [style.width.px]="stepBackSize.width"\n [style.height.px]="stepBackSize.height"\n [style.background]="targetBackground"\n >\n </div>\n <div\n class="tour-step-backdrop__right"\n [style.height.px]="stepBackSize.height"\n [style.background]="themeColor"\n ></div>\n </div>\n <div\n class="tour-step-backdrop__bottom"\n [style.background]="themeColor"\n [style.height.px]="stepBackSize.pageHeight-stepBackSize.bottom"\n ></div>\n </div>\n</div>\n',styles:[".tour-step-backdrop{position:absolute;top:0;left:0;width:100%;z-index:1000}.tour-step-backdrop__container{position:absolute;top:0;left:0;height:100%;width:100%}.tour-step-backdrop__container .tour-step-backdrop__bottom,.tour-step-backdrop__container .tour-step-backdrop__left,.tour-step-backdrop__container .tour-step-backdrop__right,.tour-step-backdrop__container .tour-step-backdrop__top{position:relative}.tour-step-backdrop__container .tour-step-backdrop__top{width:100%}.tour-step-backdrop__container .tour-step-backdrop__middle{width:100%;display:flex;flex-wrap:nowrap}.tour-step-backdrop__container .tour-step-backdrop__middle .tour-step-backdrop__right{width:100%}.tour-step-backdrop__container .tour-step-backdrop__middle .target-window{flex-shrink:0;background:0 0}.tour-step-backdrop__container .tour-step-backdrop__middle .tour-step-backdrop__left{flex-shrink:0}.tour-step-backdrop__container .tour-step-backdrop__bottom{width:100%}"]}]}],t.ctorParameters=function(){return[]},t.propDecorators={themeColor:[{type:e.Input}],stepBackSize:[{type:e.Input}],position:[{type:e.Input}],opacity:[{type:e.Input}],targetBackground:[{type:e.Input}]},t}();var f=function(){function t(t,e,n,i,s,a){this.elem=t,this.tourService=e,this.targetService=n,this.viewContainer=i,this.componentFactory=s,this.customTemplate=!1,this.onDestroy=new r.Subject,this.isBrowser=o.isPlatformBrowser(a),this.modalFactory=this.componentFactory.resolveComponentFactory(m)}return t.prototype.ngOnInit=function(){var t=this;if(this.isBrowser){var e,o=this.elem.nativeElement.parentNode,r=Array.prototype.slice.apply(o.childNodes);"app-root"!==o.localName&&console.warn("You placed ngIfTour directive in "+this.elem.nativeElement.localName+" inside "+o.localName+".\n Are you sure "+o.localName+" better choice then app-root?"),r.filter((function(t){return"ng-tour-step-template"===t.localName})).length?this.tourService.setPresets({customTemplate:!0}):this.targetService.getTargetSubject().pipe(n.takeUntil(this.onDestroy),n.map((function(o){return o&&!t.isCreated?(t.isCreated=!0,e=t.viewContainer.createComponent(t.modalFactory)):!o&&t.isCreated&&(t.isCreated=!1,t.viewContainer.remove(t.viewContainer.indexOf(e))),o}))).subscribe()}},t.prototype.ngOnDestroy=function(){this.onDestroy.next()},t.decorators=[{type:e.Directive,args:[{selector:"[ngIfTour]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:d},{type:a},{type:e.ViewContainerRef},{type:e.ComponentFactoryResolver},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t}();var y=function(){function t(t,e,n,i){this.elemRef=t,this.tour=e,this.stepTarget=n,this.onDestroy=new r.Subject,this.isBrowser=o.isPlatformBrowser(i)}return t.prototype.ngAfterViewInit=function(){var t=this;this.isBrowser&&this.tour.getStepsStream().pipe(n.takeUntil(this.onDestroy),n.map((function(e){if(e&&t.name===e){var o=t.elemRef.nativeElement,r=t.tour.isRouteChanged()?t.tour.getStepByName(e).options.delay:0;return t.timeout=setTimeout((function(){return t.stepTarget.setTargetSubject({target:o,stepName:e})}),r),e}return e}))).subscribe()},t.prototype.ngOnDestroy=function(){this.onDestroy.next(),clearTimeout(this.timeout)},t.decorators=[{type:e.Directive,args:[{selector:"[ngTourStep]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:d},{type:a},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={name:[{type:e.Input,args:["ngTourStep"]}]},t}();var v=function(){function t(t,r){this.tourService=t,this.next=new e.EventEmitter,this.prev=new e.EventEmitter,this.done=new e.EventEmitter,this.break=new e.EventEmitter,this.isBrowser=o.isPlatformBrowser(r)}return t.prototype.ngOnInit=function(){this.isBrowser&&("next"===this.eventType&&this.handleNext(),"prev"===this.eventType&&this.handlePrev(),"close"===this.eventType&&this.handleClose())},t.prototype.onClick=function(t){this.handler()},t.prototype.handleNext=function(){var t=this;return this.handler=function(){t.next.emit({tourEvent:"next",index:t.tourService.getLastStep().index+1,history:t.tourService.getHistory()}),t.tourService.nextStep()}},t.prototype.handlePrev=function(){var t=this;return this.handler=function(){t.prev.emit({tourEvent:"next",index:t.tourService.getLastStep().index-1,history:t.tourService.getHistory()}),t.tourService.prevStep()}},t.prototype.handleClose=function(){var t=this;return this.handler=function(){t.tourService.getLastStep().index+1===t.tourService.getLastStep().total?t.done.emit({tourEvent:"done",index:t.tourService.getLastStep().index,history:t.tourService.getHistory()}):t.break.emit({tourEvent:"break",index:t.tourService.getLastStep().index,history:t.tourService.getHistory()}),t.tourService.stopTour()}},t.decorators=[{type:e.Directive,args:[{selector:"[stepEvent]"}]}],t.ctorParameters=function(){return[{type:d},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={eventType:[{type:e.Input,args:["stepEvent"]}],next:[{type:e.Output}],prev:[{type:e.Output}],done:[{type:e.Output}],break:[{type:e.Output}],onClick:[{type:e.HostListener,args:["click",["$event"]]}]},t}();var b=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[a,d]}},t.forChild=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{declarations:[g,m,y,f,v],entryComponents:[m],imports:[o.CommonModule,i.RouterModule],exports:[g,m,y,f,v]}]}],t}();t.AngularTourModule=b,t.StepEventsDirective=v,t.StepOptions=c,t.StepTargetService=a,t.TourDefaultEvents=l,t.TourRootDirective=f,t.TourService=d,t.TourStepBackComponent=g,t.TourStepComponent=m,t.TourStepDirective=y,t.defaultCtrlBtns=p,t.defaultOptions=u,t.defaultTourEvent=h,Object.defineProperty(t,"__esModule",{value:!0})}));
***************************************************************************** */var s=function(){return(s=Object.assign||function(t){for(var e,o=1,r=arguments.length;o<r;o++)for(var n in e=arguments[o])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};var a=function(){function t(){this.targetExist$=new r.BehaviorSubject(null)}return t.prototype.maxHeight=function(){return Math.round(Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight,window.innerHeight))},t.prototype.getSizeAndPosition=function(t){var e=t.getBoundingClientRect(),o=document.body.getBoundingClientRect(),r=Math.round(e.top-o.top),n=Math.round(e.left-o.left),i=Math.round(e.bottom-o.top),s=Math.round(e.left-o.left),a=Math.round(e.height||i-r);return{top:r,left:n,bottom:i,right:s,width:Math.round(e.width||s-n),height:a,pageHeight:this.maxHeight()}},t.prototype.resizeTarget=function(t,e){return t.left-=e[0],t.right+=e[0],t.top-=e[1]||e[0],t.bottom+=e[1]||e[0],t.width+=2*e[0],t.height+=2*(e[1]||e[0]),t},t.prototype.getTargetSubject=function(){return this.targetExist$},t.prototype.setTargetSubject=function(t){this.targetExist$.next(t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[]},t}();var p={done:{"en-EN":"done","ru-RU":"закр","fr-FR":"fini"},prev:{"en-EN":"prev","ru-RU":"пред","fr-FR":"préc"},next:{"en-EN":"next","ru-RU":"след","fr-FR":"proch"}};var u={className:"",continueIfTargetAbsent:!0,withoutCounter:!1,withoutPrev:!1,customTemplate:!1,smoothScroll:!1,scrollTo:!0,themeColor:"rgb(20, 60, 60)",opacity:.6,placement:"down",arrowToTarget:!0,stepTargetResize:[0],delay:1e3,animatedStep:!0,fixed:!1,backdrop:!0,minWidth:"250px",minHeight:"150px",maxWidth:"400px",maxHeight:"600px",autofocus:!0,closeOnClickOutside:!1},c=function(t){void 0===t&&(t=u);var e=t.className,o=t.continueIfTargetAbsent,r=t.withoutCounter,n=t.withoutPrev,i=t.customTemplate,s=t.smoothScroll,a=t.scrollTo,p=t.themeColor,c=t.opacity,h=t.placement,l=t.arrowToTarget,d=t.stepTargetResize,m=t.maxHeight,g=t.maxWidth,f=t.minHeight,y=t.minWidth,v=t.delay,b=t.animatedStep,S=t.fixed,x=t.backdrop,w=t.autofocus,k=t.closeOnClickOutside;this.className=e,this.placement=h,this.arrowToTarget=l,this.themeColor=p,this.opacity=c,this.backdrop=x,this.customTemplate=i,this.withoutCounter=r,this.withoutPrev=n,this.continueIfTargetAbsent=o,this.stepTargetResize=d,this.maxHeight=m,this.maxWidth=g,this.minHeight=f,this.minWidth=y,this.delay=v,this.animatedStep=b,this.smoothScroll=s,this.scrollTo=a,this.fixed=S,this.autofocus=w,this.closeOnClickOutside=k};var h=function(t){},l={tourStart:h,tourEnd:h,tourBreak:h,next:h,prev:h},d=function(){function t(t,e,n){this.router=t,this.targetService=e,this.tourStarted=!1,this.stepsStream$=new r.BehaviorSubject(null),this.history=[],this.routeChanged=!1,this.presets={},this.tourBreak=l.tourBreak,this.tourEnd=l.tourEnd,this.next=l.next,this.prev=l.prev,this.nextStep=this.nextStep.bind(this),this.prevStep=this.prevStep.bind(this),this.stopTour=this.stopTour.bind(this),this.isBrowser=o.isPlatformBrowser(n),this.isBrowser?this.lang=navigator.language:this.lang=""}return t.prototype.validateOptions=function(t){var e=/^top$|^down$|^left$|^right$|^center$|^right-center$|^left-center$|^right-top$|^left-top$/i,o=!0;return t.steps.forEach((function(t){t.options&&t.options.placement&&(o=e.test(t.options.placement))})),t.tourOptions&&t.tourOptions.placement&&(o=e.test(t.tourOptions.placement)),o},t.prototype.setSteps=function(t){var o=this,r=new c(s({},u,this.presets,t.tourOptions));this.steps=t.steps.map((function(e,n){return e.index=n,e.description&&"object"==typeof e.description&&(e.description=o.defineLocalName(e.description)),e.title&&"object"==typeof e.title&&(e.title=o.defineLocalName(e.title)),e.options=e.options?s({},r,e.options):r,e.total=t.steps.length,e.ctrlBtns=o.defineLocalBtnNames(t.ctrlBtns||p),e})),e.isDevMode()&&(console.log("mode: ",e.isDevMode()),console.log("ng3-tour is initiated with steps:"),console.log(this.steps))},t.prototype.defineLocalName=function(t){var e,o=this;if(!this.isBrowser)return"";if(t.hasOwnProperty(this.lang))e=t[this.lang];else{var r=Object.keys(t),n=r.filter((function(t){return t.includes(o.lang.slice(0,2))}))[0];e=n?t[n]:t[r[0]]}return"string"==typeof e?e:(console.error("Tour configuration error with "+JSON.stringify(t)),"Error")},t.prototype.defineLocalBtnNames=function(t){var e=this,o={};for(var r in t)if(t.hasOwnProperty(r)){var n=void 0;if("string"==typeof t[r])n=t[r];else if("object"==typeof t[r]&&"string"===t[r][this.lang])n=t[r][this.lang];else{var i=Object.keys(t[r]),s=i.filter((function(t){return t.includes(e.lang.slice(0,2))}))[0];"string"==typeof(n=s?t[r][s]:t[r][i[0]])?o[r]=n:this.isBrowser&&(console.error("Tour configuration error with "+JSON.stringify(t)),o[r]="Error")}}return o},t.prototype.initStep=function(t){var e=this.history.length?this.getLastStep():{route:null},o=this.steps[t];this.routeChanged=e.route!==o.route,this.history.push(t),o.route&&this.routeChanged&&this.router.navigate([o.route]),this.stepsStream$.next(o.stepName)},t.prototype.getHistory=function(){return this.history},t.prototype.setPresets=function(t){this.presets=s({},this.presets,t)},t.prototype.resetStep=function(t,e){var o="number"==typeof t?t:this.getStepByName(t).index;this.steps[o]=s({},e)},t.prototype.getStepByName=function(t){return this.steps.filter((function(e){return e.stepName===t}))[0]},t.prototype.getStepByIndex=function(t){return void 0===t&&(t=0),this.steps[t]},t.prototype.getLastStep=function(){return this.history.length?this.steps[this.history.slice(-1)[0]]:null},t.prototype.getStepsStream=function(){return this.stepsStream$},t.prototype.isRouteChanged=function(){return this.routeChanged},t.prototype.setTourStatus=function(t){this.tourStarted=t},t.prototype.getTourStatus=function(){return this.tourStarted},t.prototype.startTour=function(t){if(!this.validateOptions(t))throw new Error("Placement option of the ng3-tour or one of it step is invalid");var e=s({},l,t.tourEvents),o=e.tourBreak,r=e.tourStart,n=e.tourEnd,i=e.next,a=e.prev;r({tourEvent:"Tour start",tour:t}),this.tourBreak=o,this.tourEnd=n,this.next=i,this.prev=a,this.setTourStatus(!0),this.setSteps(t),this.initStep(0)},t.prototype.stopTour=function(){var t=this.getLastStep().index,e=this.steps.length-1;t<e?this.tourBreak({tourEvent:"Tour break",step:t,history:this.history}):e===t&&this.tourEnd({tourEvent:"Tour end",step:t,history:this.history}),this.setTourStatus(!1),this.steps.length=0,this.stepsStream$.next(null),this.history.length=0,this.targetService.setTargetSubject(null)},t.prototype.nextStep=function(){var t=this.getLastStep().index+1;this.next({tourEvent:"Init next",step:t,history:this.history}),this.initStep(t)},t.prototype.prevStep=function(){var t=this.getLastStep().index-1;this.prev({tourEvent:"Init prev",step:t,history:this.history}),this.initStep(t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:i.Router},{type:a},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t}();var m=function(){function t(t,n,i,s,a){this.tourService=t,this.stepTargetService=n,this.elem=i,this.ref=s,this.currentStep=null,this.steps$=null,this.onDestroy=new r.Subject,this.timeouts=[],this.next=new e.EventEmitter,this.prev=new e.EventEmitter,this.done=new e.EventEmitter,this.break=new e.EventEmitter,this.isBrowser=o.isPlatformBrowser(a)}return t.prototype.clickOutsideToClose=function(t){this.currentStep&&this.currentStep.options.closeOnClickOutside&&!this.elem.nativeElement.contains(t.target)&&this.onClose(t)},t.prototype.onResize=function(t){this.target&&this.currentStep&&(this.saveTarget(this.targetElement),this.defineStepPlacement())},t.prototype.ngOnInit=function(){var t=this;this.isBrowser&&(this.stepModalPosition={top:-500,left:-500},this.subscribeToStepsStream(),this.steps$=this.stepTargetService.getTargetSubject().pipe(n.map((function(e){return t.currentStep?t.currentStep:e&&t.tourService.getTourStatus?(t.targetElement=e.target,t.currentStep=t.tourService.getStepByName(e.stepName),t.saveStepData(),t.saveTarget(e.target),t.currentStep):e}))))},t.prototype.ngOnDestroy=function(){this.onDestroy.next(),this.timeouts.forEach((function(t){return clearTimeout(t)}))},t.prototype.subscribeToStepsStream=function(){var t=this;this.tourService.getStepsStream().pipe(n.takeUntil(this.onDestroy),n.map((function(e){if(!e)return t.currentStep=null,e;var o=(t.currentStep&&t.currentStep.options||t.tourService.getStepByIndex().options).themeColor;t.currentStep=null,t.resetClasses();var r=t.tourService.getStepByName(e).options.delay;return t.targetBackground=o,t.tourService.isRouteChanged()?t.timeouts[t.timeouts.length]=setTimeout((function(){return t.checkTarget(e)}),r+100):t.timeouts[t.timeouts.length]=setTimeout((function(){return t.checkTarget(e)}),100),e}))).subscribe()},t.prototype.checkTarget=function(t,e){var o=this;if(void 0===e&&(e=2),t&&this.tourService.getTourStatus()){var r=this.tourService.getStepByName(t).options.delay,n=document.querySelector("[ngtourstep="+t+"]");if(e&&this.tourService.isRouteChanged()&&!n)this.timeouts[this.timeouts.length]=setTimeout((function(){return o.checkTarget(t,e-1)}),r);else if(!n){if(console.warn("Target is missed for step "+t),this.tourService.getStepByName(t).options.continueIfTargetAbsent)this.tourService.getStepByName(t).index+1<this.tourService.getLastStep().total?this.tourService.nextStep():(console.warn("The tour is stopped because of no targets is found for step "+t+" and next ones"),this.tourService.stopTour(),this.stepTargetService.setTargetSubject(null))}}},t.prototype.resetClasses=function(){var t=this.currentStep,e=t&&t.options||this.tourService.getStepByIndex().options,o=e.arrowToTarget,r=e.animatedStep,n=e.placement,i=e.className,s=o?"with-arrow":"",a=r?t?"animation-on":"fade-on":t?"":"fade-on";this.class=(s+" "+i+" pos-"+n+" "+a).trim()},t.prototype.saveTarget=function(t){var e=this;this.target=this.stepTargetService.resizeTarget(this.stepTargetService.getSizeAndPosition(t),this.currentStep.options.stepTargetResize),this.timeouts[this.timeouts.length]=setTimeout((function(){return e.defineStepPlacement()}),0)},t.prototype.saveStepData=function(){this.resetClasses(),this.targetBackground="transparent"},t.prototype.defineStepPlacement=function(){var t=this,e=document.querySelector(".tour-step-modal");if(e){var o=e.getBoundingClientRect();this.modalHeight=Math.round(o.height?o.height:o.bottom-o.top);var r=Math.round(o.width?o.width:o.right-o.left),n=this.currentStep.options,i=n.placement,s=n.scrollTo,a=this.target,p=a.top,u=a.bottom,c=a.width,h=a.left,l=a.right;/^down$/i.test(i)?this.stepModalPosition={top:u+20,left:Math.round(h-r/2)}:/^top$/i.test(i)?this.stepModalPosition={top:p-this.modalHeight-20,left:Math.round(h-r/2)}:/^left$/i.test(i)?this.stepModalPosition={left:h-r-20,top:p}:/^right$/i.test(i)?this.stepModalPosition={left:l+c+20,top:p}:/^left-top$/i.test(i)?this.stepModalPosition={left:h-r-20,top:p-this.modalHeight+50}:/^right-top$/i.test(i)?this.stepModalPosition={left:l+c+20,top:p-this.modalHeight+50}:/^right-center$/i.test(i)?this.stepModalPosition={right:50,top:Math.round(window.innerHeight/2-this.modalHeight/2)}:/^left-center$/i.test(i)?this.stepModalPosition={left:50,top:Math.round(window.innerHeight/2-this.modalHeight/2)}:/^center$/i.test(i)&&(this.stepModalPosition={left:Math.round(window.innerWidth/2-r/2),top:Math.round(window.innerHeight/2-this.modalHeight/2)}),this.currentStep.options.autofocus&&this.setFocus(e),s&&this.scrollTo()}else this.timeouts[this.timeouts.length]=setTimeout((function(){return t.defineStepPlacement()}),100)},t.prototype.setFocus=function(t){var e=t.querySelector(".tour-btn-next"),o=t.querySelector(".tour-btn-done");e?e.focus():o&&o.focus()},t.prototype.scrollTo=function(){var t=this.currentStep.options,e=t.placement,o=t.fixed,r=this.target.left,n="top"!==e?this.target.top-100:this.target.top-this.modalHeight-50,i=this.currentStep.options.smoothScroll?"smooth":"auto";o?document.documentElement.scroll({top:0,left:0,behavior:i}):document.documentElement.scroll({top:n,left:r,behavior:i})},t.prototype.onNext=function(t){this.next.emit({stepEvent:"next",index:this.currentStep.index+1,history:this.tourService.getHistory()}),this.tourService.nextStep()},t.prototype.onPrev=function(t){this.prev.emit({stepEvent:"prev",index:this.currentStep.index-1,history:this.tourService.getHistory()}),this.tourService.prevStep()},t.prototype.onClose=function(t){this.currentStep.index!==this.currentStep.total-1?this.break.emit({stepEvent:"break",index:this.currentStep.index,history:this.tourService.getHistory()}):this.done.emit({stepEvent:"done",index:this.currentStep.index,history:this.tourService.getHistory()}),this.tourService.stopTour()},t.decorators=[{type:e.Component,args:[{selector:"ng-tour-step-template",template:'<div class="tour-step-wrapper" *ngIf="steps$ | async as step" [ngClass]="class">\n <ng-tour-step-back\n *ngIf="step.options.backdrop && target"\n [themeColor]="step.options.themeColor"\n [stepBackSize]="target"\n [position]="step.options.fixed ? \'fixed\' : \'absolute\'"\n [targetBackground]="targetBackground"\n [opacity]="step.options.opacity"\n >\n </ng-tour-step-back>\n <div\n *ngIf="currentStep"\n class="tour-step-modal"\n [style.max-width]="step.options.maxWidth"\n [style.max-height]="step.options.maxHeight"\n [style.top.px]="stepModalPosition.top"\n [style.left.px]="stepModalPosition.left"\n [style.bottom.px]="stepModalPosition.bottom"\n [style.right.px]="stepModalPosition.right"\n [style.min-width]="step.options.minWidth"\n [style.min-height]="step.options.minHeight"\n [style.position]="step.options.fixed ? \'fixed\' : \'absolute\'"\n [style.color]="step.options.themeColor"\n > \n <div *ngIf="!step.options.customTemplate" class="tour-step-modal__content">\n <div class="tour-step-modal__header">\n <h3 class="tour-step-modal__title">\n {{step.title}}\n </h3>\n <button class="tour-btn-close" type="button" (click)="onClose($event)">\n &times;\n </button>\n </div>\n <div class="tour-step-modal__body">\n <p class="tour-step-modal__description">\n {{step.description}}\n </p>\n </div>\n <div class="tour-step-modal__footer">\n <div *ngIf="!step.withoutCounter" class="tour-step-modal__counter">\n {{step.index + 1}} of {{step.total}}\n </div>\n <button\n *ngIf="!step.withoutPrev && step.index" \n type="button" \n class="tour-btn tour-btn-prev"\n (click)="onPrev($event)"\n >\n {{step.ctrlBtns.prev}}\n </button>\n <button\n *ngIf="step.index + 1 !== step.total"\n type="button"\n class="tour-btn tour-btn-next"\n (click)="onNext($event)" \n >\n {{step.ctrlBtns.next}}\n </button>\n <button\n *ngIf="step.index + 1 === step.total"\n type="button"\n class="tour-btn tour-btn-done"\n (click)="onClose($event)"\n >\n {{step.ctrlBtns.done}}\n </button>\n </div>\n </div>\n \n <ng-content ></ng-content>\n \n </div>\n</div>\n',encapsulation:e.ViewEncapsulation.None,exportAs:"steps$",styles:['.tour-step-wrapper.fade-on .tour-step-modal{opacity:0}.tour-step-wrapper:not(.animation-on) .tour-step-modal{-webkit-animation:.4s ease-in-out fade;animation:.4s ease-in-out fade}.tour-step-wrapper.pos-down.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepDown;animation:.4s ease-in-out stepDown}.tour-step-wrapper.pos-down.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-bottom:.4rem solid #fff;border-left:.4rem solid transparent;border-right:.4rem solid transparent;top:-.4rem;right:45%}.tour-step-wrapper.pos-top.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepTop;animation:.4s ease-in-out stepTop}.tour-step-wrapper.pos-top.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-top:.4rem solid #fff;border-left:.4rem solid transparent;border-right:.4rem solid transparent;bottom:-.4rem;right:45%}.tour-step-wrapper.pos-left.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepLeft;animation:.4s ease-in-out stepLeft}.tour-step-wrapper.pos-left.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-left:.4rem solid #fff;border-top:.4rem solid transparent;border-bottom:.4rem solid transparent;right:-.4rem;top:1rem}.tour-step-wrapper.pos-right.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out stepRight;animation:.4s ease-in-out stepRight}.tour-step-wrapper.pos-right.with-arrow .tour-step-modal::after{content:"";width:0;height:0;position:absolute;border-right:.4rem solid #fff;border-top:.4rem solid transparent;border-bottom:.4rem solid transparent;left:-.4rem;top:1rem}.tour-step-wrapper.pos-center.animation-on .tour-step-modal{-webkit-animation:.4s ease-in-out fade;animation:.4s ease-in-out fade}.tour-step-modal{background:#fff;border-radius:4px;box-shadow:0 0 12px 4px rgba(0,0,0,.55);z-index:1100}.tour-step-modal__content{padding:.8rem;box-sizing:border-box}.tour-step-modal__header{width:100%;display:flex;justify-content:space-between}.tour-step-modal__title{font-weight:500;font-size:22px}.tour-step-modal__body{padding:1rem 0;min-height:50px;flex-grow:2}.tour-step-modal__description{line-height:24px}.tour-step-modal .tour-btn-close{background:0 0;border:none;color:#a9a9a9;font-size:1.6rem;margin:-5px -5px 0 0;cursor:pointer}.tour-step-modal .tour-btn-close:hover{color:var(--pale-grey)}.tour-step-modal__footer{padding:1px 0;display:flex;justify-content:space-between;align-items:center;justify-self:end;width:100%}.tour-btn{width:auto;height:auto;border-radius:4px;background:0 0;color:grey;cursor:pointer;padding:8px 16px;box-shadow:0 0 2px 2px rgba(0,0,0,.24),inset 0 1px 3px 0 rgba(0,0,0,.16);border:1px solid grey;transition:.3s}.tour-btn:focus,.tour-btn:hover{border-color:#737373;box-shadow:1px 1px 2px 1px rgba(0,0,0,.34);outline:0}@-webkit-keyframes fade{0%{opacity:0}100%{opacity:1}}@keyframes fade{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes stepDown{0%{transform:translateY(30px);opacity:0}100%{transform:translateY(0);opacity:1}}@keyframes stepDown{0%{transform:translateY(30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes stepLeft{0%{transform:translateX(-30px);opacity:0}100%{transform:translateX(0);opacity:1}}@keyframes stepLeft{0%{transform:translateX(-30px);opacity:0}100%{transform:translateX(0);opacity:1}}@-webkit-keyframes stepRight{0%{transform:translateX(30px);opacity:0}100%{transform:translateX(0);opacity:1}}@keyframes stepRight{0%{transform:translateX(30px);opacity:0}100%{transform:translateX(0);opacity:1}}@-webkit-keyframes stepTop{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@keyframes stepTop{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}']}]}],t.ctorParameters=function(){return[{type:d},{type:a},{type:e.ElementRef},{type:e.ViewContainerRef},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={next:[{type:e.Output}],prev:[{type:e.Output}],done:[{type:e.Output}],break:[{type:e.Output}],clickOutsideToClose:[{type:e.HostListener,args:["document:click",["$event"]]}],onResize:[{type:e.HostListener,args:["window:resize",["$event"]]}]},t}();var g=function(){function t(){}return t.prototype.ngOnInit=function(){},t.decorators=[{type:e.Component,args:[{selector:"ng-tour-step-back",template:'<div\n class="tour-step-backdrop"\n [style.height.px]="stepBackSize.pageHeight"\n [style.position]="position"\n [style.opacity]="opacity"\n>\n <div class="tour-step-backdrop__container" >\n <div \n class="tour-step-backdrop__top"\n [style.height.px]="stepBackSize.top"\n [style.background]="themeColor"\n ></div>\n <div \n class="tour-step-backdrop__middle"\n [style.height.px]="stepBackSize.height"\n >\n <div \n class="tour-step-backdrop__left"\n [style.height.px]="stepBackSize.height"\n [style.width.px]="stepBackSize.left"\n [style.background]="themeColor"\n ></div>\n <div\n class="target-window"\n [style.width.px]="stepBackSize.width"\n [style.height.px]="stepBackSize.height"\n [style.background]="targetBackground"\n >\n </div>\n <div\n class="tour-step-backdrop__right"\n [style.height.px]="stepBackSize.height"\n [style.background]="themeColor"\n ></div>\n </div>\n <div\n class="tour-step-backdrop__bottom"\n [style.background]="themeColor"\n [style.height.px]="stepBackSize.pageHeight-stepBackSize.bottom"\n ></div>\n </div>\n</div>\n',styles:[".tour-step-backdrop{position:absolute;top:0;left:0;width:100%;z-index:1000}.tour-step-backdrop__container{position:absolute;top:0;left:0;height:100%;width:100%}.tour-step-backdrop__container .tour-step-backdrop__bottom,.tour-step-backdrop__container .tour-step-backdrop__left,.tour-step-backdrop__container .tour-step-backdrop__right,.tour-step-backdrop__container .tour-step-backdrop__top{position:relative}.tour-step-backdrop__container .tour-step-backdrop__top{width:100%}.tour-step-backdrop__container .tour-step-backdrop__middle{width:100%;display:flex;flex-wrap:nowrap}.tour-step-backdrop__container .tour-step-backdrop__middle .tour-step-backdrop__right{width:100%}.tour-step-backdrop__container .tour-step-backdrop__middle .target-window{flex-shrink:0;background:0 0}.tour-step-backdrop__container .tour-step-backdrop__middle .tour-step-backdrop__left{flex-shrink:0}.tour-step-backdrop__container .tour-step-backdrop__bottom{width:100%}"]}]}],t.ctorParameters=function(){return[]},t.propDecorators={themeColor:[{type:e.Input}],stepBackSize:[{type:e.Input}],position:[{type:e.Input}],opacity:[{type:e.Input}],targetBackground:[{type:e.Input}]},t}();var f=function(){function t(t,e,n,i,s,a){this.elem=t,this.tourService=e,this.targetService=n,this.viewContainer=i,this.componentFactory=s,this.customTemplate=!1,this.onDestroy=new r.Subject,this.isBrowser=o.isPlatformBrowser(a),this.modalFactory=this.componentFactory.resolveComponentFactory(m)}return t.prototype.ngOnInit=function(){var t=this;if(this.isBrowser){var e,o=this.elem.nativeElement.parentNode,r=Array.prototype.slice.apply(o.childNodes);"app-root"!==o.localName&&console.warn("You placed ngIfTour directive in "+this.elem.nativeElement.localName+" inside "+o.localName+".\n Are you sure "+o.localName+" better choice then app-root?"),r.filter((function(t){return"ng-tour-step-template"===t.localName})).length?this.tourService.setPresets({customTemplate:!0}):this.targetService.getTargetSubject().pipe(n.takeUntil(this.onDestroy),n.map((function(o){return o&&!t.isCreated?(t.isCreated=!0,e=t.viewContainer.createComponent(t.modalFactory)):!o&&t.isCreated&&(t.isCreated=!1,t.viewContainer.remove(t.viewContainer.indexOf(e))),o}))).subscribe()}},t.prototype.ngOnDestroy=function(){this.onDestroy.next()},t.decorators=[{type:e.Directive,args:[{selector:"[ngIfTour]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:d},{type:a},{type:e.ViewContainerRef},{type:e.ComponentFactoryResolver},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t}();var y=function(){function t(t,e,n,i){this.elemRef=t,this.tour=e,this.stepTarget=n,this.onDestroy=new r.Subject,this.isBrowser=o.isPlatformBrowser(i)}return t.prototype.ngAfterViewInit=function(){var t=this;this.isBrowser&&this.tour.getStepsStream().pipe(n.takeUntil(this.onDestroy),n.map((function(e){if(e&&t.name===e){var o=t.elemRef.nativeElement,r=t.tour.isRouteChanged()?t.tour.getStepByName(e).options.delay:0;return t.timeout=setTimeout((function(){return t.stepTarget.setTargetSubject({target:o,stepName:e})}),r),e}return e}))).subscribe()},t.prototype.ngOnDestroy=function(){this.onDestroy.next(),clearTimeout(this.timeout)},t.decorators=[{type:e.Directive,args:[{selector:"[ngTourStep]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:d},{type:a},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={name:[{type:e.Input,args:["ngTourStep"]}]},t}();var v=function(){function t(t,r){this.tourService=t,this.next=new e.EventEmitter,this.prev=new e.EventEmitter,this.done=new e.EventEmitter,this.break=new e.EventEmitter,this.isBrowser=o.isPlatformBrowser(r)}return t.prototype.ngOnInit=function(){this.isBrowser&&("next"===this.eventType&&this.handleNext(),"prev"===this.eventType&&this.handlePrev(),"close"===this.eventType&&this.handleClose())},t.prototype.onClick=function(t){this.handler()},t.prototype.handleNext=function(){var t=this;return this.handler=function(){t.next.emit({tourEvent:"next",index:t.tourService.getLastStep().index+1,history:t.tourService.getHistory()}),t.tourService.nextStep()}},t.prototype.handlePrev=function(){var t=this;return this.handler=function(){t.prev.emit({tourEvent:"next",index:t.tourService.getLastStep().index-1,history:t.tourService.getHistory()}),t.tourService.prevStep()}},t.prototype.handleClose=function(){var t=this;return this.handler=function(){t.tourService.getLastStep().index+1===t.tourService.getLastStep().total?t.done.emit({tourEvent:"done",index:t.tourService.getLastStep().index,history:t.tourService.getHistory()}):t.break.emit({tourEvent:"break",index:t.tourService.getLastStep().index,history:t.tourService.getHistory()}),t.tourService.stopTour()}},t.decorators=[{type:e.Directive,args:[{selector:"[stepEvent]"}]}],t.ctorParameters=function(){return[{type:d},{type:void 0,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.propDecorators={eventType:[{type:e.Input,args:["stepEvent"]}],next:[{type:e.Output}],prev:[{type:e.Output}],done:[{type:e.Output}],break:[{type:e.Output}],onClick:[{type:e.HostListener,args:["click",["$event"]]}]},t}();var b=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[a,d]}},t.forChild=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{declarations:[g,m,y,f,v],entryComponents:[m],imports:[o.CommonModule,i.RouterModule],exports:[g,m,y,f,v]}]}],t}();t.AngularTourModule=b,t.StepEventsDirective=v,t.StepOptions=c,t.StepTargetService=a,t.TourDefaultEvents=l,t.TourRootDirective=f,t.TourService=d,t.TourStepBackComponent=g,t.TourStepComponent=m,t.TourStepDirective=y,t.defaultCtrlBtns=p,t.defaultOptions=u,t.defaultTourEvent=h,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ng3-tour.umd.min.js.map

@@ -311,3 +311,3 @@ /**

}));
if (tour.tourOptions.placement) {
if (tour.tourOptions && tour.tourOptions.placement) {
isValid = regExpr.test(tour.tourOptions.placement);

@@ -660,2 +660,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmczLXRvdXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdG91ci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXhELDJCQU1DOzs7SUFMQyxzQkFBbUI7O0lBQ25CLDRCQUEyQjs7SUFDM0IsNEJBQXNCOztJQUN0QiwyQkFBeUI7O0lBQ3pCLHlCQUFxQjs7Ozs7QUFHdkIsK0JBU0M7OztJQVJDLDZCQUFpQjs7SUFDakIsMEJBQWU7O0lBQ2YsMEJBQWU7O0lBQ2YsMEJBQTJDOztJQUMzQyxnQ0FBaUQ7O0lBQ2pELDRCQUF1Qjs7SUFDdkIsNkJBQXFCOzs7Ozs7QUFJdkIsK0JBS0M7OztJQUpDLHlCQUFrQzs7SUFDbEMseUJBQWtDOztJQUNsQyx5QkFBa0M7Ozs7QUFJcEMsTUFBTSxPQUFPLGVBQWUsR0FBRztJQUM3QixJQUFJLEVBQUU7UUFDTCxPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07S0FDZjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsTUFBTTtLQUNoQjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsT0FB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O1lBRU4saUJBQWlCOzRDQXFOcEIsTUFBTSxTQUFDLFdBQVc7Ozs7Ozs7SUFqQnJCLDRCQUEyQjs7Ozs7SUFDM0Isa0NBQTRCOzs7OztJQUM1QixtQ0FBc0Q7Ozs7O0lBQ3RELDhCQUFxQjs7Ozs7SUFDckIsbUNBQTZCOzs7OztJQUM3Qiw4QkFBbUM7Ozs7O0lBRW5DLGdDQUFnRDs7Ozs7SUFDaEQsOEJBQTRDOzs7OztJQUM1QywyQkFBc0M7Ozs7O0lBQ3RDLDJCQUFzQzs7Ozs7SUFDdEMsZ0NBQTJCOzs7OztJQUMzQiwyQkFBcUI7Ozs7O0lBRW5CLDZCQUFzQjs7Ozs7SUFDdEIsb0NBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBpc0Rldk1vZGUsIFBMQVRGT1JNX0lELCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7U3RlcFRhcmdldFNlcnZpY2V9IGZyb20gJy4vc3RlcC10YXJnZXQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91ckkge1xuICBzdGVwczogVG91clN0ZXBJW107XG4gIHRvdXJPcHRpb25zPzogU3RlcE9wdGlvbnNJO1xuICB3aXRob3V0TG9ncz86IGJvb2xlYW47XG4gIHRvdXJFdmVudHM/OiBUb3VyRXZlbnRzSTtcbiAgY3RybEJ0bnM/OiBDdHJsQnRuc0k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91clN0ZXBJIHtcbiAgc3RlcE5hbWU6IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0aXRsZT86IHN0cmluZyB8IHtbcHJvcE5hbWU6IHN0cmluZ106IGFueX07XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwge1twcm9wTmFtZTogc3RyaW5nXTogYW55fTtcbiAgb3B0aW9ucz86IFN0ZXBPcHRpb25zSTtcbiAgY3RybEJ0bnM/OiBDdHJsQnRuc0k7XG4gIFtwcm9wTmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN0cmxCdG5zSSB7XG4gIHByZXY/OiB7W3Byb3BzTmFtZTogc3RyaW5nXTogYW55fTtcbiAgbmV4dD86IHtbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBkb25lPzoge1twcm9wc05hbWU6IHN0cmluZ106IGFueX07XG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdHJsQnRucyA9IHtcbiAgZG9uZToge1xuICAgJ2VuLUVOJzogJ2RvbmUnLFxuICAgJ3J1LVJVJzogJ9C30LDQutGAJyxcbiAgICdmci1GUic6ICdmaW5pJyxcbiAgfSxcbiAgcHJldjoge1xuICAgICdlbi1FTic6ICdwcmV2JyxcbiAgICAncnUtUlUnOiAn0L/RgNC10LQnLFxuICAgICdmci1GUic6ICdwcsOpYydcbiAgfSxcbiAgbmV4dDoge1xuICAgICdlbi1FTic6ICduZXh0JyxcbiAgICAncnUtUlUnOiAn0YHQu9C10LQnLFxuICAgICdmci1GUic6ICdwcm9jaCcsXG4gIH0sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE9wdGlvbnNJIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB3aXRob3V0Q291bnRlcj86IGJvb2xlYW47XG4gIHdpdGhvdXRQcmV2PzogYm9vbGVhbjtcbiAgY3VzdG9tVGVtcGxhdGU/OiBib29sZWFuO1xuICB0aGVtZUNvbG9yPzogc3RyaW5nO1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIGFycm93VG9UYXJnZXQ/OiBib29sZWFuO1xuICBiYWNrZHJvcD86IGJvb2xlYW47XG4gIGFuaW1hdGVkU3RlcD86IGJvb2xlYW47XG4gIHNtb290aFNjcm9sbD86IGJvb2xlYW47XG4gIHNjcm9sbFRvPzogYm9vbGVhbjtcbiAgZml4ZWQ/OiBib29sZWFuO1xuICBtaW5XaWR0aD86IHN0cmluZzsgLy8gU3RlcCBtaW4td2lkdGhcbiAgbWluSGVpZ2h0Pzogc3RyaW5nOyAvLyBTdGVwIG1pbi1oZWlnaHRcbiAgbWF4V2lkdGg/OiBzdHJpbmc7IC8vIFN0ZXAgbWF4LXdpZHRoXG4gIG1heEhlaWdodD86IHN0cmluZzsgLy8gU3RlcCBtYXgtaGVpZ2h0XG4gIGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQ/OiBib29sZWFuOyAvLyBpbml0IG5leHQgc3RlcCBpZiB0YXJnZXQgaXMgbm90IGZvdW5kIGZvciBjdXJyZW50IG9uZVxuICBzdGVwVGFyZ2V0UmVzaXplPzogbnVtYmVyW107IC8vIGNoYW5nZSBzaXplIG9mIGEgJ3dpbmRvdycgZm9yIHN0ZXAgdGFyZ2V0XG4gIGRlbGF5PzogbnVtYmVyOyAvLyBmb3IgdGhlIGNhc2Ugb2YgdGhlIGxhemlseSBsb2FkZWQgb3IgYW5pbWF0ZWQgcm91dGVzXG4gIGF1dG9mb2N1cz86IGJvb2xlYW47XG4gIGNsb3NlT25DbGlja091dHNpZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnM6IFN0ZXBPcHRpb25zSSA9IHtcbiAgY2xhc3NOYW1lOiAnJyxcbiAgY29udGludWVJZlRhcmdldEFic2VudDogdHJ1ZSxcbiAgd2l0aG91dENvdW50ZXI6IGZhbHNlLFxuICB3aXRob3V0UHJldjogZmFsc2UsXG4gIGN1c3RvbVRlbXBsYXRlOiBmYWxzZSxcbiAgc21vb3RoU2Nyb2xsOiBmYWxzZSxcbiAgc2Nyb2xsVG86IHRydWUsXG4gIHRoZW1lQ29sb3I6ICdyZ2IoMjAsIDYwLCA2MCknLFxuICBvcGFjaXR5OiAuNixcbiAgcGxhY2VtZW50OiAnZG93bicsXG4gIGFycm93VG9UYXJnZXQ6IHRydWUsXG4gIHN0ZXBUYXJnZXRSZXNpemU6IFswXSxcbiAgZGVsYXk6IDEwMDAsXG4gIGFuaW1hdGVkU3RlcDogdHJ1ZSxcbiAgZml4ZWQ6IGZhbHNlLFxuICBiYWNrZHJvcDogdHJ1ZSxcbiAgbWluV2lkdGg6ICcyNTBweCcsXG4gIG1pbkhlaWdodDogJzE1MHB4JyxcbiAgbWF4V2lkdGg6ICc0MDBweCcsXG4gIG1heEhlaWdodDogJzYwMHB4JyxcbiAgYXV0b2ZvY3VzOiB0cnVlLFxuICBjbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTdGVwT3B0aW9ucyBpbXBsZW1lbnRzIFN0ZXBPcHRpb25zSSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgd2l0aG91dENvdW50ZXI/OiBib29sZWFuO1xuICB3aXRob3V0UHJldj86IGJvb2xlYW47XG4gIGN1c3RvbVRlbXBsYXRlPzogYm9vbGVhbjtcbiAgdGhlbWVDb2xvcj86IHN0cmluZztcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgcGxhY2VtZW50OiBzdHJpbmc7XG4gIGFycm93VG9UYXJnZXQ/OiBib29sZWFuO1xuICBiYWNrZHJvcD86IGJvb2xlYW47XG4gIGFuaW1hdGVkU3RlcD86IGJvb2xlYW47XG4gIHNtb290aFNjcm9sbD86IGJvb2xlYW47XG4gIHNjcm9sbFRvPzogYm9vbGVhbjtcbiAgY29udGludWVJZlRhcmdldEFic2VudD86IGJvb2xlYW47XG4gIHN0ZXBUYXJnZXRSZXNpemU/OiBudW1iZXJbXTtcbiAgZGVsYXk/OiBudW1iZXI7XG4gIGZpeGVkPzogYm9vbGVhbjtcbiAgbWluV2lkdGg/OiBzdHJpbmc7XG4gIG1pbkhlaWdodD86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XG4gIG1heEhlaWdodD86IHN0cmluZztcbiAgYXV0b2ZvY3VzPzogYm9vbGVhbjtcbiAgY2xvc2VPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0ZXBPcHRpb25zSSA9IGRlZmF1bHRPcHRpb25zKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGludWVJZlRhcmdldEFic2VudCxcbiAgICAgIHdpdGhvdXRDb3VudGVyLFxuICAgICAgd2l0aG91dFByZXYsXG4gICAgICBjdXN0b21UZW1wbGF0ZSxcbiAgICAgIHNtb290aFNjcm9sbCxcbiAgICAgIHNjcm9sbFRvLFxuICAgICAgdGhlbWVDb2xvcixcbiAgICAgIG9wYWNpdHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBhcnJvd1RvVGFyZ2V0LFxuICAgICAgc3RlcFRhcmdldFJlc2l6ZSxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIG1heFdpZHRoLFxuICAgICAgbWluSGVpZ2h0LFxuICAgICAgbWluV2lkdGgsXG4gICAgICBkZWxheSxcbiAgICAgIGFuaW1hdGVkU3RlcCxcbiAgICAgIGZpeGVkLFxuICAgICAgYmFja2Ryb3AsXG4gICAgICBhdXRvZm9jdXMsXG4gICAgICBjbG9zZU9uQ2xpY2tPdXRzaWRlLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgIHRoaXMucGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMuYXJyb3dUb1RhcmdldCA9IGFycm93VG9UYXJnZXQ7XG4gICAgdGhpcy50aGVtZUNvbG9yID0gdGhlbWVDb2xvcjtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMuYmFja2Ryb3AgPSBiYWNrZHJvcDtcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlID0gY3VzdG9tVGVtcGxhdGU7XG4gICAgdGhpcy53aXRob3V0Q291bnRlciA9IHdpdGhvdXRDb3VudGVyO1xuICAgIHRoaXMud2l0aG91dFByZXYgPSB3aXRob3V0UHJldjtcbiAgICB0aGlzLmNvbnRpbnVlSWZUYXJnZXRBYnNlbnQgPSBjb250aW51ZUlmVGFyZ2V0QWJzZW50O1xuICAgIHRoaXMuc3RlcFRhcmdldFJlc2l6ZSA9IHN0ZXBUYXJnZXRSZXNpemU7XG4gICAgdGhpcy5tYXhIZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgdGhpcy5tYXhXaWR0aCA9IG1heFdpZHRoO1xuICAgIHRoaXMubWluSGVpZ2h0ID0gbWluSGVpZ2h0O1xuICAgIHRoaXMubWluV2lkdGggPSBtaW5XaWR0aDtcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5hbmltYXRlZFN0ZXAgPSBhbmltYXRlZFN0ZXA7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGwgPSBzbW9vdGhTY3JvbGw7XG4gICAgdGhpcy5zY3JvbGxUbyA9IHNjcm9sbFRvO1xuICAgIHRoaXMuZml4ZWQgPSBmaXhlZDtcbiAgICB0aGlzLmF1dG9mb2N1cyA9IGF1dG9mb2N1cztcbiAgICB0aGlzLmNsb3NlT25DbGlja091dHNpZGUgPSBjbG9zZU9uQ2xpY2tPdXRzaWRlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVG91ckV2ZW50ID0gIChwcm9wczoge1xuICB0b3VyRXZlbnQ6IHN0cmluZyxcbiAgc3RlcD86IG51bWJlciB8IHN0cmluZyxcbiAgaGlzdG9yeT86IG51bWJlcltdLFxuICB0b3VyPzogVG91ckksXG59KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJFdmVudHNJIHtcbiAgdG91clN0YXJ0PzogVG91ckV2ZW50O1xuICB0b3VyRW5kPzogVG91ckV2ZW50O1xuICB0b3VyQnJlYWs/OiBUb3VyRXZlbnQ7XG4gIG5leHQ/OiBUb3VyRXZlbnQ7XG4gIHByZXY/OiBUb3VyRXZlbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VG91ckV2ZW50OiBUb3VyRXZlbnQgPSAocHJvcHMpID0+IHt9O1xuZXhwb3J0IGNvbnN0IFRvdXJEZWZhdWx0RXZlbnRzID0ge1xuICB0b3VyU3RhcnQ6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIHRvdXJFbmQ6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIHRvdXJCcmVhazogZGVmYXVsdFRvdXJFdmVudCxcbiAgbmV4dDogZGVmYXVsdFRvdXJFdmVudCxcbiAgcHJldjogZGVmYXVsdFRvdXJFdmVudCxcbn07XG5cbiAvLyBAZHluYW1pY1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvdXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGVwczogVG91clN0ZXBJW107XG4gIHByaXZhdGUgdG91clN0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdGVwc1N0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgaGlzdG9yeSA9IFtdO1xuICBwcml2YXRlIHJvdXRlQ2hhbmdlZCA9IGZhbHNlO1xuICBwcml2YXRlIHByZXNldHM6IFN0ZXBPcHRpb25zSSA9IHt9O1xuIC8vIHByaXZhdGUgdG91clN0YXJ0ID0gVG91ckRlZmF1bHRFdmVudHMudG91clN0YXJ0O1xuICBwcml2YXRlIHRvdXJCcmVhayA9IFRvdXJEZWZhdWx0RXZlbnRzLnRvdXJCcmVhaztcbiAgcHJpdmF0ZSB0b3VyRW5kID0gVG91ckRlZmF1bHRFdmVudHMudG91ckVuZDtcbiAgcHJpdmF0ZSBuZXh0ID0gVG91ckRlZmF1bHRFdmVudHMubmV4dDtcbiAgcHJpdmF0ZSBwcmV2ID0gVG91ckRlZmF1bHRFdmVudHMucHJldjtcbiAgcHJpdmF0ZSBpc0Jyb3dzZXI6IGJvb2xlYW47XG4gIHByaXZhdGUgbGFuZzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0U2VydmljZTogU3RlcFRhcmdldFNlcnZpY2UsXG4gICAgLy8gQGR5bmFtaWNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiB7fSkge1xuICAgIHRoaXMubmV4dFN0ZXAgPSB0aGlzLm5leHRTdGVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5wcmV2U3RlcCA9IHRoaXMucHJldlN0ZXAuYmluZCh0aGlzKTtcbiAgICB0aGlzLnN0b3BUb3VyID0gdGhpcy5zdG9wVG91ci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCk7XG4gICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLmxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFuZyA9ICcnXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnModG91cjogVG91ckkpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdFeHByID0gL150b3AkfF5kb3duJHxebGVmdCR8XnJpZ2h0JHxeY2VudGVyJHxecmlnaHQtY2VudGVyJHxebGVmdC1jZW50ZXIkfF5yaWdodC10b3AkfF5sZWZ0LXRvcCQvaTtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgdG91ci5zdGVwcy5mb3JFYWNoKChzdGVwOiBUb3VyU3RlcEkpID0+IHtcbiAgICAgIGlmIChzdGVwLm9wdGlvbnMgJiYgc3RlcC5vcHRpb25zLnBsYWNlbWVudCkge1xuICAgICAgICBpc1ZhbGlkID0gcmVnRXhwci50ZXN0KHN0ZXAub3B0aW9ucy5wbGFjZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0b3VyLnRvdXJPcHRpb25zLnBsYWNlbWVudCkge1xuICAgICAgaXNWYWxpZCA9IHJlZ0V4cHIudGVzdCh0b3VyLnRvdXJPcHRpb25zLnBsYWNlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG4gIHByaXZhdGUgc2V0U3RlcHModG91cjogVG91ckkpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gbmV3IFN0ZXBPcHRpb25zKHsuLi5kZWZhdWx0T3B0aW9ucywgLi4udGhpcy5wcmVzZXRzLCAuLi50b3VyLnRvdXJPcHRpb25zfSk7XG4gICAgdGhpcy5zdGVwcyA9IHRvdXIuc3RlcHMubWFwKCh4LCBpKSA9PiB7XG4gICAgICB4LmluZGV4ID0gaTtcbiAgICAgIGlmICh4LmRlc2NyaXB0aW9uICYmIHR5cGVvZiB4LmRlc2NyaXB0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICB4LmRlc2NyaXB0aW9uID0gdGhpcy5kZWZpbmVMb2NhbE5hbWUoeC5kZXNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAoeC50aXRsZSAmJiB0eXBlb2YgeC50aXRsZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgeC50aXRsZSA9IHRoaXMuZGVmaW5lTG9jYWxOYW1lKHgudGl0bGUpXG4gICAgICB9XG4gICAgICB4Lm9wdGlvbnMgPSB4Lm9wdGlvbnMgPyB7Li4ub3B0aW9ucywgLi4ueC5vcHRpb25zfSA6IG9wdGlvbnM7XG4gICAgICB4LnRvdGFsID0gdG91ci5zdGVwcy5sZW5ndGg7XG4gICAgICB4LmN0cmxCdG5zID0gdGhpcy5kZWZpbmVMb2NhbEJ0bk5hbWVzKHRvdXIuY3RybEJ0bnMgfHwgZGVmYXVsdEN0cmxCdG5zKVxuICAgICAgcmV0dXJuIHg7XG4gICAgfSk7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZygnbW9kZTogJywgaXNEZXZNb2RlKCkpXG4gICAgICBjb25zb2xlLmxvZygnbmczLXRvdXIgaXMgaW5pdGlhdGVkIHdpdGggc3RlcHM6Jyk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnN0ZXBzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlZmluZUxvY2FsTmFtZShvYmo6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSh0aGlzLmxhbmcpKSB7XG4gICAgICByZXN1bHQgPSBvYmpbdGhpcy5sYW5nXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2V0TGFuZ3VhZ2VzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgIGNvbnN0IHJhbGF0ZWRMYW5nID0gc2V0TGFuZ3VhZ2VzLmZpbHRlcihsID0+IGwuaW5jbHVkZXModGhpcy5sYW5nLnNsaWNlKDAsIDIpKSlbMF07XG4gICAgICBpZiAocmFsYXRlZExhbmcpIHtcbiAgICAgICAgcmVzdWx0ID0gb2JqW3JhbGF0ZWRMYW5nXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gb2JqW3NldExhbmd1YWdlc1swXV07XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgVG91ciBjb25maWd1cmF0aW9uIGVycm9yIHdpdGggJHtKU09OLnN0cmluZ2lmeShvYmopfWApXG4gICAgcmV0dXJuICdFcnJvcidcbiAgfVxuXG4gIHByaXZhdGUgZGVmaW5lTG9jYWxCdG5OYW1lcyhidG5zOiBDdHJsQnRuc0kpOiBDdHJsQnRuc0kge1xuICAgIGNvbnN0IGJ0bkN0cmxzID0ge307XG4gICAgZm9yIChsZXQgcHJvcCBpbiBidG5zKSB7XG4gICAgICBpZiAoYnRucy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG4gICAgICAgIGlmICh0eXBlb2YgYnRuc1twcm9wXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBidG5zW3Byb3BdID09PSAnb2JqZWN0JyAmJiBidG5zW3Byb3BdW3RoaXMubGFuZ10gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYnRuc1twcm9wXVt0aGlzLmxhbmddXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc2V0TGFuZ3VhZ2VzID0gT2JqZWN0LmtleXMoYnRuc1twcm9wXSk7XG4gICAgICAgICAgY29uc3QgcmFsYXRlZExhbmcgPSBzZXRMYW5ndWFnZXMuZmlsdGVyKGwgPT4gbC5pbmNsdWRlcyh0aGlzLmxhbmcuc2xpY2UoMCwgMikpKVswXTtcbiAgICAgICAgICBpZiAocmFsYXRlZExhbmcpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGJ0bnNbcHJvcF1bcmFsYXRlZExhbmddXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGJ0bnNbcHJvcF1bc2V0TGFuZ3VhZ2VzWzBdXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBidG5DdHJsc1twcm9wXSA9IHJlc3VsdDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBUb3VyIGNvbmZpZ3VyYXRpb24gZXJyb3Igd2l0aCAke0pTT04uc3RyaW5naWZ5KGJ0bnMpfWApO1xuICAgICAgICAgICAgYnRuQ3RybHNbcHJvcF0gPSAnRXJyb3InXG4gICAgICAgICAgfSAgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ0bkN0cmxzO1xuICB9XG4gIHByaXZhdGUgaW5pdFN0ZXAoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNTdGVwID0gdGhpcy5oaXN0b3J5Lmxlbmd0aCA/IHRoaXMuZ2V0TGFzdFN0ZXAoKSA6IHtyb3V0ZTogbnVsbH07XG4gICAgY29uc3QgbmV3dFN0ZXAgPSB0aGlzLnN0ZXBzW3N0ZXBdO1xuICAgIHRoaXMucm91dGVDaGFuZ2VkID0gcHJldmlvdXNTdGVwLnJvdXRlICE9PSBuZXd0U3RlcC5yb3V0ZTtcbiAgICB0aGlzLmhpc3RvcnkucHVzaChzdGVwKTtcbiAgICBpZiAobmV3dFN0ZXAucm91dGUgJiYgdGhpcy5yb3V0ZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXd0U3RlcC5yb3V0ZV0pO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBzU3RyZWFtJC5uZXh0KG5ld3RTdGVwLnN0ZXBOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaXN0b3J5KCkge1xuICAgIHJldHVybiB0aGlzLmhpc3Rvcnk7XG4gIH1cbiAgcHVibGljIHNldFByZXNldHMocHJlc2V0czogU3RlcE9wdGlvbnNJKTogdm9pZCB7XG4gICAgdGhpcy5wcmVzZXRzID0gey4uLnRoaXMucHJlc2V0cywgLi4ucHJlc2V0c307XG4gIH1cbiAgcHVibGljIHJlc2V0U3RlcChzdGVwTmFtZTogc3RyaW5nIHwgbnVtYmVyLCBzdGVwOiBUb3VyU3RlcEkpIHtcbiAgICBjb25zdCBpbmRleCA9IHR5cGVvZiBzdGVwTmFtZSA9PT0gJ251bWJlcicgPyBzdGVwTmFtZSA6IHRoaXMuZ2V0U3RlcEJ5TmFtZShzdGVwTmFtZSkuaW5kZXg7XG4gICAgdGhpcy5zdGVwc1tpbmRleF0gPSB7Li4uc3RlcH07XG4gIH1cbiAgcHVibGljIGdldFN0ZXBCeU5hbWUoc3RlcE5hbWU6IHN0cmluZyk6IFRvdXJTdGVwSSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMuZmlsdGVyKHN0ZXAgPT4gc3RlcC5zdGVwTmFtZSA9PT0gc3RlcE5hbWUpWzBdO1xuICB9XG4gIHB1YmxpYyBnZXRTdGVwQnlJbmRleChpbmRleCA9IDApOiBUb3VyU3RlcEkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzW2luZGV4XTtcbiAgfVxuICBwdWJsaWMgZ2V0TGFzdFN0ZXAoKTogVG91clN0ZXBJIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCkgcmV0dXJuIHRoaXMuc3RlcHNbdGhpcy5oaXN0b3J5LnNsaWNlKC0xKVswXV07XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcHVibGljIGdldFN0ZXBzU3RyZWFtKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNTdHJlYW0kO1xuICB9XG4gIHB1YmxpYyBpc1JvdXRlQ2hhbmdlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZUNoYW5nZWQ7XG4gIH1cbiAgcHJpdmF0ZSBzZXRUb3VyU3RhdHVzKHN0YXR1czogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudG91clN0YXJ0ZWQgPSBzdGF0dXM7XG4gIH1cbiAgcHVibGljIGdldFRvdXJTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG91clN0YXJ0ZWQ7XG4gIH1cbiAgcHVibGljIHN0YXJ0VG91cih0b3VyOiBUb3VySSkge1xuICAgIGlmICghdGhpcy52YWxpZGF0ZU9wdGlvbnModG91cikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxhY2VtZW50IG9wdGlvbiBvZiB0aGUgbmczLXRvdXIgb3Igb25lIG9mIGl0IHN0ZXAgaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgICBjb25zdCB7dG91ckJyZWFrLCB0b3VyU3RhcnQsIHRvdXJFbmQsIG5leHQsIHByZXZ9ID0gey4uLlRvdXJEZWZhdWx0RXZlbnRzLCAuLi50b3VyLnRvdXJFdmVudHN9O1xuICAgIHRvdXJTdGFydCh7dG91ckV2ZW50OiAnVG91ciBzdGFydCcsIHRvdXJ9KTtcbiAgICB0aGlzLnRvdXJCcmVhayA9IHRvdXJCcmVhaztcbiAgICB0aGlzLnRvdXJFbmQgPSB0b3VyRW5kO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICB0aGlzLnNldFRvdXJTdGF0dXModHJ1ZSk7XG4gICAgdGhpcy5zZXRTdGVwcyh0b3VyKTtcbiAgICB0aGlzLmluaXRTdGVwKDApO1xuICB9XG4gIHB1YmxpYyBzdG9wVG91cigpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGFzdFN0ZXAoKS5pbmRleDtcbiAgICBjb25zdCBsYXRlc3RTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLmxlbmd0aCAtIDE7XG4gICAgaWYgKCBpbmRleCA8IGxhdGVzdFN0ZXBJbmRleCkge1xuICAgICAgdGhpcy50b3VyQnJlYWsoe3RvdXJFdmVudDogJ1RvdXIgYnJlYWsnLCBzdGVwOiBpbmRleCwgaGlzdG9yeTogdGhpcy5oaXN0b3J5fSk7XG4gICAgfSBlbHNlIGlmIChsYXRlc3RTdGVwSW5kZXggPT09IGluZGV4KSB7XG4gICAgICB0aGlzLnRvdXJFbmQoe3RvdXJFdmVudDogJ1RvdXIgZW5kJywgc3RlcDogaW5kZXgsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIH1cbiAgICB0aGlzLnNldFRvdXJTdGF0dXMoZmFsc2UpO1xuICAgIHRoaXMuc3RlcHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnN0ZXBzU3RyZWFtJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuaGlzdG9yeS5sZW5ndGggPSAwO1xuICAgIHRoaXMudGFyZ2V0U2VydmljZS5zZXRUYXJnZXRTdWJqZWN0KG51bGwpO1xuICB9XG4gIHB1YmxpYyBuZXh0U3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRMYXN0U3RlcCgpLmluZGV4ICsgMTtcbiAgICB0aGlzLm5leHQoe3RvdXJFdmVudDogJ0luaXQgbmV4dCcsIHN0ZXAsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIHRoaXMuaW5pdFN0ZXAoc3RlcCk7XG4gIH1cbiAgcHVibGljIHByZXZTdGVwKCkge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldExhc3RTdGVwKCkuaW5kZXggLSAxO1xuICAgIHRoaXMucHJldih7dG91ckV2ZW50OiAnSW5pdCBwcmV2Jywgc3RlcCwgaGlzdG9yeTogdGhpcy5oaXN0b3J5fSk7XG4gICAgdGhpcy5pbml0U3RlcChzdGVwKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmczLXRvdXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdG91ci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXhELDJCQU1DOzs7SUFMQyxzQkFBbUI7O0lBQ25CLDRCQUEyQjs7SUFDM0IsNEJBQXNCOztJQUN0QiwyQkFBeUI7O0lBQ3pCLHlCQUFxQjs7Ozs7QUFHdkIsK0JBU0M7OztJQVJDLDZCQUFpQjs7SUFDakIsMEJBQWU7O0lBQ2YsMEJBQWU7O0lBQ2YsMEJBQTJDOztJQUMzQyxnQ0FBaUQ7O0lBQ2pELDRCQUF1Qjs7SUFDdkIsNkJBQXFCOzs7Ozs7QUFJdkIsK0JBS0M7OztJQUpDLHlCQUFrQzs7SUFDbEMseUJBQWtDOztJQUNsQyx5QkFBa0M7Ozs7QUFJcEMsTUFBTSxPQUFPLGVBQWUsR0FBRztJQUM3QixJQUFJLEVBQUU7UUFDTCxPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07S0FDZjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsTUFBTTtLQUNoQjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsT0FB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RixVQUFVOzs7O1lBcE1ILE1BQU07WUFFTixpQkFBaUI7NENBcU5wQixNQUFNLFNBQUMsV0FBVzs7Ozs7OztJQWpCckIsNEJBQTJCOzs7OztJQUMzQixrQ0FBNEI7Ozs7O0lBQzVCLG1DQUFzRDs7Ozs7SUFDdEQsOEJBQXFCOzs7OztJQUNyQixtQ0FBNkI7Ozs7O0lBQzdCLDhCQUFtQzs7Ozs7SUFFbkMsZ0NBQWdEOzs7OztJQUNoRCw4QkFBNEM7Ozs7O0lBQzVDLDJCQUFzQzs7Ozs7SUFDdEMsMkJBQXNDOzs7OztJQUN0QyxnQ0FBMkI7Ozs7O0lBQzNCLDJCQUFxQjs7Ozs7SUFFbkIsNkJBQXNCOzs7OztJQUN0QixvQ0FBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIGlzRGV2TW9kZSwgUExBVEZPUk1fSUQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtTdGVwVGFyZ2V0U2VydmljZX0gZnJvbSAnLi9zdGVwLXRhcmdldC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBUb3VySSB7XG4gIHN0ZXBzOiBUb3VyU3RlcElbXTtcbiAgdG91ck9wdGlvbnM/OiBTdGVwT3B0aW9uc0k7XG4gIHdpdGhvdXRMb2dzPzogYm9vbGVhbjtcbiAgdG91ckV2ZW50cz86IFRvdXJFdmVudHNJO1xuICBjdHJsQnRucz86IEN0cmxCdG5zSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3VyU3RlcEkge1xuICBzdGVwTmFtZTogc3RyaW5nO1xuICByb3V0ZT86IHN0cmluZztcbiAgaW5kZXg/OiBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nIHwge1twcm9wTmFtZTogc3RyaW5nXTogYW55fTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB7W3Byb3BOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBvcHRpb25zPzogU3RlcE9wdGlvbnNJO1xuICBjdHJsQnRucz86IEN0cmxCdG5zSTtcbiAgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3RybEJ0bnNJIHtcbiAgcHJldj86IHtbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBuZXh0Pzoge1twcm9wc05hbWU6IHN0cmluZ106IGFueX07XG4gIGRvbmU/OiB7W3Byb3BzTmFtZTogc3RyaW5nXTogYW55fTtcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN0cmxCdG5zID0ge1xuICBkb25lOiB7XG4gICAnZW4tRU4nOiAnZG9uZScsXG4gICAncnUtUlUnOiAn0LfQsNC60YAnLFxuICAgJ2ZyLUZSJzogJ2ZpbmknLFxuICB9LFxuICBwcmV2OiB7XG4gICAgJ2VuLUVOJzogJ3ByZXYnLFxuICAgICdydS1SVSc6ICfQv9GA0LXQtCcsXG4gICAgJ2ZyLUZSJzogJ3Byw6ljJ1xuICB9LFxuICBuZXh0OiB7XG4gICAgJ2VuLUVOJzogJ25leHQnLFxuICAgICdydS1SVSc6ICfRgdC70LXQtCcsXG4gICAgJ2ZyLUZSJzogJ3Byb2NoJyxcbiAgfSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwT3B0aW9uc0kge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdpdGhvdXRDb3VudGVyPzogYm9vbGVhbjtcbiAgd2l0aG91dFByZXY/OiBib29sZWFuO1xuICBjdXN0b21UZW1wbGF0ZT86IGJvb2xlYW47XG4gIHRoZW1lQ29sb3I/OiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBsYWNlbWVudD86IHN0cmluZztcbiAgYXJyb3dUb1RhcmdldD86IGJvb2xlYW47XG4gIGJhY2tkcm9wPzogYm9vbGVhbjtcbiAgYW5pbWF0ZWRTdGVwPzogYm9vbGVhbjtcbiAgc21vb3RoU2Nyb2xsPzogYm9vbGVhbjtcbiAgc2Nyb2xsVG8/OiBib29sZWFuO1xuICBmaXhlZD86IGJvb2xlYW47XG4gIG1pbldpZHRoPzogc3RyaW5nOyAvLyBTdGVwIG1pbi13aWR0aFxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7IC8vIFN0ZXAgbWluLWhlaWdodFxuICBtYXhXaWR0aD86IHN0cmluZzsgLy8gU3RlcCBtYXgtd2lkdGhcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nOyAvLyBTdGVwIG1heC1oZWlnaHRcbiAgY29udGludWVJZlRhcmdldEFic2VudD86IGJvb2xlYW47IC8vIGluaXQgbmV4dCBzdGVwIGlmIHRhcmdldCBpcyBub3QgZm91bmQgZm9yIGN1cnJlbnQgb25lXG4gIHN0ZXBUYXJnZXRSZXNpemU/OiBudW1iZXJbXTsgLy8gY2hhbmdlIHNpemUgb2YgYSAnd2luZG93JyBmb3Igc3RlcCB0YXJnZXRcbiAgZGVsYXk/OiBudW1iZXI7IC8vIGZvciB0aGUgY2FzZSBvZiB0aGUgbGF6aWx5IGxvYWRlZCBvciBhbmltYXRlZCByb3V0ZXNcbiAgYXV0b2ZvY3VzPzogYm9vbGVhbjtcbiAgY2xvc2VPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0T3B0aW9uczogU3RlcE9wdGlvbnNJID0ge1xuICBjbGFzc05hbWU6ICcnLFxuICBjb250aW51ZUlmVGFyZ2V0QWJzZW50OiB0cnVlLFxuICB3aXRob3V0Q291bnRlcjogZmFsc2UsXG4gIHdpdGhvdXRQcmV2OiBmYWxzZSxcbiAgY3VzdG9tVGVtcGxhdGU6IGZhbHNlLFxuICBzbW9vdGhTY3JvbGw6IGZhbHNlLFxuICBzY3JvbGxUbzogdHJ1ZSxcbiAgdGhlbWVDb2xvcjogJ3JnYigyMCwgNjAsIDYwKScsXG4gIG9wYWNpdHk6IC42LFxuICBwbGFjZW1lbnQ6ICdkb3duJyxcbiAgYXJyb3dUb1RhcmdldDogdHJ1ZSxcbiAgc3RlcFRhcmdldFJlc2l6ZTogWzBdLFxuICBkZWxheTogMTAwMCxcbiAgYW5pbWF0ZWRTdGVwOiB0cnVlLFxuICBmaXhlZDogZmFsc2UsXG4gIGJhY2tkcm9wOiB0cnVlLFxuICBtaW5XaWR0aDogJzI1MHB4JyxcbiAgbWluSGVpZ2h0OiAnMTUwcHgnLFxuICBtYXhXaWR0aDogJzQwMHB4JyxcbiAgbWF4SGVpZ2h0OiAnNjAwcHgnLFxuICBhdXRvZm9jdXM6IHRydWUsXG4gIGNsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNsYXNzIFN0ZXBPcHRpb25zIGltcGxlbWVudHMgU3RlcE9wdGlvbnNJIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB3aXRob3V0Q291bnRlcj86IGJvb2xlYW47XG4gIHdpdGhvdXRQcmV2PzogYm9vbGVhbjtcbiAgY3VzdG9tVGVtcGxhdGU/OiBib29sZWFuO1xuICB0aGVtZUNvbG9yPzogc3RyaW5nO1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBwbGFjZW1lbnQ6IHN0cmluZztcbiAgYXJyb3dUb1RhcmdldD86IGJvb2xlYW47XG4gIGJhY2tkcm9wPzogYm9vbGVhbjtcbiAgYW5pbWF0ZWRTdGVwPzogYm9vbGVhbjtcbiAgc21vb3RoU2Nyb2xsPzogYm9vbGVhbjtcbiAgc2Nyb2xsVG8/OiBib29sZWFuO1xuICBjb250aW51ZUlmVGFyZ2V0QWJzZW50PzogYm9vbGVhbjtcbiAgc3RlcFRhcmdldFJlc2l6ZT86IG51bWJlcltdO1xuICBkZWxheT86IG51bWJlcjtcbiAgZml4ZWQ/OiBib29sZWFuO1xuICBtaW5XaWR0aD86IHN0cmluZztcbiAgbWluSGVpZ2h0Pzogc3RyaW5nO1xuICBtYXhXaWR0aD86IHN0cmluZztcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nO1xuICBhdXRvZm9jdXM/OiBib29sZWFuO1xuICBjbG9zZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhbjtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RlcE9wdGlvbnNJID0gZGVmYXVsdE9wdGlvbnMpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb250aW51ZUlmVGFyZ2V0QWJzZW50LFxuICAgICAgd2l0aG91dENvdW50ZXIsXG4gICAgICB3aXRob3V0UHJldixcbiAgICAgIGN1c3RvbVRlbXBsYXRlLFxuICAgICAgc21vb3RoU2Nyb2xsLFxuICAgICAgc2Nyb2xsVG8sXG4gICAgICB0aGVtZUNvbG9yLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIGFycm93VG9UYXJnZXQsXG4gICAgICBzdGVwVGFyZ2V0UmVzaXplLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBtaW5IZWlnaHQsXG4gICAgICBtaW5XaWR0aCxcbiAgICAgIGRlbGF5LFxuICAgICAgYW5pbWF0ZWRTdGVwLFxuICAgICAgZml4ZWQsXG4gICAgICBiYWNrZHJvcCxcbiAgICAgIGF1dG9mb2N1cyxcbiAgICAgIGNsb3NlT25DbGlja091dHNpZGUsXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgdGhpcy5wbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgdGhpcy5hcnJvd1RvVGFyZ2V0ID0gYXJyb3dUb1RhcmdldDtcbiAgICB0aGlzLnRoZW1lQ29sb3IgPSB0aGVtZUNvbG9yO1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgdGhpcy5iYWNrZHJvcCA9IGJhY2tkcm9wO1xuICAgIHRoaXMuY3VzdG9tVGVtcGxhdGUgPSBjdXN0b21UZW1wbGF0ZTtcbiAgICB0aGlzLndpdGhvdXRDb3VudGVyID0gd2l0aG91dENvdW50ZXI7XG4gICAgdGhpcy53aXRob3V0UHJldiA9IHdpdGhvdXRQcmV2O1xuICAgIHRoaXMuY29udGludWVJZlRhcmdldEFic2VudCA9IGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQ7XG4gICAgdGhpcy5zdGVwVGFyZ2V0UmVzaXplID0gc3RlcFRhcmdldFJlc2l6ZTtcbiAgICB0aGlzLm1heEhlaWdodCA9IG1heEhlaWdodDtcbiAgICB0aGlzLm1heFdpZHRoID0gbWF4V2lkdGg7XG4gICAgdGhpcy5taW5IZWlnaHQgPSBtaW5IZWlnaHQ7XG4gICAgdGhpcy5taW5XaWR0aCA9IG1pbldpZHRoO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcbiAgICB0aGlzLmFuaW1hdGVkU3RlcCA9IGFuaW1hdGVkU3RlcDtcbiAgICB0aGlzLnNtb290aFNjcm9sbCA9IHNtb290aFNjcm9sbDtcbiAgICB0aGlzLnNjcm9sbFRvID0gc2Nyb2xsVG87XG4gICAgdGhpcy5maXhlZCA9IGZpeGVkO1xuICAgIHRoaXMuYXV0b2ZvY3VzID0gYXV0b2ZvY3VzO1xuICAgIHRoaXMuY2xvc2VPbkNsaWNrT3V0c2lkZSA9IGNsb3NlT25DbGlja091dHNpZGVcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUb3VyRXZlbnQgPSAgKHByb3BzOiB7XG4gIHRvdXJFdmVudDogc3RyaW5nLFxuICBzdGVwPzogbnVtYmVyIHwgc3RyaW5nLFxuICBoaXN0b3J5PzogbnVtYmVyW10sXG4gIHRvdXI/OiBUb3VySSxcbn0pID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91ckV2ZW50c0kge1xuICB0b3VyU3RhcnQ/OiBUb3VyRXZlbnQ7XG4gIHRvdXJFbmQ/OiBUb3VyRXZlbnQ7XG4gIHRvdXJCcmVhaz86IFRvdXJFdmVudDtcbiAgbmV4dD86IFRvdXJFdmVudDtcbiAgcHJldj86IFRvdXJFdmVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUb3VyRXZlbnQ6IFRvdXJFdmVudCA9IChwcm9wcykgPT4ge307XG5leHBvcnQgY29uc3QgVG91ckRlZmF1bHRFdmVudHMgPSB7XG4gIHRvdXJTdGFydDogZGVmYXVsdFRvdXJFdmVudCxcbiAgdG91ckVuZDogZGVmYXVsdFRvdXJFdmVudCxcbiAgdG91ckJyZWFrOiBkZWZhdWx0VG91ckV2ZW50LFxuICBuZXh0OiBkZWZhdWx0VG91ckV2ZW50LFxuICBwcmV2OiBkZWZhdWx0VG91ckV2ZW50LFxufTtcblxuIC8vIEBkeW5hbWljXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG91clNlcnZpY2Uge1xuICBwcml2YXRlIHN0ZXBzOiBUb3VyU3RlcElbXTtcbiAgcHJpdmF0ZSB0b3VyU3RhcnRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHN0ZXBzU3RyZWFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBoaXN0b3J5ID0gW107XG4gIHByaXZhdGUgcm91dGVDaGFuZ2VkID0gZmFsc2U7XG4gIHByaXZhdGUgcHJlc2V0czogU3RlcE9wdGlvbnNJID0ge307XG4gLy8gcHJpdmF0ZSB0b3VyU3RhcnQgPSBUb3VyRGVmYXVsdEV2ZW50cy50b3VyU3RhcnQ7XG4gIHByaXZhdGUgdG91ckJyZWFrID0gVG91ckRlZmF1bHRFdmVudHMudG91ckJyZWFrO1xuICBwcml2YXRlIHRvdXJFbmQgPSBUb3VyRGVmYXVsdEV2ZW50cy50b3VyRW5kO1xuICBwcml2YXRlIG5leHQgPSBUb3VyRGVmYXVsdEV2ZW50cy5uZXh0O1xuICBwcml2YXRlIHByZXYgPSBUb3VyRGVmYXVsdEV2ZW50cy5wcmV2O1xuICBwcml2YXRlIGlzQnJvd3NlcjogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsYW5nOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRTZXJ2aWNlOiBTdGVwVGFyZ2V0U2VydmljZSxcbiAgICAvLyBAZHluYW1pY1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IHt9KSB7XG4gICAgdGhpcy5uZXh0U3RlcCA9IHRoaXMubmV4dFN0ZXAuYmluZCh0aGlzKTtcbiAgICB0aGlzLnByZXZTdGVwID0gdGhpcy5wcmV2U3RlcC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc3RvcFRvdXIgPSB0aGlzLnN0b3BUb3VyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgIHRoaXMubGFuZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYW5nID0gJydcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucyh0b3VyOiBUb3VySSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ0V4cHIgPSAvXnRvcCR8XmRvd24kfF5sZWZ0JHxecmlnaHQkfF5jZW50ZXIkfF5yaWdodC1jZW50ZXIkfF5sZWZ0LWNlbnRlciR8XnJpZ2h0LXRvcCR8XmxlZnQtdG9wJC9pO1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICB0b3VyLnN0ZXBzLmZvckVhY2goKHN0ZXA6IFRvdXJTdGVwSSkgPT4ge1xuICAgICAgaWYgKHN0ZXAub3B0aW9ucyAmJiBzdGVwLm9wdGlvbnMucGxhY2VtZW50KSB7XG4gICAgICAgIGlzVmFsaWQgPSByZWdFeHByLnRlc3Qoc3RlcC5vcHRpb25zLnBsYWNlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRvdXIudG91ck9wdGlvbnMgJiYgdG91ci50b3VyT3B0aW9ucy5wbGFjZW1lbnQpIHtcbiAgICAgIGlzVmFsaWQgPSByZWdFeHByLnRlc3QodG91ci50b3VyT3B0aW9ucy5wbGFjZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuICBwcml2YXRlIHNldFN0ZXBzKHRvdXI6IFRvdXJJKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBTdGVwT3B0aW9ucyh7Li4uZGVmYXVsdE9wdGlvbnMsIC4uLnRoaXMucHJlc2V0cywgLi4udG91ci50b3VyT3B0aW9uc30pO1xuICAgIHRoaXMuc3RlcHMgPSB0b3VyLnN0ZXBzLm1hcCgoeCwgaSkgPT4ge1xuICAgICAgeC5pbmRleCA9IGk7XG4gICAgICBpZiAoeC5kZXNjcmlwdGlvbiAmJiB0eXBlb2YgeC5kZXNjcmlwdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgeC5kZXNjcmlwdGlvbiA9IHRoaXMuZGVmaW5lTG9jYWxOYW1lKHguZGVzY3JpcHRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKHgudGl0bGUgJiYgdHlwZW9mIHgudGl0bGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHgudGl0bGUgPSB0aGlzLmRlZmluZUxvY2FsTmFtZSh4LnRpdGxlKVxuICAgICAgfVxuICAgICAgeC5vcHRpb25zID0geC5vcHRpb25zID8gey4uLm9wdGlvbnMsIC4uLngub3B0aW9uc30gOiBvcHRpb25zO1xuICAgICAgeC50b3RhbCA9IHRvdXIuc3RlcHMubGVuZ3RoO1xuICAgICAgeC5jdHJsQnRucyA9IHRoaXMuZGVmaW5lTG9jYWxCdG5OYW1lcyh0b3VyLmN0cmxCdG5zIHx8IGRlZmF1bHRDdHJsQnRucylcbiAgICAgIHJldHVybiB4O1xuICAgIH0pO1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ21vZGU6ICcsIGlzRGV2TW9kZSgpKVxuICAgICAgY29uc29sZS5sb2coJ25nMy10b3VyIGlzIGluaXRpYXRlZCB3aXRoIHN0ZXBzOicpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5zdGVwcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWZpbmVMb2NhbE5hbWUob2JqOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZztcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkodGhpcy5sYW5nKSkge1xuICAgICAgcmVzdWx0ID0gb2JqW3RoaXMubGFuZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNldExhbmd1YWdlcyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICBjb25zdCByYWxhdGVkTGFuZyA9IHNldExhbmd1YWdlcy5maWx0ZXIobCA9PiBsLmluY2x1ZGVzKHRoaXMubGFuZy5zbGljZSgwLCAyKSkpWzBdO1xuICAgICAgaWYgKHJhbGF0ZWRMYW5nKSB7XG4gICAgICAgIHJlc3VsdCA9IG9ialtyYWxhdGVkTGFuZ11cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG9ialtzZXRMYW5ndWFnZXNbMF1dO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYFRvdXIgY29uZmlndXJhdGlvbiBlcnJvciB3aXRoICR7SlNPTi5zdHJpbmdpZnkob2JqKX1gKVxuICAgIHJldHVybiAnRXJyb3InXG4gIH1cblxuICBwcml2YXRlIGRlZmluZUxvY2FsQnRuTmFtZXMoYnRuczogQ3RybEJ0bnNJKTogQ3RybEJ0bnNJIHtcbiAgICBjb25zdCBidG5DdHJscyA9IHt9O1xuICAgIGZvciAobGV0IHByb3AgaW4gYnRucykge1xuICAgICAgaWYgKGJ0bnMuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGJ0bnNbcHJvcF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYnRuc1twcm9wXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYnRuc1twcm9wXSA9PT0gJ29iamVjdCcgJiYgYnRuc1twcm9wXVt0aGlzLmxhbmddID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJlc3VsdCA9IGJ0bnNbcHJvcF1bdGhpcy5sYW5nXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHNldExhbmd1YWdlcyA9IE9iamVjdC5rZXlzKGJ0bnNbcHJvcF0pO1xuICAgICAgICAgIGNvbnN0IHJhbGF0ZWRMYW5nID0gc2V0TGFuZ3VhZ2VzLmZpbHRlcihsID0+IGwuaW5jbHVkZXModGhpcy5sYW5nLnNsaWNlKDAsIDIpKSlbMF07XG4gICAgICAgICAgaWYgKHJhbGF0ZWRMYW5nKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdW3JhbGF0ZWRMYW5nXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdW3NldExhbmd1YWdlc1swXV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYnRuQ3RybHNbcHJvcF0gPSByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVG91ciBjb25maWd1cmF0aW9uIGVycm9yIHdpdGggJHtKU09OLnN0cmluZ2lmeShidG5zKX1gKTtcbiAgICAgICAgICAgIGJ0bkN0cmxzW3Byb3BdID0gJ0Vycm9yJ1xuICAgICAgICAgIH0gIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBidG5DdHJscztcbiAgfVxuICBwcml2YXRlIGluaXRTdGVwKHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzU3RlcCA9IHRoaXMuaGlzdG9yeS5sZW5ndGggPyB0aGlzLmdldExhc3RTdGVwKCkgOiB7cm91dGU6IG51bGx9O1xuICAgIGNvbnN0IG5ld3RTdGVwID0gdGhpcy5zdGVwc1tzdGVwXTtcbiAgICB0aGlzLnJvdXRlQ2hhbmdlZCA9IHByZXZpb3VzU3RlcC5yb3V0ZSAhPT0gbmV3dFN0ZXAucm91dGU7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2goc3RlcCk7XG4gICAgaWYgKG5ld3RTdGVwLnJvdXRlICYmIHRoaXMucm91dGVDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmV3dFN0ZXAucm91dGVdKTtcbiAgICB9XG4gICAgdGhpcy5zdGVwc1N0cmVhbSQubmV4dChuZXd0U3RlcC5zdGVwTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGlzdG9yeSgpIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5O1xuICB9XG4gIHB1YmxpYyBzZXRQcmVzZXRzKHByZXNldHM6IFN0ZXBPcHRpb25zSSk6IHZvaWQge1xuICAgIHRoaXMucHJlc2V0cyA9IHsuLi50aGlzLnByZXNldHMsIC4uLnByZXNldHN9O1xuICB9XG4gIHB1YmxpYyByZXNldFN0ZXAoc3RlcE5hbWU6IHN0cmluZyB8IG51bWJlciwgc3RlcDogVG91clN0ZXBJKSB7XG4gICAgY29uc3QgaW5kZXggPSB0eXBlb2Ygc3RlcE5hbWUgPT09ICdudW1iZXInID8gc3RlcE5hbWUgOiB0aGlzLmdldFN0ZXBCeU5hbWUoc3RlcE5hbWUpLmluZGV4O1xuICAgIHRoaXMuc3RlcHNbaW5kZXhdID0gey4uLnN0ZXB9O1xuICB9XG4gIHB1YmxpYyBnZXRTdGVwQnlOYW1lKHN0ZXBOYW1lOiBzdHJpbmcpOiBUb3VyU3RlcEkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuc3RlcE5hbWUgPT09IHN0ZXBOYW1lKVswXTtcbiAgfVxuICBwdWJsaWMgZ2V0U3RlcEJ5SW5kZXgoaW5kZXggPSAwKTogVG91clN0ZXBJIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc1tpbmRleF07XG4gIH1cbiAgcHVibGljIGdldExhc3RTdGVwKCk6IFRvdXJTdGVwSSB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeS5sZW5ndGgpIHJldHVybiB0aGlzLnN0ZXBzW3RoaXMuaGlzdG9yeS5zbGljZSgtMSlbMF1dO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHB1YmxpYyBnZXRTdGVwc1N0cmVhbSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzU3RyZWFtJDtcbiAgfVxuICBwdWJsaWMgaXNSb3V0ZUNoYW5nZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVDaGFuZ2VkO1xuICB9XG4gIHByaXZhdGUgc2V0VG91clN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnRvdXJTdGFydGVkID0gc3RhdHVzO1xuICB9XG4gIHB1YmxpYyBnZXRUb3VyU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvdXJTdGFydGVkO1xuICB9XG4gIHB1YmxpYyBzdGFydFRvdXIodG91cjogVG91ckkpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPcHRpb25zKHRvdXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsYWNlbWVudCBvcHRpb24gb2YgdGhlIG5nMy10b3VyIG9yIG9uZSBvZiBpdCBzdGVwIGlzIGludmFsaWQnKTtcbiAgICB9XG4gICAgY29uc3Qge3RvdXJCcmVhaywgdG91clN0YXJ0LCB0b3VyRW5kLCBuZXh0LCBwcmV2fSA9IHsuLi5Ub3VyRGVmYXVsdEV2ZW50cywgLi4udG91ci50b3VyRXZlbnRzfTtcbiAgICB0b3VyU3RhcnQoe3RvdXJFdmVudDogJ1RvdXIgc3RhcnQnLCB0b3VyfSk7XG4gICAgdGhpcy50b3VyQnJlYWsgPSB0b3VyQnJlYWs7XG4gICAgdGhpcy50b3VyRW5kID0gdG91ckVuZDtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5zZXRUb3VyU3RhdHVzKHRydWUpO1xuICAgIHRoaXMuc2V0U3RlcHModG91cik7XG4gICAgdGhpcy5pbml0U3RlcCgwKTtcbiAgfVxuICBwdWJsaWMgc3RvcFRvdXIoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExhc3RTdGVwKCkuaW5kZXg7XG4gICAgY29uc3QgbGF0ZXN0U3RlcEluZGV4ID0gdGhpcy5zdGVwcy5sZW5ndGggLSAxO1xuICAgIGlmICggaW5kZXggPCBsYXRlc3RTdGVwSW5kZXgpIHtcbiAgICAgIHRoaXMudG91ckJyZWFrKHt0b3VyRXZlbnQ6ICdUb3VyIGJyZWFrJywgc3RlcDogaW5kZXgsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIH0gZWxzZSBpZiAobGF0ZXN0U3RlcEluZGV4ID09PSBpbmRleCkge1xuICAgICAgdGhpcy50b3VyRW5kKHt0b3VyRXZlbnQ6ICdUb3VyIGVuZCcsIHN0ZXA6IGluZGV4LCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB9XG4gICAgdGhpcy5zZXRUb3VyU3RhdHVzKGZhbHNlKTtcbiAgICB0aGlzLnN0ZXBzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zdGVwc1N0cmVhbSQubmV4dChudWxsKTtcbiAgICB0aGlzLmhpc3RvcnkubGVuZ3RoID0gMDtcbiAgICB0aGlzLnRhcmdldFNlcnZpY2Uuc2V0VGFyZ2V0U3ViamVjdChudWxsKTtcbiAgfVxuICBwdWJsaWMgbmV4dFN0ZXAoKSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0TGFzdFN0ZXAoKS5pbmRleCArIDE7XG4gICAgdGhpcy5uZXh0KHt0b3VyRXZlbnQ6ICdJbml0IG5leHQnLCBzdGVwLCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB0aGlzLmluaXRTdGVwKHN0ZXApO1xuICB9XG4gIHB1YmxpYyBwcmV2U3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRMYXN0U3RlcCgpLmluZGV4IC0gMTtcbiAgICB0aGlzLnByZXYoe3RvdXJFdmVudDogJ0luaXQgcHJldicsIHN0ZXAsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIHRoaXMuaW5pdFN0ZXAoc3RlcCk7XG4gIH1cbn1cbiJdfQ==

@@ -312,3 +312,3 @@ /**

}));
if (tour.tourOptions.placement) {
if (tour.tourOptions && tour.tourOptions.placement) {
isValid = regExpr.test(tour.tourOptions.placement);

@@ -737,2 +737,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmczLXRvdXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdG91ci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUV4RCwyQkFNQzs7O0lBTEMsc0JBQW1COztJQUNuQiw0QkFBMkI7O0lBQzNCLDRCQUFzQjs7SUFDdEIsMkJBQXlCOztJQUN6Qix5QkFBcUI7Ozs7O0FBR3ZCLCtCQVNDOzs7SUFSQyw2QkFBaUI7O0lBQ2pCLDBCQUFlOztJQUNmLDBCQUFlOztJQUNmLDBCQUEyQzs7SUFDM0MsZ0NBQWlEOztJQUNqRCw0QkFBdUI7O0lBQ3ZCLDZCQUFxQjs7Ozs7O0FBSXZCLCtCQUtDOzs7SUFKQyx5QkFBa0M7O0lBQ2xDLHlCQUFrQzs7SUFDbEMseUJBQWtDOzs7O0FBSXBDLE1BQU0sS0FBTyxlQUFlLEdBQUc7SUFDN0IsSUFBSSxFQUFFO1FBQ0wsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO0tBQ2Y7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE9B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OztJQUFmOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxNQUFBLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7Z0JBck1GLFVBQVU7Ozs7Z0JBcE1ILE1BQU07Z0JBRU4saUJBQWlCO2dEQXFOcEIsTUFBTSxTQUFDLFdBQVc7O0lBbUx2QixrQkFBQztDQUFBLEFBdE1ELElBc01DO1NBck1ZLFdBQVc7Ozs7OztJQUN0Qiw0QkFBMkI7Ozs7O0lBQzNCLGtDQUE0Qjs7Ozs7SUFDNUIsbUNBQXNEOzs7OztJQUN0RCw4QkFBcUI7Ozs7O0lBQ3JCLG1DQUE2Qjs7Ozs7SUFDN0IsOEJBQW1DOzs7OztJQUVuQyxnQ0FBZ0Q7Ozs7O0lBQ2hELDhCQUE0Qzs7Ozs7SUFDNUMsMkJBQXNDOzs7OztJQUN0QywyQkFBc0M7Ozs7O0lBQ3RDLGdDQUEyQjs7Ozs7SUFDM0IsMkJBQXFCOzs7OztJQUVuQiw2QkFBc0I7Ozs7O0lBQ3RCLG9DQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBQTEFURk9STV9JRCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1N0ZXBUYXJnZXRTZXJ2aWNlfSBmcm9tICcuL3N0ZXAtdGFyZ2V0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJJIHtcbiAgc3RlcHM6IFRvdXJTdGVwSVtdO1xuICB0b3VyT3B0aW9ucz86IFN0ZXBPcHRpb25zSTtcbiAgd2l0aG91dExvZ3M/OiBib29sZWFuO1xuICB0b3VyRXZlbnRzPzogVG91ckV2ZW50c0k7XG4gIGN0cmxCdG5zPzogQ3RybEJ0bnNJO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJTdGVwSSB7XG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG4gIHJvdXRlPzogc3RyaW5nO1xuICBpbmRleD86IG51bWJlcjtcbiAgdGl0bGU/OiBzdHJpbmcgfCB7W3Byb3BOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHtbcHJvcE5hbWU6IHN0cmluZ106IGFueX07XG4gIG9wdGlvbnM/OiBTdGVwT3B0aW9uc0k7XG4gIGN0cmxCdG5zPzogQ3RybEJ0bnNJO1xuICBbcHJvcE5hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdHJsQnRuc0kge1xuICBwcmV2Pzoge1twcm9wc05hbWU6IHN0cmluZ106IGFueX07XG4gIG5leHQ/OiB7W3Byb3BzTmFtZTogc3RyaW5nXTogYW55fTtcbiAgZG9uZT86IHtbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3RybEJ0bnMgPSB7XG4gIGRvbmU6IHtcbiAgICdlbi1FTic6ICdkb25lJyxcbiAgICdydS1SVSc6ICfQt9Cw0LrRgCcsXG4gICAnZnItRlInOiAnZmluaScsXG4gIH0sXG4gIHByZXY6IHtcbiAgICAnZW4tRU4nOiAncHJldicsXG4gICAgJ3J1LVJVJzogJ9C/0YDQtdC0JyxcbiAgICAnZnItRlInOiAncHLDqWMnXG4gIH0sXG4gIG5leHQ6IHtcbiAgICAnZW4tRU4nOiAnbmV4dCcsXG4gICAgJ3J1LVJVJzogJ9GB0LvQtdC0JyxcbiAgICAnZnItRlInOiAncHJvY2gnLFxuICB9LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBPcHRpb25zSSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgd2l0aG91dENvdW50ZXI/OiBib29sZWFuO1xuICB3aXRob3V0UHJldj86IGJvb2xlYW47XG4gIGN1c3RvbVRlbXBsYXRlPzogYm9vbGVhbjtcbiAgdGhlbWVDb2xvcj86IHN0cmluZztcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgcGxhY2VtZW50Pzogc3RyaW5nO1xuICBhcnJvd1RvVGFyZ2V0PzogYm9vbGVhbjtcbiAgYmFja2Ryb3A/OiBib29sZWFuO1xuICBhbmltYXRlZFN0ZXA/OiBib29sZWFuO1xuICBzbW9vdGhTY3JvbGw/OiBib29sZWFuO1xuICBzY3JvbGxUbz86IGJvb2xlYW47XG4gIGZpeGVkPzogYm9vbGVhbjtcbiAgbWluV2lkdGg/OiBzdHJpbmc7IC8vIFN0ZXAgbWluLXdpZHRoXG4gIG1pbkhlaWdodD86IHN0cmluZzsgLy8gU3RlcCBtaW4taGVpZ2h0XG4gIG1heFdpZHRoPzogc3RyaW5nOyAvLyBTdGVwIG1heC13aWR0aFxuICBtYXhIZWlnaHQ/OiBzdHJpbmc7IC8vIFN0ZXAgbWF4LWhlaWdodFxuICBjb250aW51ZUlmVGFyZ2V0QWJzZW50PzogYm9vbGVhbjsgLy8gaW5pdCBuZXh0IHN0ZXAgaWYgdGFyZ2V0IGlzIG5vdCBmb3VuZCBmb3IgY3VycmVudCBvbmVcbiAgc3RlcFRhcmdldFJlc2l6ZT86IG51bWJlcltdOyAvLyBjaGFuZ2Ugc2l6ZSBvZiBhICd3aW5kb3cnIGZvciBzdGVwIHRhcmdldFxuICBkZWxheT86IG51bWJlcjsgLy8gZm9yIHRoZSBjYXNlIG9mIHRoZSBsYXppbHkgbG9hZGVkIG9yIGFuaW1hdGVkIHJvdXRlc1xuICBhdXRvZm9jdXM/OiBib29sZWFuO1xuICBjbG9zZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRPcHRpb25zOiBTdGVwT3B0aW9uc0kgPSB7XG4gIGNsYXNzTmFtZTogJycsXG4gIGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQ6IHRydWUsXG4gIHdpdGhvdXRDb3VudGVyOiBmYWxzZSxcbiAgd2l0aG91dFByZXY6IGZhbHNlLFxuICBjdXN0b21UZW1wbGF0ZTogZmFsc2UsXG4gIHNtb290aFNjcm9sbDogZmFsc2UsXG4gIHNjcm9sbFRvOiB0cnVlLFxuICB0aGVtZUNvbG9yOiAncmdiKDIwLCA2MCwgNjApJyxcbiAgb3BhY2l0eTogLjYsXG4gIHBsYWNlbWVudDogJ2Rvd24nLFxuICBhcnJvd1RvVGFyZ2V0OiB0cnVlLFxuICBzdGVwVGFyZ2V0UmVzaXplOiBbMF0sXG4gIGRlbGF5OiAxMDAwLFxuICBhbmltYXRlZFN0ZXA6IHRydWUsXG4gIGZpeGVkOiBmYWxzZSxcbiAgYmFja2Ryb3A6IHRydWUsXG4gIG1pbldpZHRoOiAnMjUwcHgnLFxuICBtaW5IZWlnaHQ6ICcxNTBweCcsXG4gIG1heFdpZHRoOiAnNDAwcHgnLFxuICBtYXhIZWlnaHQ6ICc2MDBweCcsXG4gIGF1dG9mb2N1czogdHJ1ZSxcbiAgY2xvc2VPbkNsaWNrT3V0c2lkZTogZmFsc2UsXG59O1xuXG5leHBvcnQgY2xhc3MgU3RlcE9wdGlvbnMgaW1wbGVtZW50cyBTdGVwT3B0aW9uc0kge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdpdGhvdXRDb3VudGVyPzogYm9vbGVhbjtcbiAgd2l0aG91dFByZXY/OiBib29sZWFuO1xuICBjdXN0b21UZW1wbGF0ZT86IGJvb2xlYW47XG4gIHRoZW1lQ29sb3I/OiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICBhcnJvd1RvVGFyZ2V0PzogYm9vbGVhbjtcbiAgYmFja2Ryb3A/OiBib29sZWFuO1xuICBhbmltYXRlZFN0ZXA/OiBib29sZWFuO1xuICBzbW9vdGhTY3JvbGw/OiBib29sZWFuO1xuICBzY3JvbGxUbz86IGJvb2xlYW47XG4gIGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQ/OiBib29sZWFuO1xuICBzdGVwVGFyZ2V0UmVzaXplPzogbnVtYmVyW107XG4gIGRlbGF5PzogbnVtYmVyO1xuICBmaXhlZD86IGJvb2xlYW47XG4gIG1pbldpZHRoPzogc3RyaW5nO1xuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XG4gIG1heFdpZHRoPzogc3RyaW5nO1xuICBtYXhIZWlnaHQ/OiBzdHJpbmc7XG4gIGF1dG9mb2N1cz86IGJvb2xlYW47XG4gIGNsb3NlT25DbGlja091dHNpZGU/OiBib29sZWFuO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdGVwT3B0aW9uc0kgPSBkZWZhdWx0T3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQsXG4gICAgICB3aXRob3V0Q291bnRlcixcbiAgICAgIHdpdGhvdXRQcmV2LFxuICAgICAgY3VzdG9tVGVtcGxhdGUsXG4gICAgICBzbW9vdGhTY3JvbGwsXG4gICAgICBzY3JvbGxUbyxcbiAgICAgIHRoZW1lQ29sb3IsXG4gICAgICBvcGFjaXR5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgYXJyb3dUb1RhcmdldCxcbiAgICAgIHN0ZXBUYXJnZXRSZXNpemUsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIG1pbkhlaWdodCxcbiAgICAgIG1pbldpZHRoLFxuICAgICAgZGVsYXksXG4gICAgICBhbmltYXRlZFN0ZXAsXG4gICAgICBmaXhlZCxcbiAgICAgIGJhY2tkcm9wLFxuICAgICAgYXV0b2ZvY3VzLFxuICAgICAgY2xvc2VPbkNsaWNrT3V0c2lkZSxcbiAgICB9ID0gb3B0aW9ucztcbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICB0aGlzLnBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICB0aGlzLmFycm93VG9UYXJnZXQgPSBhcnJvd1RvVGFyZ2V0O1xuICAgIHRoaXMudGhlbWVDb2xvciA9IHRoZW1lQ29sb3I7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICB0aGlzLmJhY2tkcm9wID0gYmFja2Ryb3A7XG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZSA9IGN1c3RvbVRlbXBsYXRlO1xuICAgIHRoaXMud2l0aG91dENvdW50ZXIgPSB3aXRob3V0Q291bnRlcjtcbiAgICB0aGlzLndpdGhvdXRQcmV2ID0gd2l0aG91dFByZXY7XG4gICAgdGhpcy5jb250aW51ZUlmVGFyZ2V0QWJzZW50ID0gY29udGludWVJZlRhcmdldEFic2VudDtcbiAgICB0aGlzLnN0ZXBUYXJnZXRSZXNpemUgPSBzdGVwVGFyZ2V0UmVzaXplO1xuICAgIHRoaXMubWF4SGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgIHRoaXMubWF4V2lkdGggPSBtYXhXaWR0aDtcbiAgICB0aGlzLm1pbkhlaWdodCA9IG1pbkhlaWdodDtcbiAgICB0aGlzLm1pbldpZHRoID0gbWluV2lkdGg7XG4gICAgdGhpcy5kZWxheSA9IGRlbGF5O1xuICAgIHRoaXMuYW5pbWF0ZWRTdGVwID0gYW5pbWF0ZWRTdGVwO1xuICAgIHRoaXMuc21vb3RoU2Nyb2xsID0gc21vb3RoU2Nyb2xsO1xuICAgIHRoaXMuc2Nyb2xsVG8gPSBzY3JvbGxUbztcbiAgICB0aGlzLmZpeGVkID0gZml4ZWQ7XG4gICAgdGhpcy5hdXRvZm9jdXMgPSBhdXRvZm9jdXM7XG4gICAgdGhpcy5jbG9zZU9uQ2xpY2tPdXRzaWRlID0gY2xvc2VPbkNsaWNrT3V0c2lkZVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRvdXJFdmVudCA9ICAocHJvcHM6IHtcbiAgdG91ckV2ZW50OiBzdHJpbmcsXG4gIHN0ZXA/OiBudW1iZXIgfCBzdHJpbmcsXG4gIGhpc3Rvcnk/OiBudW1iZXJbXSxcbiAgdG91cj86IFRvdXJJLFxufSkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBUb3VyRXZlbnRzSSB7XG4gIHRvdXJTdGFydD86IFRvdXJFdmVudDtcbiAgdG91ckVuZD86IFRvdXJFdmVudDtcbiAgdG91ckJyZWFrPzogVG91ckV2ZW50O1xuICBuZXh0PzogVG91ckV2ZW50O1xuICBwcmV2PzogVG91ckV2ZW50O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRvdXJFdmVudDogVG91ckV2ZW50ID0gKHByb3BzKSA9PiB7fTtcbmV4cG9ydCBjb25zdCBUb3VyRGVmYXVsdEV2ZW50cyA9IHtcbiAgdG91clN0YXJ0OiBkZWZhdWx0VG91ckV2ZW50LFxuICB0b3VyRW5kOiBkZWZhdWx0VG91ckV2ZW50LFxuICB0b3VyQnJlYWs6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIG5leHQ6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIHByZXY6IGRlZmF1bHRUb3VyRXZlbnQsXG59O1xuXG4gLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb3VyU2VydmljZSB7XG4gIHByaXZhdGUgc3RlcHM6IFRvdXJTdGVwSVtdO1xuICBwcml2YXRlIHRvdXJTdGFydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgc3RlcHNTdHJlYW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGhpc3RvcnkgPSBbXTtcbiAgcHJpdmF0ZSByb3V0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwcmVzZXRzOiBTdGVwT3B0aW9uc0kgPSB7fTtcbiAvLyBwcml2YXRlIHRvdXJTdGFydCA9IFRvdXJEZWZhdWx0RXZlbnRzLnRvdXJTdGFydDtcbiAgcHJpdmF0ZSB0b3VyQnJlYWsgPSBUb3VyRGVmYXVsdEV2ZW50cy50b3VyQnJlYWs7XG4gIHByaXZhdGUgdG91ckVuZCA9IFRvdXJEZWZhdWx0RXZlbnRzLnRvdXJFbmQ7XG4gIHByaXZhdGUgbmV4dCA9IFRvdXJEZWZhdWx0RXZlbnRzLm5leHQ7XG4gIHByaXZhdGUgcHJldiA9IFRvdXJEZWZhdWx0RXZlbnRzLnByZXY7XG4gIHByaXZhdGUgaXNCcm93c2VyOiBib29sZWFuO1xuICBwcml2YXRlIGxhbmc6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFNlcnZpY2U6IFN0ZXBUYXJnZXRTZXJ2aWNlLFxuICAgIC8vIEBkeW5hbWljXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDoge30pIHtcbiAgICB0aGlzLm5leHRTdGVwID0gdGhpcy5uZXh0U3RlcC5iaW5kKHRoaXMpO1xuICAgIHRoaXMucHJldlN0ZXAgPSB0aGlzLnByZXZTdGVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zdG9wVG91ciA9IHRoaXMuc3RvcFRvdXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5sYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhbmcgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVPcHRpb25zKHRvdXI6IFRvdXJJKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnRXhwciA9IC9edG9wJHxeZG93biR8XmxlZnQkfF5yaWdodCR8XmNlbnRlciR8XnJpZ2h0LWNlbnRlciR8XmxlZnQtY2VudGVyJHxecmlnaHQtdG9wJHxebGVmdC10b3AkL2k7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIHRvdXIuc3RlcHMuZm9yRWFjaCgoc3RlcDogVG91clN0ZXBJKSA9PiB7XG4gICAgICBpZiAoc3RlcC5vcHRpb25zICYmIHN0ZXAub3B0aW9ucy5wbGFjZW1lbnQpIHtcbiAgICAgICAgaXNWYWxpZCA9IHJlZ0V4cHIudGVzdChzdGVwLm9wdGlvbnMucGxhY2VtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodG91ci50b3VyT3B0aW9ucy5wbGFjZW1lbnQpIHtcbiAgICAgIGlzVmFsaWQgPSByZWdFeHByLnRlc3QodG91ci50b3VyT3B0aW9ucy5wbGFjZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuICBwcml2YXRlIHNldFN0ZXBzKHRvdXI6IFRvdXJJKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBTdGVwT3B0aW9ucyh7Li4uZGVmYXVsdE9wdGlvbnMsIC4uLnRoaXMucHJlc2V0cywgLi4udG91ci50b3VyT3B0aW9uc30pO1xuICAgIHRoaXMuc3RlcHMgPSB0b3VyLnN0ZXBzLm1hcCgoeCwgaSkgPT4ge1xuICAgICAgeC5pbmRleCA9IGk7XG4gICAgICBpZiAoeC5kZXNjcmlwdGlvbiAmJiB0eXBlb2YgeC5kZXNjcmlwdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgeC5kZXNjcmlwdGlvbiA9IHRoaXMuZGVmaW5lTG9jYWxOYW1lKHguZGVzY3JpcHRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKHgudGl0bGUgJiYgdHlwZW9mIHgudGl0bGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHgudGl0bGUgPSB0aGlzLmRlZmluZUxvY2FsTmFtZSh4LnRpdGxlKVxuICAgICAgfVxuICAgICAgeC5vcHRpb25zID0geC5vcHRpb25zID8gey4uLm9wdGlvbnMsIC4uLngub3B0aW9uc30gOiBvcHRpb25zO1xuICAgICAgeC50b3RhbCA9IHRvdXIuc3RlcHMubGVuZ3RoO1xuICAgICAgeC5jdHJsQnRucyA9IHRoaXMuZGVmaW5lTG9jYWxCdG5OYW1lcyh0b3VyLmN0cmxCdG5zIHx8IGRlZmF1bHRDdHJsQnRucylcbiAgICAgIHJldHVybiB4O1xuICAgIH0pO1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ21vZGU6ICcsIGlzRGV2TW9kZSgpKVxuICAgICAgY29uc29sZS5sb2coJ25nMy10b3VyIGlzIGluaXRpYXRlZCB3aXRoIHN0ZXBzOicpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5zdGVwcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWZpbmVMb2NhbE5hbWUob2JqOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZztcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkodGhpcy5sYW5nKSkge1xuICAgICAgcmVzdWx0ID0gb2JqW3RoaXMubGFuZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNldExhbmd1YWdlcyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICBjb25zdCByYWxhdGVkTGFuZyA9IHNldExhbmd1YWdlcy5maWx0ZXIobCA9PiBsLmluY2x1ZGVzKHRoaXMubGFuZy5zbGljZSgwLCAyKSkpWzBdO1xuICAgICAgaWYgKHJhbGF0ZWRMYW5nKSB7XG4gICAgICAgIHJlc3VsdCA9IG9ialtyYWxhdGVkTGFuZ11cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG9ialtzZXRMYW5ndWFnZXNbMF1dO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYFRvdXIgY29uZmlndXJhdGlvbiBlcnJvciB3aXRoICR7SlNPTi5zdHJpbmdpZnkob2JqKX1gKVxuICAgIHJldHVybiAnRXJyb3InXG4gIH1cblxuICBwcml2YXRlIGRlZmluZUxvY2FsQnRuTmFtZXMoYnRuczogQ3RybEJ0bnNJKTogQ3RybEJ0bnNJIHtcbiAgICBjb25zdCBidG5DdHJscyA9IHt9O1xuICAgIGZvciAobGV0IHByb3AgaW4gYnRucykge1xuICAgICAgaWYgKGJ0bnMuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGJ0bnNbcHJvcF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYnRuc1twcm9wXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYnRuc1twcm9wXSA9PT0gJ29iamVjdCcgJiYgYnRuc1twcm9wXVt0aGlzLmxhbmddID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJlc3VsdCA9IGJ0bnNbcHJvcF1bdGhpcy5sYW5nXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHNldExhbmd1YWdlcyA9IE9iamVjdC5rZXlzKGJ0bnNbcHJvcF0pO1xuICAgICAgICAgIGNvbnN0IHJhbGF0ZWRMYW5nID0gc2V0TGFuZ3VhZ2VzLmZpbHRlcihsID0+IGwuaW5jbHVkZXModGhpcy5sYW5nLnNsaWNlKDAsIDIpKSlbMF07XG4gICAgICAgICAgaWYgKHJhbGF0ZWRMYW5nKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdW3JhbGF0ZWRMYW5nXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdW3NldExhbmd1YWdlc1swXV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYnRuQ3RybHNbcHJvcF0gPSByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVG91ciBjb25maWd1cmF0aW9uIGVycm9yIHdpdGggJHtKU09OLnN0cmluZ2lmeShidG5zKX1gKTtcbiAgICAgICAgICAgIGJ0bkN0cmxzW3Byb3BdID0gJ0Vycm9yJ1xuICAgICAgICAgIH0gIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBidG5DdHJscztcbiAgfVxuICBwcml2YXRlIGluaXRTdGVwKHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzU3RlcCA9IHRoaXMuaGlzdG9yeS5sZW5ndGggPyB0aGlzLmdldExhc3RTdGVwKCkgOiB7cm91dGU6IG51bGx9O1xuICAgIGNvbnN0IG5ld3RTdGVwID0gdGhpcy5zdGVwc1tzdGVwXTtcbiAgICB0aGlzLnJvdXRlQ2hhbmdlZCA9IHByZXZpb3VzU3RlcC5yb3V0ZSAhPT0gbmV3dFN0ZXAucm91dGU7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2goc3RlcCk7XG4gICAgaWYgKG5ld3RTdGVwLnJvdXRlICYmIHRoaXMucm91dGVDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmV3dFN0ZXAucm91dGVdKTtcbiAgICB9XG4gICAgdGhpcy5zdGVwc1N0cmVhbSQubmV4dChuZXd0U3RlcC5zdGVwTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGlzdG9yeSgpIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5O1xuICB9XG4gIHB1YmxpYyBzZXRQcmVzZXRzKHByZXNldHM6IFN0ZXBPcHRpb25zSSk6IHZvaWQge1xuICAgIHRoaXMucHJlc2V0cyA9IHsuLi50aGlzLnByZXNldHMsIC4uLnByZXNldHN9O1xuICB9XG4gIHB1YmxpYyByZXNldFN0ZXAoc3RlcE5hbWU6IHN0cmluZyB8IG51bWJlciwgc3RlcDogVG91clN0ZXBJKSB7XG4gICAgY29uc3QgaW5kZXggPSB0eXBlb2Ygc3RlcE5hbWUgPT09ICdudW1iZXInID8gc3RlcE5hbWUgOiB0aGlzLmdldFN0ZXBCeU5hbWUoc3RlcE5hbWUpLmluZGV4O1xuICAgIHRoaXMuc3RlcHNbaW5kZXhdID0gey4uLnN0ZXB9O1xuICB9XG4gIHB1YmxpYyBnZXRTdGVwQnlOYW1lKHN0ZXBOYW1lOiBzdHJpbmcpOiBUb3VyU3RlcEkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuc3RlcE5hbWUgPT09IHN0ZXBOYW1lKVswXTtcbiAgfVxuICBwdWJsaWMgZ2V0U3RlcEJ5SW5kZXgoaW5kZXggPSAwKTogVG91clN0ZXBJIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc1tpbmRleF07XG4gIH1cbiAgcHVibGljIGdldExhc3RTdGVwKCk6IFRvdXJTdGVwSSB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeS5sZW5ndGgpIHJldHVybiB0aGlzLnN0ZXBzW3RoaXMuaGlzdG9yeS5zbGljZSgtMSlbMF1dO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHB1YmxpYyBnZXRTdGVwc1N0cmVhbSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzU3RyZWFtJDtcbiAgfVxuICBwdWJsaWMgaXNSb3V0ZUNoYW5nZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVDaGFuZ2VkO1xuICB9XG4gIHByaXZhdGUgc2V0VG91clN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnRvdXJTdGFydGVkID0gc3RhdHVzO1xuICB9XG4gIHB1YmxpYyBnZXRUb3VyU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvdXJTdGFydGVkO1xuICB9XG4gIHB1YmxpYyBzdGFydFRvdXIodG91cjogVG91ckkpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPcHRpb25zKHRvdXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsYWNlbWVudCBvcHRpb24gb2YgdGhlIG5nMy10b3VyIG9yIG9uZSBvZiBpdCBzdGVwIGlzIGludmFsaWQnKTtcbiAgICB9XG4gICAgY29uc3Qge3RvdXJCcmVhaywgdG91clN0YXJ0LCB0b3VyRW5kLCBuZXh0LCBwcmV2fSA9IHsuLi5Ub3VyRGVmYXVsdEV2ZW50cywgLi4udG91ci50b3VyRXZlbnRzfTtcbiAgICB0b3VyU3RhcnQoe3RvdXJFdmVudDogJ1RvdXIgc3RhcnQnLCB0b3VyfSk7XG4gICAgdGhpcy50b3VyQnJlYWsgPSB0b3VyQnJlYWs7XG4gICAgdGhpcy50b3VyRW5kID0gdG91ckVuZDtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5zZXRUb3VyU3RhdHVzKHRydWUpO1xuICAgIHRoaXMuc2V0U3RlcHModG91cik7XG4gICAgdGhpcy5pbml0U3RlcCgwKTtcbiAgfVxuICBwdWJsaWMgc3RvcFRvdXIoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExhc3RTdGVwKCkuaW5kZXg7XG4gICAgY29uc3QgbGF0ZXN0U3RlcEluZGV4ID0gdGhpcy5zdGVwcy5sZW5ndGggLSAxO1xuICAgIGlmICggaW5kZXggPCBsYXRlc3RTdGVwSW5kZXgpIHtcbiAgICAgIHRoaXMudG91ckJyZWFrKHt0b3VyRXZlbnQ6ICdUb3VyIGJyZWFrJywgc3RlcDogaW5kZXgsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIH0gZWxzZSBpZiAobGF0ZXN0U3RlcEluZGV4ID09PSBpbmRleCkge1xuICAgICAgdGhpcy50b3VyRW5kKHt0b3VyRXZlbnQ6ICdUb3VyIGVuZCcsIHN0ZXA6IGluZGV4LCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB9XG4gICAgdGhpcy5zZXRUb3VyU3RhdHVzKGZhbHNlKTtcbiAgICB0aGlzLnN0ZXBzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zdGVwc1N0cmVhbSQubmV4dChudWxsKTtcbiAgICB0aGlzLmhpc3RvcnkubGVuZ3RoID0gMDtcbiAgICB0aGlzLnRhcmdldFNlcnZpY2Uuc2V0VGFyZ2V0U3ViamVjdChudWxsKTtcbiAgfVxuICBwdWJsaWMgbmV4dFN0ZXAoKSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0TGFzdFN0ZXAoKS5pbmRleCArIDE7XG4gICAgdGhpcy5uZXh0KHt0b3VyRXZlbnQ6ICdJbml0IG5leHQnLCBzdGVwLCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB0aGlzLmluaXRTdGVwKHN0ZXApO1xuICB9XG4gIHB1YmxpYyBwcmV2U3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRMYXN0U3RlcCgpLmluZGV4IC0gMTtcbiAgICB0aGlzLnByZXYoe3RvdXJFdmVudDogJ0luaXQgcHJldicsIHN0ZXAsIGhpc3Rvcnk6IHRoaXMuaGlzdG9yeX0pO1xuICAgIHRoaXMuaW5pdFN0ZXAoc3RlcCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmczLXRvdXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdG91ci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUV4RCwyQkFNQzs7O0lBTEMsc0JBQW1COztJQUNuQiw0QkFBMkI7O0lBQzNCLDRCQUFzQjs7SUFDdEIsMkJBQXlCOztJQUN6Qix5QkFBcUI7Ozs7O0FBR3ZCLCtCQVNDOzs7SUFSQyw2QkFBaUI7O0lBQ2pCLDBCQUFlOztJQUNmLDBCQUFlOztJQUNmLDBCQUEyQzs7SUFDM0MsZ0NBQWlEOztJQUNqRCw0QkFBdUI7O0lBQ3ZCLDZCQUFxQjs7Ozs7O0FBSXZCLCtCQUtDOzs7SUFKQyx5QkFBa0M7O0lBQ2xDLHlCQUFrQzs7SUFDbEMseUJBQWtDOzs7O0FBSXBDLE1BQU0sS0FBTyxlQUFlLEdBQUc7SUFDN0IsSUFBSSxFQUFFO1FBQ0wsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO0tBQ2Y7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE1BQU07S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtRQUNmLE9BQU8sRUFBRSxNQUFNO1FBQ2YsT0FBTyxFQUFFLE9BQU87S0FDakI7Q0FDRjs7OztBQUVELGtDQXVCQzs7O0lBdEJDLGlDQUFtQjs7SUFDbkIsc0NBQXlCOztJQUN6QixtQ0FBc0I7O0lBQ3RCLHNDQUF5Qjs7SUFDekIsa0NBQW9COztJQUNwQiwrQkFBaUI7O0lBQ2pCLGlDQUFtQjs7SUFDbkIscUNBQXdCOztJQUN4QixnQ0FBbUI7O0lBQ25CLG9DQUF1Qjs7SUFDdkIsb0NBQXVCOztJQUN2QixnQ0FBbUI7O0lBQ25CLDZCQUFnQjs7SUFDaEIsZ0NBQWtCOztJQUNsQixpQ0FBbUI7O0lBQ25CLGdDQUFrQjs7SUFDbEIsaUNBQW1COztJQUNuQiw4Q0FBaUM7O0lBQ2pDLHdDQUE0Qjs7SUFDNUIsNkJBQWU7O0lBQ2YsaUNBQW9COztJQUNwQiwyQ0FBOEI7OztBQUdoQyxNQUFNLEtBQU8sY0FBYyxHQUFpQjtJQUMxQyxTQUFTLEVBQUUsRUFBRTtJQUNiLHNCQUFzQixFQUFFLElBQUk7SUFDNUIsY0FBYyxFQUFFLEtBQUs7SUFDckIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsY0FBYyxFQUFFLEtBQUs7SUFDckIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsaUJBQWlCO0lBQzdCLE9BQU8sRUFBRSxFQUFFO0lBQ1gsU0FBUyxFQUFFLE1BQU07SUFDakIsYUFBYSxFQUFFLElBQUk7SUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckIsS0FBSyxFQUFFLElBQUk7SUFDWCxZQUFZLEVBQUUsSUFBSTtJQUNsQixLQUFLLEVBQUUsS0FBSztJQUNaLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLE9BQU87SUFDakIsU0FBUyxFQUFFLE9BQU87SUFDbEIsUUFBUSxFQUFFLE9BQU87SUFDakIsU0FBUyxFQUFFLE9BQU87SUFDbEIsU0FBUyxFQUFFLElBQUk7SUFDZixtQkFBbUIsRUFBRSxLQUFLO0NBQzNCO0FBRUQ7SUF1QkUscUJBQVksT0FBc0M7UUFBdEMsd0JBQUEsRUFBQSx3QkFBc0M7UUFFOUMsSUFBQSw2QkFBUyxFQUNULHVEQUFzQixFQUN0Qix1Q0FBYyxFQUNkLGlDQUFXLEVBQ1gsdUNBQWMsRUFDZCxtQ0FBWSxFQUNaLDJCQUFRLEVBQ1IsK0JBQVUsRUFDVix5QkFBTyxFQUNQLDZCQUFTLEVBQ1QscUNBQWEsRUFDYiwyQ0FBZ0IsRUFDaEIsNkJBQVMsRUFDVCwyQkFBUSxFQUNSLDZCQUFTLEVBQ1QsMkJBQVEsRUFDUixxQkFBSyxFQUNMLG1DQUFZLEVBQ1oscUJBQUssRUFDTCwyQkFBUSxFQUNSLDZCQUFTLEVBQ1QsaURBQW1CO1FBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFBO0lBQ2hELENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUF2RUQsSUF1RUM7Ozs7SUF0RUMsZ0NBQW1COztJQUNuQixxQ0FBeUI7O0lBQ3pCLGtDQUFzQjs7SUFDdEIscUNBQXlCOztJQUN6QixpQ0FBb0I7O0lBQ3BCLDhCQUFpQjs7SUFDakIsZ0NBQWtCOztJQUNsQixvQ0FBd0I7O0lBQ3hCLCtCQUFtQjs7SUFDbkIsbUNBQXVCOztJQUN2QixtQ0FBdUI7O0lBQ3ZCLCtCQUFtQjs7SUFDbkIsNkNBQWlDOztJQUNqQyx1Q0FBNEI7O0lBQzVCLDRCQUFlOztJQUNmLDRCQUFnQjs7SUFDaEIsK0JBQWtCOztJQUNsQixnQ0FBbUI7O0lBQ25CLCtCQUFrQjs7SUFDbEIsZ0NBQW1COztJQUNuQixnQ0FBb0I7O0lBQ3BCLDBDQUE4Qjs7Ozs7QUEwRGhDLGlDQU1DOzs7SUFMQyxnQ0FBc0I7O0lBQ3RCLDhCQUFvQjs7SUFDcEIsZ0NBQXNCOztJQUN0QiwyQkFBaUI7O0lBQ2pCLDJCQUFpQjs7O0FBR25CLE1BQU0sS0FBTyxnQkFBZ0I7Ozs7QUFBYyxVQUFDLEtBQUssSUFBTSxDQUFDLENBQUE7O0FBQ3hELE1BQU0sS0FBTyxpQkFBaUIsR0FBRztJQUMvQixTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsU0FBUyxFQUFFLGdCQUFnQjtJQUMzQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLElBQUksRUFBRSxnQkFBZ0I7Q0FDdkI7O0FBR0Q7SUFlRSxxQkFDVSxNQUFjLEVBQ0wsYUFBZ0M7SUFDakQsV0FBVztJQUNVLFVBQWM7UUFIM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNMLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQWQzQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzlDLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixZQUFPLEdBQWlCLEVBQUUsQ0FBQzs7UUFFM0IsY0FBUyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQ3BDLFNBQUksR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDOUIsU0FBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQVFwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7U0FDaEM7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO1NBQ2Y7SUFDSCxDQUFDOzs7Ozs7SUFFTyxxQ0FBZTs7Ozs7SUFBdkIsVUFBd0IsSUFBVzs7WUFDM0IsT0FBTyxHQUFHLDJGQUEyRjs7WUFDdkcsT0FBTyxHQUFHLElBQUk7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxJQUFlO1lBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDMUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoRDtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQ2xELE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7Ozs7SUFDTyw4QkFBUTs7Ozs7SUFBaEIsVUFBaUIsSUFBVztRQUE1QixpQkFvQkM7O1lBbkJPLE9BQU8sR0FBRyxJQUFJLFdBQVcsc0JBQUssY0FBYyxFQUFLLElBQUksQ0FBQyxPQUFPLEVBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMxRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7Ozs7UUFBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7Z0JBQ3RELENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckQ7WUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUN4QztZQUNELENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNCQUFLLE9BQU8sRUFBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0QsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGVBQWUsQ0FBQyxDQUFBO1lBQ3ZFLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDOzs7Ozs7SUFFTyxxQ0FBZTs7Ozs7SUFBdkIsVUFBd0IsR0FBUTtRQUFoQyxpQkFxQkM7O1lBcEJLLE1BQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7YUFBTTs7Z0JBQ0MsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDOztnQkFDL0IsV0FBVyxHQUFHLFlBQVksQ0FBQyxNQUFNOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFqQyxDQUFpQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksV0FBVyxFQUFFO2dCQUNmLE1BQU0sR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7YUFDMUI7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQjtTQUNGO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQWlDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFHLENBQUMsQ0FBQTtRQUNyRSxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDOzs7Ozs7SUFFTyx5Q0FBbUI7Ozs7O0lBQTNCLFVBQTRCLElBQWU7UUFBM0MsaUJBMkJDOztZQTFCTyxRQUFRLEdBQUcsRUFBRTtRQUNuQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7O29CQUN6QixNQUFNLFNBQVE7Z0JBQ2xCLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO29CQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNyQjtxQkFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0UsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7aUJBQy9CO3FCQUFNOzt3QkFDQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O3dCQUN0QyxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU07Ozs7b0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFqQyxDQUFpQyxFQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRixJQUFJLFdBQVcsRUFBRTt3QkFDZixNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFBO3FCQUNqQzt5QkFBTTt3QkFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTt3QkFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztxQkFDekI7eUJBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFpQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBRyxDQUFDLENBQUM7d0JBQ3ZFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUE7cUJBQ3pCO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Ozs7OztJQUNPLDhCQUFROzs7OztJQUFoQixVQUFpQixJQUFZOztZQUNyQixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDOztZQUN2RSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7O0lBRU0sZ0NBQVU7OztJQUFqQjtRQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOzs7OztJQUNNLGdDQUFVOzs7O0lBQWpCLFVBQWtCLE9BQXFCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLHdCQUFPLElBQUksQ0FBQyxPQUFPLEVBQUssT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7Ozs7O0lBQ00sK0JBQVM7Ozs7O0lBQWhCLFVBQWlCLFFBQXlCLEVBQUUsSUFBZTs7WUFDbkQsS0FBSyxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7UUFDMUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsd0JBQU8sSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFDTSxtQ0FBYTs7OztJQUFwQixVQUFxQixRQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTs7OztRQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQTFCLENBQTBCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDOzs7OztJQUNNLG9DQUFjOzs7O0lBQXJCLFVBQXNCLEtBQVM7UUFBVCxzQkFBQSxFQUFBLFNBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Ozs7SUFDTSxpQ0FBVzs7O0lBQWxCO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7OztJQUNNLG9DQUFjOzs7SUFBckI7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzs7OztJQUNNLG9DQUFjOzs7SUFBckI7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzs7Ozs7O0lBQ08sbUNBQWE7Ozs7O0lBQXJCLFVBQXNCLE1BQWU7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQzs7OztJQUNNLG1DQUFhOzs7SUFBcEI7UUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFDTSwrQkFBUzs7OztJQUFoQixVQUFpQixJQUFXO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQztTQUNsRjtRQUNLLElBQUEsNkRBQXdGLEVBQXZGLHdCQUFTLEVBQUUsd0JBQVMsRUFBRSxvQkFBTyxFQUFFLGNBQUksRUFBRSxjQUFrRDtRQUM5RixTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksTUFBQSxFQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDOzs7O0lBQ00sOEJBQVE7OztJQUFmOztZQUNRLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSzs7WUFDaEMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDN0MsSUFBSyxLQUFLLEdBQUcsZUFBZSxFQUFFO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1NBQy9FO2FBQU0sSUFBSSxlQUFlLEtBQUssS0FBSyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7OztJQUNNLDhCQUFROzs7SUFBZjs7WUFDUSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksTUFBQSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Ozs7SUFDTSw4QkFBUTs7O0lBQWY7O1lBQ1EsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLE1BQUEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDOztnQkFyTUYsVUFBVTs7OztnQkFwTUgsTUFBTTtnQkFFTixpQkFBaUI7Z0RBcU5wQixNQUFNLFNBQUMsV0FBVzs7SUFtTHZCLGtCQUFDO0NBQUEsQUF0TUQsSUFzTUM7U0FyTVksV0FBVzs7Ozs7O0lBQ3RCLDRCQUEyQjs7Ozs7SUFDM0Isa0NBQTRCOzs7OztJQUM1QixtQ0FBc0Q7Ozs7O0lBQ3RELDhCQUFxQjs7Ozs7SUFDckIsbUNBQTZCOzs7OztJQUM3Qiw4QkFBbUM7Ozs7O0lBRW5DLGdDQUFnRDs7Ozs7SUFDaEQsOEJBQTRDOzs7OztJQUM1QywyQkFBc0M7Ozs7O0lBQ3RDLDJCQUFzQzs7Ozs7SUFDdEMsZ0NBQTJCOzs7OztJQUMzQiwyQkFBcUI7Ozs7O0lBRW5CLDZCQUFzQjs7Ozs7SUFDdEIsb0NBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBpc0Rldk1vZGUsIFBMQVRGT1JNX0lELCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7U3RlcFRhcmdldFNlcnZpY2V9IGZyb20gJy4vc3RlcC10YXJnZXQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91ckkge1xuICBzdGVwczogVG91clN0ZXBJW107XG4gIHRvdXJPcHRpb25zPzogU3RlcE9wdGlvbnNJO1xuICB3aXRob3V0TG9ncz86IGJvb2xlYW47XG4gIHRvdXJFdmVudHM/OiBUb3VyRXZlbnRzSTtcbiAgY3RybEJ0bnM/OiBDdHJsQnRuc0k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91clN0ZXBJIHtcbiAgc3RlcE5hbWU6IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0aXRsZT86IHN0cmluZyB8IHtbcHJvcE5hbWU6IHN0cmluZ106IGFueX07XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwge1twcm9wTmFtZTogc3RyaW5nXTogYW55fTtcbiAgb3B0aW9ucz86IFN0ZXBPcHRpb25zSTtcbiAgY3RybEJ0bnM/OiBDdHJsQnRuc0k7XG4gIFtwcm9wTmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN0cmxCdG5zSSB7XG4gIHByZXY/OiB7W3Byb3BzTmFtZTogc3RyaW5nXTogYW55fTtcbiAgbmV4dD86IHtbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnl9O1xuICBkb25lPzoge1twcm9wc05hbWU6IHN0cmluZ106IGFueX07XG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdHJsQnRucyA9IHtcbiAgZG9uZToge1xuICAgJ2VuLUVOJzogJ2RvbmUnLFxuICAgJ3J1LVJVJzogJ9C30LDQutGAJyxcbiAgICdmci1GUic6ICdmaW5pJyxcbiAgfSxcbiAgcHJldjoge1xuICAgICdlbi1FTic6ICdwcmV2JyxcbiAgICAncnUtUlUnOiAn0L/RgNC10LQnLFxuICAgICdmci1GUic6ICdwcsOpYydcbiAgfSxcbiAgbmV4dDoge1xuICAgICdlbi1FTic6ICduZXh0JyxcbiAgICAncnUtUlUnOiAn0YHQu9C10LQnLFxuICAgICdmci1GUic6ICdwcm9jaCcsXG4gIH0sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE9wdGlvbnNJIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB3aXRob3V0Q291bnRlcj86IGJvb2xlYW47XG4gIHdpdGhvdXRQcmV2PzogYm9vbGVhbjtcbiAgY3VzdG9tVGVtcGxhdGU/OiBib29sZWFuO1xuICB0aGVtZUNvbG9yPzogc3RyaW5nO1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIGFycm93VG9UYXJnZXQ/OiBib29sZWFuO1xuICBiYWNrZHJvcD86IGJvb2xlYW47XG4gIGFuaW1hdGVkU3RlcD86IGJvb2xlYW47XG4gIHNtb290aFNjcm9sbD86IGJvb2xlYW47XG4gIHNjcm9sbFRvPzogYm9vbGVhbjtcbiAgZml4ZWQ/OiBib29sZWFuO1xuICBtaW5XaWR0aD86IHN0cmluZzsgLy8gU3RlcCBtaW4td2lkdGhcbiAgbWluSGVpZ2h0Pzogc3RyaW5nOyAvLyBTdGVwIG1pbi1oZWlnaHRcbiAgbWF4V2lkdGg/OiBzdHJpbmc7IC8vIFN0ZXAgbWF4LXdpZHRoXG4gIG1heEhlaWdodD86IHN0cmluZzsgLy8gU3RlcCBtYXgtaGVpZ2h0XG4gIGNvbnRpbnVlSWZUYXJnZXRBYnNlbnQ/OiBib29sZWFuOyAvLyBpbml0IG5leHQgc3RlcCBpZiB0YXJnZXQgaXMgbm90IGZvdW5kIGZvciBjdXJyZW50IG9uZVxuICBzdGVwVGFyZ2V0UmVzaXplPzogbnVtYmVyW107IC8vIGNoYW5nZSBzaXplIG9mIGEgJ3dpbmRvdycgZm9yIHN0ZXAgdGFyZ2V0XG4gIGRlbGF5PzogbnVtYmVyOyAvLyBmb3IgdGhlIGNhc2Ugb2YgdGhlIGxhemlseSBsb2FkZWQgb3IgYW5pbWF0ZWQgcm91dGVzXG4gIGF1dG9mb2N1cz86IGJvb2xlYW47XG4gIGNsb3NlT25DbGlja091dHNpZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnM6IFN0ZXBPcHRpb25zSSA9IHtcbiAgY2xhc3NOYW1lOiAnJyxcbiAgY29udGludWVJZlRhcmdldEFic2VudDogdHJ1ZSxcbiAgd2l0aG91dENvdW50ZXI6IGZhbHNlLFxuICB3aXRob3V0UHJldjogZmFsc2UsXG4gIGN1c3RvbVRlbXBsYXRlOiBmYWxzZSxcbiAgc21vb3RoU2Nyb2xsOiBmYWxzZSxcbiAgc2Nyb2xsVG86IHRydWUsXG4gIHRoZW1lQ29sb3I6ICdyZ2IoMjAsIDYwLCA2MCknLFxuICBvcGFjaXR5OiAuNixcbiAgcGxhY2VtZW50OiAnZG93bicsXG4gIGFycm93VG9UYXJnZXQ6IHRydWUsXG4gIHN0ZXBUYXJnZXRSZXNpemU6IFswXSxcbiAgZGVsYXk6IDEwMDAsXG4gIGFuaW1hdGVkU3RlcDogdHJ1ZSxcbiAgZml4ZWQ6IGZhbHNlLFxuICBiYWNrZHJvcDogdHJ1ZSxcbiAgbWluV2lkdGg6ICcyNTBweCcsXG4gIG1pbkhlaWdodDogJzE1MHB4JyxcbiAgbWF4V2lkdGg6ICc0MDBweCcsXG4gIG1heEhlaWdodDogJzYwMHB4JyxcbiAgYXV0b2ZvY3VzOiB0cnVlLFxuICBjbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTdGVwT3B0aW9ucyBpbXBsZW1lbnRzIFN0ZXBPcHRpb25zSSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgd2l0aG91dENvdW50ZXI/OiBib29sZWFuO1xuICB3aXRob3V0UHJldj86IGJvb2xlYW47XG4gIGN1c3RvbVRlbXBsYXRlPzogYm9vbGVhbjtcbiAgdGhlbWVDb2xvcj86IHN0cmluZztcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgcGxhY2VtZW50OiBzdHJpbmc7XG4gIGFycm93VG9UYXJnZXQ/OiBib29sZWFuO1xuICBiYWNrZHJvcD86IGJvb2xlYW47XG4gIGFuaW1hdGVkU3RlcD86IGJvb2xlYW47XG4gIHNtb290aFNjcm9sbD86IGJvb2xlYW47XG4gIHNjcm9sbFRvPzogYm9vbGVhbjtcbiAgY29udGludWVJZlRhcmdldEFic2VudD86IGJvb2xlYW47XG4gIHN0ZXBUYXJnZXRSZXNpemU/OiBudW1iZXJbXTtcbiAgZGVsYXk/OiBudW1iZXI7XG4gIGZpeGVkPzogYm9vbGVhbjtcbiAgbWluV2lkdGg/OiBzdHJpbmc7XG4gIG1pbkhlaWdodD86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XG4gIG1heEhlaWdodD86IHN0cmluZztcbiAgYXV0b2ZvY3VzPzogYm9vbGVhbjtcbiAgY2xvc2VPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0ZXBPcHRpb25zSSA9IGRlZmF1bHRPcHRpb25zKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGludWVJZlRhcmdldEFic2VudCxcbiAgICAgIHdpdGhvdXRDb3VudGVyLFxuICAgICAgd2l0aG91dFByZXYsXG4gICAgICBjdXN0b21UZW1wbGF0ZSxcbiAgICAgIHNtb290aFNjcm9sbCxcbiAgICAgIHNjcm9sbFRvLFxuICAgICAgdGhlbWVDb2xvcixcbiAgICAgIG9wYWNpdHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBhcnJvd1RvVGFyZ2V0LFxuICAgICAgc3RlcFRhcmdldFJlc2l6ZSxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIG1heFdpZHRoLFxuICAgICAgbWluSGVpZ2h0LFxuICAgICAgbWluV2lkdGgsXG4gICAgICBkZWxheSxcbiAgICAgIGFuaW1hdGVkU3RlcCxcbiAgICAgIGZpeGVkLFxuICAgICAgYmFja2Ryb3AsXG4gICAgICBhdXRvZm9jdXMsXG4gICAgICBjbG9zZU9uQ2xpY2tPdXRzaWRlLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgIHRoaXMucGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMuYXJyb3dUb1RhcmdldCA9IGFycm93VG9UYXJnZXQ7XG4gICAgdGhpcy50aGVtZUNvbG9yID0gdGhlbWVDb2xvcjtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMuYmFja2Ryb3AgPSBiYWNrZHJvcDtcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlID0gY3VzdG9tVGVtcGxhdGU7XG4gICAgdGhpcy53aXRob3V0Q291bnRlciA9IHdpdGhvdXRDb3VudGVyO1xuICAgIHRoaXMud2l0aG91dFByZXYgPSB3aXRob3V0UHJldjtcbiAgICB0aGlzLmNvbnRpbnVlSWZUYXJnZXRBYnNlbnQgPSBjb250aW51ZUlmVGFyZ2V0QWJzZW50O1xuICAgIHRoaXMuc3RlcFRhcmdldFJlc2l6ZSA9IHN0ZXBUYXJnZXRSZXNpemU7XG4gICAgdGhpcy5tYXhIZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgdGhpcy5tYXhXaWR0aCA9IG1heFdpZHRoO1xuICAgIHRoaXMubWluSGVpZ2h0ID0gbWluSGVpZ2h0O1xuICAgIHRoaXMubWluV2lkdGggPSBtaW5XaWR0aDtcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5hbmltYXRlZFN0ZXAgPSBhbmltYXRlZFN0ZXA7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGwgPSBzbW9vdGhTY3JvbGw7XG4gICAgdGhpcy5zY3JvbGxUbyA9IHNjcm9sbFRvO1xuICAgIHRoaXMuZml4ZWQgPSBmaXhlZDtcbiAgICB0aGlzLmF1dG9mb2N1cyA9IGF1dG9mb2N1cztcbiAgICB0aGlzLmNsb3NlT25DbGlja091dHNpZGUgPSBjbG9zZU9uQ2xpY2tPdXRzaWRlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVG91ckV2ZW50ID0gIChwcm9wczoge1xuICB0b3VyRXZlbnQ6IHN0cmluZyxcbiAgc3RlcD86IG51bWJlciB8IHN0cmluZyxcbiAgaGlzdG9yeT86IG51bWJlcltdLFxuICB0b3VyPzogVG91ckksXG59KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJFdmVudHNJIHtcbiAgdG91clN0YXJ0PzogVG91ckV2ZW50O1xuICB0b3VyRW5kPzogVG91ckV2ZW50O1xuICB0b3VyQnJlYWs/OiBUb3VyRXZlbnQ7XG4gIG5leHQ/OiBUb3VyRXZlbnQ7XG4gIHByZXY/OiBUb3VyRXZlbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VG91ckV2ZW50OiBUb3VyRXZlbnQgPSAocHJvcHMpID0+IHt9O1xuZXhwb3J0IGNvbnN0IFRvdXJEZWZhdWx0RXZlbnRzID0ge1xuICB0b3VyU3RhcnQ6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIHRvdXJFbmQ6IGRlZmF1bHRUb3VyRXZlbnQsXG4gIHRvdXJCcmVhazogZGVmYXVsdFRvdXJFdmVudCxcbiAgbmV4dDogZGVmYXVsdFRvdXJFdmVudCxcbiAgcHJldjogZGVmYXVsdFRvdXJFdmVudCxcbn07XG5cbiAvLyBAZHluYW1pY1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvdXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGVwczogVG91clN0ZXBJW107XG4gIHByaXZhdGUgdG91clN0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdGVwc1N0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgaGlzdG9yeSA9IFtdO1xuICBwcml2YXRlIHJvdXRlQ2hhbmdlZCA9IGZhbHNlO1xuICBwcml2YXRlIHByZXNldHM6IFN0ZXBPcHRpb25zSSA9IHt9O1xuIC8vIHByaXZhdGUgdG91clN0YXJ0ID0gVG91ckRlZmF1bHRFdmVudHMudG91clN0YXJ0O1xuICBwcml2YXRlIHRvdXJCcmVhayA9IFRvdXJEZWZhdWx0RXZlbnRzLnRvdXJCcmVhaztcbiAgcHJpdmF0ZSB0b3VyRW5kID0gVG91ckRlZmF1bHRFdmVudHMudG91ckVuZDtcbiAgcHJpdmF0ZSBuZXh0ID0gVG91ckRlZmF1bHRFdmVudHMubmV4dDtcbiAgcHJpdmF0ZSBwcmV2ID0gVG91ckRlZmF1bHRFdmVudHMucHJldjtcbiAgcHJpdmF0ZSBpc0Jyb3dzZXI6IGJvb2xlYW47XG4gIHByaXZhdGUgbGFuZzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0U2VydmljZTogU3RlcFRhcmdldFNlcnZpY2UsXG4gICAgLy8gQGR5bmFtaWNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiB7fSkge1xuICAgIHRoaXMubmV4dFN0ZXAgPSB0aGlzLm5leHRTdGVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5wcmV2U3RlcCA9IHRoaXMucHJldlN0ZXAuYmluZCh0aGlzKTtcbiAgICB0aGlzLnN0b3BUb3VyID0gdGhpcy5zdG9wVG91ci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCk7XG4gICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLmxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFuZyA9ICcnXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnModG91cjogVG91ckkpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdFeHByID0gL150b3AkfF5kb3duJHxebGVmdCR8XnJpZ2h0JHxeY2VudGVyJHxecmlnaHQtY2VudGVyJHxebGVmdC1jZW50ZXIkfF5yaWdodC10b3AkfF5sZWZ0LXRvcCQvaTtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgdG91ci5zdGVwcy5mb3JFYWNoKChzdGVwOiBUb3VyU3RlcEkpID0+IHtcbiAgICAgIGlmIChzdGVwLm9wdGlvbnMgJiYgc3RlcC5vcHRpb25zLnBsYWNlbWVudCkge1xuICAgICAgICBpc1ZhbGlkID0gcmVnRXhwci50ZXN0KHN0ZXAub3B0aW9ucy5wbGFjZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0b3VyLnRvdXJPcHRpb25zICYmIHRvdXIudG91ck9wdGlvbnMucGxhY2VtZW50KSB7XG4gICAgICBpc1ZhbGlkID0gcmVnRXhwci50ZXN0KHRvdXIudG91ck9wdGlvbnMucGxhY2VtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cbiAgcHJpdmF0ZSBzZXRTdGVwcyh0b3VyOiBUb3VySSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgU3RlcE9wdGlvbnMoey4uLmRlZmF1bHRPcHRpb25zLCAuLi50aGlzLnByZXNldHMsIC4uLnRvdXIudG91ck9wdGlvbnN9KTtcbiAgICB0aGlzLnN0ZXBzID0gdG91ci5zdGVwcy5tYXAoKHgsIGkpID0+IHtcbiAgICAgIHguaW5kZXggPSBpO1xuICAgICAgaWYgKHguZGVzY3JpcHRpb24gJiYgdHlwZW9mIHguZGVzY3JpcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHguZGVzY3JpcHRpb24gPSB0aGlzLmRlZmluZUxvY2FsTmFtZSh4LmRlc2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICAgIGlmICh4LnRpdGxlICYmIHR5cGVvZiB4LnRpdGxlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB4LnRpdGxlID0gdGhpcy5kZWZpbmVMb2NhbE5hbWUoeC50aXRsZSlcbiAgICAgIH1cbiAgICAgIHgub3B0aW9ucyA9IHgub3B0aW9ucyA/IHsuLi5vcHRpb25zLCAuLi54Lm9wdGlvbnN9IDogb3B0aW9ucztcbiAgICAgIHgudG90YWwgPSB0b3VyLnN0ZXBzLmxlbmd0aDtcbiAgICAgIHguY3RybEJ0bnMgPSB0aGlzLmRlZmluZUxvY2FsQnRuTmFtZXModG91ci5jdHJsQnRucyB8fCBkZWZhdWx0Q3RybEJ0bnMpXG4gICAgICByZXR1cm4geDtcbiAgICB9KTtcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdtb2RlOiAnLCBpc0Rldk1vZGUoKSlcbiAgICAgIGNvbnNvbGUubG9nKCduZzMtdG91ciBpcyBpbml0aWF0ZWQgd2l0aCBzdGVwczonKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuc3RlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVmaW5lTG9jYWxOYW1lKG9iajogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHRoaXMubGFuZykpIHtcbiAgICAgIHJlc3VsdCA9IG9ialt0aGlzLmxhbmddO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZXRMYW5ndWFnZXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgY29uc3QgcmFsYXRlZExhbmcgPSBzZXRMYW5ndWFnZXMuZmlsdGVyKGwgPT4gbC5pbmNsdWRlcyh0aGlzLmxhbmcuc2xpY2UoMCwgMikpKVswXTtcbiAgICAgIGlmIChyYWxhdGVkTGFuZykge1xuICAgICAgICByZXN1bHQgPSBvYmpbcmFsYXRlZExhbmddXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBvYmpbc2V0TGFuZ3VhZ2VzWzBdXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBUb3VyIGNvbmZpZ3VyYXRpb24gZXJyb3Igd2l0aCAke0pTT04uc3RyaW5naWZ5KG9iail9YClcbiAgICByZXR1cm4gJ0Vycm9yJ1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZpbmVMb2NhbEJ0bk5hbWVzKGJ0bnM6IEN0cmxCdG5zSSk6IEN0cmxCdG5zSSB7XG4gICAgY29uc3QgYnRuQ3RybHMgPSB7fTtcbiAgICBmb3IgKGxldCBwcm9wIGluIGJ0bnMpIHtcbiAgICAgIGlmIChidG5zLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcbiAgICAgICAgaWYgKHR5cGVvZiBidG5zW3Byb3BdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJlc3VsdCA9IGJ0bnNbcHJvcF07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGJ0bnNbcHJvcF0gPT09ICdvYmplY3QnICYmIGJ0bnNbcHJvcF1bdGhpcy5sYW5nXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXN1bHQgPSBidG5zW3Byb3BdW3RoaXMubGFuZ11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzZXRMYW5ndWFnZXMgPSBPYmplY3Qua2V5cyhidG5zW3Byb3BdKTtcbiAgICAgICAgICBjb25zdCByYWxhdGVkTGFuZyA9IHNldExhbmd1YWdlcy5maWx0ZXIobCA9PiBsLmluY2x1ZGVzKHRoaXMubGFuZy5zbGljZSgwLCAyKSkpWzBdO1xuICAgICAgICAgIGlmIChyYWxhdGVkTGFuZykge1xuICAgICAgICAgICAgcmVzdWx0ID0gYnRuc1twcm9wXVtyYWxhdGVkTGFuZ11cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gYnRuc1twcm9wXVtzZXRMYW5ndWFnZXNbMF1dO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGJ0bkN0cmxzW3Byb3BdID0gcmVzdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRvdXIgY29uZmlndXJhdGlvbiBlcnJvciB3aXRoICR7SlNPTi5zdHJpbmdpZnkoYnRucyl9YCk7XG4gICAgICAgICAgICBidG5DdHJsc1twcm9wXSA9ICdFcnJvcidcbiAgICAgICAgICB9ICBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYnRuQ3RybHM7XG4gIH1cbiAgcHJpdmF0ZSBpbml0U3RlcChzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1N0ZXAgPSB0aGlzLmhpc3RvcnkubGVuZ3RoID8gdGhpcy5nZXRMYXN0U3RlcCgpIDoge3JvdXRlOiBudWxsfTtcbiAgICBjb25zdCBuZXd0U3RlcCA9IHRoaXMuc3RlcHNbc3RlcF07XG4gICAgdGhpcy5yb3V0ZUNoYW5nZWQgPSBwcmV2aW91c1N0ZXAucm91dGUgIT09IG5ld3RTdGVwLnJvdXRlO1xuICAgIHRoaXMuaGlzdG9yeS5wdXNoKHN0ZXApO1xuICAgIGlmIChuZXd0U3RlcC5yb3V0ZSAmJiB0aGlzLnJvdXRlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25ld3RTdGVwLnJvdXRlXSk7XG4gICAgfVxuICAgIHRoaXMuc3RlcHNTdHJlYW0kLm5leHQobmV3dFN0ZXAuc3RlcE5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldEhpc3RvcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeTtcbiAgfVxuICBwdWJsaWMgc2V0UHJlc2V0cyhwcmVzZXRzOiBTdGVwT3B0aW9uc0kpOiB2b2lkIHtcbiAgICB0aGlzLnByZXNldHMgPSB7Li4udGhpcy5wcmVzZXRzLCAuLi5wcmVzZXRzfTtcbiAgfVxuICBwdWJsaWMgcmVzZXRTdGVwKHN0ZXBOYW1lOiBzdHJpbmcgfCBudW1iZXIsIHN0ZXA6IFRvdXJTdGVwSSkge1xuICAgIGNvbnN0IGluZGV4ID0gdHlwZW9mIHN0ZXBOYW1lID09PSAnbnVtYmVyJyA/IHN0ZXBOYW1lIDogdGhpcy5nZXRTdGVwQnlOYW1lKHN0ZXBOYW1lKS5pbmRleDtcbiAgICB0aGlzLnN0ZXBzW2luZGV4XSA9IHsuLi5zdGVwfTtcbiAgfVxuICBwdWJsaWMgZ2V0U3RlcEJ5TmFtZShzdGVwTmFtZTogc3RyaW5nKTogVG91clN0ZXBJIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoc3RlcCA9PiBzdGVwLnN0ZXBOYW1lID09PSBzdGVwTmFtZSlbMF07XG4gIH1cbiAgcHVibGljIGdldFN0ZXBCeUluZGV4KGluZGV4ID0gMCk6IFRvdXJTdGVwSSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNbaW5kZXhdO1xuICB9XG4gIHB1YmxpYyBnZXRMYXN0U3RlcCgpOiBUb3VyU3RlcEkge1xuICAgIGlmICh0aGlzLmhpc3RvcnkubGVuZ3RoKSByZXR1cm4gdGhpcy5zdGVwc1t0aGlzLmhpc3Rvcnkuc2xpY2UoLTEpWzBdXTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBwdWJsaWMgZ2V0U3RlcHNTdHJlYW0oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc1N0cmVhbSQ7XG4gIH1cbiAgcHVibGljIGlzUm91dGVDaGFuZ2VkKCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlQ2hhbmdlZDtcbiAgfVxuICBwcml2YXRlIHNldFRvdXJTdGF0dXMoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50b3VyU3RhcnRlZCA9IHN0YXR1cztcbiAgfVxuICBwdWJsaWMgZ2V0VG91clN0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy50b3VyU3RhcnRlZDtcbiAgfVxuICBwdWJsaWMgc3RhcnRUb3VyKHRvdXI6IFRvdXJJKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlT3B0aW9ucyh0b3VyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGFjZW1lbnQgb3B0aW9uIG9mIHRoZSBuZzMtdG91ciBvciBvbmUgb2YgaXQgc3RlcCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICAgIGNvbnN0IHt0b3VyQnJlYWssIHRvdXJTdGFydCwgdG91ckVuZCwgbmV4dCwgcHJldn0gPSB7Li4uVG91ckRlZmF1bHRFdmVudHMsIC4uLnRvdXIudG91ckV2ZW50c307XG4gICAgdG91clN0YXJ0KHt0b3VyRXZlbnQ6ICdUb3VyIHN0YXJ0JywgdG91cn0pO1xuICAgIHRoaXMudG91ckJyZWFrID0gdG91ckJyZWFrO1xuICAgIHRoaXMudG91ckVuZCA9IHRvdXJFbmQ7XG4gICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgIHRoaXMuc2V0VG91clN0YXR1cyh0cnVlKTtcbiAgICB0aGlzLnNldFN0ZXBzKHRvdXIpO1xuICAgIHRoaXMuaW5pdFN0ZXAoMCk7XG4gIH1cbiAgcHVibGljIHN0b3BUb3VyKCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRMYXN0U3RlcCgpLmluZGV4O1xuICAgIGNvbnN0IGxhdGVzdFN0ZXBJbmRleCA9IHRoaXMuc3RlcHMubGVuZ3RoIC0gMTtcbiAgICBpZiAoIGluZGV4IDwgbGF0ZXN0U3RlcEluZGV4KSB7XG4gICAgICB0aGlzLnRvdXJCcmVhayh7dG91ckV2ZW50OiAnVG91ciBicmVhaycsIHN0ZXA6IGluZGV4LCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB9IGVsc2UgaWYgKGxhdGVzdFN0ZXBJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgIHRoaXMudG91ckVuZCh7dG91ckV2ZW50OiAnVG91ciBlbmQnLCBzdGVwOiBpbmRleCwgaGlzdG9yeTogdGhpcy5oaXN0b3J5fSk7XG4gICAgfVxuICAgIHRoaXMuc2V0VG91clN0YXR1cyhmYWxzZSk7XG4gICAgdGhpcy5zdGVwcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuc3RlcHNTdHJlYW0kLm5leHQobnVsbCk7XG4gICAgdGhpcy5oaXN0b3J5Lmxlbmd0aCA9IDA7XG4gICAgdGhpcy50YXJnZXRTZXJ2aWNlLnNldFRhcmdldFN1YmplY3QobnVsbCk7XG4gIH1cbiAgcHVibGljIG5leHRTdGVwKCkge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldExhc3RTdGVwKCkuaW5kZXggKyAxO1xuICAgIHRoaXMubmV4dCh7dG91ckV2ZW50OiAnSW5pdCBuZXh0Jywgc3RlcCwgaGlzdG9yeTogdGhpcy5oaXN0b3J5fSk7XG4gICAgdGhpcy5pbml0U3RlcChzdGVwKTtcbiAgfVxuICBwdWJsaWMgcHJldlN0ZXAoKSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0TGFzdFN0ZXAoKS5pbmRleCAtIDE7XG4gICAgdGhpcy5wcmV2KHt0b3VyRXZlbnQ6ICdJbml0IHByZXYnLCBzdGVwLCBoaXN0b3J5OiB0aGlzLmhpc3Rvcnl9KTtcbiAgICB0aGlzLmluaXRTdGVwKHN0ZXApO1xuICB9XG59XG4iXX0=

@@ -410,3 +410,3 @@ import { Injectable, isDevMode, Inject, PLATFORM_ID, EventEmitter, Component, ViewEncapsulation, ElementRef, ViewContainerRef, Output, HostListener, Input, Directive, ComponentFactoryResolver, NgModule } from '@angular/core';

}));
if (tour.tourOptions.placement) {
if (tour.tourOptions && tour.tourOptions.placement) {
isValid = regExpr.test(tour.tourOptions.placement);

@@ -413,0 +413,0 @@ }

{
"name": "ng3-tour",
"version": "0.1.7",
"version": "0.1.8",
"description": "An Angular Tour (ng3-tour) light library is built entirely in Angular and allows you easily master guide for your users through your site showing them all the sections and features including lazily loaded.",

@@ -5,0 +5,0 @@ "repository": {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc