@eo-sdk/client 11.14.33 → 11.14.34
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/app/eo-framework/list-container/list-container.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +2 -0
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/viewer/xrechnung-viewer.component.d.ts +7 -2
- package/app/eo-framework/object-details/viewer/xrechnung-viewer.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/viewer/xrechnung-viewer.service.d.ts +6 -1
- package/app/eo-framework/object-details/viewer/xrechnung-viewer.service.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-framework/list-container/list-container.component.mjs +10 -2
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +12 -3
- package/esm2022/app/eo-framework/object-details/viewer/xrechnung-viewer.component.mjs +20 -6
- package/esm2022/app/eo-framework/object-details/viewer/xrechnung-viewer.service.mjs +37 -25
- package/fesm2022/eo-sdk-client.mjs +75 -33
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "./xrechnung-viewer.service";
|
|
4
4
|
import * as i2 from "@angular/platform-browser";
|
|
@@ -13,6 +13,11 @@ export class XRechnungViewerComponent {
|
|
|
13
13
|
this.el = el;
|
|
14
14
|
this.renderer = renderer;
|
|
15
15
|
this.useVersion = false;
|
|
16
|
+
/**
|
|
17
|
+
* Emitted when the loaded content is not a supported e-invoice format.
|
|
18
|
+
* The host then falls back to the default (Monaco) viewer.
|
|
19
|
+
*/
|
|
20
|
+
this.unsupportedFormat = new EventEmitter();
|
|
16
21
|
this.isLoading = this.xmlService.loadingIndicator;
|
|
17
22
|
this.sanitizedContent = null;
|
|
18
23
|
this.previewURL = null;
|
|
@@ -47,6 +52,12 @@ export class XRechnungViewerComponent {
|
|
|
47
52
|
try {
|
|
48
53
|
const fullPreviewUrl = `${location.origin}${this.previewURL}`;
|
|
49
54
|
const invoiceHtml = await this.xmlService.loadAndDisplayXML(fullPreviewUrl);
|
|
55
|
+
if (invoiceHtml == null) {
|
|
56
|
+
// Not a supported e-invoice format (e.g. Polish KSeF "Faktura"):
|
|
57
|
+
// let the host fall back to the default (Monaco) viewer.
|
|
58
|
+
this.unsupportedFormat.emit();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
50
61
|
this.updateIframeContent(invoiceHtml);
|
|
51
62
|
}
|
|
52
63
|
catch (error) {
|
|
@@ -54,14 +65,15 @@ export class XRechnungViewerComponent {
|
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
updateIframeContent(content) {
|
|
57
|
-
if (!this.isViewInitialized
|
|
58
|
-
console.warn('View is not initialized
|
|
68
|
+
if (!this.isViewInitialized) {
|
|
69
|
+
console.warn('View is not initialized.');
|
|
59
70
|
return;
|
|
60
71
|
}
|
|
61
72
|
try {
|
|
73
|
+
// Content is injected through the iframe's [srcdoc] binding, so the
|
|
74
|
+
// ViewChild reference is not required here - detectChanges() renders it.
|
|
62
75
|
this.sanitizedContent = this.domSanitizer.bypassSecurityTrustHtml(content);
|
|
63
76
|
this.cdr.detectChanges();
|
|
64
|
-
console.log('Invoice successfully rendered in iframe.');
|
|
65
77
|
}
|
|
66
78
|
catch (error) {
|
|
67
79
|
console.error('Failed to update iframe content:', error);
|
|
@@ -74,7 +86,7 @@ export class XRechnungViewerComponent {
|
|
|
74
86
|
}
|
|
75
87
|
}
|
|
76
88
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: XRechnungViewerComponent, deps: [{ token: i1.XmlProcessorService }, { token: i2.DomSanitizer }, { token: i3.DmsService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: XRechnungViewerComponent, selector: "eo-xrechnung-viewer", inputs: { useVersion: "useVersion", dmsObject: "dmsObject" }, viewQueries: [{ propertyName: "outputFrame", first: true, predicate: ["outputFrame"], descendants: true }], ngImport: i0, template: `
|
|
89
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: XRechnungViewerComponent, selector: "eo-xrechnung-viewer", inputs: { useVersion: "useVersion", dmsObject: "dmsObject" }, outputs: { unsupportedFormat: "unsupportedFormat" }, viewQueries: [{ propertyName: "outputFrame", first: true, predicate: ["outputFrame"], descendants: true }], ngImport: i0, template: `
|
|
78
90
|
@if (isLoading()) {
|
|
79
91
|
<eo-loading-spinner></eo-loading-spinner>
|
|
80
92
|
} @else {
|
|
@@ -93,10 +105,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
93
105
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:grid;grid-template-columns:1fr;grid-auto-flow:row;grid-template-areas:\"content\";align-items:center;height:100%;justify-content:center}eo-loading-spinner{display:flex;justify-content:center;align-items:center}iframe{grid-area:content;width:100%;height:100%;border:1px solid #ccc}\n"] }]
|
|
94
106
|
}], ctorParameters: () => [{ type: i1.XmlProcessorService }, { type: i2.DomSanitizer }, { type: i3.DmsService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { useVersion: [{
|
|
95
107
|
type: Input
|
|
108
|
+
}], unsupportedFormat: [{
|
|
109
|
+
type: Output
|
|
96
110
|
}], outputFrame: [{
|
|
97
111
|
type: ViewChild,
|
|
98
112
|
args: ['outputFrame']
|
|
99
113
|
}], dmsObject: [{
|
|
100
114
|
type: Input
|
|
101
115
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZGV0YWlscy92aWV3ZXIveHJlY2hudW5nLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUF3Q3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFlbkMsWUFDVSxVQUErQixFQUMvQixZQUEwQixFQUMxQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixFQUFjLEVBQ2QsUUFBbUI7UUFMbkIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQXBCcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7O1dBR0c7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3ZELGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQzdDLHFCQUFnQixHQUFvQixJQUFJLENBQUM7UUFFakMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBUzlCLENBQUM7SUFFTCxJQUNJLFNBQVMsQ0FBQyxJQUFzQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FB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QUFDO0lBQ0gsQ0FBQzs4R0FsR1Usd0JBQXdCO2tHQUF4Qix3QkFBd0IsMFJBakN6Qjs7Ozs7O0dBTVQ7OzJGQTJCVSx3QkFBd0I7a0JBbkNwQyxTQUFTOytCQUNFLHFCQUFxQixZQUNyQjs7Ozs7O0dBTVQsbUJBeUJnQix1QkFBdUIsQ0FBQyxNQUFNOzZOQUd0QyxVQUFVO3NCQUFsQixLQUFLO2dCQUtJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDMkIsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQWtCcEIsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7RG1zT2JqZWN0LCBEbXNTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtYbWxQcm9jZXNzb3JTZXJ2aWNlfSBmcm9tICcuL3hyZWNobnVuZy12aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXhyZWNobnVuZy12aWV3ZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aWZyYW1lICNvdXRwdXRGcmFtZSBbYXR0ci5zcmNkb2NdPVwic2FuaXRpemVkQ29udGVudFwiPjwvaWZyYW1lPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgZ3JpZC1hdXRvLWZsb3c6IHJvdztcbiAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdjb250ZW50JztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICBlby1sb2FkaW5nLXNwaW5uZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICBpZnJhbWUge1xuICAgICAgZ3JpZC1hcmVhOiBjb250ZW50O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAgIH1cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFhSZWNobnVuZ1ZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB1c2VWZXJzaW9uID0gZmFsc2U7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGxvYWRlZCBjb250ZW50IGlzIG5vdCBhIHN1cHBvcnRlZCBlLWludm9pY2UgZm9ybWF0LlxuICAgKiBUaGUgaG9zdCB0aGVuIGZhbGxzIGJhY2sgdG8gdGhlIGRlZmF1bHQgKE1vbmFjbykgdmlld2VyLlxuICAgKi9cbiAgQE91dHB1dCgpIHVuc3VwcG9ydGVkRm9ybWF0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAVmlld0NoaWxkKCdvdXRwdXRGcmFtZScpIHByaXZhdGUgb3V0cHV0RnJhbWUhOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PjtcblxuICBpc0xvYWRpbmcgPSB0aGlzLnhtbFNlcnZpY2UubG9hZGluZ0luZGljYXRvcjtcbiAgc2FuaXRpemVkQ29udGVudDogU2FmZUh0bWwgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHByZXZpZXdVUkw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGlzVmlld0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB4bWxTZXJ2aWNlOiBYbWxQcm9jZXNzb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkbXNPYmplY3QoaXRlbTogRG1zT2JqZWN0IHwgbnVsbCkge1xuICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IG51bGw7XG4gICAgaWYgKCFpdGVtPy5jb250ZW50Py5jb250ZW50cz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge2lkLCB0eXBlfSA9IGl0ZW0uY29udGVudDtcbiAgICB0aGlzLnByZXZpZXdVUkwgPSB0aGlzLmRtc1NlcnZpY2UuZ2V0UHJldmlldyhcbiAgICAgIGlkLFxuICAgICAgdHlwZSxcbiAgICAgIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaXNWaWV3SW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMubG9hZEFuZFJlbmRlclByZXZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgaWYgKHRoaXMucHJldmlld1VSTCkge1xuICAgICAgdGhpcy5sb2FkQW5kUmVuZGVyUHJldmlldygpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudFNlY3Rpb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnc2VjdGlvbltyb2xlPVwidGFicGFuZWxcIl0nKTtcbiAgICBpZiAocGFyZW50U2VjdGlvbikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwYXJlbnRTZWN0aW9uLCAnb3ZlcmZsb3cnLCAnaGlkZGVuJywgMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQW5kUmVuZGVyUHJldmlldygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMucHJldmlld1VSTCkge1xuICAgICAgY29uc29sZS53YXJuKCdQcmV2aWV3IFVSTCBpcyBub3QgYXZhaWxhYmxlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmdWxsUHJldmlld1VybCA9IGAke2xvY2F0aW9uLm9yaWdpbn0ke3RoaXMucHJldmlld1VSTH1gO1xuICAgICAgY29uc3QgaW52b2ljZUh0bWwgPSBhd2FpdCB0aGlzLnhtbFNlcnZpY2UubG9hZEFuZERpc3BsYXlYTUwoZnVsbFByZXZpZXdVcmwpO1xuICAgICAgaWYgKGludm9pY2VIdG1sID09IG51bGwpIHtcbiAgICAgICAgLy8gTm90IGEgc3VwcG9ydGVkIGUtaW52b2ljZSBmb3JtYXQgKGUuZy4gUG9saXNoIEtTZUYgXCJGYWt0dXJhXCIpOlxuICAgICAgICAvLyBsZXQgdGhlIGhvc3QgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IChNb25hY28pIHZpZXdlci5cbiAgICAgICAgdGhpcy51bnN1cHBvcnRlZEZvcm1hdC5lbWl0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlSWZyYW1lQ29udGVudChpbnZvaWNlSHRtbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGFuZCByZW5kZXIgcHJldmlldzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJZnJhbWVDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1ZpZXdJbml0aWFsaXplZCkge1xuICAgICAgY29uc29sZS53YXJuKCdWaWV3IGlzIG5vdCBpbml0aWFsaXplZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gQ29udGVudCBpcyBpbmplY3RlZCB0aHJvdWdoIHRoZSBpZnJhbWUncyBbc3JjZG9jXSBiaW5kaW5nLCBzbyB0aGVcbiAgICAgIC8vIFZpZXdDaGlsZCByZWZlcmVuY2UgaXMgbm90IHJlcXVpcmVkIGhlcmUgLSBkZXRlY3RDaGFuZ2VzKCkgcmVuZGVycyBpdC5cbiAgICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnQpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdXBkYXRlIGlmcmFtZSBjb250ZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IHBhcmVudFNlY3Rpb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnc2VjdGlvbltyb2xlPVwidGFicGFuZWxcIl0nKTtcbiAgICBpZiAocGFyZW50U2VjdGlvbikge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShwYXJlbnRTZWN0aW9uLCAnb3ZlcmZsb3cnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -107,39 +107,51 @@ export class XmlProcessorService {
|
|
|
107
107
|
throw this.#displayError('Exception', errMessage);
|
|
108
108
|
})));
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Picks the matching XSLT transformation for the given XML content.
|
|
112
|
+
* Returns `null` when the XML is not one of the supported e-invoice formats
|
|
113
|
+
* (CII, UBL Invoice/CreditNote, CIO or ZUGFeRD) - e.g. a Polish KSeF "Faktura".
|
|
114
|
+
*/
|
|
115
|
+
#resolveTransform(content, parser) {
|
|
116
|
+
for (const key in parser.parse(content)) {
|
|
117
|
+
if (key.includes('CrossIndustryInvoice')) {
|
|
118
|
+
return this.#transformAndDisplayCII(content);
|
|
119
|
+
}
|
|
120
|
+
else if (key.includes('SCRDMCCBDACIOMessageStructure')) {
|
|
121
|
+
return this.#transformAndDisplayCIO(content);
|
|
122
|
+
}
|
|
123
|
+
else if (key.includes('Invoice')) {
|
|
124
|
+
return this.#transformAndDisplayUBL(content);
|
|
125
|
+
}
|
|
126
|
+
else if (key.includes('CreditNote')) {
|
|
127
|
+
return this.#transformAndDisplayUBLCN(content);
|
|
128
|
+
}
|
|
129
|
+
else if (key.includes('CrossIndustryDocument')) {
|
|
130
|
+
return this.#transformAndDisplayZF1(content);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Loads the XML and transforms it into the e-invoice HTML representation.
|
|
137
|
+
* Resolves to `null` when the format is not a supported e-invoice, so the
|
|
138
|
+
* caller can fall back to the default (Monaco) viewer.
|
|
139
|
+
*/
|
|
110
140
|
async loadAndDisplayXML(xmlUrl) {
|
|
111
141
|
const parser = new XMLParser();
|
|
112
142
|
this.#loading.set(true);
|
|
113
143
|
try {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return this.#transformAndDisplayCII(content);
|
|
118
|
-
}
|
|
119
|
-
else if (key.includes('SCRDMCCBDACIOMessageStructure')) {
|
|
120
|
-
return this.#transformAndDisplayCIO(content);
|
|
121
|
-
}
|
|
122
|
-
else if (key.includes('Invoice')) {
|
|
123
|
-
return this.#transformAndDisplayUBL(content);
|
|
124
|
-
}
|
|
125
|
-
else if (key.includes('CreditNote')) {
|
|
126
|
-
return this.#transformAndDisplayUBLCN(content);
|
|
127
|
-
}
|
|
128
|
-
else if (key.includes('CrossIndustryDocument')) {
|
|
129
|
-
return this.#transformAndDisplayZF1(content);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return of(this.#displayError('File format not recognized', 'Is it a UBL 2.1 or UN/CEFACT 2016b XML file or PDF you are trying to open?'));
|
|
133
|
-
}), finalize(() => this.#loading.set(false)), catchError((error) => {
|
|
134
|
-
const errMessage = error?.message ? error.message : error;
|
|
135
|
-
throw this.#displayError('Exception', errMessage);
|
|
136
|
-
})));
|
|
144
|
+
const content = await firstValueFrom(this.httpClient.get(xmlUrl, { responseType: 'text' }));
|
|
145
|
+
const transform = this.#resolveTransform(content, parser);
|
|
146
|
+
return transform ? await transform : null;
|
|
137
147
|
}
|
|
138
148
|
catch (error) {
|
|
139
149
|
const errMessage = error instanceof Error ? error.message : String(error);
|
|
140
|
-
this.#loading.set(false);
|
|
141
150
|
throw this.#displayError('Exception', errMessage);
|
|
142
151
|
}
|
|
152
|
+
finally {
|
|
153
|
+
this.#loading.set(false);
|
|
154
|
+
}
|
|
143
155
|
}
|
|
144
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: XmlProcessorService, deps: [{ token: i1.HttpClient }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
145
157
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: XmlProcessorService, providedIn: 'root' }); }
|
|
@@ -150,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
150
162
|
providedIn: 'root'
|
|
151
163
|
}]
|
|
152
164
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslateService }] });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLXZpZXdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvdmlld2VyL3hyZWNobnVuZy12aWV3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt4RixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFFBQVEsQ0FBMEI7SUFHbEMsWUFBb0IsVUFBc0IsRUFBVSxnQkFBa0M7UUFBbEUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFIdEYsYUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRTRDLENBQUM7SUFFM0Y7O09BRUc7SUFDSyx3QkFBd0IsQ0FBQyxJQUFZO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsc0NBQXNDLElBQUksT0FBTyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQ2xELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCwyRkFBMkY7WUFDM0YsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMs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LENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUMxRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sVUFBVSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDOzhHQWpMVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBjb25zdCBTYXhvbkpTOiBhbnk7IC8vIERlY2xhcmUgU2F4b25KUyBnbG9iYWxseVxuXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1hNTFBhcnNlcn0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIGZpcnN0VmFsdWVGcm9tLCBmb3JrSm9pbiwgbWFwLCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgWG1sUHJvY2Vzc29yU2VydmljZSB7XG5cbiAgI2xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBsb2FkaW5nSW5kaWNhdG9yID0gdGhpcy4jbG9hZGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBYUmVjaG51bmctc3BlY2lmaWMgdHJhbnNsYXRpb25zIGRpcmVjdGx5IGZyb20gdGhlIHByb3ZpZGVkIGZpbGUgcGF0aC5cbiAgICovXG4gIHByaXZhdGUgZ2V0WFJlY2hudW5nVHJhbnNsYXRpb25zKGxhbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZVBhdGggPSBgYXNzZXRzL19kZWZhdWx0L2FwaS94cmVjaG51bmcvaTE4bi8ke2xhbmd9Lmpzb25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRyYW5zbGF0aW9uRmlsZVBhdGgpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIGxhbmd1YWdlIGlzIGEgc3ViLWxhbmd1YWdlIChlLmcuLCBcImRlLUNIXCIpLCB0cnkgbG9hZGluZyB0aGUgYmFzZSBsYW5ndWFnZSAoXCJkZVwiKS5cbiAgICAgICAgcmV0dXJuIGxhbmcubGVuZ3RoID4gMiA/IHRoaXMuZ2V0WFJlY2hudW5nVHJhbnNsYXRpb25zKGxhbmcuc3Vic3RyaW5nKDAsIDIpKSA6IG9mKHt9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gICNkaXNwbGF5RXJyb3IobWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlsXG4gICAgfTtcbiAgfVxuXG4gICNuYW1lc3BhY2VSZXNvbHZlcihwcmVmaXg6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBucyA9IHtcbiAgICAgIHJzbTogJ3VybjpteS1uYW1lc3BhY2U6cnNtJyxcbiAgICAgIHJhbTogJ3VybjpteS1uYW1lc3BhY2U6cmFtJ1xuICAgIH07XG4gICAgcmV0dXJuIG5zW3ByZWZpeCBhcyBrZXlvZiB0eXBlb2YgbnNdIHx8IG51bGw7XG4gIH1cblxuICBhc3luYyAjdHJhbnNmb3JtQW5kRGlzcGxheShjb250ZW50OiBzdHJpbmcsIHN0eWxlc2hlZXRGaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgIGNvbnN0IHhtbERvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoY29udGVudCwgJ3RleHQveG1sJyk7XG4gICAgY29uc3QgdHlwZWNvZGUgPSB4bWxEb2MuZXZhbHVhdGUoJy8vcnNtOkV4Y2hhbmdlZERvY3VtZW50L3JhbTpUeXBlQ29kZScsIHhtbERvYywgdGhpcy4jbmFtZXNwYWNlUmVzb2x2ZXIsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBpc09yZGVyID0gTnVtYmVyKHR5cGVjb2RlKSA9PT0gMjIwIHx8IE51bWJlcih0eXBlY29kZSkgPT09IDIzMTtcblxuICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoc3R5bGVzaGVldEZpbGVOYW1lLCB7cmVzcG9uc2VUeXBlOiAnanNvbid9KS5waXBlKFxuICAgICAgICBtYXAoKHN0eWxlc2hlZXRJbnRlcm5hbCkgPT5cbiAgICAgICAgICBTYXhvbkpTLnRyYW5zZm9ybSh7XG4gICAgICAgICAgICBzdHlsZXNoZWV0SW50ZXJuYWwsXG4gICAgICAgICAgICBzb3VyY2VUZXh0OiBjb250ZW50LFxuICAgICAgICAgICAgZGVzdGluYXRpb246ICdzZXJpYWxpemVkJ1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgob3V0cHV0OiB7cHJpbmNpcGFsUmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFhSZWNobnVuZ1RyYW5zbGF0aW9ucyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRyYW5zbGF0aW9ucyA9IE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9ucylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5LCBfXSkgPT4ga2V5LnN0YXJ0c1dpdGgoJ3l1di5tZWRpYS52aWV3ZXIuZS5pbnZvaWNlLicpKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gICAgICAgICAgICAgIHJldHVybiB7cHJpbmNpcGFsUmVzdWx0OiBvdXRwdXQucHJpbmNpcGFsUmVzdWx0LCB0cmFuc2xhdGlvbnM6IGZpbHRlcmVkVHJhbnNsYXRpb25zfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvdXRwdXQ6IHtwcmluY2lwYWxSZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPn0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGlzT3JkZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gWydidDFfb3JkZXInLCAnYnQyX29yZGVyJywgJ2J0M19vcmRlcicsICdiZzIyX29yZGVyJywgJ2J0MjVfb3JkZXInLCAnYnQyNl9vcmRlcicsICdkZXRhaWxzX29yZGVyJ107XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsID0ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgeXV2Lm1lZGlhLnZpZXdlci5lLmludm9pY2UuJHtrZXl9YCkucGlwZShtYXAoKHZhbHVlKSA9PiAoe1trZXldOiB2YWx1ZX0pKSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtwcmluY2lwYWxSZXN1bHQsIHRyYW5zbGF0aW9uc30gPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHRyYW5zbCkucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIuZm9yRWFjaCgob3JkZXJUcmFuc2xhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyS2V5ID0gT2JqZWN0LmtleXMob3JkZXJUcmFuc2xhdGlvbilbMF07XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXJWYWx1ZSA9IG9yZGVyVHJhbnNsYXRpb25bb3JkZXJLZXldO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5maW5kKChrZXkpID0+IGtleS5lbmRzV2l0aChvcmRlcktleS5zcGxpdCgnXycpWzBdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbdHJhbnNsYXRpb25LZXldID0gb3JkZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ByaW5jaXBhbFJlc3VsdCwgdHJhbnNsYXRpb25zfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gb2Yob3V0cHV0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgob3V0cHV0OiB7cHJpbmNpcGFsUmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyB0cmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz59KSA9PlxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJ2Fzc2V0cy9fZGVmYXVsdC9hcGkveHJlY2hudW5nL3hzbHQveHJlY2hudW5nLWh0bWwudW5pLnNlZi5qc29uJywge3Jlc3BvbnNlVHlwZTogJ2pzb24nfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3R5bGVzaGVldEludGVybmFsKSA9PlxuICAgICAgICAgICAgICBTYXhvbkpTLnRyYW5zZm9ybSh7XG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldEludGVybmFsLFxuICAgICAgICAgICAgICAgIHNvdXJjZVRleHQ6IG91dHB1dC5wcmluY2lwYWxSZXN1bHQsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb246ICdzZXJpYWxpemVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICBpc09yZGVyOiBpc09yZGVyLFxuICAgICAgICAgICAgICAgICAgc2hvd0lkczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAnUXt9aTE4bic6IG91dHB1dC50cmFuc2xhdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5wcmluY2lwYWxSZXN1bHQpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLiNsb2FkaW5nLnNldChmYWxzZSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICN0cmFuc2Zvcm1BbmREaXNwbGF5Q0lJKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L2NpaS14ci5zZWYuanNvbicpO1xuICB9XG4gICN0cmFuc2Zvcm1BbmREaXNwbGF5VUJMKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L3VibC14ci5zZWYuanNvbicpO1xuICB9XG5cbiAgI3RyYW5zZm9ybUFuZERpc3BsYXlDSU8oY29udGVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3RyYW5zZm9ybUFuZERpc3BsYXkoY29udGVudCwgJ2Fzc2V0cy9fZGVmYXVsdC9hcGkveHJlY2hudW5nL3hzbHQvY2lvLXhyLnNlZi5qc29uJyk7XG4gIH1cblxuICAjdHJhbnNmb3JtQW5kRGlzcGxheVVCTENOKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L3VibC1jcmVkaXRub3RlLXhyLnNlZi5qc29uJyk7XG4gIH1cblxuICBhc3luYyAjdHJhbnNmb3JtQW5kRGlzcGxheVpGMShjb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L1pVR0ZlUkRfMXAwX2MxcDBfczFwMC5zZWYuanNvbicsIHtyZXNwb25zZVR5cGU6ICdqc29uJ30pLnBpcGUoXG4gICAgICAgIG1hcCgoc3R5bGVzaGVldEludGVybmFsKSA9PlxuICAgICAgICAgIFNheG9uSlMudHJhbnNmb3JtKHtcbiAgICAgICAgICAgIHN0eWxlc2hlZXRJbnRlcm5hbCxcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IGNvbnRlbnQsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogJ3NlcmlhbGl6ZWQnXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UucHJpbmNpcGFsUmVzdWx0KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jbG9hZGluZy5zZXQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyb3I/Lm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgICAgICAgdGhyb3cgdGhpcy4jZGlzcGxheUVycm9yKCdFeGNlcHRpb24nLCBlcnJNZXNzYWdlKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFuZERpc3BsYXlYTUwoeG1sVXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgdGhpcy4jbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCh4bWxVcmwsIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pLnBpcGUoXG4gICAgICAgICAgbWFwKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJzZXIucGFyc2UoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnQ3Jvc3NJbmR1c3RyeUludm9pY2UnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5Q0lJKGNvbnRlbnQpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcygnU0NSRE1DQ0JEQUNJT01lc3NhZ2VTdHJ1Y3R1cmUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5Q0lPKGNvbnRlbnQpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcygnSW52b2ljZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3RyYW5zZm9ybUFuZERpc3BsYXlVQkwoY29udGVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKCdDcmVkaXROb3RlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jdHJhbnNmb3JtQW5kRGlzcGxheVVCTENOKGNvbnRlbnQpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcygnQ3Jvc3NJbmR1c3RyeURvY3VtZW50JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jdHJhbnNmb3JtQW5kRGlzcGxheVpGMShjb250ZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuI2Rpc3BsYXlFcnJvcignRmlsZSBmb3JtYXQgbm90IHJlY29nbml6ZWQnLCAnSXMgaXQgYSBVQkwgMi4xIG9yIFVOL0NFRkFDVCAyMDE2YiBYTUwgZmlsZSBvciBQREYgeW91IGFyZSB0cnlpbmcgdG8gb3Blbj8nKSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jbG9hZGluZy5zZXQoZmFsc2UpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyTWVzc2FnZSA9IGVycm9yPy5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgICAgICAgICAgdGhyb3cgdGhpcy4jZGlzcGxheUVycm9yKCdFeGNlcHRpb24nLCBlcnJNZXNzYWdlKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgdGhpcy4jbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhyb3cgdGhpcy4jZGlzcGxheUVycm9yKCdFeGNlcHRpb24nLCBlcnJNZXNzYWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLXZpZXdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvdmlld2VyL3hyZWNobnVuZy12aWV3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt4RixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFFBQVEsQ0FBMEI7SUFHbEMsWUFBb0IsVUFBc0IsRUFBVSxnQkFBa0M7UUFBbEUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFIdEYsYUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRTRDLENBQUM7SUFFM0Y7O09BRUc7SUFDSyx3QkFBd0IsQ0FBQyxJQUFZO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsc0NBQXNDLElBQUksT0FBTyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQ2xELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCwyRkFBMkY7WUFDM0YsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMs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QUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRSxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOzhHQXZMVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBjb25zdCBTYXhvbkpTOiBhbnk7IC8vIERlY2xhcmUgU2F4b25KUyBnbG9iYWxseVxuXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1hNTFBhcnNlcn0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIGZpcnN0VmFsdWVGcm9tLCBmb3JrSm9pbiwgbWFwLCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgWG1sUHJvY2Vzc29yU2VydmljZSB7XG5cbiAgI2xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBsb2FkaW5nSW5kaWNhdG9yID0gdGhpcy4jbG9hZGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBYUmVjaG51bmctc3BlY2lmaWMgdHJhbnNsYXRpb25zIGRpcmVjdGx5IGZyb20gdGhlIHByb3ZpZGVkIGZpbGUgcGF0aC5cbiAgICovXG4gIHByaXZhdGUgZ2V0WFJlY2hudW5nVHJhbnNsYXRpb25zKGxhbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZVBhdGggPSBgYXNzZXRzL19kZWZhdWx0L2FwaS94cmVjaG51bmcvaTE4bi8ke2xhbmd9Lmpzb25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRyYW5zbGF0aW9uRmlsZVBhdGgpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIGxhbmd1YWdlIGlzIGEgc3ViLWxhbmd1YWdlIChlLmcuLCBcImRlLUNIXCIpLCB0cnkgbG9hZGluZyB0aGUgYmFzZSBsYW5ndWFnZSAoXCJkZVwiKS5cbiAgICAgICAgcmV0dXJuIGxhbmcubGVuZ3RoID4gMiA/IHRoaXMuZ2V0WFJlY2hudW5nVHJhbnNsYXRpb25zKGxhbmcuc3Vic3RyaW5nKDAsIDIpKSA6IG9mKHt9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gICNkaXNwbGF5RXJyb3IobWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlsXG4gICAgfTtcbiAgfVxuXG4gICNuYW1lc3BhY2VSZXNvbHZlcihwcmVmaXg6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBucyA9IHtcbiAgICAgIHJzbTogJ3VybjpteS1uYW1lc3BhY2U6cnNtJyxcbiAgICAgIHJhbTogJ3VybjpteS1uYW1lc3BhY2U6cmFtJ1xuICAgIH07XG4gICAgcmV0dXJuIG5zW3ByZWZpeCBhcyBrZXlvZiB0eXBlb2YgbnNdIHx8IG51bGw7XG4gIH1cblxuICBhc3luYyAjdHJhbnNmb3JtQW5kRGlzcGxheShjb250ZW50OiBzdHJpbmcsIHN0eWxlc2hlZXRGaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgIGNvbnN0IHhtbERvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoY29udGVudCwgJ3RleHQveG1sJyk7XG4gICAgY29uc3QgdHlwZWNvZGUgPSB4bWxEb2MuZXZhbHVhdGUoJy8vcnNtOkV4Y2hhbmdlZERvY3VtZW50L3JhbTpUeXBlQ29kZScsIHhtbERvYywgdGhpcy4jbmFtZXNwYWNlUmVzb2x2ZXIsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBpc09yZGVyID0gTnVtYmVyKHR5cGVjb2RlKSA9PT0gMjIwIHx8IE51bWJlcih0eXBlY29kZSkgPT09IDIzMTtcblxuICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoc3R5bGVzaGVldEZpbGVOYW1lLCB7cmVzcG9uc2VUeXBlOiAnanNvbid9KS5waXBlKFxuICAgICAgICBtYXAoKHN0eWxlc2hlZXRJbnRlcm5hbCkgPT5cbiAgICAgICAgICBTYXhvbkpTLnRyYW5zZm9ybSh7XG4gICAgICAgICAgICBzdHlsZXNoZWV0SW50ZXJuYWwsXG4gICAgICAgICAgICBzb3VyY2VUZXh0OiBjb250ZW50LFxuICAgICAgICAgICAgZGVzdGluYXRpb246ICdzZXJpYWxpemVkJ1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgob3V0cHV0OiB7cHJpbmNpcGFsUmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFhSZWNobnVuZ1RyYW5zbGF0aW9ucyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRyYW5zbGF0aW9ucyA9IE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9ucylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5LCBfXSkgPT4ga2V5LnN0YXJ0c1dpdGgoJ3l1di5tZWRpYS52aWV3ZXIuZS5pbnZvaWNlLicpKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gICAgICAgICAgICAgIHJldHVybiB7cHJpbmNpcGFsUmVzdWx0OiBvdXRwdXQucHJpbmNpcGFsUmVzdWx0LCB0cmFuc2xhdGlvbnM6IGZpbHRlcmVkVHJhbnNsYXRpb25zfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvdXRwdXQ6IHtwcmluY2lwYWxSZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPn0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGlzT3JkZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gWydidDFfb3JkZXInLCAnYnQyX29yZGVyJywgJ2J0M19vcmRlcicsICdiZzIyX29yZGVyJywgJ2J0MjVfb3JkZXInLCAnYnQyNl9vcmRlcicsICdkZXRhaWxzX29yZGVyJ107XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsID0ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgeXV2Lm1lZGlhLnZpZXdlci5lLmludm9pY2UuJHtrZXl9YCkucGlwZShtYXAoKHZhbHVlKSA9PiAoe1trZXldOiB2YWx1ZX0pKSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtwcmluY2lwYWxSZXN1bHQsIHRyYW5zbGF0aW9uc30gPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHRyYW5zbCkucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIuZm9yRWFjaCgob3JkZXJUcmFuc2xhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyS2V5ID0gT2JqZWN0LmtleXMob3JkZXJUcmFuc2xhdGlvbilbMF07XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXJWYWx1ZSA9IG9yZGVyVHJhbnNsYXRpb25bb3JkZXJLZXldO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5maW5kKChrZXkpID0+IGtleS5lbmRzV2l0aChvcmRlcktleS5zcGxpdCgnXycpWzBdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbdHJhbnNsYXRpb25LZXldID0gb3JkZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ByaW5jaXBhbFJlc3VsdCwgdHJhbnNsYXRpb25zfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gb2Yob3V0cHV0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgob3V0cHV0OiB7cHJpbmNpcGFsUmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyB0cmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz59KSA9PlxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJ2Fzc2V0cy9fZGVmYXVsdC9hcGkveHJlY2hudW5nL3hzbHQveHJlY2hudW5nLWh0bWwudW5pLnNlZi5qc29uJywge3Jlc3BvbnNlVHlwZTogJ2pzb24nfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3R5bGVzaGVldEludGVybmFsKSA9PlxuICAgICAgICAgICAgICBTYXhvbkpTLnRyYW5zZm9ybSh7XG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldEludGVybmFsLFxuICAgICAgICAgICAgICAgIHNvdXJjZVRleHQ6IG91dHB1dC5wcmluY2lwYWxSZXN1bHQsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb246ICdzZXJpYWxpemVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICBpc09yZGVyOiBpc09yZGVyLFxuICAgICAgICAgICAgICAgICAgc2hvd0lkczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAnUXt9aTE4bic6IG91dHB1dC50cmFuc2xhdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5wcmluY2lwYWxSZXN1bHQpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLiNsb2FkaW5nLnNldChmYWxzZSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICN0cmFuc2Zvcm1BbmREaXNwbGF5Q0lJKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L2NpaS14ci5zZWYuanNvbicpO1xuICB9XG4gICN0cmFuc2Zvcm1BbmREaXNwbGF5VUJMKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L3VibC14ci5zZWYuanNvbicpO1xuICB9XG5cbiAgI3RyYW5zZm9ybUFuZERpc3BsYXlDSU8oY29udGVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3RyYW5zZm9ybUFuZERpc3BsYXkoY29udGVudCwgJ2Fzc2V0cy9fZGVmYXVsdC9hcGkveHJlY2hudW5nL3hzbHQvY2lvLXhyLnNlZi5qc29uJyk7XG4gIH1cblxuICAjdHJhbnNmb3JtQW5kRGlzcGxheVVCTENOKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5KGNvbnRlbnQsICdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L3VibC1jcmVkaXRub3RlLXhyLnNlZi5qc29uJyk7XG4gIH1cblxuICBhc3luYyAjdHJhbnNmb3JtQW5kRGlzcGxheVpGMShjb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCdhc3NldHMvX2RlZmF1bHQvYXBpL3hyZWNobnVuZy94c2x0L1pVR0ZlUkRfMXAwX2MxcDBfczFwMC5zZWYuanNvbicsIHtyZXNwb25zZVR5cGU6ICdqc29uJ30pLnBpcGUoXG4gICAgICAgIG1hcCgoc3R5bGVzaGVldEludGVybmFsKSA9PlxuICAgICAgICAgIFNheG9uSlMudHJhbnNmb3JtKHtcbiAgICAgICAgICAgIHN0eWxlc2hlZXRJbnRlcm5hbCxcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IGNvbnRlbnQsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogJ3NlcmlhbGl6ZWQnXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UucHJpbmNpcGFsUmVzdWx0KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jbG9hZGluZy5zZXQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyb3I/Lm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgICAgICAgdGhyb3cgdGhpcy4jZGlzcGxheUVycm9yKCdFeGNlcHRpb24nLCBlcnJNZXNzYWdlKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBpY2tzIHRoZSBtYXRjaGluZyBYU0xUIHRyYW5zZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gWE1MIGNvbnRlbnQuXG4gICAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIFhNTCBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgZS1pbnZvaWNlIGZvcm1hdHNcbiAgICogKENJSSwgVUJMIEludm9pY2UvQ3JlZGl0Tm90ZSwgQ0lPIG9yIFpVR0ZlUkQpIC0gZS5nLiBhIFBvbGlzaCBLU2VGIFwiRmFrdHVyYVwiLlxuICAgKi9cbiAgI3Jlc29sdmVUcmFuc2Zvcm0oY29udGVudDogc3RyaW5nLCBwYXJzZXI6IFhNTFBhcnNlcik6IFByb21pc2U8c3RyaW5nPiB8IG51bGwge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcnNlci5wYXJzZShjb250ZW50KSkge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygnQ3Jvc3NJbmR1c3RyeUludm9pY2UnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy4jdHJhbnNmb3JtQW5kRGlzcGxheUNJSShjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKCdTQ1JETUNDQkRBQ0lPTWVzc2FnZVN0cnVjdHVyZScpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1BbmREaXNwbGF5Q0lPKGNvbnRlbnQpO1xuICAgICAgfSBlbHNlIGlmIChrZXkuaW5jbHVkZXMoJ0ludm9pY2UnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy4jdHJhbnNmb3JtQW5kRGlzcGxheVVCTChjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKCdDcmVkaXROb3RlJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RyYW5zZm9ybUFuZERpc3BsYXlVQkxDTihjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKCdDcm9zc0luZHVzdHJ5RG9jdW1lbnQnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy4jdHJhbnNmb3JtQW5kRGlzcGxheVpGMShjb250ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIFhNTCBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIHRoZSBlLWludm9pY2UgSFRNTCByZXByZXNlbnRhdGlvbi5cbiAgICogUmVzb2x2ZXMgdG8gYG51bGxgIHdoZW4gdGhlIGZvcm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgZS1pbnZvaWNlLCBzbyB0aGVcbiAgICogY2FsbGVyIGNhbiBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgKE1vbmFjbykgdmlld2VyLlxuICAgKi9cbiAgYXN5bmMgbG9hZEFuZERpc3BsYXlYTUwoeG1sVXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgdGhpcy4jbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuZ2V0KHhtbFVybCwge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSkpO1xuICAgICAgY29uc3QgdHJhbnNmb3JtID0gdGhpcy4jcmVzb2x2ZVRyYW5zZm9ybShjb250ZW50LCBwYXJzZXIpO1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybSA/IGF3YWl0IHRyYW5zZm9ybSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IGVyck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICB0aHJvdyB0aGlzLiNkaXNwbGF5RXJyb3IoJ0V4Y2VwdGlvbicsIGVyck1lc3NhZ2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLiNsb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|