ng-easycommerce-v18 0.3.14-beta.2 → 0.3.15-beta.1

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.
Files changed (30) hide show
  1. package/README.md +9 -4
  2. package/esm2022/lib/classes/filters/filter.mjs +2 -27
  3. package/esm2022/lib/constants/api.constants.service.mjs +44 -41
  4. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +5 -1
  5. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +5 -1
  6. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -5
  7. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +6 -2
  8. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +79 -9
  9. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +45 -34
  10. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +95 -5
  11. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +4 -6
  12. package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -1
  13. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +2 -4
  14. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +246 -0
  15. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +2 -4
  16. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +2 -4
  17. package/esm2022/lib/ec-services/options.service.mjs +3 -27
  18. package/fesm2022/ng-easycommerce-v18.mjs +536 -173
  19. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  20. package/lib/constants/api.constants.service.d.ts +24 -13
  21. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +2 -0
  22. package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +2 -0
  23. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +5 -0
  24. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +4 -0
  25. package/lib/ec-components/header-ec/header-ec.component.d.ts +5 -1
  26. package/lib/ec-components/product-ec/product-ec.component.d.ts +10 -1
  27. package/lib/ec-components/widgets-ec/index.d.ts +1 -0
  28. package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +35 -0
  29. package/lib/ec-services/options.service.d.ts +0 -4
  30. package/package.json +1 -1
@@ -0,0 +1,246 @@
1
+ import { Component, Inject, PLATFORM_ID } from '@angular/core';
2
+ import { combineLatest } from 'rxjs';
3
+ import { ComponentHelper } from '../../../classes/component-helper';
4
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
5
+ import { DOCUMENT } from '@angular/common';
6
+ import { LoadingFullEcComponent } from '../loading/loading-full-ec/loading-full-ec.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "../../../ec-services";
10
+ import * as i3 from "@angular/common";
11
+ export class RedsysCatchEcComponent extends ComponentHelper {
12
+ activedRoute;
13
+ router;
14
+ checkoutService;
15
+ renderer;
16
+ elementRef;
17
+ document;
18
+ platformId;
19
+ message = '';
20
+ subscription = null;
21
+ isMobile = false;
22
+ sessionId = '';
23
+ constructor(activedRoute, router, checkoutService, renderer, elementRef, document, platformId) {
24
+ super();
25
+ this.activedRoute = activedRoute;
26
+ this.router = router;
27
+ this.checkoutService = checkoutService;
28
+ this.renderer = renderer;
29
+ this.elementRef = elementRef;
30
+ this.document = document;
31
+ this.platformId = platformId;
32
+ if (isPlatformBrowser(this.platformId)) {
33
+ this.detectMobile();
34
+ this.sessionId = this.generateSessionId();
35
+ // Verificar si debe procesar esta pestaña
36
+ if (this.shouldProcessPayment()) {
37
+ this.hideHeaderFooter();
38
+ }
39
+ else {
40
+ // Si no debe procesar, cerrar esta pestaña y redirigir a la principal
41
+ this.closeRedundantTab();
42
+ return;
43
+ }
44
+ }
45
+ this.ecOnConstruct();
46
+ }
47
+ detectMobile() {
48
+ if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {
49
+ const userAgent = window.navigator.userAgent.toLowerCase();
50
+ this.isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(userAgent) ||
51
+ (window.innerWidth <= 768);
52
+ }
53
+ }
54
+ generateSessionId() {
55
+ return `catch_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
56
+ }
57
+ shouldProcessPayment() {
58
+ if (!isPlatformBrowser(this.platformId)) {
59
+ return false; // En el servidor no procesar
60
+ }
61
+ if (!this.isMobile) {
62
+ return true; // En desktop siempre procesar
63
+ }
64
+ // En mobile, verificar si ya hay otra pestaña procesando
65
+ const processingTab = localStorage.getItem('mp_processing_tab');
66
+ const currentTime = Date.now();
67
+ const processingTabTime = localStorage.getItem('mp_processing_tab_time');
68
+ // Si no hay pestaña procesando o la anterior es muy antigua (más de 30 segundos)
69
+ if (!processingTab || !processingTabTime || (currentTime - parseInt(processingTabTime)) > 30000) {
70
+ // Esta pestaña será la que procese
71
+ localStorage.setItem('mp_processing_tab', this.sessionId);
72
+ localStorage.setItem('mp_processing_tab_time', currentTime.toString());
73
+ return true;
74
+ }
75
+ // Si ya hay otra pestaña procesando
76
+ return processingTab === this.sessionId;
77
+ }
78
+ closeRedundantTab() {
79
+ console.log('Cerrando pestaña redundante...');
80
+ // Intentar cerrar la pestaña
81
+ if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {
82
+ // Redirigir a la página principal en lugar de cerrar
83
+ window.location.href = '/checkout/order_success';
84
+ }
85
+ }
86
+ ngOnInit() {
87
+ this.subscription = combineLatest([
88
+ this.activedRoute.params,
89
+ this.activedRoute.queryParams
90
+ ]).subscribe(([queryRouter, queryParams]) => {
91
+ let state;
92
+ state = queryRouter['state'];
93
+ if (state && state === 'statuspayment') {
94
+ state = queryParams['status'];
95
+ }
96
+ console.log('PARAMETROS STATE -> ', state);
97
+ this.handlePaymentState(state, queryParams);
98
+ });
99
+ this.ecOnInit();
100
+ }
101
+ ngOnDestroy() {
102
+ if (this.subscription) {
103
+ this.subscription.unsubscribe();
104
+ }
105
+ this.showHeaderFooter();
106
+ // Limpiar marcadores de mobile si esta pestaña estaba procesando
107
+ if (this.isMobile && isPlatformBrowser(this.platformId)) {
108
+ const processingTab = localStorage.getItem('mp_processing_tab');
109
+ if (processingTab === this.sessionId) {
110
+ localStorage.removeItem('mp_processing_tab');
111
+ localStorage.removeItem('mp_processing_tab_time');
112
+ }
113
+ }
114
+ // this.ecOnDestroy(); // Removido si no existe en ComponentHelper
115
+ }
116
+ hideHeaderFooter() {
117
+ // Usar Renderer2 en lugar de jQuery para manipular el DOM
118
+ const header = this.document.querySelector('header');
119
+ const footer = this.document.querySelector('footer');
120
+ if (header) {
121
+ this.renderer.setStyle(header, 'display', 'none');
122
+ }
123
+ if (footer) {
124
+ this.renderer.setStyle(footer, 'display', 'none');
125
+ }
126
+ }
127
+ showHeaderFooter() {
128
+ // Restaurar la visibilidad al destruir el componente
129
+ const header = this.document.querySelector('header');
130
+ const footer = this.document.querySelector('footer');
131
+ if (header) {
132
+ this.renderer.removeStyle(header, 'display');
133
+ }
134
+ if (footer) {
135
+ this.renderer.removeStyle(footer, 'display');
136
+ }
137
+ }
138
+ handlePaymentState(state, queryParams) {
139
+ // Solo procesar el estado si esta pestaña está autorizada
140
+ if (this.isMobile && !this.shouldProcessPayment()) {
141
+ console.log('Pestaña no autorizada para procesar el pago, redirigiendo...');
142
+ this.closeRedundantTab();
143
+ return;
144
+ }
145
+ switch (state) {
146
+ case '200':
147
+ this.setStateInLocal('Su pago fue procesado con éxito.', 'success');
148
+ this.storeTotalAmount(queryParams);
149
+ this.redirectToSuccess();
150
+ break;
151
+ case 'success':
152
+ this.setStateInLocal('Su pago fue procesado con éxito.', state);
153
+ this.storeTotalAmount(queryParams);
154
+ this.redirectToSuccess();
155
+ break;
156
+ case 'pending':
157
+ this.setStateInLocal('Su pago fue procesado con éxito.', state);
158
+ this.redirectToSuccess();
159
+ break;
160
+ case 'failure':
161
+ this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
162
+ this.storeTotalAmount(queryParams);
163
+ this.redirectToCheckout();
164
+ break;
165
+ case 'cancel':
166
+ this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
167
+ this.redirectToCheckout();
168
+ break;
169
+ case 'ok':
170
+ this.setStateInSesion('Su pago fue procesado con éxito.', state);
171
+ break;
172
+ case 'challenge':
173
+ this.setStateInSesion('Redirigiendo a autenticación del banco emisor.', state);
174
+ break;
175
+ case 'error':
176
+ this.setStateInSesion('Algo no salio bien en la validación de sus datos.', state);
177
+ break;
178
+ case '0':
179
+ this.setStateInLocal('Se ha cancelado el proceso de pago.', 'failure');
180
+ this.redirectToCheckout();
181
+ break;
182
+ default:
183
+ break;
184
+ }
185
+ }
186
+ redirectToSuccess() {
187
+ // Limpiar marcadores de procesamiento
188
+ if (this.isMobile && isPlatformBrowser(this.platformId)) {
189
+ localStorage.removeItem('mp_processing_tab');
190
+ localStorage.removeItem('mp_processing_tab_time');
191
+ }
192
+ // Redirigir después de un breve delay
193
+ setTimeout(() => {
194
+ this.router.navigate(['/checkout/order_success']);
195
+ }, 2000);
196
+ }
197
+ redirectToCheckout() {
198
+ // Limpiar marcadores de procesamiento
199
+ if (this.isMobile && isPlatformBrowser(this.platformId)) {
200
+ localStorage.removeItem('mp_processing_tab');
201
+ localStorage.removeItem('mp_processing_tab_time');
202
+ }
203
+ // Redirigir después de un breve delay
204
+ setTimeout(() => {
205
+ this.router.navigate(['/checkout']);
206
+ }, 2000);
207
+ }
208
+ storeTotalAmount(queryParams) {
209
+ const totalAmount = queryParams['total_amount'];
210
+ if (totalAmount && isPlatformBrowser(this.platformId)) {
211
+ localStorage.setItem('total_amount', totalAmount);
212
+ }
213
+ }
214
+ setStateInLocal = (mensaje, state) => {
215
+ this.message = mensaje;
216
+ if (isPlatformBrowser(this.platformId)) {
217
+ localStorage.setItem('state', state);
218
+ if (typeof sessionStorage !== 'undefined') {
219
+ sessionStorage.setItem('modalnews', 'false');
220
+ }
221
+ }
222
+ };
223
+ setStateInSesion = (mensaje, state) => {
224
+ this.message = mensaje;
225
+ if (isPlatformBrowser(this.platformId)) {
226
+ if (typeof sessionStorage !== 'undefined') {
227
+ sessionStorage.setItem('state', state);
228
+ sessionStorage.setItem('modalnews', 'false');
229
+ }
230
+ localStorage.setItem('state', state);
231
+ }
232
+ };
233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.CheckoutService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
234
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedsysCatchEcComponent, isStandalone: true, selector: "app-redsys-catch-ec", usesInheritance: true, ngImport: i0, template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
235
+ }
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, decorators: [{
237
+ type: Component,
238
+ args: [{ selector: 'app-redsys-catch-ec', standalone: true, imports: [CommonModule, LoadingFullEcComponent], template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"] }]
239
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CheckoutService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: Document, decorators: [{
240
+ type: Inject,
241
+ args: [DOCUMENT]
242
+ }] }, { type: undefined, decorators: [{
243
+ type: Inject,
244
+ args: [PLATFORM_ID]
245
+ }] }] });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvcmVkc3lzLWNhdGNoLWVjL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL3JlZHN5cy1jYXRjaC1lYy9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7QUFTOUYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGVBQWU7SUFRNUM7SUFDQTtJQUNBO0lBQ0M7SUFDQTtJQUNrQjtJQUNHO0lBWjFCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDWixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFFdkIsWUFDVyxZQUE0QixFQUM1QixNQUFjLEVBQ2QsZUFBZ0MsRUFDL0IsUUFBbUIsRUFDbkIsVUFBc0IsRUFDSixRQUFrQixFQUNmLFVBQWU7UUFFNUMsS0FBSyxFQUFFLENBQUM7UUFSRCxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDSixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUk1QyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRTFDLDBDQUEwQztZQUMxQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixzRUFBc0U7Z0JBQ3RFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixPQUFPO1lBQ1gsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDdEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyx1RUFBdUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN6RixDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLEtBQUssQ0FBQyxDQUFDLDZCQUE2QjtRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxDQUFDLDhCQUE4QjtRQUMvQyxDQUFDO1FBRUQseURBQXlEO1FBQ3pELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFekUsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQzlGLG1DQUFtQztZQUNuQyxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxRCxZQUFZLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsT0FBTyxhQUFhLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUM5Qyw2QkFBNkI7UUFDN0IsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDdEUscURBQXFEO1lBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLHlCQUF5QixDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7U0FDaEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxLQUF5QixDQUFDO1lBQzlCLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0IsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3RELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25DLFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDN0MsWUFBWSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDO1FBRUQsa0VBQWtFO0lBQ3RFLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsMERBQTBEO1FBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJELElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixxREFBcUQ7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQXlCLEVBQUUsV0FBZ0I7UUFDbEUsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDWCxDQUFDO1FBRUQsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNaLEtBQUssS0FBSztnQkFDTixJQUFJLENBQUMsZUFBZSxDQUFDLGtDQUFrQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLE1BQU07WUFDVixLQUFLLFdBQVc7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMvRSxNQUFNO1lBQ1YsS0FBSyxPQUFPO2dCQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEYsTUFBTTtZQUNWLEtBQUssR0FBRztnQkFDSixJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3RELFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM3QyxZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3RELFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM3QyxZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxXQUFnQjtRQUNyQyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsSUFBSSxXQUFXLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFHTyxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFRLEVBQUU7UUFDL0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN4QyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVPLGdCQUFnQixHQUFHLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBUSxFQUFFO1FBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO3dHQXZQUSxzQkFBc0Isd0pBYW5CLFFBQVEsYUFDUixXQUFXOzRGQWRkLHNCQUFzQixzR0NqQm5DLHlwQkFlTSxtWkRGUSxZQUFZLDRGQUFFLHNCQUFzQjs7NEZBSXJDLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDSSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDOzswQkFpQjFDLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBJbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmcvbG9hZGluZy1mdWxsLWVjL2xvYWRpbmctZnVsbC1lYy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1yZWRzeXMtY2F0Y2gtZWMnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIExvYWRpbmdGdWxsRWNDb21wb25lbnRdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVkc3lzQ2F0Y2hFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBpc01vYmlsZSA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzZXNzaW9uSWQgPSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHVibGljIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRlY3RNb2JpbGUoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSB0aGlzLmdlbmVyYXRlU2Vzc2lvbklkKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZGViZSBwcm9jZXNhciBlc3RhIHBlc3Rhw7FhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZFByb2Nlc3NQYXltZW50KCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZUhlYWRlckZvb3RlcigpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gU2kgbm8gZGViZSBwcm9jZXNhciwgY2VycmFyIGVzdGEgcGVzdGHDsWEgeSByZWRpcmlnaXIgYSBsYSBwcmluY2lwYWxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSZWR1bmRhbnRUYWIoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRldGVjdE1vYmlsZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTW9iaWxlID0gL2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhIG1pbml8bW9iaWxlL2kudGVzdCh1c2VyQWdlbnQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2OCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVTZXNzaW9uSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYGNhdGNoXyR7RGF0ZS5ub3coKX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNob3VsZFByb2Nlc3NQYXltZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVuIGVsIHNlcnZpZG9yIG5vIHByb2Nlc2FyXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRW4gZGVza3RvcCBzaWVtcHJlIHByb2Nlc2FyXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbiBtb2JpbGUsIHZlcmlmaWNhciBzaSB5YSBoYXkgb3RyYSBwZXN0YcOxYSBwcm9jZXNhbmRvXHJcbiAgICAgICAgY29uc3QgcHJvY2Vzc2luZ1RhYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYicpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb25zdCBwcm9jZXNzaW5nVGFiVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYl90aW1lJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gU2kgbm8gaGF5IHBlc3Rhw7FhIHByb2Nlc2FuZG8gbyBsYSBhbnRlcmlvciBlcyBtdXkgYW50aWd1YSAobcOhcyBkZSAzMCBzZWd1bmRvcylcclxuICAgICAgICBpZiAoIXByb2Nlc3NpbmdUYWIgfHwgIXByb2Nlc3NpbmdUYWJUaW1lIHx8IChjdXJyZW50VGltZSAtIHBhcnNlSW50KHByb2Nlc3NpbmdUYWJUaW1lKSkgPiAzMDAwMCkge1xyXG4gICAgICAgICAgICAvLyBFc3RhIHBlc3Rhw7FhIHNlcsOhIGxhIHF1ZSBwcm9jZXNlXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYicsIHRoaXMuc2Vzc2lvbklkKTtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21wX3Byb2Nlc3NpbmdfdGFiX3RpbWUnLCBjdXJyZW50VGltZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFNpIHlhIGhheSBvdHJhIHBlc3Rhw7FhIHByb2Nlc2FuZG9cclxuICAgICAgICByZXR1cm4gcHJvY2Vzc2luZ1RhYiA9PT0gdGhpcy5zZXNzaW9uSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjbG9zZVJlZHVuZGFudFRhYigpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQ2VycmFuZG8gcGVzdGHDsWEgcmVkdW5kYW50ZS4uLicpO1xyXG4gICAgICAgIC8vIEludGVudGFyIGNlcnJhciBsYSBwZXN0YcOxYVxyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIC8vIFJlZGlyaWdpciBhIGxhIHDDoWdpbmEgcHJpbmNpcGFsIGVuIGx1Z2FyIGRlIGNlcnJhclxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvY2hlY2tvdXQvb3JkZXJfc3VjY2Vzcyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlZFJvdXRlLnBhcmFtcyxcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVkUm91dGUucXVlcnlQYXJhbXNcclxuICAgICAgICBdKS5zdWJzY3JpYmUoKFtxdWVyeVJvdXRlciwgcXVlcnlQYXJhbXNdKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBzdGF0ZSA9IHF1ZXJ5Um91dGVyWydzdGF0ZSddO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUgPT09ICdzdGF0dXNwYXltZW50Jykge1xyXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBxdWVyeVBhcmFtc1snc3RhdHVzJ107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1BBUkFNRVRST1MgU1RBVEUgIC0+ICcsIHN0YXRlKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVQYXltZW50U3RhdGUoc3RhdGUsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0hlYWRlckZvb3RlcigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIExpbXBpYXIgbWFyY2Fkb3JlcyBkZSBtb2JpbGUgc2kgZXN0YSBwZXN0YcOxYSBlc3RhYmEgcHJvY2VzYW5kb1xyXG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2luZ1RhYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYicpO1xyXG4gICAgICAgICAgICBpZiAocHJvY2Vzc2luZ1RhYiA9PT0gdGhpcy5zZXNzaW9uSWQpIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYicpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21wX3Byb2Nlc3NpbmdfdGFiX3RpbWUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyB0aGlzLmVjT25EZXN0cm95KCk7IC8vIFJlbW92aWRvIHNpIG5vIGV4aXN0ZSBlbiBDb21wb25lbnRIZWxwZXJcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhpZGVIZWFkZXJGb290ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVXNhciBSZW5kZXJlcjIgZW4gbHVnYXIgZGUgalF1ZXJ5IHBhcmEgbWFuaXB1bGFyIGVsIERPTVxyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XHJcbiAgICAgICAgY29uc3QgZm9vdGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb290ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGhlYWRlciwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm9vdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZm9vdGVyLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2hvd0hlYWRlckZvb3RlcigpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZXN0YXVyYXIgbGEgdmlzaWJpbGlkYWQgYWwgZGVzdHJ1aXIgZWwgY29tcG9uZW50ZVxyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XHJcbiAgICAgICAgY29uc3QgZm9vdGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb290ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGhlYWRlciwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZvb3Rlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGZvb3RlciwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVQYXltZW50U3RhdGUoc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8vIFNvbG8gcHJvY2VzYXIgZWwgZXN0YWRvIHNpIGVzdGEgcGVzdGHDsWEgZXN0w6EgYXV0b3JpemFkYVxyXG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlICYmICF0aGlzLnNob3VsZFByb2Nlc3NQYXltZW50KCkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Blc3Rhw7FhIG5vIGF1dG9yaXphZGEgcGFyYSBwcm9jZXNhciBlbCBwYWdvLCByZWRpcmlnaWVuZG8uLi4nKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVJlZHVuZGFudFRhYigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnMjAwJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTdSBwYWdvIGZ1ZSBwcm9jZXNhZG8gY29uIMOpeGl0by4nLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZVRvdGFsQW1vdW50KHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1N1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTdSBwYWdvIGZ1ZSBwcm9jZXNhZG8gY29uIMOpeGl0by4nLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlVG90YWxBbW91bnQocXVlcnlQYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3BlbmRpbmcnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1N1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdmYWlsdXJlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTZSBoYSBjYW5jZWxhZG8gZWwgcHJvY2VzbyBkZSBwYWdvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVUb3RhbEFtb3VudChxdWVyeVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9DaGVja291dCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NhbmNlbCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5Mb2NhbCgnU2UgaGEgY2FuY2VsYWRvIGVsIHByb2Nlc28gZGUgcGFnby4nLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9DaGVja291dCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ29rJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignU3UgcGFnbyBmdWUgcHJvY2VzYWRvIGNvbiDDqXhpdG8uJywgc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoYWxsZW5nZSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5TZXNpb24oJ1JlZGlyaWdpZW5kbyBhIGF1dGVudGljYWNpw7NuIGRlbCBiYW5jbyBlbWlzb3IuJywgc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignQWxnbyBubyBzYWxpbyBiaWVuIGVuIGxhIHZhbGlkYWNpw7NuIGRlIHN1cyBkYXRvcy4nLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5Mb2NhbCgnU2UgaGEgY2FuY2VsYWRvIGVsIHByb2Nlc28gZGUgcGFnby4nLCAnZmFpbHVyZScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvQ2hlY2tvdXQoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVkaXJlY3RUb1N1Y2Nlc3MoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gTGltcGlhciBtYXJjYWRvcmVzIGRlIHByb2Nlc2FtaWVudG9cclxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYicpO1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbXBfcHJvY2Vzc2luZ190YWJfdGltZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyBSZWRpcmlnaXIgZGVzcHXDqXMgZGUgdW4gYnJldmUgZGVsYXlcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2hlY2tvdXQvb3JkZXJfc3VjY2VzcyddKTtcclxuICAgICAgICB9LCAyMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZGlyZWN0VG9DaGVja291dCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBMaW1waWFyIG1hcmNhZG9yZXMgZGUgcHJvY2VzYW1pZW50b1xyXG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21wX3Byb2Nlc3NpbmdfdGFiJyk7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtcF9wcm9jZXNzaW5nX3RhYl90aW1lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFJlZGlyaWdpciBkZXNwdcOpcyBkZSB1biBicmV2ZSBkZWxheVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9jaGVja291dCddKTtcclxuICAgICAgICB9LCAyMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3JlVG90YWxBbW91bnQocXVlcnlQYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRvdGFsQW1vdW50ID0gcXVlcnlQYXJhbXNbJ3RvdGFsX2Ftb3VudCddO1xyXG4gICAgICAgIGlmICh0b3RhbEFtb3VudCAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b3RhbF9hbW91bnQnLCB0b3RhbEFtb3VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHNldFN0YXRlSW5Mb2NhbCA9IChtZW5zYWplOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ21vZGFsbmV3cycsICdmYWxzZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U3RhdGVJblNlc2lvbiA9IChtZW5zYWplOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ21vZGFsbmV3cycsICdmYWxzZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cInRpdHBhZ2UgY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBmb250LWxnIG15LTNcIj57eyBtZXNzYWdlIHwgdXBwZXJjYXNlIH19PC9oND5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBteS0zXCI+UmVkaXJpZ2llbmRvIGVuIHNlZ3VuZG9zLi4uPC9oNT5cclxuICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -37,9 +37,7 @@ export class FacebookPixelService {
37
37
  this.renderer.appendChild(this.document?.body, new_analityc_script);
38
38
  this.enabled = true;
39
39
  }
40
- if (isPlatformBrowser(this.platformId)) {
41
- setTimeout(() => this.callEvent('initialize'), 1000);
42
- }
40
+ setTimeout(() => this.callEvent('initialize'), 1000);
43
41
  }
44
42
  /**
45
43
  * Ejecuta el evento pasado por parametro.
@@ -211,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
211
209
  providedIn: 'root'
212
210
  }]
213
211
  }], ctorParameters: () => [] });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZWJvb2stcGl4ZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9hbmFseXRpY3MvZmFjZWJvb2stcGl4ZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVU3Rjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRXJCLGVBQWUsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDNUQsUUFBUSxHQUFvQixJQUFJLENBQUM7SUFDekM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXpDO1FBQ0ksSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxRQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMs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RUFBRSxFQUFFO1lBQ1YsT0FBTztnQkFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtnQkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQzFCLENBQUE7UUFDTCxDQUFDLENBQ0osQ0FBQTtJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLElBQVM7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDakIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FDaEQsQ0FBQTtJQUNMLENBQUM7d0dBeE1RLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRmpCLE1BQU07OzRGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQW5hbHl0aWNFdmVudEtleSwgRmFjZWJvb2tQaXhlbERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuLyoqXHJcbiAqIEZ1bmNpb24gcXVlIHNlcmEgZGFkYSBwb3IgZWwgc2NyaXB0IHF1ZSBzZSBpbnNlcnRhIGVuIGVsIGluaWNpYWxpemFkb3IgZGUgRmFjZWJvb2sgQW5hbHl0aWNzLlxyXG4gKiBcclxuICogaHR0cHM6Ly9lcy1sYS5mYWNlYm9vay5jb20vYnVzaW5lc3MvaGVscC80MDI3OTExNDY1NjE2NTU/aWQ9MTIwNTM3NjY4MjgzMjE0MiBcclxuICogXHJcbiAqIFJlbGFjaW9uYWRvIGNvbjoge0BsaW5rIEZhY2Vib29rUGl4ZWxTZXJ2aWNlfVxyXG4gKi9cclxuZGVjbGFyZSBsZXQgZmJxOiBGdW5jdGlvbjtcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgZWwgQW5hbHl0aWNzIGRlIEZhY2Vib29rLlxyXG4gKiBAY2xhc3MgRmFjZWJvb2tQaXhlbFNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFjZWJvb2tQaXhlbFNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpXHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcclxuICAgICAqIHF1ZSBzZSBwdWVkYSBlamVjdXRhciBlbCBzZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpOyAvLyBTb2xvIHNlIGlueWVjdGEgZW4gZWwgbmF2ZWdhZG9yXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXHJcbiAgICAgKiBAcGFyYW0gcGl4ZWxfaWQgaWQgcHJvdmlzdG8gcG9yIEZhY2Vib29rIFBpeGVsLlxyXG4gICAgICovXHJcbiAgICBpbml0aWFsaXplKHBpeGVsX2lkOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKCdmYWNlYm9va19waXhlbCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdfYW5hbGl0eWNfc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC5pZCA9IFwiZmFjZWJvb2tfcGl4ZWxcIlxyXG4gICAgICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYCFmdW5jdGlvbihmLGIsZSx2LG4sdCxzKSB7aWYoZi5mYnEpcmV0dXJuO249Zi5mYnE9ZnVuY3Rpb24oKXtuLmNhbGxNZXRob2Q/IG4uY2FsbE1ldGhvZC5hcHBseShuLGFyZ3VtZW50cyk6bi5xdWV1ZS5wdXNoKGFyZ3VtZW50cyl9OyBpZighZi5fZmJxKWYuX2ZicT1uO24ucHVzaD1uO24ubG9hZGVkPSEwO24udmVyc2lvbj0nMi4wJzsgbi5xdWV1ZT1bXTt0PWIuY3JlYXRlRWxlbWVudChlKTt0LmFzeW5jPSEwOyB0LnNyYz12O3M9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHMpfSh3aW5kb3csIGRvY3VtZW50LCdzY3JpcHQnLCAnaHR0cHM6Ly9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9mYmV2ZW50cy5qcycpOyBmYnEoJ2luaXQnLCAke3BpeGVsX2lkfSk7YDtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5ib2R5LCBuZXdfYW5hbGl0eWNfc2NyaXB0KTtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNhbGxFdmVudCgnaW5pdGlhbGl6ZScpLCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgZXZlbnRvIHBhc2FkbyBwb3IgcGFyYW1ldHJvLiBcclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBldmVudCA9IHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpO1xyXG4gICAgICAgIGV2ZW50ICYmIGZicSgndHJhY2snLCB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKSwgdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFkdWNlIGVsIGV2ZW50byByZWNpYmlkbyB5IGRldnVlbHZlIGVsIG5vbWJyZSBkZSBsYSBmdW5jacOzbiBxdWUgbG8gdmEgYSB0cmF0YXIuXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICB0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICdpbml0aWFsaXplJzogcmV0dXJuICdQYWdlVmlldyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAnVmlld0NvbnRlbnQnO1xyXG4gICAgICAgICAgICBjYXNlICdjaGVja291dF9pbml0JzogcmV0dXJuICdJbml0aWF0ZUNoZWNrb3V0JztcclxuICAgICAgICAgICAgY2FzZSAncGF5bWVudF9pbmZvJzogcmV0dXJuICdBZGRQYXltZW50SW5mbyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3B1cmNoYXNlJzogcmV0dXJuICdQdXJjaGFzZSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuICdBZGRUb0NhcnQnO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2YWx1YSBlbCBldmVudG8geSBkZXZ1ZWx2ZSBsb3MgZGF0b3MgZGUgbGFzIGZ1bmNpb25lcyByZWxhY2lvbmFkYXMuXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50b1xyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZXZhbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGE6IGFueSkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICdpbml0aWFsaXplJzogcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0NvbnRlbnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAncGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFBhcmEgZWplY3V0YXIgdW4gZXZlbnRvIHByb3Bpby5cclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZSBldmVudG9cclxuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBjYWxsQ3VzdG9tRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YTogRmFjZWJvb2tQaXhlbERhdGEgPSB7fSkge1xyXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkKSByZXR1cm47XHJcbiAgICAgICAgZmJxKCd0cmFja0N1c3RvbScsIGV2ZW50X25hbWUsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3VhbmRvIHVuIGV2ZW50byBpbnRlcmFjdHVhIGNvbiBlbCBjb250ZW5pZG8gZGUgbGEgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdDb250ZW50KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBsYXN0UHJvZHVjdCA9IGRhdGE/Lm5hbWUgfHwgJ25vdC1wcm9kdWN0J1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogJ3Byb2R1Y3QnLFxyXG4gICAgICAgICAgICBjb250ZW50X25hbWU6IGxhc3RQcm9kdWN0LFxyXG4gICAgICAgICAgICBjb250ZW50X2lkczogW2RhdGEudmFyaWFudHNbMF0/LmNvZGVdLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGRhdGEudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgICAgICAvL3Byb2R1Y3RfY2F0YWxvZ19pZDogJ1RFU1QnXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aWVyZSBjb21wcmFyIHVuIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICAgICAgY29udGVudF90eXBlOiAncHJvZHVjdF9ncm91cCcsXHJcbiAgICAgICAgICAgIGNvbnRlbnRzOiB0aGlzLmdldENvbnRlbnRzKGRhdGEpLFxyXG4gICAgICAgICAgICAvL3Byb2R1Y3RfY2F0YWxvZ19pZDogJ1RFU1QnXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQ2hlY2tvdXRJbml0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8vY29udGVudF9jYXRlZ29yeSA6IFwiaW5pY2lvIGNoZWNrb3V0XCIsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogJ3Byb2R1Y3RfZ3JvdXAnLFxyXG4gICAgICAgICAgICBjb250ZW50czogdGhpcy5nZXRDb250ZW50cyhkYXRhKSxcclxuICAgICAgICAgICAgY29udGVudF9pZHM6IHRoaXMuZ2V0Q29udGVudElkcyhkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgbnVtX2l0ZW1zOiBkYXRhLml0ZW1zPy5sZW5ndGggfHwgMCxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBjb25zdWx0YSBsYSBpbmZvcm1hY2nDs24gZGUgcGFnby5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9QYXltZW50SW5mbyhkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAvL2NvbnRlbnRfY2F0ZWdvcnkgOiBcImluaWNpbyBjaGVja291dFwiLFxyXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6ICdwcm9kdWN0X2dyb3VwJyxcclxuICAgICAgICAgICAgY29udGVudHM6IHRoaXMuZ2V0Q29udGVudHMoZGF0YSksXHJcbiAgICAgICAgICAgIGNvbnRlbnRfaWRzOiB0aGlzLmdldENvbnRlbnRJZHMoZGF0YSksXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgYWdyZWdhIHVuIHByb2R1Y3RvIGFsIGNhcnJpdG8uIFxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b0FkZFRvQ2FydChkYXRhOiBhbnkpIHtcclxuICAgICAgICBsZXQgbGFzdFByb2R1Y3QgPSBkYXRhLml0ZW1zPy5sZW5ndGggJiYgZGF0YS5pdGVtc1tkYXRhLml0ZW1zLmxlbmd0aCAtIDFdPy5wcm9kdWN0Py5uYW1lIHx8ICdub3QtcHJvZHVjdCdcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb250ZW50X25hbWU6IGxhc3RQcm9kdWN0LFxyXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6ICdwcm9kdWN0JyxcclxuICAgICAgICAgICAgY29udGVudHM6IHRoaXMuZ2V0Q29udGVudHMoZGF0YSksXHJcbiAgICAgICAgICAgIGNvbnRlbnRfaWRzOiB0aGlzLmdldENvbnRlbnRJZHMoZGF0YSksXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICAgICAgLy9wcm9kdWN0X2NhdGFsb2dfaWQ6ICdURVNUJ1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE1hcGVvIGRlIGRhdG9zIHBhcmEgb2J0ZW5lciBzb2xvIGVsIElEIGRlbCBwcm9kdWN0byB5IGxhIGNhbnRpZGFkLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRDb250ZW50cyhkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gZGF0YS5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXBlbyBkZSBkYXRvcyBwYXJhIG9idGVuZXIgc29sbyBlbCBJRCBkZWwgcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENvbnRlbnRJZHMoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGEuaXRlbXMubWFwKFxyXG4gICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGVcclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuIl19
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZWJvb2stcGl4ZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9hbmFseXRpY3MvZmFjZWJvb2stcGl4ZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVU3Rjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRXJCLGVBQWUsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDNUQsUUFBUSxHQUFvQixJQUFJLENBQUM7SUFDekM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXpDO1FBQ0ksSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxRQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMs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QUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtnQkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQzFCLENBQUE7UUFDTCxDQUFDLENBQ0osQ0FBQTtJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLElBQVM7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDakIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FDaEQsQ0FBQTtJQUNMLENBQUM7d0dBdE1RLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRmpCLE1BQU07OzRGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQW5hbHl0aWNFdmVudEtleSwgRmFjZWJvb2tQaXhlbERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuLyoqXHJcbiAqIEZ1bmNpb24gcXVlIHNlcmEgZGFkYSBwb3IgZWwgc2NyaXB0IHF1ZSBzZSBpbnNlcnRhIGVuIGVsIGluaWNpYWxpemFkb3IgZGUgRmFjZWJvb2sgQW5hbHl0aWNzLlxyXG4gKiBcclxuICogaHR0cHM6Ly9lcy1sYS5mYWNlYm9vay5jb20vYnVzaW5lc3MvaGVscC80MDI3OTExNDY1NjE2NTU/aWQ9MTIwNTM3NjY4MjgzMjE0MiBcclxuICogXHJcbiAqIFJlbGFjaW9uYWRvIGNvbjoge0BsaW5rIEZhY2Vib29rUGl4ZWxTZXJ2aWNlfVxyXG4gKi9cclxuZGVjbGFyZSBsZXQgZmJxOiBGdW5jdGlvbjtcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgZWwgQW5hbHl0aWNzIGRlIEZhY2Vib29rLlxyXG4gKiBAY2xhc3MgRmFjZWJvb2tQaXhlbFNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFjZWJvb2tQaXhlbFNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpXHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcclxuICAgICAqIHF1ZSBzZSBwdWVkYSBlamVjdXRhciBlbCBzZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpOyAvLyBTb2xvIHNlIGlueWVjdGEgZW4gZWwgbmF2ZWdhZG9yXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXHJcbiAgICAgKiBAcGFyYW0gcGl4ZWxfaWQgaWQgcHJvdmlzdG8gcG9yIEZhY2Vib29rIFBpeGVsLlxyXG4gICAgICovXHJcbiAgICBpbml0aWFsaXplKHBpeGVsX2lkOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKCdmYWNlYm9va19waXhlbCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdfYW5hbGl0eWNfc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC5pZCA9IFwiZmFjZWJvb2tfcGl4ZWxcIlxyXG4gICAgICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYCFmdW5jdGlvbihmLGIsZSx2LG4sdCxzKSB7aWYoZi5mYnEpcmV0dXJuO249Zi5mYnE9ZnVuY3Rpb24oKXtuLmNhbGxNZXRob2Q/IG4uY2FsbE1ldGhvZC5hcHBseShuLGFyZ3VtZW50cyk6bi5xdWV1ZS5wdXNoKGFyZ3VtZW50cyl9OyBpZighZi5fZmJxKWYuX2ZicT1uO24ucHVzaD1uO24ubG9hZGVkPSEwO24udmVyc2lvbj0nMi4wJzsgbi5xdWV1ZT1bXTt0PWIuY3JlYXRlRWxlbWVudChlKTt0LmFzeW5jPSEwOyB0LnNyYz12O3M9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHMpfSh3aW5kb3csIGRvY3VtZW50LCdzY3JpcHQnLCAnaHR0cHM6Ly9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9mYmV2ZW50cy5qcycpOyBmYnEoJ2luaXQnLCAke3BpeGVsX2lkfSk7YDtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5ib2R5LCBuZXdfYW5hbGl0eWNfc2NyaXB0KTtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNhbGxFdmVudCgnaW5pdGlhbGl6ZScpLCAxMDAwKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRWplY3V0YSBlbCBldmVudG8gcGFzYWRvIHBvciBwYXJhbWV0cm8uIFxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBEYXRhIGV4dHJhIHBhcmEgYWdyZWdhciBhbCBldmVudG8uXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgY2FsbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGEgPSB7fSkge1xyXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkKSByZXR1cm47XHJcbiAgICAgICAgbGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcbiAgICAgICAgZXZlbnQgJiYgZmJxKCd0cmFjaycsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5KSB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxpemUnOiByZXR1cm4gJ1BhZ2VWaWV3JztcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuICdWaWV3Q29udGVudCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ0luaXRpYXRlQ2hlY2tvdXQnO1xyXG4gICAgICAgICAgICBjYXNlICdwYXltZW50X2luZm8nOiByZXR1cm4gJ0FkZFBheW1lbnRJbmZvJztcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ1B1cmNoYXNlJztcclxuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gJ0FkZFRvQ2FydCc7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZhbHVhIGVsIGV2ZW50byB5IGRldnVlbHZlIGxvcyBkYXRvcyBkZSBsYXMgZnVuY2lvbmVzIHJlbGFjaW9uYWRhcy5cclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBEYXRhIGV4dHJhIHBhcmEgYWdyZWdhciBhbCBldmVudG9cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBldmFsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxpemUnOiByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuIHRoaXMudG9WaWV3Q29udGVudChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiB0aGlzLnRvQ2hlY2tvdXRJbml0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdwYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdwdXJjaGFzZSc6IHJldHVybiB0aGlzLnRvUHVyY2hhc2UoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuIHRoaXMudG9BZGRUb0NhcnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogUGFyYSBlamVjdXRhciB1biBldmVudG8gcHJvcGlvLlxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlIGV2ZW50b1xyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhbGxDdXN0b21FdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBGYWNlYm9va1BpeGVsRGF0YSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHJldHVybjtcclxuICAgICAgICBmYnEoJ3RyYWNrQ3VzdG9tJywgZXZlbnRfbmFtZSwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENhbWJpYSBsYSB2YXJpYWJsZSAqKmVuYWJsZWQqKiBhIGBmYWxzZWBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBkaXNhYmxlKCkgeyB0aGlzLmVuYWJsZWQgPSBmYWxzZSB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDdWFuZG8gdW4gZXZlbnRvIGludGVyYWN0dWEgY29uIGVsIGNvbnRlbmlkbyBkZSBsYSB2aXN0YSBkZWwgcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvVmlld0NvbnRlbnQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgbGV0IGxhc3RQcm9kdWN0ID0gZGF0YT8ubmFtZSB8fCAnbm90LXByb2R1Y3QnXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY29udGVudF90eXBlOiAncHJvZHVjdCcsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfbmFtZTogbGFzdFByb2R1Y3QsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfaWRzOiBbZGF0YS52YXJpYW50c1swXT8uY29kZV0sXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgZGF0YS52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgIC8vcHJvZHVjdF9jYXRhbG9nX2lkOiAnVEVTVCdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6ICdwcm9kdWN0X2dyb3VwJyxcclxuICAgICAgICAgICAgY29udGVudHM6IHRoaXMuZ2V0Q29udGVudHMoZGF0YSksXHJcbiAgICAgICAgICAgIC8vcHJvZHVjdF9jYXRhbG9nX2lkOiAnVEVTVCdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW5pY2lhbGl6YSBlbiBjaGVja291dC5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DaGVja291dEluaXQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy9jb250ZW50X2NhdGVnb3J5IDogXCJpbmljaW8gY2hlY2tvdXRcIixcclxuICAgICAgICAgICAgY29udGVudF90eXBlOiAncHJvZHVjdF9ncm91cCcsXHJcbiAgICAgICAgICAgIGNvbnRlbnRzOiB0aGlzLmdldENvbnRlbnRzKGRhdGEpLFxyXG4gICAgICAgICAgICBjb250ZW50X2lkczogdGhpcy5nZXRDb250ZW50SWRzKGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBudW1faXRlbXM6IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGNvbnN1bHRhIGxhIGluZm9ybWFjacOzbiBkZSBwYWdvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8vY29udGVudF9jYXRlZ29yeSA6IFwiaW5pY2lvIGNoZWNrb3V0XCIsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogJ3Byb2R1Y3RfZ3JvdXAnLFxyXG4gICAgICAgICAgICBjb250ZW50czogdGhpcy5nZXRDb250ZW50cyhkYXRhKSxcclxuICAgICAgICAgICAgY29udGVudF9pZHM6IHRoaXMuZ2V0Q29udGVudElkcyhkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBhZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0by4gXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBsYXN0UHJvZHVjdCA9IGRhdGEuaXRlbXM/Lmxlbmd0aCAmJiBkYXRhLml0ZW1zW2RhdGEuaXRlbXMubGVuZ3RoIC0gMV0/LnByb2R1Y3Q/Lm5hbWUgfHwgJ25vdC1wcm9kdWN0J1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRfbmFtZTogbGFzdFByb2R1Y3QsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogJ3Byb2R1Y3QnLFxyXG4gICAgICAgICAgICBjb250ZW50czogdGhpcy5nZXRDb250ZW50cyhkYXRhKSxcclxuICAgICAgICAgICAgY29udGVudF9pZHM6IHRoaXMuZ2V0Q29udGVudElkcyhkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICAvL3Byb2R1Y3RfY2F0YWxvZ19pZDogJ1RFU1QnXHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogTWFwZW8gZGUgZGF0b3MgcGFyYSBvYnRlbmVyIHNvbG8gZWwgSUQgZGVsIHByb2R1Y3RvIHkgbGEgY2FudGlkYWQuXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENvbnRlbnRzKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBkYXRhLml0ZW1zLm1hcChcclxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE1hcGVvIGRlIGRhdG9zIHBhcmEgb2J0ZW5lciBzb2xvIGVsIElEIGRlbCBwcm9kdWN0by5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q29udGVudElkcyhkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gZGF0YS5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZVxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -47,9 +47,7 @@ export class GoogleAnalyticsService {
47
47
  this.renderer.appendChild(this.document?.head, declaration);
48
48
  this.enabled = true;
49
49
  }
50
- if (isPlatformBrowser(this.platformId)) {
51
- setTimeout(() => this.startListeningPageViews(gtm_id), 1000);
52
- }
50
+ setTimeout(() => this.startListeningPageViews(gtm_id), 1000);
53
51
  }
54
52
  /**
55
53
  *
@@ -282,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
282
280
  providedIn: 'root'
283
281
  }]
284
282
  }], ctorParameters: () => [] });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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TztZQUNOLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1NBQzlCLENBQUE7SUFDRixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDekIsT0FBTztZQUNOLEdBQUcsSUFBSTtTQUNQLENBQUE7SUFDRixDQUFDO3dHQS9RVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBGdW5jaW9uIHF1ZSBzZXJhIGRhZGEgcG9yIGVsIHNjcmlwdCBxdWUgc2UgaW5zZXJ0YSBlbiBlbCBpbmljaWFsaXphZG9yIGRlIEdvb2dsZSBBbmFseXRpY3MuXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBndGFnOiBGdW5jdGlvbjtcclxuZGVjbGFyZSB2YXIgZGF0YUxheWVyOiBhbnlbXTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgZ29vZ2xlLlxyXG4gKiBAY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB7XHJcblx0LyoqXHJcblx0ICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcblx0ICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHQvKipcclxuXHQgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuXHQgKi9cclxuXHRwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTsgLy8gU29sbyBzZSBpbnllY3RhIGVuIGVsIG5hdmVnYWRvclxyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuXHQgKiBAcGFyYW0gZ3RtX2lkIGlkIHByb3Zpc3RvIHBvciBHb29nbGUgVGFnIE1hbmFnZXIuXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZShndG1faWQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlX3RhZ19tYW5hZ2VyJykpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2hheSBlbGVtZW50bycpXHJcblx0XHRcdGNvbnN0IGRlY2xhcmF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHRcdFx0ZGVjbGFyYXRpb24uYXN5bmMgPSB0cnVlO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5pZCA9ICdnb29nbGVfdGFnX21hbmFnZXInO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5zcmMgPSBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2d0bV9pZH1gO1xyXG5cdFx0XHRjb25zdCBpbml0aWFsaXphdGlvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblx0XHRcdGluaXRpYWxpemF0aW9uLnRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107IGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30gZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJyR7Z3RtX2lkfScpYDtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5oZWFkLCBpbml0aWFsaXphdGlvbik7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uaGVhZCwgZGVjbGFyYXRpb24pO1xyXG5cdFx0XHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZCksIDEwMDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZ3RtX2lkIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdQYWdlVmlld3MoZ3RtX2lkOiBhbnkpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG5cdFx0XHRmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG5cdFx0KS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcblx0XHRcdGd0YWcoJ2NvbmZpZycsIGd0bV9pZCwge1xyXG5cdFx0XHRcdCdwYWdlX3BhdGgnOiBldmVudC51cmxBZnRlclJlZGlyZWN0c1xyXG5cdFx0XHR9KVxyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBldmVudG8gcGFzYWRvIHBvciBwYXJhbWV0cm8uIFxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XHJcblx0XHRpZiAoIXRoaXMuZW5hYmxlZCkgcmV0dXJuO1xyXG5cdFx0bGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcblx0XHRldmVudCAmJiBndGFnKCdldmVudCcsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cclxuXHQgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAndmlld19pdGVtJztcclxuXHRcdFx0Y2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcclxuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiAnYmVnaW5fY2hlY2tvdXQnO1xyXG5cdFx0XHRjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuICdhZGRfc2hpcHBpbmdfaW5mbyc7XHJcblx0XHRcdGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xyXG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiAncHVyY2hhc2UnO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiAnYWRkX3RvX2NhcnQnO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcclxuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiAnc2lnbl91cCc7XHJcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG5cdFx0XHQvL2RlZmF1bHQ6IHJldHVybiBldmVudF9uYW1lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcblx0ICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZXZhbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGE6IGFueSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbUxpc3QoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuXHRcdFx0Y2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuIHRoaXMudG9SZW1vdmVUb0NhcnQoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcclxuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRhdGE7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuXHRcdFx0c2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG5cdFx0XHR0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcblx0XHRcdHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcclxuXHRcdGxldCBzdHJEaXNjb3VudCA9ICcnXHJcblx0XHRzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG5cdFx0cmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG5cdFx0bGV0IGxhc3RQcm9kdWN0ID0gZGF0YS5pdGVtcz8ubGVuZ3RoICYmIGRhdGEuaXRlbXNbZGF0YS5pdGVtcy5sZW5ndGggLSAxXVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXHJcblx0XHRcdHZhbHVlOiBsYXN0UHJvZHVjdC50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHByb2R1Y3QpXSxcclxuXHRcdFx0dmFsdWU6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvVmlld0l0ZW1MaXN0KGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aXRlbXM6IGRhdGEucHJvZHVjdHMubWFwKChwcm9kdWN0OiBhbnkpID0+IHRoaXMudG9JdGVtKHByb2R1Y3QpKSxcclxuXHRcdFx0aXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxyXG5cdFx0XHRpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8ICdjb2xsZWN0aW9uJ1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcclxuXHRcdGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSwgLi4ucHJvZHVjdFBhcmFtIH0pXSxcclxuXHRcdFx0dmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuXHRcdGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG5cdFx0aXRlbV9pZDogcHJvZHVjdC5pZCxcclxuXHRcdGl0ZW1fYnJhbmQ6IHByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gcHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuXHRcdGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRwcmljZTogcHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG5cdFx0cXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHR9KVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxyXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXHJcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcclxuXHRcdFx0fSkpLFxyXG5cdFx0XHRwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0c2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB0b1NpZ25VcChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdC4uLmRhdGFcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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SUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1NBQzlCLENBQUE7SUFDRixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDekIsT0FBTztZQUNOLEdBQUcsSUFBSTtTQUNQLENBQUE7SUFDRixDQUFDO3dHQTdRVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBGdW5jaW9uIHF1ZSBzZXJhIGRhZGEgcG9yIGVsIHNjcmlwdCBxdWUgc2UgaW5zZXJ0YSBlbiBlbCBpbmljaWFsaXphZG9yIGRlIEdvb2dsZSBBbmFseXRpY3MuXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBndGFnOiBGdW5jdGlvbjtcclxuZGVjbGFyZSB2YXIgZGF0YUxheWVyOiBhbnlbXTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgZ29vZ2xlLlxyXG4gKiBAY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB7XHJcblx0LyoqXHJcblx0ICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcblx0ICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHQvKipcclxuXHQgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuXHQgKi9cclxuXHRwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTsgLy8gU29sbyBzZSBpbnllY3RhIGVuIGVsIG5hdmVnYWRvclxyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuXHQgKiBAcGFyYW0gZ3RtX2lkIGlkIHByb3Zpc3RvIHBvciBHb29nbGUgVGFnIE1hbmFnZXIuXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZShndG1faWQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlX3RhZ19tYW5hZ2VyJykpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2hheSBlbGVtZW50bycpXHJcblx0XHRcdGNvbnN0IGRlY2xhcmF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHRcdFx0ZGVjbGFyYXRpb24uYXN5bmMgPSB0cnVlO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5pZCA9ICdnb29nbGVfdGFnX21hbmFnZXInO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5zcmMgPSBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2d0bV9pZH1gO1xyXG5cdFx0XHRjb25zdCBpbml0aWFsaXphdGlvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblx0XHRcdGluaXRpYWxpemF0aW9uLnRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107IGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30gZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJyR7Z3RtX2lkfScpYDtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5oZWFkLCBpbml0aWFsaXphdGlvbik7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uaGVhZCwgZGVjbGFyYXRpb24pO1xyXG5cdFx0XHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZCksIDEwMDApO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZ3RtX2lkIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdQYWdlVmlld3MoZ3RtX2lkOiBhbnkpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG5cdFx0XHRmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG5cdFx0KS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcblx0XHRcdGd0YWcoJ2NvbmZpZycsIGd0bV9pZCwge1xyXG5cdFx0XHRcdCdwYWdlX3BhdGgnOiBldmVudC51cmxBZnRlclJlZGlyZWN0c1xyXG5cdFx0XHR9KVxyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBldmVudG8gcGFzYWRvIHBvciBwYXJhbWV0cm8uIFxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XHJcblx0XHRpZiAoIXRoaXMuZW5hYmxlZCkgcmV0dXJuO1xyXG5cdFx0bGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcblx0XHRldmVudCAmJiBndGFnKCdldmVudCcsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cclxuXHQgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAndmlld19pdGVtJztcclxuXHRcdFx0Y2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcclxuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiAnYmVnaW5fY2hlY2tvdXQnO1xyXG5cdFx0XHRjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuICdhZGRfc2hpcHBpbmdfaW5mbyc7XHJcblx0XHRcdGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xyXG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiAncHVyY2hhc2UnO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiAnYWRkX3RvX2NhcnQnO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcclxuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiAnc2lnbl91cCc7XHJcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG5cdFx0XHQvL2RlZmF1bHQ6IHJldHVybiBldmVudF9uYW1lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcblx0ICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZXZhbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGE6IGFueSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbUxpc3QoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuXHRcdFx0Y2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuIHRoaXMudG9SZW1vdmVUb0NhcnQoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcclxuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRhdGE7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuXHRcdFx0c2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG5cdFx0XHR0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcblx0XHRcdHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcclxuXHRcdGxldCBzdHJEaXNjb3VudCA9ICcnXHJcblx0XHRzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG5cdFx0cmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG5cdFx0bGV0IGxhc3RQcm9kdWN0ID0gZGF0YS5pdGVtcz8ubGVuZ3RoICYmIGRhdGEuaXRlbXNbZGF0YS5pdGVtcy5sZW5ndGggLSAxXVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXHJcblx0XHRcdHZhbHVlOiBsYXN0UHJvZHVjdC50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHByb2R1Y3QpXSxcclxuXHRcdFx0dmFsdWU6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvVmlld0l0ZW1MaXN0KGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aXRlbXM6IGRhdGEucHJvZHVjdHMubWFwKChwcm9kdWN0OiBhbnkpID0+IHRoaXMudG9JdGVtKHByb2R1Y3QpKSxcclxuXHRcdFx0aXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxyXG5cdFx0XHRpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8ICdjb2xsZWN0aW9uJ1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcclxuXHRcdGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSwgLi4ucHJvZHVjdFBhcmFtIH0pXSxcclxuXHRcdFx0dmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuXHRcdGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG5cdFx0aXRlbV9pZDogcHJvZHVjdC5pZCxcclxuXHRcdGl0ZW1fYnJhbmQ6IHByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gcHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuXHRcdGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRwcmljZTogcHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG5cdFx0cXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHR9KVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxyXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXHJcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcclxuXHRcdFx0fSkpLFxyXG5cdFx0XHRwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0c2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB0b1NpZ25VcChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdC4uLmRhdGFcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19