angular-toolbox 0.12.1 → 0.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/component/angular-toolbox-logo/angular-toolbox-logo.component.mjs +3 -3
- package/esm2022/lib/framework/logging/connector/console-log-connector.mjs +2 -2
- package/esm2022/lib/framework/logging/impl/log-impl.mjs +4 -1
- package/esm2022/lib/framework/logging/util/log.builder.mjs +2 -2
- package/esm2022/lib/framework/logging/util/log.util.mjs +3 -3
- package/esm2022/lib/framework/mock/http-monitoring-console/component/abstract/log-renderer-base.mjs +34 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.mjs +16 -17
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.mjs +25 -15
- package/esm2022/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.mjs +41 -119
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.mjs +38 -13
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.mjs +15 -4
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.mjs +12 -4
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.mjs +36 -16
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-info-renderer/request-info-renderer.component.mjs +43 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-list-renderer/request-list-renderer.component.mjs +116 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.mjs +63 -24
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.mjs +72 -28
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/spinner/spinner.component.mjs +22 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.mjs +53 -27
- package/esm2022/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.mjs +45 -21
- package/esm2022/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.mjs +15 -8
- package/esm2022/lib/framework/mock/http-monitoring-console/index.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.mjs +27 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.mjs +5 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-timeline-data.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.mjs +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.mjs +71 -43
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.controller.mjs +96 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.state.mjs +126 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-user-action.service.mjs +40 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-body-type.mjs +33 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-type-class.mjs +29 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/util/data.util.mjs +21 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-converter.mjs +40 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-serializer.mjs +58 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/form-data-serializer.mjs +33 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/hmfl-builder.mjs +27 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-request-converter.mjs +62 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-response-converter.mjs +50 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-converter.mjs +43 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-headers-converter.mjs +53 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-message.util.mjs +30 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-metadata-converter.mjs +45 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/request-metadata-converter.mjs +47 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/size.util.mjs +24 -2
- package/esm2022/lib/framework/mock/http-monitoring-console/util/timeline.util.mjs +28 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/url.util.mjs +26 -1
- package/esm2022/lib/model/business/logging/atx-logger-config.provider.mjs +21 -0
- package/esm2022/lib/model/business/logging/index.mjs +3 -1
- package/esm2022/lib/model/business/logging/log-level.enum.mjs +1 -2
- package/esm2022/lib/model/business/logging/logger-config.mjs +9 -0
- package/esm2022/lib/model/business/logging/logger.mjs +1 -1
- package/esm2022/lib/model/business/logging/transactional-logger.mjs +1 -1
- package/esm2022/lib/model/business/mock/http/popup/atx-http-mock-console-popup.mjs +9 -0
- package/esm2022/lib/model/service/logging/logger-service.mjs +21 -4
- package/esm2022/lib/model/service/mock/http/logging/atx-http-mock-console.service.mjs +94 -0
- package/esm2022/lib/model/service/mock/http/logging/http-mock-logging-service.mjs +6 -3
- package/esm2022/lib/model/service/mock/http/logging/index.mjs +2 -1
- package/esm2022/lib/model/service/ui/app-bridge.service.mjs +1 -1
- package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +3 -3
- package/fesm2022/angular-toolbox.mjs +3085 -1961
- package/fesm2022/angular-toolbox.mjs.map +1 -1
- package/lib/framework/logging/connector/console-log-connector.d.ts +1 -1
- package/lib/framework/logging/impl/log-impl.d.ts +3 -0
- package/lib/framework/logging/util/log.builder.d.ts +1 -1
- package/lib/framework/logging/util/log.util.d.ts +2 -2
- package/lib/framework/mock/http-monitoring-console/component/abstract/log-renderer-base.d.ts +28 -0
- package/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.d.ts +11 -4
- package/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.d.ts +18 -16
- package/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.d.ts +16 -37
- package/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.d.ts +20 -4
- package/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.d.ts +11 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.d.ts +8 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.d.ts +18 -11
- package/lib/framework/mock/http-monitoring-console/component/renderer/request-info-renderer/request-info-renderer.component.d.ts +25 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/request-list-renderer/request-list-renderer.component.d.ts +57 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.d.ts +27 -12
- package/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.d.ts +41 -7
- package/lib/framework/mock/http-monitoring-console/component/renderer/spinner/spinner.component.d.ts +9 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.d.ts +29 -3
- package/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.d.ts +36 -12
- package/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.d.ts +10 -5
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.d.ts +27 -1
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.d.ts +20 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.d.ts +4 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-timeline-data.d.ts +21 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.d.ts +14 -1
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.d.ts +14 -1
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.d.ts +7 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.d.ts +6 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.d.ts +38 -1
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.d.ts +26 -1
- package/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.d.ts +24 -2
- package/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.controller.d.ts +55 -0
- package/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.state.d.ts +75 -0
- package/lib/framework/mock/http-monitoring-console/model/service/atx-user-action.service.d.ts +32 -0
- package/lib/framework/mock/http-monitoring-console/util/console-body-type.d.ts +32 -0
- package/lib/framework/mock/http-monitoring-console/util/console-type-class.d.ts +28 -0
- package/lib/framework/mock/http-monitoring-console/util/data.util.d.ts +20 -0
- package/lib/framework/mock/http-monitoring-console/util/io/body-converter.d.ts +30 -0
- package/lib/framework/mock/http-monitoring-console/util/io/body-serializer.d.ts +32 -0
- package/lib/framework/mock/http-monitoring-console/util/io/form-data-serializer.d.ts +21 -0
- package/lib/framework/mock/http-monitoring-console/util/io/hmfl-builder.d.ts +23 -0
- package/lib/framework/mock/http-monitoring-console/util/io/http-request-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/io/http-response-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/io/log-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/io/log-headers-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/io/log-message.util.d.ts +23 -0
- package/lib/framework/mock/http-monitoring-console/util/io/log-metadata-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/io/request-metadata-converter.d.ts +31 -0
- package/lib/framework/mock/http-monitoring-console/util/size.util.d.ts +22 -0
- package/lib/framework/mock/http-monitoring-console/util/timeline.util.d.ts +23 -0
- package/lib/framework/mock/http-monitoring-console/util/url.util.d.ts +25 -0
- package/lib/model/business/logging/atx-logger-config.provider.d.ts +21 -0
- package/lib/model/business/logging/index.d.ts +2 -0
- package/lib/model/business/logging/log-level.enum.d.ts +0 -1
- package/lib/model/business/logging/logger-config.d.ts +17 -0
- package/lib/model/business/logging/logger.d.ts +5 -5
- package/lib/model/business/logging/transactional-logger.d.ts +1 -1
- package/lib/model/business/mock/http/popup/atx-http-mock-console-popup.d.ts +23 -0
- package/lib/model/service/logging/logger-service.d.ts +6 -1
- package/lib/model/service/mock/http/logging/atx-http-mock-console.service.d.ts +53 -0
- package/lib/model/service/mock/http/logging/http-mock-logging-service.d.ts +1 -0
- package/lib/model/service/mock/http/logging/index.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/body-converter.mjs +0 -22
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/body-serializer.mjs +0 -47
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/http-request-converter.mjs +0 -44
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/http-response-converter.mjs +0 -32
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-converter.mjs +0 -31
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-headers-converter.mjs +0 -35
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-message.util.mjs +0 -19
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-metadata-converter.mjs +0 -27
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/request-metadata-converter.mjs +0 -29
- package/lib/framework/mock/http-monitoring-console/model/service/io/body-converter.d.ts +0 -12
- package/lib/framework/mock/http-monitoring-console/model/service/io/body-serializer.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/http-request-converter.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/http-response-converter.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-converter.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-headers-converter.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-message.util.d.ts +0 -12
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-metadata-converter.d.ts +0 -13
- package/lib/framework/mock/http-monitoring-console/model/service/io/request-metadata-converter.d.ts +0 -13
|
@@ -11,61 +11,105 @@ import { DataUtil } from '../../../util/data.util';
|
|
|
11
11
|
import { ConsoleBodyType } from '../../../util/console-body-type';
|
|
12
12
|
import { SafeHtmlPipe } from '../../../../../../pipe';
|
|
13
13
|
import { UrlUtil } from '../../../util/url.util';
|
|
14
|
+
import { AtxLogRendererBase } from '../../abstract/log-renderer-base';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@angular/platform-browser";
|
|
17
|
+
/**
|
|
18
|
+
* @Private
|
|
19
|
+
*/
|
|
16
20
|
const IMG_TYPE = 'image/';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @private
|
|
23
|
+
* The component that displays HTTP response data preview in the ATX monitoring console.
|
|
24
|
+
*/
|
|
25
|
+
export class AtxResponsePreviewRendererComponent extends AtxLogRendererBase {
|
|
26
|
+
/**
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
set log(value) {
|
|
30
|
+
super.log = value;
|
|
31
|
+
this.ngOnDestroy();
|
|
32
|
+
if (!value)
|
|
33
|
+
return;
|
|
34
|
+
const metadata = value.metadata;
|
|
35
|
+
const response = metadata.response;
|
|
36
|
+
if (!response)
|
|
37
|
+
return;
|
|
38
|
+
const body = response.body;
|
|
22
39
|
this.response = value;
|
|
23
40
|
this.json = this.text = this.imgUrl = this.trustUrl = null;
|
|
24
|
-
if (body)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
if (!body)
|
|
42
|
+
return;
|
|
43
|
+
const bodyType = DataUtil.getBodyType(body);
|
|
44
|
+
if (bodyType === ConsoleBodyType.TEXT) {
|
|
45
|
+
this.text = body;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (bodyType === ConsoleBodyType.JSON) {
|
|
49
|
+
this.json = body;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (bodyType === ConsoleBodyType.BLOB) {
|
|
53
|
+
const type = body.type;
|
|
54
|
+
if (type.startsWith(IMG_TYPE)) {
|
|
55
|
+
this.resourceName = UrlUtil.getResourceNameFromPath(response.url);
|
|
56
|
+
const url = URL.createObjectURL(body);
|
|
57
|
+
this.imgUrl = url;
|
|
58
|
+
this.trustUrl = this.sanitizer.bypassSecurityTrustUrl(url);
|
|
38
59
|
}
|
|
39
60
|
}
|
|
40
|
-
this._cdr.detectChanges();
|
|
41
61
|
}
|
|
42
|
-
|
|
43
|
-
|
|
62
|
+
/**
|
|
63
|
+
* @private
|
|
64
|
+
*/
|
|
65
|
+
constructor(sanitizer) {
|
|
66
|
+
super();
|
|
44
67
|
this.sanitizer = sanitizer;
|
|
68
|
+
/**
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
45
71
|
this.json = null;
|
|
72
|
+
/**
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
46
75
|
this.text = null;
|
|
76
|
+
/**
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
47
79
|
this.response = null;
|
|
80
|
+
/**
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
48
83
|
this.imgUrl = null;
|
|
84
|
+
/**
|
|
85
|
+
* @private
|
|
86
|
+
*/
|
|
49
87
|
this.trustUrl = null;
|
|
50
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
51
92
|
ngOnDestroy() {
|
|
52
93
|
this.revokeObjectURL();
|
|
53
|
-
this.json = this.text = this.imgUrl = this.trustUrl = null;
|
|
94
|
+
this.json = this.text = this.json = this.response = this.imgUrl = this.trustUrl = null;
|
|
54
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
55
99
|
revokeObjectURL() {
|
|
56
100
|
if (this.imgUrl)
|
|
57
101
|
URL.revokeObjectURL(this.imgUrl);
|
|
58
102
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxResponsePreviewRendererComponent, deps: [{ token:
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AtxResponsePreviewRendererComponent, isStandalone: true, selector: "atx-response-preview-renderer", inputs: {
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxResponsePreviewRendererComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AtxResponsePreviewRendererComponent, isStandalone: true, selector: "atx-response-preview-renderer", inputs: { log: "log" }, usesInheritance: true, ngImport: i0, template: "\r\n<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n@if (response) {\r\n @if (text) {\r\n <section class=\"content\" [innerHTML]=\"text | safeHtml \"></section>\r\n } @else if (json) {\r\n <section class=\"content\">\r\n <atx-json-viewer [data]=\"json\"/>\r\n </section>\r\n } @else if (imgUrl) {\r\n <section class=\"content img-preview\">\r\n <div>\r\n <img [src]=\"imgUrl\" (load)=\"revokeObjectURL()\" [alt]=\"resourceName\" [title]=\"resourceName\">\r\n </div>\r\n </section>\r\n } @else {\r\n <section class=\"content center-content\">\r\n <strong>Preview not available</strong>\r\n </section>\r\n }\r\n}\r\n", styles: [":host{--border-color: lightblue;--background-color: aliceblue;--selected-color: #d9eeff;--selected-error-color: lavenderblush;--light-gray: whitesmoke;--dark-gray: gainsboro;--header-height: 26px;display:block}:host,table{padding:0;margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;font-size:12px;color:#000;background-color:#fff}menu{padding:0;margin:0;display:flex;align-items:center;gap:6px;list-style:none}table{border-collapse:collapse}th{padding:0 0 0 6px;background-color:var(--background-color);border-bottom:1px solid var(--border-color);position:sticky;top:0}th:not(:last-child){border-right:1px solid var(--border-color)}td{padding:2px 6px;vertical-align:top}tr:nth-child(2n):not(.selected-row){background-color:var(--background-color)}.error-row{color:red}.selected-row{background-color:var(--selected-color)}.error-row.selected-row{background-color:var(--selected-error-color)}tr:hover{background-color:var(--light-gray)!important}th{height:var(--header-height)}.header-btn{margin-left:auto}.header-btn:hover{background-color:var(--selected-color)}.menu-separator{width:0;height:16px;border-right:2px solid var(--dark-gray)}.content{padding:4px 6px}.center-content{display:flex;justify-content:center}summary{-webkit-user-select:none;user-select:none}::ng-deep .xdebug-error{font-size:12px!important}.img-preview{text-align:center}.img-preview div{box-shadow:0 4px 10px #000000bf;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAABlBMVEX////09PQtDxrOAAAAE0lEQVQI12P4f4CBKMxg/4EYDAAFkR1NiYvv7QAAAABJRU5ErkJggg==);background-image:linear-gradient(45deg,#F0F0F0 25%,transparent 25%),linear-gradient(-45deg,#F0F0F0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#F0F0F0 75%),linear-gradient(-45deg,transparent 75%,#F0F0F0 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:inline-block}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"], dependencies: [{ kind: "component", type: AtxJsonViewerComponent, selector: "atx-json-viewer", inputs: ["data"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
105
|
}
|
|
62
106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxResponsePreviewRendererComponent, decorators: [{
|
|
63
107
|
type: Component,
|
|
64
108
|
args: [{ selector: 'atx-response-preview-renderer', standalone: true, imports: [
|
|
65
109
|
AtxJsonViewerComponent,
|
|
66
110
|
SafeHtmlPipe
|
|
67
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n@if (response) {\r\n @if (text) {\r\n <section class=\"content\" [innerHTML]=\"text | safeHtml \"></section>\r\n } @else if (json) {\r\n <section class=\"content\">\r\n <atx-json-viewer [data]=\"json\"/>\r\n </section>\r\n } @else if (imgUrl) {\r\n <section class=\"content img-preview\">\r\n <div>\r\n <img [src]=\"imgUrl\" (load)=\"revokeObjectURL()\" [alt]=\"resourceName\" [title]=\"resourceName\">\r\n </div>\r\n </section>\r\n } @else {\r\n <section class=\"content center-content\">\r\n <strong>Preview not available</strong>\r\n </section>\r\n }\r\n}\r\n", styles: [":host{
|
|
68
|
-
}], ctorParameters: () => [{ type:
|
|
111
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n@if (response) {\r\n @if (text) {\r\n <section class=\"content\" [innerHTML]=\"text | safeHtml \"></section>\r\n } @else if (json) {\r\n <section class=\"content\">\r\n <atx-json-viewer [data]=\"json\"/>\r\n </section>\r\n } @else if (imgUrl) {\r\n <section class=\"content img-preview\">\r\n <div>\r\n <img [src]=\"imgUrl\" (load)=\"revokeObjectURL()\" [alt]=\"resourceName\" [title]=\"resourceName\">\r\n </div>\r\n </section>\r\n } @else {\r\n <section class=\"content center-content\">\r\n <strong>Preview not available</strong>\r\n </section>\r\n }\r\n}\r\n", styles: [":host{--border-color: lightblue;--background-color: aliceblue;--selected-color: #d9eeff;--selected-error-color: lavenderblush;--light-gray: whitesmoke;--dark-gray: gainsboro;--header-height: 26px;display:block}:host,table{padding:0;margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;font-size:12px;color:#000;background-color:#fff}menu{padding:0;margin:0;display:flex;align-items:center;gap:6px;list-style:none}table{border-collapse:collapse}th{padding:0 0 0 6px;background-color:var(--background-color);border-bottom:1px solid var(--border-color);position:sticky;top:0}th:not(:last-child){border-right:1px solid var(--border-color)}td{padding:2px 6px;vertical-align:top}tr:nth-child(2n):not(.selected-row){background-color:var(--background-color)}.error-row{color:red}.selected-row{background-color:var(--selected-color)}.error-row.selected-row{background-color:var(--selected-error-color)}tr:hover{background-color:var(--light-gray)!important}th{height:var(--header-height)}.header-btn{margin-left:auto}.header-btn:hover{background-color:var(--selected-color)}.menu-separator{width:0;height:16px;border-right:2px solid var(--dark-gray)}.content{padding:4px 6px}.center-content{display:flex;justify-content:center}summary{-webkit-user-select:none;user-select:none}::ng-deep .xdebug-error{font-size:12px!important}.img-preview{text-align:center}.img-preview div{box-shadow:0 4px 10px #000000bf;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAABlBMVEX////09PQtDxrOAAAAE0lEQVQI12P4f4CBKMxg/4EYDAAFkR1NiYvv7QAAAABJRU5ErkJggg==);background-image:linear-gradient(45deg,#F0F0F0 25%,transparent 25%),linear-gradient(-45deg,#F0F0F0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#F0F0F0 75%),linear-gradient(-45deg,transparent 75%,#F0F0F0 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:inline-block}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { log: [{
|
|
69
113
|
type: Input
|
|
70
114
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UtcHJldmlldy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwLW1vbml0b3JpbmctY29uc29sZS9jb21wb25lbnQvcmVuZGVyZXIvcmVzcG9uc2UtcHJldmlldy1yZW5kZXJlci9yZXNwb25zZS1wcmV2aWV3LXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAtbW9uaXRvcmluZy1jb25zb2xlL2NvbXBvbmVudC9yZW5kZXJlci9yZXNwb25zZS1wcmV2aWV3LXJlbmRlcmVyL3Jlc3BvbnNlLXByZXZpZXctcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRWpELE1BQU0sUUFBUSxHQUFXLFFBQVEsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUM7QUFhaEMsTUFBTSxPQUFPLG1DQUFtQztJQVU5QyxJQUNXLElBQUksQ0FBRSxLQUF3QjtRQUN2QyxNQUFNLElBQUksR0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMzRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQW9CLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQ25ELElBQUksUUFBUSxLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2lCQUN4RCxJQUFJLFFBQVEsS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO29CQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hFLE1BQU0sR0FBRyxHQUFXLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO29CQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdELENBQUM7WUFDUCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQW9CLElBQXVCLEVBQ3ZCLFNBQXVCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFoQ2pDLFNBQUksR0FBUSxJQUFJLENBQUM7UUFDakIsU0FBSSxHQUFrQixJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFRLElBQUksQ0FBQztRQUNyQixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixhQUFRLEdBQW1CLElBQUksQ0FBQztJQTRCSSxDQUFDO0lBRXhDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFUyxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOzhHQTNDVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyxtSEMvQmhELDA4QkE0QkEscWhFREpJLHNCQUFzQix5RUFDdEIsWUFBWTs7MkZBTUgsbUNBQW1DO2tCQVgvQyxTQUFTOytCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1A7d0JBQ1Asc0JBQXNCO3dCQUN0QixZQUFZO3FCQUNiLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO2lIQWFwQyxJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdHhKc29uVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vanNvbi12aWV3ZXIvanNvbi12aWV3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL2RhdGEudXRpbCc7XHJcbmltcG9ydCB7IENvbnNvbGVCb2R5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29uc29sZS1ib2R5LXR5cGUnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9waXBlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVXJsVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXJsLnV0aWwnO1xyXG5cclxuY29uc3QgSU1HX1RZUEU6IHN0cmluZyA9ICdpbWFnZS8nO1xyXG5jb25zdCBTVkdfVFlQRTogc3RyaW5nID0gJ3N2Zy8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHgtcmVzcG9uc2UtcHJldmlldy1yZW5kZXJlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBdHhKc29uVmlld2VyQ29tcG9uZW50LFxyXG4gICAgU2FmZUh0bWxQaXBlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzcG9uc2UtcHJldmlldy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Jlc3BvbnNlLXByZXZpZXctcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHhSZXNwb25zZVByZXZpZXdSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByb3RlY3RlZCBqc29uOiBhbnkgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgcmVzcG9uc2U6IGFueSA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIGltZ1VybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRydXN0VXJsOiBTYWZlVXJsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHJlc291cmNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGRhdGEgKHZhbHVlOiBIdHRwUmVzcG9uc2U8YW55Pikge1xyXG4gICAgY29uc3QgYm9keTogYW55ID0gdmFsdWUuYm9keTtcclxuICAgIHRoaXMucmV2b2tlT2JqZWN0VVJMKCk7XHJcbiAgICB0aGlzLnJlc3BvbnNlID0gdmFsdWU7XHJcbiAgICB0aGlzLmpzb24gPSB0aGlzLnRleHQgPSB0aGlzLmltZ1VybCA9IHRoaXMudHJ1c3RVcmwgPSBudWxsO1xyXG4gICAgaWYgKGJvZHkpIHtcclxuICAgICAgY29uc3QgYm9keVR5cGU6IENvbnNvbGVCb2R5VHlwZSA9IERhdGFVdGlsLmdldEJvZHlUeXBlKGJvZHkpO1xyXG4gICAgICBpZiAoYm9keVR5cGUgPT09IENvbnNvbGVCb2R5VHlwZS5URVhUKSB0aGlzLnRleHQgPSBib2R5O1xyXG4gICAgICBlbHNlIGlmIChib2R5VHlwZSA9PT0gQ29uc29sZUJvZHlUeXBlLkpTT04pIHRoaXMuanNvbiA9IGJvZHk7XHJcbiAgICAgIGVsc2UgaWYgKGJvZHlUeXBlID09PSBDb25zb2xlQm9keVR5cGUuQkxPQikge1xyXG4gICAgICAgIGlmIChib2R5LnR5cGUuc3RhcnRzV2l0aChJTUdfVFlQRSkgfHxcclxuICAgICAgICBib2R5LnR5cGUuc3RhcnRzV2l0aChTVkdfVFlQRSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc291cmNlTmFtZSA9IFVybFV0aWwuZ2V0UmVzb3VyY2VOYW1lRnJvbVBhdGgoKHZhbHVlIGFzIGFueSkudXJsKTtcclxuICAgICAgICAgICAgICBjb25zdCB1cmw6IHN0cmluZyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbWdVcmwgPSB1cmw7XHJcbiAgICAgICAgICAgICAgdGhpcy50cnVzdFVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJldm9rZU9iamVjdFVSTCgpO1xyXG4gICAgdGhpcy5qc29uID0gdGhpcy50ZXh0ID0gdGhpcy5pbWdVcmwgPSB0aGlzLnRydXN0VXJsID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZXZva2VPYmplY3RVUkwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbWdVcmwpIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5pbWdVcmwpO1xyXG4gIH1cclxufVxyXG4iLCJcclxuPCEtLVxyXG4gKiBMSUNFTlNFXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXHJcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbi0tPlxyXG5cclxuQGlmIChyZXNwb25zZSkge1xyXG4gICAgQGlmICh0ZXh0KSB7XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50XCIgW2lubmVySFRNTF09XCJ0ZXh0IHwgc2FmZUh0bWwgXCI+PC9zZWN0aW9uPlxyXG4gICAgfSBAZWxzZSBpZiAoanNvbikge1xyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICA8YXR4LWpzb24tdmlld2VyIFtkYXRhXT1cImpzb25cIi8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfSBAZWxzZSBpZiAoaW1nVXJsKSB7XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50IGltZy1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWdVcmxcIiAobG9hZCk9XCJyZXZva2VPYmplY3RVUkwoKVwiIFthbHRdPVwicmVzb3VyY2VOYW1lXCIgW3RpdGxlXT1cInJlc291cmNlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50IGNlbnRlci1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zdHJvbmc+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UtcHJldmlldy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwLW1vbml0b3JpbmctY29uc29sZS9jb21wb25lbnQvcmVuZGVyZXIvcmVzcG9uc2UtcHJldmlldy1yZW5kZXJlci9yZXNwb25zZS1wcmV2aWV3LXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAtbW9uaXRvcmluZy1jb25zb2xlL2NvbXBvbmVudC9yZW5kZXJlci9yZXNwb25zZS1wcmV2aWV3LXJlbmRlcmVyL3Jlc3BvbnNlLXByZXZpZXctcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFHdEU7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBVyxRQUFRLENBQUM7QUFFbEM7OztHQUdHO0FBWUgsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLGtCQUFrQjtJQWdDekU7O09BRUc7SUFDSCxJQUNvQixHQUFHLENBQUMsS0FBaUI7UUFDdkMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixNQUFNLFFBQVEsR0FBNEIsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBdUIsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU07UUFDckIsTUFBTSxJQUFJLEdBQVEsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQW9CLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFFLFFBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sR0FBRyxHQUFXLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFvQixTQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFwRTNDOztXQUVHO1FBQ08sU0FBSSxHQUFRLElBQUksQ0FBQztRQUUzQjs7V0FFRztRQUNPLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBRXJDOztXQUVHO1FBQ08sYUFBUSxHQUFRLElBQUksQ0FBQztRQUUvQjs7V0FFRztRQUNPLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBRXZDOztXQUVHO1FBQ08sYUFBUSxHQUFtQixJQUFJLENBQUM7SUErQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6RixDQUFDO0lBRUQ7O09BRUc7SUFDTyxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOzhHQXZGVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyx3SUN2Q2hELDA4QkE0QkEseXBFRElJLHNCQUFzQix5RUFDdEIsWUFBWTs7MkZBTUgsbUNBQW1DO2tCQVgvQyxTQUFTOytCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1A7d0JBQ1Asc0JBQXNCO3dCQUN0QixZQUFZO3FCQUNiLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO2lGQXNDM0IsR0FBRztzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXR4SnNvblZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL2pzb24tdmlld2VyL2pzb24tdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGFVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9kYXRhLnV0aWwnO1xyXG5pbXBvcnQgeyBDb25zb2xlQm9keVR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvbnNvbGUtYm9keS10eXBlJztcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vcGlwZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFVybFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3VybC51dGlsJztcclxuaW1wb3J0IHsgQXR4TG9nUmVuZGVyZXJCYXNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QvbG9nLXJlbmRlcmVyLWJhc2UnO1xyXG5pbXBvcnQgeyBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSwgTG9nIH0gZnJvbSAncHJvamVjdHMvYW5ndWxhci10b29sYm94L3NyYy9wdWJsaWMtYXBpJztcclxuXHJcbi8qKlxyXG4gKiBAUHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgSU1HX1RZUEU6IHN0cmluZyA9ICdpbWFnZS8nO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFRoZSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBIVFRQIHJlc3BvbnNlIGRhdGEgcHJldmlldyBpbiB0aGUgQVRYIG1vbml0b3JpbmcgY29uc29sZS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXR4LXJlc3BvbnNlLXByZXZpZXctcmVuZGVyZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXR4SnNvblZpZXdlckNvbXBvbmVudCxcclxuICAgIFNhZmVIdG1sUGlwZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3BvbnNlLXByZXZpZXctcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9yZXNwb25zZS1wcmV2aWV3LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR4UmVzcG9uc2VQcmV2aWV3UmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBdHhMb2dSZW5kZXJlckJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBqc29uOiBhbnkgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBcclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZXNwb25zZTogYW55ID0gbnVsbDtcclxuICBcclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbWdVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRydXN0VXJsOiBTYWZlVXJsIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVzb3VyY2VOYW1lITogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3ZlcnJpZGUgc2V0IGxvZyh2YWx1ZTogTG9nIHwgbnVsbCkge1xyXG4gICAgc3VwZXIubG9nID0gdmFsdWU7XHJcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XHJcbiAgICBjb25zdCBtZXRhZGF0YTogSHR0cE1vY2tMb2dnaW5nTWV0YWRhdGEgPSB2YWx1ZS5tZXRhZGF0YTsgXHJcbiAgICBjb25zdCByZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4gPSAgbWV0YWRhdGEucmVzcG9uc2U7XHJcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm5cclxuICAgIGNvbnN0IGJvZHk6IGFueSA9IHJlc3BvbnNlLmJvZHk7XHJcbiAgICB0aGlzLnJlc3BvbnNlID0gdmFsdWU7XHJcbiAgICB0aGlzLmpzb24gPSB0aGlzLnRleHQgPSB0aGlzLmltZ1VybCA9IHRoaXMudHJ1c3RVcmwgPSBudWxsO1xyXG4gICAgaWYgKCFib2R5KSByZXR1cm47XHJcbiAgICBjb25zdCBib2R5VHlwZTogQ29uc29sZUJvZHlUeXBlID0gRGF0YVV0aWwuZ2V0Qm9keVR5cGUoYm9keSk7XHJcbiAgICBpZiAoYm9keVR5cGUgPT09IENvbnNvbGVCb2R5VHlwZS5URVhUKSB7XHJcbiAgICAgIHRoaXMudGV4dCA9IGJvZHk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChib2R5VHlwZSA9PT0gQ29uc29sZUJvZHlUeXBlLkpTT04pIHtcclxuICAgICAgdGhpcy5qc29uID0gYm9keTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGJvZHlUeXBlID09PSBDb25zb2xlQm9keVR5cGUuQkxPQikge1xyXG4gICAgICBjb25zdCB0eXBlID0gYm9keS50eXBlO1xyXG4gICAgICBpZiAodHlwZS5zdGFydHNXaXRoKElNR19UWVBFKSkge1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2VOYW1lID0gVXJsVXRpbC5nZXRSZXNvdXJjZU5hbWVGcm9tUGF0aCgocmVzcG9uc2UgYXMgYW55KS51cmwpO1xyXG4gICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gVVJMLmNyZWF0ZU9iamVjdFVSTChib2R5KTtcclxuICAgICAgICB0aGlzLmltZ1VybCA9IHVybDtcclxuICAgICAgICB0aGlzLnRydXN0VXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh1cmwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmV2b2tlT2JqZWN0VVJMKCk7XHJcbiAgICB0aGlzLmpzb24gPSB0aGlzLnRleHQgPSB0aGlzLmpzb24gPSB0aGlzLnJlc3BvbnNlID0gdGhpcy5pbWdVcmwgPSB0aGlzLnRydXN0VXJsID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJldm9rZU9iamVjdFVSTCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmltZ1VybCkgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmltZ1VybCk7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48IS0tXHJcbiAqIExJQ0VOU0VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuLS0+XHJcblxyXG5AaWYgKHJlc3BvbnNlKSB7XHJcbiAgICBAaWYgKHRleHQpIHtcclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cInRleHQgfCBzYWZlSHRtbCBcIj48L3NlY3Rpb24+XHJcbiAgICB9IEBlbHNlIGlmIChqc29uKSB7XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxhdHgtanNvbi12aWV3ZXIgW2RhdGFdPVwianNvblwiLz5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICB9IEBlbHNlIGlmIChpbWdVcmwpIHtcclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnQgaW1nLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZ1VybFwiIChsb2FkKT1cInJldm9rZU9iamVjdFVSTCgpXCIgW2FsdF09XCJyZXNvdXJjZU5hbWVcIiBbdGl0bGVdPVwicmVzb3VyY2VOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnQgY2VudGVyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPHN0cm9uZz5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3N0cm9uZz5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Pascal ECHEMANN. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be found in
|
|
6
|
+
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
|
+
*/
|
|
8
|
+
import { Component } from '@angular/core';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
/**
|
|
11
|
+
* @private
|
|
12
|
+
* A spinner icon component.
|
|
13
|
+
*/
|
|
14
|
+
export class AtxSpinnerComponent {
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: AtxSpinnerComponent, isStandalone: true, selector: "atx-spinner", ngImport: i0, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n<svg width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\r\n <path d=\"M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41m-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9\"/>\r\n <path fill-rule=\"evenodd\" d=\"M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5 5 0 0 0 8 3M3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9z\"/>\r\n</svg>\r\n", styles: [":host{width:20px;height:20px}:host svg{animation:spinnerRotation 1.5s linear infinite}@keyframes spinnerRotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxSpinnerComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'atx-spinner', standalone: true, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n<svg width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\r\n <path d=\"M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41m-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9\"/>\r\n <path fill-rule=\"evenodd\" d=\"M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5 5 0 0 0 8 3M3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9z\"/>\r\n</svg>\r\n", styles: [":host{width:20px;height:20px}:host svg{animation:spinnerRotation 1.5s linear infinite}@keyframes spinnerRotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwLW1vbml0b3JpbmctY29uc29sZS9jb21wb25lbnQvcmVuZGVyZXIvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAtbW9uaXRvcmluZy1jb25zb2xlL2NvbXBvbmVudC9yZW5kZXJlci9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUM7OztHQUdHO0FBT0gsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1CO2tHQUFuQixtQkFBbUIsdUVDcEJoQyxxeUJBWUE7OzJGRFFhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIEEgc3Bpbm5lciBpY29uIGNvbXBvbmVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXR4LXNwaW5uZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zcGlubmVyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR4U3Bpbm5lckNvbXBvbmVudCB7fVxyXG4iLCI8IS0tXHJcbiAqIExJQ0VOU0VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuLS0+XHJcblxyXG48c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XHJcbiAgICA8cGF0aCBkPVwiTTExLjUzNCA3aDMuOTMyYS4yNS4yNSAwIDAgMSAuMTkyLjQxbC0xLjk2NiAyLjM2YS4yNS4yNSAwIDAgMS0uMzg0IDBsLTEuOTY2LTIuMzZhLjI1LjI1IDAgMCAxIC4xOTItLjQxbS0xMSAyaDMuOTMyYS4yNS4yNSAwIDAgMCAuMTkyLS40MUwyLjY5MiA2LjIzYS4yNS4yNSAwIDAgMC0uMzg0IDBMLjM0MiA4LjU5QS4yNS4yNSAwIDAgMCAuNTM0IDlcIi8+XHJcbiAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IDNjLTEuNTUyIDAtMi45NC43MDctMy44NTcgMS44MThhLjUuNSAwIDEgMS0uNzcxLS42MzZBNi4wMDIgNi4wMDIgMCAwIDEgMTMuOTE3IDdIMTIuOUE1IDUgMCAwIDAgOCAzTTMuMSA5YTUuMDAyIDUuMDAyIDAgMCAwIDguNzU3IDIuMTgyLjUuNSAwIDEgMSAuNzcxLjYzNkE2LjAwMiA2LjAwMiAwIDAgMSAyLjA4MyA5elwiLz5cclxuPC9zdmc+XHJcbiJdfQ==
|
|
@@ -5,51 +5,77 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be found in
|
|
6
6
|
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
7
|
*/
|
|
8
|
-
import { Component, Input } from '@angular/core';
|
|
8
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
9
9
|
import { DatePipe, NgStyle } from '@angular/common';
|
|
10
|
+
import { AtxLogRendererBase } from '../../abstract/log-renderer-base';
|
|
11
|
+
import { TimelineUtil } from '../../../util/timeline.util';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @private
|
|
15
|
+
* The component that displays the timeline of an HTTP response in the ATX monitoring console.
|
|
16
|
+
*/
|
|
17
|
+
export class AtxTimingRendererComponent extends AtxLogRendererBase {
|
|
12
18
|
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
/**
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
13
23
|
this.hasData = false;
|
|
24
|
+
/**
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
14
27
|
this.start = NaN;
|
|
28
|
+
/**
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
15
31
|
this.downloadStart = NaN;
|
|
32
|
+
/**
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
16
35
|
this.downloadLength = NaN;
|
|
36
|
+
/**
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
17
39
|
this.duration = 0;
|
|
40
|
+
/**
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
18
43
|
this.error = false;
|
|
19
44
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.duration = duration;
|
|
30
|
-
if (duration === 0) {
|
|
31
|
-
this.downloadStart = this.downloadLength = 0;
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const downloadLength = Math.round(100 * (duration - stalled) / duration);
|
|
35
|
-
this.downloadStart = 100 - downloadLength;
|
|
36
|
-
this.downloadLength = downloadLength;
|
|
45
|
+
/**
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
set log(value) {
|
|
49
|
+
super.log = value;
|
|
50
|
+
if (!value) {
|
|
51
|
+
this.hasData = this.error = false;
|
|
52
|
+
this.start = this.downloadStart = this.downloadLength = NaN;
|
|
53
|
+
this.duration = 0;
|
|
37
54
|
return;
|
|
38
55
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
56
|
+
const metadata = value.metadata;
|
|
57
|
+
const response = metadata.response;
|
|
58
|
+
if (!response)
|
|
59
|
+
return;
|
|
60
|
+
const requestMetadata = metadata.requestMetadata;
|
|
61
|
+
this.error = response.status >= 400;
|
|
62
|
+
this.hasData = true;
|
|
63
|
+
this.start = requestMetadata.start;
|
|
64
|
+
this.duration = requestMetadata.duration;
|
|
65
|
+
const timelineData = TimelineUtil.getTimelineData(requestMetadata);
|
|
66
|
+
this.downloadStart = timelineData.downloadStart;
|
|
67
|
+
this.downloadLength = timelineData.downloadLength;
|
|
42
68
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxTimingRendererComponent, deps:
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AtxTimingRendererComponent, isStandalone: true, selector: "atx-timing-renderer", inputs: {
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxTimingRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AtxTimingRendererComponent, isStandalone: true, selector: "atx-timing-renderer", inputs: { log: "log" }, usesInheritance: true, ngImport: i0, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n@if (hasData) {\r\n <section class=\"content\">\r\n <dl>\r\n <dt>Connection start</dt>\r\n <dd>{{ start | date: 'short' }}</dd>\r\n </dl>\r\n <dl>\r\n <dt>Request/Response</dt>\r\n <dd class=\"timeline\">\r\n <div>\r\n <div [attr.style]=\"'width:' + downloadStart + '%'\">\r\n stalled\r\n <div class=\"stalled\"></div>\r\n <div class=\"time\">{{ downloadStart }} ms</div>\r\n </div>\r\n <div [attr.style]=\"'width:' + downloadLength + '%;margin-left:' + downloadStart + '%'\">\r\n download\r\n <div class=\"download\" [class.error]=\"error\"></div>\r\n <div class=\"time\">{{ duration }} ms</div>\r\n </div>\r\n </div>\r\n </dd>\r\n </dl>\r\n </section>\r\n} \r\n\r\n", styles: [":host{--border-color: lightblue;--background-color: aliceblue;--selected-color: #d9eeff;--selected-error-color: lavenderblush;--light-gray: whitesmoke;--dark-gray: gainsboro;--header-height: 26px;display:block}:host,table{padding:0;margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;font-size:12px;color:#000;background-color:#fff}menu{padding:0;margin:0;display:flex;align-items:center;gap:6px;list-style:none}table{border-collapse:collapse}th{padding:0 0 0 6px;background-color:var(--background-color);border-bottom:1px solid var(--border-color);position:sticky;top:0}th:not(:last-child){border-right:1px solid var(--border-color)}td{padding:2px 6px;vertical-align:top}tr:nth-child(2n):not(.selected-row){background-color:var(--background-color)}.error-row{color:red}.selected-row{background-color:var(--selected-color)}.error-row.selected-row{background-color:var(--selected-error-color)}tr:hover{background-color:var(--light-gray)!important}th{height:var(--header-height)}.header-btn{margin-left:auto}.header-btn:hover{background-color:var(--selected-color)}.menu-separator{width:0;height:16px;border-right:2px solid var(--dark-gray)}.content{padding:4px 6px}.center-content{display:flex;justify-content:center}summary{-webkit-user-select:none;user-select:none}.download,.stalled{width:100%;height:10px}.stalled{background-color:var(--dark-gray)}.time{text-align:right;padding-right:4px}.download{background-color:#00bfff}.error{background-color:red}dl{margin:0 0 10px}dt{font-weight:700;margin-bottom:4px}dd{width:calc(100% - 40px);margin-left:20px}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
71
|
}
|
|
46
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AtxTimingRendererComponent, decorators: [{
|
|
47
73
|
type: Component,
|
|
48
74
|
args: [{ selector: 'atx-timing-renderer', standalone: true, imports: [
|
|
49
75
|
DatePipe,
|
|
50
76
|
NgStyle
|
|
51
|
-
], template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n
|
|
52
|
-
}], propDecorators: {
|
|
77
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n\r\n@if (hasData) {\r\n <section class=\"content\">\r\n <dl>\r\n <dt>Connection start</dt>\r\n <dd>{{ start | date: 'short' }}</dd>\r\n </dl>\r\n <dl>\r\n <dt>Request/Response</dt>\r\n <dd class=\"timeline\">\r\n <div>\r\n <div [attr.style]=\"'width:' + downloadStart + '%'\">\r\n stalled\r\n <div class=\"stalled\"></div>\r\n <div class=\"time\">{{ downloadStart }} ms</div>\r\n </div>\r\n <div [attr.style]=\"'width:' + downloadLength + '%;margin-left:' + downloadStart + '%'\">\r\n download\r\n <div class=\"download\" [class.error]=\"error\"></div>\r\n <div class=\"time\">{{ duration }} ms</div>\r\n </div>\r\n </div>\r\n </dd>\r\n </dl>\r\n </section>\r\n} \r\n\r\n", styles: [":host{--border-color: lightblue;--background-color: aliceblue;--selected-color: #d9eeff;--selected-error-color: lavenderblush;--light-gray: whitesmoke;--dark-gray: gainsboro;--header-height: 26px;display:block}:host,table{padding:0;margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;font-size:12px;color:#000;background-color:#fff}menu{padding:0;margin:0;display:flex;align-items:center;gap:6px;list-style:none}table{border-collapse:collapse}th{padding:0 0 0 6px;background-color:var(--background-color);border-bottom:1px solid var(--border-color);position:sticky;top:0}th:not(:last-child){border-right:1px solid var(--border-color)}td{padding:2px 6px;vertical-align:top}tr:nth-child(2n):not(.selected-row){background-color:var(--background-color)}.error-row{color:red}.selected-row{background-color:var(--selected-color)}.error-row.selected-row{background-color:var(--selected-error-color)}tr:hover{background-color:var(--light-gray)!important}th{height:var(--header-height)}.header-btn{margin-left:auto}.header-btn:hover{background-color:var(--selected-color)}.menu-separator{width:0;height:16px;border-right:2px solid var(--dark-gray)}.content{padding:4px 6px}.center-content{display:flex;justify-content:center}summary{-webkit-user-select:none;user-select:none}.download,.stalled{width:100%;height:10px}.stalled{background-color:var(--dark-gray)}.time{text-align:right;padding-right:4px}.download{background-color:#00bfff}.error{background-color:red}dl{margin:0 0 10px}dt{font-weight:700;margin-bottom:4px}dd{width:calc(100% - 40px);margin-left:20px}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
78
|
+
}], propDecorators: { log: [{
|
|
53
79
|
type: Input
|
|
54
80
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltaW5nLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAtbW9uaXRvcmluZy1jb25zb2xlL2NvbXBvbmVudC9yZW5kZXJlci90aW1pbmctcmVuZGVyZXIvdGltaW5nLXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAtbW9uaXRvcmluZy1jb25zb2xlL2NvbXBvbmVudC9yZW5kZXJlci90aW1pbmctcmVuZGVyZXIvdGltaW5nLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUUzRDs7O0dBR0c7QUFZSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsa0JBQWtCO0lBWGxFOztRQWFFOztXQUVHO1FBQ08sWUFBTyxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNPLFVBQUssR0FBVyxHQUFHLENBQUM7UUFFOUI7O1dBRUc7UUFDTyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUV0Qzs7V0FFRztRQUNPLG1CQUFjLEdBQVcsR0FBRyxDQUFDO1FBRXZDOztXQUVHO1FBQ08sYUFBUSxHQUFXLENBQUMsQ0FBQztRQUUvQjs7V0FFRztRQUNPLFVBQUssR0FBWSxLQUFLLENBQUM7S0EwQmxDO0lBeEJDOztPQUVHO0lBQ0gsSUFDb0IsR0FBRyxDQUFDLEtBQWlCO1FBQ3ZDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQTRCLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQWtDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3RCLE1BQU0sZUFBZSxHQUE0QixRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQztRQUN6QyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQzs4R0F2RFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsOEhDOUJ2QyxxdkNBa0NBLHEwRERYSSxRQUFROzsyRkFPQywwQkFBMEI7a0JBWHRDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxRQUFRO3dCQUNSLE9BQU87cUJBQ1IsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBc0MzQixHQUFHO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cE1vY2tMb2dnaW5nTWV0YWRhdGEsIEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhLCBMb2cgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXR4TG9nUmVuZGVyZXJCYXNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QvbG9nLXJlbmRlcmVyLWJhc2UnO1xyXG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRpbWVsaW5lVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdGltZWxpbmUudXRpbCc7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogVGhlIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHRoZSB0aW1lbGluZSBvZiBhbiBIVFRQIHJlc3BvbnNlIGluIHRoZSBBVFggbW9uaXRvcmluZyBjb25zb2xlLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHgtdGltaW5nLXJlbmRlcmVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIERhdGVQaXBlLFxyXG4gICAgTmdTdHlsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWluZy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RpbWluZy1yZW5kZXJlci5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEF0eFRpbWluZ1JlbmRlcmVyQ29tcG9uZW50IGV4dGVuZHMgQXR4TG9nUmVuZGVyZXJCYXNlIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaGFzRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHN0YXJ0OiBudW1iZXIgPSBOYU47XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG93bmxvYWRTdGFydDogbnVtYmVyID0gTmFOO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvd25sb2FkTGVuZ3RoOiBudW1iZXIgPSBOYU47XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZHVyYXRpb246IG51bWJlciA9IDA7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgbG9nKHZhbHVlOiBMb2cgfCBudWxsKSB7XHJcbiAgICBzdXBlci5sb2cgPSB2YWx1ZTtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5oYXNEYXRhID0gdGhpcy5lcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5kb3dubG9hZFN0YXJ0ID0gdGhpcy5kb3dubG9hZExlbmd0aCA9IE5hTjtcclxuICAgICAgdGhpcy5kdXJhdGlvbiA9IDA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSA9IHZhbHVlLm1ldGFkYXRhO1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IEh0dHBSZXNwb25zZTxhbnk+IHwgdW5kZWZpbmVkID0gbWV0YWRhdGEucmVzcG9uc2U7XHJcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcbiAgICBjb25zdCByZXF1ZXN0TWV0YWRhdGE6IEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhID0gbWV0YWRhdGEucmVxdWVzdE1ldGFkYXRhO1xyXG4gICAgdGhpcy5lcnJvciA9IHJlc3BvbnNlLnN0YXR1cyA+PSA0MDA7XHJcbiAgICB0aGlzLmhhc0RhdGEgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGFydCA9IHJlcXVlc3RNZXRhZGF0YS5zdGFydDtcclxuICAgIHRoaXMuZHVyYXRpb24gPSByZXF1ZXN0TWV0YWRhdGEuZHVyYXRpb247XHJcbiAgICBjb25zdCB0aW1lbGluZURhdGEgPSBUaW1lbGluZVV0aWwuZ2V0VGltZWxpbmVEYXRhKHJlcXVlc3RNZXRhZGF0YSk7XHJcbiAgICB0aGlzLmRvd25sb2FkU3RhcnQgPSB0aW1lbGluZURhdGEuZG93bmxvYWRTdGFydDtcclxuICAgIHRoaXMuZG93bmxvYWRMZW5ndGggPSB0aW1lbGluZURhdGEuZG93bmxvYWRMZW5ndGg7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS1cclxuICogTElDRU5TRVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxyXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4tLT5cclxuXHJcbkBpZiAoaGFzRGF0YSkge1xyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPGRsPlxyXG4gICAgICAgICAgICA8ZHQ+Q29ubmVjdGlvbiBzdGFydDwvZHQ+XHJcbiAgICAgICAgICAgIDxkZD57eyBzdGFydCB8IGRhdGU6ICdzaG9ydCcgfX08L2RkPlxyXG4gICAgICAgIDwvZGw+XHJcbiAgICAgICAgPGRsPlxyXG4gICAgICAgICAgICA8ZHQ+UmVxdWVzdC9SZXNwb25zZTwvZHQ+XHJcbiAgICAgICAgICAgIDxkZCBjbGFzcz1cInRpbWVsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuc3R5bGVdPVwiJ3dpZHRoOicgKyBkb3dubG9hZFN0YXJ0ICsgJyUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWxsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWxsZWRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVcIj57eyBkb3dubG9hZFN0YXJ0IH19IG1zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbYXR0ci5zdHlsZV09XCInd2lkdGg6JyArIGRvd25sb2FkTGVuZ3RoICsgJyU7bWFyZ2luLWxlZnQ6JyArIGRvd25sb2FkU3RhcnQgKyAnJSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkXCIgW2NsYXNzLmVycm9yXT1cImVycm9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3sgZHVyYXRpb24gfX0gbXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2RkPlxyXG4gICAgICAgIDwvZGw+XHJcbiAgICA8L3NlY3Rpb24+XHJcbn0gXHJcblxyXG4iXX0=
|