nextalys-carousel 0.0.52 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../src/lib/nxs-carousel/nxs-carousel-types.ts","../../src/lib/nxs-carousel/nxs-carousel-dialog.component.ts","../../src/lib/nxs-carousel/nxs-carousel.component.ts","../../src/lib/nxs-carousel/nxs-carousel.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__values","o","s","m","i","__read","r","ar","error","__spreadArray","to","from","pack","arguments","l","Array","prototype","slice","concat","debug","data","dialogRef","wrapperClass","Component","args","selector","template","encapsulation","ViewEncapsulation","None","Inject","MAT_DIALOG_DATA","MatDialogRef","NxsCarouselComponent","matDialog","zone","platformId","config","mutationObserver","recreateSliderSubscribed","eventsCollector","EventsCollector","options","hasHtmlContent","slidesCount","slideChange","EventEmitter","currentSlide","slideClick","isBrowser","isPlatformBrowser","log","setDefaultOptions","undefined","defineProperty","val","images","initSlides","createSlider","_i","console","onContentChange","changes","_this","nxsSlidesWrapper","runOutsideAngular","nativeElement","innerHTML","div","document","createElement","className","style","backgroundImage","src","nxsCarouselImageBackgroundSize","backgroundSize","appendChild","nxsThumbnails","show","nxsThumbnailsSlidesWrapper","children","child","indexOf","ngOnDestroy","unsubscribeAll","disconnect","sliderInstance","destroy","subscribeToSlideChanged","MutationObserver","mutationsList","mustUpdate","mutationsList_1","mutationsList_1_1","mutation","addedNodes","removedNodes","observe","childList","attributes","ngAfterViewInit","getMainSliderHeight","onMainSlider","percentHeight","forDialog","nxsShowNavigationBullets","loop","effect","nxsShowNavigationArrows","nxsShowImagesCount","nxsCarouselDialogOptions","_a","perView","breakpoints","640","slidesPerView","768","1024","nxsfullscreenOnClick","showFullScreenCarousel","open","NxsCarouselDialogComponent","panelClass","width","nxsCarouselDialogSize","height","disableClose","nxsCarouselDialogExitable","forceRecreate","nxsSliderContainer","pagination","el","clickable","type","navigation","nextEl","prevEl","swiperLibrary","_b","import","_c","Swiper","default","thumbnailsOptions","freeMode","watchSlidesVisibility","watchSlidesProgress","thumbnailsSliderInstance","nxsThumbnailsSliderContainer","thumbs","swiper","on","run","realIndex","evt","target","goToSlide","index","speed","slideTo","slideNext","previous","slidePrev","MatDialog","NgZone","PLATFORM_ID","NxsCarouselModuleConfig","decorators","Optional","ViewChild","static","Input","Output","NxsCarouselModule","forRoot","ngModule","providers","provide","useValue","NgModule","declarations","imports","CommonModule","MatIconModule","MatButtonModule","MatDialogModule","ObserversModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export interface NxsCarouselImage {\n alt?: string;\n src: string;\n}\nexport interface SwiperInstance {\n realIndex: number;\n activeIndex: number;\n on: (evt: 'slideChange' | 'click', cb: (data: any) => void) => void;\n destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void;\n slideTo: (index: number, speed?: number, runCallbacks?: boolean) => void;\n slideNext: (speed?: number, runCallbacks?: boolean) => void;\n slidePrev: (speed?: number, runCallbacks?: boolean) => void;\n}\nexport interface NxsCarouselOptions {\n watchSlidesVisibility?: boolean;\n watchSlidesProgress?: boolean;\n freeMode?: boolean;\n effect?: \"slide\" | \"fade\" | \"cube\" | \"coverflow\" | \"flip\";\n autoplay?: { delay: number; stopOnLastSlide?: boolean; disableOnInteraction?: boolean; reverseDirection?: boolean; waitForTransition?: boolean };\n roundLengths?: boolean;\n init?: boolean;\n initialSlide?: number;\n updateOnWindowResize?: boolean;\n direction?: 'horizontal' | 'vertical';\n slidesPerView?: number | 'auto';\n centeredSlides?: boolean;\n centeredSlidesBounds?: boolean;\n loop?: boolean;\n coverflowEffect?: {\n rotate: number;\n stretch: number;\n depth?: number;\n modifier?: number;\n slideShadows?: boolean;\n };\n pagination?: {\n el: string;\n clickable: boolean;\n type?: \"bullets\" | \"fraction\" | \"progressbar\" | \"custom\";\n };\n navigation?: {\n nextEl: string;\n prevEl: string;\n };\n spaceBetween?: number;\n breakpoints?: {\n [size: number]: {\n spaceBetween?: number;\n slidesPerView: number | 'auto';\n };\n };\n thumbs?: { swiper: SwiperInstance };\n nxsShowNavigationBullets?: boolean;\n nxsShowNavigationArrows?: boolean;\n nxsThumbnails?: {\n show: boolean; onMainSlider?: boolean; percentHeight?: number; perView?: number; breakpoints?: {\n [size: number]: {\n spaceBetween?: number;\n slidesPerView: number | 'auto';\n };\n };\n };\n nxsShowImagesCount?: boolean;\n nxsfullscreenOnClick?: boolean;\n /**\n * background mode : cover, contain, auto, etc...\n * default => cover\n */\n nxsCarouselImageBackgroundSize?: string;\n nxsCarouselDialogOptions?: NxsCarouselOptions;\n nxsCarouselDialogExitable?: boolean;\n nxsCarouselDialogSize?: { width: string; height: string; };\n}\nexport class NxsCarouselModuleConfig {\n debug?: boolean = false;\n}","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { NxsCarouselImage, NxsCarouselOptions } from './nxs-carousel-types';\n\nexport interface NxsCarouselDialogData {\n images: NxsCarouselImage[];\n options?: NxsCarouselOptions;\n wrapperClass?: string;\n}\n@Component({\n selector: 'nxs-carousel-dialog',\n template: `\n <div class=\"nxs-carousel-dialog-flex-wrapper\">\n <div class=\"nxs-carousel-dialog-header\">\n <button (click)=\"dialogRef.close()\" mat-icon-button><mat-icon>close</mat-icon></button>\n </div>\n <div [class]=\"wrapperClass\">\n <nxs-carousel [options]=\"data.options\" [images]=\"data.images\"></nxs-carousel>\n </div>\n</div>\n `,\n styleUrls: ['./nxs-carousel-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselDialogComponent {\n public wrapperClass: string = 'nxs-carousel-wrapper';\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: NxsCarouselDialogData,\n public dialogRef: MatDialogRef<NxsCarouselDialogComponent>,\n ) {\n if (data.wrapperClass)\n this.wrapperClass += ' ' + data.wrapperClass;\n }\n\n}\n","import { Component, ViewEncapsulation, Input, ViewChild, ElementRef, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone, SimpleChanges } from '@angular/core';\nimport { NxsCarouselOptions, NxsCarouselImage, SwiperInstance, NxsCarouselModuleConfig } from './nxs-carousel-types';\nimport { NxsCarouselDialogData, NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventsCollector } from 'nextalys-js-helpers/dist/events';\n@Component({\n selector: 'nxs-carousel',\n templateUrl: './nxs-carousel.component.html',\n styleUrls: ['./nxs-carousel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselComponent {\n private mutationObserver: MutationObserver | null = null;\n recreateSliderSubscribed = false;\n private eventsCollector = new EventsCollector();\n public images: NxsCarouselImage[];\n\n @ViewChild('nxsSliderContainer', { static: true })\n nxsSliderContainer: ElementRef<HTMLDivElement>;\n\n @ViewChild('nxsSlidesWrapper', { static: true })\n nxsSlidesWrapper: ElementRef<HTMLDivElement>;\n\n //thumbnails\n @ViewChild('nxsThumbnailsSliderContainer', { static: true })\n nxsThumbnailsSliderContainer: ElementRef<HTMLDivElement>;\n @ViewChild('nxsThumbnailsSlidesWrapper', { static: true })\n nxsThumbnailsSlidesWrapper: ElementRef<HTMLDivElement>;\n options: NxsCarouselOptions = {};\n @Input('options')\n set setOptions(val: NxsCarouselOptions) {\n this.options = this.setDefaultOptions(val, false);\n }\n @Input('images')\n set setImages(val: NxsCarouselImage[]) {\n this.images = val;\n this.initSlides();\n this.createSlider(true);\n }\n @Input()\n hasHtmlContent = false;\n slidesCount: number = 0;\n public sliderInstance: SwiperInstance;\n public thumbnailsSliderInstance: SwiperInstance;\n\n @Output()\n slideChange = new EventEmitter<number>();\n public currentSlide = 0;\n @Output()\n slideClick = new EventEmitter<MouseEvent>();\n isBrowser = false;\n private swiperLibrary: any;\n\n constructor(\n private matDialog: MatDialog,\n private zone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private config?: NxsCarouselModuleConfig,\n ) {\n if (!this.config)\n this.config = { debug: false };\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.log('constructor - isBrowser', this.isBrowser);\n this.options = this.setDefaultOptions(undefined, false);\n }\n private log(...args: any[]) {\n if (!this.config.debug)\n return;\n console.log('[NxsCarousel]', ...args);\n }\n\n onContentChange(changes: MutationRecord[]) {\n // console.log(\"Log: NxsCarouselComponent -> onContentChange -> changes\", changes);\n // changes.forEach(change => console.log(change.target));\n }\n initSlides() {\n if (!this.isBrowser) {\n this.log('prevent initSlides on platform server');\n return;\n }\n if (!this.nxsSlidesWrapper) {\n this.log('can not initSlides : nxsSlidesWrapper is not defined !');\n return;\n }\n this.log('initSlides begins');\n this.zone.runOutsideAngular(() => {\n if (!this.hasHtmlContent && this.images) {\n this.nxsSlidesWrapper.nativeElement.innerHTML = '';\n for (let i = 0; i < this.images.length; i++) {\n const div = document.createElement('div');\n div.className = 'swiper-slide';\n div.style.backgroundImage = 'url(' + this.images[i].src + ')';\n if (this.options.nxsCarouselImageBackgroundSize)\n div.style.backgroundSize = this.options.nxsCarouselImageBackgroundSize;\n this.nxsSlidesWrapper.nativeElement.appendChild(div);\n }\n this.slidesCount = this.images.length;\n if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';\n for (let i = 0; i < this.images.length; i++) {\n const div = document.createElement('div');\n div.className = 'swiper-slide';\n div.style.backgroundImage = 'url(' + this.images[i].src + ')';\n this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);\n }\n }\n this.log('initSlides - images are defined - slides count => ', this.slidesCount);\n }\n else if (this.hasHtmlContent) {\n this.log('initSlides - html content - slides length => ', this.nxsSlidesWrapper.nativeElement.children.length);\n for (let i = 0; i < this.nxsSlidesWrapper.nativeElement.children.length; i++) {\n const child = this.nxsSlidesWrapper.nativeElement.children[i];\n if (!child.className)\n child.className = 'swiper-slide';\n else if (child.className.indexOf('swiper-slide') === -1) {\n child.className += ' swiper-slide';\n }\n }\n this.slidesCount = this.nxsSlidesWrapper.nativeElement.children.length;\n this.log('initSlides - html content - slides count => ', this.slidesCount);\n }\n });\n\n }\n ngOnDestroy(): void {\n if (!this.isBrowser) {\n return;\n }\n this.eventsCollector.unsubscribeAll();\n if (this.mutationObserver)\n this.mutationObserver.disconnect();\n if (this.sliderInstance)\n this.sliderInstance.destroy();\n }\n private subscribeToSlideChanged() {\n if (!this.hasHtmlContent) {\n this.log('subscribeToSlideChanged cannot be subscribed : has no html content');\n return;\n }\n if (!this.nxsSlidesWrapper || !this.nxsSlidesWrapper.nativeElement) {\n this.log('subscribeToSlideChanged error : nxsSlidesWrapper is not defined');\n return;\n }\n if (typeof MutationObserver === 'undefined') {\n this.log('cannot use mutation observer');\n return;\n }\n\n if (this.mutationObserver)\n this.mutationObserver.disconnect();\n\n this.log('subscribe to mutation observer');\n this.mutationObserver = new MutationObserver((mutationsList) => {\n // console.log(\"Log: NxsCarouselComponent -> subscribeToSlideChanged -> mutationsList\", mutationsList);\n // console.log(\"Log: NxsCarouselComponent -> subscribeToSlideChanged -> MutationObserver\");\n this.log('mutation observer - html content has changed');\n if (mutationsList.length === 0)\n return;\n let mustUpdate = false;\n for (const mutation of mutationsList) {\n if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) {\n mustUpdate = true;\n break;\n }\n }\n if (mustUpdate) {\n this.initSlides();\n this.createSlider(true);\n }\n\n });\n this.mutationObserver.observe(this.nxsSlidesWrapper.nativeElement, { childList: true, attributes: false, });\n }\n ngAfterViewInit(): void {\n this.initSlides();\n this.createSlider(true);\n }\n getMainSliderHeight() {\n if (!this.options)\n return '';\n if (this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n if (this.options.nxsThumbnails.onMainSlider) {\n return '100%';\n }\n else if (this.options.nxsThumbnails.percentHeight) {\n return (100 - this.options.nxsThumbnails.percentHeight) + '%';\n }\n }\n return '';\n }\n private setDefaultOptions(options: NxsCarouselOptions, forDialog: boolean) {\n if (!options && forDialog) {\n options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true };\n }\n else if (!options)\n options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {} };\n if (options.nxsCarouselDialogOptions) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };\n if (typeof options.nxsCarouselDialogOptions.effect === 'undefined')\n options.nxsCarouselDialogOptions.effect = 'slide';\n if (typeof options.nxsCarouselDialogOptions.nxsShowNavigationArrows === 'undefined')\n options.nxsCarouselDialogOptions.nxsShowNavigationArrows = true;\n\n if (!!options.nxsCarouselDialogOptions.nxsThumbnails?.show) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight = 20;\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.perView === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.perView = 10;\n options.nxsCarouselDialogOptions.nxsThumbnails.breakpoints = {\n 640: {\n slidesPerView: 5,\n },\n 768: {\n slidesPerView: 7,\n },\n 1024: {\n slidesPerView: 8,\n },\n };\n }\n }\n if (!options.nxsThumbnails)\n options.nxsThumbnails = { show: false };\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.percentHeight === 'undefined')\n options.nxsThumbnails.percentHeight = 20;\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.perView === 'undefined')\n options.nxsThumbnails.perView = 10;\n\n\n if (forDialog)\n options.nxsfullscreenOnClick = false;\n if (options.nxsThumbnails.onMainSlider)\n options.nxsShowNavigationBullets = false;\n return options;\n }\n public showFullScreenCarousel(images: NxsCarouselImage[], wrapperClass?: string) {\n this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);\n const data: NxsCarouselDialogData = { images, wrapperClass, options: this.options.nxsCarouselDialogOptions };\n this.matDialog.open(NxsCarouselDialogComponent, {\n data,\n panelClass: 'nxs-carousel-dialog',\n width: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.width : undefined,\n height: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.height : undefined,\n disableClose: !this.options.nxsCarouselDialogExitable,\n });\n }\n private createSlider(forceRecreate: boolean) {\n if (!this.isBrowser) {\n this.log('prevent createSlider : platform is server');\n return;\n }\n if (!this.nxsSliderContainer) {\n this.log('can not createSlider : nxsSliderContainer is not defined !');\n return;\n }\n this.log('createSlider', this.nxsSliderContainer.nativeElement);\n if (this.slidesCount === 0) {\n this.log('can not createSlider : slidesCount === 0');\n this.subscribeToSlideChanged();\n return;\n }\n if (this.sliderInstance && !forceRecreate) {\n this.log('can re create slider => slider is already created.');\n return;\n }\n this.zone.runOutsideAngular(async () => {\n if (this.sliderInstance)\n this.sliderInstance.destroy();\n this.options.pagination = {\n el: '.nxs-carousel-pagination',\n clickable: true,\n type: 'bullets',\n };\n this.options.navigation = {\n nextEl: '.nxs-carousel-button-next',\n prevEl: '.nxs-carousel-button-prev',\n };\n if (!this.swiperLibrary)\n this.swiperLibrary = await import(\"swiper\");\n const Swiper = this.swiperLibrary.default;\n if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n const thumbnailsOptions: NxsCarouselOptions = {\n slidesPerView: this.options.nxsThumbnails.perView,\n loop: false,\n freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n breakpoints: this.options.nxsThumbnails.breakpoints,\n // spaceBetween: 10,\n };\n this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);\n this.options.thumbs = { swiper: this.thumbnailsSliderInstance };\n }\n this.sliderInstance = new Swiper(this.nxsSliderContainer.nativeElement, this.options);\n this.log('sliderInstance has been created', this.sliderInstance);\n this.sliderInstance.on('slideChange', () => {\n this.zone.run(() => {\n this.currentSlide = this.sliderInstance.realIndex;\n this.log(\"slideChange\", this.currentSlide);\n this.slideChange.next(this.currentSlide);\n });\n });\n this.sliderInstance.on('click', (evt: MouseEvent) => {\n const target = evt.target as HTMLElement;\n if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)\n return;\n this.zone.run(() => {\n this.slideClick.next(evt);\n if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {\n this.showFullScreenCarousel(this.images, 'fullscreen-carousel');\n }\n });\n\n });\n this.subscribeToSlideChanged();\n });\n }\n\n goToSlide(index: number, speed?: number) {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slideTo(index, speed);\n }\n next() {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slideNext();\n }\n previous() {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slidePrev();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { NxsCarouselComponent } from './nxs-carousel.component';\nimport { NxsCarouselModuleConfig } from './nxs-carousel-types';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n@NgModule({\n declarations: [\n NxsCarouselComponent,\n NxsCarouselDialogComponent,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n ObserversModule,\n ],\n exports: [\n NxsCarouselComponent,\n ],\n})\nexport class NxsCarouselModule {\n public static forRoot(config?: NxsCarouselModuleConfig): ModuleWithProviders<NxsCarouselModule> {\n return {\n ngModule: NxsCarouselModule,\n providers: [\n { provide: NxsCarouselModuleConfig, useValue: config },\n ]\n };\n }\n}"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../src/lib/nxs-carousel/nxs-carousel-types.ts","../../src/lib/nxs-carousel/nxs-carousel-dialog.component.ts","../../src/lib/nxs-carousel/nxs-carousel.component.ts","../../src/lib/nxs-carousel/nxs-carousel.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__values","o","s","m","i","__read","r","ar","error","__spreadArray","to","from","pack","arguments","l","Array","prototype","slice","concat","debug","data","dialogRef","wrapperClass","Component","args","selector","template","encapsulation","ViewEncapsulation","None","Inject","MAT_DIALOG_DATA","MatDialogRef","NxsCarouselComponent","matDialog","zone","platformId","config","mutationObserver","recreateSliderSubscribed","eventsCollector","EventsCollector","options","hasHtmlContent","slidesCount","slideChange","EventEmitter","currentSlide","slideClick","isBrowser","isPlatformBrowser","log","setDefaultOptions","undefined","defineProperty","val","images","initSlides","createSlider","_i","console","onContentChange","changes","_this","nxsSlidesWrapper","runOutsideAngular","nativeElement","innerHTML","_f","_g","cImage","div","document","createElement","className","style","backgroundImage","src","nxsCarouselImageBackgroundSize","backgroundSize","appendChild","nxsThumbnails","show","nxsThumbnailsSlidesWrapper","_h","_j","children","child","indexOf","destroy","_a","unsubscribeAll","_b","disconnect","_c","sliderInstance","ngOnDestroy","subscribeToSlideChanged","MutationObserver","mutationsList","mustUpdate","mutationsList_1","mutationsList_1_1","mutation","addedNodes","removedNodes","observe","childList","attributes","ngAfterViewInit","getMainSliderHeight","onMainSlider","percentHeight","forDialog","nxsShowNavigationBullets","loop","effect","nxsShowNavigationArrows","nxsShowImagesCount","nxsCarouselDialogOptions","perView","breakpoints","640","slidesPerView","768","1024","nxsfullscreenOnClick","showFullScreenCarousel","open","NxsCarouselDialogComponent","panelClass","width","nxsCarouselDialogSize","height","disableClose","nxsCarouselDialogExitable","forceRecreate","nxsSliderContainer","pagination","el","clickable","type","navigation","nextEl","prevEl","swiperLibrary","_d","import","_e","Swiper","default","thumbnailsOptions","freeMode","watchSlidesVisibility","watchSlidesProgress","thumbnailsSliderInstance","nxsThumbnailsSliderContainer","thumbs","swiper","on","run","realIndex","evt","target","goToSlide","index","speed","slideTo","slideNext","previous","slidePrev","MatDialog","NgZone","PLATFORM_ID","NxsCarouselModuleConfig","decorators","Optional","ViewChild","static","Input","Output","NxsCarouselModule","forRoot","ngModule","providers","provide","useValue","NgModule","declarations","imports","CommonModule","MatIconModule","MatButtonModule","MatDialogModule","ObserversModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export interface NxsCarouselImage {\n alt?: string;\n src: string;\n}\nexport interface SwiperInstance {\n realIndex: number;\n activeIndex: number;\n on: (evt: 'slideChange' | 'click', cb: (data: any) => void) => void;\n destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void;\n slideTo: (index: number, speed?: number, runCallbacks?: boolean) => void;\n slideNext: (speed?: number, runCallbacks?: boolean) => void;\n slidePrev: (speed?: number, runCallbacks?: boolean) => void;\n}\nexport interface NxsCarouselOptions {\n watchSlidesVisibility?: boolean;\n watchSlidesProgress?: boolean;\n freeMode?: boolean;\n effect?: \"slide\" | \"fade\" | \"cube\" | \"coverflow\" | \"flip\";\n autoplay?: { delay: number; stopOnLastSlide?: boolean; disableOnInteraction?: boolean; reverseDirection?: boolean; waitForTransition?: boolean };\n roundLengths?: boolean;\n init?: boolean;\n initialSlide?: number;\n updateOnWindowResize?: boolean;\n direction?: 'horizontal' | 'vertical';\n slidesPerView?: number | 'auto';\n centeredSlides?: boolean;\n centeredSlidesBounds?: boolean;\n loop?: boolean;\n coverflowEffect?: {\n rotate: number;\n stretch: number;\n depth?: number;\n modifier?: number;\n slideShadows?: boolean;\n };\n pagination?: {\n el: string;\n clickable: boolean;\n type?: \"bullets\" | \"fraction\" | \"progressbar\" | \"custom\";\n };\n navigation?: {\n nextEl: string;\n prevEl: string;\n };\n spaceBetween?: number;\n breakpoints?: {\n [size: number]: {\n spaceBetween?: number;\n slidesPerView: number | 'auto';\n };\n };\n thumbs?: { swiper: SwiperInstance };\n nxsShowNavigationBullets?: boolean;\n nxsShowNavigationArrows?: boolean;\n nxsThumbnails?: {\n show: boolean; onMainSlider?: boolean; percentHeight?: number; perView?: number; breakpoints?: {\n [size: number]: {\n spaceBetween?: number;\n slidesPerView: number | 'auto';\n };\n };\n };\n nxsShowImagesCount?: boolean;\n nxsfullscreenOnClick?: boolean;\n /**\n * background mode : cover, contain, auto, etc...\n * default => cover\n */\n nxsCarouselImageBackgroundSize?: string;\n nxsCarouselDialogOptions?: NxsCarouselOptions;\n nxsCarouselDialogExitable?: boolean;\n nxsCarouselDialogSize?: { width: string; height: string; };\n}\nexport class NxsCarouselModuleConfig {\n debug?: boolean = false;\n}","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { NxsCarouselImage, NxsCarouselOptions } from './nxs-carousel-types';\n\nexport interface NxsCarouselDialogData {\n images: NxsCarouselImage[];\n options?: NxsCarouselOptions;\n wrapperClass?: string;\n}\n@Component({\n selector: 'nxs-carousel-dialog',\n template: `\n <div class=\"nxs-carousel-dialog-flex-wrapper\">\n <div class=\"nxs-carousel-dialog-header\">\n <button (click)=\"dialogRef.close()\" mat-icon-button><mat-icon>close</mat-icon></button>\n </div>\n <div [class]=\"wrapperClass\">\n <nxs-carousel [options]=\"data.options\" [images]=\"data.images\"></nxs-carousel>\n </div>\n</div>\n `,\n styleUrls: ['./nxs-carousel-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselDialogComponent {\n public wrapperClass: string = 'nxs-carousel-wrapper';\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: NxsCarouselDialogData,\n public dialogRef: MatDialogRef<NxsCarouselDialogComponent>,\n ) {\n if (data.wrapperClass)\n this.wrapperClass += ' ' + data.wrapperClass;\n }\n\n}\n","import { Component, ViewEncapsulation, Input, ViewChild, ElementRef, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone, SimpleChanges } from '@angular/core';\nimport { NxsCarouselOptions, NxsCarouselImage, SwiperInstance, NxsCarouselModuleConfig } from './nxs-carousel-types';\nimport { NxsCarouselDialogData, NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventsCollector } from 'nextalys-js-helpers/dist/events';\n@Component({\n selector: 'nxs-carousel',\n templateUrl: './nxs-carousel.component.html',\n styleUrls: ['./nxs-carousel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselComponent {\n private mutationObserver: MutationObserver | null = null;\n recreateSliderSubscribed = false;\n private eventsCollector = new EventsCollector();\n public images: NxsCarouselImage[];\n\n @ViewChild('nxsSliderContainer', { static: true })\n nxsSliderContainer: ElementRef<HTMLDivElement>;\n\n @ViewChild('nxsSlidesWrapper', { static: true })\n nxsSlidesWrapper: ElementRef<HTMLDivElement>;\n\n //thumbnails\n @ViewChild('nxsThumbnailsSliderContainer', { static: true })\n nxsThumbnailsSliderContainer: ElementRef<HTMLDivElement>;\n @ViewChild('nxsThumbnailsSlidesWrapper', { static: true })\n nxsThumbnailsSlidesWrapper: ElementRef<HTMLDivElement>;\n options: NxsCarouselOptions = {};\n @Input('options')\n set setOptions(val: NxsCarouselOptions) {\n this.options = this.setDefaultOptions(val, false);\n }\n @Input('images')\n set setImages(val: NxsCarouselImage[]) {\n this.images = val;\n this.initSlides();\n this.createSlider(true);\n }\n @Input()\n hasHtmlContent = false;\n slidesCount: number = 0;\n public sliderInstance: SwiperInstance;\n public thumbnailsSliderInstance: SwiperInstance;\n\n @Output()\n slideChange = new EventEmitter<number>();\n public currentSlide = 0;\n @Output()\n slideClick = new EventEmitter<MouseEvent>();\n isBrowser = false;\n private swiperLibrary: any;\n\n constructor(\n private matDialog: MatDialog,\n private zone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private config?: NxsCarouselModuleConfig,\n ) {\n if (!this.config)\n this.config = { debug: false };\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.log('constructor - isBrowser', this.isBrowser);\n this.options = this.setDefaultOptions(undefined, false);\n }\n private log(...args: any[]) {\n if (!this.config.debug)\n return;\n console.log('[NxsCarousel]', ...args);\n }\n\n onContentChange(changes: MutationRecord[]) {\n // console.log(\"Log: NxsCarouselComponent -> onContentChange -> changes\", changes);\n // changes.forEach(change => console.log(change.target));\n }\n initSlides() {\n if (!this.isBrowser) {\n this.log('prevent initSlides on platform server');\n return;\n }\n if (!this.nxsSlidesWrapper) {\n this.log('can not initSlides : nxsSlidesWrapper is not defined !');\n return;\n }\n this.log('initSlides begins');\n this.zone.runOutsideAngular(() => {\n if (!this.hasHtmlContent && this.images) {\n this.nxsSlidesWrapper.nativeElement.innerHTML = '';\n\n for (const cImage of this.images) {\n const div = document.createElement('div');\n div.className = 'swiper-slide';\n div.style.backgroundImage = 'url(' + cImage.src + ')';\n if (this.options.nxsCarouselImageBackgroundSize)\n div.style.backgroundSize = this.options.nxsCarouselImageBackgroundSize;\n this.nxsSlidesWrapper.nativeElement.appendChild(div);\n }\n this.slidesCount = this.images.length;\n if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';\n for (const cImage of this.images) {\n const div = document.createElement('div');\n div.className = 'swiper-slide';\n div.style.backgroundImage = 'url(' + cImage.src + ')';\n this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);\n }\n }\n this.log('initSlides - images are defined - slides count => ', this.slidesCount);\n }\n else if (this.hasHtmlContent) {\n this.log('initSlides - html content - slides length => ', this.nxsSlidesWrapper.nativeElement.children.length);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < this.nxsSlidesWrapper.nativeElement.children.length; i++) {\n const child = this.nxsSlidesWrapper.nativeElement.children[i];\n if (!child.className)\n child.className = 'swiper-slide';\n else if (child.className.indexOf('swiper-slide') === -1) {\n child.className += ' swiper-slide';\n }\n }\n this.slidesCount = this.nxsSlidesWrapper.nativeElement.children.length;\n this.log('initSlides - html content - slides count => ', this.slidesCount);\n }\n });\n\n }\n\n private destroy() {\n if (!this.isBrowser) {\n return;\n }\n this.eventsCollector?.unsubscribeAll();\n this.mutationObserver?.disconnect();\n this.sliderInstance?.destroy();\n }\n ngOnDestroy(): void {\n this.destroy();\n }\n private subscribeToSlideChanged() {\n if (!this.hasHtmlContent) {\n this.log('subscribeToSlideChanged cannot be subscribed : has no html content');\n return;\n }\n if (!this.nxsSlidesWrapper || !this.nxsSlidesWrapper.nativeElement) {\n this.log('subscribeToSlideChanged error : nxsSlidesWrapper is not defined');\n return;\n }\n if (typeof MutationObserver === 'undefined') {\n this.log('cannot use mutation observer');\n return;\n }\n\n if (this.mutationObserver)\n this.mutationObserver.disconnect();\n\n this.log('subscribe to mutation observer');\n this.mutationObserver = new MutationObserver((mutationsList) => {\n // console.log(\"Log: NxsCarouselComponent -> subscribeToSlideChanged -> mutationsList\", mutationsList);\n // console.log(\"Log: NxsCarouselComponent -> subscribeToSlideChanged -> MutationObserver\");\n this.log('mutation observer - html content has changed');\n if (mutationsList.length === 0)\n return;\n let mustUpdate = false;\n for (const mutation of mutationsList) {\n if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) {\n mustUpdate = true;\n break;\n }\n }\n if (mustUpdate) {\n this.initSlides();\n this.createSlider(true);\n }\n\n });\n this.mutationObserver.observe(this.nxsSlidesWrapper.nativeElement, { childList: true, attributes: false, });\n }\n ngAfterViewInit(): void {\n this.initSlides();\n this.createSlider(true);\n }\n getMainSliderHeight() {\n if (!this.options)\n return '';\n if (this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n if (this.options.nxsThumbnails.onMainSlider) {\n return '100%';\n }\n else if (this.options.nxsThumbnails.percentHeight) {\n return (100 - this.options.nxsThumbnails.percentHeight) + '%';\n }\n }\n return '';\n }\n private setDefaultOptions(options: NxsCarouselOptions, forDialog: boolean) {\n if (!options && forDialog) {\n options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true };\n }\n else if (!options)\n options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {} };\n if (options.nxsCarouselDialogOptions) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };\n if (typeof options.nxsCarouselDialogOptions.effect === 'undefined')\n options.nxsCarouselDialogOptions.effect = 'slide';\n if (typeof options.nxsCarouselDialogOptions.nxsShowNavigationArrows === 'undefined')\n options.nxsCarouselDialogOptions.nxsShowNavigationArrows = true;\n\n if (!!options.nxsCarouselDialogOptions.nxsThumbnails?.show) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight = 20;\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.perView === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.perView = 10;\n options.nxsCarouselDialogOptions.nxsThumbnails.breakpoints = {\n 640: {\n slidesPerView: 5,\n },\n 768: {\n slidesPerView: 7,\n },\n 1024: {\n slidesPerView: 8,\n },\n };\n }\n }\n if (!options.nxsThumbnails)\n options.nxsThumbnails = { show: false };\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.percentHeight === 'undefined')\n options.nxsThumbnails.percentHeight = 20;\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.perView === 'undefined')\n options.nxsThumbnails.perView = 10;\n\n\n if (forDialog)\n options.nxsfullscreenOnClick = false;\n if (options.nxsThumbnails.onMainSlider)\n options.nxsShowNavigationBullets = false;\n return options;\n }\n public showFullScreenCarousel(images: NxsCarouselImage[], wrapperClass?: string) {\n this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);\n const data: NxsCarouselDialogData = { images, wrapperClass, options: this.options.nxsCarouselDialogOptions };\n this.matDialog.open(NxsCarouselDialogComponent, {\n data,\n panelClass: 'nxs-carousel-dialog',\n width: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.width : undefined,\n height: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.height : undefined,\n disableClose: !this.options.nxsCarouselDialogExitable,\n });\n }\n private createSlider(forceRecreate: boolean) {\n if (!this.isBrowser) {\n this.log('prevent createSlider : platform is server');\n return;\n }\n if (!this.nxsSliderContainer) {\n this.log('can not createSlider : nxsSliderContainer is not defined !');\n return;\n }\n this.log('createSlider', this.nxsSliderContainer.nativeElement);\n if (this.slidesCount === 0) {\n this.log('can not createSlider : slidesCount === 0');\n this.subscribeToSlideChanged();\n return;\n }\n if (this.sliderInstance && !forceRecreate) {\n this.log('can re create slider => slider is already created.');\n return;\n }\n this.zone.runOutsideAngular(async () => {\n this.destroy();\n this.options.pagination = {\n el: '.nxs-carousel-pagination',\n clickable: true,\n type: 'bullets',\n };\n this.options.navigation = {\n nextEl: '.nxs-carousel-button-next',\n prevEl: '.nxs-carousel-button-prev',\n };\n if (!this.swiperLibrary)\n this.swiperLibrary = await import(\"swiper\");\n const Swiper = this.swiperLibrary.default;\n if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n const thumbnailsOptions: NxsCarouselOptions = {\n slidesPerView: this.options.nxsThumbnails.perView,\n loop: false,\n freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n breakpoints: this.options.nxsThumbnails.breakpoints,\n // spaceBetween: 10,\n };\n this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);\n this.options.thumbs = { swiper: this.thumbnailsSliderInstance };\n }\n this.sliderInstance = new Swiper(this.nxsSliderContainer.nativeElement, this.options);\n this.log('sliderInstance has been created', this.sliderInstance);\n this.sliderInstance.on('slideChange', () => {\n this.zone.run(() => {\n this.currentSlide = this.sliderInstance.realIndex;\n this.log(\"slideChange\", this.currentSlide);\n this.slideChange.next(this.currentSlide);\n });\n });\n this.sliderInstance.on('click', (evt: MouseEvent) => {\n const target = evt.target as HTMLElement;\n if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)\n return;\n this.zone.run(() => {\n this.slideClick.next(evt);\n if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {\n this.showFullScreenCarousel(this.images, 'fullscreen-carousel');\n }\n });\n\n });\n this.subscribeToSlideChanged();\n });\n }\n\n goToSlide(index: number, speed?: number) {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slideTo(index, speed);\n }\n next() {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slideNext();\n }\n previous() {\n if (!this.sliderInstance)\n return;\n this.sliderInstance.slidePrev();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { NxsCarouselComponent } from './nxs-carousel.component';\nimport { NxsCarouselModuleConfig } from './nxs-carousel-types';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n@NgModule({\n declarations: [\n NxsCarouselComponent,\n NxsCarouselDialogComponent,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n ObserversModule,\n ],\n exports: [\n NxsCarouselComponent,\n ],\n})\nexport class NxsCarouselModule {\n public static forRoot(config?: NxsCarouselModuleConfig): ModuleWithProviders<NxsCarouselModule> {\n return {\n ngModule: NxsCarouselModule,\n providers: [\n { provide: NxsCarouselModuleConfig, useValue: config },\n ]\n };\n }\n}"]}
@@ -57,10 +57,10 @@ export class NxsCarouselComponent {
57
57
  this.zone.runOutsideAngular(() => {
58
58
  if (!this.hasHtmlContent && this.images) {
59
59
  this.nxsSlidesWrapper.nativeElement.innerHTML = '';
60
- for (let i = 0; i < this.images.length; i++) {
60
+ for (const cImage of this.images) {
61
61
  const div = document.createElement('div');
62
62
  div.className = 'swiper-slide';
63
- div.style.backgroundImage = 'url(' + this.images[i].src + ')';
63
+ div.style.backgroundImage = 'url(' + cImage.src + ')';
64
64
  if (this.options.nxsCarouselImageBackgroundSize)
65
65
  div.style.backgroundSize = this.options.nxsCarouselImageBackgroundSize;
66
66
  this.nxsSlidesWrapper.nativeElement.appendChild(div);
@@ -68,10 +68,10 @@ export class NxsCarouselComponent {
68
68
  this.slidesCount = this.images.length;
69
69
  if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
70
70
  this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';
71
- for (let i = 0; i < this.images.length; i++) {
71
+ for (const cImage of this.images) {
72
72
  const div = document.createElement('div');
73
73
  div.className = 'swiper-slide';
74
- div.style.backgroundImage = 'url(' + this.images[i].src + ')';
74
+ div.style.backgroundImage = 'url(' + cImage.src + ')';
75
75
  this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);
76
76
  }
77
77
  }
@@ -79,6 +79,7 @@ export class NxsCarouselComponent {
79
79
  }
80
80
  else if (this.hasHtmlContent) {
81
81
  this.log('initSlides - html content - slides length => ', this.nxsSlidesWrapper.nativeElement.children.length);
82
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
82
83
  for (let i = 0; i < this.nxsSlidesWrapper.nativeElement.children.length; i++) {
83
84
  const child = this.nxsSlidesWrapper.nativeElement.children[i];
84
85
  if (!child.className)
@@ -92,15 +93,17 @@ export class NxsCarouselComponent {
92
93
  }
93
94
  });
94
95
  }
95
- ngOnDestroy() {
96
+ destroy() {
97
+ var _a, _b, _c;
96
98
  if (!this.isBrowser) {
97
99
  return;
98
100
  }
99
- this.eventsCollector.unsubscribeAll();
100
- if (this.mutationObserver)
101
- this.mutationObserver.disconnect();
102
- if (this.sliderInstance)
103
- this.sliderInstance.destroy();
101
+ (_a = this.eventsCollector) === null || _a === void 0 ? void 0 : _a.unsubscribeAll();
102
+ (_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
103
+ (_c = this.sliderInstance) === null || _c === void 0 ? void 0 : _c.destroy();
104
+ }
105
+ ngOnDestroy() {
106
+ this.destroy();
104
107
  }
105
108
  subscribeToSlideChanged() {
106
109
  if (!this.hasHtmlContent) {
@@ -230,8 +233,7 @@ export class NxsCarouselComponent {
230
233
  return;
231
234
  }
232
235
  this.zone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
233
- if (this.sliderInstance)
234
- this.sliderInstance.destroy();
236
+ this.destroy();
235
237
  this.options.pagination = {
236
238
  el: '.nxs-carousel-pagination',
237
239
  clickable: true,
@@ -321,4 +323,4 @@ NxsCarouselComponent.propDecorators = {
321
323
  slideChange: [{ type: Output }],
322
324
  slideClick: [{ type: Output }]
323
325
  };
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBd0QsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQXlCLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBMEM3QixZQUNZLFNBQW9CLEVBQ3BCLElBQVksRUFDUyxVQUFlLEVBQ3hCLE1BQWdDO1FBSDVDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUE3Q2hELHFCQUFnQixHQUE0QixJQUFJLENBQUM7UUFDekQsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQWNoRCxZQUFPLEdBQXVCLEVBQUUsQ0FBQztRQVlqQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUt4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFeEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFDNUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFuQ0QsSUFDSSxVQUFVLENBQUMsR0FBdUI7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUNJLFNBQVMsQ0FBQyxHQUF1QjtRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBMkJPLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNsQixPQUFPO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQXlCO1FBQ3JDLG1GQUFtRjtRQUNuRix5REFBeUQ7SUFDN0QsQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDbEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDbkUsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztnQkFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztvQkFDL0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztvQkFDOUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLDhCQUE4Qjt3QkFDM0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztvQkFDM0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3hEO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtvQkFDakUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO3dCQUMvQixHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO3dCQUM5RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDbEU7aUJBQ0o7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvREFBb0QsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDcEY7aUJBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLCtDQUErQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO3dCQUNoQixLQUFLLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQzt5QkFDaEMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDckQsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQUM7cUJBQ3RDO2lCQUNKO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM5RTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUNELFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsY0FBYztZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1lBQy9FLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsaUVBQWlFLENBQUMsQ0FBQztZQUM1RSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzNELHVHQUF1RztZQUN2RywyRkFBMkY7WUFDM0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQ3pELElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUMxQixPQUFPO1lBQ1gsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxFQUFFO2dCQUNsQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3BFLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ2xCLE1BQU07aUJBQ1Q7YUFDSjtZQUNELElBQUksVUFBVSxFQUFFO2dCQUNaLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzQjtRQUVMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBQ0QsZUFBZTtRQUNYLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQy9ELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFO2dCQUN6QyxPQUFPLE1BQU0sQ0FBQzthQUNqQjtpQkFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRTtnQkFDL0MsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDakU7U0FDSjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNPLGlCQUFpQixDQUFDLE9BQTJCLEVBQUUsU0FBa0I7O1FBQ3JFLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFO1lBQ3ZCLE9BQU8sR0FBRyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNySzthQUNJLElBQUksQ0FBQyxPQUFPO1lBQ2IsT0FBTyxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN0TSxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTtZQUNsQyxJQUFJLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsS0FBSyxXQUFXO2dCQUNyRSxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JFLElBQUksT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxLQUFLLFdBQVc7Z0JBQzlELE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3RELElBQUksT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLEtBQUssV0FBVztnQkFDL0UsT0FBTyxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUVwRSxJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsMENBQUUsSUFBSSxDQUFBLEVBQUU7Z0JBQ3hELElBQUksT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxXQUFXO29CQUNuRixPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7Z0JBQ3RFLElBQUksT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxXQUFXO29CQUM3RSxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHO29CQUN6RCxHQUFHLEVBQUU7d0JBQ0QsYUFBYSxFQUFFLENBQUM7cUJBQ25CO29CQUNELEdBQUcsRUFBRTt3QkFDRCxhQUFhLEVBQUUsQ0FBQztxQkFDbkI7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLGFBQWEsRUFBRSxDQUFDO3FCQUNuQjtpQkFDSixDQUFDO2FBQ0w7U0FDSjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUN0QixPQUFPLENBQUMsYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBRTVDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxXQUFXO1lBQ3hGLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUU3QyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssV0FBVztZQUNsRixPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFHdkMsSUFBSSxTQUFTO1lBQ1QsT0FBTyxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUN6QyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWTtZQUNsQyxPQUFPLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQzdDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDTSxzQkFBc0IsQ0FBQyxNQUEwQixFQUFFLFlBQXFCO1FBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUcsTUFBTSxJQUFJLEdBQTBCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzdHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzVDLElBQUk7WUFDSixVQUFVLEVBQUUscUJBQXFCO1lBQ2pDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEcsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNwRyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QjtTQUN4RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08sWUFBWSxDQUFDLGFBQXNCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN0RCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUN2RSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUMvRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQVMsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHO2dCQUN0QixFQUFFLEVBQUUsMEJBQTBCO2dCQUM5QixTQUFTLEVBQUUsSUFBSTtnQkFDZixJQUFJLEVBQUUsU0FBUzthQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRSwyQkFBMkI7Z0JBQ25DLE1BQU0sRUFBRSwyQkFBMkI7YUFDdEMsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUMxQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pFLE1BQU0saUJBQWlCLEdBQXVCO29CQUMxQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTztvQkFDakQsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsUUFBUSxFQUFFLElBQUk7b0JBQ2QscUJBQXFCLEVBQUUsSUFBSTtvQkFDM0IsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVc7b0JBQ25ELG9CQUFvQjtpQkFDdkIsQ0FBQztnQkFDRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMvRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzthQUNuRTtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7b0JBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBZSxFQUFFLEVBQUU7Z0JBQ2hELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFxQixDQUFDO2dCQUN6QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlHLE9BQU87Z0JBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7d0JBQ2hHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7cUJBQ25FO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBRVAsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBYztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDcEIsT0FBTztRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUNwQixPQUFPO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUNwQixPQUFPO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzs7WUExVUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4QiwrMURBQTRDO2dCQUU1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDeEM7OztZQVJRLFNBQVM7WUFId0csTUFBTTs0Q0F5RHZILE1BQU0sU0FBQyxXQUFXO1lBeERvQyx1QkFBdUIsdUJBeUQ3RSxRQUFROzs7aUNBeENaLFNBQVMsU0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7K0JBR2hELFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MkNBSTlDLFNBQVMsU0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUNBRTFELFNBQVMsU0FBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUJBR3hELEtBQUssU0FBQyxTQUFTO3dCQUlmLEtBQUssU0FBQyxRQUFROzZCQU1kLEtBQUs7MEJBTUwsTUFBTTt5QkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFBMQVRGT1JNX0lELCBJbmplY3QsIE9wdGlvbmFsLCBOZ1pvbmUsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE54c0Nhcm91c2VsT3B0aW9ucywgTnhzQ2Fyb3VzZWxJbWFnZSwgU3dpcGVySW5zdGFuY2UsIE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhLCBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50c0NvbGxlY3RvciB9IGZyb20gJ25leHRhbHlzLWpzLWhlbHBlcnMvZGlzdC9ldmVudHMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdueHMtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ueHMtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL254cy1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE54c0Nhcm91c2VsQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgICByZWNyZWF0ZVNsaWRlclN1YnNjcmliZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGV2ZW50c0NvbGxlY3RvciA9IG5ldyBFdmVudHNDb2xsZWN0b3IoKTtcbiAgICBwdWJsaWMgaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW107XG5cbiAgICBAVmlld0NoaWxkKCdueHNTbGlkZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1NsaWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdueHNTbGlkZXNXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBueHNTbGlkZXNXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8vdGh1bWJuYWlsc1xuICAgIEBWaWV3Q2hpbGQoJ254c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ254c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgb3B0aW9uczogTnhzQ2Fyb3VzZWxPcHRpb25zID0ge307XG4gICAgQElucHV0KCdvcHRpb25zJylcbiAgICBzZXQgc2V0T3B0aW9ucyh2YWw6IE54c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldERlZmF1bHRPcHRpb25zKHZhbCwgZmFsc2UpO1xuICAgIH1cbiAgICBASW5wdXQoJ2ltYWdlcycpXG4gICAgc2V0IHNldEltYWdlcyh2YWw6IE54c0Nhcm91c2VsSW1hZ2VbXSkge1xuICAgICAgICB0aGlzLmltYWdlcyA9IHZhbDtcbiAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKHRydWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGhhc0h0bWxDb250ZW50ID0gZmFsc2U7XG4gICAgc2xpZGVzQ291bnQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHNsaWRlckluc3RhbmNlOiBTd2lwZXJJbnN0YW5jZTtcbiAgICBwdWJsaWMgdGh1bWJuYWlsc1NsaWRlckluc3RhbmNlOiBTd2lwZXJJbnN0YW5jZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHNsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgcHVibGljIGN1cnJlbnRTbGlkZSA9IDA7XG4gICAgQE91dHB1dCgpXG4gICAgc2xpZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgICBpc0Jyb3dzZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN3aXBlckxpYnJhcnk6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnPzogTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcsXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcpXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHsgZGVidWc6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICAgICAgdGhpcy5sb2coJ2NvbnN0cnVjdG9yIC0gaXNCcm93c2VyJywgdGhpcy5pc0Jyb3dzZXIpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldERlZmF1bHRPcHRpb25zKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cbiAgICBwcml2YXRlIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmRlYnVnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmxvZygnW054c0Nhcm91c2VsXScsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIG9uQ29udGVudENoYW5nZShjaGFuZ2VzOiBNdXRhdGlvblJlY29yZFtdKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBvbkNvbnRlbnRDaGFuZ2UgLT4gY2hhbmdlc1wiLCBjaGFuZ2VzKTtcbiAgICAgICAgLy8gY2hhbmdlcy5mb3JFYWNoKGNoYW5nZSA9PiBjb25zb2xlLmxvZyhjaGFuZ2UudGFyZ2V0KSk7XG4gICAgfVxuICAgIGluaXRTbGlkZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdwcmV2ZW50IGluaXRTbGlkZXMgb24gcGxhdGZvcm0gc2VydmVyJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm54c1NsaWRlc1dyYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW4gbm90IGluaXRTbGlkZXMgOiBueHNTbGlkZXNXcmFwcGVyIGlzIG5vdCBkZWZpbmVkICEnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyBiZWdpbnMnKTtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNIdG1sQ29udGVudCAmJiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoJyArIHRoaXMuaW1hZ2VzW2ldLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbEltYWdlQmFja2dyb3VuZFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZFNpemUgPSB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxJbWFnZUJhY2tncm91bmRTaXplO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICghIXRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAndXJsKCcgKyB0aGlzLmltYWdlc1tpXS5zcmMgKyAnKSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGltYWdlcyBhcmUgZGVmaW5lZCAtIHNsaWRlcyBjb3VudCA9PiAnLCB0aGlzLnNsaWRlc0NvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaGFzSHRtbENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGh0bWwgY29udGVudCAtIHNsaWRlcyBsZW5ndGggPT4gJywgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGQuY2xhc3NOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NOYW1lID0gJ3N3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItc2xpZGUnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTmFtZSArPSAnIHN3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXNDb3VudCA9IHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGh0bWwgY29udGVudCAtIHNsaWRlcyBjb3VudCA9PiAnLCB0aGlzLnNsaWRlc0NvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50c0NvbGxlY3Rvci51bnN1YnNjcmliZUFsbCgpO1xuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0h0bWxDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgY2Fubm90IGJlIHN1YnNjcmliZWQgOiBoYXMgbm8gaHRtbCBjb250ZW50Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm54c1NsaWRlc1dyYXBwZXIgfHwgIXRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgZXJyb3IgOiBueHNTbGlkZXNXcmFwcGVyIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2Nhbm5vdCB1c2UgbXV0YXRpb24gb2JzZXJ2ZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgICAgIHRoaXMubG9nKCdzdWJzY3JpYmUgdG8gbXV0YXRpb24gb2JzZXJ2ZXInKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCAtPiBtdXRhdGlvbnNMaXN0XCIsIG11dGF0aW9uc0xpc3QpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2c6IE54c0Nhcm91c2VsQ29tcG9uZW50IC0+IHN1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIC0+IE11dGF0aW9uT2JzZXJ2ZXJcIik7XG4gICAgICAgICAgICB0aGlzLmxvZygnbXV0YXRpb24gb2JzZXJ2ZXIgLSBodG1sIGNvbnRlbnQgaGFzIGNoYW5nZWQnKTtcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbnNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgbXVzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoID4gMCB8fCBtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBtdXN0VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG11c3RVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlkZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVNsaWRlcih0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVzOiBmYWxzZSwgfSk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKHRydWUpO1xuICAgIH1cbiAgICBnZXRNYWluU2xpZGVySGVpZ2h0KCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMTAwIC0gdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCkgKyAnJSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBwcml2YXRlIHNldERlZmF1bHRPcHRpb25zKG9wdGlvbnM6IE54c0Nhcm91c2VsT3B0aW9ucywgZm9yRGlhbG9nOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghb3B0aW9ucyAmJiBmb3JEaWFsb2cpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0czogdHJ1ZSwgbG9vcDogdHJ1ZSwgbnhzVGh1bWJuYWlsczogeyBzaG93OiB0cnVlIH0sIGVmZmVjdDogJ3NsaWRlJywgbnhzU2hvd05hdmlnYXRpb25BcnJvd3M6IHRydWUsIG54c1Nob3dJbWFnZXNDb3VudDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFvcHRpb25zKVxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgbnhzU2hvd05hdmlnYXRpb25CdWxsZXRzOiB0cnVlLCBsb29wOiB0cnVlLCBueHNUaHVtYm5haWxzOiB7IHNob3c6IGZhbHNlIH0sIGVmZmVjdDogJ3NsaWRlJywgbnhzU2hvd05hdmlnYXRpb25BcnJvd3M6IHRydWUsIG54c1Nob3dJbWFnZXNDb3VudDogZmFsc2UsIG54c0Nhcm91c2VsRGlhbG9nT3B0aW9uczoge30gfTtcbiAgICAgICAgaWYgKG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMgPSB7IHNob3c6IGZhbHNlIH07XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLmVmZmVjdCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMuZWZmZWN0ID0gJ3NsaWRlJztcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzU2hvd05hdmlnYXRpb25BcnJvd3MgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKCEhb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscz8uc2hvdykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID0gMjA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlclZpZXcgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlclZpZXcgPSAxMDtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzLmJyZWFrcG9pbnRzID0ge1xuICAgICAgICAgICAgICAgICAgICA2NDA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIDc2ODoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogNyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgMTAyNDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogOCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5ueHNUaHVtYm5haWxzKVxuICAgICAgICAgICAgb3B0aW9ucy5ueHNUaHVtYm5haWxzID0geyBzaG93OiBmYWxzZSB9O1xuXG4gICAgICAgIGlmIChvcHRpb25zLm54c1RodW1ibmFpbHMuc2hvdyAmJiB0eXBlb2Ygb3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgb3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQgPSAyMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cgJiYgdHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID0gMTA7XG5cblxuICAgICAgICBpZiAoZm9yRGlhbG9nKVxuICAgICAgICAgICAgb3B0aW9ucy5ueHNmdWxsc2NyZWVuT25DbGljayA9IGZhbHNlO1xuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLm9uTWFpblNsaWRlcilcbiAgICAgICAgICAgIG9wdGlvbnMubnhzU2hvd05hdmlnYXRpb25CdWxsZXRzID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBwdWJsaWMgc2hvd0Z1bGxTY3JlZW5DYXJvdXNlbChpbWFnZXM6IE54c0Nhcm91c2VsSW1hZ2VbXSwgd3JhcHBlckNsYXNzPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMgPSB0aGlzLnNldERlZmF1bHRPcHRpb25zKHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMsIHRydWUpO1xuICAgICAgICBjb25zdCBkYXRhOiBOeHNDYXJvdXNlbERpYWxvZ0RhdGEgPSB7IGltYWdlcywgd3JhcHBlckNsYXNzLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zIH07XG4gICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oTnhzQ2Fyb3VzZWxEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAnbnhzLWNhcm91c2VsLWRpYWxvZycsXG4gICAgICAgICAgICB3aWR0aDogISF0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dTaXplID8gdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZS53aWR0aCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogISF0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dTaXplID8gdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZS5oZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6ICF0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dFeGl0YWJsZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgY3JlYXRlU2xpZGVyKGZvcmNlUmVjcmVhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3ByZXZlbnQgY3JlYXRlU2xpZGVyIDogcGxhdGZvcm0gaXMgc2VydmVyJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm54c1NsaWRlckNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgY3JlYXRlU2xpZGVyIDogbnhzU2xpZGVyQ29udGFpbmVyIGlzIG5vdCBkZWZpbmVkICEnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZygnY3JlYXRlU2xpZGVyJywgdGhpcy5ueHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGlmICh0aGlzLnNsaWRlc0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnY2FuIG5vdCBjcmVhdGVTbGlkZXIgOiBzbGlkZXNDb3VudCA9PT0gMCcpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNsaWRlckluc3RhbmNlICYmICFmb3JjZVJlY3JlYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnY2FuIHJlIGNyZWF0ZSBzbGlkZXIgPT4gc2xpZGVyIGlzIGFscmVhZHkgY3JlYXRlZC4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucGFnaW5hdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBlbDogJy5ueHMtY2Fyb3VzZWwtcGFnaW5hdGlvbicsXG4gICAgICAgICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidWxsZXRzJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubmF2aWdhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBuZXh0RWw6ICcubnhzLWNhcm91c2VsLWJ1dHRvbi1uZXh0JyxcbiAgICAgICAgICAgICAgICBwcmV2RWw6ICcubnhzLWNhcm91c2VsLWJ1dHRvbi1wcmV2JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3dpcGVyTGlicmFyeSlcbiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlckxpYnJhcnkgPSBhd2FpdCBpbXBvcnQoXCJzd2lwZXJcIik7XG4gICAgICAgICAgICBjb25zdCBTd2lwZXIgPSB0aGlzLnN3aXBlckxpYnJhcnkuZGVmYXVsdDtcbiAgICAgICAgICAgIGlmICghIXRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aHVtYm5haWxzT3B0aW9uczogTnhzQ2Fyb3VzZWxPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3LFxuICAgICAgICAgICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZnJlZU1vZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHM6IHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLmJyZWFrcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAvLyBzcGFjZUJldHdlZW46IDEwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy50aHVtYm5haWxzU2xpZGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHRoaXMubnhzVGh1bWJuYWlsc1NsaWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aHVtYm5haWxzT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRodW1icyA9IHsgc3dpcGVyOiB0aGlzLnRodW1ibmFpbHNTbGlkZXJJbnN0YW5jZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZSA9IG5ldyBTd2lwZXIodGhpcy5ueHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMubG9nKCdzbGlkZXJJbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkJywgdGhpcy5zbGlkZXJJbnN0YW5jZSk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLm9uKCdzbGlkZUNoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSB0aGlzLnNsaWRlckluc3RhbmNlLnJlYWxJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2coXCJzbGlkZUNoYW5nZVwiLCB0aGlzLmN1cnJlbnRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRTbGlkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2Uub24oJ2NsaWNrJywgKGV2dDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignbnhzLWNhcm91c2VsLWJ1dHRvbicpICE9PSAtMSB8fCB0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3N3aXBlci1wYWdpbmF0aW9uJykgIT09IC0xKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVDbGljay5uZXh0KGV2dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzZnVsbHNjcmVlbk9uQ2xpY2sgJiYgdGhpcy5pbWFnZXMgJiYgdGhpcy5pbWFnZXMubGVuZ3RoICYmICF0aGlzLmhhc0h0bWxDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dGdWxsU2NyZWVuQ2Fyb3VzZWwodGhpcy5pbWFnZXMsICdmdWxsc2NyZWVuLWNhcm91c2VsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvU2xpZGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdvVG9TbGlkZShpbmRleDogbnVtYmVyLCBzcGVlZD86IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2Uuc2xpZGVUbyhpbmRleCwgc3BlZWQpO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2Uuc2xpZGVOZXh0KCk7XG4gICAgfVxuICAgIHByZXZpb3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2Uuc2xpZGVQcmV2KCk7XG4gICAgfVxufVxuIl19
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBd0QsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQXlCLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBMEM3QixZQUNZLFNBQW9CLEVBQ3BCLElBQVksRUFDUyxVQUFlLEVBQ3hCLE1BQWdDO1FBSDVDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUE3Q2hELHFCQUFnQixHQUE0QixJQUFJLENBQUM7UUFDekQsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQWNoRCxZQUFPLEdBQXVCLEVBQUUsQ0FBQztRQVlqQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUt4QixnQkFBVyxHQUFHLElB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LElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUNwQixPQUFPO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3BCLE9BQU87UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3BCLE9BQU87UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OztZQTdVSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLCsxREFBNEM7Z0JBRTVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN4Qzs7O1lBUlEsU0FBUztZQUh3RyxNQUFNOzRDQXlEdkgsTUFBTSxTQUFDLFdBQVc7WUF4RG9DLHVCQUF1Qix1QkF5RDdFLFFBQVE7OztpQ0F4Q1osU0FBUyxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsrQkFHaEQsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsyQ0FJOUMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt5Q0FFMUQsU0FBUyxTQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt5QkFHeEQsS0FBSyxTQUFDLFNBQVM7d0JBSWYsS0FBSyxTQUFDLFFBQVE7NkJBTWQsS0FBSzswQkFNTCxNQUFNO3lCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgUExBVEZPUk1fSUQsIEluamVjdCwgT3B0aW9uYWwsIE5nWm9uZSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxPcHRpb25zLCBOeHNDYXJvdXNlbEltYWdlLCBTd2lwZXJJbnN0YW5jZSwgTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcgfSBmcm9tICcuL254cy1jYXJvdXNlbC10eXBlcyc7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbERpYWxvZ0RhdGEsIE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRzQ29sbGVjdG9yIH0gZnJvbSAnbmV4dGFseXMtanMtaGVscGVycy9kaXN0L2V2ZW50cyc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ254cy1jYXJvdXNlbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL254cy1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbnhzLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTnhzQ2Fyb3VzZWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICAgIHJlY3JlYXRlU2xpZGVyU3Vic2NyaWJlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZXZlbnRzQ29sbGVjdG9yID0gbmV3IEV2ZW50c0NvbGxlY3RvcigpO1xuICAgIHB1YmxpYyBpbWFnZXM6IE54c0Nhcm91c2VsSW1hZ2VbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ254c1NsaWRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbnhzU2xpZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ254c1NsaWRlc1dyYXBwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1NsaWRlc1dyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLy90aHVtYm5haWxzXG4gICAgQFZpZXdDaGlsZCgnbnhzVGh1bWJuYWlsc1NsaWRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbnhzVGh1bWJuYWlsc1NsaWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnbnhzVGh1bWJuYWlsc1NsaWRlc1dyYXBwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMgPSB7fTtcbiAgICBASW5wdXQoJ29wdGlvbnMnKVxuICAgIHNldCBzZXRPcHRpb25zKHZhbDogTnhzQ2Fyb3VzZWxPcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModmFsLCBmYWxzZSk7XG4gICAgfVxuICAgIEBJbnB1dCgnaW1hZ2VzJylcbiAgICBzZXQgc2V0SW1hZ2VzKHZhbDogTnhzQ2Fyb3VzZWxJbWFnZVtdKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VzID0gdmFsO1xuICAgICAgICB0aGlzLmluaXRTbGlkZXMoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIodHJ1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgaGFzSHRtbENvbnRlbnQgPSBmYWxzZTtcbiAgICBzbGlkZXNDb3VudDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgc2xpZGVySW5zdGFuY2U6IFN3aXBlckluc3RhbmNlO1xuICAgIHB1YmxpYyB0aHVtYm5haWxzU2xpZGVySW5zdGFuY2U6IFN3aXBlckluc3RhbmNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgc2xpZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBwdWJsaWMgY3VycmVudFNsaWRlID0gMDtcbiAgICBAT3V0cHV0KClcbiAgICBzbGlkZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIGlzQnJvd3NlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3dpcGVyTGlicmFyeTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWc/OiBOeHNDYXJvdXNlbE1vZHVsZUNvbmZpZyxcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZylcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0geyBkZWJ1ZzogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgICAgICB0aGlzLmxvZygnY29uc3RydWN0b3IgLSBpc0Jyb3dzZXInLCB0aGlzLmlzQnJvd3Nlcik7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuICAgIHByaXZhdGUgbG9nKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZGVidWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnNvbGUubG9nKCdbTnhzQ2Fyb3VzZWxdJywgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgb25Db250ZW50Q2hhbmdlKGNoYW5nZXM6IE11dGF0aW9uUmVjb3JkW10pIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2c6IE54c0Nhcm91c2VsQ29tcG9uZW50IC0+IG9uQ29udGVudENoYW5nZSAtPiBjaGFuZ2VzXCIsIGNoYW5nZXMpO1xuICAgICAgICAvLyBjaGFuZ2VzLmZvckVhY2goY2hhbmdlID0+IGNvbnNvbGUubG9nKGNoYW5nZS50YXJnZXQpKTtcbiAgICB9XG4gICAgaW5pdFNsaWRlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3ByZXZlbnQgaW5pdFNsaWRlcyBvbiBwbGF0Zm9ybSBzZXJ2ZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubnhzU2xpZGVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgaW5pdFNsaWRlcyA6IG54c1NsaWRlc1dyYXBwZXIgaXMgbm90IGRlZmluZWQgIScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIGJlZ2lucycpO1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0h0bWxDb250ZW50ICYmIHRoaXMuaW1hZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNJbWFnZSBvZiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdzd2lwZXItc2xpZGUnO1xuICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ3VybCgnICsgY0ltYWdlLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbEltYWdlQmFja2dyb3VuZFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZFNpemUgPSB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxJbWFnZUJhY2tncm91bmRTaXplO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICghIXRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNJbWFnZSBvZiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gJ3N3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ3VybCgnICsgY0ltYWdlLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnhzVGh1bWJuYWlsc1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaW1hZ2VzIGFyZSBkZWZpbmVkIC0gc2xpZGVzIGNvdW50ID0+ICcsIHRoaXMuc2xpZGVzQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaHRtbCBjb250ZW50IC0gc2xpZGVzIGxlbmd0aCA9PiAnLCB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5jbGFzc05hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuY2xhc3NOYW1lLmluZGV4T2YoJ3N3aXBlci1zbGlkZScpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NOYW1lICs9ICcgc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaHRtbCBjb250ZW50IC0gc2xpZGVzIGNvdW50ID0+ICcsIHRoaXMuc2xpZGVzQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRzQ29sbGVjdG9yPy51bnN1YnNjcmliZUFsbCgpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZT8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3N1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIGNhbm5vdCBiZSBzdWJzY3JpYmVkIDogaGFzIG5vIGh0bWwgY29udGVudCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ueHNTbGlkZXNXcmFwcGVyIHx8ICF0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3N1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIGVycm9yIDogbnhzU2xpZGVzV3JhcHBlciBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW5ub3QgdXNlIG11dGF0aW9uIG9ic2VydmVyJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlIHRvIG11dGF0aW9uIG9ic2VydmVyJyk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0KSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkxvZzogTnhzQ2Fyb3VzZWxDb21wb25lbnQgLT4gc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgLT4gbXV0YXRpb25zTGlzdFwiLCBtdXRhdGlvbnNMaXN0KTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCAtPiBNdXRhdGlvbk9ic2VydmVyXCIpO1xuICAgICAgICAgICAgdGhpcy5sb2coJ211dGF0aW9uIG9ic2VydmVyIC0gaHRtbCBjb250ZW50IGhhcyBjaGFuZ2VkJyk7XG4gICAgICAgICAgICBpZiAobXV0YXRpb25zTGlzdC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IG11c3RVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDAgfHwgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbXVzdFVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtdXN0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlczogZmFsc2UsIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgICAgICB0aGlzLmNyZWF0ZVNsaWRlcih0cnVlKTtcbiAgICB9XG4gICAgZ2V0TWFpblNsaWRlckhlaWdodCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMub25NYWluU2xpZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDEwMCAtIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpICsgJyUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMsIGZvckRpYWxvZzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIW9wdGlvbnMgJiYgZm9yRGlhbG9nKSB7XG4gICAgICAgICAgICBvcHRpb25zID0geyBueHNTaG93TmF2aWdhdGlvbkJ1bGxldHM6IHRydWUsIGxvb3A6IHRydWUsIG54c1RodW1ibmFpbHM6IHsgc2hvdzogdHJ1ZSB9LCBlZmZlY3Q6ICdzbGlkZScsIG54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzOiB0cnVlLCBueHNTaG93SW1hZ2VzQ291bnQ6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghb3B0aW9ucylcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0czogdHJ1ZSwgbG9vcDogdHJ1ZSwgbnhzVGh1bWJuYWlsczogeyBzaG93OiBmYWxzZSB9LCBlZmZlY3Q6ICdzbGlkZScsIG54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzOiB0cnVlLCBueHNTaG93SW1hZ2VzQ291bnQ6IGZhbHNlLCBueHNDYXJvdXNlbERpYWxvZ09wdGlvbnM6IHt9IH07XG4gICAgICAgIGlmIChvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID0geyBzaG93OiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5lZmZlY3QgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLmVmZmVjdCA9ICdzbGlkZSc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNTaG93TmF2aWdhdGlvbkFycm93cyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghIW9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHM/LnNob3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9IDIwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID0gMTA7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgNjQwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICA3Njg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDgsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMubnhzVGh1bWJuYWlscylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscyA9IHsgc2hvdzogZmFsc2UgfTtcblxuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cgJiYgdHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID0gMjA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93ICYmIHR5cGVvZiBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9IDEwO1xuXG5cbiAgICAgICAgaWYgKGZvckRpYWxvZylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzZnVsbHNjcmVlbk9uQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpXG4gICAgICAgICAgICBvcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0cyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgcHVibGljIHNob3dGdWxsU2NyZWVuQ2Fyb3VzZWwoaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW10sIHdyYXBwZXJDbGFzcz86IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zID0gdGhpcy5zZXREZWZhdWx0T3B0aW9ucyh0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZGF0YTogTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhID0geyBpbWFnZXMsIHdyYXBwZXJDbGFzcywgb3B0aW9uczogdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucyB9O1xuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ254cy1jYXJvdXNlbC1kaWFsb2cnLFxuICAgICAgICAgICAgd2lkdGg6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUud2lkdGggOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBoZWlnaHQ6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUuaGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiAhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nRXhpdGFibGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVNsaWRlcihmb3JjZVJlY3JlYXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdwcmV2ZW50IGNyZWF0ZVNsaWRlciA6IHBsYXRmb3JtIGlzIHNlcnZlcicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ueHNTbGlkZXJDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW4gbm90IGNyZWF0ZVNsaWRlciA6IG54c1NsaWRlckNvbnRhaW5lciBpcyBub3QgZGVmaW5lZCAhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ2NyZWF0ZVNsaWRlcicsIHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5zbGlkZXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgY3JlYXRlU2xpZGVyIDogc2xpZGVzQ291bnQgPT09IDAnKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zbGlkZXJJbnN0YW5jZSAmJiAhZm9yY2VSZWNyZWF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiByZSBjcmVhdGUgc2xpZGVyID0+IHNsaWRlciBpcyBhbHJlYWR5IGNyZWF0ZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgZWw6ICcubnhzLWNhcm91c2VsLXBhZ2luYXRpb24nLFxuICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnVsbGV0cycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm5hdmlnYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbmV4dEVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tbmV4dCcsXG4gICAgICAgICAgICAgICAgcHJldkVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tcHJldicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN3aXBlckxpYnJhcnkpXG4gICAgICAgICAgICAgICAgdGhpcy5zd2lwZXJMaWJyYXJ5ID0gYXdhaXQgaW1wb3J0KFwic3dpcGVyXCIpO1xuICAgICAgICAgICAgY29uc3QgU3dpcGVyID0gdGhpcy5zd2lwZXJMaWJyYXJ5LmRlZmF1bHQ7XG4gICAgICAgICAgICBpZiAoISF0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsc09wdGlvbnM6IE54c0Nhcm91c2VsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZyZWVNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Zpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BhY2VCZXR3ZWVuOiAxMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc1NsaWRlckluc3RhbmNlID0gbmV3IFN3aXBlcih0aGlzLm54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGh1bWJuYWlsc09wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aHVtYnMgPSB7IHN3aXBlcjogdGhpcy50aHVtYm5haWxzU2xpZGVySW5zdGFuY2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmxvZygnc2xpZGVySW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCcsIHRoaXMuc2xpZGVySW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZS5vbignc2xpZGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gdGhpcy5zbGlkZXJJbnN0YW5jZS5yZWFsSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nKFwic2xpZGVDaGFuZ2VcIiwgdGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLm9uKCdjbGljaycsIChldnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ254cy1jYXJvdXNlbC1idXR0b24nKSAhPT0gLTEgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItcGFnaW5hdGlvbicpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2xpY2submV4dChldnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c2Z1bGxzY3JlZW5PbkNsaWNrICYmIHRoaXMuaW1hZ2VzICYmIHRoaXMuaW1hZ2VzLmxlbmd0aCAmJiAhdGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RnVsbFNjcmVlbkNhcm91c2VsKHRoaXMuaW1hZ2VzLCAnZnVsbHNjcmVlbi1jYXJvdXNlbCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvU2xpZGUoaW5kZXg6IG51bWJlciwgc3BlZWQ/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlVG8oaW5kZXgsIHNwZWVkKTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlTmV4dCgpO1xuICAgIH1cbiAgICBwcmV2aW91cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlUHJldigpO1xuICAgIH1cbn1cbiJdfQ==
@@ -96,10 +96,10 @@ class NxsCarouselComponent {
96
96
  this.zone.runOutsideAngular(() => {
97
97
  if (!this.hasHtmlContent && this.images) {
98
98
  this.nxsSlidesWrapper.nativeElement.innerHTML = '';
99
- for (let i = 0; i < this.images.length; i++) {
99
+ for (const cImage of this.images) {
100
100
  const div = document.createElement('div');
101
101
  div.className = 'swiper-slide';
102
- div.style.backgroundImage = 'url(' + this.images[i].src + ')';
102
+ div.style.backgroundImage = 'url(' + cImage.src + ')';
103
103
  if (this.options.nxsCarouselImageBackgroundSize)
104
104
  div.style.backgroundSize = this.options.nxsCarouselImageBackgroundSize;
105
105
  this.nxsSlidesWrapper.nativeElement.appendChild(div);
@@ -107,10 +107,10 @@ class NxsCarouselComponent {
107
107
  this.slidesCount = this.images.length;
108
108
  if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
109
109
  this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';
110
- for (let i = 0; i < this.images.length; i++) {
110
+ for (const cImage of this.images) {
111
111
  const div = document.createElement('div');
112
112
  div.className = 'swiper-slide';
113
- div.style.backgroundImage = 'url(' + this.images[i].src + ')';
113
+ div.style.backgroundImage = 'url(' + cImage.src + ')';
114
114
  this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);
115
115
  }
116
116
  }
@@ -118,6 +118,7 @@ class NxsCarouselComponent {
118
118
  }
119
119
  else if (this.hasHtmlContent) {
120
120
  this.log('initSlides - html content - slides length => ', this.nxsSlidesWrapper.nativeElement.children.length);
121
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
121
122
  for (let i = 0; i < this.nxsSlidesWrapper.nativeElement.children.length; i++) {
122
123
  const child = this.nxsSlidesWrapper.nativeElement.children[i];
123
124
  if (!child.className)
@@ -131,15 +132,17 @@ class NxsCarouselComponent {
131
132
  }
132
133
  });
133
134
  }
134
- ngOnDestroy() {
135
+ destroy() {
136
+ var _a, _b, _c;
135
137
  if (!this.isBrowser) {
136
138
  return;
137
139
  }
138
- this.eventsCollector.unsubscribeAll();
139
- if (this.mutationObserver)
140
- this.mutationObserver.disconnect();
141
- if (this.sliderInstance)
142
- this.sliderInstance.destroy();
140
+ (_a = this.eventsCollector) === null || _a === void 0 ? void 0 : _a.unsubscribeAll();
141
+ (_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
142
+ (_c = this.sliderInstance) === null || _c === void 0 ? void 0 : _c.destroy();
143
+ }
144
+ ngOnDestroy() {
145
+ this.destroy();
143
146
  }
144
147
  subscribeToSlideChanged() {
145
148
  if (!this.hasHtmlContent) {
@@ -269,8 +272,7 @@ class NxsCarouselComponent {
269
272
  return;
270
273
  }
271
274
  this.zone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
272
- if (this.sliderInstance)
273
- this.sliderInstance.destroy();
275
+ this.destroy();
274
276
  this.options.pagination = {
275
277
  el: '.nxs-carousel-pagination',
276
278
  clickable: true,