http-request-manager 18.4.0 → 18.4.2
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/http-request-services-demo/http-request-services-demo.component.mjs +27 -16
- package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +16 -6
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +15 -5
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +3 -6
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +13 -5
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.mjs +26 -3
- package/esm2022/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.mjs +3 -6
- package/esm2022/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.mjs +3 -3
- package/esm2022/lib/interceptors/index.mjs +2 -2
- package/esm2022/lib/interceptors/models/index.mjs +2 -0
- package/esm2022/lib/models/index.mjs +2 -1
- package/esm2022/lib/services/database-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/database-manager-service/models/index.mjs +2 -0
- package/esm2022/lib/services/index.mjs +3 -1
- package/esm2022/lib/services/local-storage-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/request-manager-services/index.mjs +3 -2
- package/esm2022/lib/services/request-manager-services/request.service.mjs +3 -3
- package/esm2022/lib/services/request-manager-state-service/models/index.mjs +2 -1
- package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +1 -1
- package/fesm2022/http-request-manager.mjs +177 -109
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/http-request-manager-18.4.2.tgz +0 -0
- package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +6 -1
- package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +4 -1
- package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +4 -1
- package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +4 -1
- package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.d.ts +1 -0
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/interceptors/models/index.d.ts +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/services/database-manager-service/index.d.ts +1 -1
- package/lib/services/database-manager-service/models/index.d.ts +1 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/local-storage-manager-service/index.d.ts +1 -1
- package/lib/services/request-manager-services/index.d.ts +2 -0
- package/lib/services/request-manager-state-service/models/index.d.ts +1 -0
- package/package.json +1 -1
- package/http-request-manager-18.4.0.tgz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
1
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
2
2
|
import { CONFIG_SETTINGS_TOKEN } from '../models/config-token.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -8,27 +8,28 @@ import * as i4 from "@angular/material/divider";
|
|
|
8
8
|
import * as i5 from "@angular/material/toolbar";
|
|
9
9
|
import * as i6 from "./request-manager-state-demo/request-manager-state-demo.component";
|
|
10
10
|
import * as i7 from "./request-manager-demo/request-manager-demo.component";
|
|
11
|
-
import * as i8 from "./
|
|
12
|
-
import * as i9 from "./
|
|
13
|
-
import * as i10 from "./
|
|
14
|
-
import * as i11 from "./
|
|
15
|
-
import * as i12 from "
|
|
16
|
-
import * as i13 from "./database-data-demo/database-data-demo.component";
|
|
17
|
-
import * as i14 from "../models/config-options.model";
|
|
11
|
+
import * as i8 from "./local-storage-demo/local-storage-demo.component";
|
|
12
|
+
import * as i9 from "./request-manager-ws-demo/request-manager-ws-demo.component";
|
|
13
|
+
import * as i10 from "./store-state-manager-demo/store-state-manager-demo.component";
|
|
14
|
+
import * as i11 from "./database-data-demo/database-data-demo.component";
|
|
15
|
+
import * as i12 from "../models/config-options.model";
|
|
18
16
|
export class HttpRequestServicesDemoComponent {
|
|
19
17
|
constructor(configOptions) {
|
|
20
18
|
this.configOptions = configOptions;
|
|
19
|
+
this.wsServer = 'ws://localhost:8080';
|
|
20
|
+
this.jwtToken = '';
|
|
21
|
+
this.server = 'http://localhost:8080';
|
|
21
22
|
this.requestTypes = [
|
|
22
23
|
{ name: "Http Service", value: 'http_service' },
|
|
23
|
-
{ name: "Http Signals Service", value: 'http_signals_service', new: true },
|
|
24
|
+
// { name: "Http Signals Service", value: 'http_signals_service', new: true },
|
|
24
25
|
{ name: "Http State Service", value: 'http_state_service' },
|
|
25
26
|
{ name: "Http State Service - Websockets", value: 'http_state_service_ws', new: false },
|
|
26
27
|
{ name: "Database Service", value: 'database_service', divider: true, disabled: false },
|
|
27
28
|
{ name: "Local Storage Service", value: 'local_storage_service' },
|
|
28
|
-
{ name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
|
|
29
|
+
// { name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
|
|
29
30
|
{ name: "Store State Manager Service", value: 'store_state_manager', new: true },
|
|
30
31
|
];
|
|
31
|
-
this.selectedService = this.requestTypes[
|
|
32
|
+
this.selectedService = this.requestTypes[5].value; //menu selection default
|
|
32
33
|
}
|
|
33
34
|
ngOnInit() {
|
|
34
35
|
if (this.configOptions)
|
|
@@ -38,13 +39,23 @@ export class HttpRequestServicesDemoComponent {
|
|
|
38
39
|
this.selectedService = this.requestTypes[type].value;
|
|
39
40
|
}
|
|
40
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, deps: [{ token: CONFIG_SETTINGS_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", inputs: { wsServer: "wsServer", jwtToken: "jwtToken", server: "server", adapter: "adapter", mapper: "mapper" }, ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo\n [server]=\"server\"\n [adapter]=\"adapter\"\n [mapper]=\"mapper\"\n ></app-request-manager-demo>\n </p>\n <!-- <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p> -->\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo\n [server]=\"server\"\n [adapter]=\"adapter\"\n [mapper]=\"mapper\"\n ></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo\n [server]=\"server\"\n [wsServer]=\"wsServer\"\n [jwtToken]=\"jwtToken\"\n ></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <!-- <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p> -->\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.RequestManagerStateDemoComponent, selector: "app-request-manager-state-demo", inputs: ["server", "adapter", "mapper"] }, { kind: "component", type: i7.RequestManagerDemoComponent, selector: "app-request-manager-demo", inputs: ["server", "adapter", "mapper"] }, { kind: "component", type: i8.LocalStorageDemoComponent, selector: "app-local-storage-demo" }, { kind: "component", type: i9.RequestManagerWsDemoComponent, selector: "app-request-manager-ws-demo", inputs: ["server", "wsServer", "jwtToken"] }, { kind: "component", type: i10.StoreStateManagerDemoComponent, selector: "app-store-state-manager-demo" }, { kind: "component", type: i11.DatabaseDataDemoComponent, selector: "app-database-data-demo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
|
|
42
43
|
}
|
|
43
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, decorators: [{
|
|
44
45
|
type: Component,
|
|
45
|
-
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p
|
|
46
|
-
}], ctorParameters: () => [{ type:
|
|
46
|
+
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo\n [server]=\"server\"\n [adapter]=\"adapter\"\n [mapper]=\"mapper\"\n ></app-request-manager-demo>\n </p>\n <!-- <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p> -->\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo\n [server]=\"server\"\n [adapter]=\"adapter\"\n [mapper]=\"mapper\"\n ></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo\n [server]=\"server\"\n [wsServer]=\"wsServer\"\n [jwtToken]=\"jwtToken\"\n ></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <!-- <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p> -->\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"] }]
|
|
47
|
+
}], ctorParameters: () => [{ type: i12.ConfigOptions, decorators: [{
|
|
47
48
|
type: Inject,
|
|
48
49
|
args: [CONFIG_SETTINGS_TOKEN]
|
|
49
|
-
}] }]
|
|
50
|
-
|
|
50
|
+
}] }], propDecorators: { wsServer: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], jwtToken: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], server: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], adapter: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], mapper: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRckUsTUFBTSxPQUFPLGdDQUFnQztJQXdCM0MsWUFDeUMsYUFBNkI7UUFBN0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBdkI3RCxhQUFRLEdBQUcscUJBQXFCLENBQUE7UUFDaEMsYUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNiLFdBQU0sR0FBRyx1QkFBdUIsQ0FBQTtRQUt6QyxpQkFBWSxHQUFHO1lBQ2IsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDL0MsOEVBQThFO1lBQzlFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUN2RixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ3ZGLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtZQUNqRSxnR0FBZ0c7WUFDaEcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7U0FDakYsQ0FBQTtRQUVELG9CQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQyx3QkFBd0I7SUFNakUsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxhQUFhO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7SUFDbkUsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDdEQsQ0FBQzsrR0FsQ1UsZ0NBQWdDLGtCQXlCakMscUJBQXFCO21HQXpCcEIsZ0NBQWdDLHNMQ1Y3QywybEdBNEZBOzs0RkRsRmEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLGdDQUFnQzs7MEJBNkJ2QyxNQUFNOzJCQUFDLHFCQUFxQjt5Q0F2QnRCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy9jb25maWctb3B0aW9ucy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHdzU2VydmVyID0gJ3dzOi8vbG9jYWxob3N0OjgwODAnXG4gIEBJbnB1dCgpIGp3dFRva2VuID0gJydcbiAgQElucHV0KCkgc2VydmVyID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCdcblxuICBASW5wdXQoKSBhZGFwdGVyPzogRnVuY3Rpb25cbiAgQElucHV0KCkgbWFwcGVyPzogRnVuY3Rpb25cblxuICByZXF1ZXN0VHlwZXMgPSBbXG4gICAgeyBuYW1lOiBcIkh0dHAgU2VydmljZVwiLCB2YWx1ZTogJ2h0dHBfc2VydmljZScgfSxcbiAgICAvLyB7IG5hbWU6IFwiSHR0cCBTaWduYWxzIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJIdHRwIFN0YXRlIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2UnIH0sXG4gICAgeyBuYW1lOiBcIkh0dHAgU3RhdGUgU2VydmljZSAtIFdlYnNvY2tldHNcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2Vfd3MnLCBuZXc6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkRhdGFiYXNlIFNlcnZpY2VcIiwgdmFsdWU6ICdkYXRhYmFzZV9zZXJ2aWNlJywgZGl2aWRlcjogdHJ1ZSwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkxvY2FsIFN0b3JhZ2UgU2VydmljZVwiLCB2YWx1ZTogJ2xvY2FsX3N0b3JhZ2Vfc2VydmljZScgfSxcbiAgICAvLyB7IG5hbWU6IFwiTG9jYWwgU2lnbmFscyBTdG9yYWdlIFNlcnZpY2VcIiwgdmFsdWU6ICdsb2NhbF9zdG9yYWdlX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJTdG9yZSBTdGF0ZSBNYW5hZ2VyIFNlcnZpY2VcIiwgdmFsdWU6ICdzdG9yZV9zdGF0ZV9tYW5hZ2VyJywgbmV3OiB0cnVlIH0sXG4gIF1cblxuICBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1s1XS52YWx1ZSAvL21lbnUgc2VsZWN0aW9uIGRlZmF1bHRcblxuICBpbmplY3Rpb25PcHRpb25zPzogQ29uZmlnT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYodGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmluamVjdGlvbk9wdGlvbnMgPSB0aGlzLmNvbmZpZ09wdGlvbnNcbiAgfVxuXG4gIG9uU2VsZWN0ZWQodHlwZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1t0eXBlXS52YWx1ZVxuICB9XG5cbn1cbiIsIjxtYXQtdG9vbGJhciAgc3R5bGU9XCJkaXNwbGF5OmZsZXhcIj5cbiAgPGRpdj5IdHRwIFJlcXVlc3QgTWFuYWdlciBTZXJ2aWNlczwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZmxleDoxXCI+PC9kaXY+XG4gIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+U2VydmljZXM8L2J1dHRvbj5cbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcmVxdWVzdFR5cGVzOyBpbmRleCBhcyBpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidHlwZT8uZGl2aWRlclwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IC41cmVtO1wiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWQoaSlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHlwZS5kaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAge3sgdHlwZS5uYW1lIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L21hdC1tZW51PlxuPC9tYXQtdG9vbGJhcj5cblxuPHNwYW4gW25nU3dpdGNoXT1cInNlbGVjdGVkU2VydmljZVwiPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItZGVtb1xuICAgICAgW3NlcnZlcl09XCJzZXJ2ZXJcIlxuICAgICAgW2FkYXB0ZXJdPVwiYWRhcHRlclwiXG4gICAgICBbbWFwcGVyXT1cIm1hcHBlclwiXG4gICAgPjwvYXBwLXJlcXVlc3QtbWFuYWdlci1kZW1vPlxuICA8L3A+XG4gIDwhLS0gPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3NpZ25hbHNfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vPjwvYXBwLXJlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8+XG4gIDwvcD4gLS0+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInaHR0cF9zdGF0ZV9zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJIVFRQX09QVElPTlNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8YXBwLXJlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vXG4gICAgICBbc2VydmVyXT1cInNlcnZlclwiXG4gICAgICBbYWRhcHRlcl09XCJhZGFwdGVyXCJcbiAgICAgIFttYXBwZXJdPVwibWFwcGVyXCJcbiAgICA+PC9hcHAtcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3N0YXRlX3NlcnZpY2Vfd3MnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkhUVFBfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtcmVxdWVzdC1tYW5hZ2VyLXdzLWRlbW9cbiAgICAgIFtzZXJ2ZXJdPVwic2VydmVyXCJcbiAgICAgIFt3c1NlcnZlcl09XCJ3c1NlcnZlclwiXG4gICAgICBband0VG9rZW5dPVwiand0VG9rZW5cIlxuICAgID48L2FwcC1yZXF1ZXN0LW1hbmFnZXItd3MtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGFiYXNlX3NlcnZpY2UnXCI+XG4gICAgPGFwcC1kYXRhYmFzZS1kYXRhLWRlbW8+PC9hcHAtZGF0YWJhc2UtZGF0YS1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInbG9jYWxfc3RvcmFnZV9zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMT0NBTF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1sb2NhbC1zdG9yYWdlLWRlbW8+PC9hcHAtbG9jYWwtc3RvcmFnZS1kZW1vPlxuICA8L3A+XG4gIDwhLS0gPHAgKm5nU3dpdGNoQ2FzZT1cIidsb2NhbF9zdG9yYWdlX3NpZ25hbHNfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8+PC9hcHAtbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8+XG4gIDwvcD4gLS0+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInc3RvcmVfc3RhdGVfbWFuYWdlcidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vPjwvYXBwLXN0b3JlLXN0YXRlLW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIE90aGVyXG4gIDwvcD5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNIVFRQX09QVElPTlM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8aDMgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj5JbmplY3Rpb24gVG9rZW4gRGV0ZWN0ZWQgLSBIVFRQIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uaHR0cFJlcXVlc3RPcHRpb25zfCBqc29uIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNMT0NBTF9PUFRJT05TPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwiYm94XCIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+SW5qZWN0aW9uIFRva2VuIERldGVjdGVkIC0gTG9jYWxTdG9yYWdlIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc3wganNvbiB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
|