@rivet-health/design-system 2.22.0 → 2.23.0
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/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +63 -0
- package/esm2020/lib/format/truncate/truncate.component.mjs +50 -0
- package/esm2020/lib/modal/tooltip/tooltip.directive.mjs +1 -1
- package/esm2020/lib/riv.module.mjs +11 -1
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +5 -4
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/rivet-health-design-system.mjs +270 -154
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +268 -154
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +14 -0
- package/lib/format/truncate/truncate.component.d.ts +17 -0
- package/lib/modal/tooltip/tooltip.directive.d.ts +2 -2
- package/lib/riv.module.d.ts +10 -8
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import { TooltipDirective } from '../../modal/tooltip/tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// Credit to boneskull on Github, whose work I used as a reference
|
|
5
|
+
export class SVGTextTruncateDirective extends TooltipDirective {
|
|
6
|
+
constructor(el, applicationRef) {
|
|
7
|
+
super(el, applicationRef);
|
|
8
|
+
this.el = el;
|
|
9
|
+
this.applicationRef = applicationRef;
|
|
10
|
+
this.text = '';
|
|
11
|
+
this.width = 50;
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.svgTruncate(this.el.nativeElement);
|
|
15
|
+
}
|
|
16
|
+
// Truncate through setting strings as the text-content and testing their width
|
|
17
|
+
svgTruncate(element) {
|
|
18
|
+
let currentLength = this.text.length;
|
|
19
|
+
element.textContent = this.text;
|
|
20
|
+
// If the text can fit in the given width, no truncation needed.
|
|
21
|
+
if (currentLength > 0 &&
|
|
22
|
+
element.getSubStringLength(0, currentLength) <= this.width) {
|
|
23
|
+
element.textContent = this.text;
|
|
24
|
+
this.rivTooltip = '';
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
/*
|
|
28
|
+
Test the length of each "substring + ..." combo until we find one that fits.
|
|
29
|
+
Start by making room for the elipses by subtracting 3 from the length.
|
|
30
|
+
*/
|
|
31
|
+
currentLength = currentLength - 3;
|
|
32
|
+
let currentTextFitsInWidth = false;
|
|
33
|
+
while (currentLength > 0 && !currentTextFitsInWidth) {
|
|
34
|
+
const currentTextToTry = this.text.slice(0, currentLength) + '...';
|
|
35
|
+
element.textContent = currentTextToTry;
|
|
36
|
+
if (element.getSubStringLength(0, currentTextToTry.length) <= this.width) {
|
|
37
|
+
currentTextFitsInWidth = true;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
currentLength--;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// If we end up not finding a width of text that works, display just the ellipses.
|
|
44
|
+
if (!currentTextFitsInWidth) {
|
|
45
|
+
element.textContent = '...';
|
|
46
|
+
}
|
|
47
|
+
this.rivTooltip = this.text;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
SVGTextTruncateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SVGTextTruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
+
SVGTextTruncateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SVGTextTruncateDirective, selector: "svg text[rivSVGTextTruncate]", inputs: { text: "text", width: "width" }, usesInheritance: true, ngImport: i0 });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SVGTextTruncateDirective, decorators: [{
|
|
54
|
+
type: Directive,
|
|
55
|
+
args: [{
|
|
56
|
+
selector: 'svg text[rivSVGTextTruncate]',
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ApplicationRef }]; }, propDecorators: { text: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], width: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXRleHQtdHJ1bmNhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvZm9ybWF0L3N2Zy10ZXh0LXRydW5jYXRlL3N2Zy10ZXh0LXRydW5jYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFekUsa0VBQWtFO0FBSWxFLE1BQU0sT0FBTyx3QkFDWCxTQUFRLGdCQUFnQjtJQVN4QixZQUM4QixFQUFjLEVBQ2QsY0FBOEI7UUFFMUQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUhFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFQNUQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUdsQixVQUFLLEdBQVcsRUFBRSxDQUFDO0lBT25CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsV0FBVyxDQUFDLE9BQThCO1FBQ3hDLElBQUksYUFBYSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTdDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxnRUFBZ0U7UUFDaEUsSUFDRSxhQUFhLEdBQUcsQ0FBQztZQUNqQixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQzFEO1lBQ0EsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDTDs7O2NBR0U7WUFDRixhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLHNCQUFzQixHQUFZLEtBQUssQ0FBQztZQUM1QyxPQUFPLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDbkQsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFFNUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztnQkFFdkMsSUFDRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQ3BFO29CQUNBLHNCQUFzQixHQUFHLElBQUksQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsYUFBYSxFQUFFLENBQUM7aUJBQ2pCO2FBQ0Y7WUFFRCxrRkFBa0Y7WUFDbEYsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMzQixPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUM3QjtJQUNILENBQUM7O3FIQTdEVSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7aUJBQ3pDOzhIQU1DLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuLy8gQ3JlZGl0IHRvIGJvbmVza3VsbCBvbiBHaXRodWIsIHdob3NlIHdvcmsgSSB1c2VkIGFzIGEgcmVmZXJlbmNlXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdzdmcgdGV4dFtyaXZTVkdUZXh0VHJ1bmNhdGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlXG4gIGV4dGVuZHMgVG9vbHRpcERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICB0ZXh0OiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICB3aWR0aDogbnVtYmVyID0gNTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge1xuICAgIHN1cGVyKGVsLCBhcHBsaWNhdGlvblJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN2Z1RydW5jYXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvLyBUcnVuY2F0ZSB0aHJvdWdoIHNldHRpbmcgc3RyaW5ncyBhcyB0aGUgdGV4dC1jb250ZW50IGFuZCB0ZXN0aW5nIHRoZWlyIHdpZHRoXG4gIHN2Z1RydW5jYXRlKGVsZW1lbnQ6IFNWR1RleHRDb250ZW50RWxlbWVudCkge1xuICAgIGxldCBjdXJyZW50TGVuZ3RoOiBudW1iZXIgPSB0aGlzLnRleHQubGVuZ3RoO1xuXG4gICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMudGV4dDtcbiAgICAvLyBJZiB0aGUgdGV4dCBjYW4gZml0IGluIHRoZSBnaXZlbiB3aWR0aCwgbm8gdHJ1bmNhdGlvbiBuZWVkZWQuXG4gICAgaWYgKFxuICAgICAgY3VycmVudExlbmd0aCA+IDAgJiZcbiAgICAgIGVsZW1lbnQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIGN1cnJlbnRMZW5ndGgpIDw9IHRoaXMud2lkdGhcbiAgICApIHtcbiAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnRleHQ7XG4gICAgICB0aGlzLnJpdlRvb2x0aXAgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLypcbiAgICAgICAgVGVzdCB0aGUgbGVuZ3RoIG9mIGVhY2ggXCJzdWJzdHJpbmcgKyAuLi5cIiBjb21ibyB1bnRpbCB3ZSBmaW5kIG9uZSB0aGF0IGZpdHMuXG4gICAgICAgIFN0YXJ0IGJ5IG1ha2luZyByb29tIGZvciB0aGUgZWxpcHNlcyBieSBzdWJ0cmFjdGluZyAzIGZyb20gdGhlIGxlbmd0aC5cbiAgICAgICovXG4gICAgICBjdXJyZW50TGVuZ3RoID0gY3VycmVudExlbmd0aCAtIDM7XG4gICAgICBsZXQgY3VycmVudFRleHRGaXRzSW5XaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGN1cnJlbnRMZW5ndGggPiAwICYmICFjdXJyZW50VGV4dEZpdHNJbldpZHRoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0VG9Ucnk6IHN0cmluZyA9XG4gICAgICAgICAgdGhpcy50ZXh0LnNsaWNlKDAsIGN1cnJlbnRMZW5ndGgpICsgJy4uLic7XG5cbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGN1cnJlbnRUZXh0VG9Ucnk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVsZW1lbnQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIGN1cnJlbnRUZXh0VG9UcnkubGVuZ3RoKSA8PSB0aGlzLndpZHRoXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRUZXh0Rml0c0luV2lkdGggPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRMZW5ndGgtLTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBlbmQgdXAgbm90IGZpbmRpbmcgYSB3aWR0aCBvZiB0ZXh0IHRoYXQgd29ya3MsIGRpc3BsYXkganVzdCB0aGUgZWxsaXBzZXMuXG4gICAgICBpZiAoIWN1cnJlbnRUZXh0Rml0c0luV2lkdGgpIHtcbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICcuLi4nO1xuICAgICAgfVxuICAgICAgdGhpcy5yaXZUb29sdGlwID0gdGhpcy50ZXh0O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostListener, Input, Self, } from '@angular/core';
|
|
2
|
+
import { TooltipDirective } from '../../modal/tooltip/tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../modal/tooltip/tooltip.directive";
|
|
5
|
+
function scrolled(element) {
|
|
6
|
+
return element.offsetWidth < element.scrollWidth;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Truncate the text to one line. When truncated, display the full text in a tooltip.
|
|
10
|
+
*/
|
|
11
|
+
export class TruncateComponent {
|
|
12
|
+
constructor(element,
|
|
13
|
+
// For performance reasons, take more control
|
|
14
|
+
tooltip) {
|
|
15
|
+
this.element = element;
|
|
16
|
+
this.tooltip = tooltip;
|
|
17
|
+
this.maxTooltipWidth = '200px';
|
|
18
|
+
}
|
|
19
|
+
enter() {
|
|
20
|
+
if (scrolled(this.element.nativeElement)) {
|
|
21
|
+
this.tooltip.rivTooltip = this.element.nativeElement.textContent;
|
|
22
|
+
this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;
|
|
23
|
+
this.tooltip.onMouseEnter();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
leave() {
|
|
27
|
+
this.tooltip.onMouseLeave();
|
|
28
|
+
}
|
|
29
|
+
// For the auto-complete textbox.
|
|
30
|
+
scrollIntoView() {
|
|
31
|
+
this.element.nativeElement.scrollIntoView(false);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
TruncateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TruncateComponent, deps: [{ token: i0.ElementRef }, { token: i1.TooltipDirective, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
TruncateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TruncateComponent, selector: "[rivTruncate]", inputs: { maxTooltipWidth: "maxTooltipWidth" }, host: { listeners: { "mouseenter": "enter()", "mouseleave": "leave()" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a:host{display:block;max-width:100%}\n"], viewProviders: [TooltipDirective], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TruncateComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: '[rivTruncate]', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [TooltipDirective], template: "<ng-content></ng-content>\n", styles: [":host{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a:host{display:block;max-width:100%}\n"] }]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TooltipDirective, decorators: [{
|
|
40
|
+
type: Self
|
|
41
|
+
}] }]; }, propDecorators: { maxTooltipWidth: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], enter: [{
|
|
44
|
+
type: HostListener,
|
|
45
|
+
args: ['mouseenter']
|
|
46
|
+
}], leave: [{
|
|
47
|
+
type: HostListener,
|
|
48
|
+
args: ['mouseleave']
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvZm9ybWF0L3RydW5jYXRlL3RydW5jYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2Zvcm1hdC90cnVuY2F0ZS90cnVuY2F0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRXpFLFNBQVMsUUFBUSxDQUFDLE9BQW9CO0lBQ3BDLE9BQU8sT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7R0FFRztBQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDbUIsT0FBbUI7SUFDcEMsNkNBQTZDO0lBQ3BCLE9BQXlCO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFFWCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUlwRCxvQkFBZSxHQUFXLE9BQU8sQ0FBQztJQUgvQixDQUFDO0lBTUosS0FBSztRQUNILElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUdELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsY0FBYztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs4R0EzQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ0xDeEI5Qiw2QkFDQSxxSURxQmlCLENBQUMsZ0JBQWdCLENBQUM7MkZBRXRCLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLENBQUMsZ0JBQWdCLENBQUM7OzBCQU05QixJQUFJOzRDQUlQLGVBQWU7c0JBRGQsS0FBSztnQkFJTixLQUFLO3NCQURKLFlBQVk7dUJBQUMsWUFBWTtnQkFVMUIsS0FBSztzQkFESixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuZnVuY3Rpb24gc2Nyb2xsZWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0V2lkdGggPCBlbGVtZW50LnNjcm9sbFdpZHRoO1xufVxuXG4vKipcbiAqIFRydW5jYXRlIHRoZSB0ZXh0IHRvIG9uZSBsaW5lLiBXaGVuIHRydW5jYXRlZCwgZGlzcGxheSB0aGUgZnVsbCB0ZXh0IGluIGEgdG9vbHRpcC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3JpdlRydW5jYXRlXScsXG4gIHN0eWxlVXJsczogWycuL3RydW5jYXRlLmNvbXBvbmVudC5jc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydW5jYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtUb29sdGlwRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRha2UgbW9yZSBjb250cm9sXG4gICAgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBEaXJlY3RpdmUsXG4gICkge31cblxuICBASW5wdXQoKVxuICBtYXhUb29sdGlwV2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIGVudGVyKCkge1xuICAgIGlmIChzY3JvbGxlZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yaXZUb29sdGlwID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICB0aGlzLnRvb2x0aXAucml2VG9vbHRpcE1heFdpZHRoID0gdGhpcy5tYXhUb29sdGlwV2lkdGg7XG4gICAgICB0aGlzLnRvb2x0aXAub25Nb3VzZUVudGVyKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIGxlYXZlKCkge1xuICAgIHRoaXMudG9vbHRpcC5vbk1vdXNlTGVhdmUoKTtcbiAgfVxuXG4gIC8vIEZvciB0aGUgYXV0by1jb21wbGV0ZSB0ZXh0Ym94LlxuICBzY3JvbGxJbnRvVmlldygpIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
70
70
|
type: HostListener,
|
|
71
71
|
args: ['mouseleave']
|
|
72
72
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEyQixnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUtoRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ3FCLEVBQWMsRUFDZCxjQUE4QjtRQUQ5QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBT25ELG9CQUFlLEdBQXFCLE1BQU0sQ0FBQztRQUczQyx1QkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQztRQUd4RCxnQ0FBMkIsR0FBNEIsWUFBWSxDQUFDO1FBR3BFLHlCQUFvQixHQUFXLEdBQUcsQ0FBQztJQWZoQyxDQUFDO0lBb0J3QixZQUFZO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtpQkFDdkQsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2lCQUNyQixlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3BELE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1lBQ3RFLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUUyQixZQUFZO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzZHQTVEVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6Qjs4SEFRQyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTiwyQkFBMkI7c0JBRDFCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQU1zQixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBbUJFLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sdGlwQW5jaG9yZWRQb3NpdGlvbiwgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vdG9vbHRpcC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcml2VG9vbHRpcF0nLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge31cblxuICBASW5wdXQoKVxuICByaXZUb29sdGlwPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgcml2VG9vbHRpcFRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2RhcmsnO1xuXG4gIEBJbnB1dCgpXG4gIHJpdlRvb2x0aXBNYXhXaWR0aCA9ICdjYWxjKHZhcigtLWJhc2UtZ3JpZC1zaXplKSAqIDUwKSc7XG5cbiAgQElucHV0KClcbiAgcml2VG9vbHRpcFByZWZlcnJlZFBvc2l0aW9uOiBUb29sdGlwQW5jaG9yZWRQb3NpdGlvbiA9ICd0b3AtY2VudGVyJztcblxuICBASW5wdXQoKVxuICByaXZUb29sdGlwQ2xvc2VEZWxheTogbnVtYmVyID0gMTAwO1xuXG4gIHByaXZhdGUgdG9vbHRpcFJlZj86IENvbXBvbmVudFJlZjxUb29sdGlwQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBjbG9zZVRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAoIXRoaXMucml2VG9vbHRpcCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIHRoaXMuY2FuY2VsQ2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMuYXBwbGljYXRpb25SZWYuY29tcG9uZW50c1swXS5pbmplY3RvclxuICAgICAgICAuZ2V0KFZpZXdDb250YWluZXJSZWYpXG4gICAgICAgIC5jcmVhdGVDb21wb25lbnQoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgICB0b29sdGlwLmluc3RhbmNlLmFuY2hvciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UuY29udGVudCA9IHRoaXMucml2VG9vbHRpcDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UudGhlbWUgPSB0aGlzLnJpdlRvb2x0aXBUaGVtZTtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UubWF4V2lkdGggPSB0aGlzLnJpdlRvb2x0aXBNYXhXaWR0aDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UucHJlZmVycmVkUG9zaXRpb24gPSB0aGlzLnJpdlRvb2x0aXBQcmVmZXJyZWRQb3NpdGlvbjtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2Uub25Nb3VzZUVudGVyLnN1YnNjcmliZSh0aGlzLmNhbmNlbENsb3NlLmJpbmQodGhpcykpO1xuICAgICAgdG9vbHRpcC5pbnN0YW5jZS5vbk1vdXNlTGVhdmUuc3Vic2NyaWJlKHRoaXMuaW5pdGlhdGVDbG9zZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHRvb2x0aXA7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmluaXRpYXRlQ2xvc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhdGVDbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWF0ZUNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50b29sdGlwUmVmPy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYgPSB1bmRlZmluZWQ7XG4gICAgfSwgdGhpcy5yaXZUb29sdGlwQ2xvc2VEZWxheSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbENsb3NlKCkge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVvdXQpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,8 @@ import { DollarsPipe } from './format/pipes/dollars.pipe';
|
|
|
7
7
|
import { NumberPipe } from './format/pipes/number.pipe';
|
|
8
8
|
import { PercentagePipe } from './format/pipes/percentage.pipe';
|
|
9
9
|
import { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';
|
|
10
|
+
import { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';
|
|
11
|
+
import { TruncateComponent } from './format/truncate/truncate.component';
|
|
10
12
|
import { IconComponent } from './icon/icon.component';
|
|
11
13
|
import { ButtonComponent } from './input/button/button.component';
|
|
12
14
|
import { CalendarComponent } from './input/calendar/calendar.component';
|
|
@@ -72,11 +74,13 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
|
72
74
|
SmallCurrencyPipe,
|
|
73
75
|
StackedColumnComponent,
|
|
74
76
|
StackedRowComponent,
|
|
77
|
+
SVGTextTruncateDirective,
|
|
75
78
|
TextToggleComponent,
|
|
76
79
|
TimeSeriesComponent,
|
|
77
80
|
TooltipComponent,
|
|
78
81
|
TooltipDirective,
|
|
79
82
|
TrendComponent,
|
|
83
|
+
TruncateComponent,
|
|
80
84
|
ZeroStateComponent], imports: [CommonModule], exports: [ButtonComponent,
|
|
81
85
|
CalloutComponent,
|
|
82
86
|
CalloutDirective,
|
|
@@ -107,11 +111,13 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
|
107
111
|
SmallCurrencyPipe,
|
|
108
112
|
StackedColumnComponent,
|
|
109
113
|
StackedRowComponent,
|
|
114
|
+
SVGTextTruncateDirective,
|
|
110
115
|
TextToggleComponent,
|
|
111
116
|
TimeSeriesComponent,
|
|
112
117
|
TooltipComponent,
|
|
113
118
|
TooltipDirective,
|
|
114
119
|
TrendComponent,
|
|
120
|
+
TruncateComponent,
|
|
115
121
|
ZeroStateComponent] });
|
|
116
122
|
RivModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, imports: [CommonModule] });
|
|
117
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, decorators: [{
|
|
@@ -149,11 +155,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
149
155
|
SmallCurrencyPipe,
|
|
150
156
|
StackedColumnComponent,
|
|
151
157
|
StackedRowComponent,
|
|
158
|
+
SVGTextTruncateDirective,
|
|
152
159
|
TextToggleComponent,
|
|
153
160
|
TimeSeriesComponent,
|
|
154
161
|
TooltipComponent,
|
|
155
162
|
TooltipDirective,
|
|
156
163
|
TrendComponent,
|
|
164
|
+
TruncateComponent,
|
|
157
165
|
ZeroStateComponent,
|
|
158
166
|
],
|
|
159
167
|
exports: [
|
|
@@ -187,14 +195,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
187
195
|
SmallCurrencyPipe,
|
|
188
196
|
StackedColumnComponent,
|
|
189
197
|
StackedRowComponent,
|
|
198
|
+
SVGTextTruncateDirective,
|
|
190
199
|
TextToggleComponent,
|
|
191
200
|
TimeSeriesComponent,
|
|
192
201
|
TooltipComponent,
|
|
193
202
|
TooltipDirective,
|
|
194
203
|
TrendComponent,
|
|
204
|
+
TruncateComponent,
|
|
195
205
|
ZeroStateComponent,
|
|
196
206
|
],
|
|
197
207
|
imports: [CommonModule],
|
|
198
208
|
}]
|
|
199
209
|
}] });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQWtGckYsTUFBTSxPQUFPLFNBQVM7O3NHQUFULFNBQVM7dUdBQVQsU0FBUyxpQkE5RWxCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixRQUFRO1FBQ1Isa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUixXQUFXO1FBQ1gsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixVQUFVO1FBQ1YsY0FBYztRQUNkLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsY0FBYztRQUNkLGtCQUFrQixhQXdDVixZQUFZLGFBckNwQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixRQUFRO1FBQ1Isa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUixXQUFXO1FBQ1gsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixVQUFVO1FBQ1YsY0FBYztRQUNkLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsY0FBYztRQUNkLGtCQUFrQjt1R0FJVCxTQUFTLFlBRlYsWUFBWTsyRkFFWCxTQUFTO2tCQWhGckIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixRQUFRO3dCQUNSLGtCQUFrQjt3QkFDbEIsUUFBUTt3QkFDUixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2Qsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3dCQUM1QixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC10b2dnbGUvdGV4dC10b2dnbGUvdGV4dC10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERheXNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF5cy5waXBlJztcbmltcG9ydCB7IERvbGxhcnNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZG9sbGFycy5waXBlJztcbmltcG9ydCB7IE51bWJlclBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBQZXJjZW50YWdlUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3BlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBTbWFsbEN1cnJlbmN5UGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3NtYWxsLWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2lucHV0L2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2RhdGUvZGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ292ZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWQvbG9hZGluZy1jb3Zlci9sb2FkaW5nLWNvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dE91dGxldENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxsb3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhlbHBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2hlbHAvaGVscC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvbnV0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RvbnV0L2RvbnV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGdW5uZWxDaGFydENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9mdW5uZWwtY2hhcnQvZnVubmVsLWNoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGVnZW5kSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9sZWdlbmQtaXRlbS9sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFN0YWNrZWRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1jb2x1bW4vc3RhY2tlZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFN0YWNrZWRSb3dDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1yb3cvc3RhY2tlZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vdGltZS1zZXJpZXMvdGltZS1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZW5kQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RyZW5kL3RyZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBaZXJvU3RhdGVDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxsb3V0Q29tcG9uZW50LFxuICAgIENhbGxvdXREaXJlY3RpdmUsXG4gICAgQ2FsbG91dE91dGxldENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVJvd0NvbXBvbmVudCxcbiAgICBEYXRlQ29tcG9uZW50LFxuICAgIERhdGVQaXBlLFxuICAgIERhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBEYXlzUGlwZSxcbiAgICBEb2xsYXJzUGlwZSxcbiAgICBEb251dENvbXBvbmVudCxcbiAgICBGdW5uZWxDaGFydENvbXBvbmVudCxcbiAgICBIZWxwQ29tcG9uZW50LFxuICAgIEhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgTGVnZW5kSXRlbUNvbXBvbmVudCxcbiAgICBMaW5rQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvdmVyQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIFBlcmNlbnRhZ2VQaXBlLFxuICAgIFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbiAgICBTbWFsbEN1cnJlbmN5UGlwZSxcbiAgICBTdGFja2VkQ29sdW1uQ29tcG9uZW50LFxuICAgIFN0YWNrZWRSb3dDb21wb25lbnQsXG4gICAgVGV4dFRvZ2dsZUNvbXBvbmVudCxcbiAgICBUaW1lU2VyaWVzQ29tcG9uZW50LFxuICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBUcmVuZENvbXBvbmVudCxcbiAgICBaZXJvU3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZXRyaWNDb21wb25lbnQsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBQZXJjZW50YWdlUGlwZSxcbiAgICBTaW5nbGVTZWxlY3RDb21wb25lbnQsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFRleHRUb2dnbGVDb21wb25lbnQsXG4gICAgVGltZVNlcmllc0NvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgVHJlbmRDb21wb25lbnQsXG4gICAgWmVyb1N0YXRlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUml2TW9kdWxlIHt9XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFC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a0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixRQUFRO3dCQUNSLGtCQUFrQjt3QkFDbEIsUUFBUTt3QkFDUixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC10b2dnbGUvdGV4dC10b2dnbGUvdGV4dC10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERheXNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF5cy5waXBlJztcbmltcG9ydCB7IERvbGxhcnNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZG9sbGFycy5waXBlJztcbmltcG9ydCB7IE51bWJlclBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBQZXJjZW50YWdlUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3BlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBTbWFsbEN1cnJlbmN5UGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3NtYWxsLWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtYXQvc3ZnLXRleHQtdHJ1bmNhdGUvc3ZnLXRleHQtdHJ1bmNhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRydW5jYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtYXQvdHJ1bmNhdGUvdHJ1bmNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9kYXRlL2RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmctY292ZXIvbG9hZGluZy1jb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZC9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGxvdXRPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvY2FsbG91dC1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGxvdXRDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvY2FsbG91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIZWxwQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC9oZWxwL2hlbHAuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uL2xpbmsvbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZVJvd0NvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb251dENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kb251dC9kb251dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnVubmVsQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZnVubmVsLWNoYXJ0L2Z1bm5lbC1jaGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IExlZ2VuZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vbGVnZW5kLWl0ZW0vbGVnZW5kLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY0NvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9tZXRyaWMvbWV0cmljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtY29sdW1uL3N0YWNrZWQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVuZENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi90cmVuZC90cmVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWmVyb1N0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZXRyaWNDb21wb25lbnQsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBQZXJjZW50YWdlUGlwZSxcbiAgICBTaW5nbGVTZWxlY3RDb21wb25lbnQsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYWxsb3V0Q29tcG9uZW50LFxuICAgIENhbGxvdXREaXJlY3RpdmUsXG4gICAgQ2FsbG91dE91dGxldENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVJvd0NvbXBvbmVudCxcbiAgICBEYXRlQ29tcG9uZW50LFxuICAgIERhdGVQaXBlLFxuICAgIERhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBEYXlzUGlwZSxcbiAgICBEb2xsYXJzUGlwZSxcbiAgICBEb251dENvbXBvbmVudCxcbiAgICBGdW5uZWxDaGFydENvbXBvbmVudCxcbiAgICBIZWxwQ29tcG9uZW50LFxuICAgIEhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgTGVnZW5kSXRlbUNvbXBvbmVudCxcbiAgICBMaW5rQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvdmVyQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIFBlcmNlbnRhZ2VQaXBlLFxuICAgIFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbiAgICBTbWFsbEN1cnJlbmN5UGlwZSxcbiAgICBTdGFja2VkQ29sdW1uQ29tcG9uZW50LFxuICAgIFN0YWNrZWRSb3dDb21wb25lbnQsXG4gICAgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlLFxuICAgIFRleHRUb2dnbGVDb21wb25lbnQsXG4gICAgVGltZVNlcmllc0NvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgVHJlbmRDb21wb25lbnQsXG4gICAgVHJ1bmNhdGVDb21wb25lbnQsXG4gICAgWmVyb1N0YXRlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUml2TW9kdWxlIHt9XG4iXX0=
|
|
@@ -7,7 +7,8 @@ import * as i1 from "@angular/common";
|
|
|
7
7
|
import * as i2 from "../../modal/callout/callout.component";
|
|
8
8
|
import * as i3 from "../../modal/callout/callout.directive";
|
|
9
9
|
import * as i4 from "../legend-item/legend-item.component";
|
|
10
|
-
import * as i5 from "
|
|
10
|
+
import * as i5 from "../../format/svg-text-truncate/svg-text-truncate.directive";
|
|
11
|
+
import * as i6 from "../zero-state/zero-state.component";
|
|
11
12
|
// TODO: once we upgrade to Angular 16, this component can be cleaned up with
|
|
12
13
|
// signals instead of RxJS.
|
|
13
14
|
export class StackedRowComponent {
|
|
@@ -215,10 +216,10 @@ export class StackedRowComponent {
|
|
|
215
216
|
}
|
|
216
217
|
}
|
|
217
218
|
StackedRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StackedRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
-
StackedRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: StackedRowComponent, selector: "riv-stacked-row", inputs: { input: "input", width: "width", height: "height", valueFormatter: "valueFormatter", zeroStateMessage: "zeroStateMessage" }, ngImport: i0, template: "<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n
|
|
219
|
+
StackedRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: StackedRowComponent, selector: "riv-stacked-row", inputs: { input: "input", width: "width", height: "height", valueFormatter: "valueFormatter", zeroStateMessage: "zeroStateMessage" }, ngImport: i0, template: "<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of draw.rects\">\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredRectangle$ | async) !== null &&\n (hoveredRectangle$ | async)?.rectangle?.rowName !== rect.rowName\n \"\n (mouseenter)=\"\n hoveredRectangle$.next({ rectangle: rect, event: $event })\n \"\n (mouseleave)=\"hoveredRectangle$.next(null)\"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n (mouseenter)=\"\n hoveredRectangle$.next({ rectangle: rect, event: $event })\n \"\n (mouseleave)=\"hoveredRectangle$.next(null)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-title\">{{ callout.metric.rowName }}</div>\n <div class=\"callout-metric\">\n <div class=\"callout-label\">{{ callout.metric.elementLabel }}</div>\n <div class=\"callout-metric-value\">{{ callout.metric.value }}</div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n", styles: [".tick{fill:var(--gray-20)}.tick-label{font-size:var(--type-0-font-size);line-height:var(--type-0-line-height-0);fill:var(--type-light-low-contrast)}.row-title{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.row-total{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2);fill:var(--type-light-low-contrast)}.row{transition:opacity var(--short-transition)}.row.blurred{opacity:.4}legend{display:flex;flex-wrap:wrap;gap:var(--size-large);justify-content:flex-start;align-items:baseline}.callout-content{display:grid;padding:var(--size-medium) var(--size-xlarge);gap:var(--size-xsmall)}.callout-metric{display:flex;flex-direction:column;gap:var(--size-xsmall)}.callout-title{font-size:var(--type-3-font-size);line-height:var(--type-3-line-height-2)}.callout-label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.callout-metric-value{font-size:var(--type-4-font-size);line-height:var(--type-4-line-height-1)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "directive", type: i3.CalloutDirective, selector: "[riv-callout]" }, { kind: "component", type: i4.LegendItemComponent, selector: "riv-legend-item", inputs: ["label", "colorToken", "style", "visibility", "iconTooltip"], outputs: ["itemClick"] }, { kind: "directive", type: i5.SVGTextTruncateDirective, selector: "svg text[rivSVGTextTruncate]", inputs: ["text", "width"] }, { kind: "component", type: i6.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
219
220
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StackedRowComponent, decorators: [{
|
|
220
221
|
type: Component,
|
|
221
|
-
args: [{ selector: 'riv-stacked-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n
|
|
222
|
+
args: [{ selector: 'riv-stacked-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of draw.rects\">\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredRectangle$ | async) !== null &&\n (hoveredRectangle$ | async)?.rectangle?.rowName !== rect.rowName\n \"\n (mouseenter)=\"\n hoveredRectangle$.next({ rectangle: rect, event: $event })\n \"\n (mouseleave)=\"hoveredRectangle$.next(null)\"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n (mouseenter)=\"\n hoveredRectangle$.next({ rectangle: rect, event: $event })\n \"\n (mouseleave)=\"hoveredRectangle$.next(null)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-title\">{{ callout.metric.rowName }}</div>\n <div class=\"callout-metric\">\n <div class=\"callout-label\">{{ callout.metric.elementLabel }}</div>\n <div class=\"callout-metric-value\">{{ callout.metric.value }}</div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n", styles: [".tick{fill:var(--gray-20)}.tick-label{font-size:var(--type-0-font-size);line-height:var(--type-0-line-height-0);fill:var(--type-light-low-contrast)}.row-title{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.row-total{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2);fill:var(--type-light-low-contrast)}.row{transition:opacity var(--short-transition)}.row.blurred{opacity:.4}legend{display:flex;flex-wrap:wrap;gap:var(--size-large);justify-content:flex-start;align-items:baseline}.callout-content{display:grid;padding:var(--size-medium) var(--size-xlarge);gap:var(--size-xsmall)}.callout-metric{display:flex;flex-direction:column;gap:var(--size-xsmall)}.callout-title{font-size:var(--type-3-font-size);line-height:var(--type-3-line-height-2)}.callout-label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.callout-metric-value{font-size:var(--type-4-font-size);line-height:var(--type-4-line-height-1)}\n"] }]
|
|
222
223
|
}], propDecorators: { input: [{
|
|
223
224
|
type: Input
|
|
224
225
|
}], width: [{
|
|
@@ -308,4 +309,4 @@ export var StackedRowHelpers;
|
|
|
308
309
|
}
|
|
309
310
|
StackedRowHelpers.getRowDisplayInfo = getRowDisplayInfo;
|
|
310
311
|
})(StackedRowHelpers || (StackedRowHelpers = {}));
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tlZC1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi9zdGFja2VkLXJvdy9zdGFja2VkLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBYSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLGFBQWEsRUFDYixHQUFHLEVBQ0gsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBK0RkLDZFQUE2RTtBQUM3RSwyQkFBMkI7QUFPM0IsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9FLCtFQUErRTtRQUM5RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUM7UUFTOUQsNkVBQTZFO1FBQzVELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxHQUFHLENBQUMsQ0FBQztRQVMzRCw4RUFBOEU7UUFDN0QsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBUzVELCtFQUErRTtRQUV4RSxtQkFBYyxHQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FDdEQscUJBQXFCLENBQ3RCLENBQUM7UUFTRjs7Ozs7VUFLRTtRQUNPLG9CQUFlLEdBQUc7WUFDekIs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TSxjQUFjLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtZQUMxQyxjQUFjLElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFFNUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUN0QixHQUFHLGNBQWM7Z0JBQ2pCLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixPQUFPLEVBQUUsY0FBYzthQUN4QixDQUFDLENBQUM7WUFFSCxlQUFlLEdBQUcsY0FBYyxDQUFDO1NBQ2xDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztZQUN6QixrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsUUFBUSxFQUFFLGNBQWM7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFyQmUsbUNBQWlCLG9CQXFCaEMsQ0FBQTtBQUNILENBQUMsRUEzRmdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUEyRmpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVyblNldCwgdW5pb24gfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgeyBTY2FsZUxpbmVhciwgc2NhbGVMaW5lYXIgfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGVnZW5kSXRlbSB9IGZyb20gJy4uL2xlZ2VuZC1pdGVtL2xlZ2VuZC1pdGVtLmNvbXBvbmVudCc7XG5cbi8vIEEgc3BlY2lmaWNhbGx5IGNvbG9yZWQgc2VjdGlvbiBvZiBvbmUgcm93LlxuZXhwb3J0IGRlY2xhcmUgdHlwZSBSb3dFbGVtZW50ID0ge1xuICBsYWJlbDogc3RyaW5nOyAvLyBMZWdlbmQgZWxlbWVudCBuYW1lXG4gIHZhbHVlOiBudW1iZXI7XG4gIGNvbG9yVG9rZW46IHN0cmluZztcbiAgc3R5bGU/OiAnc29saWQnIHwgJ3N0cmlwZWQnO1xufTtcblxuLy8gVGhlIGlucHV0IHRoYXQgZGV0ZXJtaW5lcyBvbmUgcm93LlxuZXhwb3J0IGRlY2xhcmUgdHlwZSBSb3dTdGFjayA9IHtcbiAgcm93TmFtZTogc3RyaW5nO1xuICBkYXRhOiBSb3dFbGVtZW50W107XG59O1xuXG4vLyBBIHJvdyBlbGVtZW50IHdpdGggYSBiYXNlbGluZSwgdG9wbGluZSwgYW5kIGEgcmVmZXJlbmNlIHRvIHRoZSBzdGFjayBpdCBiZWxvbmdzIHRvXG50eXBlIFN0YWNrZWRSb3dFbGVtZW50ID0gUm93RWxlbWVudCAmIHtcbiAgYmFzZWxpbmU6IG51bWJlcjtcbiAgdG9wbGluZTogbnVtYmVyO1xufTtcblxuLy8gRXZlcnl0aGluZyB0aGF0IGRlc2NyaWJlcyBhIHJvdyB3ZSB3aWxsIGRpc3BsYXlcbmV4cG9ydCB0eXBlIFJvd0Rpc3BsYXlJbmZvID0ge1xuICByb3dOYW1lOiBzdHJpbmc7XG4gIGVsZW1lbnRzQnV0U3RhY2tlZDogU3RhY2tlZFJvd0VsZW1lbnRbXTtcbiAgcm93VG90YWw6IG51bWJlcjtcbn07XG5cbi8vIFRoZSBkYXRhIGFib3V0IGEgcmVjdGFuZ2xlIHdlIGRpc3BsYXkgb24gc2NyZWVuXG50eXBlIFJvd1JlY3RhbmdsZSA9IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmaWxsOiBzdHJpbmc7XG4gIHN0cmlwZWQ6IGJvb2xlYW47XG4gIHJvd05hbWU6IHN0cmluZztcbiAgc3RhY2tlZFJvd0VsZW1lbnQ6IFN0YWNrZWRSb3dFbGVtZW50O1xufTtcblxuLy8gVGhlIGRhdGEgYWJvdXQgYSByb3cgbGFiZWwgd2UgZGlzcGxheSBvbiBzY3JlZW5cbnR5cGUgUm93TGFiZWwgPSB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xufTtcblxuLy8gVGhlIGRhdGEgd2UgYXJlIGRpc3BsYXlpbmcgaW4gdGhpcyBjb21wb25lbnRcbnR5cGUgU3RhY2tlZFJvd0RyYXdEYXRhID0ge1xuICBsZWdlbmRJdGVtczogTGVnZW5kSXRlbVtdO1xuICByb3dIZWlnaHQ6IG51bWJlcjtcbiAgcmVjdHM6IFJvd1JlY3RhbmdsZVtdO1xuICByb3dOYW1lczogUm93TGFiZWxbXTtcbiAgcm93VG90YWxzOiBSb3dMYWJlbFtdO1xuICB2aWV3Qm94OiBzdHJpbmc7XG4gIHhTY2FsZTogU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXIsIG5ldmVyPjtcbiAgeFRpY2tzOiBudW1iZXJbXTtcbn07XG5cbnR5cGUgQ2FsbG91dE1ldHJpYyA9IHsgcm93TmFtZTogc3RyaW5nOyBlbGVtZW50TGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9O1xuXG4vLyBUT0RPOiBvbmNlIHdlIHVwZ3JhZGUgdG8gQW5ndWxhciAxNiwgdGhpcyBjb21wb25lbnQgY2FuIGJlIGNsZWFuZWQgdXAgd2l0aFxuLy8gc2lnbmFscyBpbnN0ZWFkIG9mIFJ4SlMuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc3RhY2tlZC1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RhY2tlZC1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGFja2VkLXJvdy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTdGFja2VkUm93Q29tcG9uZW50IHtcbiAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiByb3dzIHdlIHdpbGwgZGlzcGxheSwgaW4gdGhlIG9yZGVyIHdlIHdpbGwgZGlzcGxheSB0aGVtLlxuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93U3RhY2tbXT4oW10pO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlucHV0KHY6IFJvd1N0YWNrW10pIHtcbiAgICB0aGlzLmlucHV0JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgaW5wdXQoKTogUm93U3RhY2tbXSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvLyBXaWR0aCBoZWxwcyBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIHZpZXdib3ggdGhpcyBncmFwaCBpcyBkaXNwbGF5aW5nIGluLlxuICBwcml2YXRlIHJlYWRvbmx5IHdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig5NjApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHdpZHRoKHY6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndpZHRoJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8gSGVpZ2h0IGhlbHBzIGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgdmlld2JveCB0aGlzIGdyYXBoIGlzIGRpc3BsYXlpbmcgaW4uXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVpZ2h0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigyNTYpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhlaWdodCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLmhlaWdodCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhlaWdodCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8vIFZhbHVlRm9ybWF0dGVyIGRldGVybWluZXMgaG93IHdlIHN0eWxlIHRoZSB2YWx1ZXMgaW4gYSBtZXRyaWMgYW5kIHRoZSB4LWF4aXNcbiAgQElucHV0KClcbiAgcHVibGljIHZhbHVlRm9ybWF0dGVyOiAodjogbnVtYmVyKSA9PiBzdHJpbmcgPSB2ID0+IHYudG9TdHJpbmcoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHplcm9TdGF0ZU1lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFxuICAgICdObyBkYXRhIHRvIGRpc3BsYXkuJyxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB6ZXJvU3RhdGVNZXNzYWdlKHY6IHN0cmluZykge1xuICAgIHRoaXMuemVyb1N0YXRlTWVzc2FnZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHplcm9TdGF0ZU1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy56ZXJvU3RhdGVNZXNzYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLypcbiAgICBUaGUgbGF5b3V0IHdlIGFyZSBzaG9vdGluZyBmb3IgaXM6XG5cbiAgICAgICAgICAgICAgfCAgIFggQXhpcyBMYWJlbHMgIHxcbiAgICBSb3cgTmFtZSAgfCAgIFJlY3RhbmdsZXMgICAgIHwgICBUb3RhbHNcbiAgKi9cbiAgcmVhZG9ubHkgU0VDVElPTl9IRUlHSFRTID0ge1xuICAgIC8vIFNwYWNlIHJlc2VydmVkIGZvciB0aGUgeC1heGlzIGxhYmVsc1xuICAgIFhfQVhJU19MQUJFTDogMTQsXG4gICAgLy8gSGVpZ2h0IG9mIGVhY2ggcm93XG4gICAgUEVSX1JPVzogMjAsXG4gICAgLy8gSGVpZ2ggb2YgZWFjaCByZWN0YW5nbGVcbiAgICBQRVJfUkVDVEFOR0xFOiA4LFxuICB9O1xuXG4gIHJlYWRvbmx5IFNFQ1RJT05fV0lEVEhTID0ge1xuICAgIC8vIFNwYWNlIHJlc2VydmVkIGZvciB0aGUgbmFtZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHJvd1xuICAgIFJPV19OQU1FOiAxMDAsXG4gICAgLy8gU3BhY2UgcmVzZXJ2ZWQgZm9yIHRoZSB0b3RhbHMgYXQgdGhlIGVuZCBvZiB0aGUgcm93XG4gICAgUk9XX1RPVEFMX0xBQkVMOiA3MixcbiAgfTtcblxuICByZWFkb25seSBTRUNUSU9OX1BBRERJTkcgPSB7XG4gICAgLy8gUGFkZGluZyBiZXR3ZWVuIGVhY2ggZWRnZSBvZiB0aGUgdmlld2JveCBhbmQgdGhlIGNvbnRlbnRcbiAgICBPVVRFUl9UT1BfQk9UVE9NOiA0LFxuICAgIE9VVEVSX0xFRlRfUklHSFQ6IDQsXG4gICAgLy8gUGFkZGluZyBiZXR3ZWVuIHRoZSBib3R0b20gb2Ygb25lIHJvdyBhbmQgdGhlIHRvcCBvZiB0aGUgbmV4dCByb3dcbiAgICBCRVRXRUVOX1JPVzogNCxcbiAgICAvLyBTcGFjZSBiZXR3ZWVuIHRoZSByb3cgYW5kIHRoZSB0b3Agb2YgYSByZWN0YW5nbGUgaW4gdGhhdCByb3dcbiAgICBSRUNUQU5HTEVfVE9fUk9XOiA2LFxuICB9O1xuXG4gIC8vIFRoZSBudW1iZXIgb2YgWC1heGlzIHNlZ21lbnRzIHRvIGNyZWF0ZSwgd2l0aCBsYWJlbHMgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc2VnbWVudC5cbiAgcmVhZG9ubHkgWF9USUNLX0NPVU5UID0gODtcblxuICAvLyBaZXJvIG9uIHRoZSBYIGF4aXMgaXMgYWZ0ZXIgdGhlIGxlZnQgcGFkZGluZyBhbmQgdGhlIHJvdyBuYW1lLlxuICBsb2NhdGlvbk9mWEF4aXNaZXJvKCkge1xuICAgIHJldHVybiB0aGlzLlNFQ1RJT05fUEFERElORy5PVVRFUl9MRUZUX1JJR0hUICsgdGhpcy5TRUNUSU9OX1dJRFRIUy5ST1dfTkFNRTtcbiAgfVxuICAvLyBUaGUgZW5kIG9mIHRoZSBYIGF4aXMgaXMgcmlnaHQgYmVmb3JlIHRoZSByb3cgdG90YWwgYW5kIHRoZSByaWdodCBwYWRkaW5nLlxuICBsb2NhdGlvbk9mWEF4aXNFbmQod2lkdGg6IG51bWJlcikge1xuICAgIGNvbnN0IHNwYWNlT25SaWdodDogbnVtYmVyID1cbiAgICAgIHRoaXMuU0VDVElPTl9XSURUSFMuUk9XX1RPVEFMX0xBQkVMICtcbiAgICAgIHRoaXMuU0VDVElPTl9QQURESU5HLk9VVEVSX0xFRlRfUklHSFQ7XG4gICAgcmV0dXJuIHdpZHRoIC0gc3BhY2VPblJpZ2h0O1xuICB9XG4gIC8vIFRoZSB5LWluZGV4IG9mIHRoZSB4LWF4aXMgdGlja3NcbiAgbG9jYXRpb25PZlhBeGlzVGljaygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5TRUNUSU9OX1BBRERJTkcuT1VURVJfVE9QX0JPVFRPTSArIHRoaXMuU0VDVElPTl9IRUlHSFRTLlhfQVhJU19MQUJFTFxuICAgICk7XG4gIH1cbiAgLy8gVGhlIHktaW5kZXggb2YgdGhlIHRvcCBvZiB0aGUgY3VycmVudCByb3dcbiAgZ2V0VG9wT2ZSb3cocm93SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHNwYWNlQWJvdmVSb3dzOiBudW1iZXIgPVxuICAgICAgdGhpcy5TRUNUSU9OX1BBRERJTkcuT1VURVJfVE9QX0JPVFRPTSArIHRoaXMuU0VDVElPTl9IRUlHSFRTLlhfQVhJU19MQUJFTDtcblxuICAgIGNvbnN0IGFib3ZlUm93czogbnVtYmVyID0gcm93SW5kZXggKiB0aGlzLlNFQ1RJT05fSEVJR0hUUy5QRVJfUk9XO1xuICAgIGNvbnN0IGFib3ZlUm93UGFkZGluZ3M6IG51bWJlciA9XG4gICAgICByb3dJbmRleCAqIHRoaXMuU0VDVElPTl9QQURESU5HLkJFVFdFRU5fUk9XO1xuICAgIGNvbnN0IGFsbEFib3ZlUm93czogbnVtYmVyID0gYWJvdmVSb3dzICsgYWJvdmVSb3dQYWRkaW5ncztcblxuICAgIHJldHVybiBzcGFjZUFib3ZlUm93cyArIGFsbEFib3ZlUm93cztcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBhbGwgdGhlIHZhbHVlcyB3ZSBuZWVkIGZvciBkaXNwbGF5aW5nIHRoZSBncmFwaCBvbiBzY3JlZW4uXG4gIGdldERyYXduRGF0YShyb3dTdGFja3M6IFJvd1N0YWNrW10sIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgaWYgKHJvd1N0YWNrcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHZpZXdCb3ggPSBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWA7XG5cbiAgICBjb25zdCBrZXlzSW5PcmRlcjogSW50ZXJuU2V0PHN0cmluZz4gPVxuICAgICAgU3RhY2tlZFJvd0hlbHBlcnMuZ2V0S2V5T3JkZXIocm93U3RhY2tzKTtcbiAgICBjb25zdCBzdGFuZGFyZGl6ZWRSb3dzOiBSb3dTdGFja1tdID0gU3RhY2tlZFJvd0hlbHBlcnMuc3RhbmRhcmRpemVSb3dTdGFja3MoXG4gICAgICByb3dTdGFja3MsXG4gICAgICBrZXlzSW5PcmRlcixcbiAgICApO1xuICAgIGNvbnN0IHJvd3NGb3JEaXNwbGF5OiBSb3dEaXNwbGF5SW5mb1tdID0gc3RhbmRhcmRpemVkUm93cy5tYXAoc3RhY2tEYXRhID0+IHtcbiAgICAgIHJldHVybiBTdGFja2VkUm93SGVscGVycy5nZXRSb3dEaXNwbGF5SW5mbyhzdGFja0RhdGEpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRvbWFpbiBzaG91bGQgYmUgdGhlIGhpZ2hlc3QgdG90YWwgdmFsdWUgZnJvbSB0aGUgcm93cy5cbiAgICBjb25zdCBkb21haW5NYXggPSBNYXRoLm1heCgwLCAuLi5yb3dzRm9yRGlzcGxheS5tYXAocm93ID0+IHJvdy5yb3dUb3RhbCkpO1xuICAgIGNvbnN0IHhTY2FsZTogU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXIsIG5ldmVyPiA9IHNjYWxlTGluZWFyKClcbiAgICAgIC5kb21haW4oWzAsIGRvbWFpbk1heF0pXG4gICAgICAucmFuZ2UoW3RoaXMubG9jYXRpb25PZlhBeGlzWmVybygpLCB0aGlzLmxvY2F0aW9uT2ZYQXhpc0VuZCh3aWR0aCldKTtcbiAgICBjb25zdCB4VGlja3MgPSB4U2NhbGUudGlja3ModGhpcy5YX1RJQ0tfQ09VTlQpO1xuXG4gICAgY29uc3QgcmVjdHM6IFJvd1JlY3RhbmdsZVtdID0gdGhpcy5jcmVhdGVSZWN0YW5nbGVzRnJvbVJvd3MoXG4gICAgICByb3dzRm9yRGlzcGxheSxcbiAgICAgIHhTY2FsZSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93TmFtZXNUb0RyYXc6IFJvd0xhYmVsW10gPSB0aGlzLmdldFJvd05hbWVzVG9EcmF3KHJvd3NGb3JEaXNwbGF5KTtcbiAgICBjb25zdCByb3dUb3RhbHNUb0RyYXc6IFJvd0xhYmVsW10gPSB0aGlzLmdldFJvd1RvdGFsc1RvRHJhdyhcbiAgICAgIHJvd3NGb3JEaXNwbGF5LFxuICAgICAgd2lkdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IGxlZ2VuZEl0ZW1zOiBMZWdlbmRJdGVtW10gPSBTdGFja2VkUm93SGVscGVycy5nZXRMZWdlbmRJdGVtcyhcbiAgICAgIHJvd3NGb3JEaXNwbGF5LFxuICAgICAga2V5c0luT3JkZXIsXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsZWdlbmRJdGVtczogbGVnZW5kSXRlbXMsXG4gICAgICByb3dIZWlnaHQ6IHRoaXMuU0VDVElPTl9IRUlHSFRTLlBFUl9SRUNUQU5HTEUsXG4gICAgICByZWN0czogcmVjdHMsXG4gICAgICByb3dOYW1lczogcm93TmFtZXNUb0RyYXcsXG4gICAgICByb3dUb3RhbHM6IHJvd1RvdGFsc1RvRHJhdyxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICB4U2NhbGU6IHhTY2FsZSxcbiAgICAgIHhUaWNrczogeFRpY2tzLFxuICAgIH07XG4gIH1cblxuICAvLyBHZXQgZGF0YSBmb3IgYWxsIHRoZSByZWN0YW5nbGVzIGZvciBhbGwgdGhlIHJvd3NcbiAgY3JlYXRlUmVjdGFuZ2xlc0Zyb21Sb3dzKFxuICAgIGRpc3BsYXlSb3dzOiBSb3dEaXNwbGF5SW5mb1tdLFxuICAgIHhTY2FsZTogU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXIsIG5ldmVyPixcbiAgKTogUm93UmVjdGFuZ2xlW10ge1xuICAgIGNvbnN0IHJlY3RhbmdsZXM6IFJvd1JlY3RhbmdsZVtdID0gW107XG4gICAgZGlzcGxheVJvd3MuZm9yRWFjaCgoY3VycmVudFJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGN1cnJlbnRSb3cuZWxlbWVudHNCdXRTdGFja2VkLmZvckVhY2goKGN1cnJlbnRFbGVtZW50LCBfKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvcE9mUm93OiBudW1iZXIgPSB0aGlzLmdldFRvcE9mUm93KHJvd0luZGV4KTtcblxuICAgICAgICBjb25zdCByZWN0YW5nbGVXaWR0aDogbnVtYmVyID1cbiAgICAgICAgICB4U2NhbGUoY3VycmVudEVsZW1lbnQudG9wbGluZSkgLSB4U2NhbGUoY3VycmVudEVsZW1lbnQuYmFzZWxpbmUpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGVIZWlnaHQ6IG51bWJlciA9IHRoaXMuU0VDVElPTl9IRUlHSFRTLlBFUl9SRUNUQU5HTEU7XG5cbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlWDogbnVtYmVyID0geFNjYWxlKGN1cnJlbnRFbGVtZW50LmJhc2VsaW5lKTtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlWTogbnVtYmVyID1cbiAgICAgICAgICB0b3BPZlJvdyArIHRoaXMuU0VDVElPTl9QQURESU5HLlJFQ1RBTkdMRV9UT19ST1c7XG5cbiAgICAgICAgY29uc3QgZmlsbCA9IGB2YXIoJHtjdXJyZW50RWxlbWVudC5jb2xvclRva2VufSlgO1xuXG4gICAgICAgIHJlY3RhbmdsZXMucHVzaCh7XG4gICAgICAgICAgeDogcmVjdGFuZ2xlWCxcbiAgICAgICAgICB5OiByZWN0YW5nbGVZLFxuICAgICAgICAgIHdpZHRoOiByZWN0YW5nbGVXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHJlY3RhbmdsZUhlaWdodCxcbiAgICAgICAgICBmaWxsOiBmaWxsLFxuICAgICAgICAgIHN0cmlwZWQ6IGN1cnJlbnRFbGVtZW50LnN0eWxlID09PSAnc3RyaXBlZCcsXG4gICAgICAgICAgcm93TmFtZTogY3VycmVudFJvdy5yb3dOYW1lLFxuICAgICAgICAgIHN0YWNrZWRSb3dFbGVtZW50OiBjdXJyZW50RWxlbWVudCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVjdGFuZ2xlcztcbiAgfVxuXG4gIC8vIEdldCBkYXRhIG9uIHRoZSByb3cgbmFtZXMgd2UgYXJlIGRyYXdpbmdcbiAgZ2V0Um93TmFtZXNUb0RyYXcoZGlzcGxheVJvd3M6IFJvd0Rpc3BsYXlJbmZvW10pOiBSb3dMYWJlbFtdIHtcbiAgICByZXR1cm4gZGlzcGxheVJvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBjb25zdCByb3dMYWJlbFggPSB0aGlzLlNFQ1RJT05fUEFERElORy5PVVRFUl9MRUZUX1JJR0hUO1xuICAgICAgLy8gVGhlIHJvdyBuYW1lIGxvb2tzIHJpZ2h0IGlmIGl0cyBiYXNlIGlzIGF0IHRoZSBiYXNlIG9mIHRoZSBhc3NvY2lhdGVkIHJlY3RhbmdsZVxuICAgICAgY29uc3Qgcm93TGFiZWxZID1cbiAgICAgICAgdGhpcy5nZXRUb3BPZlJvdyhyb3dJbmRleCkgK1xuICAgICAgICB0aGlzLlNFQ1RJT05fUEFERElORy5SRUNUQU5HTEVfVE9fUk9XICtcbiAgICAgICAgdGhpcy5TRUNUSU9OX0hFSUdIVFMuUEVSX1JFQ1RBTkdMRTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHJvdy5yb3dOYW1lLFxuICAgICAgICB4OiByb3dMYWJlbFgsXG4gICAgICAgIHk6IHJvd0xhYmVsWSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvLyBHZXQgZGF0YSBvbiB0aGUgcm93IHRvdGFscyB3ZSBhcmUgZHJhd2luZ1xuICBnZXRSb3dUb3RhbHNUb0RyYXcoZGlzcGxheVJvd3M6IFJvd0Rpc3BsYXlJbmZvW10sIHdpZHRoOiBudW1iZXIpOiBSb3dMYWJlbFtdIHtcbiAgICByZXR1cm4gZGlzcGxheVJvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBjb25zdCByb3dMYWJlbFggPSB3aWR0aCAtIHRoaXMuU0VDVElPTl9QQURESU5HLk9VVEVSX0xFRlRfUklHSFQ7XG4gICAgICAvLyBUaGUgcm93IHRvdGFscyBsb29rcyByaWdodCBpZiBpdHMgYmFzZSBpcyBhdCB0aGUgYmFzZSBvZiB0aGUgYXNzb2NpYXRlZCByZWN0YW5nbGVcbiAgICAgIGNvbnN0IHJvd0xhYmVsWSA9XG4gICAgICAgIHRoaXMuZ2V0VG9wT2ZSb3cocm93SW5kZXgpICtcbiAgICAgICAgdGhpcy5TRUNUSU9OX1BBRERJTkcuUkVDVEFOR0xFX1RPX1JPVyArXG4gICAgICAgIHRoaXMuU0VDVElPTl9IRUlHSFRTLlBFUl9SRUNUQU5HTEU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnZhbHVlRm9ybWF0dGVyKHJvdy5yb3dUb3RhbCksXG4gICAgICAgIHg6IHJvd0xhYmVsWCxcbiAgICAgICAgeTogcm93TGFiZWxZLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGRyYXdEYXRhJDogT2JzZXJ2YWJsZTxTdGFja2VkUm93RHJhd0RhdGEgfCBudWxsPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW5wdXQkLFxuICAgIHRoaXMud2lkdGgkLFxuICAgIHRoaXMuaGVpZ2h0JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnB1dCwgd2lkdGgsIGhlaWdodF0pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldERyYXduRGF0YShpbnB1dCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICAvLyBMZXRzIHVzIGtub3cgd2hldGhlciB0byBkaXNwbGF5IHRoZSB6ZXJvIGRhdGEgc3RhdGVcbiAgcmVhZG9ubHkgZW1wdHkkID0gdGhpcy5pbnB1dCQucGlwZShcbiAgICBtYXAoaW5wdXQgPT4gaW5wdXQuZXZlcnkoc3RhY2sgPT4gc3RhY2suZGF0YS5sZW5ndGggPT09IDApKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIC8vIFdoYXQgcmVjdGFuZ2xlIHdlIGFyZSBjdXJyZW50bHkgaG92ZXJpbmcgb3ZlclxuICByZWFkb25seSBob3ZlcmVkUmVjdGFuZ2xlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIHJlY3RhbmdsZTogUm93UmVjdGFuZ2xlO1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xuICB9IHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBtZXRyaWMgdG8gZGlzcGxheSBiYXNlZCBvbiB0aGUgY3VycmVudGx5IGhvdmVyZWQgcmVjdGFuZ2xlXG4gIHJlYWRvbmx5IGNhbGxvdXQkID0gdGhpcy5ob3ZlcmVkUmVjdGFuZ2xlJC5waXBlKFxuICAgIG1hcChob3ZlcmVkUmVjdGFuZ2xlID0+IHtcbiAgICAgIGlmICghaG92ZXJlZFJlY3RhbmdsZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBob3ZlcmVkUmVjdGFuZ2xlLmV2ZW50O1xuICAgICAgaWYgKCF0YXJnZXQpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgYW5jaG9yID0gKDxTVkdSZWN0RWxlbWVudD50YXJnZXQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBjb25zdCB7IHJvd05hbWUsIHN0YWNrZWRSb3dFbGVtZW50IH0gPSBob3ZlcmVkUmVjdGFuZ2xlLnJlY3RhbmdsZTtcblxuICAgICAgY29uc3QgbWV0cmljOiBDYWxsb3V0TWV0cmljID0ge1xuICAgICAgICByb3dOYW1lOiByb3dOYW1lLFxuICAgICAgICBlbGVtZW50TGFiZWw6IHN0YWNrZWRSb3dFbGVtZW50LmxhYmVsLFxuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZUZvcm1hdHRlcihzdGFja2VkUm93RWxlbWVudC52YWx1ZSksXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4geyBhbmNob3IsIG1ldHJpYyB9O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU3RhY2tlZFJvd0hlbHBlcnMge1xuICAvLyBHZXQgYSBvcmRlcmVkK3VuaXF1ZSBsaXN0IG9mIGtleXMgZnJvbSB0aGUgcm93IGVsZW1lbnRzXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRLZXlPcmRlcihyb3dTdGFja3M6IFJvd1N0YWNrW10pOiBJbnRlcm5TZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgYWxsUm93RWxlbWVudHM6IFJvd0VsZW1lbnRbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgcm93U3RhY2sgb2Ygcm93U3RhY2tzKSB7XG4gICAgICBhbGxSb3dFbGVtZW50cy5wdXNoKC4uLnJvd1N0YWNrLmRhdGEpO1xuICAgIH1cbiAgICBjb25zdCBvcmRlcmVkS2V5czogSW50ZXJuU2V0PHN0cmluZz4gPSB1bmlvbihbXG4gICAgICAuLi5hbGxSb3dFbGVtZW50cy5tYXAocm93RWxlbWVudCA9PiByb3dFbGVtZW50LmxhYmVsKSxcbiAgICBdKTtcbiAgICByZXR1cm4gb3JkZXJlZEtleXM7XG4gIH1cblxuICAvLyBHZXQgYSBsaXN0IG9mIHRoZSBsZWdlbmQgaXRlbXMgd2Ugc2hvdWxkIHNob3dcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldExlZ2VuZEl0ZW1zKFxuICAgIHJvd3NGb3JEaXNwbGF5OiBSb3dEaXNwbGF5SW5mb1tdLFxuICAgIGtleXNJbk9yZGVyOiBJbnRlcm5TZXQ8c3RyaW5nPixcbiAgKTogTGVnZW5kSXRlbVtdIHtcbiAgICBjb25zdCBsZWdlbmRJdGVtQXJyYXk6IExlZ2VuZEl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgcm93Rm9yRGlzcGxheSBvZiByb3dzRm9yRGlzcGxheSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0luT3JkZXIpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudE1hdGNoaW5nS2V5OiBTdGFja2VkUm93RWxlbWVudCB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgcm93Rm9yRGlzcGxheS5lbGVtZW50c0J1dFN0YWNrZWQuZmluZChcbiAgICAgICAgICAgIGVsZW1lbnQgPT4gZWxlbWVudC5sYWJlbCA9PSBrZXksXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVsZW1lbnRNYXRjaGluZ0tleSAmJlxuICAgICAgICAgIGVsZW1lbnRNYXRjaGluZ0tleS52YWx1ZSA+IDAgJiZcbiAgICAgICAgICAhbGVnZW5kSXRlbUFycmF5LmZpbmQoaXRlbSA9PiBpdGVtLmxhYmVsID09IGtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGVnZW5kSXRlbUFycmF5LnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnRNYXRjaGluZ0tleS5sYWJlbCxcbiAgICAgICAgICAgIGNvbG9yVG9rZW46IGVsZW1lbnRNYXRjaGluZ0tleS5jb2xvclRva2VuLFxuICAgICAgICAgICAgc3R5bGU6IGVsZW1lbnRNYXRjaGluZ0tleS5zdHlsZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGVnZW5kSXRlbUFycmF5O1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgaW5wdXQgaW4gYSBzdGFuZGFyZCBmb3JtYXQuXG4gIGV4cG9ydCBmdW5jdGlvbiBzdGFuZGFyZGl6ZVJvd1N0YWNrcyhcbiAgICByb3dTdGFja3M6IFJvd1N0YWNrW10sXG4gICAga2V5c0luT3JkZXI6IEludGVyblNldDxzdHJpbmc+LFxuICApOiBSb3dTdGFja1tdIHtcbiAgICBjb25zdCBzdGFuZGFyZGl6ZWRSb3dzOiBSb3dTdGFja1tdID0gW107XG4gICAgZm9yIChjb25zdCByb3dTdGFjayBvZiByb3dTdGFja3MpIHtcbiAgICAgIGNvbnN0IHN0YW5kYXJkaXplZERhdGE6IFJvd0VsZW1lbnRbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0luT3JkZXIpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudE1hdGNoaW5nS2V5OiBSb3dFbGVtZW50IHwgdW5kZWZpbmVkID0gcm93U3RhY2suZGF0YS5maW5kKFxuICAgICAgICAgIGVsZW1lbnQgPT4gZWxlbWVudC5sYWJlbCA9PSBrZXksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChlbGVtZW50TWF0Y2hpbmdLZXkpIHtcbiAgICAgICAgICBzdGFuZGFyZGl6ZWREYXRhLnB1c2goe1xuICAgICAgICAgICAgLi4uZWxlbWVudE1hdGNoaW5nS2V5LFxuICAgICAgICAgICAgdmFsdWU6IE1hdGguYWJzKGVsZW1lbnRNYXRjaGluZ0tleS52YWx1ZSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YW5kYXJkaXplZFJvd3MucHVzaCh7XG4gICAgICAgIHJvd05hbWU6IHJvd1N0YWNrLnJvd05hbWUsXG4gICAgICAgIGRhdGE6IHN0YW5kYXJkaXplZERhdGEsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YW5kYXJkaXplZFJvd3M7XG4gIH1cblxuICAvLyBTdGFja3MgdGhlIGVsZW1lbnRzIGFuZCBjcmVhdGVzIHRoZSBiYXNlbGluZXMgYW5kIHRvcGxpbmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRSb3dEaXNwbGF5SW5mbyhyb3dTdGFjazogUm93U3RhY2spOiBSb3dEaXNwbGF5SW5mbyB7XG4gICAgY29uc3QgZWxlbWVudHNCdXRTdGFja2VkOiBTdGFja2VkUm93RWxlbWVudFtdID0gW107XG4gICAgbGV0IGN1cnJlbnRCYXNlbGluZTogbnVtYmVyID0gMDtcbiAgICBsZXQgY3VycmVudFRvcGxpbmU6IG51bWJlciA9IDA7XG4gICAgZm9yIChjb25zdCBjdXJyZW50RWxlbWVudCBvZiByb3dTdGFjay5kYXRhKSB7XG4gICAgICBjdXJyZW50VG9wbGluZSArPSBjdXJyZW50RWxlbWVudC52YWx1ZSA/PyAwO1xuXG4gICAgICBlbGVtZW50c0J1dFN0YWNrZWQucHVzaCh7XG4gICAgICAgIC4uLmN1cnJlbnRFbGVtZW50LFxuICAgICAgICBiYXNlbGluZTogY3VycmVudEJhc2VsaW5lLFxuICAgICAgICB0b3BsaW5lOiBjdXJyZW50VG9wbGluZSxcbiAgICAgIH0pO1xuXG4gICAgICBjdXJyZW50QmFzZWxpbmUgPSBjdXJyZW50VG9wbGluZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcm93TmFtZTogcm93U3RhY2sucm93TmFtZSxcbiAgICAgIGVsZW1lbnRzQnV0U3RhY2tlZDogZWxlbWVudHNCdXRTdGFja2VkLFxuICAgICAgcm93VG90YWw6IGN1cnJlbnRUb3BsaW5lLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhKGVtcHR5JCB8IGFzeW5jKTsgZWxzZSB6ZXJvU3RhdGVcIiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICA8c3ZnXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgKm5nSWY9XCJkcmF3RGF0YSQgfCBhc3luYzsgbGV0IGRyYXdcIlxuICAgIFthdHRyLnZpZXdCb3hdPVwiZHJhdy52aWV3Qm94XCJcbiAgPlxuICAgIDxkZWZzPlxuICAgICAgPHBhdHRlcm5cbiAgICAgICAgaWQ9XCJzdHJpcGVzXCJcbiAgICAgICAgeD1cIjBcIlxuICAgICAgICB5PVwiMFwiXG4gICAgICAgIFthdHRyLndpZHRoXT1cImRyYXcucm93SGVpZ2h0XCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImRyYXcucm93SGVpZ2h0XCJcbiAgICAgICAgcGF0dGVyblVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgPlxuICAgICAgICA8bGluZVxuICAgICAgICAgIFthdHRyLngxXT1cIjBcIlxuICAgICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImRyYXcucm93SGVpZ2h0XCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJkcmF3LnJvd0hlaWdodFwiXG4gICAgICAgICAgc3Ryb2tlPVwidmFyKC0td2hpdGUtMTAwKVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMVwiXG4gICAgICAgID48L2xpbmU+XG4gICAgICA8L3BhdHRlcm4+XG4gICAgPC9kZWZzPlxuICAgIDxnICpuZ0Zvcj1cImxldCByb3dOYW1lVG9EcmF3IG9mIGRyYXcucm93TmFtZXNcIj5cbiAgICAgIDx0ZXh0XG4gICAgICAgIGNsYXNzPVwicm93LXRpdGxlXCJcbiAgICAgICAgW2F0dHIueF09XCJyb3dOYW1lVG9EcmF3LnhcIlxuICAgICAgICBbYXR0ci55XT1cInJvd05hbWVUb0RyYXcueVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJvd05hbWVUb0RyYXcubGFiZWwgfX1cbiAgICAgIDwvdGV4dD5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZHJhdy54VGlja3NcIj5cbiAgICAgIDxyZWN0XG4gICAgICAgIGNsYXNzPVwidGlja1wiXG4gICAgICAgIFthdHRyLnhdPVwiZHJhdy54U2NhbGUodGljaylcIlxuICAgICAgICB5PVwiMFwiXG4gICAgICAgIHdpZHRoPVwiMVwiXG4gICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgPjwvcmVjdD5cbiAgICAgIDx0ZXh0XG4gICAgICAgIGNsYXNzPVwidGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwiZHJhdy54U2NhbGUodGljaylcIlxuICAgICAgICBbYXR0ci55XT1cImxvY2F0aW9uT2ZYQXhpc1RpY2soKVwiXG4gICAgICAgIGR4PVwiNFwiXG4gICAgICAgIGR5PVwiLTRcIlxuICAgICAgPlxuICAgICAgICB7eyB2YWx1ZUZvcm1hdHRlcih0aWNrKSB9fVxuICAgICAgPC90ZXh0PlxuICAgIDwvZz5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgcmVjdCBvZiBkcmF3LnJlY3RzXCI+XG4gICAgICA8cmVjdFxuICAgICAgICBjbGFzcz1cInJvd1wiXG4gICAgICAgIFthdHRyLnhdPVwicmVjdC54XCJcbiAgICAgICAgW2F0dHIueV09XCJyZWN0LnlcIlxuICAgICAgICBbYXR0ci53aWR0aF09XCJyZWN0LndpZHRoXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInJlY3QuaGVpZ2h0XCJcbiAgICAgICAgW2F0dHIuZmlsbF09XCJyZWN0LmZpbGxcIlxuICAgICAgICBbY2xhc3MuYmx1cnJlZF09XCJcbiAgICAgICAgICAoaG92ZXJlZFJlY3RhbmdsZSQgfCBhc3luYykgIT09IG51bGwgJiZcbiAgICAgICAgICAoaG92ZXJlZFJlY3RhbmdsZSQgfCBhc3luYyk/LnJlY3RhbmdsZT8ucm93TmFtZSAhPT0gcmVjdC5yb3dOYW1lXG4gICAgICAgIFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIlxuICAgICAgICAgIGhvdmVyZWRSZWN0YW5nbGUkLm5leHQoeyByZWN0YW5nbGU6IHJlY3QsIGV2ZW50OiAkZXZlbnQgfSlcbiAgICAgICAgXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZFJlY3RhbmdsZSQubmV4dChudWxsKVwiXG4gICAgICA+PC9yZWN0PlxuICAgICAgPHJlY3RcbiAgICAgICAgKm5nSWY9XCJyZWN0LnN0cmlwZWRcIlxuICAgICAgICBbYXR0ci54XT1cInJlY3QueFwiXG4gICAgICAgIFthdHRyLnldPVwicmVjdC55XCJcbiAgICAgICAgW2F0dHIud2lkdGhdPVwicmVjdC53aWR0aFwiXG4gICAgICAgIFthdHRyLmhlaWdodF09XCJyZWN0LmhlaWdodFwiXG4gICAgICAgIGZpbGw9XCJ1cmwoI3N0cmlwZXMpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiXG4gICAgICAgICAgaG92ZXJlZFJlY3RhbmdsZSQubmV4dCh7IHJlY3RhbmdsZTogcmVjdCwgZXZlbnQ6ICRldmVudCB9KVxuICAgICAgICBcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkUmVjdGFuZ2xlJC5uZXh0KG51bGwpXCJcbiAgICAgID48L3JlY3Q+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCByb3dUb3RhbFRvRHJhdyBvZiBkcmF3LnJvd1RvdGFsc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJyb3ctdG90YWxcIlxuICAgICAgICBbYXR0ci54XT1cInJvd1RvdGFsVG9EcmF3LnhcIlxuICAgICAgICBbYXR0ci55XT1cInJvd1RvdGFsVG9EcmF3LnlcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cImVuZFwiXG4gICAgICA+XG4gICAgICAgIHt7IHJvd1RvdGFsVG9EcmF3LmxhYmVsIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICA8L3N2Zz5cbiAgPGxlZ2VuZCAqbmdJZj1cImRyYXdEYXRhJCB8IGFzeW5jOyBsZXQgZHJhd1wiPlxuICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRyYXcubGVnZW5kSXRlbXNcIlxuICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgW2NvbG9yVG9rZW5dPVwiaXRlbS5jb2xvclRva2VuXCJcbiAgICAgIFtzdHlsZV09XCJpdGVtLnN0eWxlID8gaXRlbS5zdHlsZSA6ICdzb2xpZCdcIlxuICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgPC9sZWdlbmQ+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxvdXQkIHwgYXN5bmM7IGxldCBjYWxsb3V0XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtY2FsbG91dFxuICAgIFthbmNob3JdPVwiY2FsbG91dC5hbmNob3JcIlxuICAgIFtpc01vZGFsXT1cImZhbHNlXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2NlbnRlci1yaWdodCdcIlxuICAgIFthbGxvd2VkUG9zaXRpb25zXT1cIltcbiAgICAgICdjZW50ZXItcmlnaHQnLFxuICAgICAgJ2NlbnRlci1sZWZ0JyxcbiAgICAgICd0b3AtY2VudGVyJyxcbiAgICAgICdib3R0b20tY2VudGVyJ1xuICAgIF1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtdGl0bGVcIj57eyBjYWxsb3V0Lm1ldHJpYy5yb3dOYW1lIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC1tZXRyaWNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtbGFiZWxcIj57eyBjYWxsb3V0Lm1ldHJpYy5lbGVtZW50TGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtbWV0cmljLXZhbHVlXCI+e3sgY2FsbG91dC5tZXRyaWMudmFsdWUgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3Jpdi1jYWxsb3V0PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjemVyb1N0YXRlPlxuICA8cml2LXplcm8tc3RhdGUgW21lc3NhZ2VdPVwiemVyb1N0YXRlTWVzc2FnZVwiPjwvcml2LXplcm8tc3RhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tlZC1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi9zdGFja2VkLXJvdy9zdGFja2VkLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBYSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLGFBQWEsRUFDYixHQUFHLEVBQ0gsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQStEZCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBTzNCLE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFPRSwrRUFBK0U7UUFDOUQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBUzlELDZFQUE2RTtRQUM1RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFTM0QsOEVBQThFO1FBQzdELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxHQUFHLENBQUMsQ0FBQztRQVM1RCwrRUFBK0U7UUFFeEUsbUJBQWMsR0FBMEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQ3RELHFCQUFxQixDQUN0QixDQUFDO1FBU0Y7Ozs7O1VBS0U7UUFDTyxvQkFBZSxHQUFHO1lBQ3pC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QU0sY0FBYyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDMUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBRTVDLGtCQUFrQixDQUFDLElBQUksQ0FBQztnQkFDdEIsR0FBRyxjQUFjO2dCQUNqQixRQUFRLEVBQUUsZUFBZTtnQkFDekIsT0FBTyxFQUFFLGNBQWM7YUFDeEIsQ0FBQyxDQUFDO1lBRUgsZUFBZSxHQUFHLGNBQWMsQ0FBQztTQUNsQztRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDekIsa0JBQWtCLEVBQUUsa0JBQWtCO1lBQ3RDLFFBQVEsRUFBRSxjQUFjO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBckJlLG1DQUFpQixvQkFxQmhDLENBQUE7QUFDSCxDQUFDLEVBM0ZnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBMkZqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRlcm5TZXQsIHVuaW9uIH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHsgU2NhbGVMaW5lYXIsIHNjYWxlTGluZWFyIH0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExlZ2VuZEl0ZW0gfSBmcm9tICcuLi9sZWdlbmQtaXRlbS9sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuXG4vLyBBIHNwZWNpZmljYWxseSBjb2xvcmVkIHNlY3Rpb24gb2Ygb25lIHJvdy5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgUm93RWxlbWVudCA9IHtcbiAgbGFiZWw6IHN0cmluZzsgLy8gTGVnZW5kIGVsZW1lbnQgbmFtZVxuICB2YWx1ZTogbnVtYmVyO1xuICBjb2xvclRva2VuOiBzdHJpbmc7XG4gIHN0eWxlPzogJ3NvbGlkJyB8ICdzdHJpcGVkJztcbn07XG5cbi8vIFRoZSBpbnB1dCB0aGF0IGRldGVybWluZXMgb25lIHJvdy5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgUm93U3RhY2sgPSB7XG4gIHJvd05hbWU6IHN0cmluZztcbiAgZGF0YTogUm93RWxlbWVudFtdO1xufTtcblxuLy8gQSByb3cgZWxlbWVudCB3aXRoIGEgYmFzZWxpbmUsIHRvcGxpbmUsIGFuZCBhIHJlZmVyZW5jZSB0byB0aGUgc3RhY2sgaXQgYmVsb25ncyB0b1xudHlwZSBTdGFja2VkUm93RWxlbWVudCA9IFJvd0VsZW1lbnQgJiB7XG4gIGJhc2VsaW5lOiBudW1iZXI7XG4gIHRvcGxpbmU6IG51bWJlcjtcbn07XG5cbi8vIEV2ZXJ5dGhpbmcgdGhhdCBkZXNjcmliZXMgYSByb3cgd2Ugd2lsbCBkaXNwbGF5XG5leHBvcnQgdHlwZSBSb3dEaXNwbGF5SW5mbyA9IHtcbiAgcm93TmFtZTogc3RyaW5nO1xuICBlbGVtZW50c0J1dFN0YWNrZWQ6IFN0YWNrZWRSb3dFbGVtZW50W107XG4gIHJvd1RvdGFsOiBudW1iZXI7XG59O1xuXG4vLyBUaGUgZGF0YSBhYm91dCBhIHJlY3RhbmdsZSB3ZSBkaXNwbGF5IG9uIHNjcmVlblxudHlwZSBSb3dSZWN0YW5nbGUgPSB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgZmlsbDogc3RyaW5nO1xuICBzdHJpcGVkOiBib29sZWFuO1xuICByb3dOYW1lOiBzdHJpbmc7XG4gIHN0YWNrZWRSb3dFbGVtZW50OiBTdGFja2VkUm93RWxlbWVudDtcbn07XG5cbi8vIFRoZSBkYXRhIGFib3V0IGEgcm93IGxhYmVsIHdlIGRpc3BsYXkgb24gc2NyZWVuXG50eXBlIFJvd0xhYmVsID0ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbn07XG5cbi8vIFRoZSBkYXRhIHdlIGFyZSBkaXNwbGF5aW5nIGluIHRoaXMgY29tcG9uZW50XG50eXBlIFN0YWNrZWRSb3dEcmF3RGF0YSA9IHtcbiAgbGVnZW5kSXRlbXM6IExlZ2VuZEl0ZW1bXTtcbiAgcm93SGVpZ2h0OiBudW1iZXI7XG4gIHJlY3RzOiBSb3dSZWN0YW5nbGVbXTtcbiAgcm93TmFtZXM6IFJvd0xhYmVsW107XG4gIHJvd1RvdGFsczogUm93TGFiZWxbXTtcbiAgdmlld0JveDogc3RyaW5nO1xuICB4U2NhbGU6IFNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyLCBuZXZlcj47XG4gIHhUaWNrczogbnVtYmVyW107XG59O1xuXG50eXBlIENhbGxvdXRNZXRyaWMgPSB7IHJvd05hbWU6IHN0cmluZzsgZWxlbWVudExhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXN0YWNrZWQtcm93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YWNrZWQtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RhY2tlZC1yb3cuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3RhY2tlZFJvd0NvbXBvbmVudCB7XG4gIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2Ygcm93cyB3ZSB3aWxsIGRpc3BsYXksIGluIHRoZSBvcmRlciB3ZSB3aWxsIGRpc3BsYXkgdGhlbS5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvd1N0YWNrW10+KFtdKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbnB1dCh2OiBSb3dTdGFja1tdKSB7XG4gICAgdGhpcy5pbnB1dCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlucHV0KCk6IFJvd1N0YWNrW10ge1xuICAgIHJldHVybiB0aGlzLmlucHV0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8gV2lkdGggaGVscHMgZGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSB2aWV3Ym94IHRoaXMgZ3JhcGggaXMgZGlzcGxheWluZyBpbi5cbiAgcHJpdmF0ZSByZWFkb25seSB3aWR0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oOTYwKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB3aWR0aCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53aWR0aCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8vIEhlaWdodCBoZWxwcyBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIHZpZXdib3ggdGhpcyBncmFwaCBpcyBkaXNwbGF5aW5nIGluLlxuICBwcml2YXRlIHJlYWRvbmx5IGhlaWdodCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMjU2KTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoZWlnaHQodjogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvLyBWYWx1ZUZvcm1hdHRlciBkZXRlcm1pbmVzIGhvdyB3ZSBzdHlsZSB0aGUgdmFsdWVzIGluIGEgbWV0cmljIGFuZCB0aGUgeC1heGlzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWx1ZUZvcm1hdHRlcjogKHY6IG51bWJlcikgPT4gc3RyaW5nID0gdiA9PiB2LnRvU3RyaW5nKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB6ZXJvU3RhdGVNZXNzYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcbiAgICAnTm8gZGF0YSB0byBkaXNwbGF5LicsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgemVyb1N0YXRlTWVzc2FnZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnplcm9TdGF0ZU1lc3NhZ2UkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCB6ZXJvU3RhdGVNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuemVyb1N0YXRlTWVzc2FnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qXG4gICAgVGhlIGxheW91dCB3ZSBhcmUgc2hvb3RpbmcgZm9yIGlzOlxuXG4gICAgICAgICAgICAgIHwgICBYIEF4aXMgTGFiZWxzICB8XG4gICAgUm93IE5hbWUgIHwgICBSZWN0YW5nbGVzICAgICB8ICAgVG90YWxzXG4gICovXG4gIHJlYWRvbmx5IFNFQ1RJT05fSEVJR0hUUyA9IHtcbiAgICAvLyBTcGFjZSByZXNlcnZlZCBmb3IgdGhlIHgtYXhpcyBsYWJlbHNcbiAgICBYX0FYSVNfTEFCRUw6IDE0LFxuICAgIC8vIEhlaWdodCBvZiBlYWNoIHJvd1xuICAgIFBFUl9ST1c6IDIwLFxuICAgIC8vIEhlaWdoIG9mIGVhY2ggcmVjdGFuZ2xlXG4gICAgUEVSX1JFQ1RBTkdMRTogOCxcbiAgfTtcblxuICByZWFkb25seSBTRUNUSU9OX1dJRFRIUyA9IHtcbiAgICAvLyBTcGFjZSByZXNlcnZlZCBmb3IgdGhlIG5hbWUgYXQgdGhlIHN0YXJ0IG9mIHRoZSByb3dcbiAgICBST1dfTkFNRTogMTAwLFxuICAgIC8vIFNwYWNlIHJlc2VydmVkIGZvciB0aGUgdG90YWxzIGF0IHRoZSBlbmQgb2YgdGhlIHJvd1xuICAgIFJPV19UT1RBTF9MQUJFTDogNzIsXG4gIH07XG5cbiAgcmVhZG9ubHkgU0VDVElPTl9QQURESU5HID0ge1xuICAgIC8vIFBhZGRpbmcgYmV0d2VlbiBlYWNoIGVkZ2Ugb2YgdGhlIHZpZXdib3ggYW5kIHRoZSBjb250ZW50XG4gICAgT1VURVJfVE9QX0JPVFRPTTogNCxcbiAgICBPVVRFUl9MRUZUX1JJR0hUOiA0LFxuICAgIC8vIFBhZGRpbmcgYmV0d2VlbiB0aGUgYm90dG9tIG9mIG9uZSByb3cgYW5kIHRoZSB0b3Agb2YgdGhlIG5leHQgcm93XG4gICAgQkVUV0VFTl9ST1c6IDQsXG4gICAgLy8gU3BhY2UgYmV0d2VlbiB0aGUgcm93IGFuZCB0aGUgdG9wIG9mIGEgcmVjdGFuZ2xlIGluIHRoYXQgcm93XG4gICAgUkVDVEFOR0xFX1RPX1JPVzogNixcbiAgfTtcblxuICAvLyBUaGUgbnVtYmVyIG9mIFgtYXhpcyBzZWdtZW50cyB0byBjcmVhdGUsIHdpdGggbGFiZWxzIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNlZ21lbnQuXG4gIHJlYWRvbmx5IFhfVElDS19DT1VOVCA9IDg7XG5cbiAgLy8gWmVybyBvbiB0aGUgWCBheGlzIGlzIGFmdGVyIHRoZSBsZWZ0IHBhZGRpbmcgYW5kIHRoZSByb3cgbmFtZS5cbiAgbG9jYXRpb25PZlhBeGlzWmVybygpIHtcbiAgICByZXR1cm4gdGhpcy5TRUNUSU9OX1BBRERJTkcuT1VURVJfTEVGVF9SSUdIVCArIHRoaXMuU0VDVElPTl9XSURUSFMuUk9XX05BTUU7XG4gIH1cbiAgLy8gVGhlIGVuZCBvZiB0aGUgWCBheGlzIGlzIHJpZ2h0IGJlZm9yZSB0aGUgcm93IHRvdGFsIGFuZCB0aGUgcmlnaHQgcGFkZGluZy5cbiAgbG9jYXRpb25PZlhBeGlzRW5kKHdpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBzcGFjZU9uUmlnaHQ6IG51bWJlciA9XG4gICAgICB0aGlzLlNFQ1RJT05fV0lEVEhTLlJPV19UT1RBTF9MQUJFTCArXG4gICAgICB0aGlzLlNFQ1RJT05fUEFERElORy5PVVRFUl9MRUZUX1JJR0hUO1xuICAgIHJldHVybiB3aWR0aCAtIHNwYWNlT25SaWdodDtcbiAgfVxuICAvLyBUaGUgeS1pbmRleCBvZiB0aGUgeC1heGlzIHRpY2tzXG4gIGxvY2F0aW9uT2ZYQXhpc1RpY2soKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuU0VDVElPTl9QQURESU5HLk9VVEVSX1RPUF9CT1RUT00gKyB0aGlzLlNFQ1RJT05fSEVJR0hUUy5YX0FYSVNfTEFCRUxcbiAgICApO1xuICB9XG4gIC8vIFRoZSB5LWluZGV4IG9mIHRoZSB0b3Agb2YgdGhlIGN1cnJlbnQgcm93XG4gIGdldFRvcE9mUm93KHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzcGFjZUFib3ZlUm93czogbnVtYmVyID1cbiAgICAgIHRoaXMuU0VDVElPTl9QQURESU5HLk9VVEVSX1RPUF9CT1RUT00gKyB0aGlzLlNFQ1RJT05fSEVJR0hUUy5YX0FYSVNfTEFCRUw7XG5cbiAgICBjb25zdCBhYm92ZVJvd3M6IG51bWJlciA9IHJvd0luZGV4ICogdGhpcy5TRUNUSU9OX0hFSUdIVFMuUEVSX1JPVztcbiAgICBjb25zdCBhYm92ZVJvd1BhZGRpbmdzOiBudW1iZXIgPVxuICAgICAgcm93SW5kZXggKiB0aGlzLlNFQ1RJT05fUEFERElORy5CRVRXRUVOX1JPVztcbiAgICBjb25zdCBhbGxBYm92ZVJvd3M6IG51bWJlciA9IGFib3ZlUm93cyArIGFib3ZlUm93UGFkZGluZ3M7XG5cbiAgICByZXR1cm4gc3BhY2VBYm92ZVJvd3MgKyBhbGxBYm92ZVJvd3M7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgYWxsIHRoZSB2YWx1ZXMgd2UgbmVlZCBmb3IgZGlzcGxheWluZyB0aGUgZ3JhcGggb24gc2NyZWVuLlxuICBnZXREcmF3bkRhdGEocm93U3RhY2tzOiBSb3dTdGFja1tdLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIGlmIChyb3dTdGFja3MubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB2aWV3Qm94ID0gYDAgMCAke3dpZHRofSAke2hlaWdodH1gO1xuXG4gICAgY29uc3Qga2V5c0luT3JkZXI6IEludGVyblNldDxzdHJpbmc+ID1cbiAgICAgIFN0YWNrZWRSb3dIZWxwZXJzLmdldEtleU9yZGVyKHJvd1N0YWNrcyk7XG4gICAgY29uc3Qgc3RhbmRhcmRpemVkUm93czogUm93U3RhY2tbXSA9IFN0YWNrZWRSb3dIZWxwZXJzLnN0YW5kYXJkaXplUm93U3RhY2tzKFxuICAgICAgcm93U3RhY2tzLFxuICAgICAga2V5c0luT3JkZXIsXG4gICAgKTtcbiAgICBjb25zdCByb3dzRm9yRGlzcGxheTogUm93RGlzcGxheUluZm9bXSA9IHN0YW5kYXJkaXplZFJvd3MubWFwKHN0YWNrRGF0YSA9PiB7XG4gICAgICByZXR1cm4gU3RhY2tlZFJvd0hlbHBlcnMuZ2V0Um93RGlzcGxheUluZm8oc3RhY2tEYXRhKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBkb21haW4gc2hvdWxkIGJlIHRoZSBoaWdoZXN0IHRvdGFsIHZhbHVlIGZyb20gdGhlIHJvd3MuXG4gICAgY29uc3QgZG9tYWluTWF4ID0gTWF0aC5tYXgoMCwgLi4ucm93c0ZvckRpc3BsYXkubWFwKHJvdyA9PiByb3cucm93VG90YWwpKTtcbiAgICBjb25zdCB4U2NhbGU6IFNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyLCBuZXZlcj4gPSBzY2FsZUxpbmVhcigpXG4gICAgICAuZG9tYWluKFswLCBkb21haW5NYXhdKVxuICAgICAgLnJhbmdlKFt0aGlzLmxvY2F0aW9uT2ZYQXhpc1plcm8oKSwgdGhpcy5sb2NhdGlvbk9mWEF4aXNFbmQod2lkdGgpXSk7XG4gICAgY29uc3QgeFRpY2tzID0geFNjYWxlLnRpY2tzKHRoaXMuWF9USUNLX0NPVU5UKTtcblxuICAgIGNvbnN0IHJlY3RzOiBSb3dSZWN0YW5nbGVbXSA9IHRoaXMuY3JlYXRlUmVjdGFuZ2xlc0Zyb21Sb3dzKFxuICAgICAgcm93c0ZvckRpc3BsYXksXG4gICAgICB4U2NhbGUsXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd05hbWVzVG9EcmF3OiBSb3dMYWJlbFtdID0gdGhpcy5nZXRSb3dOYW1lc1RvRHJhdyhyb3dzRm9yRGlzcGxheSk7XG4gICAgY29uc3Qgcm93VG90YWxzVG9EcmF3OiBSb3dMYWJlbFtdID0gdGhpcy5nZXRSb3dUb3RhbHNUb0RyYXcoXG4gICAgICByb3dzRm9yRGlzcGxheSxcbiAgICAgIHdpZHRoLFxuICAgICk7XG5cbiAgICBjb25zdCBsZWdlbmRJdGVtczogTGVnZW5kSXRlbVtdID0gU3RhY2tlZFJvd0hlbHBlcnMuZ2V0TGVnZW5kSXRlbXMoXG4gICAgICByb3dzRm9yRGlzcGxheSxcbiAgICAgIGtleXNJbk9yZGVyLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGVnZW5kSXRlbXM6IGxlZ2VuZEl0ZW1zLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLlNFQ1RJT05fSEVJR0hUUy5QRVJfUkVDVEFOR0xFLFxuICAgICAgcmVjdHM6IHJlY3RzLFxuICAgICAgcm93TmFtZXM6IHJvd05hbWVzVG9EcmF3LFxuICAgICAgcm93VG90YWxzOiByb3dUb3RhbHNUb0RyYXcsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94LFxuICAgICAgeFNjYWxlOiB4U2NhbGUsXG4gICAgICB4VGlja3M6IHhUaWNrcyxcbiAgICB9O1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZm9yIGFsbCB0aGUgcmVjdGFuZ2xlcyBmb3IgYWxsIHRoZSByb3dzXG4gIGNyZWF0ZVJlY3RhbmdsZXNGcm9tUm93cyhcbiAgICBkaXNwbGF5Um93czogUm93RGlzcGxheUluZm9bXSxcbiAgICB4U2NhbGU6IFNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyLCBuZXZlcj4sXG4gICk6IFJvd1JlY3RhbmdsZVtdIHtcbiAgICBjb25zdCByZWN0YW5nbGVzOiBSb3dSZWN0YW5nbGVbXSA9IFtdO1xuICAgIGRpc3BsYXlSb3dzLmZvckVhY2goKGN1cnJlbnRSb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBjdXJyZW50Um93LmVsZW1lbnRzQnV0U3RhY2tlZC5mb3JFYWNoKChjdXJyZW50RWxlbWVudCwgXykgPT4ge1xuICAgICAgICBjb25zdCB0b3BPZlJvdzogbnVtYmVyID0gdGhpcy5nZXRUb3BPZlJvdyhyb3dJbmRleCk7XG5cbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlV2lkdGg6IG51bWJlciA9XG4gICAgICAgICAgeFNjYWxlKGN1cnJlbnRFbGVtZW50LnRvcGxpbmUpIC0geFNjYWxlKGN1cnJlbnRFbGVtZW50LmJhc2VsaW5lKTtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlSGVpZ2h0OiBudW1iZXIgPSB0aGlzLlNFQ1RJT05fSEVJR0hUUy5QRVJfUkVDVEFOR0xFO1xuXG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZVg6IG51bWJlciA9IHhTY2FsZShjdXJyZW50RWxlbWVudC5iYXNlbGluZSk7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZVk6IG51bWJlciA9XG4gICAgICAgICAgdG9wT2ZSb3cgKyB0aGlzLlNFQ1RJT05fUEFERElORy5SRUNUQU5HTEVfVE9fUk9XO1xuXG4gICAgICAgIGNvbnN0IGZpbGwgPSBgdmFyKCR7Y3VycmVudEVsZW1lbnQuY29sb3JUb2tlbn0pYDtcblxuICAgICAgICByZWN0YW5nbGVzLnB1c2goe1xuICAgICAgICAgIHg6IHJlY3RhbmdsZVgsXG4gICAgICAgICAgeTogcmVjdGFuZ2xlWSxcbiAgICAgICAgICB3aWR0aDogcmVjdGFuZ2xlV2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiByZWN0YW5nbGVIZWlnaHQsXG4gICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICBzdHJpcGVkOiBjdXJyZW50RWxlbWVudC5zdHlsZSA9PT0gJ3N0cmlwZWQnLFxuICAgICAgICAgIHJvd05hbWU6IGN1cnJlbnRSb3cucm93TmFtZSxcbiAgICAgICAgICBzdGFja2VkUm93RWxlbWVudDogY3VycmVudEVsZW1lbnQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlY3RhbmdsZXM7XG4gIH1cblxuICAvLyBHZXQgZGF0YSBvbiB0aGUgcm93IG5hbWVzIHdlIGFyZSBkcmF3aW5nXG4gIGdldFJvd05hbWVzVG9EcmF3KGRpc3BsYXlSb3dzOiBSb3dEaXNwbGF5SW5mb1tdKTogUm93TGFiZWxbXSB7XG4gICAgcmV0dXJuIGRpc3BsYXlSb3dzLm1hcCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgY29uc3Qgcm93TGFiZWxYID0gdGhpcy5TRUNUSU9OX1BBRERJTkcuT1VURVJfTEVGVF9SSUdIVDtcbiAgICAgIC8vIFRoZSByb3cgbmFtZSBsb29rcyByaWdodCBpZiBpdHMgYmFzZSBpcyBhdCB0aGUgYmFzZSBvZiB0aGUgYXNzb2NpYXRlZCByZWN0YW5nbGVcbiAgICAgIGNvbnN0IHJvd0xhYmVsWSA9XG4gICAgICAgIHRoaXMuZ2V0VG9wT2ZSb3cocm93SW5kZXgpICtcbiAgICAgICAgdGhpcy5TRUNUSU9OX1BBRERJTkcuUkVDVEFOR0xFX1RPX1JPVyArXG4gICAgICAgIHRoaXMuU0VDVElPTl9IRUlHSFRTLlBFUl9SRUNUQU5HTEU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiByb3cucm93TmFtZSxcbiAgICAgICAgeDogcm93TGFiZWxYLFxuICAgICAgICB5OiByb3dMYWJlbFksXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgb24gdGhlIHJvdyB0b3RhbHMgd2UgYXJlIGRyYXdpbmdcbiAgZ2V0Um93VG90YWxzVG9EcmF3KGRpc3BsYXlSb3dzOiBSb3dEaXNwbGF5SW5mb1tdLCB3aWR0aDogbnVtYmVyKTogUm93TGFiZWxbXSB7XG4gICAgcmV0dXJuIGRpc3BsYXlSb3dzLm1hcCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgY29uc3Qgcm93TGFiZWxYID0gd2lkdGggLSB0aGlzLlNFQ1RJT05fUEFERElORy5PVVRFUl9MRUZUX1JJR0hUO1xuICAgICAgLy8gVGhlIHJvdyB0b3RhbHMgbG9va3MgcmlnaHQgaWYgaXRzIGJhc2UgaXMgYXQgdGhlIGJhc2Ugb2YgdGhlIGFzc29jaWF0ZWQgcmVjdGFuZ2xlXG4gICAgICBjb25zdCByb3dMYWJlbFkgPVxuICAgICAgICB0aGlzLmdldFRvcE9mUm93KHJvd0luZGV4KSArXG4gICAgICAgIHRoaXMuU0VDVElPTl9QQURESU5HLlJFQ1RBTkdMRV9UT19ST1cgK1xuICAgICAgICB0aGlzLlNFQ1RJT05fSEVJR0hUUy5QRVJfUkVDVEFOR0xFO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogdGhpcy52YWx1ZUZvcm1hdHRlcihyb3cucm93VG90YWwpLFxuICAgICAgICB4OiByb3dMYWJlbFgsXG4gICAgICAgIHk6IHJvd0xhYmVsWSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSBkcmF3RGF0YSQ6IE9ic2VydmFibGU8U3RhY2tlZFJvd0RyYXdEYXRhIHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlucHV0JCxcbiAgICB0aGlzLndpZHRoJCxcbiAgICB0aGlzLmhlaWdodCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbaW5wdXQsIHdpZHRoLCBoZWlnaHRdKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREcmF3bkRhdGEoaW5wdXQsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgLy8gTGV0cyB1cyBrbm93IHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgemVybyBkYXRhIHN0YXRlXG4gIHJlYWRvbmx5IGVtcHR5JCA9IHRoaXMuaW5wdXQkLnBpcGUoXG4gICAgbWFwKGlucHV0ID0+IGlucHV0LmV2ZXJ5KHN0YWNrID0+IHN0YWNrLmRhdGEubGVuZ3RoID09PSAwKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICAvLyBXaGF0IHJlY3RhbmdsZSB3ZSBhcmUgY3VycmVudGx5IGhvdmVyaW5nIG92ZXJcbiAgcmVhZG9ubHkgaG92ZXJlZFJlY3RhbmdsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICByZWN0YW5nbGU6IFJvd1JlY3RhbmdsZTtcbiAgICBldmVudDogTW91c2VFdmVudDtcbiAgfSB8IG51bGw+KG51bGwpO1xuXG4gIC8vIENyZWF0ZSB0aGUgbWV0cmljIHRvIGRpc3BsYXkgYmFzZWQgb24gdGhlIGN1cnJlbnRseSBob3ZlcmVkIHJlY3RhbmdsZVxuICByZWFkb25seSBjYWxsb3V0JCA9IHRoaXMuaG92ZXJlZFJlY3RhbmdsZSQucGlwZShcbiAgICBtYXAoaG92ZXJlZFJlY3RhbmdsZSA9PiB7XG4gICAgICBpZiAoIWhvdmVyZWRSZWN0YW5nbGUpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCB7IHRhcmdldCB9ID0gaG92ZXJlZFJlY3RhbmdsZS5ldmVudDtcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IGFuY2hvciA9ICg8U1ZHUmVjdEVsZW1lbnQ+dGFyZ2V0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgY29uc3QgeyByb3dOYW1lLCBzdGFja2VkUm93RWxlbWVudCB9ID0gaG92ZXJlZFJlY3RhbmdsZS5yZWN0YW5nbGU7XG5cbiAgICAgIGNvbnN0IG1ldHJpYzogQ2FsbG91dE1ldHJpYyA9IHtcbiAgICAgICAgcm93TmFtZTogcm93TmFtZSxcbiAgICAgICAgZWxlbWVudExhYmVsOiBzdGFja2VkUm93RWxlbWVudC5sYWJlbCxcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVGb3JtYXR0ZXIoc3RhY2tlZFJvd0VsZW1lbnQudmFsdWUpLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHsgYW5jaG9yLCBtZXRyaWMgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFN0YWNrZWRSb3dIZWxwZXJzIHtcbiAgLy8gR2V0IGEgb3JkZXJlZCt1bmlxdWUgbGlzdCBvZiBrZXlzIGZyb20gdGhlIHJvdyBlbGVtZW50c1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0S2V5T3JkZXIocm93U3RhY2tzOiBSb3dTdGFja1tdKTogSW50ZXJuU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IGFsbFJvd0VsZW1lbnRzOiBSb3dFbGVtZW50W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJvd1N0YWNrIG9mIHJvd1N0YWNrcykge1xuICAgICAgYWxsUm93RWxlbWVudHMucHVzaCguLi5yb3dTdGFjay5kYXRhKTtcbiAgICB9XG4gICAgY29uc3Qgb3JkZXJlZEtleXM6IEludGVyblNldDxzdHJpbmc+ID0gdW5pb24oW1xuICAgICAgLi4uYWxsUm93RWxlbWVudHMubWFwKHJvd0VsZW1lbnQgPT4gcm93RWxlbWVudC5sYWJlbCksXG4gICAgXSk7XG4gICAgcmV0dXJuIG9yZGVyZWRLZXlzO1xuICB9XG5cbiAgLy8gR2V0IGEgbGlzdCBvZiB0aGUgbGVnZW5kIGl0ZW1zIHdlIHNob3VsZCBzaG93XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRMZWdlbmRJdGVtcyhcbiAgICByb3dzRm9yRGlzcGxheTogUm93RGlzcGxheUluZm9bXSxcbiAgICBrZXlzSW5PcmRlcjogSW50ZXJuU2V0PHN0cmluZz4sXG4gICk6IExlZ2VuZEl0ZW1bXSB7XG4gICAgY29uc3QgbGVnZW5kSXRlbUFycmF5OiBMZWdlbmRJdGVtW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJvd0ZvckRpc3BsYXkgb2Ygcm93c0ZvckRpc3BsYXkpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNJbk9yZGVyKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRNYXRjaGluZ0tleTogU3RhY2tlZFJvd0VsZW1lbnQgfCB1bmRlZmluZWQgPVxuICAgICAgICAgIHJvd0ZvckRpc3BsYXkuZWxlbWVudHNCdXRTdGFja2VkLmZpbmQoXG4gICAgICAgICAgICBlbGVtZW50ID0+IGVsZW1lbnQubGFiZWwgPT0ga2V5LFxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBlbGVtZW50TWF0Y2hpbmdLZXkgJiZcbiAgICAgICAgICBlbGVtZW50TWF0Y2hpbmdLZXkudmFsdWUgPiAwICYmXG4gICAgICAgICAgIWxlZ2VuZEl0ZW1BcnJheS5maW5kKGl0ZW0gPT4gaXRlbS5sYWJlbCA9PSBrZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIGxlZ2VuZEl0ZW1BcnJheS5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50TWF0Y2hpbmdLZXkubGFiZWwsXG4gICAgICAgICAgICBjb2xvclRva2VuOiBlbGVtZW50TWF0Y2hpbmdLZXkuY29sb3JUb2tlbixcbiAgICAgICAgICAgIHN0eWxlOiBlbGVtZW50TWF0Y2hpbmdLZXkuc3R5bGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxlZ2VuZEl0ZW1BcnJheTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGlucHV0IGluIGEgc3RhbmRhcmQgZm9ybWF0LlxuICBleHBvcnQgZnVuY3Rpb24gc3RhbmRhcmRpemVSb3dTdGFja3MoXG4gICAgcm93U3RhY2tzOiBSb3dTdGFja1tdLFxuICAgIGtleXNJbk9yZGVyOiBJbnRlcm5TZXQ8c3RyaW5nPixcbiAgKTogUm93U3RhY2tbXSB7XG4gICAgY29uc3Qgc3RhbmRhcmRpemVkUm93czogUm93U3RhY2tbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgcm93U3RhY2sgb2Ygcm93U3RhY2tzKSB7XG4gICAgICBjb25zdCBzdGFuZGFyZGl6ZWREYXRhOiBSb3dFbGVtZW50W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNJbk9yZGVyKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRNYXRjaGluZ0tleTogUm93RWxlbWVudCB8IHVuZGVmaW5lZCA9IHJvd1N0YWNrLmRhdGEuZmluZChcbiAgICAgICAgICBlbGVtZW50ID0+IGVsZW1lbnQubGFiZWwgPT0ga2V5LFxuICAgICAgICApO1xuICAgICAgICBpZiAoZWxlbWVudE1hdGNoaW5nS2V5KSB7XG4gICAgICAgICAgc3RhbmRhcmRpemVkRGF0YS5wdXNoKHtcbiAgICAgICAgICAgIC4uLmVsZW1lbnRNYXRjaGluZ0tleSxcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLmFicyhlbGVtZW50TWF0Y2hpbmdLZXkudmFsdWUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFuZGFyZGl6ZWRSb3dzLnB1c2goe1xuICAgICAgICByb3dOYW1lOiByb3dTdGFjay5yb3dOYW1lLFxuICAgICAgICBkYXRhOiBzdGFuZGFyZGl6ZWREYXRhLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFuZGFyZGl6ZWRSb3dzO1xuICB9XG5cbiAgLy8gU3RhY2tzIHRoZSBlbGVtZW50cyBhbmQgY3JlYXRlcyB0aGUgYmFzZWxpbmVzIGFuZCB0b3BsaW5lc1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0Um93RGlzcGxheUluZm8ocm93U3RhY2s6IFJvd1N0YWNrKTogUm93RGlzcGxheUluZm8ge1xuICAgIGNvbnN0IGVsZW1lbnRzQnV0U3RhY2tlZDogU3RhY2tlZFJvd0VsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50QmFzZWxpbmU6IG51bWJlciA9IDA7XG4gICAgbGV0IGN1cnJlbnRUb3BsaW5lOiBudW1iZXIgPSAwO1xuICAgIGZvciAoY29uc3QgY3VycmVudEVsZW1lbnQgb2Ygcm93U3RhY2suZGF0YSkge1xuICAgICAgY3VycmVudFRvcGxpbmUgKz0gY3VycmVudEVsZW1lbnQudmFsdWUgPz8gMDtcblxuICAgICAgZWxlbWVudHNCdXRTdGFja2VkLnB1c2goe1xuICAgICAgICAuLi5jdXJyZW50RWxlbWVudCxcbiAgICAgICAgYmFzZWxpbmU6IGN1cnJlbnRCYXNlbGluZSxcbiAgICAgICAgdG9wbGluZTogY3VycmVudFRvcGxpbmUsXG4gICAgICB9KTtcblxuICAgICAgY3VycmVudEJhc2VsaW5lID0gY3VycmVudFRvcGxpbmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvd05hbWU6IHJvd1N0YWNrLnJvd05hbWUsXG4gICAgICBlbGVtZW50c0J1dFN0YWNrZWQ6IGVsZW1lbnRzQnV0U3RhY2tlZCxcbiAgICAgIHJvd1RvdGFsOiBjdXJyZW50VG9wbGluZSxcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIShlbXB0eSQgfCBhc3luYyk7IGVsc2UgemVyb1N0YXRlXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPHN2Z1xuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICpuZ0lmPVwiZHJhd0RhdGEkIHwgYXN5bmM7IGxldCBkcmF3XCJcbiAgICBbYXR0ci52aWV3Qm94XT1cImRyYXcudmlld0JveFwiXG4gID5cbiAgICA8ZGVmcz5cbiAgICAgIDxwYXR0ZXJuXG4gICAgICAgIGlkPVwic3RyaXBlc1wiXG4gICAgICAgIHg9XCIwXCJcbiAgICAgICAgeT1cIjBcIlxuICAgICAgICBbYXR0ci53aWR0aF09XCJkcmF3LnJvd0hlaWdodFwiXG4gICAgICAgIFthdHRyLmhlaWdodF09XCJkcmF3LnJvd0hlaWdodFwiXG4gICAgICAgIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgID5cbiAgICAgICAgPGxpbmVcbiAgICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgICBbYXR0ci55MV09XCIwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJkcmF3LnJvd0hlaWdodFwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiZHJhdy5yb3dIZWlnaHRcIlxuICAgICAgICAgIHN0cm9rZT1cInZhcigtLXdoaXRlLTEwMClcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjFcIlxuICAgICAgICA+PC9saW5lPlxuICAgICAgPC9wYXR0ZXJuPlxuICAgIDwvZGVmcz5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgcm93TmFtZVRvRHJhdyBvZiBkcmF3LnJvd05hbWVzXCI+XG4gICAgICA8dGV4dFxuICAgICAgICByaXZTVkdUZXh0VHJ1bmNhdGVcbiAgICAgICAgW3RleHRdPVwicm93TmFtZVRvRHJhdy5sYWJlbFwiXG4gICAgICAgIFt3aWR0aF09XCJTRUNUSU9OX1dJRFRIUy5ST1dfTkFNRVwiXG4gICAgICAgIGNsYXNzPVwicm93LXRpdGxlXCJcbiAgICAgICAgW2F0dHIueF09XCJyb3dOYW1lVG9EcmF3LnhcIlxuICAgICAgICBbYXR0ci55XT1cInJvd05hbWVUb0RyYXcueVwiXG4gICAgICA+PC90ZXh0PlxuICAgIDwvZz5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgdGljayBvZiBkcmF3LnhUaWNrc1wiPlxuICAgICAgPHJlY3RcbiAgICAgICAgY2xhc3M9XCJ0aWNrXCJcbiAgICAgICAgW2F0dHIueF09XCJkcmF3LnhTY2FsZSh0aWNrKVwiXG4gICAgICAgIHk9XCIwXCJcbiAgICAgICAgd2lkdGg9XCIxXCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICA+PC9yZWN0PlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJ0aWNrLWxhYmVsXCJcbiAgICAgICAgW2F0dHIueF09XCJkcmF3LnhTY2FsZSh0aWNrKVwiXG4gICAgICAgIFthdHRyLnldPVwibG9jYXRpb25PZlhBeGlzVGljaygpXCJcbiAgICAgICAgZHg9XCI0XCJcbiAgICAgICAgZHk9XCItNFwiXG4gICAgICA+XG4gICAgICAgIHt7IHZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCByZWN0IG9mIGRyYXcucmVjdHNcIj5cbiAgICAgIDxyZWN0XG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgW2F0dHIueF09XCJyZWN0LnhcIlxuICAgICAgICBbYXR0ci55XT1cInJlY3QueVwiXG4gICAgICAgIFthdHRyLndpZHRoXT1cInJlY3Qud2lkdGhcIlxuICAgICAgICBbYXR0ci5oZWlnaHRdPVwicmVjdC5oZWlnaHRcIlxuICAgICAgICBbYXR0ci5maWxsXT1cInJlY3QuZmlsbFwiXG4gICAgICAgIFtjbGFzcy5ibHVycmVkXT1cIlxuICAgICAgICAgIChob3ZlcmVkUmVjdGFuZ2xlJCB8IGFzeW5jKSAhPT0gbnVsbCAmJlxuICAgICAgICAgIChob3ZlcmVkUmVjdGFuZ2xlJCB8IGFzeW5jKT8ucmVjdGFuZ2xlPy5yb3dOYW1lICE9PSByZWN0LnJvd05hbWVcbiAgICAgICAgXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiXG4gICAgICAgICAgaG92ZXJlZFJlY3RhbmdsZSQubmV4dCh7IHJlY3RhbmdsZTogcmVjdCwgZXZlbnQ6ICRldmVudCB9KVxuICAgICAgICBcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkUmVjdGFuZ2xlJC5uZXh0KG51bGwpXCJcbiAgICAgID48L3JlY3Q+XG4gICAgICA8cmVjdFxuICAgICAgICAqbmdJZj1cInJlY3Quc3RyaXBlZFwiXG4gICAgICAgIFthdHRyLnhdPVwicmVjdC54XCJcbiAgICAgICAgW2F0dHIueV09XCJyZWN0LnlcIlxuICAgICAgICBbYXR0ci53aWR0aF09XCJyZWN0LndpZHRoXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInJlY3QuaGVpZ2h0XCJcbiAgICAgICAgZmlsbD1cInVybCgjc3RyaXBlcylcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJcbiAgICAgICAgICBob3ZlcmVkUmVjdGFuZ2xlJC5uZXh0KHsgcmVjdGFuZ2xlOiByZWN0LCBldmVudDogJGV2ZW50IH0pXG4gICAgICAgIFwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWRSZWN0YW5nbGUkLm5leHQobnVsbClcIlxuICAgICAgPjwvcmVjdD5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHJvd1RvdGFsVG9EcmF3IG9mIGRyYXcucm93VG90YWxzXCI+XG4gICAgICA8dGV4dFxuICAgICAgICBjbGFzcz1cInJvdy10b3RhbFwiXG4gICAgICAgIFthdHRyLnhdPVwicm93VG90YWxUb0RyYXcueFwiXG4gICAgICAgIFthdHRyLnldPVwicm93VG90YWxUb0RyYXcueVwiXG4gICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcbiAgICAgID5cbiAgICAgICAge3sgcm93VG90YWxUb0RyYXcubGFiZWwgfX1cbiAgICAgIDwvdGV4dD5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuICA8bGVnZW5kICpuZ0lmPVwiZHJhd0RhdGEkIHwgYXN5bmM7IGxldCBkcmF3XCI+XG4gICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZHJhdy5sZWdlbmRJdGVtc1wiXG4gICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICBbY29sb3JUb2tlbl09XCJpdGVtLmNvbG9yVG9rZW5cIlxuICAgICAgW3N0eWxlXT1cIml0ZW0uc3R5bGUgPyBpdGVtLnN0eWxlIDogJ3NvbGlkJ1wiXG4gICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICA8L2xlZ2VuZD5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiY2FsbG91dCQgfCBhc3luYzsgbGV0IGNhbGxvdXRcIj5cbiAgPHJpdi1jYWxsb3V0XG4gICAgKnJpdi1jYWxsb3V0XG4gICAgW2FuY2hvcl09XCJjYWxsb3V0LmFuY2hvclwiXG4gICAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInY2VudGVyLXJpZ2h0J1wiXG4gICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgJ2NlbnRlci1yaWdodCcsXG4gICAgICAnY2VudGVyLWxlZnQnLFxuICAgICAgJ3RvcC1jZW50ZXInLFxuICAgICAgJ2JvdHRvbS1jZW50ZXInXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC10aXRsZVwiPnt7IGNhbGxvdXQubWV0cmljLnJvd05hbWUgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LW1ldHJpY1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC1sYWJlbFwiPnt7IGNhbGxvdXQubWV0cmljLmVsZW1lbnRMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC1tZXRyaWMtdmFsdWVcIj57eyBjYWxsb3V0Lm1ldHJpYy52YWx1ZSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvcml2LWNhbGxvdXQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN6ZXJvU3RhdGU+XG4gIDxyaXYtemVyby1zdGF0ZSBbbWVzc2FnZV09XCJ6ZXJvU3RhdGVNZXNzYWdlXCI+PC9yaXYtemVyby1zdGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -5,6 +5,8 @@ export * from './lib/format/pipes/dollars.pipe';
|
|
|
5
5
|
export * from './lib/format/pipes/number.pipe';
|
|
6
6
|
export * from './lib/format/pipes/percentage.pipe';
|
|
7
7
|
export * from './lib/format/pipes/small-currency.pipe';
|
|
8
|
+
export * from './lib/format/svg-text-truncate/svg-text-truncate.directive';
|
|
9
|
+
export * from './lib/format/truncate/truncate.component';
|
|
8
10
|
export * from './lib/icon/icon.component';
|
|
9
11
|
export * from './lib/input/button/button.component';
|
|
10
12
|
export * from './lib/input/date-range/date-range.component';
|
|
@@ -35,4 +37,4 @@ export * from './lib/visualization/stacked-row/stacked-row.component';
|
|
|
35
37
|
export * from './lib/visualization/time-series/time-series.component';
|
|
36
38
|
export * from './lib/visualization/trend/trend.component';
|
|
37
39
|
export * from './lib/visualization/zero-state/zero-state.component';
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRlbnQtdG9nZ2xlL3RleHQtdG9nZ2xlL3RleHQtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1hdC9waXBlcy9kYXlzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybWF0L3BpcGVzL2RvbGxhcnMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtYXQvcGlwZXMvbnVtYmVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybWF0L3BpcGVzL3BlcmNlbnRhZ2UucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtYXQvcGlwZXMvc21hbGwtY3VycmVuY3kucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtYXQvc3ZnLXRleHQtdHJ1bmNhdGUvc3ZnLXRleHQtdHJ1bmNhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1hdC90cnVuY2F0ZS90cnVuY2F0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0L2RhdGUvZGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXQvaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0L3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZC9sb2FkaW5nLWNvdmVyL2xvYWRpbmctY292ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvYWQvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQtb3V0bGV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsL2NhbGxvdXQvY2FsbG91dC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwvaGVscC9oZWxwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmF2aWdhdGlvbi9saW5rL2xpbmsuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jpdi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLXJvdy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vZG9udXQvZG9udXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vZnVubmVsLWNoYXJ0L2Z1bm5lbC1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uL2xlZ2VuZC1pdGVtL2xlZ2VuZC1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1jb2x1bW4vc3RhY2tlZC1jb2x1bW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1yb3cvc3RhY2tlZC1yb3cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vdGltZS1zZXJpZXMvdGltZS1zZXJpZXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vdHJlbmQvdHJlbmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24vemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG4iXX0=
|