bit-ng-library 14.0.6 → 14.0.7
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/README.md +6 -0
- package/esm2020/lib/sharedlibrary/components/footer/bit-footer.component.mjs +45 -57
- package/fesm2015/bit-ng-library.mjs +47 -58
- package/fesm2015/bit-ng-library.mjs.map +1 -1
- package/fesm2020/bit-ng-library.mjs +44 -56
- package/fesm2020/bit-ng-library.mjs.map +1 -1
- package/lib/sharedlibrary/components/footer/bit-footer.component.d.ts +9 -13
- package/lib/sharedlibrary/components/footer/bit-footer.component.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,6 +26,12 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
|
|
|
26
26
|
|
|
27
27
|
## changelog
|
|
28
28
|
|
|
29
|
+
## [14.0.7] - 2022-02-02
|
|
30
|
+
|
|
31
|
+
nueva versión del footer con dos parámetros nuevos:
|
|
32
|
+
visible: que por defecto será true y en el caso de indicar false hará que el footer no se muestre
|
|
33
|
+
forcePageLinkSize: permite forzar a que solo se muestre un número máximo de links de páginas en el paginador. En el caso de que no se especifique el valor será 1
|
|
34
|
+
|
|
29
35
|
## [14.0.6] - 2022-01-25
|
|
30
36
|
|
|
31
37
|
se formatean los campos bit-date y bit-datetime cuando está en modo readonly a formato humano en vez de ISO
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from "@angular/core";
|
|
2
2
|
import { BaseFilter, BASE_RESULTADOS_PAGE } from "../../../base/shared/base.filter";
|
|
3
3
|
import { PageStatus } from "../../global.constants";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -11,14 +11,15 @@ import * as i5 from "@ngneat/transloco";
|
|
|
11
11
|
* Componente que muestra un paginador en la sección footer.
|
|
12
12
|
**/
|
|
13
13
|
export class BitFooterComponent {
|
|
14
|
-
constructor(translateService
|
|
14
|
+
constructor(translateService) {
|
|
15
15
|
this.translateService = translateService;
|
|
16
|
-
this.changeRef = changeRef;
|
|
17
16
|
this.mostrarAvisos = true;
|
|
18
17
|
this.fixed = true; // Indicará si lo queremos fijo abajo en la página. Por defecto sí.
|
|
19
18
|
this.status = PageStatus.Init; // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH
|
|
20
19
|
this.mostrarEnlacesPaginas = true;
|
|
21
20
|
this.mostrarPrimeraUltimaPagina = true;
|
|
21
|
+
this.visible = true;
|
|
22
|
+
this.forcePageLinkSize = 1; // número de enlaces en el paginador para poder navegar hacia delante o detrás que forzamos a que haya
|
|
22
23
|
this.onPageChange = new EventEmitter(); //para notificar cambios en la página a mostrar
|
|
23
24
|
this.onNewPageSize = new EventEmitter(); //para notificar cambios en los elementos a mostrar por página
|
|
24
25
|
this.baseItemsPerPage = BaseFilter.RESULTADOS_PAGE; // guardamos el número de resultados pre-configurados por página para mostrar la lista de x, x+10 y x+20
|
|
@@ -58,20 +59,6 @@ export class BitFooterComponent {
|
|
|
58
59
|
console.log("the footer is BLANK!");
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Cuando tengamos la referencia al componente paginator actualizamos internamente el número de página y el número de páginas
|
|
63
|
-
* del desplegable con la información del filtro proporcionado
|
|
64
|
-
*/
|
|
65
|
-
ngAfterViewInit() {
|
|
66
|
-
if (this.pc) {
|
|
67
|
-
this.itemsPerPage = this.filter.resultados;
|
|
68
|
-
console.log(`this.filter.resultados ${this.filter.resultados}`);
|
|
69
|
-
console.log(`this.filter.pagina ${this.filter.pagina}`);
|
|
70
|
-
this.pc.rows = this.filter.resultados;
|
|
71
|
-
this.pc._first = (this.filter.pagina - 1) * this.pc.rows;
|
|
72
|
-
this.pc.updatePageLinks();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
62
|
/**
|
|
76
63
|
* Escucharemos a cambios en las propiedades totalItems para actualizar el paginador con respecto a las páginas que mostramos
|
|
77
64
|
*/
|
|
@@ -80,56 +67,65 @@ export class BitFooterComponent {
|
|
|
80
67
|
let changedProp = changes[propName];
|
|
81
68
|
if (propName === "status") {
|
|
82
69
|
this.status = changedProp.currentValue;
|
|
83
|
-
console.log(
|
|
70
|
+
console.log("status:" + this.status);
|
|
84
71
|
}
|
|
85
72
|
else if (propName === "totalItems") {
|
|
86
73
|
this.totalItems = changedProp.currentValue;
|
|
87
|
-
console.log(
|
|
74
|
+
console.log("totalItems:" + this.totalItems);
|
|
88
75
|
if (changedProp.previousValue !== changedProp.currentValue) {
|
|
89
76
|
this.calculatePageLinkSize(); //recalculamos
|
|
90
77
|
}
|
|
91
|
-
this.
|
|
78
|
+
this.calculateMaxCurrentItems();
|
|
92
79
|
}
|
|
93
80
|
else if (propName === "filter") {
|
|
94
81
|
this.filter = changedProp.currentValue;
|
|
95
|
-
|
|
96
|
-
this.maxCurrentItems = this.filter?.pagina * this.filter?.resultados;
|
|
97
|
-
}
|
|
98
|
-
console.log(`new filter ${this.filter?.pagina} - ${this.maxCurrentItems}`);
|
|
82
|
+
this.calculateMaxCurrentItems();
|
|
99
83
|
if (changedProp.previousValue !== changedProp.currentValue) {
|
|
100
84
|
this.calculatePageLinkSize(); //recalculamos
|
|
101
85
|
if (!this.filter?.pagina || this.filter.pagina <= 1) {
|
|
102
86
|
this.goToFirstPage();
|
|
87
|
+
console.log("goToFirstPage");
|
|
103
88
|
}
|
|
104
89
|
}
|
|
90
|
+
this.first = (this.filter.pagina - 1) * this.filter.resultados;
|
|
91
|
+
console.log("first:" + this.first);
|
|
105
92
|
}
|
|
106
93
|
}
|
|
107
|
-
if (this.pc && this.changeRef) {
|
|
108
|
-
console.log('updatePageLinks');
|
|
109
|
-
this.pc.updatePageLinks();
|
|
110
|
-
this.changeRef.detectChanges();
|
|
111
|
-
}
|
|
112
94
|
}
|
|
113
95
|
showFooter() {
|
|
114
|
-
|
|
96
|
+
// Problema. Estamos obteniendo un status a null cuando regresamos de una ficha
|
|
97
|
+
// status es null porque realmente no se está lanzando ninguna búsqueda por lo que el método updatePageStatus retorna null
|
|
98
|
+
return this.typeFooter === 'list' && this.visible;
|
|
115
99
|
}
|
|
116
100
|
showScroll() {
|
|
117
|
-
return this.typeFooter === 'scroll' && this.
|
|
101
|
+
return this.typeFooter === 'scroll' && this.visible;
|
|
118
102
|
}
|
|
119
103
|
/** Calcula el número de enlaces visibles en el paginador (en el rango entre 1 y BASE_RESULTADOS_PAGE). */
|
|
120
104
|
calculatePageLinkSize() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.pageLinkSize
|
|
105
|
+
if (this.forcePageLinkSize == 0) {
|
|
106
|
+
console.log(`calculatePageLinkSize totalItems: ${this.totalItems} itemsPerPage:${this.itemsPerPage}`);
|
|
107
|
+
this.pageLinkSize = Math.ceil(this.totalItems / this.itemsPerPage);
|
|
108
|
+
if (this.pageLinkSize < 1) {
|
|
109
|
+
this.pageLinkSize = 1;
|
|
110
|
+
}
|
|
111
|
+
if (this.pageLinkSize > BASE_RESULTADOS_PAGE) {
|
|
112
|
+
this.pageLinkSize = BASE_RESULTADOS_PAGE;
|
|
113
|
+
}
|
|
125
114
|
}
|
|
126
|
-
|
|
127
|
-
this.pageLinkSize =
|
|
115
|
+
else {
|
|
116
|
+
this.pageLinkSize = this.forcePageLinkSize;
|
|
117
|
+
}
|
|
118
|
+
console.log("pageLinkSize", this.pageLinkSize);
|
|
119
|
+
}
|
|
120
|
+
calculateMaxCurrentItems() {
|
|
121
|
+
this.maxCurrentItems = this.filter?.pagina * this.filter?.resultados;
|
|
122
|
+
if (this.maxCurrentItems > this.totalItems) {
|
|
123
|
+
this.maxCurrentItems = this.totalItems;
|
|
128
124
|
}
|
|
129
125
|
}
|
|
130
126
|
/** Establece el número de página en la visualización de resultados. Se invoca cuando el usuario cambia el número de resultados a mostrar o cambia de página */
|
|
131
127
|
paginate(event) {
|
|
132
|
-
console.log("Page changed to"
|
|
128
|
+
console.log("Page changed to:" + event.page + " maxCurrentItems:" + this.maxCurrentItems + " firstElement:" + this.first);
|
|
133
129
|
if (event.rows !== this.itemsPerPage) {
|
|
134
130
|
// han cambiado el número de elementos por página
|
|
135
131
|
//notificamos que los elementos por página han cambiado
|
|
@@ -144,20 +140,11 @@ export class BitFooterComponent {
|
|
|
144
140
|
}
|
|
145
141
|
}
|
|
146
142
|
goToFirstPage() {
|
|
147
|
-
|
|
148
|
-
//volvemos a la primera página
|
|
149
|
-
this.pc._first = 1;
|
|
150
|
-
this.pc.updatePageLinks();
|
|
151
|
-
}
|
|
143
|
+
this.first = 1;
|
|
152
144
|
}
|
|
153
145
|
getStyle() {
|
|
154
146
|
if (this.fixed && this.typeFooter === BitFooterComponent.TYPE_LIST || this.typeFooter === BitFooterComponent.TYPE_SCROLL) {
|
|
155
|
-
|
|
156
|
-
return "footer navbar-fixed-bottom";
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
return "footer navbar-fixed-bottom-60";
|
|
160
|
-
}
|
|
147
|
+
return "footer navbar-fixed-bottom";
|
|
161
148
|
}
|
|
162
149
|
else if (this.fixed && this.typeFooter === BitFooterComponent.TYPE_FORM) {
|
|
163
150
|
return "footer navbar-fixed-bottom-form";
|
|
@@ -238,15 +225,12 @@ BitFooterComponent.TYPE_SCROLL = "scroll";
|
|
|
238
225
|
BitFooterComponent.TYPE_FORM = "form";
|
|
239
226
|
BitFooterComponent.TYPE_BLANK = "blank";
|
|
240
227
|
BitFooterComponent.MORE_RESULTS = -1;
|
|
241
|
-
BitFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BitFooterComponent, deps: [{ token: i1.TranslateService }
|
|
242
|
-
BitFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina"
|
|
228
|
+
BitFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BitFooterComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
229
|
+
BitFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BitFooterComponent, selector: "bit-footer", inputs: { totalItems: "totalItems", filter: "filter", paginator: "paginator", mostrarAvisos: "mostrarAvisos", fixed: "fixed", messages: "messages", status: "status", typeFooter: ["type", "typeFooter"], mostrarEnlacesPaginas: "mostrarEnlacesPaginas", mostrarPrimeraUltimaPagina: "mostrarPrimeraUltimaPagina", visible: "visible", forcePageLinkSize: "forcePageLinkSize" }, outputs: { onPageChange: "onPageChange", onNewPageSize: "onNewPageSize" }, usesOnChanges: true, ngImport: i0, template: "<footer [class]=\"getStyle()\">\n <div class=\"grid\">\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showFooter()\">\n <div class=\"numero-resultados\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\n </div>\n </div>\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showScroll()\">\n <div class=\"numero-resultados-scroll\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span *ngIf=\"maxCurrentItems >= totalItems\">{{totalItems}}</span>\n <span *ngIf=\"maxCurrentItems < totalItems\">{{maxCurrentItems}} / {{totalItems}}</span>\n </div>\n </div>\n\n <div class=\"col-12 md:col-7 lg:col-7 p-text-center\" *ngIf=\"showFooter()\">\n <p-paginator *ngIf=\"paginator\"\n [first]=\"first\"\n [rows]=\"itemsPerPage\"\n [totalRecords]=\"totalItems\"\n [pageLinkSize]=\"mostrarEnlacesPaginas ? pageLinkSize : 1\"\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\n [showPageLinks]=\"mostrarEnlacesPaginas\"\n [showJumpToPageDropdown]=\"false\"\n [showFirstLastIcon]=\"mostrarPrimeraUltimaPagina ? true : maxCurrentItems >= totalItems\"\n (onPageChange)=\"paginate($event)\"></p-paginator>\n </div>\n <div class=\"col-12 md:col-3 lg:col-3\">\n <div *ngIf=\"searchInitiated\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{initMessage | async}}</span>\n </div>\n\n <div *ngIf=\"searching\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{searchingMessage | async}}</span>\n </div>\n\n <div *ngIf=\"readOnly\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{readOnlyMessage | async}}</span>\n </div>\n\n <div *ngIf=\"foundResult\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{finishMessage | async}}</span>\n </div>\n\n <div *ngIf=\"moreResults\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{moreResultsMessage | async}}</span>\n </div>\n\n <div *ngIf=\"emptyResult\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-exclamation\"></i>\n <span>{{emptyMessage | async}}</span>\n </div>\n\n <div *ngIf=\"error\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n <span>{{errorMessage | async}}</span>\n </div>\n\n <bit-help></bit-help>\n </div>\n </div>\n</footer>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "component", type: i4.BitHelpComponent, selector: "bit-help" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
243
230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BitFooterComponent, decorators: [{
|
|
244
231
|
type: Component,
|
|
245
|
-
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\n <div class=\"grid\">\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showFooter()\">\n <div class=\"numero-resultados\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span>{{totalItems}}</span>\n </div>\n </div>\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showScroll()\">\n <div class=\"numero-resultados-scroll\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span *ngIf=\"maxCurrentItems >= totalItems\">{{totalItems}}</span>\n <span *ngIf=\"maxCurrentItems < totalItems\">{{maxCurrentItems}} / {{totalItems}}</span>\n </div>\n </div>\n\n <div class=\"col-12 md:col-7 lg:col-7 p-text-center\" *ngIf=\"
|
|
246
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }
|
|
247
|
-
type: ViewChild,
|
|
248
|
-
args: ["pc"]
|
|
249
|
-
}], totalItems: [{
|
|
232
|
+
args: [{ selector: "bit-footer", changeDetection: ChangeDetectionStrategy.OnPush, template: "<footer [class]=\"getStyle()\">\n <div class=\"grid\">\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showFooter()\">\n <div class=\"numero-resultados\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\n </div>\n </div>\n <div class=\"col-12 md:col-2 lg:col-2\" *ngIf=\"showScroll()\">\n <div class=\"numero-resultados-scroll\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n <span *ngIf=\"maxCurrentItems >= totalItems\">{{totalItems}}</span>\n <span *ngIf=\"maxCurrentItems < totalItems\">{{maxCurrentItems}} / {{totalItems}}</span>\n </div>\n </div>\n\n <div class=\"col-12 md:col-7 lg:col-7 p-text-center\" *ngIf=\"showFooter()\">\n <p-paginator *ngIf=\"paginator\"\n [first]=\"first\"\n [rows]=\"itemsPerPage\"\n [totalRecords]=\"totalItems\"\n [pageLinkSize]=\"mostrarEnlacesPaginas ? pageLinkSize : 1\"\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*5,baseItemsPerPage*25,baseItemsPerPage*50]\"\n [showPageLinks]=\"mostrarEnlacesPaginas\"\n [showJumpToPageDropdown]=\"false\"\n [showFirstLastIcon]=\"mostrarPrimeraUltimaPagina ? true : maxCurrentItems >= totalItems\"\n (onPageChange)=\"paginate($event)\"></p-paginator>\n </div>\n <div class=\"col-12 md:col-3 lg:col-3\">\n <div *ngIf=\"searchInitiated\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{initMessage | async}}</span>\n </div>\n\n <div *ngIf=\"searching\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{searchingMessage | async}}</span>\n </div>\n\n <div *ngIf=\"readOnly\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{readOnlyMessage | async}}</span>\n </div>\n\n <div *ngIf=\"foundResult\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{finishMessage | async}}</span>\n </div>\n\n <div *ngIf=\"moreResults\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-info\"></i>\n <span>{{moreResultsMessage | async}}</span>\n </div>\n\n <div *ngIf=\"emptyResult\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-exclamation\"></i>\n <span>{{emptyMessage | async}}</span>\n </div>\n\n <div *ngIf=\"error\"\n [className]=\"typeFooter === 'scroll' ? 'mensaje-scroll mensaje-info' : 'mensaje mensaje-info'\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n <span>{{errorMessage | async}}</span>\n </div>\n\n <bit-help></bit-help>\n </div>\n </div>\n</footer>\n" }]
|
|
233
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { totalItems: [{
|
|
250
234
|
type: Input
|
|
251
235
|
}], filter: [{
|
|
252
236
|
type: Input
|
|
@@ -267,9 +251,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
267
251
|
type: Input
|
|
268
252
|
}], mostrarPrimeraUltimaPagina: [{
|
|
269
253
|
type: Input
|
|
254
|
+
}], visible: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], forcePageLinkSize: [{
|
|
257
|
+
type: Input
|
|
270
258
|
}], onPageChange: [{
|
|
271
259
|
type: Output
|
|
272
260
|
}], onNewPageSize: [{
|
|
273
261
|
type: Output
|
|
274
262
|
}] } });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUdwRDs7SUFFSTtBQU1KLE1BQU0sT0FBTyxrQkFBa0I7SUF5QzdCLFlBQW9CLGdCQUFrQyxFQUNsQyxTQUE0QjtRQUQ1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBekJoRCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUU5QixVQUFLLEdBQVksSUFBSSxDQUFDLENBQUMsbUVBQW1FO1FBSTFGLFdBQU0sR0FBZSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsMEdBQTBHO1FBSWhKLDBCQUFxQixHQUFZLElBQUksQ0FBQztRQUV0QywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFFM0MsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDLENBQUMsK0NBQStDO1FBRTFGLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQyxD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QUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7O0FBalJhLDRCQUFTLEdBQVcsTUFBTSxDQUFDO0FBQzNCLDhCQUFXLEdBQVcsUUFBUSxDQUFDO0FBQy9CLDRCQUFTLEdBQVcsTUFBTSxDQUFDO0FBQzNCLDZCQUFVLEdBQVcsT0FBTyxDQUFDO0FBRTdCLCtCQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7K0dBTnJCLGtCQUFrQjttR0FBbEIsa0JBQWtCLGtpQkMxQi9CLGlzR0EwRUE7MkZEaERhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxZQUFZLG1CQUNMLHVCQUF1QixDQUFDLE1BQU07dUlBWS9DLEVBQUU7c0JBREQsU0FBUzt1QkFBQyxJQUFJO2dCQUdmLFVBQVU7c0JBRFQsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLE1BQU07c0JBREwsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7dUJBQUMsTUFBTTtnQkFHYixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsTUFBTTtnQkFHUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7UGFnaW5hdG9yfSBmcm9tIFwicHJpbWVuZy9wYWdpbmF0b3JcIjtcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEJhc2VGaWx0ZXIsIEJBU0VfUkVTVUxUQURPU19QQUdFIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2Uvc2hhcmVkL2Jhc2UuZmlsdGVyXCI7XG5pbXBvcnQgeyBQYWdlU3RhdHVzIH0gZnJvbSBcIi4uLy4uL2dsb2JhbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcblxuLyoqXG4gKiBDb21wb25lbnRlIHF1ZSBtdWVzdHJhIHVuIHBhZ2luYWRvciBlbiBsYSBzZWNjacOzbiBmb290ZXIuXG4gKiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYml0LWZvb3RlclwiLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6IFwiYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIEJpdEZvb3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBUWVBFX0xJU1Q6IHN0cmluZyA9IFwibGlzdFwiO1xuICBwdWJsaWMgc3RhdGljIFRZUEVfU0NST0xMOiBzdHJpbmcgPSBcInNjcm9sbFwiO1xuICBwdWJsaWMgc3RhdGljIFRZUEVfRk9STTogc3RyaW5nID0gXCJmb3JtXCI7XG4gIHB1YmxpYyBzdGF0aWMgVFlQRV9CTEFOSzogc3RyaW5nID0gXCJibGFua1wiO1xuXG4gIHB1YmxpYyBzdGF0aWMgTU9SRV9SRVNVTFRTID0gLTE7XG5cbiAgQFZpZXdDaGlsZChcInBjXCIpXG4gIHBjOiBQYWdpbmF0b3I7XG4gIEBJbnB1dCgpXG4gIHRvdGFsSXRlbXM6IG51bWJlcjsgICAgIC8vIE7Dum1lcm8gdG90YWwgZGUgZWxlbWVudG9zIHJlY3VwZXJhZG9zIGRlIGxhIGNvbnN1bHRhXG4gIEBJbnB1dCgpXG4gIGZpbHRlcjogQmFzZUZpbHRlcjtcbiAgQElucHV0KClcbiAgcGFnaW5hdG9yOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBtb3N0cmFyQXZpc29zOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgZml4ZWQ6IGJvb2xlYW4gPSB0cnVlOyAvLyBJbmRpY2Fyw6Egc2kgbG8gcXVlcmVtb3MgZmlqbyBhYmFqbyBlbiBsYSBww6FnaW5hLiBQb3IgZGVmZWN0byBzw60uXG4gIEBJbnB1dCgpXG4gIG1lc3NhZ2VzOiBNYXA8UGFnZVN0YXR1cywgc3RyaW5nPjtcbiAgQElucHV0KClcbiAgc3RhdHVzOiBQYWdlU3RhdHVzID0gUGFnZVN0YXR1cy5Jbml0OyAvLyBEZXRlcm1pbmEgZW4gcXXDqSBlc3RhZG8gZXN0w6EgbGEgcMOhZ2luYTogUGFnZVN0YXR1cy5Jbml0LCBQYWdlU3RhdHVzLlNFQVJDSElORywgUGFnZVN0YXR1cy5GSU5JU0hfU0VBUkNIXG4gIEBJbnB1dChcInR5cGVcIilcbiAgdHlwZUZvb3Rlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtb3N0cmFyRW5sYWNlc1BhZ2luYXM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYTogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKVxuICBvblBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy9wYXJhIG5vdGlmaWNhciBjYW1iaW9zIGVuIGxhIHDDoWdpbmEgYSBtb3N0cmFyXG4gIEBPdXRwdXQoKVxuICBvbk5ld1BhZ2VTaXplID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7IC8vcGFyYSBub3RpZmljYXIgY2FtYmlvcyBlbiBsb3MgZWxlbWVudG9zIGEgbW9zdHJhciBwb3IgcMOhZ2luYVxuXG4gIGJhc2VJdGVtc1BlclBhZ2U6IG51bWJlciA9IEJhc2VGaWx0ZXIuUkVTVUxUQURPU19QQUdFOyAvLyBndWFyZGFtb3MgZWwgbsO6bWVybyBkZSByZXN1bHRhZG9zIHByZS1jb25maWd1cmFkb3MgcG9yIHDDoWdpbmEgcGFyYSBtb3N0cmFyIGxhIGxpc3RhIGRlIHgsIHgrMTAgeSB4KzIwXG4gIHBhZ2VMaW5rU2l6ZTogbnVtYmVyOyAvLyBuw7ptZXJvIGRlIGVubGFjZXMgZW4gZWwgcGFnaW5hZG9yIHBhcmEgcG9kZXIgbmF2ZWdhciBoYWNpYSBkZWxhbnRlIG8gZGV0csOhc1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IEJhc2VGaWx0ZXIuUkVTVUxUQURPU19QQUdFOyAvLyBuw7ptZXJvIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYSBxdWUgbW9zdHJhbW9zXG5cbiAgbWF4Q3VycmVudEl0ZW1zOiBudW1iZXIgPSAtMTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZUZvb3RlciA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHlwZUZvb3RlciA9IFwibGlzdFwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnBhZ2luYXRvciA9IGZhbHNlO1xuICAgIH1cbiAgICAvL21lbnNhamVzIHBvciBkZWZlY3RvIHNpIG5vIHZpZW5lbiBkZWZpbmlkb3NcbiAgICBpZiAodGhpcy5tZXNzYWdlcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnZXMoKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuRXJyb3IsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5lcnJvclwiKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VzKCkge1xuICAgIGNvbnNvbGUubG9nKFwiZGVmaW5pbW9zIGxvcyBtZW5zYWplcyBkZWwgZm9vdGVyIGRlIG1hbmVyYSBlc3TDoW5kYXJcIik7XG4gICAgdGhpcy5tZXNzYWdlcyA9IG5ldyBNYXA8UGFnZVN0YXR1cywgc3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmlzRm9vdGVyTGlzdCgpIHx8IHRoaXMuaXNGb290ZXJTY3JvbGwoKSkge1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5Jbml0LCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5pbml0XCIpO1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5TZWFyY2hpbmcsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5saXN0LnNlYXJjaGluZ1wiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuRW1wdHlSZXN1bHQsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5saXN0LmVtcHR5cmVzdWx0XCIpO1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5GaW5pc2hTZWFyY2gsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5saXN0LmZpbmlzaHNlYXJjaFwiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KEJpdEZvb3RlckNvbXBvbmVudC5NT1JFX1JFU1VMVFMsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5saXN0Lm1vcmVyZXN1bHRzXCIpXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRm9vdGVyRm9ybSgpKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChQYWdlU3RhdHVzLkluaXQsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5mb3JtLmluaXRcIik7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChQYWdlU3RhdHVzLlNlYXJjaGluZywgXCJiaXRuZ2xpYnJhcnkuZm9vdGVyLmZvcm0uc2VhcmNoaW5nXCIpO1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5GaW5pc2hTZWFyY2gsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5mb3JtLmZpbmlzaHNlYXJjaFwiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuUmVhZE9ubHksIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5saXN0LnJlYWRvbmx5XCIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9CTEFOSykge1xuICAgICAgY29uc29sZS5sb2coXCJ0aGUgZm9vdGVyIGlzIEJMQU5LIVwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3VhbmRvIHRlbmdhbW9zIGxhIHJlZmVyZW5jaWEgYWwgY29tcG9uZW50ZSBwYWdpbmF0b3IgYWN0dWFsaXphbW9zIGludGVybmFtZW50ZSBlbCBuw7ptZXJvIGRlIHDDoWdpbmEgeSBlbCBuw7ptZXJvIGRlIHDDoWdpbmFzXG4gICAqIGRlbCBkZXNwbGVnYWJsZSBjb24gbGEgaW5mb3JtYWNpw7NuIGRlbCBmaWx0cm8gcHJvcG9yY2lvbmFkb1xuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnBjKSB7XG4gICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHRoaXMuZmlsdGVyLnJlc3VsdGFkb3M7XG4gICAgICBjb25zb2xlLmxvZyhgdGhpcy5maWx0ZXIucmVzdWx0YWRvcyAke3RoaXMuZmlsdGVyLnJlc3VsdGFkb3N9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgdGhpcy5maWx0ZXIucGFnaW5hICR7dGhpcy5maWx0ZXIucGFnaW5hfWApO1xuICAgICAgdGhpcy5wYy5yb3dzID0gdGhpcy5maWx0ZXIucmVzdWx0YWRvcztcbiAgICAgIHRoaXMucGMuX2ZpcnN0ID0gKHRoaXMuZmlsdGVyLnBhZ2luYSAtIDEpICogdGhpcy5wYy5yb3dzO1xuICAgICAgdGhpcy5wYy51cGRhdGVQYWdlTGlua3MoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXNjdWNoYXJlbW9zIGEgY2FtYmlvcyBlbiBsYXMgcHJvcGllZGFkZXMgdG90YWxJdGVtcyBwYXJhIGFjdHVhbGl6YXIgZWwgcGFnaW5hZG9yIGNvbiByZXNwZWN0byBhIGxhcyBww6FnaW5hcyBxdWUgbW9zdHJhbW9zXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGZvciAobGV0IHByb3BOYW1lIGluIGNoYW5nZXMpIHtcbiAgICAgIGxldCBjaGFuZ2VkUHJvcCA9IGNoYW5nZXNbcHJvcE5hbWVdO1xuICAgICAgaWYgKHByb3BOYW1lID09PSBcInN0YXR1c1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zb2xlLmxvZyhgbmV3IHN0YXR1cyAke3RoaXMuc3RhdHVzfWApO1xuICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJ0b3RhbEl0ZW1zXCIpIHtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zb2xlLmxvZyhgbmV3IHRvdGFsSXRlbXMgJHt0aGlzLnRvdGFsSXRlbXN9YCk7XG4gICAgICAgIGlmIChjaGFuZ2VkUHJvcC5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VMaW5rU2l6ZSgpOyAgICAgLy9yZWNhbGN1bGFtb3NcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMuZmlsdGVyID8gdGhpcy5maWx0ZXIucGFnaW5hICogdGhpcy5maWx0ZXIucmVzdWx0YWRvcyA6IC0xO1xuICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJmaWx0ZXJcIikge1xuICAgICAgICB0aGlzLmZpbHRlciA9IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyPy5wYWdpbmEgKiB0aGlzLmZpbHRlcj8ucmVzdWx0YWRvcyA+IHRoaXMubWF4Q3VycmVudEl0ZW1zKSB7XG4gICAgICAgICAgdGhpcy5tYXhDdXJyZW50SXRlbXMgPSB0aGlzLmZpbHRlcj8ucGFnaW5hICogdGhpcy5maWx0ZXI/LnJlc3VsdGFkb3M7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYG5ldyBmaWx0ZXIgJHt0aGlzLmZpbHRlcj8ucGFnaW5hfSAtICR7dGhpcy5tYXhDdXJyZW50SXRlbXN9YCk7XG4gICAgICAgIGlmIChjaGFuZ2VkUHJvcC5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VMaW5rU2l6ZSgpOyAgICAgLy9yZWNhbGN1bGFtb3NcbiAgICAgICAgICBpZiAoIXRoaXMuZmlsdGVyPy5wYWdpbmEgfHwgdGhpcy5maWx0ZXIucGFnaW5hIDw9IDEpIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub0ZpcnN0UGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5wYyAmJiB0aGlzLmNoYW5nZVJlZikge1xuICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZVBhZ2VMaW5rcycpO1xuICAgICAgdGhpcy5wYy51cGRhdGVQYWdlTGlua3MoKTtcbiAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzaG93Rm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGVGb290ZXIgPT09ICdsaXN0JyAmJiB0aGlzLnN0YXR1cyA9PSBQYWdlU3RhdHVzLkZpbmlzaFNlYXJjaDtcbiAgfVxuXG4gIHNob3dTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgJiYgdGhpcy5zdGF0dXMgIT0gbnVsbDtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhIGVsIG7Dum1lcm8gZGUgZW5sYWNlcyB2aXNpYmxlcyBlbiBlbCBwYWdpbmFkb3IgKGVuIGVsIHJhbmdvIGVudHJlIDEgeSBCQVNFX1JFU1VMVEFET1NfUEFHRSkuICovXG4gIGNhbGN1bGF0ZVBhZ2VMaW5rU2l6ZSgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FsY3VsYXRlUGFnZUxpbmtTaXplIHRvdGFsSXRlbXM6ICR7dGhpcy50b3RhbEl0ZW1zfSBpdGVtc1BlclBhZ2U6JHt0aGlzLml0ZW1zUGVyUGFnZX1gKTtcbiAgICB0aGlzLnBhZ2VMaW5rU2l6ZSA9IE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMgLyB0aGlzLml0ZW1zUGVyUGFnZSk7XG4gICAgaWYgKHRoaXMucGFnZUxpbmtTaXplIDwgMSkge1xuICAgICAgdGhpcy5wYWdlTGlua1NpemUgPSAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYWdlTGlua1NpemUgPiBCQVNFX1JFU1VMVEFET1NfUEFHRSkge1xuICAgICAgdGhpcy5wYWdlTGlua1NpemUgPSBCQVNFX1JFU1VMVEFET1NfUEFHRTtcbiAgICB9XG4gIH1cblxuICAvKiogRXN0YWJsZWNlIGVsIG7Dum1lcm8gZGUgcMOhZ2luYSBlbiBsYSB2aXN1YWxpemFjacOzbiBkZSByZXN1bHRhZG9zLiBTZSBpbnZvY2EgY3VhbmRvIGVsIHVzdWFyaW8gY2FtYmlhIGVsIG7Dum1lcm8gZGUgcmVzdWx0YWRvcyBhIG1vc3RyYXIgbyBjYW1iaWEgZGUgcMOhZ2luYSAqL1xuICBwYWdpbmF0ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coXCJQYWdlIGNoYW5nZWQgdG9cIiwgZXZlbnQucGFnZSk7XG4gICAgaWYgKGV2ZW50LnJvd3MgIT09IHRoaXMuaXRlbXNQZXJQYWdlKSB7XG4gICAgICAvLyBoYW4gY2FtYmlhZG8gZWwgbsO6bWVybyBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmFcbiAgICAgIC8vbm90aWZpY2Ftb3MgcXVlIGxvcyBlbGVtZW50b3MgcG9yIHDDoWdpbmEgaGFuIGNhbWJpYWRvXG4gICAgICB0aGlzLm9uTmV3UGFnZVNpemUuZW1pdChldmVudC5yb3dzKTtcbiAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gZXZlbnQucm93cztcbiAgICAgIHRoaXMuZ29Ub0ZpcnN0UGFnZSgpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlTGlua1NpemUoKTsgLy8gcmVjYWxjdWxhbW9zIGVsIG7Dum1lcm8gZGUgZW5sYWNlcyBkZSBww6FnaW5hXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5vdGlmaWNhbW9zIGEgbnVlc3RybyBwYXDDoSBxdWUgbGEgcMOhZ2luYSBoYSBjYW1iaWFkb1xuICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudC5wYWdlICsgMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnb1RvRmlyc3RQYWdlKCkge1xuICAgIGlmICh0aGlzLnBjKSB7XG4gICAgICAvL3ZvbHZlbW9zIGEgbGEgcHJpbWVyYSBww6FnaW5hXG4gICAgICB0aGlzLnBjLl9maXJzdCA9IDE7XG4gICAgICB0aGlzLnBjLnVwZGF0ZVBhZ2VMaW5rcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0eWxlKCkge1xuICAgIGlmICh0aGlzLmZpeGVkICYmIHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfTElTVCB8fCB0aGlzLnR5cGVGb290ZXIgPT09IEJpdEZvb3RlckNvbXBvbmVudC5UWVBFX1NDUk9MTCkge1xuICAgICAgaWYgKHRoaXMudG90YWxJdGVtcyA+IDApIHtcbiAgICAgICAgcmV0dXJuIFwiZm9vdGVyIG5hdmJhci1maXhlZC1ib3R0b21cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcImZvb3RlciBuYXZiYXItZml4ZWQtYm90dG9tLTYwXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpeGVkICYmIHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfRk9STSkge1xuICAgICAgcmV0dXJuIFwiZm9vdGVyIG5hdmJhci1maXhlZC1ib3R0b20tZm9ybVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJmb290ZXJcIjtcbiAgICB9XG4gIH1cblxuICBpc0Zvb3Rlckxpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfTElTVDtcbiAgfVxuXG4gIGlzRm9vdGVyU2Nyb2xsKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGVGb290ZXIgPT09IEJpdEZvb3RlckNvbXBvbmVudC5UWVBFX1NDUk9MTDtcbiAgfVxuXG4gIGlzRm9vdGVyRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9GT1JNO1xuICB9XG5cbiAgLyoqIEZsYWc6IGxhIHDDoWdpbmEgZXN0w6EgcmVhbGl6YW5kbyBsYSBiw7pzcXVlZGEuICovXG4gIGdldCBzZWFyY2hJbml0aWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBQYWdlU3RhdHVzLkluaXQgfHwgdGhpcy5zdGF0dXMgPT0gUGFnZVN0YXR1cy5SZXNldCB8fCAhdGhpcy5zdGF0dXM7XG4gIH1cblxuICAvKiogRmxhZzogbGEgcMOhZ2luYSBlc3TDoSByZWFsaXphbmRvIGxhIGLDunNxdWVkYS4gKi9cbiAgZ2V0IHNlYXJjaGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFBhZ2VTdGF0dXMuU2VhcmNoaW5nO1xuICB9XG5cbiAgLyoqIEZsYWc6IGxhIHDDoWdpbmEgaGEgZmluYWxpemFkbyBsYSDDumx0aW1hIGLDunNxdWVkYS4gKi9cbiAgZ2V0IHNlYXJjaEZpbmlzaGVkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gUGFnZVN0YXR1cy5GaW5pc2hTZWFyY2g7XG4gIH1cblxuICAvKiogRmxhZzogbGEgcMOhZ2luYSBlc3TDoSBlbiBtb2RvIHNvbG8gbGVjdHVyYSAqL1xuICBnZXQgcmVhZE9ubHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09IFBhZ2VTdGF0dXMuUmVhZE9ubHk7XG4gIH1cblxuICAvKiogRmxhZzogbGEgcMOhZ2luYSBoYSBmaW5hbGl6YWRvIGNvbiBlcnJvciAqL1xuICBnZXQgZXJyb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09IFBhZ2VTdGF0dXMuRXJyb3I7XG4gIH1cblxuICAvKiogRmxhZzogZW5jb250cmFkbyByZXN1bHRhZG8uICovXG4gIGdldCBmb3VuZFJlc3VsdCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zdGF0dXMgPT09IFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoICYmXG4gICAgICAoKHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfTElTVCAmJiB0aGlzLnRvdGFsSXRlbXMgPiAwKVxuICAgICAgICB8fCB0aGlzLnR5cGVGb290ZXIgPT09IEJpdEZvb3RlckNvbXBvbmVudC5UWVBFX0ZPUk1cbiAgICAgICAgfHwgKHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfU0NST0xMICYmIHRoaXMudG90YWxJdGVtcyA8PSB0aGlzLm1heEN1cnJlbnRJdGVtcykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBGbGFnOiBoYXkgbcOhcyByZXN1bHRhZG9zIChzY3JvbGwpLiAqL1xuICBnZXQgbW9yZVJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc3RhdHVzID09PSBQYWdlU3RhdHVzLkZpbmlzaFNlYXJjaCAmJlxuICAgICAgKHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfU0NST0xMICYmIHRoaXMudG90YWxJdGVtcyA+IHRoaXMubWF4Q3VycmVudEl0ZW1zKVxuICAgICk7XG4gIH1cblxuICAvKiogRmxhZzogbm8gaGF5IHJlc3VsdGFkb3MuICovXG4gIGdldCBlbXB0eVJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoICYmIHRoaXMudG90YWxJdGVtcyA9PT0gMDtcbiAgfVxuXG4gIGdldCBpbml0TWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KFBhZ2VTdGF0dXMuSW5pdCkpO1xuICB9XG5cbiAgZ2V0IHNlYXJjaGluZ01lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNlbGVjdFRyYW5zbGF0ZSh0aGlzLm1lc3NhZ2VzLmdldChQYWdlU3RhdHVzLlNlYXJjaGluZykpO1xuICB9XG5cbiAgZ2V0IGZpbmlzaE1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNlbGVjdFRyYW5zbGF0ZSh0aGlzLm1lc3NhZ2VzLmdldChQYWdlU3RhdHVzLkZpbmlzaFNlYXJjaCkpO1xuICB9XG5cbiAgZ2V0IG1vcmVSZXN1bHRzTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KEJpdEZvb3RlckNvbXBvbmVudC5NT1JFX1JFU1VMVFMpKTtcbiAgfVxuXG4gIGdldCBlbXB0eU1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNlbGVjdFRyYW5zbGF0ZSh0aGlzLm1lc3NhZ2VzLmdldChQYWdlU3RhdHVzLkVtcHR5UmVzdWx0KSk7XG4gIH1cblxuICBnZXQgcmVhZE9ubHlNZXNzYWdlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZWxlY3RUcmFuc2xhdGUodGhpcy5tZXNzYWdlcy5nZXQoUGFnZVN0YXR1cy5SZWFkT25seSkpO1xuICB9XG5cbiAgZ2V0IGVycm9yTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KFBhZ2VTdGF0dXMuRXJyb3IpKTtcbiAgfVxufVxuIiwiPGZvb3RlciBbY2xhc3NdPVwiZ2V0U3R5bGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTIgbGc6Y29sLTJcIiAqbmdJZj1cInNob3dGb290ZXIoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm51bWVyby1yZXN1bHRhZG9zXCI+XG4gICAgICAgIDxsYWJlbD57e1wiYml0bmdsaWJyYXJ5LmZvb3Rlci5yZXN1bHRzXCIgfCB0cmFuc2xvY299fTwvbGFiZWw+XG4gICAgICAgIDxzcGFuPnt7dG90YWxJdGVtc319PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMiBsZzpjb2wtMlwiICpuZ0lmPVwic2hvd1Njcm9sbCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibnVtZXJvLXJlc3VsdGFkb3Mtc2Nyb2xsXCI+XG4gICAgICAgIDxsYWJlbD57e1wiYml0bmdsaWJyYXJ5LmZvb3Rlci5yZXN1bHRzXCIgfCB0cmFuc2xvY299fTwvbGFiZWw+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibWF4Q3VycmVudEl0ZW1zID49IHRvdGFsSXRlbXNcIj57e3RvdGFsSXRlbXN9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtYXhDdXJyZW50SXRlbXMgPCB0b3RhbEl0ZW1zXCI+e3ttYXhDdXJyZW50SXRlbXN9fSAvIHt7dG90YWxJdGVtc319PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC03IGxnOmNvbC03IHAtdGV4dC1jZW50ZXJcIiAqbmdJZj1cInNob3dTY3JvbGwoKVwiPlxuICAgICAgPHAtcGFnaW5hdG9yICpuZ0lmPVwicGFnaW5hdG9yXCIgI3BjXG4gICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiaXRlbXNQZXJQYWdlXCJcbiAgICAgICAgICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgIFtwYWdlTGlua1NpemVdPVwibW9zdHJhckVubGFjZXNQYWdpbmFzID8gcGFnZUxpbmtTaXplIDogMVwiXG4gICAgICAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbYmFzZUl0ZW1zUGVyUGFnZSxiYXNlSXRlbXNQZXJQYWdlKjUsYmFzZUl0ZW1zUGVyUGFnZSoyNSxiYXNlSXRlbXNQZXJQYWdlKjUwXVwiXG4gICAgICAgICAgICAgICAgICAgW3Nob3dQYWdlTGlua3NdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYSA/IHRydWUgOiBtYXhDdXJyZW50SXRlbXMgPj0gdG90YWxJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgKG9uUGFnZUNoYW5nZSk9XCJwYWdpbmF0ZSgkZXZlbnQpXCI+PC9wLXBhZ2luYXRvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoSW5pdGlhdGVkXCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWluZm9cIj48L2k+XG4gICAgICAgIDxzcGFuPnt7aW5pdE1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hpbmdcIlxuICAgICAgICAgICBbY2xhc3NOYW1lXT1cInR5cGVGb290ZXIgPT09ICdzY3JvbGwnID8gJ21lbnNhamUtc2Nyb2xsIG1lbnNhamUtaW5mbycgOiAnbWVuc2FqZSBtZW5zYWplLWluZm8nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mb1wiPjwvaT5cbiAgICAgICAgPHNwYW4+e3tzZWFyY2hpbmdNZXNzYWdlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVhZE9ubHlcIlxuICAgICAgICAgICBbY2xhc3NOYW1lXT1cInR5cGVGb290ZXIgPT09ICdzY3JvbGwnID8gJ21lbnNhamUtc2Nyb2xsIG1lbnNhamUtaW5mbycgOiAnbWVuc2FqZSBtZW5zYWplLWluZm8nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mb1wiPjwvaT5cbiAgICAgICAgPHNwYW4+e3tyZWFkT25seU1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3VuZFJlc3VsdFwiXG4gICAgICAgICAgIFtjbGFzc05hbWVdPVwidHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgPyAnbWVuc2FqZS1zY3JvbGwgbWVuc2FqZS1pbmZvJyA6ICdtZW5zYWplIG1lbnNhamUtaW5mbydcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1pbmZvXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2ZpbmlzaE1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJtb3JlUmVzdWx0c1wiXG4gICAgICAgICAgIFtjbGFzc05hbWVdPVwidHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgPyAnbWVuc2FqZS1zY3JvbGwgbWVuc2FqZS1pbmZvJyA6ICdtZW5zYWplIG1lbnNhamUtaW5mbydcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1pbmZvXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e21vcmVSZXN1bHRzTWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImVtcHR5UmVzdWx0XCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2VtcHR5TWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2Vycm9yTWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJpdC1oZWxwPjwvYml0LWhlbHA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb290ZXI+XG4iXX0=
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb290ZXIvYml0LWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBR3BEOztJQUVJO0FBTUosTUFBTSxPQUFPLGtCQUFrQjtJQTJDN0IsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE1QnRELGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlCLFVBQUssR0FBWSxJQUFJLENBQUMsQ0FBQyxtRUFBbUU7UUFJMUYsV0FBTSxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQywwR0FBMEc7UUFJaEosMEJBQXFCLEdBQVksSUFBSSxDQUFDO1FBRXRDLCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUUzQyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLHNCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDLHNHQUFzRztRQUVySSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUMsQ0FBQywrQ0FBK0M7UUFFMUYsa0JBQWEsR0FBRyxJQUFJ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QkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04saUJBQWlCO3NCQURoQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsTUFBTTtnQkFHUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBCYXNlRmlsdGVyLCBCQVNFX1JFU1VMVEFET1NfUEFHRSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlL3NoYXJlZC9iYXNlLmZpbHRlclwiO1xuaW1wb3J0IHsgUGFnZVN0YXR1cyB9IGZyb20gXCIuLi8uLi9nbG9iYWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBxdWUgbXVlc3RyYSB1biBwYWdpbmFkb3IgZW4gbGEgc2VjY2nDs24gZm9vdGVyLlxuICoqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImJpdC1mb290ZXJcIixcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiBcImJpdC1mb290ZXIuY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBCaXRGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgVFlQRV9MSVNUOiBzdHJpbmcgPSBcImxpc3RcIjtcbiAgcHVibGljIHN0YXRpYyBUWVBFX1NDUk9MTDogc3RyaW5nID0gXCJzY3JvbGxcIjtcbiAgcHVibGljIHN0YXRpYyBUWVBFX0ZPUk06IHN0cmluZyA9IFwiZm9ybVwiO1xuICBwdWJsaWMgc3RhdGljIFRZUEVfQkxBTks6IHN0cmluZyA9IFwiYmxhbmtcIjtcblxuICBwdWJsaWMgc3RhdGljIE1PUkVfUkVTVUxUUyA9IC0xO1xuXG4gIEBJbnB1dCgpXG4gIHRvdGFsSXRlbXM6IG51bWJlcjsgICAgIC8vIE7Dum1lcm8gdG90YWwgZGUgZWxlbWVudG9zIHJlY3VwZXJhZG9zIGRlIGxhIGNvbnN1bHRhXG4gIEBJbnB1dCgpXG4gIGZpbHRlcjogQmFzZUZpbHRlcjtcbiAgQElucHV0KClcbiAgcGFnaW5hdG9yOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBtb3N0cmFyQXZpc29zOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgZml4ZWQ6IGJvb2xlYW4gPSB0cnVlOyAvLyBJbmRpY2Fyw6Egc2kgbG8gcXVlcmVtb3MgZmlqbyBhYmFqbyBlbiBsYSBww6FnaW5hLiBQb3IgZGVmZWN0byBzw60uXG4gIEBJbnB1dCgpXG4gIG1lc3NhZ2VzOiBNYXA8UGFnZVN0YXR1cywgc3RyaW5nPjtcbiAgQElucHV0KClcbiAgc3RhdHVzOiBQYWdlU3RhdHVzID0gUGFnZVN0YXR1cy5Jbml0OyAvLyBEZXRlcm1pbmEgZW4gcXXDqSBlc3RhZG8gZXN0w6EgbGEgcMOhZ2luYTogUGFnZVN0YXR1cy5Jbml0LCBQYWdlU3RhdHVzLlNFQVJDSElORywgUGFnZVN0YXR1cy5GSU5JU0hfU0VBUkNIXG4gIEBJbnB1dChcInR5cGVcIilcbiAgdHlwZUZvb3Rlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtb3N0cmFyRW5sYWNlc1BhZ2luYXM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBmb3JjZVBhZ2VMaW5rU2l6ZTogbnVtYmVyID0gMTsgLy8gbsO6bWVybyBkZSBlbmxhY2VzIGVuIGVsIHBhZ2luYWRvciBwYXJhIHBvZGVyIG5hdmVnYXIgaGFjaWEgZGVsYW50ZSBvIGRldHLDoXMgcXVlIGZvcnphbW9zIGEgcXVlIGhheWFcbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpOyAvL3BhcmEgbm90aWZpY2FyIGNhbWJpb3MgZW4gbGEgcMOhZ2luYSBhIG1vc3RyYXJcbiAgQE91dHB1dCgpXG4gIG9uTmV3UGFnZVNpemUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy9wYXJhIG5vdGlmaWNhciBjYW1iaW9zIGVuIGxvcyBlbGVtZW50b3MgYSBtb3N0cmFyIHBvciBww6FnaW5hXG5cbiAgYmFzZUl0ZW1zUGVyUGFnZTogbnVtYmVyID0gQmFzZUZpbHRlci5SRVNVTFRBRE9TX1BBR0U7IC8vIGd1YXJkYW1vcyBlbCBuw7ptZXJvIGRlIHJlc3VsdGFkb3MgcHJlLWNvbmZpZ3VyYWRvcyBwb3IgcMOhZ2luYSBwYXJhIG1vc3RyYXIgbGEgbGlzdGEgZGUgeCwgeCsxMCB5IHgrMjBcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBCYXNlRmlsdGVyLlJFU1VMVEFET1NfUEFHRTsgLy8gbsO6bWVybyBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEgcXVlIG1vc3RyYW1vc1xuICBmaXJzdDogbnVtYmVyO1xuICBwYWdlTGlua1NpemU6IG51bWJlcjsgLy8gbsO6bWVybyBkZSBlbmxhY2VzIGVuIGVsIHBhZ2luYWRvciBwYXJhIHBvZGVyIG5hdmVnYXIgaGFjaWEgZGVsYW50ZSBvIGRldHLDoXNcbiAgbWF4Q3VycmVudEl0ZW1zOiBudW1iZXIgPSAtMTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGVGb290ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnR5cGVGb290ZXIgPSBcImxpc3RcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFnaW5hdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wYWdpbmF0b3IgPSBmYWxzZTtcbiAgICB9XG4gICAgLy9tZW5zYWplcyBwb3IgZGVmZWN0byBzaSBubyB2aWVuZW4gZGVmaW5pZG9zXG4gICAgaWYgKHRoaXMubWVzc2FnZXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNldE1lc3NhZ2VzKCk7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChQYWdlU3RhdHVzLkVycm9yLCBcImJpdG5nbGlicmFyeS5mb290ZXIuZXJyb3JcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZXNzYWdlcygpIHtcbiAgICBjb25zb2xlLmxvZyhcImRlZmluaW1vcyBsb3MgbWVuc2FqZXMgZGVsIGZvb3RlciBkZSBtYW5lcmEgZXN0w6FuZGFyXCIpO1xuICAgIHRoaXMubWVzc2FnZXMgPSBuZXcgTWFwPFBhZ2VTdGF0dXMsIHN0cmluZz4oKTtcbiAgICBpZiAodGhpcy5pc0Zvb3Rlckxpc3QoKSB8fCB0aGlzLmlzRm9vdGVyU2Nyb2xsKCkpIHtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuSW5pdCwgXCJiaXRuZ2xpYnJhcnkuZm9vdGVyLmxpc3QuaW5pdFwiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuU2VhcmNoaW5nLCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5zZWFyY2hpbmdcIik7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChQYWdlU3RhdHVzLkVtcHR5UmVzdWx0LCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5lbXB0eXJlc3VsdFwiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoLCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5maW5pc2hzZWFyY2hcIik7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChCaXRGb290ZXJDb21wb25lbnQuTU9SRV9SRVNVTFRTLCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5tb3JlcmVzdWx0c1wiKVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0Zvb3RlckZvcm0oKSkge1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5Jbml0LCBcImJpdG5nbGlicmFyeS5mb290ZXIuZm9ybS5pbml0XCIpO1xuICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoUGFnZVN0YXR1cy5TZWFyY2hpbmcsIFwiYml0bmdsaWJyYXJ5LmZvb3Rlci5mb3JtLnNlYXJjaGluZ1wiKTtcbiAgICAgIHRoaXMubWVzc2FnZXMuc2V0KFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoLCBcImJpdG5nbGlicmFyeS5mb290ZXIuZm9ybS5maW5pc2hzZWFyY2hcIik7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnNldChQYWdlU3RhdHVzLlJlYWRPbmx5LCBcImJpdG5nbGlicmFyeS5mb290ZXIubGlzdC5yZWFkb25seVwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfQkxBTkspIHtcbiAgICAgIGNvbnNvbGUubG9nKFwidGhlIGZvb3RlciBpcyBCTEFOSyFcIik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVzY3VjaGFyZW1vcyBhIGNhbWJpb3MgZW4gbGFzIHByb3BpZWRhZGVzIHRvdGFsSXRlbXMgcGFyYSBhY3R1YWxpemFyIGVsIHBhZ2luYWRvciBjb24gcmVzcGVjdG8gYSBsYXMgcMOhZ2luYXMgcXVlIG1vc3RyYW1vc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcEtleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBmb3IgKGxldCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XG4gICAgICBsZXQgY2hhbmdlZFByb3AgPSBjaGFuZ2VzW3Byb3BOYW1lXTtcbiAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJzdGF0dXNcIikge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc29sZS5sb2coXCJzdGF0dXM6XCIgKyB0aGlzLnN0YXR1cyk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInRvdGFsSXRlbXNcIikge1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWU7XG4gICAgICAgIGNvbnNvbGUubG9nKFwidG90YWxJdGVtczpcIiArIHRoaXMudG90YWxJdGVtcyk7XG4gICAgICAgIGlmIChjaGFuZ2VkUHJvcC5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VMaW5rU2l6ZSgpOyAgICAgLy9yZWNhbGN1bGFtb3NcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU1heEN1cnJlbnRJdGVtcygpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJmaWx0ZXJcIikge1xuICAgICAgICB0aGlzLmZpbHRlciA9IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNYXhDdXJyZW50SXRlbXMoKTtcbiAgICAgICAgaWYgKGNoYW5nZWRQcm9wLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUxpbmtTaXplKCk7ICAgICAvL3JlY2FsY3VsYW1vc1xuICAgICAgICAgIGlmICghdGhpcy5maWx0ZXI/LnBhZ2luYSB8fCB0aGlzLmZpbHRlci5wYWdpbmEgPD0gMSkge1xuICAgICAgICAgICAgdGhpcy5nb1RvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImdvVG9GaXJzdFBhZ2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlyc3QgPSAodGhpcy5maWx0ZXIucGFnaW5hIC0gMSkgKiB0aGlzLmZpbHRlci5yZXN1bHRhZG9zO1xuICAgICAgICBjb25zb2xlLmxvZyhcImZpcnN0OlwiICsgdGhpcy5maXJzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0Zvb3RlcigpIHtcbiAgICAvLyBQcm9ibGVtYS4gRXN0YW1vcyBvYnRlbmllbmRvIHVuIHN0YXR1cyBhIG51bGwgY3VhbmRvIHJlZ3Jlc2Ftb3MgZGUgdW5hIGZpY2hhXG4gICAgLy8gc3RhdHVzIGVzIG51bGwgcG9ycXVlIHJlYWxtZW50ZSBubyBzZSBlc3TDoSBsYW56YW5kbyBuaW5ndW5hIGLDunNxdWVkYSBwb3IgbG8gcXVlIGVsIG3DqXRvZG8gdXBkYXRlUGFnZVN0YXR1cyByZXRvcm5hICBudWxsXG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gJ2xpc3QnICYmIHRoaXMudmlzaWJsZTtcbiAgfVxuXG4gIHNob3dTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgJiYgdGhpcy52aXNpYmxlO1xuICB9XG5cbiAgLyoqIENhbGN1bGEgZWwgbsO6bWVybyBkZSBlbmxhY2VzIHZpc2libGVzIGVuIGVsIHBhZ2luYWRvciAoZW4gZWwgcmFuZ28gZW50cmUgMSB5IEJBU0VfUkVTVUxUQURPU19QQUdFKS4gKi9cbiAgY2FsY3VsYXRlUGFnZUxpbmtTaXplKCkge1xuICAgIGlmICh0aGlzLmZvcmNlUGFnZUxpbmtTaXplID09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKGBjYWxjdWxhdGVQYWdlTGlua1NpemUgdG90YWxJdGVtczogJHt0aGlzLnRvdGFsSXRlbXN9IGl0ZW1zUGVyUGFnZToke3RoaXMuaXRlbXNQZXJQYWdlfWApO1xuICAgICAgdGhpcy5wYWdlTGlua1NpemUgPSBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgaWYgKHRoaXMucGFnZUxpbmtTaXplIDwgMSkge1xuICAgICAgICB0aGlzLnBhZ2VMaW5rU2l6ZSA9IDE7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wYWdlTGlua1NpemUgPiBCQVNFX1JFU1VMVEFET1NfUEFHRSkge1xuICAgICAgICB0aGlzLnBhZ2VMaW5rU2l6ZSA9IEJBU0VfUkVTVUxUQURPU19QQUdFO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZ2VMaW5rU2l6ZSA9IHRoaXMuZm9yY2VQYWdlTGlua1NpemU7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKFwicGFnZUxpbmtTaXplXCIsIHRoaXMucGFnZUxpbmtTaXplKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZU1heEN1cnJlbnRJdGVtcygpIHtcbiAgICB0aGlzLm1heEN1cnJlbnRJdGVtcyA9IHRoaXMuZmlsdGVyPy5wYWdpbmEgKiB0aGlzLmZpbHRlcj8ucmVzdWx0YWRvcztcbiAgICBpZiAodGhpcy5tYXhDdXJyZW50SXRlbXMgPiB0aGlzLnRvdGFsSXRlbXMpIHtcbiAgICAgIHRoaXMubWF4Q3VycmVudEl0ZW1zID0gdGhpcy50b3RhbEl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBFc3RhYmxlY2UgZWwgbsO6bWVybyBkZSBww6FnaW5hIGVuIGxhIHZpc3VhbGl6YWNpw7NuIGRlIHJlc3VsdGFkb3MuIFNlIGludm9jYSBjdWFuZG8gZWwgdXN1YXJpbyBjYW1iaWEgZWwgbsO6bWVybyBkZSByZXN1bHRhZG9zIGEgbW9zdHJhciBvIGNhbWJpYSBkZSBww6FnaW5hICovXG4gIHBhZ2luYXRlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhcIlBhZ2UgY2hhbmdlZCB0bzpcIiArIGV2ZW50LnBhZ2UgKyBcIiBtYXhDdXJyZW50SXRlbXM6XCIgKyB0aGlzLm1heEN1cnJlbnRJdGVtcyArIFwiIGZpcnN0RWxlbWVudDpcIiArIHRoaXMuZmlyc3QpO1xuICAgIGlmIChldmVudC5yb3dzICE9PSB0aGlzLml0ZW1zUGVyUGFnZSkge1xuICAgICAgLy8gaGFuIGNhbWJpYWRvIGVsIG7Dum1lcm8gZGUgZWxlbWVudG9zIHBvciBww6FnaW5hXG4gICAgICAvL25vdGlmaWNhbW9zIHF1ZSBsb3MgZWxlbWVudG9zIHBvciBww6FnaW5hIGhhbiBjYW1iaWFkb1xuICAgICAgdGhpcy5vbk5ld1BhZ2VTaXplLmVtaXQoZXZlbnQucm93cyk7XG4gICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IGV2ZW50LnJvd3M7XG4gICAgICB0aGlzLmdvVG9GaXJzdFBhZ2UoKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUxpbmtTaXplKCk7IC8vIHJlY2FsY3VsYW1vcyBlbCBuw7ptZXJvIGRlIGVubGFjZXMgZGUgcMOhZ2luYVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBub3RpZmljYW1vcyBhIG51ZXN0cm8gcGFww6EgcXVlIGxhIHDDoWdpbmEgaGEgY2FtYmlhZG9cbiAgICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoZXZlbnQucGFnZSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ29Ub0ZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmZpcnN0ID0gMTtcbiAgfVxuXG4gIGdldFN0eWxlKCkge1xuICAgIGlmICh0aGlzLmZpeGVkICYmIHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfTElTVCB8fCB0aGlzLnR5cGVGb290ZXIgPT09IEJpdEZvb3RlckNvbXBvbmVudC5UWVBFX1NDUk9MTCkge1xuICAgICAgcmV0dXJuIFwiZm9vdGVyIG5hdmJhci1maXhlZC1ib3R0b21cIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZml4ZWQgJiYgdGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9GT1JNKSB7XG4gICAgICByZXR1cm4gXCJmb290ZXIgbmF2YmFyLWZpeGVkLWJvdHRvbS1mb3JtXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcImZvb3RlclwiO1xuICAgIH1cbiAgfVxuXG4gIGlzRm9vdGVyTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9MSVNUO1xuICB9XG5cbiAgaXNGb290ZXJTY3JvbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfU0NST0xMO1xuICB9XG5cbiAgaXNGb290ZXJGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGVGb290ZXIgPT09IEJpdEZvb3RlckNvbXBvbmVudC5UWVBFX0ZPUk07XG4gIH1cblxuICAvKiogRmxhZzogbGEgcMOhZ2luYSBlc3TDoSByZWFsaXphbmRvIGxhIGLDunNxdWVkYS4gKi9cbiAgZ2V0IHNlYXJjaEluaXRpYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFBhZ2VTdGF0dXMuSW5pdCB8fCB0aGlzLnN0YXR1cyA9PSBQYWdlU3RhdHVzLlJlc2V0IHx8ICF0aGlzLnN0YXR1cztcbiAgfVxuXG4gIC8qKiBGbGFnOiBsYSBww6FnaW5hIGVzdMOhIHJlYWxpemFuZG8gbGEgYsO6c3F1ZWRhLiAqL1xuICBnZXQgc2VhcmNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gUGFnZVN0YXR1cy5TZWFyY2hpbmc7XG4gIH1cblxuICAvKiogRmxhZzogbGEgcMOhZ2luYSBoYSBmaW5hbGl6YWRvIGxhIMO6bHRpbWEgYsO6c3F1ZWRhLiAqL1xuICBnZXQgc2VhcmNoRmluaXNoZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBQYWdlU3RhdHVzLkZpbmlzaFNlYXJjaDtcbiAgfVxuXG4gIC8qKiBGbGFnOiBsYSBww6FnaW5hIGVzdMOhIGVuIG1vZG8gc29sbyBsZWN0dXJhICovXG4gIGdldCByZWFkT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT0gUGFnZVN0YXR1cy5SZWFkT25seTtcbiAgfVxuXG4gIC8qKiBGbGFnOiBsYSBww6FnaW5hIGhhIGZpbmFsaXphZG8gY29uIGVycm9yICovXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT0gUGFnZVN0YXR1cy5FcnJvcjtcbiAgfVxuXG4gIC8qKiBGbGFnOiBlbmNvbnRyYWRvIHJlc3VsdGFkby4gKi9cbiAgZ2V0IGZvdW5kUmVzdWx0KCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnN0YXR1cyA9PT0gUGFnZVN0YXR1cy5GaW5pc2hTZWFyY2ggJiZcbiAgICAgICgodGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9MSVNUICYmIHRoaXMudG90YWxJdGVtcyA+IDApXG4gICAgICAgIHx8IHRoaXMudHlwZUZvb3RlciA9PT0gQml0Rm9vdGVyQ29tcG9uZW50LlRZUEVfRk9STVxuICAgICAgICB8fCAodGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9TQ1JPTEwgJiYgdGhpcy50b3RhbEl0ZW1zIDw9IHRoaXMubWF4Q3VycmVudEl0ZW1zKSlcbiAgICApO1xuICB9XG5cbiAgLyoqIEZsYWc6IGhheSBtw6FzIHJlc3VsdGFkb3MgKHNjcm9sbCkuICovXG4gIGdldCBtb3JlUmVzdWx0cygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zdGF0dXMgPT09IFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoICYmXG4gICAgICAodGhpcy50eXBlRm9vdGVyID09PSBCaXRGb290ZXJDb21wb25lbnQuVFlQRV9TQ1JPTEwgJiYgdGhpcy50b3RhbEl0ZW1zID4gdGhpcy5tYXhDdXJyZW50SXRlbXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBGbGFnOiBubyBoYXkgcmVzdWx0YWRvcy4gKi9cbiAgZ2V0IGVtcHR5UmVzdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gUGFnZVN0YXR1cy5GaW5pc2hTZWFyY2ggJiYgdGhpcy50b3RhbEl0ZW1zID09PSAwO1xuICB9XG5cbiAgZ2V0IGluaXRNZXNzYWdlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZWxlY3RUcmFuc2xhdGUodGhpcy5tZXNzYWdlcy5nZXQoUGFnZVN0YXR1cy5Jbml0KSk7XG4gIH1cblxuICBnZXQgc2VhcmNoaW5nTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KFBhZ2VTdGF0dXMuU2VhcmNoaW5nKSk7XG4gIH1cblxuICBnZXQgZmluaXNoTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KFBhZ2VTdGF0dXMuRmluaXNoU2VhcmNoKSk7XG4gIH1cblxuICBnZXQgbW9yZVJlc3VsdHNNZXNzYWdlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZWxlY3RUcmFuc2xhdGUodGhpcy5tZXNzYWdlcy5nZXQoQml0Rm9vdGVyQ29tcG9uZW50Lk1PUkVfUkVTVUxUUykpO1xuICB9XG5cbiAgZ2V0IGVtcHR5TWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKHRoaXMubWVzc2FnZXMuZ2V0KFBhZ2VTdGF0dXMuRW1wdHlSZXN1bHQpKTtcbiAgfVxuXG4gIGdldCByZWFkT25seU1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNlbGVjdFRyYW5zbGF0ZSh0aGlzLm1lc3NhZ2VzLmdldChQYWdlU3RhdHVzLlJlYWRPbmx5KSk7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZWxlY3RUcmFuc2xhdGUodGhpcy5tZXNzYWdlcy5nZXQoUGFnZVN0YXR1cy5FcnJvcikpO1xuICB9XG59XG4iLCI8Zm9vdGVyIFtjbGFzc109XCJnZXRTdHlsZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJncmlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMiBsZzpjb2wtMlwiICpuZ0lmPVwic2hvd0Zvb3RlcigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibnVtZXJvLXJlc3VsdGFkb3NcIj5cbiAgICAgICAgPGxhYmVsPnt7XCJiaXRuZ2xpYnJhcnkuZm9vdGVyLnJlc3VsdHNcIiB8IHRyYW5zbG9jb319PC9sYWJlbD5cbiAgICAgICAgPHNwYW4+e3ttYXhDdXJyZW50SXRlbXN9fSAvIHt7dG90YWxJdGVtc319PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMiBsZzpjb2wtMlwiICpuZ0lmPVwic2hvd1Njcm9sbCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibnVtZXJvLXJlc3VsdGFkb3Mtc2Nyb2xsXCI+XG4gICAgICAgIDxsYWJlbD57e1wiYml0bmdsaWJyYXJ5LmZvb3Rlci5yZXN1bHRzXCIgfCB0cmFuc2xvY299fTwvbGFiZWw+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibWF4Q3VycmVudEl0ZW1zID49IHRvdGFsSXRlbXNcIj57e3RvdGFsSXRlbXN9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtYXhDdXJyZW50SXRlbXMgPCB0b3RhbEl0ZW1zXCI+e3ttYXhDdXJyZW50SXRlbXN9fSAvIHt7dG90YWxJdGVtc319PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC03IGxnOmNvbC03IHAtdGV4dC1jZW50ZXJcIiAqbmdJZj1cInNob3dGb290ZXIoKVwiPlxuICAgICAgPHAtcGFnaW5hdG9yICpuZ0lmPVwicGFnaW5hdG9yXCJcbiAgICAgICAgICBbZmlyc3RdPVwiZmlyc3RcIlxuICAgICAgICAgIFtyb3dzXT1cIml0ZW1zUGVyUGFnZVwiXG4gICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbEl0ZW1zXCJcbiAgICAgICAgICBbcGFnZUxpbmtTaXplXT1cIm1vc3RyYXJFbmxhY2VzUGFnaW5hcyA/IHBhZ2VMaW5rU2l6ZSA6IDFcIlxuICAgICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiW2Jhc2VJdGVtc1BlclBhZ2UsYmFzZUl0ZW1zUGVyUGFnZSo1LGJhc2VJdGVtc1BlclBhZ2UqMjUsYmFzZUl0ZW1zUGVyUGFnZSo1MF1cIlxuICAgICAgICAgIFtzaG93UGFnZUxpbmtzXT1cIm1vc3RyYXJFbmxhY2VzUGFnaW5hc1wiXG4gICAgICAgICAgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJtb3N0cmFyUHJpbWVyYVVsdGltYVBhZ2luYSA/IHRydWUgOiBtYXhDdXJyZW50SXRlbXMgPj0gdG90YWxJdGVtc1wiXG4gICAgICAgICAgKG9uUGFnZUNoYW5nZSk9XCJwYWdpbmF0ZSgkZXZlbnQpXCI+PC9wLXBhZ2luYXRvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoSW5pdGlhdGVkXCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWluZm9cIj48L2k+XG4gICAgICAgIDxzcGFuPnt7aW5pdE1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hpbmdcIlxuICAgICAgICAgICBbY2xhc3NOYW1lXT1cInR5cGVGb290ZXIgPT09ICdzY3JvbGwnID8gJ21lbnNhamUtc2Nyb2xsIG1lbnNhamUtaW5mbycgOiAnbWVuc2FqZSBtZW5zYWplLWluZm8nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mb1wiPjwvaT5cbiAgICAgICAgPHNwYW4+e3tzZWFyY2hpbmdNZXNzYWdlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVhZE9ubHlcIlxuICAgICAgICAgICBbY2xhc3NOYW1lXT1cInR5cGVGb290ZXIgPT09ICdzY3JvbGwnID8gJ21lbnNhamUtc2Nyb2xsIG1lbnNhamUtaW5mbycgOiAnbWVuc2FqZSBtZW5zYWplLWluZm8nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mb1wiPjwvaT5cbiAgICAgICAgPHNwYW4+e3tyZWFkT25seU1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3VuZFJlc3VsdFwiXG4gICAgICAgICAgIFtjbGFzc05hbWVdPVwidHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgPyAnbWVuc2FqZS1zY3JvbGwgbWVuc2FqZS1pbmZvJyA6ICdtZW5zYWplIG1lbnNhamUtaW5mbydcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1pbmZvXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2ZpbmlzaE1lc3NhZ2UgfCBhc3luY319PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJtb3JlUmVzdWx0c1wiXG4gICAgICAgICAgIFtjbGFzc05hbWVdPVwidHlwZUZvb3RlciA9PT0gJ3Njcm9sbCcgPyAnbWVuc2FqZS1zY3JvbGwgbWVuc2FqZS1pbmZvJyA6ICdtZW5zYWplIG1lbnNhamUtaW5mbydcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1pbmZvXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e21vcmVSZXN1bHRzTWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImVtcHR5UmVzdWx0XCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2VtcHR5TWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCJcbiAgICAgICAgICAgW2NsYXNzTmFtZV09XCJ0eXBlRm9vdGVyID09PSAnc2Nyb2xsJyA/ICdtZW5zYWplLXNjcm9sbCBtZW5zYWplLWluZm8nIDogJ21lbnNhamUgbWVuc2FqZS1pbmZvJ1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxuICAgICAgICA8c3Bhbj57e2Vycm9yTWVzc2FnZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJpdC1oZWxwPjwvYml0LWhlbHA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb290ZXI+XG4iXX0=
|