ngx-form-draft 2.2.9 → 2.2.11
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/LICENSE +21 -21
- package/README.md +206 -206
- package/esm2020/form-draft-banner.component.mjs +84 -84
- package/esm2020/form-draft.directive.mjs +268 -259
- package/esm2020/form-draft.service.mjs +92 -67
- package/esm2020/index.mjs +4 -4
- package/esm2020/ngx-form-draft.mjs +4 -4
- package/esm2020/ngx-form-draft.module.mjs +19 -19
- package/fesm2015/ngx-form-draft.mjs +446 -411
- package/fesm2015/ngx-form-draft.mjs.map +1 -1
- package/fesm2020/ngx-form-draft.mjs +439 -405
- package/fesm2020/ngx-form-draft.mjs.map +1 -1
- package/form-draft-banner.component.d.ts +14 -14
- package/form-draft.directive.d.ts +56 -51
- package/form-draft.service.d.ts +35 -17
- package/index.d.ts +4 -4
- package/ngx-form-draft.module.d.ts +9 -9
- package/package.json +24 -2
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
export class FormDraftBannerComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.visible = false;
|
|
7
|
-
this.timeLabel = '';
|
|
8
|
-
this.isRestored = false;
|
|
9
|
-
this.restoredText = 'Draft restored';
|
|
10
|
-
this.savedText = 'Draft saved';
|
|
11
|
-
this.savedLabel = 'saved';
|
|
12
|
-
this.discardText = 'Discard';
|
|
13
|
-
this.discard = new EventEmitter();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
FormDraftBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
FormDraftBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FormDraftBannerComponent, selector: "ngx-form-draft-banner", inputs: { visible: "visible", timeLabel: "timeLabel", isRestored: "isRestored", restoredText: "restoredText", savedText: "savedText", savedLabel: "savedLabel", discardText: "discardText" }, outputs: { discard: "discard" }, ngImport: i0, template: `
|
|
18
|
-
<div class="form-draft-banner" *ngIf="visible">
|
|
19
|
-
<div class="form-draft-banner__icon">
|
|
20
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
21
|
-
<path d="M12 8V12L14.5 14.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
22
|
-
<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
|
|
23
|
-
</svg>
|
|
24
|
-
</div>
|
|
25
|
-
<div class="form-draft-banner__content">
|
|
26
|
-
<span class="form-draft-banner__text">
|
|
27
|
-
<span *ngIf="isRestored">{{ restoredText }}</span>
|
|
28
|
-
<span *ngIf="!isRestored">{{ savedText }}</span>
|
|
29
|
-
<span class="form-draft-banner__time" *ngIf="timeLabel && isRestored">
|
|
30
|
-
· {{ savedLabel }} {{ timeLabel }}
|
|
31
|
-
</span>
|
|
32
|
-
</span>
|
|
33
|
-
</div>
|
|
34
|
-
<div class="form-draft-banner__actions">
|
|
35
|
-
<button class="form-draft-banner__btn form-draft-banner__btn--discard" (click)="discard.emit()" type="button">
|
|
36
|
-
✕ {{ discardText }}
|
|
37
|
-
</button>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
`, isInline: true, styles: [":host{display:block;width:100%}.form-draft-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:12px;border-radius:8px;background:linear-gradient(135deg,#eef6ff 0%,#f0f4ff 100%);border:1px solid #c5ddf8;box-shadow:0 2px 8px #128ad614;animation:slideDown .25s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-draft-banner__icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:linear-gradient(135deg,#128ad6,#22b9ff);color:#fff;flex-shrink:0}.form-draft-banner__content{flex:1;min-width:0}.form-draft-banner__text{font-size:13px;font-weight:600;color:#1a3a5c}.form-draft-banner__time{font-weight:400;color:#6b8aaa;font-size:12px}.form-draft-banner__actions{flex-shrink:0}.form-draft-banner__btn{border:none;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.form-draft-banner__btn--discard{background:transparent;color:#8899a6;border:1px solid #d0dce6}.form-draft-banner__btn--discard:hover{background:#fef2f2;color:#e62e43;border-color:#e62e43}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftBannerComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ selector: 'ngx-form-draft-banner', template: `
|
|
44
|
-
<div class="form-draft-banner" *ngIf="visible">
|
|
45
|
-
<div class="form-draft-banner__icon">
|
|
46
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
47
|
-
<path d="M12 8V12L14.5 14.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
48
|
-
<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
|
|
49
|
-
</svg>
|
|
50
|
-
</div>
|
|
51
|
-
<div class="form-draft-banner__content">
|
|
52
|
-
<span class="form-draft-banner__text">
|
|
53
|
-
<span *ngIf="isRestored">{{ restoredText }}</span>
|
|
54
|
-
<span *ngIf="!isRestored">{{ savedText }}</span>
|
|
55
|
-
<span class="form-draft-banner__time" *ngIf="timeLabel && isRestored">
|
|
56
|
-
· {{ savedLabel }} {{ timeLabel }}
|
|
57
|
-
</span>
|
|
58
|
-
</span>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="form-draft-banner__actions">
|
|
61
|
-
<button class="form-draft-banner__btn form-draft-banner__btn--discard" (click)="discard.emit()" type="button">
|
|
62
|
-
✕ {{ discardText }}
|
|
63
|
-
</button>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}.form-draft-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:12px;border-radius:8px;background:linear-gradient(135deg,#eef6ff 0%,#f0f4ff 100%);border:1px solid #c5ddf8;box-shadow:0 2px 8px #128ad614;animation:slideDown .25s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-draft-banner__icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:linear-gradient(135deg,#128ad6,#22b9ff);color:#fff;flex-shrink:0}.form-draft-banner__content{flex:1;min-width:0}.form-draft-banner__text{font-size:13px;font-weight:600;color:#1a3a5c}.form-draft-banner__time{font-weight:400;color:#6b8aaa;font-size:12px}.form-draft-banner__actions{flex-shrink:0}.form-draft-banner__btn{border:none;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.form-draft-banner__btn--discard{background:transparent;color:#8899a6;border:1px solid #d0dce6}.form-draft-banner__btn--discard:hover{background:#fef2f2;color:#e62e43;border-color:#e62e43}\n"] }]
|
|
67
|
-
}], propDecorators: { visible: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], timeLabel: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], isRestored: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], restoredText: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], savedText: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], savedLabel: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], discardText: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], discard: [{
|
|
82
|
-
type: Output
|
|
83
|
-
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class FormDraftBannerComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.visible = false;
|
|
7
|
+
this.timeLabel = '';
|
|
8
|
+
this.isRestored = false;
|
|
9
|
+
this.restoredText = 'Draft restored';
|
|
10
|
+
this.savedText = 'Draft saved';
|
|
11
|
+
this.savedLabel = 'saved';
|
|
12
|
+
this.discardText = 'Discard';
|
|
13
|
+
this.discard = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
FormDraftBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
FormDraftBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FormDraftBannerComponent, selector: "ngx-form-draft-banner", inputs: { visible: "visible", timeLabel: "timeLabel", isRestored: "isRestored", restoredText: "restoredText", savedText: "savedText", savedLabel: "savedLabel", discardText: "discardText" }, outputs: { discard: "discard" }, ngImport: i0, template: `
|
|
18
|
+
<div class="form-draft-banner" *ngIf="visible">
|
|
19
|
+
<div class="form-draft-banner__icon">
|
|
20
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
21
|
+
<path d="M12 8V12L14.5 14.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
22
|
+
<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
|
|
23
|
+
</svg>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="form-draft-banner__content">
|
|
26
|
+
<span class="form-draft-banner__text">
|
|
27
|
+
<span *ngIf="isRestored">{{ restoredText }}</span>
|
|
28
|
+
<span *ngIf="!isRestored">{{ savedText }}</span>
|
|
29
|
+
<span class="form-draft-banner__time" *ngIf="timeLabel && isRestored">
|
|
30
|
+
· {{ savedLabel }} {{ timeLabel }}
|
|
31
|
+
</span>
|
|
32
|
+
</span>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="form-draft-banner__actions">
|
|
35
|
+
<button class="form-draft-banner__btn form-draft-banner__btn--discard" (click)="discard.emit()" type="button">
|
|
36
|
+
✕ {{ discardText }}
|
|
37
|
+
</button>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.form-draft-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:12px;border-radius:8px;background:linear-gradient(135deg,#eef6ff 0%,#f0f4ff 100%);border:1px solid #c5ddf8;box-shadow:0 2px 8px #128ad614;animation:slideDown .25s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-draft-banner__icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:linear-gradient(135deg,#128ad6,#22b9ff);color:#fff;flex-shrink:0}.form-draft-banner__content{flex:1;min-width:0}.form-draft-banner__text{font-size:13px;font-weight:600;color:#1a3a5c}.form-draft-banner__time{font-weight:400;color:#6b8aaa;font-size:12px}.form-draft-banner__actions{flex-shrink:0}.form-draft-banner__btn{border:none;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.form-draft-banner__btn--discard{background:transparent;color:#8899a6;border:1px solid #d0dce6}.form-draft-banner__btn--discard:hover{background:#fef2f2;color:#e62e43;border-color:#e62e43}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftBannerComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'ngx-form-draft-banner', template: `
|
|
44
|
+
<div class="form-draft-banner" *ngIf="visible">
|
|
45
|
+
<div class="form-draft-banner__icon">
|
|
46
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
47
|
+
<path d="M12 8V12L14.5 14.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
48
|
+
<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
|
|
49
|
+
</svg>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="form-draft-banner__content">
|
|
52
|
+
<span class="form-draft-banner__text">
|
|
53
|
+
<span *ngIf="isRestored">{{ restoredText }}</span>
|
|
54
|
+
<span *ngIf="!isRestored">{{ savedText }}</span>
|
|
55
|
+
<span class="form-draft-banner__time" *ngIf="timeLabel && isRestored">
|
|
56
|
+
· {{ savedLabel }} {{ timeLabel }}
|
|
57
|
+
</span>
|
|
58
|
+
</span>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="form-draft-banner__actions">
|
|
61
|
+
<button class="form-draft-banner__btn form-draft-banner__btn--discard" (click)="discard.emit()" type="button">
|
|
62
|
+
✕ {{ discardText }}
|
|
63
|
+
</button>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}.form-draft-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:12px;border-radius:8px;background:linear-gradient(135deg,#eef6ff 0%,#f0f4ff 100%);border:1px solid #c5ddf8;box-shadow:0 2px 8px #128ad614;animation:slideDown .25s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-draft-banner__icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:linear-gradient(135deg,#128ad6,#22b9ff);color:#fff;flex-shrink:0}.form-draft-banner__content{flex:1;min-width:0}.form-draft-banner__text{font-size:13px;font-weight:600;color:#1a3a5c}.form-draft-banner__time{font-weight:400;color:#6b8aaa;font-size:12px}.form-draft-banner__actions{flex-shrink:0}.form-draft-banner__btn{border:none;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.form-draft-banner__btn--discard{background:transparent;color:#8899a6;border:1px solid #d0dce6}.form-draft-banner__btn--discard:hover{background:#fef2f2;color:#e62e43;border-color:#e62e43}\n"] }]
|
|
67
|
+
}], propDecorators: { visible: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], timeLabel: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], isRestored: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], restoredText: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], savedText: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], savedLabel: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], discardText: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], discard: [{
|
|
82
|
+
type: Output
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kcmFmdC1iYW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm0tZHJhZnQtYmFubmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUF5RGhHLE1BQU0sT0FBTyx3QkFBd0I7SUF2RHJDO1FBd0RXLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxnQkFBZ0IsQ0FBQztRQUNoQyxjQUFTLEdBQUcsYUFBYSxDQUFDO1FBQzFCLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDdkIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FDOUM7O3FIQVRZLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDRSQXJEekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUOzJGQThCVSx3QkFBd0I7a0JBdkRwQyxTQUFTOytCQUNFLHVCQUF1QixZQUN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQsbUJBNEJnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtZm9ybS1kcmFmdC1iYW5uZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcmFmdC1iYW5uZXJcIiAqbmdJZj1cInZpc2libGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJhZnQtYmFubmVyX19pY29uXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEyIDhWMTJMMTQuNSAxNC41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcmFmdC1iYW5uZXJfX2NvbnRlbnRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZHJhZnQtYmFubmVyX190ZXh0XCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVzdG9yZWRcIj57eyByZXN0b3JlZFRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc1Jlc3RvcmVkXCI+e3sgc2F2ZWRUZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWRyYWZ0LWJhbm5lcl9fdGltZVwiICpuZ0lmPVwidGltZUxhYmVsICYmIGlzUmVzdG9yZWRcIj5cclxuICAgICAgICAgICAgJm1pZGRvdDsge3sgc2F2ZWRMYWJlbCB9fSB7eyB0aW1lTGFiZWwgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcmFmdC1iYW5uZXJfX2FjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9ybS1kcmFmdC1iYW5uZXJfX2J0biBmb3JtLWRyYWZ0LWJhbm5lcl9fYnRuLS1kaXNjYXJkXCIgKGNsaWNrKT1cImRpc2NhcmQuZW1pdCgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAg4pyVIHt7IGRpc2NhcmRUZXh0IH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgfVxyXG4gICAgLmZvcm0tZHJhZnQtYmFubmVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBwYWRkaW5nOiAxMHB4IDE0cHg7IG1hcmdpbi1ib3R0b206IDEycHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2VlZjZmZiAwJSwgI2YwZjRmZiAxMDAlKTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2M1ZGRmODsgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMTgsIDEzOCwgMjE0LCAwLjA4KTtcclxuICAgICAgYW5pbWF0aW9uOiBzbGlkZURvd24gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcclxuICAgIH1cclxuICAgIEBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsgfVxyXG4gICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgfVxyXG4gICAgLmZvcm0tZHJhZnQtYmFubmVyX19pY29uIHtcclxuICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHdpZHRoOiAzMnB4OyBoZWlnaHQ6IDMycHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzEyOGFkNiwgIzIyYjlmZik7IGNvbG9yOiAjZmZmOyBmbGV4LXNocmluazogMDtcclxuICAgIH1cclxuICAgIC5mb3JtLWRyYWZ0LWJhbm5lcl9fY29udGVudCB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfVxyXG4gICAgLmZvcm0tZHJhZnQtYmFubmVyX190ZXh0IHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFhM2E1YzsgfVxyXG4gICAgLmZvcm0tZHJhZnQtYmFubmVyX190aW1lIHsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6ICM2YjhhYWE7IGZvbnQtc2l6ZTogMTJweDsgfVxyXG4gICAgLmZvcm0tZHJhZnQtYmFubmVyX19hY3Rpb25zIHsgZmxleC1zaHJpbms6IDA7IH1cclxuICAgIC5mb3JtLWRyYWZ0LWJhbm5lcl9fYnRuIHtcclxuICAgICAgYm9yZGVyOiBub25lOyBwYWRkaW5nOiA1cHggMTJweDsgYm9yZGVyLXJhZGl1czogNnB4OyBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxuICAgIH1cclxuICAgIC5mb3JtLWRyYWZ0LWJhbm5lcl9fYnRuLS1kaXNjYXJkIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGNvbG9yOiAjODg5OWE2OyBib3JkZXI6IDFweCBzb2xpZCAjZDBkY2U2OyB9XHJcbiAgICAuZm9ybS1kcmFmdC1iYW5uZXJfX2J0bi0tZGlzY2FyZDpob3ZlciB7IGJhY2tncm91bmQ6ICNmZWYyZjI7IGNvbG9yOiAjZTYyZTQzOyBib3JkZXItY29sb3I6ICNlNjJlNDM7IH1cclxuICBgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1EcmFmdEJhbm5lckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRpbWVMYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzUmVzdG9yZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZXN0b3JlZFRleHQgPSAnRHJhZnQgcmVzdG9yZWQnO1xyXG4gIEBJbnB1dCgpIHNhdmVkVGV4dCA9ICdEcmFmdCBzYXZlZCc7XHJcbiAgQElucHV0KCkgc2F2ZWRMYWJlbCA9ICdzYXZlZCc7XHJcbiAgQElucHV0KCkgZGlzY2FyZFRleHQgPSAnRGlzY2FyZCc7XHJcbiAgQE91dHB1dCgpIGRpc2NhcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbn1cclxuIl19
|