@po-ui/ng-components 17.26.6 → 17.26.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +19 -2
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +89 -44
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.module.mjs +25 -4
- package/esm2022/lib/components/po-field/po-input/po-mask.mjs +4 -4
- package/esm2022/lib/utils/util.mjs +8 -2
- package/fesm2022/po-ui-ng-components.mjs +142 -55
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +16 -1
- package/lib/components/po-field/po-datepicker/po-datepicker.module.d.ts +5 -4
- package/lib/utils/util.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-17.26.7.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.26.6.tgz +0 -0
|
@@ -333,6 +333,20 @@ export class PoDatepickerBaseComponent {
|
|
|
333
333
|
get locale() {
|
|
334
334
|
return this._locale || this.shortLanguage;
|
|
335
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* @optional
|
|
338
|
+
*
|
|
339
|
+
* @description
|
|
340
|
+
*
|
|
341
|
+
* Define que o calendário do DatePicker será incluído no body da página, em vez de suspenso junto ao campo de entrada do componente.
|
|
342
|
+
* Essa opção é útil em cenários onde o DatePicker precisa ser renderizado fora do conteúdo principal da página,
|
|
343
|
+
* como em formulários que utilizam scroll ou containers com overflow escondido.
|
|
344
|
+
*
|
|
345
|
+
* > Obs: O uso dessa propriedade pode interferir na sequência de tabulação da página, especialmente em formulários longos.
|
|
346
|
+
*
|
|
347
|
+
* @default `false`
|
|
348
|
+
*/
|
|
349
|
+
appendBox = false;
|
|
336
350
|
constructor(languageService) {
|
|
337
351
|
this.languageService = languageService;
|
|
338
352
|
}
|
|
@@ -457,7 +471,7 @@ export class PoDatepickerBaseComponent {
|
|
|
457
471
|
this.hour = 'T00:00:00' + timezone;
|
|
458
472
|
}
|
|
459
473
|
static ɵfac = function PoDatepickerBaseComponent_Factory(t) { return new (t || PoDatepickerBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
|
|
460
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDatepickerBaseComponent, inputs: { autoFocus: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-focus", "autoFocus", convertToBoolean], name: "name", optional: [i0.ɵɵInputFlags.None, "p-optional", "optional"], errorPattern: [i0.ɵɵInputFlags.None, "p-error-pattern", "errorPattern"], noAutocomplete: [i0.ɵɵInputFlags.None, "p-no-autocomplete", "noAutocomplete"], placeholder: [i0.ɵɵInputFlags.None, "p-placeholder", "placeholder"], setDisabled: [i0.ɵɵInputFlags.None, "p-disabled", "setDisabled"], setReadonly: [i0.ɵɵInputFlags.None, "p-readonly", "setReadonly"], setRequired: [i0.ɵɵInputFlags.None, "p-required", "setRequired"], showRequired: [i0.ɵɵInputFlags.None, "p-show-required", "showRequired"], setClean: [i0.ɵɵInputFlags.None, "p-clean", "setClean"], minDate: [i0.ɵɵInputFlags.None, "p-min-date", "minDate"], maxDate: [i0.ɵɵInputFlags.None, "p-max-date", "maxDate"], format: [i0.ɵɵInputFlags.None, "p-format", "format"], isoFormat: [i0.ɵɵInputFlags.None, "p-iso-format", "isoFormat"], locale: [i0.ɵɵInputFlags.None, "p-locale", "locale"] }, outputs: { onblur: "p-blur", onchange: "p-change" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
474
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDatepickerBaseComponent, inputs: { autoFocus: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-focus", "autoFocus", convertToBoolean], name: "name", optional: [i0.ɵɵInputFlags.None, "p-optional", "optional"], errorPattern: [i0.ɵɵInputFlags.None, "p-error-pattern", "errorPattern"], noAutocomplete: [i0.ɵɵInputFlags.None, "p-no-autocomplete", "noAutocomplete"], placeholder: [i0.ɵɵInputFlags.None, "p-placeholder", "placeholder"], setDisabled: [i0.ɵɵInputFlags.None, "p-disabled", "setDisabled"], setReadonly: [i0.ɵɵInputFlags.None, "p-readonly", "setReadonly"], setRequired: [i0.ɵɵInputFlags.None, "p-required", "setRequired"], showRequired: [i0.ɵɵInputFlags.None, "p-show-required", "showRequired"], setClean: [i0.ɵɵInputFlags.None, "p-clean", "setClean"], minDate: [i0.ɵɵInputFlags.None, "p-min-date", "minDate"], maxDate: [i0.ɵɵInputFlags.None, "p-max-date", "maxDate"], format: [i0.ɵɵInputFlags.None, "p-format", "format"], isoFormat: [i0.ɵɵInputFlags.None, "p-iso-format", "isoFormat"], locale: [i0.ɵɵInputFlags.None, "p-locale", "locale"], appendBox: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-append-in-body", "appendBox", convertToBoolean] }, outputs: { onblur: "p-blur", onchange: "p-change" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
461
475
|
}
|
|
462
476
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDatepickerBaseComponent, [{
|
|
463
477
|
type: Directive
|
|
@@ -515,5 +529,8 @@ export class PoDatepickerBaseComponent {
|
|
|
515
529
|
}], locale: [{
|
|
516
530
|
type: Input,
|
|
517
531
|
args: ['p-locale']
|
|
532
|
+
}], appendBox: [{
|
|
533
|
+
type: Input,
|
|
534
|
+
args: [{ alias: 'p-append-in-body', transform: convertToBoolean }]
|
|
518
535
|
}] }); })();
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQUU5RSxNQUFNLHlCQUF5QixHQUFXLFlBQVksQ0FBQztBQUV2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNFRztBQUVILE1BQU0sT0FBZ0IseUJBQXlCO0lBcVN2QjtJQXBTdEI7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGLG9DQUFvQztJQUNyQixJQUFJLENBQVM7SUFFNUI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ2tCLFFBQVEsQ0FBVTtJQUV2Qzs7OztPQUlHO0lBQ3VCLFlBQVksR0FB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a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQWlDSSxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUErQlUsU0FBUztrQkFBbkMsS0FBSzttQkFBQyxjQUFjO1lBc0JFLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydERhdGVUb0lTT0RhdGUsXG4gIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCxcbiAgY29udmVydElzb1RvRGF0ZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgZm9ybWF0WWVhcixcbiAgaXNUeXBlb2YsXG4gIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB2YWxpZGF0ZURhdGVSYW5nZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTWFzayB9IGZyb20gJy4uL3BvLWlucHV0L3BvLW1hc2snO1xuaW1wb3J0IHsgZGF0ZUZhaWxlZCwgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VySXNvRm9ybWF0IH0gZnJvbSAnLi9lbnVtcy9wby1kYXRlcGlja2VyLWlzby1mb3JtYXQuZW51bSc7XG5cbmNvbnN0IHBvRGF0ZXBpY2tlckZvcm1hdERlZmF1bHQ6IHN0cmluZyA9ICdkZC9tbS95eXl5JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1kYXRlcGlja2VyYCDDqSB1bSBjb21wb25lbnRlIGVzcGVjw61maWNvIHBhcmEgbWFuaXB1bGHDp8OjbyBkZSBkYXRhcyBwZXJtaXRpbmRvIGEgZGlnaXRhw6fDo28gZSAvIG91IHNlbGXDp8Ojby5cbiAqXG4gKiBPIGZvcm1hdG8gZGUgZXhpYmnDp8OjbyBkYSBkYXRhLCBvdSBzZWphLCBvIGZvcm1hdG8gcXVlIMOpIGFwcmVzZW50YWRvIGFvIHVzdcOhcmlvIMOpIG8gZGQvbW0veXl5eSxcbiAqIG1hcyBwb2RlbSBzZXIgZGVmaW5pZG9zIG91dHJvcyBwYWRyw7VlcyAodmVqYSBtYWlzIG5hIHByb3ByaWVkYWRlIGBwLWZvcm1hdGApLlxuICpcbiAqIE8gaWRpb21hIHBhZHLDo28gZG8gY2FsZW5kw6FyaW8gc2Vyw6EgZXhpYmlkbyBkZSBhY29yZG8gY29tIG8gbmF2ZWdhZG9yLCBjYXNvIHRlbmhhIG5lY2Vzc2lkYWRlIGRlIGFsdGVyYXJcbiAqIHVzZSBhIHByb3ByaWVkYWRlIGBwLWxvY2FsZWAuXG4gKlxuICogTyBkYXRlcGlja2VyIGFjZWl0YSB0csOqcyBmb3JtYXRvcyBkZSBkYXRhOiBvIEU4NjAxRFp3ICh5eXl5LW1tLWRkVGhoOm1tOnNzK3wtaGg6bW0pLCBvIEU4NjAxREF3ICh5eXl5LW1tLWRkKSBlIG9cbiAqIERhdGUgcGFkcsOjbyBkbyBKYXZhc2NyaXB0LlxuICpcbiAqID4gUG9yIHBhZHLDo28sIG8gZm9ybWF0byBkZSBzYcOtZGEgZG8gKm1vZGVsKiBzZSBhanVzdGFyw6EgY29uZm9ybWUgbyBmb3JtYXRvIGRlIGVudHJhZGEuIFNlIHBvciBhY2FzbyBwcmVjaXNhciBjb250cm9sYXIgbyB2YWxvciBkZSBzYcOtZGEsXG4gKiBhIHByb3ByaWVkYWRlIGBwLWlzby1mb3JtYXRgIHByb3bDqiBlc3NlIGNvbnRyb2xlIGluZGVwZW5kZW50ZW1lbnRlIGRvIGZvcm1hdG8gZGUgZW50cmFkYS4gVmVqYSBhYmFpeG8gb3MgZm9ybWF0b3MgZGlzcG9uw612ZWlzOlxuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIGUgc2HDrWRhIChFODYwMURadykgLSBgJzIwMTctMTEtMjhUMDA6MDA6MDAtMDI6MDAnYDtcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSBlIHNhw61kYSAoRTg2MDFEQXcpIC0gYCcyMDE3LTExLTI4J2A7XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgKERhdGUpIC0gYG5ldyBEYXRlKDIwMTcsIDEwLCAyOClgIGUgc2HDrWRhIChFODYwMURBdykgLSBgJzIwMTctMTEtMjgnYDtcbiAqXG4gKiAqKkltcG9ydGFudGU6KipcbiAqXG4gKiAtIFBhcmEgdXRpbGl6YXIgZGF0YXMgY29tIGFubyBpbmZlcmlvciBhIDEwMCwgdmVyaWZpY2FyIG8gY29tcG9ydGFtZW50byBkbyBbYG5ldyBEYXRlYF0oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qcy9qc19kYXRlcy5hc3ApXG4gKiBlIHV0aWxpemFyIG8gbcOpdG9kbyBbYHNldEZ1bGxZZWFyYF0oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9qc3JlZl9zZXRmdWxseWVhci5hc3ApLlxuICogLSBDYXNvIGEgZGF0YSBlc3RlamEgaW52w6FsaWRhLCBvIGBtb2RlbGAgcmVjZWJlcsOhICoqJ0RhdGEgaW52w6FsaWRhJyoqLlxuICogLSBDYXNvIG8gYGlucHV0YCBlc3RlamEgcGFzc2FuZG8gdW0gYFsobmdNb2RlbCldYCwgbWFzIG7Do28gdGVuaGEgdW0gYG5hbWVgLCBlbnTDo28gaXLDoSBvY29ycmVyIHVtIGVycm9cbiAqIGRvIHByw7NwcmlvIEFuZ3VsYXIgKGBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJgKS5cbiAqXG4gKiBFeGVtcGxvOlxuICpcbiAqIGBgYFxuICogPHBvLWRhdGVwaWNrZXJcbiAqICAgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVwiXG4gKiAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICogPC9wby1kYXRlcGlja2VyPlxuICogYGBgXG4gKlxuICogPiBOw6NvIGVzcXVlw6dhIGRlIGltcG9ydGFyIG8gYEZvcm1zTW9kdWxlYCBlbSBzZXUgbcOzZHVsbywgdGFsIGNvbW8gcGFyYSB1dGlsaXphciBvIGBpbnB1dCBkZWZhdWx0YC5cbiAqXG4gKiAjIyMjIFRva2VucyBjdXN0b21pesOhdmVpc1xuICpcbiAqIMOJIHBvc3PDrXZlbCBhbHRlcmFyIG8gZXN0aWxvIGRvIGNvbXBvbmVudGUgdXNhbmRvIG9zIHNlZ3VpbnRlcyB0b2tlbnMgKENTUyk6IDxicj5cbiAqIE9iczogU8OzIMOpIHBvc3PDrXZlbCByZWFsaXphciBhbHRlcmHDp8O1ZXMgYW8gYWRpY2lvbmFyIGEgY2xhc3NlIGAucG8taW5wdXRgXG4gKlxuICogPiBQYXJhIG1haW9yZXMgaW5mb3JtYcOnw7VlcywgYWNlc3NlIG8gZ3VpYSBbUGVyc29uYWxpemFuZG8gbyBUZW1hIFBhZHLDo28gY29tIFRva2VucyBDU1NdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL3RoZW1lLWN1c3RvbWl6YXRpb24pLlxuICpcbiAqIHwgUHJvcHJpZWRhZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmnDp8OjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsb3IgUGFkcsOjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1zaXplYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXNpemUtZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3ItcGxhY2Vob2xkZXJgICZuYnNwOyAgICAgIHwgQ29yIHByaW5jaXBhbCBkbyB0ZXh0byBkbyBwbGFjZWhvbGRlciAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgZG8gZGF0ZXBpY2tlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZGAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTA1KWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXBhZGRpbmdgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJlZW5jaGltZW50byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMCAwLjVyZW1gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay05MClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWhvdmVyYCAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtZGFyaylgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWhvdmVyYCAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWxpZ2h0ZXN0KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipEaXNhYmxlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWRpc2FibGVkYCAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBkaXNhYmxlZCAmbmJzcDsgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMjApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvci1kaXNhYmxlZGAgICAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstNzApYCAgICAgICAgICAgICAgICAgICB8XG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0RhdGVwaWNrZXJCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogTm9tZSBkbyBjb21wb25lbnRlIGRhdGVwaWNrZXIuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBxdWFuZG8gYSBkYXRhIGZvciBpbnbDoWxpZGEgb3UgZm9yYSBkbyBwZXLDrW9kby5cbiAgICpcbiAgICogPiBFc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIG9icmlnYXTDs3Jpby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1wYXR0ZXJuJykgZXJyb3JQYXR0ZXJuPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBzYWlyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1ibHVyJykgb25ibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBkbyBjYW1wby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgb2Zmc2V0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBmaXJzdFN0YXJ0ID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIGhvdXI6IHN0cmluZyA9ICdUMDA6MDA6MDAtMDA6MDAnO1xuICBwcm90ZWN0ZWQgaXNFeHRlbmRlZElTTzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgb2JqTWFzazogYW55O1xuICBwcm90ZWN0ZWQgb25DaGFuZ2VNb2RlbDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHZhbGlkYXRvckNoYW5nZTogYW55O1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkTW9kZWw6IGFueSA9IG51bGw7XG4gIHByb3RlY3RlZCBzaG9ydExhbmd1YWdlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZm9ybWF0Pzogc3RyaW5nID0gcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDtcbiAgcHJpdmF0ZSBfaXNvRm9ybWF0OiBQb0RhdGVwaWNrZXJJc29Gb3JtYXQ7XG4gIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGU7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcj86IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHByZXZpb3VzVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfZGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby5cbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBpc1R5cGVvZihwbGFjZWhvbGRlciwgJ3N0cmluZycpID8gcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKiogRGVzYWJpbGl0YSBvIGNhbXBvLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IHNldERpc2FibGVkKGRpc2FibGVkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgLyoqIFRvcm5hIG8gZWxlbWVudG8gc29tZW50ZSBsZWl0dXJhLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHNldFJlYWRvbmx5KHJlYWRvbmx5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCBzZXRSZXF1aXJlZChyZXF1aXJlZDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbChjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvYnJpZ2F0w7NyaW8gc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvdy1yZXF1aXJlZCcpIHNob3dSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBIYWJpbGl0YSBhw6fDo28gcGFyYSBsaW1wYXIgbyBjYW1wby4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgY2xlYW4/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1jbGVhbicpIHNldCBzZXRDbGVhbihjbGVhbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jbGVhbiA9IGNsZWFuID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGNsZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgZGF0YSBtw61uaW1hIHBhcmEgbyBgcG8tZGF0ZXBpY2tlcmAuXG4gICAqL1xuICBASW5wdXQoJ3AtbWluLWRhdGUnKSBzZXQgbWluRGF0ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpLCAwLCAwLCAwKTtcbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICB0aGlzLl9taW5EYXRlID0gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWluRGF0ZSA9IGNvbnZlcnRJc29Ub0RhdGUodmFsdWUsIHRydWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgZGF0YSBtw6F4aW1hIHBhcmEgbyBgcG8tZGF0ZXBpY2tlcmAuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4LWRhdGUnKSBzZXQgbWF4RGF0ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpLCAyMywgNTksIDU5KTtcbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICB0aGlzLl9tYXhEYXRlID0gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGNvbnZlcnRJc29Ub0RhdGUodmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZvcm1hdG8gZGUgZXhpYmnDp8OjbyBkYSBkYXRhLlxuICAgKlxuICAgKiBWYWxvcmVzIHbDoWxpZG9zOlxuICAgKiAgLSBgZGQvbW0veXl5eWBcbiAgICogIC0gYG1tL2RkL3l5eXlgXG4gICAqICAtIGB5eXl5L21tL2RkYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgZGQvbW0veXl5eWBcbiAgICovXG4gIEBJbnB1dCgncC1mb3JtYXQnKSBzZXQgZm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh2YWx1ZS5tYXRjaCgvZGQvKSAmJiB2YWx1ZS5tYXRjaCgvbW0vKSAmJiB2YWx1ZS5tYXRjaCgveXl5eS8pKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVmFsdWUodGhpcy5kYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9mb3JtYXQgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKFxuICAgICAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcih0aGlzLmZvcm1hdCwgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0RGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBmb3JtYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBhZHLDo28gZGUgZm9ybWF0YcOnw6NvIHBhcmEgc2HDrWRhIGRvICptb2RlbCosIGluZGVwZW5kZW50ZW1lbnRlIGRvIGZvcm1hdG8gZGUgZW50cmFkYS5cbiAgICpcbiAgICogPiBWZWphIG9zIHZhbG9yZXMgdsOhbGlkb3Mgbm8gKmVudW0qIGBQb0RhdGVwaWNrZXJJc29Gb3JtYXRgLlxuICAgKi9cbiAgQElucHV0KCdwLWlzby1mb3JtYXQnKSBzZXQgaXNvRm9ybWF0KHZhbHVlOiBQb0RhdGVwaWNrZXJJc29Gb3JtYXQpIHtcbiAgICBpZiAoT2JqZWN0LnZhbHVlcyhQb0RhdGVwaWNrZXJJc29Gb3JtYXQpLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgdGhpcy5faXNvRm9ybWF0ID0gdmFsdWU7XG4gICAgICB0aGlzLmlzRXh0ZW5kZWRJU08gPSB2YWx1ZSA9PT0gUG9EYXRlcGlja2VySXNvRm9ybWF0LkV4dGVuZGVkO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc29Gb3JtYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzb0Zvcm1hdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIElkaW9tYSBkbyBEYXRlcGlja2VyLlxuICAgKlxuICAgKiA+IE8gbG9jYWxlIHBhZHLDo28gc2VyYSByZWN1cGVyYWRvIGNvbSBiYXNlIG5vIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91ICpicm93c2VyKi5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIF9sb2NhbGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgncC1sb2NhbGUnKSBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlLmxlbmd0aCA+PSAyID8gdmFsdWUgOiBwb0xvY2FsZURlZmF1bHQ7XG4gICAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgICAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcih0aGlzLmZvcm1hdCwgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0RGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gICAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgICAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcih0aGlzLmZvcm1hdCwgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0RGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSkpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJlZnJlc2hWYWx1ZSh0aGlzLmRhdGUpO1xuICB9XG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZSB8fCB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge31cblxuICBzZXQgZGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgZmFsc2UpIDogdmFsdWU7XG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub2Zmc2V0ID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHRoaXMuZm9ybWF0VGltZXpvbmVBbmRIb3VyKHRoaXMub2Zmc2V0KTtcbiAgICAvLyBDbGFzc2UgZGUgbcOhc2NhcmFcbiAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICk7XG4gIH1cblxuICAvLyBDb252ZXJ0ZSB1bSBvYmpldG8gc3RyaW5nIGVtIERhdGVcbiAgZ2V0RGF0ZUZyb21TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignZCcpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdkJykgKyAyKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignbScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdtJykgKyAyKSwgMTApIC0gMTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZigneScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCd5JykgKyA0KSwgMTApO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgZGF0ZS5nZXREYXRlKCkgPT09IGRheSA/IGRhdGUgOiBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGRhdGEuXG4gIGZvcm1hdFRvRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGxldCBkYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXQ7XG5cbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdkZCcsICgnMCcgKyB2YWx1ZS5nZXREYXRlKCkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnbW0nLCAoJzAnICsgKHZhbHVlLmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCd5eXl5JywgZm9ybWF0WWVhcih2YWx1ZS5nZXRGdWxsWWVhcigpKSk7XG5cbiAgICByZXR1cm4gZGF0ZUZvcm1hdHRlZDtcbiAgfVxuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBjb250cm9sYXIgbyBtb2RlbG8uXG4gIGNvbnRyb2xNb2RlbChkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzRXh0ZW5kZWRJU08pIHtcbiAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICAgIH0gZWxzZSBpZiAoZGF0ZSAmJiAhdGhpcy5pc0V4dGVuZGVkSVNPKSB7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZShjb252ZXJ0RGF0ZVRvSVNPRGF0ZSh0aGlzLmRhdGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5jYWxsT25DaGFuZ2UoJycpIDogdGhpcy5jYWxsT25DaGFuZ2UoJ0RhdGEgaW52w6FsaWRhJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gRXhlY3V0YSBhIGZ1bsOnw6NvIG9uQ2hhbmdlXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55LCByZXRyeTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsICYmIHZhbHVlICE9PSB0aGlzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VNb2RlbCh2YWx1ZSk7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHJldHJ5KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2FsbE9uQ2hhbmdlKHZhbHVlLCBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBwb3NzdWkgYWxndW0gZXJyb3IgcGF0dGVybiBwYWRyw6NvLlxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID1cbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBpbnbDoWxpZGEnICYmIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBmb3JhIGRvIHBlcsOtb2RvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAoZGF0ZUZhaWxlZChjLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gPSB0aGlzLmVycm9yUGF0dGVybiB8fCAnRGF0YSBpbnbDoWxpZGEnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGMudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGUgJiYgIXZhbGlkYXRlRGF0ZVJhbmdlKHRoaXMuZGF0ZSwgdGhpcy5fbWluRGF0ZSwgdGhpcy5fbWF4RGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gfHwgJ0RhdGEgZm9yYSBkbyBwZXLDrW9kbyc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXRvcm5hIHVtIG9iamV0byBkbyB0aXBvIFBvTWFzayBjb20gYSBtYXNjYXJhIGNvbmZpZ3VyYWRhLlxuICBwcm90ZWN0ZWQgYnVpbGRNYXNrKGZvcm1hdDogc3RyaW5nID0gdGhpcy5mb3JtYXQpIHtcbiAgICBsZXQgbWFzayA9IGZvcm1hdC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvREQvZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvTU0vZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvWVlZWS9nLCAnOTk5OScpO1xuXG4gICAgcmV0dXJuIG5ldyBQb01hc2sobWFzaywgdHJ1ZSk7XG4gIH1cblxuICBmb3JtYXRUaW1lem9uZUFuZEhvdXIob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBjb25zdCBvZmZzZXRBYnNvbHV0ZSA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgY29uc3QgdGltZXpvbmUgPVxuICAgICAgKG9mZnNldCA8IDAgPyAnKycgOiAnLScpICtcbiAgICAgICgnMDAnICsgTWF0aC5mbG9vcihvZmZzZXRBYnNvbHV0ZSAvIDYwKSkuc2xpY2UoLTIpICtcbiAgICAgICc6JyArXG4gICAgICAoJzAwJyArIChvZmZzZXRBYnNvbHV0ZSAlIDYwKSkuc2xpY2UoLTIpO1xuICAgIHRoaXMuaG91ciA9ICdUMDA6MDA6MDAnICsgdGltZXpvbmU7XG4gIH1cblxuICBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHJlZnJlc2hWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQ7XG59XG4iXX0=
|
|
536
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQUU5RSxNQUFNLHlCQUF5QixHQUFXLFlBQVksQ0FBQztBQUV2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNFRztBQUVILE1BQU0sT0FBZ0IseUJBQXlCO0lBb1R2QjtJQW5UdEI7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGLG9DQUFvQztJQUNyQixJQUFJLENBQVM7SUFFNUI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ2tCLFFBQVEsQ0FBVTtJQUV2Qzs7OztPQUlHO0lBQ3VCLFlBQVksR0FB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QTdCLEtBQUs7bUJBQUMsU0FBUztZQVdTLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQTBCTSxPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7WUFpQ0ksTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBK0JVLFNBQVM7a0JBQW5DLEtBQUs7bUJBQUMsY0FBYztZQXNCRSxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUErQmtELFNBQVM7a0JBQTNFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0RGF0ZVRvSVNPRGF0ZSxcbiAgY29udmVydERhdGVUb0lTT0V4dGVuZGVkLFxuICBjb252ZXJ0SXNvVG9EYXRlLFxuICBjb252ZXJ0VG9Cb29sZWFuLFxuICBmb3JtYXRZZWFyLFxuICBpc1R5cGVvZixcbiAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcixcbiAgc2V0WWVhckZyb20wVG8xMDAsXG4gIHZhbGlkYXRlRGF0ZVJhbmdlXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9NYXNrIH0gZnJvbSAnLi4vcG8taW5wdXQvcG8tbWFzayc7XG5pbXBvcnQgeyBkYXRlRmFpbGVkLCByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4vLi4vdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJJc29Gb3JtYXQgfSBmcm9tICcuL2VudW1zL3BvLWRhdGVwaWNrZXItaXNvLWZvcm1hdC5lbnVtJztcblxuY29uc3QgcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDogc3RyaW5nID0gJ2RkL21tL3l5eXknO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLWRhdGVwaWNrZXJgIMOpIHVtIGNvbXBvbmVudGUgZXNwZWPDrWZpY28gcGFyYSBtYW5pcHVsYcOnw6NvIGRlIGRhdGFzIHBlcm1pdGluZG8gYSBkaWdpdGHDp8OjbyBlIC8gb3Ugc2VsZcOnw6NvLlxuICpcbiAqIE8gZm9ybWF0byBkZSBleGliacOnw6NvIGRhIGRhdGEsIG91IHNlamEsIG8gZm9ybWF0byBxdWUgw6kgYXByZXNlbnRhZG8gYW8gdXN1w6FyaW8gw6kgbyBkZC9tbS95eXl5LFxuICogbWFzIHBvZGVtIHNlciBkZWZpbmlkb3Mgb3V0cm9zIHBhZHLDtWVzICh2ZWphIG1haXMgbmEgcHJvcHJpZWRhZGUgYHAtZm9ybWF0YCkuXG4gKlxuICogTyBpZGlvbWEgcGFkcsOjbyBkbyBjYWxlbmTDoXJpbyBzZXLDoSBleGliaWRvIGRlIGFjb3JkbyBjb20gbyBuYXZlZ2Fkb3IsIGNhc28gdGVuaGEgbmVjZXNzaWRhZGUgZGUgYWx0ZXJhclxuICogdXNlIGEgcHJvcHJpZWRhZGUgYHAtbG9jYWxlYC5cbiAqXG4gKiBPIGRhdGVwaWNrZXIgYWNlaXRhIHRyw6pzIGZvcm1hdG9zIGRlIGRhdGE6IG8gRTg2MDFEWncgKHl5eXktbW0tZGRUaGg6bW06c3MrfC1oaDptbSksIG8gRTg2MDFEQXcgKHl5eXktbW0tZGQpIGUgb1xuICogRGF0ZSBwYWRyw6NvIGRvIEphdmFzY3JpcHQuXG4gKlxuICogPiBQb3IgcGFkcsOjbywgbyBmb3JtYXRvIGRlIHNhw61kYSBkbyAqbW9kZWwqIHNlIGFqdXN0YXLDoSBjb25mb3JtZSBvIGZvcm1hdG8gZGUgZW50cmFkYS4gU2UgcG9yIGFjYXNvIHByZWNpc2FyIGNvbnRyb2xhciBvIHZhbG9yIGRlIHNhw61kYSxcbiAqIGEgcHJvcHJpZWRhZGUgYHAtaXNvLWZvcm1hdGAgcHJvdsOqIGVzc2UgY29udHJvbGUgaW5kZXBlbmRlbnRlbWVudGUgZG8gZm9ybWF0byBkZSBlbnRyYWRhLiBWZWphIGFiYWl4byBvcyBmb3JtYXRvcyBkaXNwb27DrXZlaXM6XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgZSBzYcOtZGEgKEU4NjAxRFp3KSAtIGAnMjAxNy0xMS0yOFQwMDowMDowMC0wMjowMCdgO1xuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIGUgc2HDrWRhIChFODYwMURBdykgLSBgJzIwMTctMTEtMjgnYDtcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSAoRGF0ZSkgLSBgbmV3IERhdGUoMjAxNywgMTAsIDI4KWAgZSBzYcOtZGEgKEU4NjAxREF3KSAtIGAnMjAxNy0xMS0yOCdgO1xuICpcbiAqICoqSW1wb3J0YW50ZToqKlxuICpcbiAqIC0gUGFyYSB1dGlsaXphciBkYXRhcyBjb20gYW5vIGluZmVyaW9yIGEgMTAwLCB2ZXJpZmljYXIgbyBjb21wb3J0YW1lbnRvIGRvIFtgbmV3IERhdGVgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzL2pzX2RhdGVzLmFzcClcbiAqIGUgdXRpbGl6YXIgbyBtw6l0b2RvIFtgc2V0RnVsbFllYXJgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL2pzcmVmX3NldGZ1bGx5ZWFyLmFzcCkuXG4gKiAtIENhc28gYSBkYXRhIGVzdGVqYSBpbnbDoWxpZGEsIG8gYG1vZGVsYCByZWNlYmVyw6EgKionRGF0YSBpbnbDoWxpZGEnKiouXG4gKiAtIENhc28gbyBgaW5wdXRgIGVzdGVqYSBwYXNzYW5kbyB1bSBgWyhuZ01vZGVsKV1gLCBtYXMgbsOjbyB0ZW5oYSB1bSBgbmFtZWAsIGVudMOjbyBpcsOhIG9jb3JyZXIgdW0gZXJyb1xuICogZG8gcHLDs3ByaW8gQW5ndWxhciAoYFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cImApLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiA8cG8tZGF0ZXBpY2tlclxuICogICBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lXCJcbiAqICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gKiA8L3BvLWRhdGVwaWNrZXI+XG4gKiBgYGBcbiAqXG4gKiA+IE7Do28gZXNxdWXDp2EgZGUgaW1wb3J0YXIgbyBgRm9ybXNNb2R1bGVgIGVtIHNldSBtw7NkdWxvLCB0YWwgY29tbyBwYXJhIHV0aWxpemFyIG8gYGlucHV0IGRlZmF1bHRgLlxuICpcbiAqICMjIyMgVG9rZW5zIGN1c3RvbWl6w6F2ZWlzXG4gKlxuICogw4kgcG9zc8OtdmVsIGFsdGVyYXIgbyBlc3RpbG8gZG8gY29tcG9uZW50ZSB1c2FuZG8gb3Mgc2VndWludGVzIHRva2VucyAoQ1NTKTogPGJyPlxuICogT2JzOiBTw7Mgw6kgcG9zc8OtdmVsIHJlYWxpemFyIGFsdGVyYcOnw7VlcyBhbyBhZGljaW9uYXIgYSBjbGFzc2UgYC5wby1pbnB1dGBcbiAqXG4gKiA+IFBhcmEgbWFpb3JlcyBpbmZvcm1hw6fDtWVzLCBhY2Vzc2UgbyBndWlhIFtQZXJzb25hbGl6YW5kbyBvIFRlbWEgUGFkcsOjbyBjb20gVG9rZW5zIENTU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvdGhlbWUtY3VzdG9taXphdGlvbikuXG4gKlxuICogfCBQcm9wcmllZGFkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyacOnw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWxvciBQYWRyw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqRGVmYXVsdCBWYWx1ZXMqKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LWZhbWlseWAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhbcOtbGlhIHRpcG9ncsOhZmljYSB1c2FkYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tZm9udC1mYW1pbHktdGhlbWUpYCAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvci1wbGFjZWhvbGRlcmAgJm5ic3A7ICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIHRleHRvIGRvIHBsYWNlaG9sZGVyICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBkbyBkYXRlcGlja2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tcGFkZGluZ2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmVlbmNoaW1lbnRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAwIDAuNXJlbWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTkwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkhvdmVyKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrKWAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtaG92ZXJgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtbGlnaHRlc3QpYCAgICAgICAgICAgICAgICAgfFxuICogfCAqKkZvY3VzZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLW91dGxpbmUtY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgIHwgQ29yIGRvIG91dGxpbmUgZG8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWZvY3VzKWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkRpc2FibGVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtZGlzYWJsZWRgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgbm8gZXN0YWRvIGRpc2FibGVkICZuYnNwOyAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0yMClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvRGF0ZXBpY2tlckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1mb2N1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiBOb21lIGRvIGNvbXBvbmVudGUgZGF0ZXBpY2tlci4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIHF1YW5kbyBhIGRhdGEgZm9yIGludsOhbGlkYSBvdSBmb3JhIGRvIHBlcsOtb2RvLlxuICAgKlxuICAgKiA+IEVzdGEgbWVuc2FnZW0gbsOjbyDDqSBhcHJlc2VudGFkYSBxdWFuZG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLCBtZXNtbyBxdWUgZWxlIHNlamEgb2JyaWdhdMOzcmlvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLXBhdHRlcm4nKSBlcnJvclBhdHRlcm4/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHNhaXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWJsdXInKSBvbmJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBvbmNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvZmZzZXQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGZpcnN0U3RhcnQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgaG91cjogc3RyaW5nID0gJ1QwMDowMDowMC0wMDowMCc7XG4gIHByb3RlY3RlZCBpc0V4dGVuZGVkSVNPOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvYmpNYXNrOiBhbnk7XG4gIHByb3RlY3RlZCBvbkNoYW5nZU1vZGVsOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWRNb2RlbDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHNob3J0TGFuZ3VhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIF9mb3JtYXQ/OiBzdHJpbmcgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICBwcml2YXRlIF9pc29Gb3JtYXQ6IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdDtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbm9BdXRvY29tcGxldGU/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcHJldmlvdXNWYWx1ZTogYW55O1xuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlJykgc2V0IG5vQXV0b2NvbXBsZXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbm9BdXRvY29tcGxldGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLlxuICAgKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IGlzVHlwZW9mKHBsYWNlaG9sZGVyLCAnc3RyaW5nJykgPyBwbGFjZWhvbGRlciA6ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKiBEZXNhYmlsaXRhIG8gY2FtcG8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgc2V0RGlzYWJsZWQoZGlzYWJsZWQ6IHN0cmluZykge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICAvKiogVG9ybmEgbyBlbGVtZW50byBzb21lbnRlIGxlaXR1cmEuICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHJlYWRvbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgc2V0UmVhZG9ubHkocmVhZG9ubHk6IHN0cmluZykge1xuICAgIHRoaXMucmVhZG9ubHkgPSByZWFkb25seSA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZWFkb25seSk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHNldFJlcXVpcmVkKHJlcXVpcmVkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlcXVpcmVkID0gcmVxdWlyZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEhhYmlsaXRhIGHDp8OjbyBwYXJhIGxpbXBhciBvIGNhbXBvLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBjbGVhbj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLWNsZWFuJykgc2V0IHNldENsZWFuKGNsZWFuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsZWFuID0gY2xlYW4gPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oY2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBkYXRhIG3DrW5pbWEgcGFyYSBvIGBwby1kYXRlcGlja2VyYC5cbiAgICovXG4gIEBJbnB1dCgncC1taW4tZGF0ZScpIHNldCBtaW5EYXRlKHZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCB2YWx1ZS5nZXRNb250aCgpLCB2YWx1ZS5nZXREYXRlKCksIDAsIDAsIDApO1xuICAgICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICAgIHRoaXMuX21pbkRhdGUgPSBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9taW5EYXRlID0gY29udmVydElzb1RvRGF0ZSh2YWx1ZSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbChjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgfVxuXG4gIGdldCBtaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBkYXRhIG3DoXhpbWEgcGFyYSBvIGBwby1kYXRlcGlja2VyYC5cbiAgICovXG4gIEBJbnB1dCgncC1tYXgtZGF0ZScpIHNldCBtYXhEYXRlKHZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCB2YWx1ZS5nZXRNb250aCgpLCB2YWx1ZS5nZXREYXRlKCksIDIzLCA1OSwgNTkpO1xuICAgICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICAgIHRoaXMuX21heERhdGUgPSBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tYXhEYXRlID0gY29udmVydElzb1RvRGF0ZSh2YWx1ZSwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbChjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgfVxuXG4gIGdldCBtYXhEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9tYXhEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRm9ybWF0byBkZSBleGliacOnw6NvIGRhIGRhdGEuXG4gICAqXG4gICAqIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAtIGBkZC9tbS95eXl5YFxuICAgKiAgLSBgbW0vZGQveXl5eWBcbiAgICogIC0gYHl5eXkvbW0vZGRgXG4gICAqXG4gICAqIEBkZWZhdWx0IGBkZC9tbS95eXl5YFxuICAgKi9cbiAgQElucHV0KCdwLWZvcm1hdCcpIHNldCBmb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHZhbHVlLm1hdGNoKC9kZC8pICYmIHZhbHVlLm1hdGNoKC9tbS8pICYmIHZhbHVlLm1hdGNoKC95eXl5LykpIHtcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKFxuICAgICAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hWYWx1ZSh0aGlzLmRhdGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2Zvcm1hdCA9IHBvRGF0ZXBpY2tlckZvcm1hdERlZmF1bHQ7XG4gICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGZvcm1hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGFkcsOjbyBkZSBmb3JtYXRhw6fDo28gcGFyYSBzYcOtZGEgZG8gKm1vZGVsKiwgaW5kZXBlbmRlbnRlbWVudGUgZG8gZm9ybWF0byBkZSBlbnRyYWRhLlxuICAgKlxuICAgKiA+IFZlamEgb3MgdmFsb3JlcyB2w6FsaWRvcyBubyAqZW51bSogYFBvRGF0ZXBpY2tlcklzb0Zvcm1hdGAuXG4gICAqL1xuICBASW5wdXQoJ3AtaXNvLWZvcm1hdCcpIHNldCBpc29Gb3JtYXQodmFsdWU6IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCkge1xuICAgIGlmIChPYmplY3QudmFsdWVzKFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCkuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICB0aGlzLl9pc29Gb3JtYXQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaXNFeHRlbmRlZElTTyA9IHZhbHVlID09PSBQb0RhdGVwaWNrZXJJc29Gb3JtYXQuRXh0ZW5kZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzb0Zvcm1hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNvRm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSWRpb21hIGRvIERhdGVwaWNrZXIuXG4gICAqXG4gICAqID4gTyBsb2NhbGUgcGFkcsOjbyBzZXJhIHJlY3VwZXJhZG8gY29tIGJhc2Ugbm8gW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgKmJyb3dzZXIqLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgX2xvY2FsZT86IHN0cmluZztcbiAgQElucHV0KCdwLWxvY2FsZScpIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbG9jYWxlID0gdmFsdWUubGVuZ3RoID49IDIgPyB2YWx1ZSA6IHBvTG9jYWxlRGVmYXVsdDtcbiAgICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKFxuICAgICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvY2FsZSA9IHRoaXMuc2hvcnRMYW5ndWFnZTtcbiAgICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKFxuICAgICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFZhbHVlKHRoaXMuZGF0ZSk7XG4gIH1cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlIHx8IHRoaXMuc2hvcnRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYWxlbmTDoXJpbyBkbyBEYXRlUGlja2VyIHNlcsOhIGluY2x1w61kbyBubyBib2R5IGRhIHDDoWdpbmEsIGVtIHZleiBkZSBzdXNwZW5zbyBqdW50byBhbyBjYW1wbyBkZSBlbnRyYWRhIGRvIGNvbXBvbmVudGUuXG4gICAqIEVzc2Egb3DDp8OjbyDDqSDDunRpbCBlbSBjZW7DoXJpb3Mgb25kZSBvIERhdGVQaWNrZXIgcHJlY2lzYSBzZXIgcmVuZGVyaXphZG8gZm9yYSBkbyBjb250ZcO6ZG8gcHJpbmNpcGFsIGRhIHDDoWdpbmEsXG4gICAqIGNvbW8gZW0gZm9ybXVsw6FyaW9zIHF1ZSB1dGlsaXphbSBzY3JvbGwgb3UgY29udGFpbmVycyBjb20gb3ZlcmZsb3cgZXNjb25kaWRvLlxuICAgKlxuICAgKiA+IE9iczogTyB1c28gZGVzc2EgcHJvcHJpZWRhZGUgcG9kZSBpbnRlcmZlcmlyIG5hIHNlcXXDqm5jaWEgZGUgdGFidWxhw6fDo28gZGEgcMOhZ2luYSwgZXNwZWNpYWxtZW50ZSBlbSBmb3JtdWzDoXJpb3MgbG9uZ29zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXBwZW5kLWluLWJvZHknLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXBwZW5kQm94OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHt9XG5cbiAgc2V0IGRhdGUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2RhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gY29udmVydElzb1RvRGF0ZSh2YWx1ZSwgZmFsc2UsIGZhbHNlKSA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9mZnNldCA9IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICB0aGlzLmZvcm1hdFRpbWV6b25lQW5kSG91cih0aGlzLm9mZnNldCk7XG4gICAgLy8gQ2xhc3NlIGRlIG3DoXNjYXJhXG4gICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICApO1xuICB9XG5cbiAgLy8gQ29udmVydGUgdW0gb2JqZXRvIHN0cmluZyBlbSBEYXRlXG4gIGdldERhdGVGcm9tU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ2QnKSwgdGhpcy5mb3JtYXQuaW5kZXhPZignZCcpICsgMiksIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ20nKSwgdGhpcy5mb3JtYXQuaW5kZXhPZignbScpICsgMiksIDEwKSAtIDE7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ3knKSwgdGhpcy5mb3JtYXQuaW5kZXhPZigneScpICsgNCksIDEwKTtcblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcblxuICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXkgPyBkYXRlIDogbnVsbDtcbiAgfVxuXG4gIC8vIEZvcm1hdGEgYSBkYXRhLlxuICBmb3JtYXRUb0RhdGUodmFsdWU6IERhdGUpIHtcbiAgICBsZXQgZGF0ZUZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0O1xuXG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnZGQnLCAoJzAnICsgdmFsdWUuZ2V0RGF0ZSgpKS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ21tJywgKCcwJyArICh2YWx1ZS5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgneXl5eScsIGZvcm1hdFllYXIodmFsdWUuZ2V0RnVsbFllYXIoKSkpO1xuXG4gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZWQ7XG4gIH1cblxuICAvLyBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgY29udHJvbGFyIG8gbW9kZWxvLlxuICBjb250cm9sTW9kZWwoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMuZGF0ZSA9IGRhdGU7XG4gICAgaWYgKGRhdGUgJiYgdGhpcy5pc0V4dGVuZGVkSVNPKSB7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZShjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgICB9IGVsc2UgaWYgKGRhdGUgJiYgIXRoaXMuaXNFeHRlbmRlZElTTykge1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UoY29udmVydERhdGVUb0lTT0RhdGUodGhpcy5kYXRlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMuY2FsbE9uQ2hhbmdlKCcnKSA6IHRoaXMuY2FsbE9uQ2hhbmdlKCdEYXRhIGludsOhbGlkYScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4ZWN1dGEgYSBmdW7Dp8OjbyBvbkNoYW5nZVxuICBjYWxsT25DaGFuZ2UodmFsdWU6IGFueSwgcmV0cnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VNb2RlbCAmJiB2YWx1ZSAhPT0gdGhpcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlTW9kZWwodmFsdWUpO1xuICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChyZXRyeSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNhbGxPbkNoYW5nZSh2YWx1ZSwgZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZU1vZGVsID0gZnVuYztcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAvLyBWZXJpZmljYSBzZSBqw6EgcG9zc3VpIGFsZ3VtIGVycm9yIHBhdHRlcm4gcGFkcsOjby5cbiAgICB0aGlzLmVycm9yUGF0dGVybiA9XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiAhPT0gJ0RhdGEgaW52w6FsaWRhJyAmJiB0aGlzLmVycm9yUGF0dGVybiAhPT0gJ0RhdGEgZm9yYSBkbyBwZXLDrW9kbycgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuXG4gICAgaWYgKGRhdGVGYWlsZWQoYy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gfHwgJ0RhdGEgaW52w6FsaWRhJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBjLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlICYmICF2YWxpZGF0ZURhdGVSYW5nZSh0aGlzLmRhdGUsIHRoaXMuX21pbkRhdGUsIHRoaXMuX21heERhdGUpKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdEYXRhIGZvcmEgZG8gcGVyw61vZG8nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZShtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0b3JuYSB1bSBvYmpldG8gZG8gdGlwbyBQb01hc2sgY29tIGEgbWFzY2FyYSBjb25maWd1cmFkYS5cbiAgcHJvdGVjdGVkIGJ1aWxkTWFzayhmb3JtYXQ6IHN0cmluZyA9IHRoaXMuZm9ybWF0KSB7XG4gICAgbGV0IG1hc2sgPSBmb3JtYXQudG9VcHBlckNhc2UoKTtcblxuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL0REL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL01NL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL1lZWVkvZywgJzk5OTknKTtcblxuICAgIHJldHVybiBuZXcgUG9NYXNrKG1hc2ssIHRydWUpO1xuICB9XG5cbiAgZm9ybWF0VGltZXpvbmVBbmRIb3VyKG9mZnNldDogbnVtYmVyKSB7XG4gICAgY29uc3Qgb2Zmc2V0QWJzb2x1dGUgPSBNYXRoLmFicyhvZmZzZXQpO1xuICAgIGNvbnN0IHRpbWV6b25lID1cbiAgICAgIChvZmZzZXQgPCAwID8gJysnIDogJy0nKSArXG4gICAgICAoJzAwJyArIE1hdGguZmxvb3Iob2Zmc2V0QWJzb2x1dGUgLyA2MCkpLnNsaWNlKC0yKSArXG4gICAgICAnOicgK1xuICAgICAgKCcwMCcgKyAob2Zmc2V0QWJzb2x1dGUgJSA2MCkpLnNsaWNlKC0yKTtcbiAgICB0aGlzLmhvdXIgPSAnVDAwOjAwOjAwJyArIHRpbWV6b25lO1xuICB9XG5cbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZDtcblxuICBhYnN0cmFjdCByZWZyZXNoVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkO1xufVxuIl19
|