@decaf-ts/for-angular 0.0.20 → 0.0.22
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.
- package/esm2022/components/list/list.component.mjs +13 -6
- package/esm2022/components/list-item/list-item.component.mjs +4 -2
- package/esm2022/components/pagination/pagination.component.mjs +4 -5
- package/fesm2022/decaf-ts-for-angular.mjs +15 -9
- package/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ import { NavController } from '@ionic/angular';
|
|
|
9
9
|
import { IonButton, IonItem, IonLabel, IonList, IonContent, IonIcon, IonListHeader, IonPopover, IonItemSliding, IonItemOptions, IonItemOption } from '@ionic/angular/standalone';
|
|
10
10
|
import * as AllIcons from 'ionicons/icons';
|
|
11
11
|
import { addIcons } from 'ionicons';
|
|
12
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
/**
|
|
14
15
|
* @description A component for displaying a list item with various customization options.
|
|
@@ -351,7 +352,7 @@ let ListItemComponent = class ListItemComponent extends NgxBaseComponent {
|
|
|
351
352
|
this.actionMenuOpen = true;
|
|
352
353
|
}
|
|
353
354
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
354
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListItemComponent, isStandalone: true, selector: "ngx-decaf-list-item", inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "window:resize": "enableSlideItems($event)" } }, viewQueries: [{ propertyName: "actionMenuComponent", first: true, predicate: ["actionMenuComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n @if(description) {\n <div class=\"dcf-description\" [innerHTML]=\"description\"></div>\n }\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n @if(info) {\n <span [innerHTML]=\"info\"></span>\n }\n @if(subinfo) {\n <div class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n }\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 639) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"], dependencies: [{ kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }] }); }
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListItemComponent, isStandalone: true, selector: "ngx-decaf-list-item", inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "window:resize": "enableSlideItems($event)" } }, viewQueries: [{ propertyName: "actionMenuComponent", first: true, predicate: ["actionMenuComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n @if(description) {\n <div class=\"dcf-description\" [innerHTML]=\"description\"></div>\n }\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n @if(info) {\n <span [innerHTML]=\"info\"></span>\n }\n @if(subinfo) {\n <div class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n }\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 639) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }] }); }
|
|
355
356
|
};
|
|
356
357
|
ListItemComponent = __decorate([
|
|
357
358
|
Dynamic(),
|
|
@@ -361,6 +362,7 @@ export { ListItemComponent };
|
|
|
361
362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, decorators: [{
|
|
362
363
|
type: Component,
|
|
363
364
|
args: [{ selector: 'ngx-decaf-list-item', standalone: true, imports: [
|
|
365
|
+
TranslatePipe,
|
|
364
366
|
IonList,
|
|
365
367
|
IonListHeader,
|
|
366
368
|
IonItem,
|
|
@@ -400,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
400
402
|
type: HostListener,
|
|
401
403
|
args: ['window:resize', ['$event']]
|
|
402
404
|
}] } });
|
|
403
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7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eUZBQ1AsYUFBYSxnR0FDYixPQUFPLDBOQUNQLGNBQWMsbUZBQ2QsY0FBYywrRUFDZCxhQUFhLDhKQUNiLE9BQU8sMkpBQ1AsUUFBUSw2RkFDUixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsVUFBVTs7QUFJRCxpQkFBaUI7SUFyQjdCLE9BQU8sRUFBRTs7R0FxQkcsaUJBQWlCLENBaWE3Qjs7NEZBamFZLGlCQUFpQjtrQkFwQjdCLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7cUJBQ1g7d0RBZUQsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLHFCQUFxQjtnQkFjaEMsS0FBSztzQkFESixLQUFLO2dCQWFHLElBQUk7c0JBRFosS0FBSztnQkFhTixJQUFJO3NCQURILEtBQUs7Z0JBY04sUUFBUTtzQkFEUCxLQUFLO2dCQWNOLE1BQU07c0JBREwsS0FBSztnQkFhTixLQUFLO3NCQURKLEtBQUs7Z0JBYU4sV0FBVztzQkFEVixLQUFLO2dCQWFOLElBQUk7c0JBREgsS0FBSztnQkFhTixPQUFPO3NCQUROLEtBQUs7Z0JBYU4sVUFBVTtzQkFEVCxNQUFNO2dCQW1MUCxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3J1ZE9wZXJhdGlvbnMsIE9wZXJhdGlvbktleXMgfSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBTdHJpbmdPckJvb2xlYW4gfSBmcm9tICcuLi8uLi9lbmdpbmUvdHlwZXMnO1xuaW1wb3J0IHsgTmd4QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZS9OZ3hCYXNlQ29tcG9uZW50JztcbmltcG9ydCB7IHJlbW92ZUZvY3VzVHJhcCwgc3RyaW5nVG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBnZXRXaW5kb3dXaWR0aCwgd2luZG93RXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBEeW5hbWljLCBFdmVudENvbnN0YW50cywgTGlzdEl0ZW1DdXN0b21FdmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uTGlzdCxcbiAgSW9uQ29udGVudCxcbiAgSW9uSWNvbixcbiAgSW9uTGlzdEhlYWRlcixcbiAgSW9uUG9wb3ZlcixcbiAgSW9uSXRlbVNsaWRpbmcsXG4gIElvbkl0ZW1PcHRpb25zLFxuICBJb25JdGVtT3B0aW9uXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0ICogYXMgQWxsSWNvbnMgZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYSBsaXN0IGl0ZW0gd2l0aCB2YXJpb3VzIGN1c3RvbWl6YXRpb24gb3B0aW9ucy5cbiAqIEBzdW1tYXJ5IFRoZSBMaXN0SXRlbUNvbXBvbmVudCBpcyBhbiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudC4gSXQgcHJvdmlkZXMgYSBmbGV4aWJsZSBhbmQgY3VzdG9taXphYmxlIGxpc3QgaXRlbSBpbnRlcmZhY2Ugd2l0aCBzdXBwb3J0IGZvciBpY29ucywgYnV0dG9ucywgYW5kIHZhcmlvdXMgdGV4dCBlbGVtZW50cy4gVGhlIGNvbXBvbmVudCBhbHNvIGhhbmRsZXMgYWN0aW9ucyBhbmQgbmF2aWdhdGlvbiBiYXNlZCBvbiB1c2VyIGludGVyYWN0aW9ucy5cbiAqXG4gKiBAY2xhc3NcbiAqIEBleHRlbmRzIE5neEJhc2VDb21wb25lbnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xpbmVzPSdub25lJ10gLSBEZXRlcm1pbmVzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSBpdGVtLiBDYW4gYmUgJ2luc2V0JywgJ2luc2VldCcsIG9yICdub25lJy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gaXRlbSAtIFRoZSBkYXRhIGl0ZW0gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbiAtIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEBwYXJhbSB7J3N0YXJ0JyB8ICdlbmQnfSBbaWNvblNsb3Q9J3N0YXJ0J10gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGljb24gd2l0aGluIHRoZSBpdGVtLlxuICogQHBhcmFtIHtTdHJpbmdPckJvb2xlYW59IFtidXR0b249dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBpdGVtIHNob3VsZCBiZWhhdmUgYXMgYSBidXR0b24uXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RpdGxlXSAtIFRoZSBtYWluIHRpdGxlIG9mIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Rlc2NyaXB0aW9uXSAtIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2luZm9dIC0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3ViaW5mb10gLSBTdWItaW5mb3JtYXRpb24gZm9yIHRoZSBsaXN0IGl0ZW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIDxuZ3gtZGVjYWYtbGlzdC1pdGVtXG4gKiAgIFtpdGVtXT1cImRhdGFJdGVtXCJcbiAqICAgaWNvbj1cInN0YXJcIlxuICogICB0aXRsZT1cIkl0ZW0gVGl0bGVcIlxuICogICBkZXNjcmlwdGlvbj1cIkl0ZW0gRGVzY3JpcHRpb25cIlxuICogICAoY2xpY2tFdmVudCk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICogPC9uZ3gtZGVjYWYtbGlzdC1pdGVtPlxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQyBhcyBDb21wb25lbnRcbiAqICAgcGFydGljaXBhbnQgViBhcyBWaWV3XG4gKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICogICBDLT4+VjogSW5pdGlhbGl6ZSBjb21wb25lbnRcbiAqICAgVi0+PlU6IERpc3BsYXkgbGlzdCBpdGVtXG4gKiAgIFUtPj5WOiBDbGljayBvbiBpdGVtIG9yIGFjdGlvblxuICogICBWLT4+QzogVHJpZ2dlciBoYW5kbGVBY3Rpb24oKVxuICogICBDLT4+QzogUHJvY2VzcyBhY3Rpb25cbiAqICAgQy0+PlY6IFVwZGF0ZSB2aWV3IG9yIG5hdmlnYXRlXG4gKi9cbkBEeW5hbWljKClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kZWNhZi1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25MaXN0LFxuICAgIElvbkxpc3RIZWFkZXIsXG4gICAgSW9uSXRlbSxcbiAgICBJb25JdGVtU2xpZGluZyxcbiAgICBJb25JdGVtT3B0aW9ucyxcbiAgICBJb25JdGVtT3B0aW9uLFxuICAgIElvbkljb24sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uUG9wb3ZlclxuICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgTGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgYWN0aW9uIG1lbnUgcG9wb3ZlciBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IFZpZXdDaGlsZCByZWZlcmVuY2UgdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIEhUTUxJb25Qb3BvdmVyRWxlbWVudFxuICAgKiB1c2VkIGZvciBkaXNwbGF5aW5nIGFjdGlvbiBtZW51cy4gVGhpcyByZWZlcmVuY2UgaXMgdXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5XG4gICAqIGNvbnRyb2wgdGhlIHBvcG92ZXIsIHN1Y2ggYXMgZGlzbWlzc2luZyBpdCB3aGVuIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogQHR5cGUge0hUTUxJb25Qb3BvdmVyRWxlbWVudH1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBAVmlld0NoaWxkKCdhY3Rpb25NZW51Q29tcG9uZW50JylcbiAgYWN0aW9uTWVudUNvbXBvbmVudCE6IEhUTUxJb25Qb3BvdmVyRWxlbWVudDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIGxpbmVzIGFyb3VuZCB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGhvdyBsaW5lcyBhcmUgZGlzcGxheWVkIGFyb3VuZCB0aGUgbGlzdCBpdGVtIGJvcmRlcnMuXG4gICAqICdpbnNldCcgc2hvd3MgbGluZXMgd2l0aCBwYWRkaW5nLCAnZnVsbCcgc2hvd3MgZnVsbC13aWR0aCBsaW5lcywgYW5kICdub25lJ1xuICAgKiByZW1vdmVzIGFsbCBsaW5lcy4gVGhpcyBhZmZlY3RzIHRoZSB2aXN1YWwgc2VwYXJhdGlvbiBiZXR3ZWVuIGxpc3QgaXRlbXMuXG4gICAqXG4gICAqIEB0eXBlIHsnaW5zZXQnIHwgJ2Z1bGwnIHwgJ25vbmUnfVxuICAgKiBAZGVmYXVsdCAnaW5zZXQnXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgbGluZXM6ICdpbnNldCcgfCAnZnVsbCcgfCAnbm9uZScgPSAnZnVsbCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBDb250YWlucyB0aGUgcmF3IGRhdGEgdGhhdCB0aGlzIGxpc3QgaXRlbSByZXByZXNlbnRzLiBUaGlzIG9iamVjdFxuICAgKiBpcyB1c2VkIHRvIGV4dHJhY3QgZGlzcGxheSBpbmZvcm1hdGlvbiBhbmQgZm9yIHBhc3NpbmcgdG8gZXZlbnQgaGFuZGxlcnNcbiAgICogd2hlbiB0aGUgaXRlbSBpcyBpbnRlcmFjdGVkIHdpdGguIEl0IG92ZXJyaWRlcyB0aGUgYmFzZSBpdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgaXRlbSE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gZGlzcGxheSBpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgd2hpY2ggaWNvbiB0byBkaXNwbGF5IHVzaW5nIElvbmljJ3MgaWNvbiBzeXN0ZW0uXG4gICAqIFRoZSBpY29uIG5hbWUgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYW4gYXZhaWxhYmxlIElvbmljIGljb24gb3IgYSBjdXN0b21cbiAgICogaWNvbiB0aGF0IGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aCB0aGUgaWNvbiByZWdpc3RyeS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUG9zaXRpb24gb2YgdGhlIGljb24gd2l0aGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBhcHBlYXJzIGF0IHRoZSBzdGFydCAobGVmdCBpbiBMVFIgbGFuZ3VhZ2VzKVxuICAgKiBvciBlbmQgKHJpZ2h0IGluIExUUiBsYW5ndWFnZXMpIG9mIHRoZSBsaXN0IGl0ZW0uIFRoaXMgYWZmZWN0cyB0aGUgb3ZlcmFsbFxuICAgKiBsYXlvdXQgYW5kIHZpc3VhbCBoaWVyYXJjaHkgb2YgdGhlIGl0ZW0gY29udGVudC5cbiAgICpcbiAgICogQHR5cGUgeydzdGFydCcgfCAnZW5kJ31cbiAgICogQGRlZmF1bHQgJ3N0YXJ0J1xuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb25TbG90OiAnc3RhcnQnIHwgJ2VuZCcgPSdzdGFydCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGV0aGVyIHRoZSBsaXN0IGl0ZW0gYmVoYXZlcyBhcyBhIGNsaWNrYWJsZSBidXR0b24uXG4gICAqIEBzdW1tYXJ5IFdoZW4gc2V0IHRvIHRydWUsIHRoZSBsaXN0IGl0ZW0gd2lsbCBoYXZlIGJ1dHRvbi1saWtlIGJlaGF2aW9yIGluY2x1ZGluZ1xuICAgKiBob3ZlciBlZmZlY3RzLCBjbGljayBoYW5kbGluZywgYW5kIGFwcHJvcHJpYXRlIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcy5cbiAgICogV2hlbiBmYWxzZSwgdGhlIGl0ZW0gaXMgZGlzcGxheWVkIGFzIHN0YXRpYyBjb250ZW50IHdpdGhvdXQgaW50ZXJhY3RpdmUgYmVoYXZpb3IuXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmdPckJvb2xlYW59XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBidXR0b246IFN0cmluZ09yQm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbWFpbiB0aXRsZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBTZXRzIHRoZSBwcmltYXJ5IHRleHQgY29udGVudCB0aGF0IGFwcGVhcnMgcHJvbWluZW50bHkgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdGhlIG1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtIGFuZCBpcyBkaXNwbGF5ZWRcbiAgICogd2l0aCBlbXBoYXNpcyBpbiB0aGUgY29tcG9uZW50J3MgdmlzdWFsIGhpZXJhcmNoeS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNlY29uZGFyeSBkZXNjcmlwdGl2ZSB0ZXh0IGZvciB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyBhZGRpdGlvbmFsIGNvbnRleHQgb3IgZGV0YWlscyBhYm91dCB0aGUgaXRlbS4gVGhpcyB0ZXh0XG4gICAqIGlzIHR5cGljYWxseSBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRpdGxlIHdpdGggbGVzcyB2aXN1YWwgZW1waGFzaXMuXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIGNvbnRleHQgd2l0aG91dCBjbHV0dGVyaW5nIHRoZSBtYWluIHRpdGxlLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0ZXh0IGZvciB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBEaXNwbGF5cyBzdXBwbGVtZW50YXJ5IGluZm9ybWF0aW9uIHRoYXQgcHJvdmlkZXMgZXh0cmEgY29udGV4dFxuICAgKiBhYm91dCB0aGUgaXRlbS4gVGhpcyBjb3VsZCBpbmNsdWRlIG1ldGFkYXRhLCBzdGF0dXMgaW5mb3JtYXRpb24sIG9yXG4gICAqIG90aGVyIHJlbGV2YW50IGRldGFpbHMgdGhhdCBkb24ndCBmaXQgaW4gdGhlIHRpdGxlIG9yIGRlc2NyaXB0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGluZm8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdWItaW5mb3JtYXRpb24gdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgdGVydGlhcnkgbGV2ZWwgaW5mb3JtYXRpb24gdGhhdCBjb21wbGVtZW50cyB0aGUgaW5mbyBmaWVsZC5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgYWRkaXRpb25hbCBtZXRhZGF0YSBvciBjb250ZXh0dWFsIGRldGFpbHNcbiAgICogdGhhdCBhcmUgdXNlZnVsIGJ1dCBub3QgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGl0ZW0uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgc3ViaW5mbz86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50IGVtaXR0ZXIgZm9yIGxpc3QgaXRlbSBjbGljayBpbnRlcmFjdGlvbnMuXG4gICAqIEBzdW1tYXJ5IEVtaXRzIGN1c3RvbSBldmVudHMgd2hlbiB0aGUgbGlzdCBpdGVtIGlzIGNsaWNrZWQgb3Igd2hlbiBhY3Rpb25zXG4gICAqIGFyZSBwZXJmb3JtZWQgb24gaXQuIFRoZSBlbWl0dGVkIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhY3Rpb24sXG4gICAqIHRoZSBpdGVtIGRhdGEsIGFuZCBvdGhlciByZWxldmFudCBjb250ZXh0IGZvciBwYXJlbnQgY29tcG9uZW50cyB0byBoYW5kbGUuXG4gICAqXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8TGlzdEl0ZW1DdXN0b21FdmVudD59XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsaWNrRXZlbnQ6ICBFdmVudEVtaXR0ZXI8TGlzdEl0ZW1DdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtQ3VzdG9tRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBzbGlkZSBpdGVtcyBhcmUgY3VycmVudGx5IGVuYWJsZWQuXG4gICAqIEBzdW1tYXJ5IENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHNsaWRlIGFjdGlvbnMgYmFzZWQgb24gc2NyZWVuIHNpemUgYW5kXG4gICAqIGF2YWlsYWJsZSBvcGVyYXRpb25zLiBXaGVuIHRydWUsIHVzZXJzIGNhbiBzd2lwZSBvbiB0aGUgaXRlbSB0byByZXZlYWxcbiAgICogYWN0aW9uIGJ1dHRvbnMgZm9yIG9wZXJhdGlvbnMgbGlrZSBlZGl0IGFuZCBkZWxldGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHNob3dTbGlkZUl0ZW1zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHdpbmRvdyB3aWR0aCBpbiBwaXhlbHMuXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCBicm93c2VyIHdpbmRvdyB3aWR0aCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZVxuICAgKiByZXNwb25zaXZlIGJlaGF2aW9yLCBzdWNoIGFzIHdoZW4gdG8gc2hvdyBvciBoaWRlIHNsaWRlIGl0ZW1zIGJhc2VkIG9uXG4gICAqIHNjcmVlbiBzaXplLiBVcGRhdGVkIGF1dG9tYXRpY2FsbHkgb24gd2luZG93IHJlc2l6ZSBldmVudHMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgd2luZG93V2lkdGghOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgYWN0aW9uIG1lbnUgcG9wb3ZlciBpcyBjdXJyZW50bHkgb3Blbi5cbiAgICogQHN1bW1hcnkgVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYWN0aW9uIG1lbnUgdG8gcHJldmVudCBtdWx0aXBsZSBpbnN0YW5jZXNcbiAgICogZnJvbSBiZWluZyBvcGVuZWQgc2ltdWx0YW5lb3VzbHkgYW5kIHRvIGVuc3VyZSBwcm9wZXIgY2xlYW51cCB3aGVuIGFjdGlvbnNcbiAgICogYXJlIHBlcmZvcm1lZC4gVXNlZCBmb3IgbWFuYWdpbmcgdGhlIHBvcG92ZXIgbGlmZWN5Y2xlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhY3Rpb25NZW51T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQW5ndWxhciBOYXZDb250cm9sbGVyIHNlcnZpY2UgZm9yIGhhbmRsaW5nIG5hdmlnYXRpb24uXG4gICAqIEBzdW1tYXJ5IEluamVjdGVkIHNlcnZpY2UgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciBwcm9ncmFtbWF0aWMgbmF2aWdhdGlvblxuICAgKiB3aXRoaW4gdGhlIElvbmljIGFwcGxpY2F0aW9uLiBVc2VkIGZvciBuYXZpZ2F0aW5nIHRvIGRpZmZlcmVudCByb3V0ZXMgd2hlblxuICAgKiBsaXN0IGl0ZW0gYWN0aW9ucyBhcmUgcGVyZm9ybWVkIG9yIHdoZW4gdGhlIGl0ZW0gaXRzZWxmIGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtOYXZDb250cm9sbGVyfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlciA9IGluamVjdChOYXZDb250cm9sbGVyKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTGlzdEl0ZW1Db21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIGEgbmV3IExpc3RJdGVtQ29tcG9uZW50IGJ5IGNhbGxpbmcgdGhlIHBhcmVudCBjbGFzcyBjb25zdHJ1Y3RvclxuICAgKiB3aXRoIHRoZSBjb21wb25lbnQgbmFtZSBmb3IgbG9nZ2luZyBhbmQgaWRlbnRpZmljYXRpb24gcHVycG9zZXMuIEFsc28gcmVnaXN0ZXJzXG4gICAqIGFsbCBhdmFpbGFibGUgSW9uaWMgaWNvbnMgdG8gZW5zdXJlIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiTGlzdEl0ZW1Db21wb25lbnRcIik7XG4gICAgYWRkSWNvbnMoQWxsSWNvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgYWZ0ZXIgQW5ndWxhciBmaXJzdCBkaXNwbGF5cyB0aGUgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzLlxuICAgKiBAc3VtbWFyeSBTZXRzIHVwIHRoZSBjb21wb25lbnQgYnkgZGV0ZXJtaW5pbmcgc2xpZGUgaXRlbSB2aXNpYmlsaXR5LCBwcm9jZXNzaW5nIGJvb2xlYW4gaW5wdXRzLFxuICAgKiBidWlsZGluZyBDU1MgY2xhc3MgbmFtZXMgYmFzZWQgb24gcHJvcGVydGllcywgYW5kIGNhcHR1cmluZyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGguXG4gICAqIFRoaXMgbWV0aG9kIHByZXBhcmVzIHRoZSBjb21wb25lbnQgZm9yIHVzZXIgaW50ZXJhY3Rpb24gYnkgZW5zdXJpbmcgYWxsIHByb3BlcnRpZXMgYXJlXG4gICAqIHByb3Blcmx5IGluaXRpYWxpemVkIGFuZCByZXNwb25zaXZlIGJlaGF2aW9yIGlzIGNvbmZpZ3VyZWQuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQW5ndWxhciBMaWZlY3ljbGVcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgVyBhcyBXaW5kb3dcbiAgICpcbiAgICogICBBLT4+TDogbmdPbkluaXQoKVxuICAgKiAgIEwtPj5MOiBlbmFibGVTbGlkZUl0ZW1zKClcbiAgICogICBMLT4+TDogUHJvY2VzcyBidXR0b24gYm9vbGVhblxuICAgKiAgIEwtPj5MOiBCdWlsZCBjbGFzc05hbWUgd2l0aCBmbGV4IGNsYXNzZXNcbiAgICogICBhbHQgb3BlcmF0aW9ucyBleGlzdFxuICAgKiAgICAgTC0+Pkw6IEFkZCAnYWN0aW9uJyBjbGFzc1xuICAgKiAgIGVuZFxuICAgKiAgIEwtPj5XOiBnZXRXaW5kb3dXaWR0aCgpXG4gICAqICAgVy0tPj5MOiBSZXR1cm4gY3VycmVudCB3aWR0aFxuICAgKiAgIEwtPj5MOiBTdG9yZSB3aW5kb3dXaWR0aFxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2hvd1NsaWRlSXRlbXMgPSB0aGlzLmVuYWJsZVNsaWRlSXRlbXMoKTtcbiAgICB0aGlzLmJ1dHRvbiA9IHN0cmluZ1RvQm9vbGVhbih0aGlzLmJ1dHRvbik7XG5cbiAgICB0aGlzLmNsYXNzTmFtZSA9IGAke3RoaXMuY2xhc3NOYW1lfSAgZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGdyaWQtaXRlbWA7XG4gICAgaWYodGhpcy5vcGVyYXRpb25zPy5sZW5ndGgpXG4gICAgICB0aGlzLmNsYXNzTmFtZSArPSBgIGFjdGlvbmA7XG4gICAgdGhpcy53aW5kb3dXaWR0aCA9IGdldFdpbmRvd1dpZHRoKCkgYXMgbnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIHVzZXIgaW50ZXJhY3Rpb25zIGFuZCBhY3Rpb25zIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBpcyB0aGUgY2VudHJhbCBhY3Rpb24gaGFuZGxlciBmb3IgbGlzdCBpdGVtIGludGVyYWN0aW9ucy4gSXQgbWFuYWdlc1xuICAgKiBldmVudCBwcm9wYWdhdGlvbiwgZGlzbWlzc2VzIG9wZW4gYWN0aW9uIG1lbnVzLCByZW1vdmVzIGZvY3VzIHRyYXBzLCBhbmQgZWl0aGVyIGVtaXRzXG4gICAqIGV2ZW50cyBmb3IgcGFyZW50IGNvbXBvbmVudHMgdG8gaGFuZGxlIG9yIHBlcmZvcm1zIG5hdmlnYXRpb24gYmFzZWQgb24gdGhlIGNvbXBvbmVudCdzXG4gICAqIHJvdXRlIGNvbmZpZ3VyYXRpb24uIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGJvdGggZXZlbnQtZHJpdmVuIGFuZCBuYXZpZ2F0aW9uLWRyaXZlbiBhcmNoaXRlY3R1cmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NydWRPcGVyYXRpb25zfSBhY3Rpb24gLSBUaGUgdHlwZSBvZiBDUlVEIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWRcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBUaGUgYnJvd3NlciBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gT3B0aW9uYWwgdGFyZ2V0IGVsZW1lbnQgZm9yIHRoZSBldmVudFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW58dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIG5hdmlnYXRpb24gc3VjY2VzcyBvciB2b2lkIGZvciBldmVudHNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFAgYXMgUGFyZW50IENvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IE4gYXMgTmF2Q29udHJvbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IEUgYXMgRXZlbnQgU3lzdGVtXG4gICAqXG4gICAqICAgVS0+Pkw6IFBlcmZvcm0gYWN0aW9uIChjbGljay9zd2lwZSlcbiAgICogICBMLT4+TDogc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICogICBhbHQgYWN0aW9uTWVudU9wZW5cbiAgICogICAgIEwtPj5MOiBEaXNtaXNzIGFjdGlvbiBtZW51XG4gICAqICAgZW5kXG4gICAqICAgTC0+Pkw6IHJlbW92ZUZvY3VzVHJhcCgpXG4gICAqICAgYWx0IE5vIHJvdXRlIGNvbmZpZ3VyZWRcbiAgICogICAgIEwtPj5FOiB3aW5kb3dFdmVudEVtaXR0ZXIoKVxuICAgKiAgICAgTC0+PlA6IGNsaWNrRXZlbnQuZW1pdCgpXG4gICAqICAgZWxzZSBSb3V0ZSBjb25maWd1cmVkXG4gICAqICAgICBMLT4+TjogcmVkaXJlY3QoYWN0aW9uLCB1aWQpXG4gICAqICAgICBOLS0+Pkw6IFJldHVybiBuYXZpZ2F0aW9uIHJlc3VsdFxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIGFzeW5jIGhhbmRsZUFjdGlvbihhY3Rpb246IENydWRPcGVyYXRpb25zLCBldmVudDogRXZlbnQsIHRhcmdldD86IEhUTUxFbGVtZW50KTogUHJvbWlzZTxib29sZWFufHZvaWQ+IHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICBpZih0aGlzLmFjdGlvbk1lbnVPcGVuKVxuICAgICAgYXdhaXQgdGhpcy5hY3Rpb25NZW51Q29tcG9uZW50LmRpc21pc3MoKTtcbiAgICAvLyBmb3JjaW5nIHRyYXAgZm9jdXNcbiAgICByZW1vdmVGb2N1c1RyYXAoKTtcbiAgICBpZighdGhpcy5yb3V0ZSkge1xuICAgICAgY29uc3QgZXZlbnQgPSB7dGFyZ2V0OiB0YXJnZXQsIGFjdGlvbiwgcGs6IHRoaXMucGssIGRhdGE6IHRoaXMudWlkLCBuYW1lOiBFdmVudENvbnN0YW50cy5DTElDSywgY29tcG9uZW50OiB0aGlzLmNvbXBvbmVudE5hbWUgfSBhcyBMaXN0SXRlbUN1c3RvbUV2ZW50O1xuICAgICAgd2luZG93RXZlbnRFbWl0dGVyKGBMaXN0SXRlbSR7RXZlbnRDb25zdGFudHMuQ0xJQ0t9YCwgZXZlbnQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2xpY2tFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVkaXJlY3QoYWN0aW9uLCAodHlwZW9mIHRoaXMudWlkID09PSAnbnVtYmVyJyA/IGAke3RoaXMudWlkfWA6IHRoaXMudWlkKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNpdmUgaGFuZGxlciB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgc2xpZGUgaXRlbXMgYmFzZWQgb24gc2NyZWVuIHNpemUgYW5kIG9wZXJhdGlvbnMuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkIGFuZCBhbHNvIGR1cmluZyBjb21wb25lbnRcbiAgICogaW5pdGlhbGl6YXRpb24uIEl0IGRldGVybWluZXMgd2hldGhlciBzbGlkZSBhY3Rpb25zIHNob3VsZCBiZSBhdmFpbGFibGUgYmFzZWQgb24gdGhlIGN1cnJlbnRcbiAgICogd2luZG93IHdpZHRoIGFuZCB0aGUgcHJlc2VuY2Ugb2YgVVBEQVRFIG9yIERFTEVURSBvcGVyYXRpb25zLiBTbGlkZSBpdGVtcyBhcmUgdHlwaWNhbGx5IGhpZGRlblxuICAgKiBvbiBsYXJnZXIgc2NyZWVucyB3aGVyZSB0aGVyZSdzIHNwYWNlIGZvciBkZWRpY2F0ZWQgYWN0aW9uIGJ1dHRvbnMuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgc2xpZGUgaXRlbXMgc2hvdWxkIGJlIHNob3duLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVyBhcyBXaW5kb3dcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVSVxuICAgKlxuICAgKiAgIFctPj5MOiByZXNpemUgZXZlbnRcbiAgICogICBMLT4+VzogZ2V0V2luZG93V2lkdGgoKVxuICAgKiAgIFctLT4+TDogUmV0dXJuIGN1cnJlbnQgd2lkdGhcbiAgICogICBMLT4+TDogU3RvcmUgd2luZG93V2lkdGhcbiAgICogICBhbHQgTm8gb3BlcmF0aW9ucyBPUiB3aWR0aCA+IDYzOXB4XG4gICAqICAgICBMLT4+VTogc2hvd1NsaWRlSXRlbXMgPSBmYWxzZVxuICAgKiAgIGVsc2UgT3BlcmF0aW9ucyBpbmNsdWRlIFVQREFURS9ERUxFVEVcbiAgICogICAgIEwtPj5VOiBzaG93U2xpZGVJdGVtcyA9IHRydWVcbiAgICogICBlbmRcbiAgICogICBMLS0+PlU6IFJldHVybiBzaG93U2xpZGVJdGVtcyB2YWx1ZVxuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBlbmFibGVTbGlkZUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMud2luZG93V2lkdGggPSBnZXRXaW5kb3dXaWR0aCgpIGFzIG51bWJlcjtcbiAgICBpZighdGhpcy5vcGVyYXRpb25zPy5sZW5ndGggfHwgdGhpcy53aW5kb3dXaWR0aCA+IDYzOSlcbiAgICAgIHJldHVybiB0aGlzLnNob3dTbGlkZUl0ZW1zID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U2xpZGVJdGVtcyA9IHRoaXMub3BlcmF0aW9ucy5pbmNsdWRlcyhPcGVyYXRpb25LZXlzLlVQREFURSkgfHwgdGhpcy5vcGVyYXRpb25zLmluY2x1ZGVzKE9wZXJhdGlvbktleXMuREVMRVRFKTtcbiAgICByZXR1cm4gdGhpcy5zaG93U2xpZGVJdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQW5pbWF0ZXMgYW5kIHJlbW92ZXMgYW4gZWxlbWVudCBmcm9tIHRoZSBET00uXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGFwcGxpZXMgQ1NTIGFuaW1hdGlvbiBjbGFzc2VzIHRvIGNyZWF0ZSBhIHNtb290aCBmYWRlLW91dCBlZmZlY3RcbiAgICogYmVmb3JlIHJlbW92aW5nIHRoZSBlbGVtZW50IGZyb20gdGhlIERPTS4gVGhlIGFuaW1hdGlvbiBlbmhhbmNlcyB1c2VyIGV4cGVyaWVuY2UgYnlcbiAgICogcHJvdmlkaW5nIHZpc3VhbCBmZWVkYmFjayB3aGVuIGl0ZW1zIGFyZSBkZWxldGVkIG9yIHJlbW92ZWQgZnJvbSBsaXN0cy4gVGhlIHRpbWluZ1xuICAgKiBpcyBjb29yZGluYXRlZCB3aXRoIHRoZSBDU1MgYW5pbWF0aW9uIGR1cmF0aW9uIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBpcyByZW1vdmVkXG4gICAqIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gVGhlIERPTSBlbGVtZW50IHRvIGFuaW1hdGUgYW5kIHJlbW92ZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgRSBhcyBIVE1MRWxlbWVudFxuICAgKiAgIHBhcnRpY2lwYW50IEQgYXMgRE9NXG4gICAqXG4gICAqICAgTC0+PkU6IEFkZCBhbmltYXRpb24gY2xhc3Nlc1xuICAgKiAgIE5vdGUgb3ZlciBFOiB1ay1hbmltYXRpb24tZmFkZSwgdWstYW5pbWF0aW9uLW1lZGl1bSwgdWstYW5pbWF0aW9uLXJldmVyc2VcbiAgICogICBFLT4+RTogU3RhcnQgZmFkZSBhbmltYXRpb25cbiAgICogICBMLT4+TDogc2V0VGltZW91dCg2MDBtcylcbiAgICogICBOb3RlIG92ZXIgTDogV2FpdCBmb3IgYW5pbWF0aW9uIHRvIGNvbXBsZXRlXG4gICAqICAgTC0+PkQ6IGVsZW1lbnQucmVtb3ZlKClcbiAgICogICBELT4+RDogUmVtb3ZlIGVsZW1lbnQgZnJvbSBET01cbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICByZW1vdmVFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCd1ay1hbmltYXRpb24tZmFkZScsICd1ay1hbmltYXRpb24tbWVkaXVtJywgJ3VrLWFuaW1hdGlvbi1yZXZlcnNlJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7ZWxlbWVudC5yZW1vdmUoKX0sIDYwMClcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmF2aWdhdGVzIHRvIGEgbmV3IHJvdXRlIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgYWN0aW9uIGFuZCBpdGVtIElELlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBjb25zdHJ1Y3RzIGEgbmF2aWdhdGlvbiBVUkwgdXNpbmcgdGhlIGNvbXBvbmVudCdzIHJvdXRlIGNvbmZpZ3VyYXRpb24sXG4gICAqIHRoZSBzcGVjaWZpZWQgYWN0aW9uLCBhbmQgYW4gaXRlbSBpZGVudGlmaWVyLiBJdCB1c2VzIElvbmljJ3MgTmF2Q29udHJvbGxlciB0byBwZXJmb3JtXG4gICAqIGZvcndhcmQgbmF2aWdhdGlvbiB3aXRoIGFwcHJvcHJpYXRlIGFuaW1hdGlvbnMuIFRoaXMgbWV0aG9kIGlzIHR5cGljYWxseSB1c2VkIGZvclxuICAgKiBDUlVEIG9wZXJhdGlvbnMgd2hlcmUgZWFjaCBhY3Rpb24gKGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBkZWxldGUpIGhhcyBpdHMgb3duIHJvdXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIC0gVGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgKGUuZy4sICdlZGl0JywgJ3ZpZXcnLCAnZGVsZXRlJylcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtpZF0gLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gdG8gYmUgYWN0ZWQgdXBvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0cnVlIGlmIG5hdmlnYXRpb24gd2FzIHN1Y2Nlc3NmdWxcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IE4gYXMgTmF2Q29udHJvbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IFIgYXMgUm91dGVyXG4gICAqXG4gICAqICAgTC0+Pkw6IHJlZGlyZWN0KGFjdGlvbiwgaWQpXG4gICAqICAgTC0+Pkw6IENvbnN0cnVjdCBVUkw6IC97cm91dGV9L3thY3Rpb259L3tpZH1cbiAgICogICBMLT4+TjogbmF2aWdhdGVGb3J3YXJkKHVybClcbiAgICogICBOLT4+UjogTmF2aWdhdGUgdG8gY29uc3RydWN0ZWQgVVJMXG4gICAqICAgUi0tPj5OOiBSZXR1cm4gbmF2aWdhdGlvbiByZXN1bHRcbiAgICogICBOLS0+Pkw6IFJldHVybiBib29sZWFuIHN1Y2Nlc3NcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhc3luYyByZWRpcmVjdChhY3Rpb246IHN0cmluZywgaWQ/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZChgLyR7dGhpcy5yb3V0ZX0vJHthY3Rpb259LyR7aWQgfHwgdGhpcy51aWR9YCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXNlbnRzIHRoZSBhY3Rpb25zIG1lbnUgcG9wb3ZlciBmb3IgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZGlzcGxheSBvZiBhIGNvbnRleHR1YWwgYWN0aW9uIG1lbnUgd2hlbiB0cmlnZ2VyZWQgYnkgdXNlclxuICAgKiBpbnRlcmFjdGlvbiAodHlwaWNhbGx5IGEgbG9uZyBwcmVzcyBvciByaWdodC1jbGljaykuIEl0IHN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIHRvIHByZXZlbnRcbiAgICogdW53YW50ZWQgc2lkZSBlZmZlY3RzLCByZW1vdmVzIGFueSBleGlzdGluZyBmb2N1cyB0cmFwcyBmb3IgYWNjZXNzaWJpbGl0eSwgY29uZmlndXJlcyB0aGVcbiAgICogcG9wb3ZlciB3aXRoIHRoZSB0cmlnZ2VyaW5nIGV2ZW50LCBhbmQgb3BlbnMgdGhlIGFjdGlvbiBtZW51LiBUaGUgbWVudSB0eXBpY2FsbHkgY29udGFpbnNcbiAgICogYXZhaWxhYmxlIENSVUQgb3BlcmF0aW9ucyBmb3IgdGhlIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24gbWVudSByZXF1ZXN0XG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBvcG92ZXJcbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIEFjY2Vzc2liaWxpdHlcbiAgICpcbiAgICogICBVLT4+TDogVHJpZ2dlciBhY3Rpb24gbWVudSAobG9uZyBwcmVzcy9yaWdodC1jbGljaylcbiAgICogICBMLT4+TDogc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICogICBMLT4+QTogcmVtb3ZlRm9jdXNUcmFwKClcbiAgICogICBMLT4+UDogU2V0IGV2ZW50IHJlZmVyZW5jZVxuICAgKiAgIEwtPj5MOiBhY3Rpb25NZW51T3BlbiA9IHRydWVcbiAgICogICBMLT4+UDogRGlzcGxheSBwb3BvdmVyIHdpdGggYWN0aW9uc1xuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHByZXNlbnRBY3Rpb25zTWVudShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAvLyBmb3JjaW5nIHRyYXAgZm9jdXNcbiAgICByZW1vdmVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLmFjdGlvbk1lbnVDb21wb25lbnQuZXZlbnQgPSBldmVudDtcbiAgICB0aGlzLmFjdGlvbk1lbnVPcGVuID0gdHJ1ZTtcbiAgfVxufVxuIiwiXG5AaWYodGl0bGUgfHwgZGVzY3JpcHRpb24pIHtcbiAgPGlvbi1pdGVtLXNsaWRpbmcgI2NvbXBvbmVudD5cbiAgICA8aW9uLWl0ZW1cbiAgICAgIFtpZF09XCJ1aWRcIlxuICAgICAgW2xpbmVzXT1cImxpbmVzXCJcbiAgICAgIFtidXR0b25dPVwiYnV0dG9uXCJcbiAgICAgIFtjbGFzc109XCJjbGFzc05hbWVcIlxuICAgICAgKGNsaWNrKT1cIm9wZXJhdGlvbnM/LmluY2x1ZGVzKCdyZWFkJykgPyBoYW5kbGVBY3Rpb24oJ3JlYWQnLCAkZXZlbnQsIGNvbXBvbmVudCkgOiAnJ1xuICAgIFwiPlxuICAgICAgQGlmKGljb24gJiYgbGluZXMgIT09ICdpbnNldCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1pY29uXCIgW3Nsb3RdPVwiaWNvblNsb3RcIj5cbiAgICAgICAgICA8aW9uLWF2YXRhcj5cbiAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBuYW1lPVwicmVhZGVyLW91dGxpbmVcIiBzaXplPVwiZGVmYXVsdFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJkY2Ytd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtZmxleCBkY2YtZmxleC1taWRkbGUgZGNmLWdyaWQtY29sbGFwc2VcIiBkY2YtZ3JpZD5cbiAgICAgICAgICBAaWYoaWNvbiAmJiBsaW5lcyA9PT0gJ2luc2V0Jykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1pY29uIGRjZi1ncmlkLWljb25cIj5cbiAgICAgICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIG5hbWU9XCJyZWFkZXItb3V0bGluZVwiICBzaXplPVwiZGVmYXVsdFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWV4cGFuZEBzIGRjZi13aWR0aC0xLTEgZGNmLWxhYmVsXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiZGNmLWl0ZW0tdGl0bGVcIiBbaW5uZXJIVE1MXT1cInVpZCArICcgLSAnICsgdGl0bGVcIiA+PC9pb24tbGFiZWw+XG4gICAgICAgICAgICBAaWYoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1kZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYoaW5mbyB8fCBzdWJpbmZvKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWF1dG9AcyBkY2Ytd2lkdGgtZXhwYW5kIGRjZi1pbmZvIGRjZi1mbGV4IGRjZi1mbGV4LXJpZ2h0QHNcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICBAaWYoaW5mbykge1xuICAgICAgICAgICAgICAgIDxzcGFuICBbaW5uZXJIVE1MXT1cImluZm9cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihzdWJpbmZvKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXN1YmluZm8gZGNmLXRleHQtdHJ1bmNhdGVcIiBbaW5uZXJIVE1MXT1cInN1YmluZm9cIiA+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2Ytd2lkdGgtYXV0byBkY2YtZmxleCBkY2YtZmxleC1taWRkbGUgZGNmLWZsZXgtcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZigob3BlcmF0aW9ucy5pbmNsdWRlcygnZGVsZXRlJykgfHwgb3BlcmF0aW9ucy5pbmNsdWRlcygndXBkYXRlJykpICYmIHVpZCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXZpc2libGVAbVwiIGlkPVwiZGNmLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImRjZi1oaWRkZW5AbVwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicHJlc2VudEFjdGlvbnNNZW51KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cImVsbGlwc2lzLXZlcnRpY2FsLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aW9uLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICNhY3Rpb25NZW51Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBzaWRlPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGFsaWdubWVudD1cImxlZnRcIlxuXG4gICAgICAgICAgICAgICAgICBbaXNPcGVuXT1cImFjdGlvbk1lbnVPcGVuXCJcbiAgICAgICAgICAgICAgICAgIChkaWREaXNtaXNzKT1cImFjdGlvbk1lbnVPcGVuID0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxpc3QgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJkY2YtdGV4dC1jYXBpdGFsaXplXCIgW2lubmVySFRNTF09XCInYWN0aW9ucycgfCB0cmFuc2xhdGVcIj48L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcGVyYXRpb24gb2YgWyd1cGRhdGUnLCAnZGVsZXRlJ107IHRyYWNrIG9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYob3BlcmF0aW9ucy5pbmNsdWRlcyhvcGVyYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taXRlbSBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKG9wZXJhdGlvbiwgJGV2ZW50LCBjb21wb25lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWF2YXRhciBjbGFzcz1cImRjZi1mbGV4IGRjZi1mbGV4LW1pZGRsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cInByaW1hcnlcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBuYW1lPVwidHJhc2hcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiZGNmLXRleHQtY2FwaXRhbGl6ZVwiPnt7IG9wZXJhdGlvbiB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1wb3BvdmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS0gQGlmKG9wZXJhdGlvbnM/Lmxlbmd0aCAmJiB1aWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi12aXNpYmxlQG1cIiBpZD1cImRjZi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnM/LmluY2x1ZGVzKCd1cGRhdGUnKSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbigndXBkYXRlJywgIGNvbXBvbmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYob3BlcmF0aW9ucz8uaW5jbHVkZXMoJ2RlbGV0ZScpKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ2RlbGV0ZScsICBjb21wb25lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSAtLT5cbiAgICAgICAgICAgIEBpZih3aW5kb3dXaWR0aCA+IDYzOSkge1xuICAgICAgICAgICAgICA8ZGl2IGlkPVwiZW5kXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9J2VuZCddXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1pdGVtPlxuICAgIEBpZihzaG93U2xpZGVJdGVtcyAmJiB1aWQpIHtcbiAgICAgIDxpb24taXRlbS1vcHRpb25zIHNpZGU9XCJlbmRcIiAoaW9uU3dpcGUpPVwib3BlcmF0aW9ucy5sZW5ndGggPT09IDEgPyBoYW5kbGVBY3Rpb24ob3BlcmF0aW9uc1swXSwgICRldmVudCwgY29tcG9uZW50KSA6ICcnXCI+XG4gICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygndXBkYXRlJykpIHtcbiAgICAgICAgICA8aW9uLWl0ZW0tb3B0aW9uIGNsYXNzPVwiZGNmLXVwZGF0ZVwiIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ3VwZGF0ZScsICRldmVudCwgY29tcG9uZW50KVwiIFtleHBhbmRhYmxlXT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjcmVhdGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24taXRlbS1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmKG9wZXJhdGlvbnM/LmluY2x1ZGVzKCdkZWxldGUnKSkge1xuICAgICAgICA8aW9uLWl0ZW0tb3B0aW9uIGNsYXNzPVwiZGNmLSAgICAgICAgICBkZWxldGVcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCdkZWxldGUnLCAgJGV2ZW50LCBjb21wb25lbnQpXCIgW2V4cGFuZGFibGVdPVwib3BlcmF0aW9ucy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1pdGVtLW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9pb24taXRlbS1vcHRpb25zPlxuICAgIH1cbiAgPC9pb24taXRlbS1zbGlkaW5nPlxufVxuIl19
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3BE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bUdBQWpCLGlCQUFpQiw2ZkN0RjlCLGkxTEEySEEsaWtNRHBESSxhQUFhLGtEQUNiLE9BQU8seUZBQ1AsYUFBYSxnR0FDYixPQUFPLDBOQUNQLGNBQWMsbUZBQ2QsY0FBYywrRUFDZCxhQUFhLDhKQUNiLE9BQU8sMkpBQ1AsUUFBUSw2RkFDUixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsVUFBVTs7QUFJRCxpQkFBaUI7SUF0QjdCLE9BQU8sRUFBRTs7R0FzQkcsaUJBQWlCLENBaWE3Qjs7NEZBamFZLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTtxQkFDWDt3REFlRCxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCO2dCQWNoQyxLQUFLO3NCQURKLEtBQUs7Z0JBYUcsSUFBSTtzQkFEWixLQUFLO2dCQWFOLElBQUk7c0JBREgsS0FBSztnQkFjTixRQUFRO3NCQURQLEtBQUs7Z0JBY04sTUFBTTtzQkFETCxLQUFLO2dCQWFOLEtBQUs7c0JBREosS0FBSztnQkFhTixXQUFXO3NCQURWLEtBQUs7Z0JBYU4sSUFBSTtzQkFESCxLQUFLO2dCQWFOLE9BQU87c0JBRE4sS0FBSztnQkFhTixVQUFVO3NCQURULE1BQU07Z0JBbUxQLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucywgT3BlcmF0aW9uS2V5cyB9IGZyb20gJ0BkZWNhZi10cy9kYi1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFN0cmluZ09yQm9vbGVhbiB9IGZyb20gJy4uLy4uL2VuZ2luZS90eXBlcyc7XG5pbXBvcnQgeyBOZ3hCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL05neEJhc2VDb21wb25lbnQnO1xuaW1wb3J0IHsgcmVtb3ZlRm9jdXNUcmFwLCBzdHJpbmdUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFdpbmRvd1dpZHRoLCB3aW5kb3dFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IER5bmFtaWMsIEV2ZW50Q29uc3RhbnRzLCBMaXN0SXRlbUN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Db250ZW50LFxuICBJb25JY29uLFxuICBJb25MaXN0SGVhZGVyLFxuICBJb25Qb3BvdmVyLFxuICBJb25JdGVtU2xpZGluZyxcbiAgSW9uSXRlbU9wdGlvbnMsXG4gIElvbkl0ZW1PcHRpb25cbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgKiBhcyBBbGxJY29ucyBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIGxpc3QgaXRlbSB3aXRoIHZhcmlvdXMgY3VzdG9taXphdGlvbiBvcHRpb25zLlxuICogQHN1bW1hcnkgVGhlIExpc3RJdGVtQ29tcG9uZW50IGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50LiBJdCBwcm92aWRlcyBhIGZsZXhpYmxlIGFuZCBjdXN0b21pemFibGUgbGlzdCBpdGVtIGludGVyZmFjZSB3aXRoIHN1cHBvcnQgZm9yIGljb25zLCBidXR0b25zLCBhbmQgdmFyaW91cyB0ZXh0IGVsZW1lbnRzLiBUaGUgY29tcG9uZW50IGFsc28gaGFuZGxlcyBhY3Rpb25zIGFuZCBuYXZpZ2F0aW9uIGJhc2VkIG9uIHVzZXIgaW50ZXJhY3Rpb25zLlxuICpcbiAqIEBjbGFzc1xuICogQGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGluZXM9J25vbmUnXSAtIERldGVybWluZXMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIGl0ZW0uIENhbiBiZSAnaW5zZXQnLCAnaW5zZWV0Jywgb3IgJ25vbmUnLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBpdGVtIC0gVGhlIGRhdGEgaXRlbSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uIC0gVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gYmUgZGlzcGxheWVkLlxuICogQHBhcmFtIHsnc3RhcnQnIHwgJ2VuZCd9IFtpY29uU2xvdD0nc3RhcnQnXSAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgaWNvbiB3aXRoaW4gdGhlIGl0ZW0uXG4gKiBAcGFyYW0ge1N0cmluZ09yQm9vbGVhbn0gW2J1dHRvbj10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlaGF2ZSBhcyBhIGJ1dHRvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIC0gVGhlIG1haW4gdGl0bGUgb2YgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVzY3JpcHRpb25dIC0gQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5mb10gLSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgbGlzdCBpdGVtLlxuICogQHBhcmFtIHtzdHJpbmd9IFtzdWJpbmZvXSAtIFN1Yi1pbmZvcm1hdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPG5neC1kZWNhZi1saXN0LWl0ZW1cbiAqICAgW2l0ZW1dPVwiZGF0YUl0ZW1cIlxuICogICBpY29uPVwic3RhclwiXG4gKiAgIHRpdGxlPVwiSXRlbSBUaXRsZVwiXG4gKiAgIGRlc2NyaXB0aW9uPVwiSXRlbSBEZXNjcmlwdGlvblwiXG4gKiAgIChjbGlja0V2ZW50KT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQpXCI+XG4gKiA8L25neC1kZWNhZi1saXN0LWl0ZW0+XG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudFxuICogICBwYXJ0aWNpcGFudCBWIGFzIFZpZXdcbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gKiAgIEMtPj5WOiBJbml0aWFsaXplIGNvbXBvbmVudFxuICogICBWLT4+VTogRGlzcGxheSBsaXN0IGl0ZW1cbiAqICAgVS0+PlY6IENsaWNrIG9uIGl0ZW0gb3IgYWN0aW9uXG4gKiAgIFYtPj5DOiBUcmlnZ2VyIGhhbmRsZUFjdGlvbigpXG4gKiAgIEMtPj5DOiBQcm9jZXNzIGFjdGlvblxuICogICBDLT4+VjogVXBkYXRlIHZpZXcgb3IgbmF2aWdhdGVcbiAqL1xuQER5bmFtaWMoKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRlY2FmLWxpc3QtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uTGlzdCxcbiAgICBJb25MaXN0SGVhZGVyLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uSXRlbVNsaWRpbmcsXG4gICAgSW9uSXRlbU9wdGlvbnMsXG4gICAgSW9uSXRlbU9wdGlvbixcbiAgICBJb25JY29uLFxuICAgIElvbkxhYmVsLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvblBvcG92ZXJcbiAgXVxuXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gdGhlIGFjdGlvbiBtZW51IHBvcG92ZXIgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBWaWV3Q2hpbGQgcmVmZXJlbmNlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBIVE1MSW9uUG9wb3ZlckVsZW1lbnRcbiAgICogdXNlZCBmb3IgZGlzcGxheWluZyBhY3Rpb24gbWVudXMuIFRoaXMgcmVmZXJlbmNlIGlzIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseVxuICAgKiBjb250cm9sIHRoZSBwb3BvdmVyLCBzdWNoIGFzIGRpc21pc3NpbmcgaXQgd2hlbiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEB0eXBlIHtIVE1MSW9uUG9wb3ZlckVsZW1lbnR9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnYWN0aW9uTWVudUNvbXBvbmVudCcpXG4gIGFjdGlvbk1lbnVDb21wb25lbnQhOiBIVE1MSW9uUG9wb3ZlckVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB0aGUgZGlzcGxheSBvZiBsaW5lcyBhcm91bmQgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBob3cgbGluZXMgYXJlIGRpc3BsYXllZCBhcm91bmQgdGhlIGxpc3QgaXRlbSBib3JkZXJzLlxuICAgKiAnaW5zZXQnIHNob3dzIGxpbmVzIHdpdGggcGFkZGluZywgJ2Z1bGwnIHNob3dzIGZ1bGwtd2lkdGggbGluZXMsIGFuZCAnbm9uZSdcbiAgICogcmVtb3ZlcyBhbGwgbGluZXMuIFRoaXMgYWZmZWN0cyB0aGUgdmlzdWFsIHNlcGFyYXRpb24gYmV0d2VlbiBsaXN0IGl0ZW1zLlxuICAgKlxuICAgKiBAdHlwZSB7J2luc2V0JyB8ICdmdWxsJyB8ICdub25lJ31cbiAgICogQGRlZmF1bHQgJ2luc2V0J1xuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxpbmVzOiAnaW5zZXQnIHwgJ2Z1bGwnIHwgJ25vbmUnID0gJ2Z1bGwnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgdGhlIHJhdyBkYXRhIHRoYXQgdGhpcyBsaXN0IGl0ZW0gcmVwcmVzZW50cy4gVGhpcyBvYmplY3RcbiAgICogaXMgdXNlZCB0byBleHRyYWN0IGRpc3BsYXkgaW5mb3JtYXRpb24gYW5kIGZvciBwYXNzaW5nIHRvIGV2ZW50IGhhbmRsZXJzXG4gICAqIHdoZW4gdGhlIGl0ZW0gaXMgaW50ZXJhY3RlZCB3aXRoLiBJdCBvdmVycmlkZXMgdGhlIGJhc2UgaXRlbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGl0ZW0hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGRpc3BsYXkgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgU3BlY2lmaWVzIHdoaWNoIGljb24gdG8gZGlzcGxheSB1c2luZyBJb25pYydzIGljb24gc3lzdGVtLlxuICAgKiBUaGUgaWNvbiBuYW1lIHNob3VsZCBjb3JyZXNwb25kIHRvIGFuIGF2YWlsYWJsZSBJb25pYyBpY29uIG9yIGEgY3VzdG9tXG4gICAqIGljb24gdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGljb24gcmVnaXN0cnkuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbiE6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBvc2l0aW9uIG9mIHRoZSBpY29uIHdpdGhpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gYXBwZWFycyBhdCB0aGUgc3RhcnQgKGxlZnQgaW4gTFRSIGxhbmd1YWdlcylcbiAgICogb3IgZW5kIChyaWdodCBpbiBMVFIgbGFuZ3VhZ2VzKSBvZiB0aGUgbGlzdCBpdGVtLiBUaGlzIGFmZmVjdHMgdGhlIG92ZXJhbGxcbiAgICogbGF5b3V0IGFuZCB2aXN1YWwgaGllcmFyY2h5IG9mIHRoZSBpdGVtIGNvbnRlbnQuXG4gICAqXG4gICAqIEB0eXBlIHsnc3RhcnQnIHwgJ2VuZCd9XG4gICAqIEBkZWZhdWx0ICdzdGFydCdcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uU2xvdDogJ3N0YXJ0JyB8ICdlbmQnID0nc3RhcnQnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hldGhlciB0aGUgbGlzdCBpdGVtIGJlaGF2ZXMgYXMgYSBjbGlja2FibGUgYnV0dG9uLlxuICAgKiBAc3VtbWFyeSBXaGVuIHNldCB0byB0cnVlLCB0aGUgbGlzdCBpdGVtIHdpbGwgaGF2ZSBidXR0b24tbGlrZSBiZWhhdmlvciBpbmNsdWRpbmdcbiAgICogaG92ZXIgZWZmZWN0cywgY2xpY2sgaGFuZGxpbmcsIGFuZCBhcHByb3ByaWF0ZSBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMuXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBpdGVtIGlzIGRpc3BsYXllZCBhcyBzdGF0aWMgY29udGVudCB3aXRob3V0IGludGVyYWN0aXZlIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nT3JCb29sZWFufVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgYnV0dG9uOiBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIG1haW4gdGl0bGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgcHJpbWFyeSB0ZXh0IGNvbnRlbnQgdGhhdCBhcHBlYXJzIHByb21pbmVudGx5IGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBtb3N0IGltcG9ydGFudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSBhbmQgaXMgZGlzcGxheWVkXG4gICAqIHdpdGggZW1waGFzaXMgaW4gdGhlIGNvbXBvbmVudCdzIHZpc3VhbCBoaWVyYXJjaHkuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZWNvbmRhcnkgZGVzY3JpcHRpdmUgdGV4dCBmb3IgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYWRkaXRpb25hbCBjb250ZXh0IG9yIGRldGFpbHMgYWJvdXQgdGhlIGl0ZW0uIFRoaXMgdGV4dFxuICAgKiBpcyB0eXBpY2FsbHkgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSB3aXRoIGxlc3MgdmlzdWFsIGVtcGhhc2lzLlxuICAgKiBVc2VmdWwgZm9yIHByb3ZpZGluZyBjb250ZXh0IHdpdGhvdXQgY2x1dHRlcmluZyB0aGUgbWFpbiB0aXRsZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGV4dCBmb3IgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgRGlzcGxheXMgc3VwcGxlbWVudGFyeSBpbmZvcm1hdGlvbiB0aGF0IHByb3ZpZGVzIGV4dHJhIGNvbnRleHRcbiAgICogYWJvdXQgdGhlIGl0ZW0uIFRoaXMgY291bGQgaW5jbHVkZSBtZXRhZGF0YSwgc3RhdHVzIGluZm9ybWF0aW9uLCBvclxuICAgKiBvdGhlciByZWxldmFudCBkZXRhaWxzIHRoYXQgZG9uJ3QgZml0IGluIHRoZSB0aXRsZSBvciBkZXNjcmlwdGlvbi5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpbmZvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3ViLWluZm9ybWF0aW9uIHRleHQgZGlzcGxheWVkIGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIHRlcnRpYXJ5IGxldmVsIGluZm9ybWF0aW9uIHRoYXQgY29tcGxlbWVudHMgdGhlIGluZm8gZmllbGQuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGFkZGl0aW9uYWwgbWV0YWRhdGEgb3IgY29udGV4dHVhbCBkZXRhaWxzXG4gICAqIHRoYXQgYXJlIHVzZWZ1bCBidXQgbm90IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpdGVtLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHN1YmluZm8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBsaXN0IGl0ZW0gY2xpY2sgaW50ZXJhY3Rpb25zLlxuICAgKiBAc3VtbWFyeSBFbWl0cyBjdXN0b20gZXZlbnRzIHdoZW4gdGhlIGxpc3QgaXRlbSBpcyBjbGlja2VkIG9yIHdoZW4gYWN0aW9uc1xuICAgKiBhcmUgcGVyZm9ybWVkIG9uIGl0LiBUaGUgZW1pdHRlZCBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0aW9uLFxuICAgKiB0aGUgaXRlbSBkYXRhLCBhbmQgb3RoZXIgcmVsZXZhbnQgY29udGV4dCBmb3IgcGFyZW50IGNvbXBvbmVudHMgdG8gaGFuZGxlLlxuICAgKlxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPExpc3RJdGVtQ3VzdG9tRXZlbnQ+fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBjbGlja0V2ZW50OiAgRXZlbnRFbWl0dGVyPExpc3RJdGVtQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0SXRlbUN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgc2xpZGUgaXRlbXMgYXJlIGN1cnJlbnRseSBlbmFibGVkLlxuICAgKiBAc3VtbWFyeSBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiBzbGlkZSBhY3Rpb25zIGJhc2VkIG9uIHNjcmVlbiBzaXplIGFuZFxuICAgKiBhdmFpbGFibGUgb3BlcmF0aW9ucy4gV2hlbiB0cnVlLCB1c2VycyBjYW4gc3dpcGUgb24gdGhlIGl0ZW0gdG8gcmV2ZWFsXG4gICAqIGFjdGlvbiBidXR0b25zIGZvciBvcGVyYXRpb25zIGxpa2UgZWRpdCBhbmQgZGVsZXRlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBzaG93U2xpZGVJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCB3aW5kb3cgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgYnJvd3NlciB3aW5kb3cgd2lkdGggd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmVcbiAgICogcmVzcG9uc2l2ZSBiZWhhdmlvciwgc3VjaCBhcyB3aGVuIHRvIHNob3cgb3IgaGlkZSBzbGlkZSBpdGVtcyBiYXNlZCBvblxuICAgKiBzY3JlZW4gc2l6ZS4gVXBkYXRlZCBhdXRvbWF0aWNhbGx5IG9uIHdpbmRvdyByZXNpemUgZXZlbnRzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHdpbmRvd1dpZHRoITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFjdGlvbiBtZW51IHBvcG92ZXIgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqIEBzdW1tYXJ5IFRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIGFjdGlvbiBtZW51IHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzXG4gICAqIGZyb20gYmVpbmcgb3BlbmVkIHNpbXVsdGFuZW91c2x5IGFuZCB0byBlbnN1cmUgcHJvcGVyIGNsZWFudXAgd2hlbiBhY3Rpb25zXG4gICAqIGFyZSBwZXJmb3JtZWQuIFVzZWQgZm9yIG1hbmFnaW5nIHRoZSBwb3BvdmVyIGxpZmVjeWNsZS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYWN0aW9uTWVudU9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgTmF2Q29udHJvbGxlciBzZXJ2aWNlIGZvciBoYW5kbGluZyBuYXZpZ2F0aW9uLlxuICAgKiBAc3VtbWFyeSBJbmplY3RlZCBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcHJvZ3JhbW1hdGljIG5hdmlnYXRpb25cbiAgICogd2l0aGluIHRoZSBJb25pYyBhcHBsaWNhdGlvbi4gVXNlZCBmb3IgbmF2aWdhdGluZyB0byBkaWZmZXJlbnQgcm91dGVzIHdoZW5cbiAgICogbGlzdCBpdGVtIGFjdGlvbnMgYXJlIHBlcmZvcm1lZCBvciB3aGVuIHRoZSBpdGVtIGl0c2VsZiBpcyBjbGlja2VkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7TmF2Q29udHJvbGxlcn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIgPSBpbmplY3QoTmF2Q29udHJvbGxlcik7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExpc3RJdGVtQ29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBMaXN0SXRlbUNvbXBvbmVudCBieSBjYWxsaW5nIHRoZSBwYXJlbnQgY2xhc3MgY29uc3RydWN0b3JcbiAgICogd2l0aCB0aGUgY29tcG9uZW50IG5hbWUgZm9yIGxvZ2dpbmcgYW5kIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLiBBbHNvIHJlZ2lzdGVyc1xuICAgKiBhbGwgYXZhaWxhYmxlIElvbmljIGljb25zIHRvIGVuc3VyZSB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkxpc3RJdGVtQ29tcG9uZW50XCIpO1xuICAgIGFkZEljb25zKEFsbEljb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IGFmdGVyIEFuZ3VsYXIgZmlyc3QgZGlzcGxheXMgdGhlIGRhdGEtYm91bmQgcHJvcGVydGllcy5cbiAgICogQHN1bW1hcnkgU2V0cyB1cCB0aGUgY29tcG9uZW50IGJ5IGRldGVybWluaW5nIHNsaWRlIGl0ZW0gdmlzaWJpbGl0eSwgcHJvY2Vzc2luZyBib29sZWFuIGlucHV0cyxcbiAgICogYnVpbGRpbmcgQ1NTIGNsYXNzIG5hbWVzIGJhc2VkIG9uIHByb3BlcnRpZXMsIGFuZCBjYXB0dXJpbmcgdGhlIGN1cnJlbnQgd2luZG93IHdpZHRoLlxuICAgKiBUaGlzIG1ldGhvZCBwcmVwYXJlcyB0aGUgY29tcG9uZW50IGZvciB1c2VyIGludGVyYWN0aW9uIGJ5IGVuc3VyaW5nIGFsbCBwcm9wZXJ0aWVzIGFyZVxuICAgKiBwcm9wZXJseSBpbml0aWFsaXplZCBhbmQgcmVzcG9uc2l2ZSBiZWhhdmlvciBpcyBjb25maWd1cmVkLlxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIEFuZ3VsYXIgTGlmZWN5Y2xlXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFcgYXMgV2luZG93XG4gICAqXG4gICAqICAgQS0+Pkw6IG5nT25Jbml0KClcbiAgICogICBMLT4+TDogZW5hYmxlU2xpZGVJdGVtcygpXG4gICAqICAgTC0+Pkw6IFByb2Nlc3MgYnV0dG9uIGJvb2xlYW5cbiAgICogICBMLT4+TDogQnVpbGQgY2xhc3NOYW1lIHdpdGggZmxleCBjbGFzc2VzXG4gICAqICAgYWx0IG9wZXJhdGlvbnMgZXhpc3RcbiAgICogICAgIEwtPj5MOiBBZGQgJ2FjdGlvbicgY2xhc3NcbiAgICogICBlbmRcbiAgICogICBMLT4+VzogZ2V0V2luZG93V2lkdGgoKVxuICAgKiAgIFctLT4+TDogUmV0dXJuIGN1cnJlbnQgd2lkdGhcbiAgICogICBMLT4+TDogU3RvcmUgd2luZG93V2lkdGhcbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNob3dTbGlkZUl0ZW1zID0gdGhpcy5lbmFibGVTbGlkZUl0ZW1zKCk7XG4gICAgdGhpcy5idXR0b24gPSBzdHJpbmdUb0Jvb2xlYW4odGhpcy5idXR0b24pO1xuXG4gICAgdGhpcy5jbGFzc05hbWUgPSBgJHt0aGlzLmNsYXNzTmFtZX0gIGRjZi1mbGV4IGRjZi1mbGV4LW1pZGRsZSBncmlkLWl0ZW1gO1xuICAgIGlmKHRoaXMub3BlcmF0aW9ucz8ubGVuZ3RoKVxuICAgICAgdGhpcy5jbGFzc05hbWUgKz0gYCBhY3Rpb25gO1xuICAgIHRoaXMud2luZG93V2lkdGggPSBnZXRXaW5kb3dXaWR0aCgpIGFzIG51bWJlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlcyB1c2VyIGludGVyYWN0aW9ucyBhbmQgYWN0aW9ucyBwZXJmb3JtZWQgb24gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXMgdGhlIGNlbnRyYWwgYWN0aW9uIGhhbmRsZXIgZm9yIGxpc3QgaXRlbSBpbnRlcmFjdGlvbnMuIEl0IG1hbmFnZXNcbiAgICogZXZlbnQgcHJvcGFnYXRpb24sIGRpc21pc3NlcyBvcGVuIGFjdGlvbiBtZW51cywgcmVtb3ZlcyBmb2N1cyB0cmFwcywgYW5kIGVpdGhlciBlbWl0c1xuICAgKiBldmVudHMgZm9yIHBhcmVudCBjb21wb25lbnRzIHRvIGhhbmRsZSBvciBwZXJmb3JtcyBuYXZpZ2F0aW9uIGJhc2VkIG9uIHRoZSBjb21wb25lbnQnc1xuICAgKiByb3V0ZSBjb25maWd1cmF0aW9uLiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBib3RoIGV2ZW50LWRyaXZlbiBhbmQgbmF2aWdhdGlvbi1kcml2ZW4gYXJjaGl0ZWN0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtDcnVkT3BlcmF0aW9uc30gYWN0aW9uIC0gVGhlIHR5cGUgb2YgQ1JVRCBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGJyb3dzZXIgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIE9wdGlvbmFsIHRhcmdldCBlbGVtZW50IGZvciB0aGUgZXZlbnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFufHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBuYXZpZ2F0aW9uIHN1Y2Nlc3Mgb3Igdm9pZCBmb3IgZXZlbnRzXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhcmVudCBDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBOIGFzIE5hdkNvbnRyb2xsZXJcbiAgICogICBwYXJ0aWNpcGFudCBFIGFzIEV2ZW50IFN5c3RlbVxuICAgKlxuICAgKiAgIFUtPj5MOiBQZXJmb3JtIGFjdGlvbiAoY2xpY2svc3dpcGUpXG4gICAqICAgTC0+Pkw6IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAqICAgYWx0IGFjdGlvbk1lbnVPcGVuXG4gICAqICAgICBMLT4+TDogRGlzbWlzcyBhY3Rpb24gbWVudVxuICAgKiAgIGVuZFxuICAgKiAgIEwtPj5MOiByZW1vdmVGb2N1c1RyYXAoKVxuICAgKiAgIGFsdCBObyByb3V0ZSBjb25maWd1cmVkXG4gICAqICAgICBMLT4+RTogd2luZG93RXZlbnRFbWl0dGVyKClcbiAgICogICAgIEwtPj5QOiBjbGlja0V2ZW50LmVtaXQoKVxuICAgKiAgIGVsc2UgUm91dGUgY29uZmlndXJlZFxuICAgKiAgICAgTC0+Pk46IHJlZGlyZWN0KGFjdGlvbiwgdWlkKVxuICAgKiAgICAgTi0tPj5MOiBSZXR1cm4gbmF2aWdhdGlvbiByZXN1bHRcbiAgICogICBlbmRcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhc3luYyBoYW5kbGVBY3Rpb24oYWN0aW9uOiBDcnVkT3BlcmF0aW9ucywgZXZlbnQ6IEV2ZW50LCB0YXJnZXQ/OiBIVE1MRWxlbWVudCk6IFByb21pc2U8Ym9vbGVhbnx2b2lkPiB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgaWYodGhpcy5hY3Rpb25NZW51T3BlbilcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uTWVudUNvbXBvbmVudC5kaXNtaXNzKCk7XG4gICAgLy8gZm9yY2luZyB0cmFwIGZvY3VzXG4gICAgcmVtb3ZlRm9jdXNUcmFwKCk7XG4gICAgaWYoIXRoaXMucm91dGUpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge3RhcmdldDogdGFyZ2V0LCBhY3Rpb24sIHBrOiB0aGlzLnBrLCBkYXRhOiB0aGlzLnVpZCwgbmFtZTogRXZlbnRDb25zdGFudHMuQ0xJQ0ssIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnROYW1lIH0gYXMgTGlzdEl0ZW1DdXN0b21FdmVudDtcbiAgICAgIHdpbmRvd0V2ZW50RW1pdHRlcihgTGlzdEl0ZW0ke0V2ZW50Q29uc3RhbnRzLkNMSUNLfWAsIGV2ZW50KTtcbiAgICAgIHJldHVybiB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlZGlyZWN0KGFjdGlvbiwgKHR5cGVvZiB0aGlzLnVpZCA9PT0gJ251bWJlcicgPyBgJHt0aGlzLnVpZH1gOiB0aGlzLnVpZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zaXZlIGhhbmRsZXIgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIHNsaWRlIGl0ZW1zIGJhc2VkIG9uIHNjcmVlbiBzaXplIGFuZCBvcGVyYXRpb25zLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBhbmQgYWxzbyBkdXJpbmcgY29tcG9uZW50XG4gICAqIGluaXRpYWxpemF0aW9uLiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgc2xpZGUgYWN0aW9ucyBzaG91bGQgYmUgYXZhaWxhYmxlIGJhc2VkIG9uIHRoZSBjdXJyZW50XG4gICAqIHdpbmRvdyB3aWR0aCBhbmQgdGhlIHByZXNlbmNlIG9mIFVQREFURSBvciBERUxFVEUgb3BlcmF0aW9ucy4gU2xpZGUgaXRlbXMgYXJlIHR5cGljYWxseSBoaWRkZW5cbiAgICogb24gbGFyZ2VyIHNjcmVlbnMgd2hlcmUgdGhlcmUncyBzcGFjZSBmb3IgZGVkaWNhdGVkIGFjdGlvbiBidXR0b25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHNsaWRlIGl0ZW1zIHNob3VsZCBiZSBzaG93biwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFcgYXMgV2luZG93XG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVUlcbiAgICpcbiAgICogICBXLT4+TDogcmVzaXplIGV2ZW50XG4gICAqICAgTC0+Plc6IGdldFdpbmRvd1dpZHRoKClcbiAgICogICBXLS0+Pkw6IFJldHVybiBjdXJyZW50IHdpZHRoXG4gICAqICAgTC0+Pkw6IFN0b3JlIHdpbmRvd1dpZHRoXG4gICAqICAgYWx0IE5vIG9wZXJhdGlvbnMgT1Igd2lkdGggPiA2MzlweFxuICAgKiAgICAgTC0+PlU6IHNob3dTbGlkZUl0ZW1zID0gZmFsc2VcbiAgICogICBlbHNlIE9wZXJhdGlvbnMgaW5jbHVkZSBVUERBVEUvREVMRVRFXG4gICAqICAgICBMLT4+VTogc2hvd1NsaWRlSXRlbXMgPSB0cnVlXG4gICAqICAgZW5kXG4gICAqICAgTC0tPj5VOiBSZXR1cm4gc2hvd1NsaWRlSXRlbXMgdmFsdWVcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgZW5hYmxlU2xpZGVJdGVtcygpOiBib29sZWFuIHtcbiAgICB0aGlzLndpbmRvd1dpZHRoID0gZ2V0V2luZG93V2lkdGgoKSBhcyBudW1iZXI7XG4gICAgaWYoIXRoaXMub3BlcmF0aW9ucz8ubGVuZ3RoIHx8IHRoaXMud2luZG93V2lkdGggPiA2MzkpXG4gICAgICByZXR1cm4gdGhpcy5zaG93U2xpZGVJdGVtcyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NsaWRlSXRlbXMgPSB0aGlzLm9wZXJhdGlvbnMuaW5jbHVkZXMoT3BlcmF0aW9uS2V5cy5VUERBVEUpIHx8IHRoaXMub3BlcmF0aW9ucy5pbmNsdWRlcyhPcGVyYXRpb25LZXlzLkRFTEVURSk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1NsaWRlSXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuaW1hdGVzIGFuZCByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSB0aGUgRE9NLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBhcHBsaWVzIENTUyBhbmltYXRpb24gY2xhc3NlcyB0byBjcmVhdGUgYSBzbW9vdGggZmFkZS1vdXQgZWZmZWN0XG4gICAqIGJlZm9yZSByZW1vdmluZyB0aGUgZWxlbWVudCBmcm9tIHRoZSBET00uIFRoZSBhbmltYXRpb24gZW5oYW5jZXMgdXNlciBleHBlcmllbmNlIGJ5XG4gICAqIHByb3ZpZGluZyB2aXN1YWwgZmVlZGJhY2sgd2hlbiBpdGVtcyBhcmUgZGVsZXRlZCBvciByZW1vdmVkIGZyb20gbGlzdHMuIFRoZSB0aW1pbmdcbiAgICogaXMgY29vcmRpbmF0ZWQgd2l0aCB0aGUgQ1NTIGFuaW1hdGlvbiBkdXJhdGlvbiB0byBlbnN1cmUgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZFxuICAgKiBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCAtIFRoZSBET00gZWxlbWVudCB0byBhbmltYXRlIGFuZCByZW1vdmVcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IEUgYXMgSFRNTEVsZW1lbnRcbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIERPTVxuICAgKlxuICAgKiAgIEwtPj5FOiBBZGQgYW5pbWF0aW9uIGNsYXNzZXNcbiAgICogICBOb3RlIG92ZXIgRTogdWstYW5pbWF0aW9uLWZhZGUsIHVrLWFuaW1hdGlvbi1tZWRpdW0sIHVrLWFuaW1hdGlvbi1yZXZlcnNlXG4gICAqICAgRS0+PkU6IFN0YXJ0IGZhZGUgYW5pbWF0aW9uXG4gICAqICAgTC0+Pkw6IHNldFRpbWVvdXQoNjAwbXMpXG4gICAqICAgTm90ZSBvdmVyIEw6IFdhaXQgZm9yIGFuaW1hdGlvbiB0byBjb21wbGV0ZVxuICAgKiAgIEwtPj5EOiBlbGVtZW50LnJlbW92ZSgpXG4gICAqICAgRC0+PkQ6IFJlbW92ZSBlbGVtZW50IGZyb20gRE9NXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgcmVtb3ZlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndWstYW5pbWF0aW9uLWZhZGUnLCAndWstYW5pbWF0aW9uLW1lZGl1bScsICd1ay1hbmltYXRpb24tcmV2ZXJzZScpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge2VsZW1lbnQucmVtb3ZlKCl9LCA2MDApXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hdmlnYXRlcyB0byBhIG5ldyByb3V0ZSBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGFjdGlvbiBhbmQgaXRlbSBJRC5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgY29uc3RydWN0cyBhIG5hdmlnYXRpb24gVVJMIHVzaW5nIHRoZSBjb21wb25lbnQncyByb3V0ZSBjb25maWd1cmF0aW9uLFxuICAgKiB0aGUgc3BlY2lmaWVkIGFjdGlvbiwgYW5kIGFuIGl0ZW0gaWRlbnRpZmllci4gSXQgdXNlcyBJb25pYydzIE5hdkNvbnRyb2xsZXIgdG8gcGVyZm9ybVxuICAgKiBmb3J3YXJkIG5hdmlnYXRpb24gd2l0aCBhcHByb3ByaWF0ZSBhbmltYXRpb25zLiBUaGlzIG1ldGhvZCBpcyB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICogQ1JVRCBvcGVyYXRpb25zIHdoZXJlIGVhY2ggYWN0aW9uIChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKSBoYXMgaXRzIG93biByb3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIChlLmcuLCAnZWRpdCcsICd2aWV3JywgJ2RlbGV0ZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaWRdIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHRvIGJlIGFjdGVkIHVwb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiBuYXZpZ2F0aW9uIHdhcyBzdWNjZXNzZnVsXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBOIGFzIE5hdkNvbnRyb2xsZXJcbiAgICogICBwYXJ0aWNpcGFudCBSIGFzIFJvdXRlclxuICAgKlxuICAgKiAgIEwtPj5MOiByZWRpcmVjdChhY3Rpb24sIGlkKVxuICAgKiAgIEwtPj5MOiBDb25zdHJ1Y3QgVVJMOiAve3JvdXRlfS97YWN0aW9ufS97aWR9XG4gICAqICAgTC0+Pk46IG5hdmlnYXRlRm9yd2FyZCh1cmwpXG4gICAqICAgTi0+PlI6IE5hdmlnYXRlIHRvIGNvbnN0cnVjdGVkIFVSTFxuICAgKiAgIFItLT4+TjogUmV0dXJuIG5hdmlnYXRpb24gcmVzdWx0XG4gICAqICAgTi0tPj5MOiBSZXR1cm4gYm9vbGVhbiBzdWNjZXNzXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYXN5bmMgcmVkaXJlY3QoYWN0aW9uOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoYC8ke3RoaXMucm91dGV9LyR7YWN0aW9ufS8ke2lkIHx8IHRoaXMudWlkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmVzZW50cyB0aGUgYWN0aW9ucyBtZW51IHBvcG92ZXIgZm9yIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGRpc3BsYXkgb2YgYSBjb250ZXh0dWFsIGFjdGlvbiBtZW51IHdoZW4gdHJpZ2dlcmVkIGJ5IHVzZXJcbiAgICogaW50ZXJhY3Rpb24gKHR5cGljYWxseSBhIGxvbmcgcHJlc3Mgb3IgcmlnaHQtY2xpY2spLiBJdCBzdG9wcyBldmVudCBwcm9wYWdhdGlvbiB0byBwcmV2ZW50XG4gICAqIHVud2FudGVkIHNpZGUgZWZmZWN0cywgcmVtb3ZlcyBhbnkgZXhpc3RpbmcgZm9jdXMgdHJhcHMgZm9yIGFjY2Vzc2liaWxpdHksIGNvbmZpZ3VyZXMgdGhlXG4gICAqIHBvcG92ZXIgd2l0aCB0aGUgdHJpZ2dlcmluZyBldmVudCwgYW5kIG9wZW5zIHRoZSBhY3Rpb24gbWVudS4gVGhlIG1lbnUgdHlwaWNhbGx5IGNvbnRhaW5zXG4gICAqIGF2YWlsYWJsZSBDUlVEIG9wZXJhdGlvbnMgZm9yIHRoZSBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIFRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uIG1lbnUgcmVxdWVzdFxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQb3BvdmVyXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBBY2Nlc3NpYmlsaXR5XG4gICAqXG4gICAqICAgVS0+Pkw6IFRyaWdnZXIgYWN0aW9uIG1lbnUgKGxvbmcgcHJlc3MvcmlnaHQtY2xpY2spXG4gICAqICAgTC0+Pkw6IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAqICAgTC0+PkE6IHJlbW92ZUZvY3VzVHJhcCgpXG4gICAqICAgTC0+PlA6IFNldCBldmVudCByZWZlcmVuY2VcbiAgICogICBMLT4+TDogYWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAqICAgTC0+PlA6IERpc3BsYXkgcG9wb3ZlciB3aXRoIGFjdGlvbnNcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBwcmVzZW50QWN0aW9uc01lbnUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgLy8gZm9yY2luZyB0cmFwIGZvY3VzXG4gICAgcmVtb3ZlRm9jdXNUcmFwKCk7XG4gICAgdGhpcy5hY3Rpb25NZW51Q29tcG9uZW50LmV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5hY3Rpb25NZW51T3BlbiA9IHRydWU7XG4gIH1cbn1cbiIsIlxuQGlmKHRpdGxlIHx8IGRlc2NyaXB0aW9uKSB7XG4gIDxpb24taXRlbS1zbGlkaW5nICNjb21wb25lbnQ+XG4gICAgPGlvbi1pdGVtXG4gICAgICBbaWRdPVwidWlkXCJcbiAgICAgIFtsaW5lc109XCJsaW5lc1wiXG4gICAgICBbYnV0dG9uXT1cImJ1dHRvblwiXG4gICAgICBbY2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgICAgIChjbGljayk9XCJvcGVyYXRpb25zPy5pbmNsdWRlcygncmVhZCcpID8gaGFuZGxlQWN0aW9uKCdyZWFkJywgJGV2ZW50LCBjb21wb25lbnQpIDogJydcbiAgICBcIj5cbiAgICAgIEBpZihpY29uICYmIGxpbmVzICE9PSAnaW5zZXQnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtaWNvblwiIFtzbG90XT1cImljb25TbG90XCI+XG4gICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInJlYWRlci1vdXRsaW5lXCIgc2l6ZT1cImRlZmF1bHRcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWV4cGFuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGRjZi1ncmlkLWNvbGxhcHNlXCIgZGNmLWdyaWQ+XG4gICAgICAgICAgQGlmKGljb24gJiYgbGluZXMgPT09ICdpbnNldCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtaWNvbiBkY2YtZ3JpZC1pY29uXCI+XG4gICAgICAgICAgICAgIDxpb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBuYW1lPVwicmVhZGVyLW91dGxpbmVcIiAgc2l6ZT1cImRlZmF1bHRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC1leHBhbmRAcyBkY2Ytd2lkdGgtMS0xIGRjZi1sYWJlbFwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRjZi1pdGVtLXRpdGxlXCIgW2lubmVySFRNTF09XCJ1aWQgKyAnIC0gJyArIHRpdGxlXCIgPjwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgQGlmKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmKGluZm8gfHwgc3ViaW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC1hdXRvQHMgZGNmLXdpZHRoLWV4cGFuZCBkY2YtaW5mbyBkY2YtZmxleCBkY2YtZmxleC1yaWdodEBzXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgQGlmKGluZm8pIHtcbiAgICAgICAgICAgICAgICA8c3BhbiAgW2lubmVySFRNTF09XCJpbmZvXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoc3ViaW5mbykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1zdWJpbmZvIGRjZi10ZXh0LXRydW5jYXRlXCIgW2lubmVySFRNTF09XCJzdWJpbmZvXCIgPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWF1dG8gZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGRjZi1mbGV4LXJpZ2h0XCI+XG4gICAgICAgICAgICBAaWYoKG9wZXJhdGlvbnMuaW5jbHVkZXMoJ2RlbGV0ZScpIHx8IG9wZXJhdGlvbnMuaW5jbHVkZXMoJ3VwZGF0ZScpKSAmJiB1aWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi12aXNpYmxlQG1cIiBpZD1cImRjZi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJkY2YtaGlkZGVuQG1cIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInByZXNlbnRBY3Rpb25zTWVudSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIG5hbWU9XCJlbGxpcHNpcy12ZXJ0aWNhbC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGlvbi1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAjYWN0aW9uTWVudUNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgc2lkZT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ9XCJsZWZ0XCJcblxuICAgICAgICAgICAgICAgICAgW2lzT3Blbl09XCJhY3Rpb25NZW51T3BlblwiXG4gICAgICAgICAgICAgICAgICAoZGlkRGlzbWlzcyk9XCJhY3Rpb25NZW51T3BlbiA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZGNmLXRleHQtY2FwaXRhbGl6ZVwiIFtpbm5lckhUTUxdPVwiJ2FjdGlvbnMnIHwgdHJhbnNsYXRlXCI+PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3BlcmF0aW9uIG9mIFsndXBkYXRlJywgJ2RlbGV0ZSddOyB0cmFjayBvcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnMuaW5jbHVkZXMob3BlcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbihvcGVyYXRpb24sICRldmVudCwgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgY2xhc3M9XCJkY2YtZmxleCBkY2YtZmxleC1taWRkbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRjZi10ZXh0LWNhcGl0YWxpemVcIj57eyBvcGVyYXRpb24gfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEBpZihvcGVyYXRpb25zPy5sZW5ndGggJiYgdWlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtdmlzaWJsZUBtXCIgaWQ9XCJkY2YtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygndXBkYXRlJykpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ3VwZGF0ZScsICBjb21wb25lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnM/LmluY2x1ZGVzKCdkZWxldGUnKSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCdkZWxldGUnLCAgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICBAaWYod2luZG93V2lkdGggPiA2MzkpIHtcbiAgICAgICAgICAgICAgPGRpdiBpZD1cImVuZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24taXRlbT5cbiAgICBAaWYoc2hvd1NsaWRlSXRlbXMgJiYgdWlkKSB7XG4gICAgICA8aW9uLWl0ZW0tb3B0aW9ucyBzaWRlPVwiZW5kXCIgKGlvblN3aXBlKT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxID8gaGFuZGxlQWN0aW9uKG9wZXJhdGlvbnNbMF0sICAkZXZlbnQsIGNvbXBvbmVudCkgOiAnJ1wiPlxuICAgICAgICBAaWYob3BlcmF0aW9ucz8uaW5jbHVkZXMoJ3VwZGF0ZScpKSB7XG4gICAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi11cGRhdGVcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCd1cGRhdGUnLCAkZXZlbnQsIGNvbXBvbmVudClcIiBbZXhwYW5kYWJsZV09XCJvcGVyYXRpb25zLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWl0ZW0tb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygnZGVsZXRlJykpIHtcbiAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi0gICAgICAgICAgZGVsZXRlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZGVsZXRlJywgICRldmVudCwgY29tcG9uZW50KVwiIFtleHBhbmRhYmxlXT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24taXRlbS1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWl0ZW0tb3B0aW9ucz5cbiAgICB9XG4gIDwvaW9uLWl0ZW0tc2xpZGluZz5cbn1cbiJdfQ==
|
|
@@ -4,9 +4,8 @@ import { addIcons } from 'ionicons';
|
|
|
4
4
|
import { chevronBackOutline, chevronForwardOutline } from 'ionicons/icons';
|
|
5
5
|
import { NgxBaseComponent } from '../../engine/NgxBaseComponent';
|
|
6
6
|
import { EventConstants } from '../../engine';
|
|
7
|
-
import {
|
|
7
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@ngx-translate/core";
|
|
10
9
|
/**
|
|
11
10
|
* @description A pagination component for navigating through multiple pages of content.
|
|
12
11
|
* @summary This component provides a user interface for paginated content navigation,
|
|
@@ -303,12 +302,12 @@ export class PaginationComponent extends NgxBaseComponent {
|
|
|
303
302
|
this.handleClick(page > this.current ? 'next' : 'previous', page);
|
|
304
303
|
}
|
|
305
304
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginationComponent, isStandalone: true, selector: "ngx-decaf-pagination", inputs: { totalPages: "totalPages", current: "current" }, outputs: { clickEvent: "clickEvent" }, usesInheritance: true, ngImport: i0, template: " <div [id]=\"uid\" class=\"dcf-paginator-container dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [class.dcf-disabled]=\"current === 1\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" [class]=\"page['class']\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [class.dcf-active]=\"current === page['index']\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [class.dcf-disabled]=\"current === last\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [".dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:center;text-align:center;font-weight:600;width:34px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}@media (prefers-color-scheme: dark){.dcf-pagination .page-item{color:var(--dcf-color-gray-3)!important}}@media (prefers-color-scheme: light){.dcf-pagination .page-item{color:var(--dcf-color-gray-7)!important}}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem;cursor:pointer}.dcf-pagination>*.dcf-disabled{pointer-events:none;touch-action:none;cursor:text}.dcf-pagination>*.dcf-active{pointer-events:none;touch-action:none}@media (prefers-color-scheme: light){.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--dcf-color-primary-rgb),.15)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){.dcf-pagination>*.dcf-active .page-item{background:var(--dcf-color-gray-7)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}.dcf-pagination-resume{margin:1rem 0px;text-align:center}@media (prefers-color-scheme: light){.dcf-pagination-resume{color:var(--dcf-color-gray-8)}}\n"], dependencies: [{ kind: "
|
|
305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginationComponent, isStandalone: true, selector: "ngx-decaf-pagination", inputs: { totalPages: "totalPages", current: "current" }, outputs: { clickEvent: "clickEvent" }, usesInheritance: true, ngImport: i0, template: " <div [id]=\"uid\" class=\"dcf-paginator-container dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [class.dcf-disabled]=\"current === 1\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" [class]=\"page['class']\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [class.dcf-active]=\"current === page['index']\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [class.dcf-disabled]=\"current === last\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [".dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:center;text-align:center;font-weight:600;width:34px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}@media (prefers-color-scheme: dark){.dcf-pagination .page-item{color:var(--dcf-color-gray-3)!important}}@media (prefers-color-scheme: light){.dcf-pagination .page-item{color:var(--dcf-color-gray-7)!important}}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem;cursor:pointer}.dcf-pagination>*.dcf-disabled{pointer-events:none;touch-action:none;cursor:text}.dcf-pagination>*.dcf-active{pointer-events:none;touch-action:none}@media (prefers-color-scheme: light){.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--dcf-color-primary-rgb),.15)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){.dcf-pagination>*.dcf-active .page-item{background:var(--dcf-color-gray-7)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}.dcf-pagination-resume{margin:1rem 0px;text-align:center}@media (prefers-color-scheme: light){.dcf-pagination-resume{color:var(--dcf-color-gray-8)}}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
307
306
|
}
|
|
308
307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
309
308
|
type: Component,
|
|
310
309
|
args: [{ selector: 'ngx-decaf-pagination', imports: [
|
|
311
|
-
|
|
310
|
+
TranslatePipe,
|
|
312
311
|
IonIcon
|
|
313
312
|
], standalone: true, template: " <div [id]=\"uid\" class=\"dcf-paginator-container dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [class.dcf-disabled]=\"current === 1\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" [class]=\"page['class']\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [class.dcf-active]=\"current === page['index']\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [class.dcf-disabled]=\"current === last\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [".dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:center;text-align:center;font-weight:600;width:34px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}@media (prefers-color-scheme: dark){.dcf-pagination .page-item{color:var(--dcf-color-gray-3)!important}}@media (prefers-color-scheme: light){.dcf-pagination .page-item{color:var(--dcf-color-gray-7)!important}}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem;cursor:pointer}.dcf-pagination>*.dcf-disabled{pointer-events:none;touch-action:none;cursor:text}.dcf-pagination>*.dcf-active{pointer-events:none;touch-action:none}@media (prefers-color-scheme: light){.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--dcf-color-primary-rgb),.15)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){.dcf-pagination>*.dcf-active .page-item{background:var(--dcf-color-gray-7)}.dcf-pagination>*:hover:not(.dcf-active) *{color:var(--dcf-color-primary)!important}}.dcf-pagination-resume{margin:1rem 0px;text-align:center}@media (prefers-color-scheme: light){.dcf-pagination-resume{color:var(--dcf-color-gray-8)}}\n"] }]
|
|
314
313
|
}], ctorParameters: () => [], propDecorators: { totalPages: [{
|
|
@@ -319,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
319
318
|
}], clickEvent: [{
|
|
320
319
|
type: Output
|
|
321
320
|
}] } });
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUE2QixNQUFNLGNBQWMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUV0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQVlILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxnQkFBZ0I7SUFvRXZEOzs7O09BSUc7SUFDSDtRQUNFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBeEUvQjs7Ozs7Ozs7V0FRRztRQUNNLGlCQUFZLEdBQW9CLElBQUksQ0FBQztRQWM5Qzs7Ozs7Ozs7V0FRRztRQUVILFlBQU8sR0FBRyxDQUFDLENBQUM7UUFxQlo7Ozs7Ozs7O1dBUUc7UUFFSCxlQUFVLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO1FBU3pGLFFBQVEsQ0FBQyxFQUFDLGtCQUFrQixFQUFFLHFC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T0FBTztxQkFDUixjQUNXLElBQUk7d0RBMEJoQixVQUFVO3NCQURULEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQWF6QixPQUFPO3NCQUROLEtBQUs7Z0JBZ0NOLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkJhY2tPdXRsaW5lLCBjaGV2cm9uRm9yd2FyZE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBOZ3hCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL05neEJhc2VDb21wb25lbnQnO1xuaW1wb3J0IHsgRXZlbnRDb25zdGFudHMsIEtleVZhbHVlLCBTdHJpbmdPckJvb2xlYW4gfSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkN1c3RvbUV2ZW50IH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgcGFnaW5hdGlvbiBjb21wb25lbnQgZm9yIG5hdmlnYXRpbmcgdGhyb3VnaCBtdWx0aXBsZSBwYWdlcyBvZiBjb250ZW50LlxuICogQHN1bW1hcnkgVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSB1c2VyIGludGVyZmFjZSBmb3IgcGFnaW5hdGVkIGNvbnRlbnQgbmF2aWdhdGlvbixcbiAqIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIGFuZCBuYXZpZ2F0aW9uIGNvbnRyb2xzLiBJdCBzdXBwb3J0cyBjdXN0b21pemFibGUgcGFnZSBjb3VudHMsXG4gKiBjdXJyZW50IHBhZ2UgdHJhY2tpbmcsIGFuZCBlbWl0cyBldmVudHMgd2hlbiB1c2VycyBuYXZpZ2F0ZSBiZXR3ZWVuIHBhZ2VzLlxuICpcbiAqIFRoZSBjb21wb25lbnQgaW50ZWxsaWdlbnRseSBoYW5kbGVzIGxhcmdlIG51bWJlcnMgb2YgcGFnZXMgYnkgc2hvd2luZyBhIHN1YnNldCBvZiBwYWdlXG4gKiBudW1iZXJzIHdpdGggZWxsaXBzZXMgdG8gaW5kaWNhdGUgc2tpcHBlZCBwYWdlcywgZW5zdXJpbmcgdGhlIFVJIHJlbWFpbnMgY2xlYW4gYW5kIHVzYWJsZVxuICogZXZlbiB3aXRoIG1hbnkgcGFnZXMuXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAqICAgcGFydGljaXBhbnQgUCBhcyBQYWdpbmF0aW9uQ29tcG9uZW50XG4gKiAgIHBhcnRpY2lwYW50IEUgYXMgRXh0ZXJuYWwgQ29tcG9uZW50XG4gKlxuICogICBVLT4+UDogQ2xpY2sgcGFnZSBudW1iZXJcbiAqICAgUC0+PlA6IG5hdmlnYXRlKHBhZ2UpXG4gKiAgIFAtPj5QOiBoYW5kbGVDbGljayhkaXJlY3Rpb24sIHBhZ2UpXG4gKiAgIFAtPj5FOiBFbWl0IGNsaWNrRXZlbnQgd2l0aCBQYWdpbmF0aW9uQ3VzdG9tRXZlbnRcbiAqXG4gKiAgIFUtPj5QOiBDbGljayBuZXh0IGJ1dHRvblxuICogICBQLT4+UDogbmV4dCgpXG4gKiAgIFAtPj5QOiBoYW5kbGVDbGljaygnbmV4dCcpXG4gKiAgIFAtPj5FOiBFbWl0IGNsaWNrRXZlbnQgd2l0aCBQYWdpbmF0aW9uQ3VzdG9tRXZlbnRcbiAqXG4gKiAgIFUtPj5QOiBDbGljayBwcmV2aW91cyBidXR0b25cbiAqICAgUC0+PlA6IHByZXZpb3VzKClcbiAqICAgUC0+PlA6IGhhbmRsZUNsaWNrKCdwcmV2aW91cycpXG4gKiAgIFAtPj5FOiBFbWl0IGNsaWNrRXZlbnQgd2l0aCBQYWdpbmF0aW9uQ3VzdG9tRXZlbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogPG5neC1kZWNhZi1wYWdpbmF0aW9uXG4gKiAgIFtwYWdlc109XCIxMFwiXG4gKiAgIFtjdXJyZW50XT1cIjNcIlxuICogICAoY2xpY2tFdmVudCk9XCJoYW5kbGVQYWdlQ2hhbmdlKCRldmVudClcIj5cbiAqIDwvbmd4LWRlY2FmLXBhZ2luYXRpb24+XG4gKlxuICogQGV4dGVuZHMge05neEJhc2VDb21wb25lbnR9XG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZGVjYWYtcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIElvbkljb25cbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcblxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGV0aGVyIHRoZSBjb21wb25lbnQgdXNlcyB0cmFuc2xhdGlvbiBzZXJ2aWNlcy5cbiAgICogQHN1bW1hcnkgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIGNvbXBvbmVudCB3aWxsIGF0dGVtcHQgdG8gdXNlIHRyYW5zbGF0aW9uIHNlcnZpY2VzXG4gICAqIGZvciBhbnkgdGV4dCBjb250ZW50LiBUaGlzIGFsbG93cyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24gb2YgdGhlIHBhZ2luYXRpb24gY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nT3JCb29sZWFufVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBvdmVycmlkZSB0cmFuc2xhdGFibGU6IFN0cmluZ09yQm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHRvIGRpc3BsYXkgaW4gdGhlIHBhZ2luYXRpb24gY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBhdmFpbGFibGUgZm9yIG5hdmlnYXRpb24uIFRoaXMgaXMgYSByZXF1aXJlZFxuICAgKiBpbnB1dCB0aGF0IGRldGVybWluZXMgaG93IG1hbnkgcGFnZSBudW1iZXJzIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEByZXF1aXJlZFxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgdG90YWxQYWdlcyE6IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50bHkgYWN0aXZlIHBhZ2UgbnVtYmVyLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgd2hpY2ggcGFnZSBpcyBjdXJyZW50bHkgYWN0aXZlIG9yIHNlbGVjdGVkLiBUaGlzIHZhbHVlIGlzIHVzZWRcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBjdXJyZW50IHBhZ2UgaW4gdGhlIFVJIGFuZCBhcyBhIHJlZmVyZW5jZSBwb2ludCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQGRlZmF1bHQgMVxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgY3VycmVudCA9IDE7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBwYWdlIG9iamVjdHMgZm9yIHJlbmRlcmluZyBpbiB0aGUgdGVtcGxhdGUuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIHRoZSBwcm9jZXNzZWQgcGFnZSBkYXRhIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGlvbiBVSS5cbiAgICogRWFjaCBvYmplY3QgaW5jbHVkZXMgYW4gaW5kZXggKHBhZ2UgbnVtYmVyKSBhbmQgdGV4dCByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0tleVZhbHVlW119XG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBwYWdlcyE6IEtleVZhbHVlW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGFzdCBwYWdlIG51bWJlciBpbiB0aGUgcGFnaW5hdGlvbi5cbiAgICogQHN1bW1hcnkgU3RvcmVzIHRoZSBudW1iZXIgb2YgdGhlIGxhc3QgcGFnZSBmb3IgYm91bmRhcnkgY2hlY2tpbmcgZHVyaW5nIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBsYXN0ITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgZW1pdHRlciBmb3IgcGFnaW5hdGlvbiBuYXZpZ2F0aW9uIGV2ZW50cy5cbiAgICogQHN1bW1hcnkgRW1pdHMgYSBjdXN0b20gZXZlbnQgd2hlbiB1c2VycyBuYXZpZ2F0ZSBiZXR3ZWVuIHBhZ2VzLCBlaXRoZXIgYnkgY2xpY2tpbmdcbiAgICogb24gcGFnZSBudW1iZXJzIG9yIHVzaW5nIHRoZSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvblxuICAgKiBhYm91dCB0aGUgbmF2aWdhdGlvbiBkaXJlY3Rpb24gYW5kIHRoZSB0YXJnZXQgcGFnZSBudW1iZXIuXG4gICAqXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkN1c3RvbUV2ZW50Pn1cbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBjbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBQYWdpbmF0aW9uQ29tcG9uZW50LlxuICAgKiBDYWxscyB0aGUgcGFyZW50IGNvbnN0cnVjdG9yIHdpdGggdGhlIGNvbXBvbmVudCBuYW1lIGZvciBnZW5lcmF0ZSBiYXNlIGxvY2FsZSBzdHJpbmcuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlBhZ2luYXRpb25Db21wb25lbnRcIik7XG4gICAgIGFkZEljb25zKHtjaGV2cm9uQmFja091dGxpbmUsIGNoZXZyb25Gb3J3YXJkT3V0bGluZX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IGFmdGVyIEFuZ3VsYXIgc2V0cyB0aGUgaW5wdXQgcHJvcGVydGllcy5cbiAgICogQHN1bW1hcnkgU2V0cyB1cCB0aGUgY29tcG9uZW50IGJ5IGluaXRpYWxpemluZyB0aGUgbG9jYWxlIHNldHRpbmdzIGJhc2VkIG9uIHRoZVxuICAgKiB0cmFuc2xhdGFibGUgcHJvcGVydHksIGdlbmVyYXRpbmcgdGhlIHBhZ2UgbnVtYmVycyBiYXNlZCBvbiB0aGUgdG90YWwgcGFnZXMgYW5kXG4gICAqIGN1cnJlbnQgcGFnZSwgYW5kIHN0b3JpbmcgdGhlIGxhc3QgcGFnZSBudW1iZXIgZm9yIGJvdW5kYXJ5IGNoZWNraW5nLlxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIEFuZ3VsYXIgTGlmZWN5Y2xlXG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqXG4gICAqICAgQS0+PlA6IG5nT25Jbml0KClcbiAgICogICBQLT4+UDogZ2V0TG9jYWxlKHRyYW5zbGF0YWJsZSlcbiAgICogICBQLT4+UDogU2V0IGxvY2FsZVxuICAgKiAgIFAtPj5QOiBnZXRQYWdlcyhkYXRhLCBjdXJyZW50KVxuICAgKiAgIFAtPj5QOiBTZXQgcGFnZXMgYXJyYXlcbiAgICogICBQLT4+UDogU2V0IGxhc3QgcGFnZSBudW1iZXJcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuZ2V0TG9jYWxlKHRoaXMudHJhbnNsYXRhYmxlKTtcbiAgICB0aGlzLnBhZ2VzID0gdGhpcy5nZXRQYWdlcyh0aGlzLnRvdGFsUGFnZXMsIHRoaXMuY3VycmVudCkgYXMgS2V5VmFsdWVbXTtcbiAgICB0aGlzLmxhc3QgPSB0aGlzLnRvdGFsUGFnZXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG9uIHBhZ2luYXRpb24gY29udHJvbHMuXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyB1c2VyIGludGVyYWN0aW9ucyB3aXRoIHRoZSBwYWdpbmF0aW9uIGNvbXBvbmVudCwgdXBkYXRpbmcgdGhlXG4gICAqIGN1cnJlbnQgcGFnZSBpZiBzcGVjaWZpZWQgYW5kIGVtaXR0aW5nIGFuIGV2ZW50IHdpdGggbmF2aWdhdGlvbiBkZXRhaWxzLiBUaGlzIG1ldGhvZFxuICAgKiBpcyBjYWxsZWQgd2hlbiB1c2VycyBjbGljayBvbiBwYWdlIG51bWJlcnMgb3IgbmF2aWdhdGlvbiBidXR0b25zLlxuICAgKlxuICAgKiBAcGFyYW0geygnbmV4dCcgfCAncHJldmlvdXMnKX0gZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiBvZiBuYXZpZ2F0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFnZV0gLSBPcHRpb25hbCBwYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0byBkaXJlY3RseVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgRSBhcyBFeHRlcm5hbCBDb21wb25lbnRcbiAgICpcbiAgICogICBVLT4+UDogQ2xpY2sgcGFnaW5hdGlvbiBjb250cm9sXG4gICAqICAgUC0+PlA6IGhhbmRsZUNsaWNrKGRpcmVjdGlvbiwgcGFnZT8pXG4gICAqICAgYWx0IHBhZ2UgaXMgcHJvdmlkZWRcbiAgICogICAgIFAtPj5QOiBVcGRhdGUgY3VycmVudCBwYWdlXG4gICAqICAgZW5kXG4gICAqICAgUC0+PkU6IEVtaXQgY2xpY2tFdmVudCB3aXRoIGRpcmVjdGlvbiBhbmQgcGFnZVxuICAgKlxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgaGFuZGxlQ2xpY2soZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldmlvdXMnLCBwYWdlPzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYocGFnZSlcbiAgICAgIHRoaXMuY3VycmVudCA9IHBhZ2U7XG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoe1xuICAgICAgbmFtZTogRXZlbnRDb25zdGFudHMuQ0xJQ0ssXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50XG4gICAgICB9LFxuICAgICAgY29tcG9uZW50OiB0aGlzLmNvbXBvbmVudE5hbWVcbiAgICB9IGFzIFBhZ2luYXRpb25DdXN0b21FdmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyB0aGUgYXJyYXkgb2YgcGFnZSBvYmplY3RzIGZvciBkaXNwbGF5LlxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGFuIGFycmF5IG9mIHBhZ2Ugb2JqZWN0cyBiYXNlZCBvbiB0aGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGFuZFxuICAgKiB0aGUgY3VycmVudCBwYWdlLiBGb3Igc21hbGwgcGFnZSBjb3VudHMgKOKJpDUpLCBhbGwgcGFnZXMgYXJlIHNob3duLiBGb3IgbGFyZ2VyIHBhZ2VcbiAgICogY291bnRzLCBhIHN1YnNldCBpcyBzaG93biB3aXRoIGVsbGlwc2VzIHRvIGluZGljYXRlIHNraXBwZWQgcGFnZXMuIFRoaXMgZW5zdXJlc1xuICAgKiB0aGUgcGFnaW5hdGlvbiBVSSByZW1haW5zIGNsZWFuIGFuZCB1c2FibGUgZXZlbiB3aXRoIG1hbnkgcGFnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b3RhbCAtIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjdXJyZW50XSAtIFRoZSBjdXJyZW50IGFjdGl2ZSBwYWdlIChkZWZhdWx0cyB0byB0aGlzLmN1cnJlbnQpXG4gICAqIEByZXR1cm5zIHtLZXlWYWx1ZVtdfSBBcnJheSBvZiBwYWdlIG9iamVjdHMgd2l0aCBpbmRleCBhbmQgdGV4dCBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIGZsb3djaGFydCBURFxuICAgKiAgIEFbU3RhcnRdIC0tPiBCe3RvdGFsIDw9IDU/fVxuICAgKiAgIEIgLS0+fFllc3wgQ1tTaG93IGFsbCBwYWdlc11cbiAgICogICBCIC0tPnxOb3wgRFtTaG93IGZpcnN0IHBhZ2VdXG4gICAqICAgRCAtLT4gRVtTaG93IGxhc3QgcGFnZXNdXG4gICAqICAgRSAtLT4gRltBZGQgZWxsaXBzZXMgZm9yIHNraXBwZWQgcGFnZXNdXG4gICAqICAgQyAtLT4gR1tSZXR1cm4gcGFnZXMgYXJyYXldXG4gICAqICAgRiAtLT4gR1xuICAgKlxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgZ2V0UGFnZXModG90YWw6IG51bWJlciwgY3VycmVudD86IG51bWJlcik6IEtleVZhbHVlW10ge1xuICAgIGlmICghY3VycmVudCkgY3VycmVudCA9IHRoaXMuY3VycmVudDtcblxuICAgIGNvbnN0IHBhZ2VzOiBLZXlWYWx1ZVtdID0gW107XG5cbiAgICBmdW5jdGlvbiBnZXRQYWdlKGluZGV4OiBudW1iZXIgfCBudWxsLCB0ZXh0ID0gJycsIGNsYXp6ID0gJ2J1dHRvbicpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhZ2VzLnNvbWUoaXRlbSA9PiBpdGVtWydpbmRleCddID09PSBpbmRleCkpIHJldHVybjtcbiAgICAgICAgcGFnZXMucHVzaCh7IGluZGV4LCB0ZXh0OiBpbmRleCAhPSBudWxsID8gaW5kZXgudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpIDogdGV4dCwgY2xhc3M6IGNsYXp6IH0pO1xuICAgIH1cblxuICAgIGlmICh0b3RhbCA8PSA1KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsOyBpKyspIGdldFBhZ2UoaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFkaWNpb25hIG9zIGRvaXMgcHJpbWVpcm9zXG4gICAgICBnZXRQYWdlKDEpO1xuICAgICAgZ2V0UGFnZSgyKTtcblxuICAgICAgLy8gQWRpY2lvbmEgXCIuLi5cIiBlbnRyZSBvcyBibG9jb3NcbiAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQgPiAzKSBnZXRQYWdlKG51bGwsICcuLi4nKTtcblxuICAgICAgLy8gQWRpY2lvbmEgYSBww6FnaW5hIGF0dWFsIChzZSBlc3RpdmVyIG5vIG1laW8pXG4gICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50ID4gMiAmJiBjdXJyZW50IDwgdG90YWwgLSAxKSBnZXRQYWdlKGN1cnJlbnQpO1xuXG4gICAgICAvLyBBZGljaW9uYSBcIi4uLlwiIGVudHJlIG9zIGJsb2Nvc1xuICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA8IHRvdGFsIC0gMikgZ2V0UGFnZShudWxsLCAnLi4uJyAsICdzZXBhcmF0b3InKTtcblxuICAgICAgLy8gQWRpY2lvbmEgb3MgZG9pcyDDumx0aW1vc1xuICAgICAgZ2V0UGFnZSh0b3RhbCAtIDEpO1xuICAgICAgZ2V0UGFnZSh0b3RhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBwYWdlIG51bWJlci5cbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgY3VycmVudCBwYWdlIG51bWJlciB0aGF0IGlzIGFjdGl2ZSBpbiB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgd2F5IHRvIGFjY2VzcyB0aGUgY3VycmVudCBwYWdlIHN0YXRlIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY3VycmVudCBwYWdlIG51bWJlclxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgZ2V0Q3VycmVudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBwYWdlLlxuICAgKiBAc3VtbWFyeSBJbmNyZW1lbnRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGlmIG5vdCBhdCB0aGUgbGFzdCBwYWdlIGFuZCB0cmlnZ2Vyc1xuICAgKiB0aGUgY2xpY2sgZXZlbnQgaGFuZGxlciB3aXRoICduZXh0JyBkaXJlY3Rpb24uIFRoaXMgbWV0aG9kIGlzIHR5cGljYWxseSBjYWxsZWRcbiAgICogd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIFwibmV4dFwiIGJ1dHRvbiBpbiB0aGUgcGFnaW5hdGlvbiBVSS5cbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICAgKiAgIHBhcnRpY2lwYW50IFAgYXMgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKlxuICAgKiAgIFUtPj5QOiBDbGljayBuZXh0IGJ1dHRvblxuICAgKiAgIFAtPj5QOiBuZXh0KClcbiAgICogICBhbHQgcGFnZSA8PSBtYXggcGFnZXNcbiAgICogICAgIFAtPj5QOiBJbmNyZW1lbnQgY3VycmVudCBwYWdlXG4gICAqICAgICBQLT4+UDogaGFuZGxlQ2xpY2soJ25leHQnKVxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5jdXJyZW50ICsgMTtcbiAgICBpZihwYWdlIDw9IE9iamVjdC5rZXlzKHRoaXMucGFnZXMpPy5sZW5ndGggfHwgMCkge1xuICAgICAgdGhpcy5jdXJyZW50ID0gcGFnZTtcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2soJ25leHQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgcGFnZS5cbiAgICogQHN1bW1hcnkgRGVjcmVtZW50cyB0aGUgY3VycmVudCBwYWdlIG51bWJlciBpZiBub3QgYXQgdGhlIGZpcnN0IHBhZ2UgYW5kIHRyaWdnZXJzXG4gICAqIHRoZSBjbGljayBldmVudCBoYW5kbGVyIHdpdGggJ3ByZXZpb3VzJyBkaXJlY3Rpb24uIFRoaXMgbWV0aG9kIGlzIHR5cGljYWxseSBjYWxsZWRcbiAgICogd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIFwicHJldmlvdXNcIiBidXR0b24gaW4gdGhlIHBhZ2luYXRpb24gVUkuXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICpcbiAgICogICBVLT4+UDogQ2xpY2sgcHJldmlvdXMgYnV0dG9uXG4gICAqICAgUC0+PlA6IHByZXZpb3VzKClcbiAgICogICBhbHQgcGFnZSA+IDBcbiAgICogICAgIFAtPj5QOiBEZWNyZW1lbnQgY3VycmVudCBwYWdlXG4gICAqICAgICBQLT4+UDogaGFuZGxlQ2xpY2soJ3ByZXZpb3VzJylcbiAgICogICBlbmRcbiAgICpcbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnQgLSAxO1xuICAgIGlmKHBhZ2UgPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSBwYWdlO1xuICAgICAgdGhpcy5oYW5kbGVDbGljaygncHJldmlvdXMnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hdmlnYXRlcyB0byBhIHNwZWNpZmljIHBhZ2UgbnVtYmVyLlxuICAgKiBAc3VtbWFyeSBVcGRhdGVzIHRoZSBjdXJyZW50IHBhZ2UgdG8gdGhlIHNwZWNpZmllZCBwYWdlIG51bWJlciBhbmQgdHJpZ2dlcnNcbiAgICogdGhlIGNsaWNrIGV2ZW50IGhhbmRsZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9uLiBUaGlzIG1ldGhvZCBpcyB0eXBpY2FsbHlcbiAgICogY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGRpcmVjdGx5IG9uIGEgcGFnZSBudW1iZXIgaW4gdGhlIHBhZ2luYXRpb24gVUkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gcGFnZSAtIFRoZSBwYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqXG4gICAqICAgVS0+PlA6IENsaWNrIHBhZ2UgbnVtYmVyXG4gICAqICAgUC0+PlA6IG5hdmlnYXRlKHBhZ2UpXG4gICAqICAgYWx0IHBhZ2UgaXMgbm90IG51bGwgYW5kIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICogICAgIFAtPj5QOiBEZXRlcm1pbmUgZGlyZWN0aW9uIChuZXh0L3ByZXZpb3VzKVxuICAgKiAgICAgUC0+PlA6IGhhbmRsZUNsaWNrKGRpcmVjdGlvbiwgcGFnZSlcbiAgICogICBlbmRcbiAgICpcbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIG5hdmlnYXRlKHBhZ2U6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICBpZihwYWdlICE9PSBudWxsICYmIHRoaXMuY3VycmVudCAhPT0gcGFnZSBhcyBudW1iZXIpXG4gICAgICB0aGlzLmhhbmRsZUNsaWNrKHBhZ2UgPiB0aGlzLmN1cnJlbnQgPyAnbmV4dCcgOiAncHJldmlvdXMnLCBwYWdlKTtcbiAgfVxufVxuIiwiIDxkaXYgW2lkXT1cInVpZFwiIGNsYXNzPVwiZGNmLXBhZ2luYXRvci1jb250YWluZXIgZGNmLWZsZXggZGNmLWZsZXgtY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJkY2Ytd2lkdGgtMS0xXCI+XG4gICAgPGRpdiBjbGFzcz1cImRjZi1wYWdpbmF0aW9uLXJlc3VtZVwiIFtpbm5lckhUTUxdPVwibG9jYWxlICsgJy5yZXN1bWUnIHwgdHJhbnNsYXRlOiB7dmFsdWUwOiBjdXJyZW50LCB2YWx1ZTE6IGxhc3R9XCI+PC9kaXY+XG4gICAgPGRpdiAjcGFnaW5hdGlvbkNvbXBvbmVudCBjbGFzcz1cImRjZi1wYWdpbmF0aW9uIGRjZi1mbGV4LWNlbnRlclwiPlxuICAgICAgPGRpdlxuICAgICAgICBhcmlhLWxhYmVsPVwicHJldmlvdXNcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoY2xpY2spPVwicHJldmlvdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInByZXZpb3VzKClcIiBbY2xhc3MuZGNmLWRpc2FibGVkXT1cImN1cnJlbnQgPT09IDFcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBmb3IocGFnZSBvZiBwYWdlczsgdHJhY2sgcGFnZSkge1xuICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIFtjbGFzc109XCJwYWdlWydjbGFzcyddXCIgKGNsaWNrKT1cIm5hdmlnYXRlKHBhZ2VbJ2luZGV4J10pXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJuYXZpZ2F0ZShwYWdlWydpbmRleCddKVwiXG4gICAgICAgICAgW2NsYXNzLmRjZi1hY3RpdmVdPVwiY3VycmVudCA9PT0gcGFnZVsnaW5kZXgnXVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1pdGVtXCI+e3sgcGFnZVsndGV4dCddIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXZcbiAgICAgICAgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5leHQoKVwiXG4gICAgICAgIFtjbGFzcy5kY2YtZGlzYWJsZWRdPVwiY3VycmVudCA9PT0gbGFzdFwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUE2QixNQUFNLGNBQWMsQ0FBQztBQUV6RSxPQUFPLEVBQUcsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBWUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQW9FdkQ7Ozs7T0FJRztJQUNIO1FBQ0UsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUF4RS9COzs7Ozs7OztXQVFHO1FBQ00saUJBQVksR0FBb0IsSUFBSSxDQUFDO1FBYzlDOzs7Ozs7OztXQVFHO1FBRUgsWUFBTyxHQUFHLENBQUMsQ0FBQztRQXFCWjs7Ozs7Ozs7V0FRRztRQUVILGVBQVUsR0FBd0MsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFTekYsUUFBUSxDQUFDLEVBQUMsa0JBQWtCLEVBQUUscUJB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QUFPO3FCQUNSLGNBQ1csSUFBSTt3REEwQmhCLFVBQVU7c0JBRFQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBYXpCLE9BQU87c0JBRE4sS0FBSztnQkFnQ04sVUFBVTtzQkFEVCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGV2cm9uQmFja091dGxpbmUsIGNoZXZyb25Gb3J3YXJkT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IE5neEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbmdpbmUvTmd4QmFzZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdmVudENvbnN0YW50cywgS2V5VmFsdWUsIFN0cmluZ09yQm9vbGVhbiB9IGZyb20gJy4uLy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ3VzdG9tRXZlbnQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyAgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIHBhZ2luYXRpb24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW5nIHRocm91Z2ggbXVsdGlwbGUgcGFnZXMgb2YgY29udGVudC5cbiAqIEBzdW1tYXJ5IFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgdXNlciBpbnRlcmZhY2UgZm9yIHBhZ2luYXRlZCBjb250ZW50IG5hdmlnYXRpb24sXG4gKiBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyBhbmQgbmF2aWdhdGlvbiBjb250cm9scy4gSXQgc3VwcG9ydHMgY3VzdG9taXphYmxlIHBhZ2UgY291bnRzLFxuICogY3VycmVudCBwYWdlIHRyYWNraW5nLCBhbmQgZW1pdHMgZXZlbnRzIHdoZW4gdXNlcnMgbmF2aWdhdGUgYmV0d2VlbiBwYWdlcy5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGludGVsbGlnZW50bHkgaGFuZGxlcyBsYXJnZSBudW1iZXJzIG9mIHBhZ2VzIGJ5IHNob3dpbmcgYSBzdWJzZXQgb2YgcGFnZVxuICogbnVtYmVycyB3aXRoIGVsbGlwc2VzIHRvIGluZGljYXRlIHNraXBwZWQgcGFnZXMsIGVuc3VyaW5nIHRoZSBVSSByZW1haW5zIGNsZWFuIGFuZCB1c2FibGVcbiAqIGV2ZW4gd2l0aCBtYW55IHBhZ2VzLlxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gKiAgIHBhcnRpY2lwYW50IFAgYXMgUGFnaW5hdGlvbkNvbXBvbmVudFxuICogICBwYXJ0aWNpcGFudCBFIGFzIEV4dGVybmFsIENvbXBvbmVudFxuICpcbiAqICAgVS0+PlA6IENsaWNrIHBhZ2UgbnVtYmVyXG4gKiAgIFAtPj5QOiBuYXZpZ2F0ZShwYWdlKVxuICogICBQLT4+UDogaGFuZGxlQ2xpY2soZGlyZWN0aW9uLCBwYWdlKVxuICogICBQLT4+RTogRW1pdCBjbGlja0V2ZW50IHdpdGggUGFnaW5hdGlvbkN1c3RvbUV2ZW50XG4gKlxuICogICBVLT4+UDogQ2xpY2sgbmV4dCBidXR0b25cbiAqICAgUC0+PlA6IG5leHQoKVxuICogICBQLT4+UDogaGFuZGxlQ2xpY2soJ25leHQnKVxuICogICBQLT4+RTogRW1pdCBjbGlja0V2ZW50IHdpdGggUGFnaW5hdGlvbkN1c3RvbUV2ZW50XG4gKlxuICogICBVLT4+UDogQ2xpY2sgcHJldmlvdXMgYnV0dG9uXG4gKiAgIFAtPj5QOiBwcmV2aW91cygpXG4gKiAgIFAtPj5QOiBoYW5kbGVDbGljaygncHJldmlvdXMnKVxuICogICBQLT4+RTogRW1pdCBjbGlja0V2ZW50IHdpdGggUGFnaW5hdGlvbkN1c3RvbUV2ZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIDxuZ3gtZGVjYWYtcGFnaW5hdGlvblxuICogICBbcGFnZXNdPVwiMTBcIlxuICogICBbY3VycmVudF09XCIzXCJcbiAqICAgKGNsaWNrRXZlbnQpPVwiaGFuZGxlUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gKiA8L25neC1kZWNhZi1wYWdpbmF0aW9uPlxuICpcbiAqIEBleHRlbmRzIHtOZ3hCYXNlQ29tcG9uZW50fVxuICogQGltcGxlbWVudHMge09uSW5pdH1cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRlY2FmLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uSWNvblxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCB1c2VzIHRyYW5zbGF0aW9uIHNlcnZpY2VzLlxuICAgKiBAc3VtbWFyeSBXaGVuIHNldCB0byB0cnVlLCB0aGUgY29tcG9uZW50IHdpbGwgYXR0ZW1wdCB0byB1c2UgdHJhbnNsYXRpb24gc2VydmljZXNcbiAgICogZm9yIGFueSB0ZXh0IGNvbnRlbnQuIFRoaXMgYWxsb3dzIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbiBvZiB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmdPckJvb2xlYW59XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIG92ZXJyaWRlIHRyYW5zbGF0YWJsZTogU3RyaW5nT3JCb29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgdG8gZGlzcGxheSBpbiB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB0aGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGF2YWlsYWJsZSBmb3IgbmF2aWdhdGlvbi4gVGhpcyBpcyBhIHJlcXVpcmVkXG4gICAqIGlucHV0IHRoYXQgZGV0ZXJtaW5lcyBob3cgbWFueSBwYWdlIG51bWJlcnMgd2lsbCBiZSBnZW5lcmF0ZWQgYW5kIGRpc3BsYXllZC5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQHJlcXVpcmVkXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICB0b3RhbFBhZ2VzITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnRseSBhY3RpdmUgcGFnZSBudW1iZXIuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGljaCBwYWdlIGlzIGN1cnJlbnRseSBhY3RpdmUgb3Igc2VsZWN0ZWQuIFRoaXMgdmFsdWUgaXMgdXNlZFxuICAgKiB0byBoaWdobGlnaHQgdGhlIGN1cnJlbnQgcGFnZSBpbiB0aGUgVUkgYW5kIGFzIGEgcmVmZXJlbmNlIHBvaW50IGZvciBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAZGVmYXVsdCAxXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBjdXJyZW50ID0gMTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHBhZ2Ugb2JqZWN0cyBmb3IgcmVuZGVyaW5nIGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgdGhlIHByb2Nlc3NlZCBwYWdlIGRhdGEgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0aW9uIFVJLlxuICAgKiBFYWNoIG9iamVjdCBpbmNsdWRlcyBhbiBpbmRleCAocGFnZSBudW1iZXIpIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7S2V5VmFsdWVbXX1cbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIHBhZ2VzITogS2V5VmFsdWVbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsYXN0IHBhZ2UgbnVtYmVyIGluIHRoZSBwYWdpbmF0aW9uLlxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIG51bWJlciBvZiB0aGUgbGFzdCBwYWdlIGZvciBib3VuZGFyeSBjaGVja2luZyBkdXJpbmcgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIGxhc3QhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBwYWdpbmF0aW9uIG5hdmlnYXRpb24gZXZlbnRzLlxuICAgKiBAc3VtbWFyeSBFbWl0cyBhIGN1c3RvbSBldmVudCB3aGVuIHVzZXJzIG5hdmlnYXRlIGJldHdlZW4gcGFnZXMsIGVpdGhlciBieSBjbGlja2luZ1xuICAgKiBvbiBwYWdlIG51bWJlcnMgb3IgdXNpbmcgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucy4gVGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBuYXZpZ2F0aW9uIGRpcmVjdGlvbiBhbmQgdGhlIHRhcmdldCBwYWdlIG51bWJlci5cbiAgICpcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ+fVxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFBhZ2luYXRpb25Db21wb25lbnQuXG4gICAqIENhbGxzIHRoZSBwYXJlbnQgY29uc3RydWN0b3Igd2l0aCB0aGUgY29tcG9uZW50IG5hbWUgZm9yIGdlbmVyYXRlIGJhc2UgbG9jYWxlIHN0cmluZy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiUGFnaW5hdGlvbkNvbXBvbmVudFwiKTtcbiAgICAgYWRkSWNvbnMoe2NoZXZyb25CYWNrT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgYWZ0ZXIgQW5ndWxhciBzZXRzIHRoZSBpbnB1dCBwcm9wZXJ0aWVzLlxuICAgKiBAc3VtbWFyeSBTZXRzIHVwIHRoZSBjb21wb25lbnQgYnkgaW5pdGlhbGl6aW5nIHRoZSBsb2NhbGUgc2V0dGluZ3MgYmFzZWQgb24gdGhlXG4gICAqIHRyYW5zbGF0YWJsZSBwcm9wZXJ0eSwgZ2VuZXJhdGluZyB0aGUgcGFnZSBudW1iZXJzIGJhc2VkIG9uIHRoZSB0b3RhbCBwYWdlcyBhbmRcbiAgICogY3VycmVudCBwYWdlLCBhbmQgc3RvcmluZyB0aGUgbGFzdCBwYWdlIG51bWJlciBmb3IgYm91bmRhcnkgY2hlY2tpbmcuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQW5ndWxhciBMaWZlY3ljbGVcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICpcbiAgICogICBBLT4+UDogbmdPbkluaXQoKVxuICAgKiAgIFAtPj5QOiBnZXRMb2NhbGUodHJhbnNsYXRhYmxlKVxuICAgKiAgIFAtPj5QOiBTZXQgbG9jYWxlXG4gICAqICAgUC0+PlA6IGdldFBhZ2VzKGRhdGEsIGN1cnJlbnQpXG4gICAqICAgUC0+PlA6IFNldCBwYWdlcyBhcnJheVxuICAgKiAgIFAtPj5QOiBTZXQgbGFzdCBwYWdlIG51bWJlclxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICogQG1lbWJlck9mIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5nZXRMb2NhbGUodGhpcy50cmFuc2xhdGFibGUpO1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmdldFBhZ2VzKHRoaXMudG90YWxQYWdlcywgdGhpcy5jdXJyZW50KSBhcyBLZXlWYWx1ZVtdO1xuICAgIHRoaXMubGFzdCA9IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlcyBjbGljayBldmVudHMgb24gcGFnaW5hdGlvbiBjb250cm9scy5cbiAgICogQHN1bW1hcnkgUHJvY2Vzc2VzIHVzZXIgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHBhZ2luYXRpb24gY29tcG9uZW50LCB1cGRhdGluZyB0aGVcbiAgICogY3VycmVudCBwYWdlIGlmIHNwZWNpZmllZCBhbmQgZW1pdHRpbmcgYW4gZXZlbnQgd2l0aCBuYXZpZ2F0aW9uIGRldGFpbHMuIFRoaXMgbWV0aG9kXG4gICAqIGlzIGNhbGxlZCB3aGVuIHVzZXJzIGNsaWNrIG9uIHBhZ2UgbnVtYmVycyBvciBuYXZpZ2F0aW9uIGJ1dHRvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7KCduZXh0JyB8ICdwcmV2aW91cycpfSBkaXJlY3Rpb24gLSBUaGUgZGlyZWN0aW9uIG9mIG5hdmlnYXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwYWdlXSAtIE9wdGlvbmFsIHBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvIGRpcmVjdGx5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBFIGFzIEV4dGVybmFsIENvbXBvbmVudFxuICAgKlxuICAgKiAgIFUtPj5QOiBDbGljayBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICogICBQLT4+UDogaGFuZGxlQ2xpY2soZGlyZWN0aW9uLCBwYWdlPylcbiAgICogICBhbHQgcGFnZSBpcyBwcm92aWRlZFxuICAgKiAgICAgUC0+PlA6IFVwZGF0ZSBjdXJyZW50IHBhZ2VcbiAgICogICBlbmRcbiAgICogICBQLT4+RTogRW1pdCBjbGlja0V2ZW50IHdpdGggZGlyZWN0aW9uIGFuZCBwYWdlXG4gICAqXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBoYW5kbGVDbGljayhkaXJlY3Rpb246ICduZXh0JyB8ICdwcmV2aW91cycsIHBhZ2U/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZihwYWdlKVxuICAgICAgdGhpcy5jdXJyZW50ID0gcGFnZTtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XG4gICAgICBuYW1lOiBFdmVudENvbnN0YW50cy5DTElDSyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50TmFtZVxuICAgIH0gYXMgUGFnaW5hdGlvbkN1c3RvbUV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIHRoZSBhcnJheSBvZiBwYWdlIG9iamVjdHMgZm9yIGRpc3BsYXkuXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYW4gYXJyYXkgb2YgcGFnZSBvYmplY3RzIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgYW5kXG4gICAqIHRoZSBjdXJyZW50IHBhZ2UuIEZvciBzbWFsbCBwYWdlIGNvdW50cyAo4omkNSksIGFsbCBwYWdlcyBhcmUgc2hvd24uIEZvciBsYXJnZXIgcGFnZVxuICAgKiBjb3VudHMsIGEgc3Vic2V0IGlzIHNob3duIHdpdGggZWxsaXBzZXMgdG8gaW5kaWNhdGUgc2tpcHBlZCBwYWdlcy4gVGhpcyBlbnN1cmVzXG4gICAqIHRoZSBwYWdpbmF0aW9uIFVJIHJlbWFpbnMgY2xlYW4gYW5kIHVzYWJsZSBldmVuIHdpdGggbWFueSBwYWdlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRvdGFsIC0gVGhlIHRvdGFsIG51bWJlciBvZiBwYWdlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW2N1cnJlbnRdIC0gVGhlIGN1cnJlbnQgYWN0aXZlIHBhZ2UgKGRlZmF1bHRzIHRvIHRoaXMuY3VycmVudClcbiAgICogQHJldHVybnMge0tleVZhbHVlW119IEFycmF5IG9mIHBhZ2Ugb2JqZWN0cyB3aXRoIGluZGV4IGFuZCB0ZXh0IHByb3BlcnRpZXNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogZmxvd2NoYXJ0IFREXG4gICAqICAgQVtTdGFydF0gLS0+IEJ7dG90YWwgPD0gNT99XG4gICAqICAgQiAtLT58WWVzfCBDW1Nob3cgYWxsIHBhZ2VzXVxuICAgKiAgIEIgLS0+fE5vfCBEW1Nob3cgZmlyc3QgcGFnZV1cbiAgICogICBEIC0tPiBFW1Nob3cgbGFzdCBwYWdlc11cbiAgICogICBFIC0tPiBGW0FkZCBlbGxpcHNlcyBmb3Igc2tpcHBlZCBwYWdlc11cbiAgICogICBDIC0tPiBHW1JldHVybiBwYWdlcyBhcnJheV1cbiAgICogICBGIC0tPiBHXG4gICAqXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBnZXRQYWdlcyh0b3RhbDogbnVtYmVyLCBjdXJyZW50PzogbnVtYmVyKTogS2V5VmFsdWVbXSB7XG4gICAgaWYgKCFjdXJyZW50KSBjdXJyZW50ID0gdGhpcy5jdXJyZW50O1xuXG4gICAgY29uc3QgcGFnZXM6IEtleVZhbHVlW10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIGdldFBhZ2UoaW5kZXg6IG51bWJlciB8IG51bGwsIHRleHQgPSAnJywgY2xhenogPSAnYnV0dG9uJyk6IHZvaWQge1xuICAgICAgICBpZiAocGFnZXMuc29tZShpdGVtID0+IGl0ZW1bJ2luZGV4J10gPT09IGluZGV4KSkgcmV0dXJuO1xuICAgICAgICBwYWdlcy5wdXNoKHsgaW5kZXgsIHRleHQ6IGluZGV4ICE9IG51bGwgPyBpbmRleC50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJykgOiB0ZXh0LCBjbGFzczogY2xhenogfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvdGFsIDw9IDUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWw7IGkrKykgZ2V0UGFnZShpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWRpY2lvbmEgb3MgZG9pcyBwcmltZWlyb3NcbiAgICAgIGdldFBhZ2UoMSk7XG4gICAgICBnZXRQYWdlKDIpO1xuXG4gICAgICAvLyBBZGljaW9uYSBcIi4uLlwiIGVudHJlIG9zIGJsb2Nvc1xuICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA+IDMpIGdldFBhZ2UobnVsbCwgJy4uLicpO1xuXG4gICAgICAvLyBBZGljaW9uYSBhIHDDoWdpbmEgYXR1YWwgKHNlIGVzdGl2ZXIgbm8gbWVpbylcbiAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQgPiAyICYmIGN1cnJlbnQgPCB0b3RhbCAtIDEpIGdldFBhZ2UoY3VycmVudCk7XG5cbiAgICAgIC8vIEFkaWNpb25hIFwiLi4uXCIgZW50cmUgb3MgYmxvY29zXG4gICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50IDwgdG90YWwgLSAyKSBnZXRQYWdlKG51bGwsICcuLi4nICwgJ3NlcGFyYXRvcicpO1xuXG4gICAgICAvLyBBZGljaW9uYSBvcyBkb2lzIMO6bHRpbW9zXG4gICAgICBnZXRQYWdlKHRvdGFsIC0gMSk7XG4gICAgICBnZXRQYWdlKHRvdGFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFnZXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGN1cnJlbnQgYWN0aXZlIHBhZ2UgbnVtYmVyLlxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIHRoYXQgaXMgYWN0aXZlIGluIHRoZSBwYWdpbmF0aW9uIGNvbXBvbmVudC5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgYSB3YXkgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHBhZ2Ugc3RhdGUgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBnZXRDdXJyZW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmF2aWdhdGVzIHRvIHRoZSBuZXh0IHBhZ2UuXG4gICAqIEBzdW1tYXJ5IEluY3JlbWVudHMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgaWYgbm90IGF0IHRoZSBsYXN0IHBhZ2UgYW5kIHRyaWdnZXJzXG4gICAqIHRoZSBjbGljayBldmVudCBoYW5kbGVyIHdpdGggJ25leHQnIGRpcmVjdGlvbi4gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IGNhbGxlZFxuICAgKiB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgXCJuZXh0XCIgYnV0dG9uIGluIHRoZSBwYWdpbmF0aW9uIFVJLlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqXG4gICAqICAgVS0+PlA6IENsaWNrIG5leHQgYnV0dG9uXG4gICAqICAgUC0+PlA6IG5leHQoKVxuICAgKiAgIGFsdCBwYWdlIDw9IG1heCBwYWdlc1xuICAgKiAgICAgUC0+PlA6IEluY3JlbWVudCBjdXJyZW50IHBhZ2VcbiAgICogICAgIFAtPj5QOiBoYW5kbGVDbGljaygnbmV4dCcpXG4gICAqICAgZW5kXG4gICAqXG4gICAqIEBtZW1iZXJPZiBQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAqL1xuICBuZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnQgKyAxO1xuICAgIGlmKHBhZ2UgPD0gT2JqZWN0LmtleXModGhpcy5wYWdlcyk/Lmxlbmd0aCB8fCAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSBwYWdlO1xuICAgICAgdGhpcy5oYW5kbGVDbGljaygnbmV4dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBwYWdlLlxuICAgKiBAc3VtbWFyeSBEZWNyZW1lbnRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGlmIG5vdCBhdCB0aGUgZmlyc3QgcGFnZSBhbmQgdHJpZ2dlcnNcbiAgICogdGhlIGNsaWNrIGV2ZW50IGhhbmRsZXIgd2l0aCAncHJldmlvdXMnIGRpcmVjdGlvbi4gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IGNhbGxlZFxuICAgKiB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgXCJwcmV2aW91c1wiIGJ1dHRvbiBpbiB0aGUgcGFnaW5hdGlvbiBVSS5cbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICAgKiAgIHBhcnRpY2lwYW50IFAgYXMgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKlxuICAgKiAgIFUtPj5QOiBDbGljayBwcmV2aW91cyBidXR0b25cbiAgICogICBQLT4+UDogcHJldmlvdXMoKVxuICAgKiAgIGFsdCBwYWdlID4gMFxuICAgKiAgICAgUC0+PlA6IERlY3JlbWVudCBjdXJyZW50IHBhZ2VcbiAgICogICAgIFAtPj5QOiBoYW5kbGVDbGljaygncHJldmlvdXMnKVxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuY3VycmVudCAtIDE7XG4gICAgaWYocGFnZSA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IHBhZ2U7XG4gICAgICB0aGlzLmhhbmRsZUNsaWNrKCdwcmV2aW91cycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWMgcGFnZSBudW1iZXIuXG4gICAqIEBzdW1tYXJ5IFVwZGF0ZXMgdGhlIGN1cnJlbnQgcGFnZSB0byB0aGUgc3BlY2lmaWVkIHBhZ2UgbnVtYmVyIGFuZCB0cmlnZ2Vyc1xuICAgKiB0aGUgY2xpY2sgZXZlbnQgaGFuZGxlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3Rpb24uIFRoaXMgbWV0aG9kIGlzIHR5cGljYWxseVxuICAgKiBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgZGlyZWN0bHkgb24gYSBwYWdlIG51bWJlciBpbiB0aGUgcGFnaW5hdGlvbiBVSS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBwYWdlIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhZ2luYXRpb25Db21wb25lbnRcbiAgICpcbiAgICogICBVLT4+UDogQ2xpY2sgcGFnZSBudW1iZXJcbiAgICogICBQLT4+UDogbmF2aWdhdGUocGFnZSlcbiAgICogICBhbHQgcGFnZSBpcyBub3QgbnVsbCBhbmQgZGlmZmVyZW50IGZyb20gY3VycmVudFxuICAgKiAgICAgUC0+PlA6IERldGVybWluZSBkaXJlY3Rpb24gKG5leHQvcHJldmlvdXMpXG4gICAqICAgICBQLT4+UDogaGFuZGxlQ2xpY2soZGlyZWN0aW9uLCBwYWdlKVxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAbWVtYmVyT2YgUGFnaW5hdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgbmF2aWdhdGUocGFnZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmKHBhZ2UgIT09IG51bGwgJiYgdGhpcy5jdXJyZW50ICE9PSBwYWdlIGFzIG51bWJlcilcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2socGFnZSA+IHRoaXMuY3VycmVudCA/ICduZXh0JyA6ICdwcmV2aW91cycsIHBhZ2UpO1xuICB9XG59XG4iLCIgPGRpdiBbaWRdPVwidWlkXCIgY2xhc3M9XCJkY2YtcGFnaW5hdG9yLWNvbnRhaW5lciBkY2YtZmxleCBkY2YtZmxleC1jZW50ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC0xLTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGNmLXBhZ2luYXRpb24tcmVzdW1lXCIgW2lubmVySFRNTF09XCJsb2NhbGUgKyAnLnJlc3VtZScgfCB0cmFuc2xhdGU6IHt2YWx1ZTA6IGN1cnJlbnQsIHZhbHVlMTogbGFzdH1cIj48L2Rpdj5cbiAgICA8ZGl2ICNwYWdpbmF0aW9uQ29tcG9uZW50IGNsYXNzPVwiZGNmLXBhZ2luYXRpb24gZGNmLWZsZXgtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGFyaWEtbGFiZWw9XCJwcmV2aW91c1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChjbGljayk9XCJwcmV2aW91cygpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicHJldmlvdXMoKVwiIFtjbGFzcy5kY2YtZGlzYWJsZWRdPVwiY3VycmVudCA9PT0gMVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgQGZvcihwYWdlIG9mIHBhZ2VzOyB0cmFjayBwYWdlKSB7XG4gICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgW2NsYXNzXT1cInBhZ2VbJ2NsYXNzJ11cIiAoY2xpY2spPVwibmF2aWdhdGUocGFnZVsnaW5kZXgnXSlcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5hdmlnYXRlKHBhZ2VbJ2luZGV4J10pXCJcbiAgICAgICAgICBbY2xhc3MuZGNmLWFjdGl2ZV09XCJjdXJyZW50ID09PSBwYWdlWydpbmRleCddXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWl0ZW1cIj57eyBwYWdlWyd0ZXh0J10gfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGRpdlxuICAgICAgICB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwibmV4dCgpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwibmV4dCgpXCJcbiAgICAgICAgW2NsYXNzLmRjZi1kaXNhYmxlZF09XCJjdXJyZW50ID09PSBsYXN0XCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|