@sumaris-net/ngx-components 2.4.81 → 2.4.82-rc2

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.
@@ -1,131 +1,129 @@
1
- import { ANIMATION_MODULE_TYPE, Directive, Inject, Input, Optional } from '@angular/core';
1
+ import { ANIMATION_MODULE_TYPE, Directive, HostBinding, Inject, Input, Optional } from '@angular/core';
2
2
  import { MatBadge } from '@angular/material/badge';
3
- import { Subject } from 'rxjs';
4
- import { debounceTime } from 'rxjs/operators';
5
3
  import * as i0 from "@angular/core";
6
4
  import * as i1 from "@angular/cdk/a11y";
7
5
  export class BadgeDirective extends MatBadge {
8
6
  constructor(_ngZone, el, _ariaDescriber, _renderer, _animationMode) {
9
7
  super(_ngZone, el, _ariaDescriber, _renderer, _animationMode);
10
8
  this.el = el;
11
- this._subscription = null;
12
- this._$update = new Subject();
13
9
  this.content = 0x00A0; // Will be invisible
14
10
  }
15
- set appColor(value) {
16
- if (this._appColor !== value) {
17
- this._appColor = value;
18
- this.color = value;
19
- this.updateView();
20
- }
21
- }
22
- get appColor() {
23
- return this._appColor;
24
- }
25
- set fill(value) {
26
- if (this._fill !== value) {
27
- this._fill = value;
28
- this.updateView();
29
- }
30
- }
31
- get fill() {
32
- return this._fill;
11
+ get isOverlapHost() { return this.overlap; }
12
+ get isAboveHost() { return this.isAbove(); }
13
+ get isBelowHost() { return !this.isAbove(); }
14
+ get isBeforeHost() { return !this.isAfter(); }
15
+ get isAfterHost() { return this.isAfter(); }
16
+ get isSmallHost() { return this.size === 'small'; }
17
+ get isMediumHost() { return this.size === 'medium'; }
18
+ get isLargeHost() { return this.size === 'large'; }
19
+ get isHiddenHost() { return this.hidden || !this.content; }
20
+ get isDisabledHost() { return this.disabled; }
21
+ ngOnInit() {
22
+ super.ngOnInit();
33
23
  }
34
- set matIcon(icon) {
35
- if (this._matIcon !== icon) {
36
- this._matIcon = icon;
37
- this.updateView();
38
- }
24
+ ngAfterViewInit() {
25
+ this.updateView();
39
26
  }
40
- set ionIcon(icon) {
41
- if (this._ionIcon !== icon) {
42
- this._ionIcon = icon;
27
+ ngOnChanges(changes) {
28
+ if (changes.appBadgeColor || changes.appBadgeFill || changes.appBadgeMatIcon || changes.appBadgeIcon || changes.appBadgeHidden || changes.appBadgeOverlap || changes.appBadgePosition) {
43
29
  this.updateView();
44
30
  }
45
31
  }
46
- set hidden(hidden) {
47
- if (super.hidden !== hidden) {
48
- super.hidden = hidden;
49
- this.updateView(true);
50
- }
51
- }
52
- get hidden() {
53
- return super.hidden;
54
- }
55
- ngOnInit() {
56
- super.ngOnInit();
57
- // Default color
58
- this._appColor = this._appColor || 'primary';
59
- if (this._appColor === 'warn')
60
- this._appColor = 'warning';
61
- this.updateView(true);
62
- this._subscription = this._$update
63
- .pipe(debounceTime(100))
64
- .subscribe(() => this.updateView(true));
65
- }
66
32
  ngOnDestroy() {
67
33
  super.ngOnDestroy();
68
- this._subscription?.unsubscribe();
69
34
  }
70
- updateView(immediate) {
71
- // Async by default
72
- if (!immediate) {
73
- this._$update.next();
74
- return;
75
- }
35
+ updateView() {
76
36
  const badge = this.getBadgeElement();
77
37
  if (!badge)
78
38
  return;
79
- let fontSize;
39
+ // Fix color
40
+ if (!this.appBadgeColor)
41
+ this.appBadgeColor = 'primary';
42
+ if (this.appBadgeColor === 'warn')
43
+ this.appBadgeColor = 'warning';
44
+ let size;
80
45
  switch (this.size) {
81
46
  case 'large':
82
- fontSize = '24px';
47
+ size = 24;
83
48
  break;
84
49
  case 'medium':
85
- fontSize = '22px';
50
+ size = 22;
86
51
  break;
87
52
  case 'small':
88
- fontSize = '16px';
53
+ size = 16;
89
54
  break;
90
55
  }
91
- let hidden = this.hidden;
56
+ let hidden = this.appBadgeHidden;
92
57
  let html = '';
93
- if (this._matIcon) {
94
- html = `<i class="material-icons" style="font-size: ${fontSize};">${this._matIcon}</i>`;
58
+ if (this.appBadgeMatIcon) {
59
+ html = `<i class="material-icons" style="font-size: ${size}px;">${this.appBadgeMatIcon}</i>`;
95
60
  }
96
- else if (this._ionIcon) {
97
- html = `<ion-icon style="font-size: ${fontSize}; pointer-events: none;" name="${this._ionIcon}"></ion-icon>`;
61
+ else if (this.appBadgeIcon) {
62
+ html = `<ion-icon style="font-size: ${size}px; pointer-events: none;" name="${this.appBadgeIcon}"></ion-icon>`;
98
63
  }
99
64
  else {
100
65
  hidden = true;
101
66
  }
102
- if (this._html !== html) {
67
+ if (!hidden && this._html !== html) {
103
68
  this._html = html;
104
69
  badge.innerHTML = html;
105
70
  }
106
71
  // Update style
107
72
  // fill: 'clear'
108
- if (this._fill === 'clear') {
109
- badge.style.color = `var(--ion-color-${this._appColor})`;
73
+ if (this.appBadgeFill === 'clear') {
74
+ badge.style.color = `var(--ion-color-${this.appBadgeColor})`;
110
75
  badge.style.background = 'transparent';
111
76
  }
112
77
  // fill: 'solid' (default value)
113
78
  else {
114
- badge.style.background = `var(--ion-color-${this._appColor})`;
115
- badge.style.color = `var(--ion-color-${this._appColor}-contrast)`;
79
+ badge.style.background = `var(--ion-color-${this.appBadgeColor})`;
80
+ badge.style.color = `var(--ion-color-${this.appBadgeColor}-contrast)`;
116
81
  }
117
82
  if (hidden)
118
83
  badge.style.display = 'none';
119
- else if (badge.style.display !== 'inline-block')
120
- badge.style.display = 'inline-block';
121
- if (badge.style.alignItems !== 'center')
122
- badge.style.alignItems = 'center';
123
- if (badge.style.justifyContent !== 'center')
124
- badge.style.justifyContent = 'center';
84
+ else {
85
+ if (badge.style.display !== 'inline-block')
86
+ badge.style.display = 'inline-block';
87
+ if (badge.style.position !== 'absolute')
88
+ badge.style.position = 'absolute';
89
+ /*
90
+ // WOARKROUND to force position of the badge, when inside a <mat-button> (e.g. on a <mat-label>)
91
+ const overlap = this.overlap;
92
+
93
+ // Right/left position
94
+ if (this.isAfter() ) {
95
+ const parentWidth = badge.parentElement.getBoundingClientRect().width;
96
+ if (parentWidth > 0) {
97
+ const left = `${parentWidth - (overlap ? size / 2 : 0)}px`;
98
+ if (badge.style.left !== left) badge.style.left = left;
99
+ if (badge.style.right !== '') badge.style.right = '';
100
+ }
101
+ else {
102
+ const right = `${-1 * (overlap ? size / 2 : size)}px`;
103
+ if (badge.style.right !== right) badge.style.right = right;
104
+ if (badge.style.left !== '') badge.style.left = '';
105
+ }
106
+ }
107
+
108
+ // Top/bottom position
109
+ if (this.isAbove()) {
110
+ const parentHeight = badge.parentElement.getBoundingClientRect().height;
111
+ if (parentHeight > 0) {
112
+ const bottom = `${parentHeight - (overlap ? (size / 2) : size)}px`;
113
+ if (badge.style.bottom !== bottom) badge.style.bottom = bottom;
114
+ if (badge.style.top !== '') badge.style.top = '';
115
+ }
116
+ else {
117
+ const top = `${-1 * (overlap ? (size / 2) : size)}px`;
118
+ if (badge.style.top !== top) badge.style.top = top;
119
+ if (badge.style.bottom !== '') badge.style.bottom = '';
120
+ }
121
+ }*/
122
+ }
125
123
  }
126
124
  }
127
125
  BadgeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
128
- BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: { disabled: ["matBadgeDisabled", "disabled"], color: ["appBadgeColor", "color"], size: ["appBadgeSize", "size"], fill: ["appBadgeFill", "fill"], overlap: ["appBadgeOverlap", "overlap"], hidden: ["appBadgeHidden", "hidden"], appColor: ["appBadgeColor", "appColor"], matIcon: ["appBadgeMatIcon", "matIcon"], ionIcon: ["appBadgeIcon", "ionIcon"] }, host: { properties: { "class.mat-badge-overlap": "overlap", "class.mat-badge-above": "isAbove()", "class.mat-badge-below": "!isAbove()", "class.mat-badge-before": "!isAfter()", "class.mat-badge-after": "isAfter()", "class.mat-badge-small": "size === \"small\"", "class.mat-badge-medium": "size === \"medium\"", "class.mat-badge-large": "size === \"large\"", "class.mat-badge-hidden": "hidden || !content", "class.mat-badge-disabled": "disabled" }, classAttribute: "mat-badge" }, usesInheritance: true, ngImport: i0 });
126
+ BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: { disabled: ["matBadgeDisabled", "disabled"], color: ["appBadgeColor", "color"], size: ["appBadgeSize", "size"], fill: ["appBadgeFill", "fill"], hidden: ["appBadgeHidden", "hidden"], overlap: ["appBadgeOverlap", "overlap"], position: ["appBadgePosition", "position"], appBadgeColor: "appBadgeColor", appBadgeFill: "appBadgeFill", appBadgeMatIcon: "appBadgeMatIcon", appBadgeIcon: "appBadgeIcon", appBadgeHidden: "appBadgeHidden", appBadgeOverlap: "appBadgeOverlap", appBadgePosition: "appBadgePosition" }, host: { properties: { "class.mat-badge": "this.true", "class.mat-badge-overlap": "this.isOverlapHost", "class.mat-badge-above": "this.isAboveHost", "class.mat-badge-below": "this.isBelowHost", "class.mat-badge-before": "this.isBeforeHost", "class.mat-badge-after": "this.isAfterHost", "class.mat-badge-small": "this.isSmallHost", "class.mat-badge-medium": "this.isMediumHost", "class.mat-badge-large": "this.isLargeHost", "class.mat-badge-hidden": "this.isHiddenHost", "class.mat-badge-disabled": "this.isDisabledHost" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
129
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BadgeDirective, decorators: [{
130
128
  type: Directive,
131
129
  args: [{
@@ -135,42 +133,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
135
133
  'color: appBadgeColor',
136
134
  'size: appBadgeSize',
137
135
  'fill: appBadgeFill',
136
+ 'hidden: appBadgeHidden',
138
137
  'overlap: appBadgeOverlap',
139
- 'hidden: appBadgeHidden'
140
- ],
141
- host: {
142
- 'class': 'mat-badge',
143
- '[class.mat-badge-overlap]': 'overlap',
144
- '[class.mat-badge-above]': 'isAbove()',
145
- '[class.mat-badge-below]': '!isAbove()',
146
- '[class.mat-badge-before]': '!isAfter()',
147
- '[class.mat-badge-after]': 'isAfter()',
148
- '[class.mat-badge-small]': 'size === "small"',
149
- '[class.mat-badge-medium]': 'size === "medium"',
150
- '[class.mat-badge-large]': 'size === "large"',
151
- '[class.mat-badge-hidden]': 'hidden || !content',
152
- '[class.mat-badge-disabled]': 'disabled',
153
- }
138
+ 'position: appBadgePosition'
139
+ ]
154
140
  }]
155
141
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
156
142
  type: Optional
157
143
  }, {
158
144
  type: Inject,
159
145
  args: [ANIMATION_MODULE_TYPE]
160
- }] }]; }, propDecorators: { appColor: [{
161
- type: Input,
162
- args: ['appBadgeColor']
163
- }], fill: [{
164
- type: Input,
165
- args: ['appBadgeFill']
166
- }], matIcon: [{
167
- type: Input,
168
- args: ['appBadgeMatIcon']
169
- }], ionIcon: [{
170
- type: Input,
171
- args: ['appBadgeIcon']
172
- }], hidden: [{
173
- type: Input,
174
- args: ['appBadgeHidden']
146
+ }] }]; }, propDecorators: { true: [{
147
+ type: HostBinding,
148
+ args: ['class.mat-badge']
149
+ }], isOverlapHost: [{
150
+ type: HostBinding,
151
+ args: ['class.mat-badge-overlap']
152
+ }], isAboveHost: [{
153
+ type: HostBinding,
154
+ args: ['class.mat-badge-above']
155
+ }], isBelowHost: [{
156
+ type: HostBinding,
157
+ args: ['class.mat-badge-below']
158
+ }], isBeforeHost: [{
159
+ type: HostBinding,
160
+ args: ['class.mat-badge-before']
161
+ }], isAfterHost: [{
162
+ type: HostBinding,
163
+ args: ['class.mat-badge-after']
164
+ }], isSmallHost: [{
165
+ type: HostBinding,
166
+ args: ['class.mat-badge-small']
167
+ }], isMediumHost: [{
168
+ type: HostBinding,
169
+ args: ['class.mat-badge-medium']
170
+ }], isLargeHost: [{
171
+ type: HostBinding,
172
+ args: ['class.mat-badge-large']
173
+ }], isHiddenHost: [{
174
+ type: HostBinding,
175
+ args: ['class.mat-badge-hidden']
176
+ }], isDisabledHost: [{
177
+ type: HostBinding,
178
+ args: ['class.mat-badge-disabled']
179
+ }], appBadgeColor: [{
180
+ type: Input
181
+ }], appBadgeFill: [{
182
+ type: Input
183
+ }], appBadgeMatIcon: [{
184
+ type: Input
185
+ }], appBadgeIcon: [{
186
+ type: Input
187
+ }], appBadgeHidden: [{
188
+ type: Input
189
+ }], appBadgeOverlap: [{
190
+ type: Input
191
+ }], appBadgePosition: [{
192
+ type: Input
175
193
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBNkIsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBOEI1QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFFBQVE7SUF3RDFDLFlBQVksT0FBZSxFQUNMLEVBQTJCLEVBQ3JDLGNBQTZCLEVBQzdCLFNBQW9CLEVBQ3VCLGNBQW1DO1FBRXhGLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFMMUMsT0FBRSxHQUFGLEVBQUUsQ0FBeUI7UUFKekMsa0JBQWEsR0FBaUIsSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBU3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsb0JBQW9CO0lBQzdDLENBQUM7SUE5REQsSUFBNEIsUUFBUSxDQUFDLEtBQWdCO1FBQ25ELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFZLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNW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Q0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNyRixDQUFDOzs0R0E1SVUsY0FBYyx3SEE0RE8scUJBQXFCO2dHQTVEMUMsY0FBYzs0RkFBZCxjQUFjO2tCQXhCMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0NBQStDO29CQUN6RCxNQUFNLEVBQUU7d0JBQ04sNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDekI7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxXQUFXO3dCQUNwQiwyQkFBMkIsRUFBRSxTQUFTO3dCQUN0Qyx5QkFBeUIsRUFBRSxXQUFXO3dCQUN0Qyx5QkFBeUIsRUFBRSxZQUFZO3dCQUN2QywwQkFBMEIsRUFBRSxZQUFZO3dCQUN4Qyx5QkFBeUIsRUFBRSxXQUFXO3dCQUN0Qyx5QkFBeUIsRUFBRSxrQkFBa0I7d0JBQzdDLDBCQUEwQixFQUFFLG1CQUFtQjt3QkFDL0MseUJBQXlCLEVBQUUsa0JBQWtCO3dCQUM3QywwQkFBMEIsRUFBRSxvQkFBb0I7d0JBQ2hELDRCQUE0QixFQUFFLFVBQVU7cUJBQ3pDO2lCQUNGOzswQkE2RGMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NENBMUR6QixRQUFRO3NCQUFuQyxLQUFLO3VCQUFDLGVBQWU7Z0JBWUssSUFBSTtzQkFBOUIsS0FBSzt1QkFBQyxjQUFjO2dCQVdTLE9BQU87c0JBQXBDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQU1HLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsY0FBYztnQkFNUSxNQUFNO3NCQUFsQyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QU5JTUFUSU9OX01PRFVMRV9UWVBFLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRCYWRnZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwQ29sb3JzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0FyaWFEZXNjcmliZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNYXRCYWRnZUZpbGwgPSAnY2xlYXInIHwgJ3NvbGlkJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcEJhZGdlXSwgW2FwcEJhZGdlSWNvbl0sIFthcHBCYWRnZU1hdEljb25dJyxcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkOiBtYXRCYWRnZURpc2FibGVkJyxcbiAgICAnY29sb3I6IGFwcEJhZGdlQ29sb3InLFxuICAgICdzaXplOiBhcHBCYWRnZVNpemUnLFxuICAgICdmaWxsOiBhcHBCYWRnZUZpbGwnLFxuICAgICdvdmVybGFwOiBhcHBCYWRnZU92ZXJsYXAnLFxuICAgICdoaWRkZW46IGFwcEJhZGdlSGlkZGVuJ1xuICBdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1iYWRnZScsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2Utb3ZlcmxhcF0nOiAnb3ZlcmxhcCcsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtYWJvdmVdJzogJ2lzQWJvdmUoKScsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtYmVsb3ddJzogJyFpc0Fib3ZlKCknLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWJlZm9yZV0nOiAnIWlzQWZ0ZXIoKScsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtYWZ0ZXJdJzogJ2lzQWZ0ZXIoKScsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2Utc21hbGxdJzogJ3NpemUgPT09IFwic21hbGxcIicsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtbWVkaXVtXSc6ICdzaXplID09PSBcIm1lZGl1bVwiJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1sYXJnZV0nOiAnc2l6ZSA9PT0gXCJsYXJnZVwiJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1oaWRkZW5dJzogJ2hpZGRlbiB8fCAhY29udGVudCcsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYWRnZURpcmVjdGl2ZSBleHRlbmRzIE1hdEJhZGdlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgnYXBwQmFkZ2VDb2xvcicpIHNldCBhcHBDb2xvcih2YWx1ZTogQXBwQ29sb3JzKSB7XG4gICAgaWYgKHRoaXMuX2FwcENvbG9yICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fYXBwQ29sb3IgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY29sb3IgPSB2YWx1ZSBhcyBhbnk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXBwQ29sb3IoKTogQXBwQ29sb3JzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwQ29sb3I7XG4gIH1cblxuICBASW5wdXQoJ2FwcEJhZGdlRmlsbCcpIHNldCBmaWxsKHZhbHVlOiBNYXRCYWRnZUZpbGwpIHtcbiAgICBpZiAodGhpcy5fZmlsbCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2ZpbGwgPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWxsKCk6IE1hdEJhZGdlRmlsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGw7XG4gIH1cblxuICBASW5wdXQoJ2FwcEJhZGdlTWF0SWNvbicpIHNldCBtYXRJY29uKGljb246IHN0cmluZykge1xuICAgIGlmICh0aGlzLl9tYXRJY29uICE9PSBpY29uKSB7XG4gICAgICB0aGlzLl9tYXRJY29uID0gaWNvbjtcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ2FwcEJhZGdlSWNvbicpIHNldCBpb25JY29uKGljb246IHN0cmluZyl7XG4gICAgaWYgKHRoaXMuX2lvbkljb24gIT09IGljb24pIHtcbiAgICAgIHRoaXMuX2lvbkljb24gPSBpY29uO1xuICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgnYXBwQmFkZ2VIaWRkZW4nKSBzZXQgaGlkZGVuKGhpZGRlbjogYm9vbGVhbil7XG4gICAgaWYgKHN1cGVyLmhpZGRlbiAhPT0gaGlkZGVuKSB7XG4gICAgICBzdXBlci5oaWRkZW4gPSBoaWRkZW47XG4gICAgICB0aGlzLnVwZGF0ZVZpZXcodHJ1ZSk7XG4gICAgfVxuICB9XG4gIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmhpZGRlbjtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcENvbG9yOiBBcHBDb2xvcnM7XG4gIHByaXZhdGUgX2ZpbGw6IE1hdEJhZGdlRmlsbDtcbiAgcHJpdmF0ZSBfbWF0SWNvbjogc3RyaW5nO1xuICBwcml2YXRlIF9pb25JY29uOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gIHByaXZhdGUgXyR1cGRhdGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgX2FyaWFEZXNjcmliZXI6IEFyaWFEZXNjcmliZXIsXG4gICAgICAgICAgICAgIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgX2FuaW1hdGlvbk1vZGU/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgc3VwZXIoX25nWm9uZSwgZWwsIF9hcmlhRGVzY3JpYmVyLCBfcmVuZGVyZXIsIF9hbmltYXRpb25Nb2RlKTtcbiAgICB0aGlzLmNvbnRlbnQgPSAweDAwQTA7IC8vIFdpbGwgYmUgaW52aXNpYmxlXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gRGVmYXVsdCBjb2xvclxuICAgIHRoaXMuX2FwcENvbG9yID0gdGhpcy5fYXBwQ29sb3IgfHwgJ3ByaW1hcnknO1xuICAgIGlmICh0aGlzLl9hcHBDb2xvciA9PT0gJ3dhcm4nKSB0aGlzLl9hcHBDb2xvciA9ICd3YXJuaW5nJztcblxuICAgIHRoaXMudXBkYXRlVmlldyh0cnVlKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuXyR1cGRhdGVcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZpZXcodHJ1ZSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZpZXcoaW1tZWRpYXRlPzogYm9vbGVhbikge1xuXG4gICAgLy8gQXN5bmMgYnkgZGVmYXVsdFxuICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICB0aGlzLl8kdXBkYXRlLm5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYWRnZSA9IHRoaXMuZ2V0QmFkZ2VFbGVtZW50KCk7XG4gICAgaWYgKCFiYWRnZSkgcmV0dXJuO1xuXG4gICAgbGV0IGZvbnRTaXplO1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgIGZvbnRTaXplID0gJzI0cHgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICAgIGZvbnRTaXplID0gJzIycHgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgZm9udFNpemUgPSAnMTZweCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgaGlkZGVuID0gdGhpcy5oaWRkZW47XG4gICAgbGV0IGh0bWwgPSAnJztcbiAgICBpZiAodGhpcy5fbWF0SWNvbikge1xuICAgICAgaHRtbCA9IGA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgc3R5bGU9XCJmb250LXNpemU6ICR7Zm9udFNpemV9O1wiPiR7dGhpcy5fbWF0SWNvbn08L2k+YDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5faW9uSWNvbikge1xuICAgICAgaHRtbCA9IGA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6ICR7Zm9udFNpemV9OyBwb2ludGVyLWV2ZW50czogbm9uZTtcIiBuYW1lPVwiJHt0aGlzLl9pb25JY29ufVwiPjwvaW9uLWljb24+YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBoaWRkZW4gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5faHRtbCAhPT0gaHRtbCkge1xuICAgICAgdGhpcy5faHRtbCA9IGh0bWw7XG4gICAgICBiYWRnZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzdHlsZVxuICAgIC8vIGZpbGw6ICdjbGVhcidcbiAgICBpZiAodGhpcy5fZmlsbCA9PT0gJ2NsZWFyJykge1xuICAgICAgYmFkZ2Uuc3R5bGUuY29sb3IgPSBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5fYXBwQ29sb3J9KWA7XG4gICAgICBiYWRnZS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9XG4gICAgLy8gZmlsbDogJ3NvbGlkJyAoZGVmYXVsdCB2YWx1ZSlcbiAgICBlbHNlIHtcbiAgICAgIGJhZGdlLnN0eWxlLmJhY2tncm91bmQgPSBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5fYXBwQ29sb3J9KWA7XG4gICAgICBiYWRnZS5zdHlsZS5jb2xvciA9IGB2YXIoLS1pb24tY29sb3ItJHt0aGlzLl9hcHBDb2xvcn0tY29udHJhc3QpYDtcbiAgICB9XG5cbiAgICBpZiAoaGlkZGVuKSBiYWRnZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGVsc2UgaWYgKGJhZGdlLnN0eWxlLmRpc3BsYXkgIT09ICdpbmxpbmUtYmxvY2snKSBiYWRnZS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgaWYgKGJhZGdlLnN0eWxlLmFsaWduSXRlbXMgIT09ICdjZW50ZXInKSBiYWRnZS5zdHlsZS5hbGlnbkl0ZW1zID0gJ2NlbnRlcic7XG4gICAgaWYgKGJhZGdlLnN0eWxlLmp1c3RpZnlDb250ZW50ICE9PSAnY2VudGVyJykgYmFkZ2Uuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnY2VudGVyJztcbiAgfVxufVxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxRQUFRLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBQyxRQUFRLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7OztBQW1CbkUsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBd0IxQyxZQUFZLE9BQWUsRUFDTCxFQUEyQixFQUNyQyxjQUE2QixFQUM3QixTQUFvQixFQUN1QixjQUFtQztRQUV4RixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBTDFDLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBTS9DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsb0JBQW9CO0lBQzdDLENBQUM7SUE3QkQsSUFBNEMsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEYsSUFBMEMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixJQUEwQyxXQUFXLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsSUFBMkMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLElBQTBDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBMEMsV0FBVyxLQUFLLE9BQU8s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O3NCQUFwRCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFDTyxZQUFZO3NCQUF0RCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFDSyxXQUFXO3NCQUFwRCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFDTyxZQUFZO3NCQUF0RCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFDUSxjQUFjO3NCQUExRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFFOUIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBBTklNQVRJT05fTU9EVUxFX1RZUEUsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRCYWRnZSwgTWF0QmFkZ2VQb3NpdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHtBcHBDb2xvcnN9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7QXJpYURlc2NyaWJlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtCb29sZWFuSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgTWF0QmFkZ2VGaWxsID0gJ2NsZWFyJyB8ICdzb2xpZCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBCYWRnZV0sIFthcHBCYWRnZUljb25dLCBbYXBwQmFkZ2VNYXRJY29uXScsXG4gIGlucHV0czogW1xuICAgICdkaXNhYmxlZDogbWF0QmFkZ2VEaXNhYmxlZCcsXG4gICAgJ2NvbG9yOiBhcHBCYWRnZUNvbG9yJyxcbiAgICAnc2l6ZTogYXBwQmFkZ2VTaXplJyxcbiAgICAnZmlsbDogYXBwQmFkZ2VGaWxsJyxcbiAgICAnaGlkZGVuOiBhcHBCYWRnZUhpZGRlbicsXG4gICAgJ292ZXJsYXA6IGFwcEJhZGdlT3ZlcmxhcCcsXG4gICAgJ3Bvc2l0aW9uOiBhcHBCYWRnZVBvc2l0aW9uJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlRGlyZWN0aXZlIGV4dGVuZHMgTWF0QmFkZ2UgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UnKSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1vdmVybGFwJykgZ2V0IGlzT3ZlcmxhcEhvc3QoKSB7IHJldHVybiB0aGlzLm92ZXJsYXA7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtYWJvdmUnKSBnZXQgaXNBYm92ZUhvc3QoKSB7IHJldHVybiB0aGlzLmlzQWJvdmUoKTsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1iZWxvdycpIGdldCBpc0JlbG93SG9zdCgpIHsgcmV0dXJuICF0aGlzLmlzQWJvdmUoKTsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1iZWZvcmUnKSBnZXQgaXNCZWZvcmVIb3N0KCkgeyByZXR1cm4gIXRoaXMuaXNBZnRlcigpOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWFmdGVyJykgZ2V0IGlzQWZ0ZXJIb3N0KCkgeyByZXR1cm4gdGhpcy5pc0FmdGVyKCk7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2Utc21hbGwnKSBnZXQgaXNTbWFsbEhvc3QoKSB7IHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCc7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtbWVkaXVtJykgZ2V0IGlzTWVkaXVtSG9zdCgpIHsgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ21lZGl1bSc7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtbGFyZ2UnKSBnZXQgaXNMYXJnZUhvc3QoKSB7IHJldHVybiB0aGlzLnNpemUgPT09ICdsYXJnZSc7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtaGlkZGVuJykgZ2V0IGlzSGlkZGVuSG9zdCgpIHsgcmV0dXJuIHRoaXMuaGlkZGVuIHx8ICF0aGlzLmNvbnRlbnQ7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtZGlzYWJsZWQnKSBnZXQgaXNEaXNhYmxlZEhvc3QoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkOyB9XG5cbiAgQElucHV0KCkgYXBwQmFkZ2VDb2xvcjogQXBwQ29sb3JzO1xuICBASW5wdXQoKSBhcHBCYWRnZUZpbGw6IE1hdEJhZGdlRmlsbDtcbiAgQElucHV0KCkgYXBwQmFkZ2VNYXRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwcEJhZGdlSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhcHBCYWRnZUhpZGRlbjogQm9vbGVhbklucHV0O1xuICBASW5wdXQoKSBhcHBCYWRnZU92ZXJsYXA6IEJvb2xlYW5JbnB1dDtcbiAgQElucHV0KCkgYXBwQmFkZ2VQb3NpdGlvbjogTWF0QmFkZ2VQb3NpdGlvbjtcblxuICBwcml2YXRlIF9odG1sOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX25nWm9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgICAgICBfYXJpYURlc2NyaWJlcjogQXJpYURlc2NyaWJlcixcbiAgICAgICAgICAgICAgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQU5JTUFUSU9OX01PRFVMRV9UWVBFKSBfYW5pbWF0aW9uTW9kZT86IHN0cmluZyB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBzdXBlcihfbmdab25lLCBlbCwgX2FyaWFEZXNjcmliZXIsIF9yZW5kZXJlciwgX2FuaW1hdGlvbk1vZGUpO1xuICAgIHRoaXMuY29udGVudCA9IDB4MDBBMDsgLy8gV2lsbCBiZSBpbnZpc2libGVcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuYXBwQmFkZ2VDb2xvciB8fCBjaGFuZ2VzLmFwcEJhZGdlRmlsbCB8fCBjaGFuZ2VzLmFwcEJhZGdlTWF0SWNvbiB8fCBjaGFuZ2VzLmFwcEJhZGdlSWNvbiB8fCBjaGFuZ2VzLmFwcEJhZGdlSGlkZGVuIHx8IGNoYW5nZXMuYXBwQmFkZ2VPdmVybGFwIHx8IGNoYW5nZXMuYXBwQmFkZ2VQb3NpdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmlldygpIHtcbiAgICBjb25zdCBiYWRnZSA9IHRoaXMuZ2V0QmFkZ2VFbGVtZW50KCk7XG4gICAgaWYgKCFiYWRnZSkgcmV0dXJuO1xuXG4gICAgLy8gRml4IGNvbG9yXG4gICAgaWYgKCF0aGlzLmFwcEJhZGdlQ29sb3IpIHRoaXMuYXBwQmFkZ2VDb2xvciA9ICdwcmltYXJ5JztcbiAgICBpZiAodGhpcy5hcHBCYWRnZUNvbG9yID09PSAnd2FybicpIHRoaXMuYXBwQmFkZ2VDb2xvciA9ICd3YXJuaW5nJztcblxuICAgIGxldCBzaXplOiBudW1iZXI7XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgc2l6ZSA9IDI0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICAgIHNpemUgPSAyMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIHNpemUgPSAxNjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBoaWRkZW4gPSB0aGlzLmFwcEJhZGdlSGlkZGVuO1xuICAgIGxldCBodG1sID0gJyc7XG4gICAgaWYgKHRoaXMuYXBwQmFkZ2VNYXRJY29uKSB7XG4gICAgICBodG1sID0gYDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBzdHlsZT1cImZvbnQtc2l6ZTogJHtzaXplfXB4O1wiPiR7dGhpcy5hcHBCYWRnZU1hdEljb259PC9pPmA7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuYXBwQmFkZ2VJY29uKSB7XG4gICAgICBodG1sID0gYDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogJHtzaXplfXB4OyBwb2ludGVyLWV2ZW50czogbm9uZTtcIiBuYW1lPVwiJHt0aGlzLmFwcEJhZGdlSWNvbn1cIj48L2lvbi1pY29uPmA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFoaWRkZW4gJiYgdGhpcy5faHRtbCAhPT0gaHRtbCkge1xuICAgICAgdGhpcy5faHRtbCA9IGh0bWw7XG4gICAgICBiYWRnZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzdHlsZVxuICAgIC8vIGZpbGw6ICdjbGVhcidcbiAgICBpZiAodGhpcy5hcHBCYWRnZUZpbGwgPT09ICdjbGVhcicpIHtcbiAgICAgIGJhZGdlLnN0eWxlLmNvbG9yID0gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMuYXBwQmFkZ2VDb2xvcn0pYDtcbiAgICAgIGJhZGdlLnN0eWxlLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnO1xuICAgIH1cbiAgICAvLyBmaWxsOiAnc29saWQnIChkZWZhdWx0IHZhbHVlKVxuICAgIGVsc2Uge1xuICAgICAgYmFkZ2Uuc3R5bGUuYmFja2dyb3VuZCA9IGB2YXIoLS1pb24tY29sb3ItJHt0aGlzLmFwcEJhZGdlQ29sb3J9KWA7XG4gICAgICBiYWRnZS5zdHlsZS5jb2xvciA9IGB2YXIoLS1pb24tY29sb3ItJHt0aGlzLmFwcEJhZGdlQ29sb3J9LWNvbnRyYXN0KWA7XG4gICAgfVxuXG4gICAgaWYgKGhpZGRlbikgYmFkZ2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBlbHNlIHtcbiAgICAgIGlmIChiYWRnZS5zdHlsZS5kaXNwbGF5ICE9PSAnaW5saW5lLWJsb2NrJykgYmFkZ2Uuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgICAgaWYgKGJhZGdlLnN0eWxlLnBvc2l0aW9uICE9PSAnYWJzb2x1dGUnKSBiYWRnZS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cblxuXG5cbiAgICAgIC8qXG4gICAgICAvLyBXT0FSS1JPVU5EIHRvIGZvcmNlIHBvc2l0aW9uIG9mIHRoZSBiYWRnZSwgd2hlbiBpbnNpZGUgYSA8bWF0LWJ1dHRvbj4gKGUuZy4gb24gYSA8bWF0LWxhYmVsPilcbiAgICAgIGNvbnN0IG92ZXJsYXAgPSB0aGlzLm92ZXJsYXA7XG5cbiAgICAgIC8vIFJpZ2h0L2xlZnQgcG9zaXRpb25cbiAgICAgIGlmICh0aGlzLmlzQWZ0ZXIoKSApIHtcbiAgICAgICAgY29uc3QgcGFyZW50V2lkdGggPSBiYWRnZS5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAocGFyZW50V2lkdGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IGAke3BhcmVudFdpZHRoIC0gKG92ZXJsYXAgPyBzaXplIC8gMiA6IDApfXB4YDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUubGVmdCAhPT0gbGVmdCkgYmFkZ2Uuc3R5bGUubGVmdCA9IGxlZnQ7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLnJpZ2h0ICE9PSAnJykgYmFkZ2Uuc3R5bGUucmlnaHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCByaWdodCA9IGAkey0xICogKG92ZXJsYXAgPyBzaXplIC8gMiA6IHNpemUpfXB4YDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUucmlnaHQgIT09IHJpZ2h0KSBiYWRnZS5zdHlsZS5yaWdodCA9IHJpZ2h0O1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5sZWZ0ICE9PSAnJykgYmFkZ2Uuc3R5bGUubGVmdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvcC9ib3R0b20gcG9zaXRpb25cbiAgICAgIGlmICh0aGlzLmlzQWJvdmUoKSkge1xuICAgICAgICBjb25zdCBwYXJlbnRIZWlnaHQgPSBiYWRnZS5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgaWYgKHBhcmVudEhlaWdodCA+IDApIHtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBgJHtwYXJlbnRIZWlnaHQgLSAob3ZlcmxhcCA/IChzaXplIC8gMikgOiBzaXplKX1weGA7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLmJvdHRvbSAhPT0gYm90dG9tKSBiYWRnZS5zdHlsZS5ib3R0b20gPSBib3R0b207XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLnRvcCAhPT0gJycpIGJhZGdlLnN0eWxlLnRvcCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRvcCA9IGAkey0xICogKG92ZXJsYXAgPyAoc2l6ZSAvIDIpIDogc2l6ZSl9cHhgO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS50b3AgIT09IHRvcCkgYmFkZ2Uuc3R5bGUudG9wID0gdG9wO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5ib3R0b20gIT09ICcnKSBiYWRnZS5zdHlsZS5ib3R0b20gPSAnJztcbiAgICAgICAgfVxuICAgICAgfSovXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,28 +1,41 @@
1
- import { Component } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@ionic/angular";
5
5
  import * as i2 from "@angular/material/form-field";
6
6
  import * as i3 from "@angular/material/icon";
7
- import * as i4 from "@angular/material/select";
8
- import * as i5 from "@angular/material/core";
9
- import * as i6 from "@angular/material/badge";
10
- import * as i7 from "./badge.directive";
11
- import * as i8 from "@angular/common";
12
- import * as i9 from "../../pipes/colors.pipe";
7
+ import * as i4 from "@angular/material/button";
8
+ import * as i5 from "@angular/material/select";
9
+ import * as i6 from "@angular/material/core";
10
+ import * as i7 from "@angular/material/badge";
11
+ import * as i8 from "./badge.directive";
12
+ import * as i9 from "@angular/common";
13
+ import * as i10 from "../../pipes/colors.pipe";
13
14
  export class MatBadgeTestPage {
14
- constructor() {
15
+ constructor(cd) {
16
+ this.cd = cd;
17
+ this.userText = 'A custom string';
18
+ this.matBadgeContent = '!';
15
19
  this.$icon = new BehaviorSubject('alert');
16
20
  this.$size = new BehaviorSubject('small');
17
21
  this.$fill = new BehaviorSubject('solid');
18
22
  this.$color = new BehaviorSubject('danger');
19
23
  this.$hidden = new BehaviorSubject(false);
24
+ this.$overlap = new BehaviorSubject(false);
25
+ }
26
+ onInputChanged(event) {
27
+ this.userText = event.target.value;
28
+ this.cd.markForCheck();
29
+ }
30
+ onMatBadgeContentChanged(event) {
31
+ this.matBadgeContent = event.target.value;
32
+ this.cd.markForCheck();
20
33
  }
21
34
  }
22
- MatBadgeTestPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MatBadgeTestPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- MatBadgeTestPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MatBadgeTestPage, selector: "mat-badge-test", ngImport: i0, template: "\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"small\"\n appBadgeColor=\"accent\"\n appBadgeOverlap=\"false\">Small badge\n <span class=\"mat-badge-content\"></span>\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text appBadge appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\"\n appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark\"\n [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n <ion-row class=\"ion-no-padding\">\n <ion-col>\n <p>Example:\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"false\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </p>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeColor\"\n [value]=\"$color.value\"\n (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"ionBadgeIcon\"\n [value]=\"$icon.value\"\n (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeSize\"\n [value]=\"$size.value\"\n (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"matBadgeFill\"\n [value]=\"$fill.value\"\n (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeHidden\"\n [value]=\"$hidden.value\"\n (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <p>Example, using a matBadge :\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n [matBadgeOverlap]=\"false\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </p>\n </ion-col>\n </ion-row>\n\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i7.BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: ["matBadgeDisabled", "appBadgeColor", "appBadgeSize", "appBadgeFill", "appBadgeOverlap", "appBadgeHidden", "appBadgeMatIcon", "appBadgeIcon"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.MatColorPipe, name: "matColor" }] });
35
+ MatBadgeTestPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MatBadgeTestPage, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
36
+ MatBadgeTestPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MatBadgeTestPage, selector: "mat-badge-test", ngImport: i0, template: "\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"small\"\n appBadgeColor=\"accent\"\n appBadgeOverlap=\"false\">Small badge\n <span class=\"mat-badge-content\"></span>\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text appBadge appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\"\n appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark\"\n [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n <!-- changing text-->\n <ion-row>\n <ion-col>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">{{userText}}\n </ion-label>\n </ion-col>\n <ion-col>\n <input type=\"text\" [value]=\"userText\" (input)=\"onInputChanged($event)\">\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>Configurable example :</ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col size=\"auto\">\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"above before\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeColor\"\n [value]=\"$color.value\"\n (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeIcon\"\n [value]=\"$icon.value\"\n (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeSize\"\n [value]=\"$size.value\"\n (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeFill\"\n [value]=\"$fill.value\"\n (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeHidden\"\n [value]=\"$hidden.value\"\n (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-raised-button:</p>\n </ion-col>\n <ion-col>\n <button mat-raised-button color=\"primary\"\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"below after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button with mat-label:</p>\n </ion-col>\n <ion-col>\n <button mat-button color=\"primary\"\n class=\"ion-no-padding\"\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n\n <h4>Angular Material Badge (standard way)</h4>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-icon:</p>\n </ion-col>\n <ion-col>\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button:</p>\n </ion-col>\n <ion-col>\n <button mat-raised-button color=\"primary\" [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\">\n {{userText}}\n </button>\n </ion-col>\n\n <ion-col>\n <input type=\"text\" [value]=\"matBadgeContent\" (input)=\"onMatBadgeContentChanged($event)\">\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button</p>\n </ion-col>\n <ion-col>\n <button mat-button color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i8.BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: ["matBadgeDisabled", "appBadgeColor", "appBadgeSize", "appBadgeFill", "appBadgeHidden", "appBadgeOverlap", "appBadgePosition", "appBadgeMatIcon", "appBadgeIcon"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.MatColorPipe, name: "matColor" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MatBadgeTestPage, decorators: [{
25
38
  type: Component,
26
- args: [{ selector: 'mat-badge-test', template: "\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"small\"\n appBadgeColor=\"accent\"\n appBadgeOverlap=\"false\">Small badge\n <span class=\"mat-badge-content\"></span>\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text appBadge appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\"\n appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark\"\n [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n <ion-row class=\"ion-no-padding\">\n <ion-col>\n <p>Example:\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"false\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </p>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeColor\"\n [value]=\"$color.value\"\n (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"ionBadgeIcon\"\n [value]=\"$icon.value\"\n (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeSize\"\n [value]=\"$size.value\"\n (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"matBadgeFill\"\n [value]=\"$fill.value\"\n (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeHidden\"\n [value]=\"$hidden.value\"\n (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <p>Example, using a matBadge :\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n [matBadgeOverlap]=\"false\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </p>\n </ion-col>\n </ion-row>\n\n</ion-content>\n" }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2JhZGdlL2JhZGdlLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS50ZXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVNyQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBTUUsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFTLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBZSxPQUFPLENBQUMsQ0FBQztRQUNuRCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQWUsT0FBTyxDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFZLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztLQUMvQzs7OEdBUFksZ0JBQWdCO2tHQUFoQixnQkFBZ0Isc0RDVjdCLG8yS0F1S0E7NEZEN0phLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01hdEJhZGdlRmlsbH0gZnJvbSAnLi9iYWRnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRCYWRnZVNpemV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7QXBwQ29sb3JzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1iYWRnZS10ZXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JhZGdlLnRlc3QuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTWF0QmFkZ2VUZXN0UGFnZSB7XG5cbiAgJGljb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2FsZXJ0Jyk7XG4gICRzaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRCYWRnZVNpemU+KCdzbWFsbCcpO1xuICAkZmlsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QmFkZ2VGaWxsPignc29saWQnKTtcbiAgJGNvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBDb2xvcnM+KCdkYW5nZXInKTtcbiAgJGhpZGRlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xufVxuIiwiXG48aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5tYXRCYWRnZUljb24gZGlyZWN0aXZlPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgPCEtLSBzbWFsbCBiYWRnZSAtLT5cbiAgPHA+XG4gICAgPGlvbi10ZXh0IGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgIDxzcGFuIGFwcEJhZGdlXG4gICAgICAgICAgICBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiXG4gICAgICAgICAgICBhcHBCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBhcHBCYWRnZUNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+U21hbGwgYmFkZ2VcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtYmFkZ2UtY29udGVudFwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2lvbi10ZXh0PlxuICA8L3A+XG5cbiAgPCEtLSBtZWRpdW0gYmFkZ2UgLS0+XG4gIDxwPlxuICAgIDxpb24tdGV4dCBhcHBCYWRnZSBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiXG4gICAgICAgICAgICAgIGFwcEJhZGdlU2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIid0ZXJ0aWFyeSd8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiXG4gICAgPk1lZGl1bSBiYWRnZTwvaW9uLXRleHQ+XG4gIDwvcD5cblxuICA8IS0tIHNtYWxsIGJhZGdlIC0tPlxuICA8cD5cbiAgICA8aW9uLWxhYmVsIGFwcEJhZGdlIGFwcEJhZGdlTWF0SWNvbj1cImNsb3NlXCIgYXBwQmFkZ2VTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+TGFyZ2UgYmFkZ2U8L2lvbi1sYWJlbD5cbiAgPC9wPlxuXG4gIDwhLS0gZGVmYXVsdCBzaXplIGJhZGdlIC0tPlxuICA8cD5cbiAgICA8aW9uLWxhYmVsIGFwcEJhZGdlIGFwcEJhZGdlTWF0SWNvbj1cImNoZWNrXCIgW2FwcEJhZGdlQ29sb3JdPVwiJ3N1Y2Nlc3MnfG1hdENvbG9yXCJcbiAgICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+QmFkZ2UgKG5vIHNpemUsIG5vIGNvbG9yKVxuICAgIDwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPCEtLSBpb24gaWNvbiAtLT5cbiAgPHA+XG4gICAgPGlvbi1sYWJlbCBhcHBCYWRnZVxuICAgICAgICAgICAgICAgYXBwQmFkZ2VJY29uPVwiY2hlY2ttYXJrXCJcbiAgICAgICAgICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIidzdWNjZXNzJ3xtYXRDb2xvclwiXG4gICAgICAgICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiPkJhZGdlIHdpdGggaW9uLWljb25cbiAgICA8L2lvbi1sYWJlbD5cbiAgPC9wPlxuXG4gIDwhLS0gaW9uIGljb24gY2xlYXIgLS0+XG4gIDxwPlxuICAgIDxpb24tbGFiZWwgYXBwQmFkZ2VcbiAgICAgICAgICAgICAgIGFwcEJhZGdlSWNvbj1cImNoZWNrbWFyay1jaXJjbGVcIlxuICAgICAgICAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJ3RlcnRpYXJ5J3xtYXRDb2xvclwiXG4gICAgICAgICAgICAgICBhcHBCYWRnZUZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiPkJhZGdlIHdpdGggY2xlYXIgaWNvblxuICAgIDwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgIDxpb24tY29sPlxuICAgICAgPHA+RXhhbXBsZTpcbiAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCIndmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSknXCJcbiAgICAgICAgICAgICAgICAgIGFwcEJhZGdlXG4gICAgICAgICAgICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29ufGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIiRjb2xvcnxhc3luY3xtYXRDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbYXBwQmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbYXBwQmFkZ2VGaWxsXT1cIiRmaWxsfGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFthcHBCYWRnZVNpemVdPVwiJHNpemV8YXN5bmNcIlxuICAgICAgICAgICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYXZpZ2F0ZVwiXG4gICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICA8L3A+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiYXBwQmFkZ2VDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIkY29sb3IudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGNvbG9yLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIncHJpbWFyeSdcIj5wcmltYXJ5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInc2Vjb25kYXJ5J1wiPnNlY29uZGFyeTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3RlcnRpYXJ5J1wiPnRlcnRpYXJ5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInZGFuZ2VyJ1wiPmRhbmdlcjwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJpb25CYWRnZUljb25cIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJGljb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGljb24ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidjaGVja21hcmstY2lyY2xlJ1wiPmNoZWNrbWFyay1jaXJjbGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidhbGVydC1jaXJjbGUnXCI+YWxlcnQtY2lyY2xlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInYWxlcnQnXCI+YWxlcnQ8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidmbGFnJ1wiPmZsYWc8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiYXBwQmFkZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIiRzaXplLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRzaXplLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInbGFyZ2UnXCI+bGFyZ2U8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidtZWRpdW0nXCI+bWVkaXVtPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInc21hbGwnXCI+c21hbGw8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwibWF0QmFkZ2VGaWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIiRmaWxsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRmaWxsLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInY2xlYXInXCI+Y2xlYXI8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidzb2xpZCdcIj5zb2xpZDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhcHBCYWRnZUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIkaGlkZGVuLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRoaWRkZW4ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRydWVcIj50cnVlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWxzZVwiPmZhbHNlPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sPlxuICAgICAgPHA+RXhhbXBsZSwgdXNpbmcgYSBtYXRCYWRnZSA6XG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiJyEnXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIiRjb2xvcnxhc3luY3xtYXRDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIiRzaXplfGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiZmFsc2VcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYXZpZ2F0ZVwiXG4gICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICA8L3A+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
39
+ args: [{ selector: 'mat-badge-test', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"small\"\n appBadgeColor=\"accent\"\n appBadgeOverlap=\"false\">Small badge\n <span class=\"mat-badge-content\"></span>\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text appBadge appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\"\n appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark\"\n [appBadgeColor]=\"'success'|matColor\"\n appBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n <!-- changing text-->\n <ion-row>\n <ion-col>\n <ion-label appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary'|matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\">{{userText}}\n </ion-label>\n </ion-col>\n <ion-col>\n <input type=\"text\" [value]=\"userText\" (input)=\"onInputChanged($event)\">\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>Configurable example :</ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col size=\"auto\">\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"above before\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeColor\"\n [value]=\"$color.value\"\n (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeIcon\"\n [value]=\"$icon.value\"\n (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeSize\"\n [value]=\"$size.value\"\n (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeFill\"\n [value]=\"$fill.value\"\n (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-select placeholder=\"appBadgeHidden\"\n [value]=\"$hidden.value\"\n (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-raised-button:</p>\n </ion-col>\n <ion-col>\n <button mat-raised-button color=\"primary\"\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"below after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button with mat-label:</p>\n </ion-col>\n <ion-col>\n <button mat-button color=\"primary\"\n class=\"ion-no-padding\"\n [appBadgeIcon]=\"$icon|async\"\n [appBadgeColor]=\"$color|async|matColor\"\n [appBadgeHidden]=\"$hidden|async\"\n [appBadgeFill]=\"$fill|async\"\n [appBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n\n <h4>Angular Material Badge (standard way)</h4>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-icon:</p>\n </ion-col>\n <ion-col>\n <mat-icon [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\">\n <ion-icon slot=\"icon-only\"\n [color]=\"'secondary'\"\n name=\"navigate\"\n ></ion-icon>\n </mat-icon>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button:</p>\n </ion-col>\n <ion-col>\n <button mat-raised-button color=\"primary\" [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\">\n {{userText}}\n </button>\n </ion-col>\n\n <ion-col>\n <input type=\"text\" [value]=\"matBadgeContent\" (input)=\"onMatBadgeContentChanged($event)\">\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button</p>\n </ion-col>\n <ion-col>\n <button mat-button color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color|async|matColor\"\n [matBadgeHidden]=\"$hidden|async\"\n [matBadgeSize]=\"$size|async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"after\">\n {{userText}}\n </button>\n </ion-col>\n </ion-row>\n</ion-content>\n" }]
40
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2JhZGdlL2JhZGdlLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS50ZXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXJDLE1BQU0sT0FBTyxnQkFBZ0I7SUFZM0IsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFWekMsYUFBUSxHQUFXLGlCQUFpQixDQUFDO1FBQ3JDLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBRTlCLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUM3QyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQWUsT0FBTyxDQUFDLENBQUM7UUFDbkQsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFlLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBWSxRQUFRLENBQUMsQ0FBQztRQUNsRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDOUMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRy9DLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQVU7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7OzhHQXZCVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixzRENYN0IsNHJRQXFRQTs0RkQxUGEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGdCQUFnQixtQkFFVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01hdEJhZGdlRmlsbH0gZnJvbSAnLi9iYWRnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRCYWRnZVNpemV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7QXBwQ29sb3JzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1iYWRnZS10ZXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JhZGdlLnRlc3QuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hdEJhZGdlVGVzdFBhZ2Uge1xuXG4gIHVzZXJUZXh0OiBzdHJpbmcgPSAnQSBjdXN0b20gc3RyaW5nJztcbiAgbWF0QmFkZ2VDb250ZW50OiBzdHJpbmcgPSAnISc7XG5cbiAgJGljb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2FsZXJ0Jyk7XG4gICRzaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRCYWRnZVNpemU+KCdzbWFsbCcpO1xuICAkZmlsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QmFkZ2VGaWxsPignc29saWQnKTtcbiAgJGNvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBDb2xvcnM+KCdkYW5nZXInKTtcbiAgJGhpZGRlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAkb3ZlcmxhcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZChldmVudDogYW55KSB7XG4gICAgdGhpcy51c2VyVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25NYXRCYWRnZUNvbnRlbnRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1hdEJhZGdlQ29udGVudCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCJcbjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPm1hdEJhZGdlSWNvbiBkaXJlY3RpdmU8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICA8IS0tIHNtYWxsIGJhZGdlIC0tPlxuICA8cD5cbiAgICA8aW9uLXRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPlxuICAgICAgPHNwYW4gYXBwQmFkZ2VcbiAgICAgICAgICAgIGFwcEJhZGdlTWF0SWNvbj1cImNoZWNrXCJcbiAgICAgICAgICAgIGFwcEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIGFwcEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj5TbWFsbCBiYWRnZVxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1iYWRnZS1jb250ZW50XCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvaW9uLXRleHQ+XG4gIDwvcD5cblxuICA8IS0tIG1lZGl1bSBiYWRnZSAtLT5cbiAgPHA+XG4gICAgPGlvbi10ZXh0IGFwcEJhZGdlIGFwcEJhZGdlTWF0SWNvbj1cImNoZWNrXCJcbiAgICAgICAgICAgICAgYXBwQmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJ3RlcnRpYXJ5J3xtYXRDb2xvclwiXG4gICAgICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCJcbiAgICA+TWVkaXVtIGJhZGdlPC9pb24tdGV4dD5cbiAgPC9wPlxuXG4gIDwhLS0gc21hbGwgYmFkZ2UgLS0+XG4gIDxwPlxuICAgIDxpb24tbGFiZWwgYXBwQmFkZ2UgYXBwQmFkZ2VNYXRJY29uPVwiY2xvc2VcIiBhcHBCYWRnZVNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj5MYXJnZSBiYWRnZTwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPCEtLSBkZWZhdWx0IHNpemUgYmFkZ2UgLS0+XG4gIDxwPlxuICAgIDxpb24tbGFiZWwgYXBwQmFkZ2UgYXBwQmFkZ2VNYXRJY29uPVwiY2hlY2tcIiBbYXBwQmFkZ2VDb2xvcl09XCInc3VjY2Vzcyd8bWF0Q29sb3JcIlxuICAgICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj5CYWRnZSAobm8gc2l6ZSwgbm8gY29sb3IpXG4gICAgPC9pb24tbGFiZWw+XG4gIDwvcD5cblxuICA8IS0tIGlvbiBpY29uIC0tPlxuICA8cD5cbiAgICA8aW9uLWxhYmVsIGFwcEJhZGdlXG4gICAgICAgICAgICAgICBhcHBCYWRnZUljb249XCJjaGVja21hcmtcIlxuICAgICAgICAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJ3N1Y2Nlc3MnfG1hdENvbG9yXCJcbiAgICAgICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+QmFkZ2Ugd2l0aCBpb24taWNvblxuICAgIDwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPCEtLSBpb24gaWNvbiBjbGVhciAtLT5cbiAgPHA+XG4gICAgPGlvbi1sYWJlbCBhcHBCYWRnZVxuICAgICAgICAgICAgICAgYXBwQmFkZ2VJY29uPVwiY2hlY2ttYXJrLWNpcmNsZVwiXG4gICAgICAgICAgICAgICBbYXBwQmFkZ2VDb2xvcl09XCIndGVydGlhcnknfG1hdENvbG9yXCJcbiAgICAgICAgICAgICAgIGFwcEJhZGdlRmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+QmFkZ2Ugd2l0aCBjbGVhciBpY29uXG4gICAgPC9pb24tbGFiZWw+XG4gIDwvcD5cblxuICA8IS0tIGNoYW5naW5nIHRleHQtLT5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8aW9uLWxhYmVsIGFwcEJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBCYWRnZUljb249XCJjaGVja21hcmstY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIid0ZXJ0aWFyeSd8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwQmFkZ2VGaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj57e3VzZXJUZXh0fX1cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJ1c2VyVGV4dFwiIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2w+Q29uZmlndXJhYmxlIGV4YW1wbGUgOjwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXG4gICAgICAgICAgICAgICAgYXBwQmFkZ2VcbiAgICAgICAgICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29ufGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbYXBwQmFkZ2VDb2xvcl09XCIkY29sb3J8YXN5bmN8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICAgIFthcHBCYWRnZUhpZGRlbl09XCIkaGlkZGVufGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbYXBwQmFkZ2VGaWxsXT1cIiRmaWxsfGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbYXBwQmFkZ2VTaXplXT1cIiRzaXplfGFzeW5jXCJcbiAgICAgICAgICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBhcHBCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYmVmb3JlXCI+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibmF2aWdhdGVcIlxuICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiYXBwQmFkZ2VDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIkY29sb3IudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGNvbG9yLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIncHJpbWFyeSdcIj5wcmltYXJ5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInc2Vjb25kYXJ5J1wiPnNlY29uZGFyeTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3RlcnRpYXJ5J1wiPnRlcnRpYXJ5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInZGFuZ2VyJ1wiPmRhbmdlcjwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhcHBCYWRnZUljb25cIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJGljb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGljb24ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidjaGVja21hcmstY2lyY2xlJ1wiPmNoZWNrbWFyay1jaXJjbGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidhbGVydC1jaXJjbGUnXCI+YWxlcnQtY2lyY2xlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInYWxlcnQnXCI+YWxlcnQ8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidmbGFnJ1wiPmZsYWc8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiYXBwQmFkZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIiRzaXplLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRzaXplLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInbGFyZ2UnXCI+bGFyZ2U8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidtZWRpdW0nXCI+bWVkaXVtPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInc21hbGwnXCI+c21hbGw8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiYXBwQmFkZ2VGaWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIiRmaWxsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRmaWxsLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInY2xlYXInXCI+Y2xlYXI8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidzb2xpZCdcIj5zb2xpZDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhcHBCYWRnZUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIkaGlkZGVuLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRoaWRkZW4ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRydWVcIj50cnVlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWxzZVwiPmZhbHNlPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cblxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxwPm1hdC1yYWlzZWQtYnV0dG9uOjwvcD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIFthcHBCYWRnZUljb25dPVwiJGljb258YXN5bmNcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VDb2xvcl09XCIkY29sb3J8YXN5bmN8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGx8YXN5bmNcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VTaXplXT1cIiRzaXplfGFzeW5jXCJcbiAgICAgICAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGFwcEJhZGdlUG9zaXRpb249XCJiZWxvdyBhZnRlclwiPlxuICAgICAgICB7e3VzZXJUZXh0fX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8cD5tYXQtYnV0dG9uIHdpdGggbWF0LWxhYmVsOjwvcD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiXG4gICAgICAgICAgICAgIFthcHBCYWRnZUljb25dPVwiJGljb258YXN5bmNcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VDb2xvcl09XCIkY29sb3J8YXN5bmN8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGx8YXN5bmNcIlxuICAgICAgICAgICAgICBbYXBwQmFkZ2VTaXplXT1cIiRzaXplfGFzeW5jXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VPdmVybGFwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiPlxuICAgICAgICB7e3VzZXJUZXh0fX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxoND5Bbmd1bGFyIE1hdGVyaWFsIEJhZGdlIChzdGFuZGFyZCB3YXkpPC9oND5cblxuICA8aW9uLXJvdz5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPHA+bWF0LWljb246PC9wPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXG4gICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIichJ1wiXG4gICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiJGNvbG9yfGFzeW5jfG1hdENvbG9yXCJcbiAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIkc2l6ZXxhc3luY1wiXG4gICAgICAgICAgICAgICAgbWF0QmFkZ2VPdmVybGFwPVwidHJ1ZVwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hdmlnYXRlXCJcbiAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8cD5tYXQtYnV0dG9uOjwvcD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFttYXRCYWRnZV09XCJtYXRCYWRnZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIkY29sb3J8YXN5bmN8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiJHNpemV8YXN5bmNcIlxuICAgICAgICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCI+XG4gICAgICAgIHt7dXNlclRleHR9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwibWF0QmFkZ2VDb250ZW50XCIgKGlucHV0KT1cIm9uTWF0QmFkZ2VDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxwPm1hdC1idXR0b248L3A+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIFttYXRCYWRnZV09XCJtYXRCYWRnZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIkY29sb3J8YXN5bmN8bWF0Q29sb3JcIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbnxhc3luY1wiXG4gICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiJHNpemV8YXN5bmNcIlxuICAgICAgICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCI+XG4gICAgICAgICAgICB7e3VzZXJUZXh0fX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tY29udGVudD5cbiJdfQ==