tango-app-ui-store-builder 1.2.16 → 1.2.18
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/esm2022/lib/components/access-denied/access-denied.component.mjs +31 -0
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +25 -3
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +133 -21
- package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +25 -9
- package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +28 -5
- package/esm2022/lib/components/plano-tools/allow-edit/allow-edit.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/cad-files/cad-files.component.mjs +5 -4
- package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +6 -5
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/layout-touchup/layout-touchup.component.mjs +134 -0
- package/esm2022/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.mjs +5103 -0
- package/esm2022/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +6 -5
- package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/tool-page-header/tool-page-header.component.mjs +22 -0
- package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +27 -8
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -3
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +3 -3
- package/esm2022/lib/functions/feature-access.guard.mjs +20 -0
- package/esm2022/lib/functions/plano.function.mjs +22 -1
- package/esm2022/lib/services/store-builder.service.mjs +24 -3
- package/esm2022/lib/tango-store-builder-routing.module.mjs +35 -55
- package/esm2022/lib/tango-store-builder.module.mjs +14 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +5863 -376
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/access-denied/access-denied.component.d.ts +18 -0
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +6 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
- package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +1 -0
- package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +8 -0
- package/lib/components/plano-configurations/plano-configurations.component.d.ts +9 -1
- package/lib/components/plano-library/fixture-library/fixture-library.component.d.ts +5 -1
- package/lib/components/plano-tools/layout-touchup/layout-touchup.component.d.ts +50 -0
- package/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.d.ts +331 -0
- package/lib/components/plano-tools/tool-page-header/tool-page-header.component.d.ts +8 -0
- package/lib/components/plano-tools/tools-parent/tools-parent.component.d.ts +4 -2
- package/lib/functions/feature-access.guard.d.ts +9 -0
- package/lib/functions/plano.function.d.ts +9 -0
- package/lib/services/store-builder.service.d.ts +16 -0
- package/lib/tango-store-builder.module.d.ts +62 -58
- package/package.json +1 -1
|
@@ -9,20 +9,22 @@ export class ToolsParentComponent {
|
|
|
9
9
|
ngbModal;
|
|
10
10
|
router;
|
|
11
11
|
gs;
|
|
12
|
+
pageInfo;
|
|
12
13
|
clientId;
|
|
13
14
|
destroy$ = new Subject();
|
|
14
|
-
constructor(ngbModal, router, gs) {
|
|
15
|
+
constructor(ngbModal, router, gs, pageInfo) {
|
|
15
16
|
this.ngbModal = ngbModal;
|
|
16
17
|
this.router = router;
|
|
17
18
|
this.gs = gs;
|
|
19
|
+
this.pageInfo = pageInfo;
|
|
18
20
|
}
|
|
19
21
|
ngOnInit() {
|
|
22
|
+
this.setPageData();
|
|
20
23
|
this.gs.dataRangeValue
|
|
21
24
|
.pipe(takeUntil(this.destroy$), // Subscription will be cancelled on component destroy.
|
|
22
25
|
debounceTime(200), // To avoid immediate frequent calls.
|
|
23
26
|
filter((data) => !!data), // Filtering null/undefined.
|
|
24
|
-
distinctUntilChanged()
|
|
25
|
-
)
|
|
27
|
+
distinctUntilChanged())
|
|
26
28
|
.subscribe((data) => {
|
|
27
29
|
if (data?.client) {
|
|
28
30
|
this.clientId = data?.client;
|
|
@@ -33,6 +35,23 @@ export class ToolsParentComponent {
|
|
|
33
35
|
}
|
|
34
36
|
});
|
|
35
37
|
}
|
|
38
|
+
setPageData() {
|
|
39
|
+
this.pageInfo.setTitle("Plano Tools");
|
|
40
|
+
// this.pageInfo.setBreadcrumbs([
|
|
41
|
+
// {
|
|
42
|
+
// title: "Planogram",
|
|
43
|
+
// path: "/manage/planogram/manage-planograms",
|
|
44
|
+
// isActive: false,
|
|
45
|
+
// isSeparator: false,
|
|
46
|
+
// },
|
|
47
|
+
// {
|
|
48
|
+
// title: "",
|
|
49
|
+
// path: "",
|
|
50
|
+
// isActive: false,
|
|
51
|
+
// isSeparator: true,
|
|
52
|
+
// },
|
|
53
|
+
// ]);
|
|
54
|
+
}
|
|
36
55
|
onClickCreateFixtureTemplate() {
|
|
37
56
|
const modelRef = this.ngbModal.open(CreateFixtureTemplateComponent, {
|
|
38
57
|
centered: true,
|
|
@@ -49,11 +68,11 @@ export class ToolsParentComponent {
|
|
|
49
68
|
this.destroy$.next();
|
|
50
69
|
this.destroy$.complete();
|
|
51
70
|
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolsParentComponent, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolsParentComponent, selector: "lib-tools-parent", ngImport: i0, template: "<div class=\"
|
|
71
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolsParentComponent, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.GlobalStateService }, { token: i3.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolsParentComponent, selector: "lib-tools-parent", ngImport: i0, template: "<div class=\"plano-tools-hub\">\r\n <div class=\"hub-header mb-4\">\r\n <h4 class=\"mb-1\">Plano Tools</h4>\r\n <p class=\"text-muted small mb-0\">\r\n Utilities for managing planograms, layouts, exports and templates.\r\n </p>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title\">Export & Inspect</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n <div class=\"icon\"><i class=\"bi bi-images\"></i></div>\r\n <div class=\"title\">Download Layout Images</div>\r\n <div class=\"desc\">Export layout images store by store.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/cad-render\">\r\n <div class=\"icon\"><i class=\"bi bi-bounding-box\"></i></div>\r\n <div class=\"title\">Check CAD Output</div>\r\n <div class=\"desc\">Paste CAD data and preview the parsed layout.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/cad-files\">\r\n <div class=\"icon\"><i class=\"bi bi-folder2-open\"></i></div>\r\n <div class=\"title\">CAD Files</div>\r\n <div class=\"desc\">List uploaded CAD & Kissflow files for a store.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/data-export\">\r\n <div class=\"icon\"><i class=\"bi bi-database-down\"></i></div>\r\n <div class=\"title\">Data Export</div>\r\n <div class=\"desc\">Query planogram fixtures and export as Excel.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/store-exports\">\r\n <div class=\"icon\"><i class=\"bi bi-file-earmark-spreadsheet\"></i></div>\r\n <div class=\"title\">MBQ & Order</div>\r\n <div class=\"desc\">Generate per-store fixture export bundles.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title\">Edit & Modify</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/allow-edit\">\r\n <div class=\"icon\"><i class=\"bi bi-pencil-square\"></i></div>\r\n <div class=\"title\">Allow Edit</div>\r\n <div class=\"desc\">Re-enable editing on a published task without losing responses.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/modify-fixture-numbers\">\r\n <div class=\"icon\"><i class=\"bi bi-input-cursor-text\"></i></div>\r\n <div class=\"title\">Modify Fixture Numbers</div>\r\n <div class=\"desc\">Renumber fixtures in a planogram.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/layout-touchup\">\r\n <div class=\"icon\"><i class=\"bi bi-arrows-move\"></i></div>\r\n <div class=\"title\">Layout Touchup</div>\r\n <div class=\"desc\">Reposition or resize layout elements without invalidating responses.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/swap-template\">\r\n <div class=\"icon\"><i class=\"bi bi-arrow-left-right\"></i></div>\r\n <div class=\"title\">Template Swap</div>\r\n <div class=\"desc\">Replace one fixture template with another.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/move-bucket\">\r\n <div class=\"icon\"><i class=\"bi bi-arrow-down-up\"></i></div>\r\n <div class=\"title\">Move Store Bucket</div>\r\n <div class=\"desc\">Move a floor between Onboarding and ManagePlano.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title text-danger\">Destructive</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card tool-card-danger\" routerLink=\"/manage/planogram/plano-tools/delete-task\">\r\n <div class=\"icon\"><i class=\"bi bi-trash\"></i></div>\r\n <div class=\"title\">Delete Task</div>\r\n <div class=\"desc\">Remove a task and its responses.</div>\r\n </a>\r\n <a class=\"tool-card tool-card-danger\" routerLink=\"/manage/planogram/plano-tools/delete-floor\">\r\n <div class=\"icon\"><i class=\"bi bi-trash3\"></i></div>\r\n <div class=\"title\">Delete Floor</div>\r\n <div class=\"desc\">Remove a floor and all rows referencing it.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section\">\r\n <h6 class=\"section-title\">Create</h6>\r\n <div class=\"card-grid\">\r\n <button type=\"button\" class=\"tool-card tool-card-primary\" (click)=\"onClickCreateFixtureTemplate()\">\r\n <div class=\"icon\"><i class=\"bi bi-plus-lg text-white\" ></i></div>\r\n <div class=\"title\">Create Template</div>\r\n <div class=\"desc\">Start a new fixture template from scratch.</div>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".plano-tools-hub{padding:.25rem}.hub-header h4{font-weight:600;color:#0f172a}.section-title{font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;margin-bottom:.75rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.tool-card{display:block;width:100%;text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.1rem;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s;cursor:pointer}.tool-card:hover{border-color:#94a3b8;box-shadow:0 4px 12px #0f172a0f;transform:translateY(-1px)}.tool-card .icon{width:36px;height:36px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;font-size:1.1rem;margin-bottom:.6rem}.tool-card .title{font-weight:600;color:#0f172a;margin-bottom:.25rem}.tool-card .desc{font-size:.825rem;color:#64748b;line-height:1.35}.tool-card.tool-card-danger .icon{background:#fef2f2;color:#dc2626}.tool-card.tool-card-danger:hover{border-color:#fca5a5}.tool-card.tool-card-primary{border-color:#16a34a;background:#f0fdf4}.tool-card.tool-card-primary .icon{background:#16a34a;color:#fff;font-size:1.5rem;line-height:1;font-weight:700}.tool-card.tool-card-primary .title{color:#14532d}.tool-card.tool-card-primary:hover{border-color:#15803d;box-shadow:0 4px 14px #16a34a2e}\n"], dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
54
73
|
}
|
|
55
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolsParentComponent, decorators: [{
|
|
56
75
|
type: Component,
|
|
57
|
-
args: [{ selector: "lib-tools-parent", template: "<div class=\"
|
|
58
|
-
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.GlobalStateService }] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtcGFyZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL3Rvb2xzLXBhcmVudC90b29scy1wYXJlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvdG9vbHMtcGFyZW50L3Rvb2xzLXBhcmVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtGQUErRixDQUFDO0FBRy9JLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9kLE1BQU0sT0FBTyxvQkFBb0I7SUFLckI7SUFDQTtJQUNBO0lBTlYsUUFBUSxDQUFTO0lBRUEsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEQsWUFDVSxRQUFrQixFQUNsQixNQUFjLEVBQ2QsRUFBc0I7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7SUFDN0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsdURBQXVEO1FBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxxQ0FBcUM7UUFDeEQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsNEJBQTRCO1FBQ3RELG9CQUFvQixFQUFFLENBQUMsMkRBQTJEO1NBQ25GO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBVyxDQUNqRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNsRSxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLENBQUMsa0RBQWtELENBQUMsRUFDcEQsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDMUQsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWpEVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix3RENsQmpDLDAwRUE4RCtCOzs0RkQ1Q2xCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IENyZWF0ZUZpeHR1cmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9maXh0dXJlLXRlbXBsYXRlLXRhYmxlL3BvcHVwcy9jcmVhdGUtZml4dHVyZS10ZW1wbGF0ZS9jcmVhdGUtZml4dHVyZS10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBmaWx0ZXIsXHJcbiAgU3ViamVjdCxcclxuICB0YWtlVW50aWwsXHJcbn0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi10b29scy1wYXJlbnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3Rvb2xzLXBhcmVudC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vdG9vbHMtcGFyZW50LmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sc1BhcmVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nYk1vZGFsOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIC8vIFN1YnNjcmlwdGlvbiB3aWxsIGJlIGNhbmNlbGxlZCBvbiBjb21wb25lbnQgZGVzdHJveS5cclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSwgLy8gVG8gYXZvaWQgaW1tZWRpYXRlIGZyZXF1ZW50IGNhbGxzLlxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSwgLy8gRmlsdGVyaW5nIG51bGwvdW5kZWZpbmVkLlxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkgLy8gRW1pdHRpbmcgb25seSBkaWZmZXJlbnQgdmFsdWVzLiAoSWdub3JlcyBzYW1lIGNsaWVudElkKS5cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgYXMgc3RyaW5nXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGhlYWRlckRhdGE/LmNsaWVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKENyZWF0ZUZpeHR1cmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RlbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgICAgIFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYmFzaWMtZGV0YWlsc1wiXSxcclxuICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgdGVtcGxhdGVJZDogcmVzdWx0Ll9pZCwgaXNFZGl0OiB0cnVlIH0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4ICBnYXAtM1wiPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvYnVpbGRlclwiPlxyXG4gICAgICAgICAgICBQbGFubyBCdWlsZGVyXHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL21pZ3JhdGVcIj5cclxuICAgICAgICAgICAgRG93bmxvYWQgTGF5b3V0IEltYWdlc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvY2FkLXJlbmRlclwiPlxyXG4gICAgICAgICAgICBDaGVjayBDQUQgT3V0cHV0XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvYWxsb3ctZWRpdFwiPlxyXG4gICAgICAgICAgICBBbGxvdyBFZGl0XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvZGVsZXRlLXRhc2tcIj5cclxuICAgICAgICAgICAgRGVsZXRlIFRhc2tcclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9kZWxldGUtZmxvb3JcIj5cclxuICAgICAgICAgICAgRGVsZXRlIEZsb29yXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy91cGRhdGUtZml4dHVyZS10eXBlXCI+XHJcbiAgICAgICAgICAgIFVwZGF0ZSBGaXh0dXJlIFR5cGVcclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvbW9kaWZ5LWZpeHR1cmUtbnVtYmVyc1wiPlxyXG4gICAgICAgICAgICBNb2RpZnkgRml4dHVyZSBOdW1iZXJzXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvZGF0YS1leHBvcnRcIj5cclxuICAgICAgICAgICAgRGF0YSBFeHBvcnRcclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9zdG9yZS1leHBvcnRzXCI+XHJcbiAgICAgICAgICAgIE1CUSAmIE9yZGVyXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvc3dhcC10ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICBUZW1wbGF0ZSBTd2FwXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvbW92ZS1idWNrZXRcIj5cclxuICAgICAgICAgICAgTW92ZSBTdG9yZSBCdWNrZXRcclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9jYWQtZmlsZXNcIj5cclxuICAgICAgICAgICAgQ0FEIEZpbGVzXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpXCI+XHJcbiAgICAgICAgICAgIENyZWF0ZSBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGhyPlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
|
|
76
|
+
args: [{ selector: "lib-tools-parent", template: "<div class=\"plano-tools-hub\">\r\n <div class=\"hub-header mb-4\">\r\n <h4 class=\"mb-1\">Plano Tools</h4>\r\n <p class=\"text-muted small mb-0\">\r\n Utilities for managing planograms, layouts, exports and templates.\r\n </p>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title\">Export & Inspect</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n <div class=\"icon\"><i class=\"bi bi-images\"></i></div>\r\n <div class=\"title\">Download Layout Images</div>\r\n <div class=\"desc\">Export layout images store by store.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/cad-render\">\r\n <div class=\"icon\"><i class=\"bi bi-bounding-box\"></i></div>\r\n <div class=\"title\">Check CAD Output</div>\r\n <div class=\"desc\">Paste CAD data and preview the parsed layout.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/cad-files\">\r\n <div class=\"icon\"><i class=\"bi bi-folder2-open\"></i></div>\r\n <div class=\"title\">CAD Files</div>\r\n <div class=\"desc\">List uploaded CAD & Kissflow files for a store.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/data-export\">\r\n <div class=\"icon\"><i class=\"bi bi-database-down\"></i></div>\r\n <div class=\"title\">Data Export</div>\r\n <div class=\"desc\">Query planogram fixtures and export as Excel.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/store-exports\">\r\n <div class=\"icon\"><i class=\"bi bi-file-earmark-spreadsheet\"></i></div>\r\n <div class=\"title\">MBQ & Order</div>\r\n <div class=\"desc\">Generate per-store fixture export bundles.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title\">Edit & Modify</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/allow-edit\">\r\n <div class=\"icon\"><i class=\"bi bi-pencil-square\"></i></div>\r\n <div class=\"title\">Allow Edit</div>\r\n <div class=\"desc\">Re-enable editing on a published task without losing responses.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/modify-fixture-numbers\">\r\n <div class=\"icon\"><i class=\"bi bi-input-cursor-text\"></i></div>\r\n <div class=\"title\">Modify Fixture Numbers</div>\r\n <div class=\"desc\">Renumber fixtures in a planogram.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/layout-touchup\">\r\n <div class=\"icon\"><i class=\"bi bi-arrows-move\"></i></div>\r\n <div class=\"title\">Layout Touchup</div>\r\n <div class=\"desc\">Reposition or resize layout elements without invalidating responses.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/swap-template\">\r\n <div class=\"icon\"><i class=\"bi bi-arrow-left-right\"></i></div>\r\n <div class=\"title\">Template Swap</div>\r\n <div class=\"desc\">Replace one fixture template with another.</div>\r\n </a>\r\n <a class=\"tool-card\" routerLink=\"/manage/planogram/plano-tools/move-bucket\">\r\n <div class=\"icon\"><i class=\"bi bi-arrow-down-up\"></i></div>\r\n <div class=\"title\">Move Store Bucket</div>\r\n <div class=\"desc\">Move a floor between Onboarding and ManagePlano.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section mb-4\">\r\n <h6 class=\"section-title text-danger\">Destructive</h6>\r\n <div class=\"card-grid\">\r\n <a class=\"tool-card tool-card-danger\" routerLink=\"/manage/planogram/plano-tools/delete-task\">\r\n <div class=\"icon\"><i class=\"bi bi-trash\"></i></div>\r\n <div class=\"title\">Delete Task</div>\r\n <div class=\"desc\">Remove a task and its responses.</div>\r\n </a>\r\n <a class=\"tool-card tool-card-danger\" routerLink=\"/manage/planogram/plano-tools/delete-floor\">\r\n <div class=\"icon\"><i class=\"bi bi-trash3\"></i></div>\r\n <div class=\"title\">Delete Floor</div>\r\n <div class=\"desc\">Remove a floor and all rows referencing it.</div>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tool-section\">\r\n <h6 class=\"section-title\">Create</h6>\r\n <div class=\"card-grid\">\r\n <button type=\"button\" class=\"tool-card tool-card-primary\" (click)=\"onClickCreateFixtureTemplate()\">\r\n <div class=\"icon\"><i class=\"bi bi-plus-lg text-white\" ></i></div>\r\n <div class=\"title\">Create Template</div>\r\n <div class=\"desc\">Start a new fixture template from scratch.</div>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".plano-tools-hub{padding:.25rem}.hub-header h4{font-weight:600;color:#0f172a}.section-title{font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;margin-bottom:.75rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.tool-card{display:block;width:100%;text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.1rem;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s;cursor:pointer}.tool-card:hover{border-color:#94a3b8;box-shadow:0 4px 12px #0f172a0f;transform:translateY(-1px)}.tool-card .icon{width:36px;height:36px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;font-size:1.1rem;margin-bottom:.6rem}.tool-card .title{font-weight:600;color:#0f172a;margin-bottom:.25rem}.tool-card .desc{font-size:.825rem;color:#64748b;line-height:1.35}.tool-card.tool-card-danger .icon{background:#fef2f2;color:#dc2626}.tool-card.tool-card-danger:hover{border-color:#fca5a5}.tool-card.tool-card-primary{border-color:#16a34a;background:#f0fdf4}.tool-card.tool-card-primary .icon{background:#16a34a;color:#fff;font-size:1.5rem;line-height:1;font-weight:700}.tool-card.tool-card-primary .title{color:#14532d}.tool-card.tool-card-primary:hover{border-color:#15803d;box-shadow:0 4px 14px #16a34a2e}\n"] }]
|
|
77
|
+
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.GlobalStateService }, { type: i3.PageInfoService }] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtcGFyZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL3Rvb2xzLXBhcmVudC90b29scy1wYXJlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvdG9vbHMtcGFyZW50L3Rvb2xzLXBhcmVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtGQUErRixDQUFDO0FBRy9JLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9kLE1BQU0sT0FBTyxvQkFBb0I7SUFLckI7SUFDQTtJQUNBO0lBQ0E7SUFQVixRQUFRLENBQVM7SUFFQSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNoRCxZQUNVLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxFQUFzQixFQUN0QixRQUF5QjtRQUh6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNoQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsdURBQXVEO1FBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxxQ0FBcUM7UUFDeEQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsNEJBQTRCO1FBQ3RELG9CQUFvQixFQUFFLENBQ3ZCO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBVyxDQUNqRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxpQ0FBaUM7UUFDakMsTUFBTTtRQUNOLDBCQUEwQjtRQUMxQixtREFBbUQ7UUFDbkQsdUJBQXVCO1FBQ3ZCLDBCQUEwQjtRQUMxQixPQUFPO1FBQ1AsTUFBTTtRQUNOLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixPQUFPO1FBQ1AsTUFBTTtJQUNSLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDbEUsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzlCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDLGtEQUFrRCxDQUFDLEVBQ3BELEVBQUUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQzFELENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0F0RVUsb0JBQW9COzRGQUFwQixvQkFBb0Isd0RDbEJqQyx5OUpBaUdBOzs0RkQvRWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3JlYXRlRml4dHVyZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ZpeHR1cmUtdGVtcGxhdGUtdGFibGUvcG9wdXBzL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgZmlsdGVyLFxyXG4gIFN1YmplY3QsXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdG9vbHMtcGFyZW50XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi90b29scy1wYXJlbnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3Rvb2xzLXBhcmVudC5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHNQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ2JNb2RhbDogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcblxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIC8vIFN1YnNjcmlwdGlvbiB3aWxsIGJlIGNhbmNlbGxlZCBvbiBjb21wb25lbnQgZGVzdHJveS5cclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSwgLy8gVG8gYXZvaWQgaW1tZWRpYXRlIGZyZXF1ZW50IGNhbGxzLlxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSwgLy8gRmlsdGVyaW5nIG51bGwvdW5kZWZpbmVkLlxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIC8vIEVtaXR0aW5nIG9ubHkgZGlmZmVyZW50IHZhbHVlcy4gKElnbm9yZXMgc2FtZSBjbGllbnRJZCkuXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZyxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJQbGFubyBUb29sc1wiKTtcclxuICAgIC8vIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgLy8gICB7XHJcbiAgICAvLyAgICAgdGl0bGU6IFwiUGxhbm9ncmFtXCIsXHJcbiAgICAvLyAgICAgcGF0aDogXCIvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtc1wiLFxyXG4gICAgLy8gICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgIC8vICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHtcclxuICAgIC8vICAgICB0aXRsZTogXCJcIixcclxuICAgIC8vICAgICBwYXRoOiBcIlwiLFxyXG4gICAgLy8gICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgIC8vICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgIC8vICAgfSxcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKENyZWF0ZUZpeHR1cmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RlbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgICAgIFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYmFzaWMtZGV0YWlsc1wiXSxcclxuICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgdGVtcGxhdGVJZDogcmVzdWx0Ll9pZCwgaXNFZGl0OiB0cnVlIH0gfSxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwbGFuby10b29scy1odWJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaHViLWhlYWRlciBtYi00XCI+XHJcbiAgICA8aDQgY2xhc3M9XCJtYi0xXCI+UGxhbm8gVG9vbHM8L2g0PlxyXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTBcIj5cclxuICAgICAgVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBwbGFub2dyYW1zLCBsYXlvdXRzLCBleHBvcnRzIGFuZCB0ZW1wbGF0ZXMuXHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sLXNlY3Rpb24gbWItNFwiPlxyXG4gICAgPGg2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkV4cG9ydCAmYW1wOyBJbnNwZWN0PC9oNj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWRcIj5cclxuICAgICAgPGEgY2xhc3M9XCJ0b29sLWNhcmRcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvbWlncmF0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PGkgY2xhc3M9XCJiaSBiaS1pbWFnZXNcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+RG93bmxvYWQgTGF5b3V0IEltYWdlczwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCI+RXhwb3J0IGxheW91dCBpbWFnZXMgc3RvcmUgYnkgc3RvcmUuPC9kaXY+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgY2xhc3M9XCJ0b29sLWNhcmRcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvY2FkLXJlbmRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PGkgY2xhc3M9XCJiaSBiaS1ib3VuZGluZy1ib3hcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+Q2hlY2sgQ0FEIE91dHB1dDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCI+UGFzdGUgQ0FEIGRhdGEgYW5kIHByZXZpZXcgdGhlIHBhcnNlZCBsYXlvdXQuPC9kaXY+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgY2xhc3M9XCJ0b29sLWNhcmRcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvY2FkLWZpbGVzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aSBjbGFzcz1cImJpIGJpLWZvbGRlcjItb3BlblwiPjwvaT48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5DQUQgRmlsZXM8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY1wiPkxpc3QgdXBsb2FkZWQgQ0FEICZhbXA7IEtpc3NmbG93IGZpbGVzIGZvciBhIHN0b3JlLjwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhIGNsYXNzPVwidG9vbC1jYXJkXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL2RhdGEtZXhwb3J0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aSBjbGFzcz1cImJpIGJpLWRhdGFiYXNlLWRvd25cIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+RGF0YSBFeHBvcnQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY1wiPlF1ZXJ5IHBsYW5vZ3JhbSBmaXh0dXJlcyBhbmQgZXhwb3J0IGFzIEV4Y2VsLjwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhIGNsYXNzPVwidG9vbC1jYXJkXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL3N0b3JlLWV4cG9ydHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjxpIGNsYXNzPVwiYmkgYmktZmlsZS1lYXJtYXJrLXNwcmVhZHNoZWV0XCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPk1CUSAmYW1wOyBPcmRlcjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCI+R2VuZXJhdGUgcGVyLXN0b3JlIGZpeHR1cmUgZXhwb3J0IGJ1bmRsZXMuPC9kaXY+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidG9vbC1zZWN0aW9uIG1iLTRcIj5cclxuICAgIDxoNiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FZGl0ICZhbXA7IE1vZGlmeTwvaDY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ncmlkXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwidG9vbC1jYXJkXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL2FsbG93LWVkaXRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjxpIGNsYXNzPVwiYmkgYmktcGVuY2lsLXNxdWFyZVwiPjwvaT48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5BbGxvdyBFZGl0PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5SZS1lbmFibGUgZWRpdGluZyBvbiBhIHB1Ymxpc2hlZCB0YXNrIHdpdGhvdXQgbG9zaW5nIHJlc3BvbnNlcy48L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSBjbGFzcz1cInRvb2wtY2FyZFwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9tb2RpZnktZml4dHVyZS1udW1iZXJzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aSBjbGFzcz1cImJpIGJpLWlucHV0LWN1cnNvci10ZXh0XCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPk1vZGlmeSBGaXh0dXJlIE51bWJlcnM8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY1wiPlJlbnVtYmVyIGZpeHR1cmVzIGluIGEgcGxhbm9ncmFtLjwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhIGNsYXNzPVwidG9vbC1jYXJkXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL2xheW91dC10b3VjaHVwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aSBjbGFzcz1cImJpIGJpLWFycm93cy1tb3ZlXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPkxheW91dCBUb3VjaHVwPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5SZXBvc2l0aW9uIG9yIHJlc2l6ZSBsYXlvdXQgZWxlbWVudHMgd2l0aG91dCBpbnZhbGlkYXRpbmcgcmVzcG9uc2VzLjwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhIGNsYXNzPVwidG9vbC1jYXJkXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL3N3YXAtdGVtcGxhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjxpIGNsYXNzPVwiYmkgYmktYXJyb3ctbGVmdC1yaWdodFwiPjwvaT48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5UZW1wbGF0ZSBTd2FwPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5SZXBsYWNlIG9uZSBmaXh0dXJlIHRlbXBsYXRlIHdpdGggYW5vdGhlci48L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSBjbGFzcz1cInRvb2wtY2FyZFwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9tb3ZlLWJ1Y2tldFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PGkgY2xhc3M9XCJiaSBiaS1hcnJvdy1kb3duLXVwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPk1vdmUgU3RvcmUgQnVja2V0PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5Nb3ZlIGEgZmxvb3IgYmV0d2VlbiBPbmJvYXJkaW5nIGFuZCBNYW5hZ2VQbGFuby48L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sLXNlY3Rpb24gbWItNFwiPlxyXG4gICAgPGg2IGNsYXNzPVwic2VjdGlvbi10aXRsZSB0ZXh0LWRhbmdlclwiPkRlc3RydWN0aXZlPC9oNj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWRcIj5cclxuICAgICAgPGEgY2xhc3M9XCJ0b29sLWNhcmQgdG9vbC1jYXJkLWRhbmdlclwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9kZWxldGUtdGFza1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiPjwvaT48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5EZWxldGUgVGFzazwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCI+UmVtb3ZlIGEgdGFzayBhbmQgaXRzIHJlc3BvbnNlcy48L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSBjbGFzcz1cInRvb2wtY2FyZCB0b29sLWNhcmQtZGFuZ2VyXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvcGxhbm9ncmFtL3BsYW5vLXRvb2xzL2RlbGV0ZS1mbG9vclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaDNcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+RGVsZXRlIEZsb29yPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5SZW1vdmUgYSBmbG9vciBhbmQgYWxsIHJvd3MgcmVmZXJlbmNpbmcgaXQuPC9kaXY+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidG9vbC1zZWN0aW9uXCI+XHJcbiAgICA8aDYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+Q3JlYXRlPC9oNj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWRcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0b29sLWNhcmQgdG9vbC1jYXJkLXByaW1hcnlcIiAoY2xpY2spPVwib25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aSBjbGFzcz1cImJpIGJpLXBsdXMtbGcgdGV4dC13aGl0ZVwiID48L2k+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+Q3JlYXRlIFRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5TdGFydCBhIG5ldyBmaXh0dXJlIHRlbXBsYXRlIGZyb20gc2NyYXRjaC48L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|