tango-app-ui-manage-billing 3.3.1 → 3.3.3
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/billing-groups/billing-groups.component.mjs +6 -5
- package/esm2022/lib/components/billing-groups/delete-warning/delete-warning.component.mjs +19 -0
- package/esm2022/lib/components/billing-tabs/billing-tabs.component.mjs +51 -0
- package/esm2022/lib/components/brand-invoices/brand-invoices.component.mjs +25 -6
- package/esm2022/lib/components/brands-billing/brands-billing.component.mjs +8 -14
- package/esm2022/lib/components/daily-pricing/daily-pricing.component.mjs +10 -7
- package/esm2022/lib/components/services/billing.service.mjs +4 -1
- package/esm2022/lib/components/setup-billing/setup-billing.component.mjs +2 -2
- package/esm2022/lib/components/tango-manage-billing/delete-confirmation/delete-confirmation.component.mjs +16 -0
- package/esm2022/lib/components/tango-manage-billing/edit-invoice/edit-invoice.component.mjs +3 -3
- package/esm2022/lib/components/tango-manage-billing/tango-manage-billing.component.mjs +3 -3
- package/esm2022/lib/tango-manage-billing-routing.module.mjs +13 -6
- package/esm2022/lib/tango-manage-billing.module.mjs +13 -4
- package/fesm2022/tango-app-ui-manage-billing.mjs +154 -48
- package/fesm2022/tango-app-ui-manage-billing.mjs.map +1 -1
- package/lib/components/billing-groups/delete-warning/delete-warning.component.d.ts +9 -0
- package/lib/components/billing-tabs/billing-tabs.component.d.ts +16 -0
- package/lib/components/brand-invoices/brand-invoices.component.d.ts +1 -0
- package/lib/components/brands-billing/brands-billing.component.d.ts +2 -3
- package/lib/components/services/billing.service.d.ts +1 -0
- package/lib/components/tango-manage-billing/delete-confirmation/delete-confirmation.component.d.ts +8 -0
- package/lib/tango-manage-billing.module.d.ts +23 -20
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { Subject, takeUntil } from 'rxjs';
|
|
3
3
|
import { BillingGroupFormComponent } from './billing-group-form/billing-group-form.component';
|
|
4
|
-
import {
|
|
4
|
+
import { DeleteWarningComponent } from './delete-warning/delete-warning.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../services/billing.service";
|
|
7
7
|
import * as i2 from "tango-app-ui-shared";
|
|
@@ -126,9 +126,10 @@ export class BillingGroupsComponent {
|
|
|
126
126
|
}).catch(() => { });
|
|
127
127
|
}
|
|
128
128
|
deleteBillingGroup(group) {
|
|
129
|
-
const modalRef = this.modalService.open(
|
|
129
|
+
const modalRef = this.modalService.open(DeleteWarningComponent, {
|
|
130
130
|
centered: true, size: 'md', scrollable: true,
|
|
131
131
|
});
|
|
132
|
+
modalRef.componentInstance.groupName = group?.groupName || '';
|
|
132
133
|
modalRef.result.then((result) => {
|
|
133
134
|
if (result === 'Yes') {
|
|
134
135
|
this.billingService.deleteBillingGroup(group._id).pipe(takeUntil(this.destroy$)).subscribe({
|
|
@@ -194,12 +195,12 @@ export class BillingGroupsComponent {
|
|
|
194
195
|
});
|
|
195
196
|
}
|
|
196
197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BillingGroupsComponent, deps: [{ token: i1.BillingService }, { token: i0.ChangeDetectorRef }, { token: i2.ToastService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BillingGroupsComponent, selector: "lib-billing-groups", inputs: { clientId: "clientId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"invoices-section\">\n <!-- Header Row -->\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span class=\"billingheader\">Billing Groups</span>\n <span class=\"badge bg-light text-dark ms-1\">{{ summary?.totalGroups || 0 }} total</span>\n </div>\n <div class=\"text-muted small mt-1\">Manage GST entities for consolidated invoicing. Each group gets its own invoice.</div>\n </div>\n <div></div>\n </div>\n\n <!-- Summary Cards -->\n <div class=\"row g-3 mb-4\" *ngIf=\"summary?.totalGroups\">\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Groups</div>\n <div class=\"summary-value-sm\">{{ summary?.totalGroups }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Active</div>\n <div class=\"summary-value-sm text-primary\">{{ summary?.active }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Inactive</div>\n <div class=\"summary-value-sm\">{{ summary?.inactive }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Receivers</div>\n <div class=\"summary-value-sm\">{{ summary?.totalReceivers }}</div>\n </div>\n </div>\n </div>\n\n <!-- Search + Filter + Export + Add Row -->\n <div class=\"card-header paymenthistory border-0 px-0\">\n <div class=\"card-toolbar\">\n <div class=\"d-flex\">\n <div class=\"d-flex align-items-center position-relative my-1\">\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute mt-6 ms-3\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\n <path\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n <input [(ngModel)]=\"len\" type=\"text\" class=\"form-control ps-14 invoicesearch\"\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\"\n [disabled]=\"searchDisabled\" />\n <lib-filters [dataObject]=\"groupFilterObject\" (appliedFilters)=\"applyGroupFilters($event)\"></lib-filters>\n <button type=\"button\" (click)=\"onExport()\"\n class=\"btn-outline btn align-items-end text-nowrap invheader\"\n [disabled]=\"!groupList.length\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span class=\"ms-2\">Export</span>\n </button>\n <button type=\"button\" class=\"btn btn-primary text-nowrap ms-3\" (click)=\"addBillingGroup()\">\n + Add Billing Group\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Loading Shimmer -->\n <ng-container *ngIf=\"groupLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <ng-container *ngIf=\"groupNoData\">\n <div class=\"row\">\n <div class=\"col-lg-12 mb-3\">\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Groups List -->\n <div *ngIf=\"!groupLoading && !groupNoData\">\n <div *ngFor=\"let group of groupList\" class=\"group-card mb-3\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"d-flex align-items-center gap-3\">\n <div class=\"group-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"group-name\">{{ group?.groupName }}</span>\n <span class=\"badge badge-light-success\">Active</span>\n </div>\n <div class=\"text-muted small\">\n <span *ngIf=\"group?.gst\">GST: {{ group?.gst }}</span>\n <span *ngIf=\"group?.gst && group?.registeredCompanyName\" class=\"mx-2\">·</span>\n <span *ngIf=\"group?.registeredCompanyName\">{{ group?.registeredCompanyName }}</span>\n </div>\n </div>\n </div>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"editBillingGroup(group)\" title=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M11.3333 2.00004C11.5083 1.82494 11.7163 1.68605 11.9451 1.59129C12.1739 1.49653 12.4191 1.44775 12.6667 1.44775C12.9143 1.44775 13.1594 1.49653 13.3882 1.59129C13.617 1.68605 13.825 1.82494 14 2.00004C14.1751 2.17513 14.314 2.38318 14.4088 2.61197C14.5035 2.84076 14.5523 3.08586 14.5523 3.33337C14.5523 3.58089 14.5035 3.82599 14.4088 4.05478C14.314 4.28357 14.1751 4.49162 14 4.66671L5 13.6667L1.33333 14.6667L2.33333 11L11.3333 2.00004Z\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"deleteBillingGroup(group)\" title=\"Delete\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M2 4H3.33333H14M12.6667 4V13.3333C12.6667 13.687 12.5262 14.0261 12.2761 14.2761C12.0261 14.5262 11.687 14.6667 11.3333 14.6667H4.66667C4.31304 14.6667 3.97391 14.5262 3.72386 14.2761C3.47381 14.0261 3.33333 13.687 3.33333 13.3333V4M5.33333 4V2.66667C5.33333 2.31304 5.47381 1.97391 5.72386 1.72386C5.97391 1.47381 6.31304 1.33333 6.66667 1.33333H9.33333C9.68696 1.33333 10.0261 1.47381 10.2761 1.72386C10.5262 1.97391 10.6667 2.31304 10.6667 2.66667V4\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"row g-3 mt-2\">\n <div class=\"col\">\n <div class=\"group-detail-label\">Contact Email</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 4.08325L6.14617 7.40617C6.50533 7.64558 6.685 7.76525 6.87933 7.81042C7.05133 7.85042 7.23033 7.85042 7.40233 7.81042C7.59667 7.76525 7.77633 7.64558 8.1355 7.40617L13.115 4.08325M3.96667 11.6666H10.3147C11.1948 11.6666 11.6348 11.6666 11.9717 11.4951C12.2687 11.3439 12.5105 11.1021 12.6617 10.8051C12.8333 10.4682 12.8333 10.0282 12.8333 9.14808V5.13508C12.8333 4.25499 12.8333 3.81499 12.6617 3.47808C12.5105 3.18108 12.2687 2.93933 11.9717 2.78808C11.6348 2.61658 11.1948 2.61658 10.3147 2.61658H3.96667C3.08658 2.61658 2.64658 2.61658 2.30967 2.78808C2.01267 2.93933 1.77092 3.18108 1.61967 3.47808C1.44817 3.81499 1.44817 4.25499 1.44817 5.13508V9.14808C1.44817 10.0282 1.44817 10.4682 1.61967 10.8051C1.77092 11.1021 2.01267 11.3439 2.30967 11.4951C2.64658 11.6666 3.08658 11.6666 3.96667 11.6666Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span *ngIf=\"group?.generateInvoiceTo?.length\">{{ group?.generateInvoiceTo[0] }}</span>\n <span *ngIf=\"!group?.generateInvoiceTo?.length\" class=\"text-muted\">\u2014</span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Stores</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 7.00008L6.56483 1.60192C6.78683 1.37992 6.89783 1.26892 7.02583 1.22192C7.13883 1.18025 7.26283 1.18025 7.37583 1.22192C7.50383 1.26892 7.61483 1.37992 7.83683 1.60192L13.235 7.00008M2.91667 5.54175V11.0251C2.91667 11.4651 2.91667 11.6851 3.00242 11.8536C3.07808 12.0021 3.19825 12.1223 3.34675 12.1979C3.51533 12.2837 3.73533 12.2837 4.17533 12.2837H5.83333V9.33342C5.83333 8.87508 5.83333 8.64592 5.92208 8.46892C6.00033 8.31308 6.12617 8.18725 6.282 8.10908C6.459 8.02025 6.68817 8.02025 7.14667 8.02025H7.25417C7.71267 8.02025 7.94183 8.02025 8.11883 8.10908C8.27467 8.18725 8.40067 8.31308 8.47883 8.46892C8.5675 8.64592 8.5675 8.87508 8.5675 9.33342V12.2837H10.226C10.666 12.2837 10.886 12.2837 11.0545 12.1979C11.203 12.1223 11.3232 12.0021 11.3988 11.8536C11.4847 11.6851 11.4847 11.4651 11.4847 11.0251V5.54175\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.storeCount || 0 }}\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Annexure Attachment</div>\n <div class=\"group-detail-value\">\n <span class=\"badge\" [ngClass]=\"group?.attachAnnexure ? 'badge-light-success' : 'badge-light-secondary'\">\n {{ group?.attachAnnexure ? 'Attached' : 'Not attached' }}\n </span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Invoice Receivers</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M9.33333 12.25V11.0833C9.33333 10.4645 9.08735 9.871 8.64976 9.43342C8.21218 8.99583 7.61868 8.75 7 8.75H2.91667C2.29799 8.75 1.70449 8.99583 1.2669 9.43342C0.829316 9.871 0.583333 10.4645 0.583333 11.0833V12.25M12.8333 12.25V11.0833C12.833 10.5735 12.6688 10.0778 12.3654 9.66858C12.0621 9.25933 11.636 8.95858 11.1458 8.81083M9.04167 1.81083C9.53308 1.95792 9.96058 2.25858 10.265 2.66825C10.5694 3.07792 10.734 3.57467 10.734 4.08542C10.734 4.59617 10.5694 5.09292 10.265 5.50258C9.96058 5.91225 9.53308 6.21292 9.04167 6.36M7.29167 4.08333C7.29167 5.37242 6.24742 6.41667 4.95833 6.41667C3.66925 6.41667 2.625 5.37242 2.625 4.08333C2.625 2.79425 3.66925 1.75 4.95833 1.75C6.24742 1.75 7.29167 2.79425 7.29167 4.08333Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.receiverCount || 0 }} recipients\n </div>\n </div>\n </div>\n </div>\n\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: [".paymenthistory{padding:0px 1.25rem!important}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;height:100%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.billingheader{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.invoices-section{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:24px}.form-control{display:block;padding:.5rem 1rem;font-family:Inter;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.summary-card-sm{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:8px;padding:16px 20px}.summary-label-sm{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085)}.summary-value-sm{font-family:Inter;font-size:24px;font-weight:600;color:var(--Gray-900, #101828);margin-top:4px}.group-card{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:20px 24px}.group-icon{width:40px;height:40px;border-radius:8px;background:var(--Primary-50, #EAF8FF);display:flex;align-items:center;justify-content:center}.group-name{font-family:Inter;font-size:16px;font-weight:600;color:var(--Gray-900, #101828)}.group-detail-label{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085);margin-bottom:4px}.group-detail-value{font-family:Inter;font-size:14px;font-weight:500;color:var(--Gray-700, #344054)}.badge-light-secondary{background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.btn-icon{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i2.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }] });
|
|
198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BillingGroupsComponent, selector: "lib-billing-groups", inputs: { clientId: "clientId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"invoices-section\">\n <!-- Header Row -->\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span class=\"billingheader\">Billing Groups</span>\n <span class=\"badge bg-light text-dark ms-1\">{{ summary?.totalGroups || 0 }} total</span>\n </div>\n <div class=\"text-muted small mt-1\">Manage GST entities for consolidated invoicing. Each group gets its own invoice.</div>\n </div>\n <div></div>\n </div>\n\n <!-- Summary Cards -->\n <div class=\"row g-3 mb-4\" *ngIf=\"summary?.totalGroups\">\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Groups</div>\n <div class=\"summary-value-sm\">{{ summary?.totalGroups }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Active</div>\n <div class=\"summary-value-sm text-primary\">{{ summary?.active }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Inactive</div>\n <div class=\"summary-value-sm\">{{ summary?.inactive }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Receivers</div>\n <div class=\"summary-value-sm\">{{ summary?.totalReceivers }}</div>\n </div>\n </div>\n </div>\n\n <!-- Search + Filter + Export + Add Row -->\n <div class=\"card-header paymenthistory border-0 px-0\">\n <div class=\"card-toolbar\">\n <div class=\"d-flex\">\n <div class=\"d-flex align-items-center position-relative my-1\">\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute mt-6 ms-3\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\n <path\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n <input [(ngModel)]=\"len\" type=\"text\" class=\"form-control ps-14 invoicesearch\"\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\"\n [disabled]=\"searchDisabled\" />\n <lib-filters [dataObject]=\"groupFilterObject\" (appliedFilters)=\"applyGroupFilters($event)\"></lib-filters>\n <button type=\"button\" (click)=\"onExport()\"\n class=\"btn-outline btn align-items-end text-nowrap invheader\"\n [disabled]=\"!groupList.length\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span class=\"ms-2\">Export</span>\n </button>\n <button type=\"button\" class=\"btn btn-primary text-nowrap ms-3\" (click)=\"addBillingGroup()\">\n + Add Billing Group\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Loading Shimmer -->\n <ng-container *ngIf=\"groupLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <ng-container *ngIf=\"groupNoData\">\n <div class=\"row\">\n <div class=\"col-lg-12 mb-3\">\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Groups List -->\n <div *ngIf=\"!groupLoading && !groupNoData\">\n <div *ngFor=\"let group of groupList\" class=\"group-card mb-3\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"d-flex align-items-center gap-3\">\n <div class=\"group-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"group-name\">{{ group?.groupName }}</span>\n <span class=\"badge badge-light-success\">Active</span>\n </div>\n <div class=\"text-muted small\">\n <span *ngIf=\"group?.gst\">GST: {{ group?.gst }}</span>\n <span *ngIf=\"group?.gst && group?.registeredCompanyName\" class=\"mx-2\">·</span>\n <span *ngIf=\"group?.registeredCompanyName\">{{ group?.registeredCompanyName }}</span>\n </div>\n </div>\n </div>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"editBillingGroup(group)\" title=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M11.3333 2.00004C11.5083 1.82494 11.7163 1.68605 11.9451 1.59129C12.1739 1.49653 12.4191 1.44775 12.6667 1.44775C12.9143 1.44775 13.1594 1.49653 13.3882 1.59129C13.617 1.68605 13.825 1.82494 14 2.00004C14.1751 2.17513 14.314 2.38318 14.4088 2.61197C14.5035 2.84076 14.5523 3.08586 14.5523 3.33337C14.5523 3.58089 14.5035 3.82599 14.4088 4.05478C14.314 4.28357 14.1751 4.49162 14 4.66671L5 13.6667L1.33333 14.6667L2.33333 11L11.3333 2.00004Z\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button *ngIf=\"!group?.isPrimary\" class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"deleteBillingGroup(group)\" title=\"Delete\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M2 4H3.33333H14M12.6667 4V13.3333C12.6667 13.687 12.5262 14.0261 12.2761 14.2761C12.0261 14.5262 11.687 14.6667 11.3333 14.6667H4.66667C4.31304 14.6667 3.97391 14.5262 3.72386 14.2761C3.47381 14.0261 3.33333 13.687 3.33333 13.3333V4M5.33333 4V2.66667C5.33333 2.31304 5.47381 1.97391 5.72386 1.72386C5.97391 1.47381 6.31304 1.33333 6.66667 1.33333H9.33333C9.68696 1.33333 10.0261 1.47381 10.2761 1.72386C10.5262 1.97391 10.6667 2.31304 10.6667 2.66667V4\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"row g-3 mt-2\">\n <div class=\"col\">\n <div class=\"group-detail-label\">Contact Email</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 4.08325L6.14617 7.40617C6.50533 7.64558 6.685 7.76525 6.87933 7.81042C7.05133 7.85042 7.23033 7.85042 7.40233 7.81042C7.59667 7.76525 7.77633 7.64558 8.1355 7.40617L13.115 4.08325M3.96667 11.6666H10.3147C11.1948 11.6666 11.6348 11.6666 11.9717 11.4951C12.2687 11.3439 12.5105 11.1021 12.6617 10.8051C12.8333 10.4682 12.8333 10.0282 12.8333 9.14808V5.13508C12.8333 4.25499 12.8333 3.81499 12.6617 3.47808C12.5105 3.18108 12.2687 2.93933 11.9717 2.78808C11.6348 2.61658 11.1948 2.61658 10.3147 2.61658H3.96667C3.08658 2.61658 2.64658 2.61658 2.30967 2.78808C2.01267 2.93933 1.77092 3.18108 1.61967 3.47808C1.44817 3.81499 1.44817 4.25499 1.44817 5.13508V9.14808C1.44817 10.0282 1.44817 10.4682 1.61967 10.8051C1.77092 11.1021 2.01267 11.3439 2.30967 11.4951C2.64658 11.6666 3.08658 11.6666 3.96667 11.6666Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span *ngIf=\"group?.generateInvoiceTo?.length\">{{ group?.generateInvoiceTo[0] }}</span>\n <span *ngIf=\"!group?.generateInvoiceTo?.length\" class=\"text-muted\">\u2014</span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Stores</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 7.00008L6.56483 1.60192C6.78683 1.37992 6.89783 1.26892 7.02583 1.22192C7.13883 1.18025 7.26283 1.18025 7.37583 1.22192C7.50383 1.26892 7.61483 1.37992 7.83683 1.60192L13.235 7.00008M2.91667 5.54175V11.0251C2.91667 11.4651 2.91667 11.6851 3.00242 11.8536C3.07808 12.0021 3.19825 12.1223 3.34675 12.1979C3.51533 12.2837 3.73533 12.2837 4.17533 12.2837H5.83333V9.33342C5.83333 8.87508 5.83333 8.64592 5.92208 8.46892C6.00033 8.31308 6.12617 8.18725 6.282 8.10908C6.459 8.02025 6.68817 8.02025 7.14667 8.02025H7.25417C7.71267 8.02025 7.94183 8.02025 8.11883 8.10908C8.27467 8.18725 8.40067 8.31308 8.47883 8.46892C8.5675 8.64592 8.5675 8.87508 8.5675 9.33342V12.2837H10.226C10.666 12.2837 10.886 12.2837 11.0545 12.1979C11.203 12.1223 11.3232 12.0021 11.3988 11.8536C11.4847 11.6851 11.4847 11.4651 11.4847 11.0251V5.54175\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.storeCount || 0 }}\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Annexure Attachment</div>\n <div class=\"group-detail-value\">\n <span class=\"badge\" [ngClass]=\"group?.attachAnnexure ? 'badge-light-success' : 'badge-light-secondary'\">\n {{ group?.attachAnnexure ? 'Attached' : 'Not attached' }}\n </span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Invoice Receivers</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M9.33333 12.25V11.0833C9.33333 10.4645 9.08735 9.871 8.64976 9.43342C8.21218 8.99583 7.61868 8.75 7 8.75H2.91667C2.29799 8.75 1.70449 8.99583 1.2669 9.43342C0.829316 9.871 0.583333 10.4645 0.583333 11.0833V12.25M12.8333 12.25V11.0833C12.833 10.5735 12.6688 10.0778 12.3654 9.66858C12.0621 9.25933 11.636 8.95858 11.1458 8.81083M9.04167 1.81083C9.53308 1.95792 9.96058 2.25858 10.265 2.66825C10.5694 3.07792 10.734 3.57467 10.734 4.08542C10.734 4.59617 10.5694 5.09292 10.265 5.50258C9.96058 5.91225 9.53308 6.21292 9.04167 6.36M7.29167 4.08333C7.29167 5.37242 6.24742 6.41667 4.95833 6.41667C3.66925 6.41667 2.625 5.37242 2.625 4.08333C2.625 2.79425 3.66925 1.75 4.95833 1.75C6.24742 1.75 7.29167 2.79425 7.29167 4.08333Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.receiverCount || 0 }} recipients\n </div>\n </div>\n </div>\n </div>\n\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: [".paymenthistory{padding:0px 1.25rem!important}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;height:100%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.billingheader{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.invoices-section{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:24px}.form-control{display:block;padding:.5rem 1rem;font-family:Inter;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.summary-card-sm{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:8px;padding:16px 20px}.summary-label-sm{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085)}.summary-value-sm{font-family:Inter;font-size:24px;font-weight:600;color:var(--Gray-900, #101828);margin-top:4px}.group-card{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:20px 24px}.group-icon{width:40px;height:40px;border-radius:8px;background:var(--Primary-50, #EAF8FF);display:flex;align-items:center;justify-content:center}.group-name{font-family:Inter;font-size:16px;font-weight:600;color:var(--Gray-900, #101828)}.group-detail-label{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085);margin-bottom:4px}.group-detail-value{font-family:Inter;font-size:14px;font-weight:500;color:var(--Gray-700, #344054)}.badge-light-secondary{background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.btn-icon{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i2.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }] });
|
|
198
199
|
}
|
|
199
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BillingGroupsComponent, decorators: [{
|
|
200
201
|
type: Component,
|
|
201
|
-
args: [{ selector: 'lib-billing-groups', template: "<div class=\"invoices-section\">\n <!-- Header Row -->\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span class=\"billingheader\">Billing Groups</span>\n <span class=\"badge bg-light text-dark ms-1\">{{ summary?.totalGroups || 0 }} total</span>\n </div>\n <div class=\"text-muted small mt-1\">Manage GST entities for consolidated invoicing. Each group gets its own invoice.</div>\n </div>\n <div></div>\n </div>\n\n <!-- Summary Cards -->\n <div class=\"row g-3 mb-4\" *ngIf=\"summary?.totalGroups\">\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Groups</div>\n <div class=\"summary-value-sm\">{{ summary?.totalGroups }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Active</div>\n <div class=\"summary-value-sm text-primary\">{{ summary?.active }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Inactive</div>\n <div class=\"summary-value-sm\">{{ summary?.inactive }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Receivers</div>\n <div class=\"summary-value-sm\">{{ summary?.totalReceivers }}</div>\n </div>\n </div>\n </div>\n\n <!-- Search + Filter + Export + Add Row -->\n <div class=\"card-header paymenthistory border-0 px-0\">\n <div class=\"card-toolbar\">\n <div class=\"d-flex\">\n <div class=\"d-flex align-items-center position-relative my-1\">\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute mt-6 ms-3\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\n <path\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n <input [(ngModel)]=\"len\" type=\"text\" class=\"form-control ps-14 invoicesearch\"\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\"\n [disabled]=\"searchDisabled\" />\n <lib-filters [dataObject]=\"groupFilterObject\" (appliedFilters)=\"applyGroupFilters($event)\"></lib-filters>\n <button type=\"button\" (click)=\"onExport()\"\n class=\"btn-outline btn align-items-end text-nowrap invheader\"\n [disabled]=\"!groupList.length\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span class=\"ms-2\">Export</span>\n </button>\n <button type=\"button\" class=\"btn btn-primary text-nowrap ms-3\" (click)=\"addBillingGroup()\">\n + Add Billing Group\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Loading Shimmer -->\n <ng-container *ngIf=\"groupLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <ng-container *ngIf=\"groupNoData\">\n <div class=\"row\">\n <div class=\"col-lg-12 mb-3\">\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Groups List -->\n <div *ngIf=\"!groupLoading && !groupNoData\">\n <div *ngFor=\"let group of groupList\" class=\"group-card mb-3\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"d-flex align-items-center gap-3\">\n <div class=\"group-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"group-name\">{{ group?.groupName }}</span>\n <span class=\"badge badge-light-success\">Active</span>\n </div>\n <div class=\"text-muted small\">\n <span *ngIf=\"group?.gst\">GST: {{ group?.gst }}</span>\n <span *ngIf=\"group?.gst && group?.registeredCompanyName\" class=\"mx-2\">·</span>\n <span *ngIf=\"group?.registeredCompanyName\">{{ group?.registeredCompanyName }}</span>\n </div>\n </div>\n </div>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"editBillingGroup(group)\" title=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M11.3333 2.00004C11.5083 1.82494 11.7163 1.68605 11.9451 1.59129C12.1739 1.49653 12.4191 1.44775 12.6667 1.44775C12.9143 1.44775 13.1594 1.49653 13.3882 1.59129C13.617 1.68605 13.825 1.82494 14 2.00004C14.1751 2.17513 14.314 2.38318 14.4088 2.61197C14.5035 2.84076 14.5523 3.08586 14.5523 3.33337C14.5523 3.58089 14.5035 3.82599 14.4088 4.05478C14.314 4.28357 14.1751 4.49162 14 4.66671L5 13.6667L1.33333 14.6667L2.33333 11L11.3333 2.00004Z\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"deleteBillingGroup(group)\" title=\"Delete\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M2 4H3.33333H14M12.6667 4V13.3333C12.6667 13.687 12.5262 14.0261 12.2761 14.2761C12.0261 14.5262 11.687 14.6667 11.3333 14.6667H4.66667C4.31304 14.6667 3.97391 14.5262 3.72386 14.2761C3.47381 14.0261 3.33333 13.687 3.33333 13.3333V4M5.33333 4V2.66667C5.33333 2.31304 5.47381 1.97391 5.72386 1.72386C5.97391 1.47381 6.31304 1.33333 6.66667 1.33333H9.33333C9.68696 1.33333 10.0261 1.47381 10.2761 1.72386C10.5262 1.97391 10.6667 2.31304 10.6667 2.66667V4\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"row g-3 mt-2\">\n <div class=\"col\">\n <div class=\"group-detail-label\">Contact Email</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 4.08325L6.14617 7.40617C6.50533 7.64558 6.685 7.76525 6.87933 7.81042C7.05133 7.85042 7.23033 7.85042 7.40233 7.81042C7.59667 7.76525 7.77633 7.64558 8.1355 7.40617L13.115 4.08325M3.96667 11.6666H10.3147C11.1948 11.6666 11.6348 11.6666 11.9717 11.4951C12.2687 11.3439 12.5105 11.1021 12.6617 10.8051C12.8333 10.4682 12.8333 10.0282 12.8333 9.14808V5.13508C12.8333 4.25499 12.8333 3.81499 12.6617 3.47808C12.5105 3.18108 12.2687 2.93933 11.9717 2.78808C11.6348 2.61658 11.1948 2.61658 10.3147 2.61658H3.96667C3.08658 2.61658 2.64658 2.61658 2.30967 2.78808C2.01267 2.93933 1.77092 3.18108 1.61967 3.47808C1.44817 3.81499 1.44817 4.25499 1.44817 5.13508V9.14808C1.44817 10.0282 1.44817 10.4682 1.61967 10.8051C1.77092 11.1021 2.01267 11.3439 2.30967 11.4951C2.64658 11.6666 3.08658 11.6666 3.96667 11.6666Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span *ngIf=\"group?.generateInvoiceTo?.length\">{{ group?.generateInvoiceTo[0] }}</span>\n <span *ngIf=\"!group?.generateInvoiceTo?.length\" class=\"text-muted\">\u2014</span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Stores</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 7.00008L6.56483 1.60192C6.78683 1.37992 6.89783 1.26892 7.02583 1.22192C7.13883 1.18025 7.26283 1.18025 7.37583 1.22192C7.50383 1.26892 7.61483 1.37992 7.83683 1.60192L13.235 7.00008M2.91667 5.54175V11.0251C2.91667 11.4651 2.91667 11.6851 3.00242 11.8536C3.07808 12.0021 3.19825 12.1223 3.34675 12.1979C3.51533 12.2837 3.73533 12.2837 4.17533 12.2837H5.83333V9.33342C5.83333 8.87508 5.83333 8.64592 5.92208 8.46892C6.00033 8.31308 6.12617 8.18725 6.282 8.10908C6.459 8.02025 6.68817 8.02025 7.14667 8.02025H7.25417C7.71267 8.02025 7.94183 8.02025 8.11883 8.10908C8.27467 8.18725 8.40067 8.31308 8.47883 8.46892C8.5675 8.64592 8.5675 8.87508 8.5675 9.33342V12.2837H10.226C10.666 12.2837 10.886 12.2837 11.0545 12.1979C11.203 12.1223 11.3232 12.0021 11.3988 11.8536C11.4847 11.6851 11.4847 11.4651 11.4847 11.0251V5.54175\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.storeCount || 0 }}\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Annexure Attachment</div>\n <div class=\"group-detail-value\">\n <span class=\"badge\" [ngClass]=\"group?.attachAnnexure ? 'badge-light-success' : 'badge-light-secondary'\">\n {{ group?.attachAnnexure ? 'Attached' : 'Not attached' }}\n </span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Invoice Receivers</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M9.33333 12.25V11.0833C9.33333 10.4645 9.08735 9.871 8.64976 9.43342C8.21218 8.99583 7.61868 8.75 7 8.75H2.91667C2.29799 8.75 1.70449 8.99583 1.2669 9.43342C0.829316 9.871 0.583333 10.4645 0.583333 11.0833V12.25M12.8333 12.25V11.0833C12.833 10.5735 12.6688 10.0778 12.3654 9.66858C12.0621 9.25933 11.636 8.95858 11.1458 8.81083M9.04167 1.81083C9.53308 1.95792 9.96058 2.25858 10.265 2.66825C10.5694 3.07792 10.734 3.57467 10.734 4.08542C10.734 4.59617 10.5694 5.09292 10.265 5.50258C9.96058 5.91225 9.53308 6.21292 9.04167 6.36M7.29167 4.08333C7.29167 5.37242 6.24742 6.41667 4.95833 6.41667C3.66925 6.41667 2.625 5.37242 2.625 4.08333C2.625 2.79425 3.66925 1.75 4.95833 1.75C6.24742 1.75 7.29167 2.79425 7.29167 4.08333Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.receiverCount || 0 }} recipients\n </div>\n </div>\n </div>\n </div>\n\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: [".paymenthistory{padding:0px 1.25rem!important}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;height:100%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.billingheader{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.invoices-section{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:24px}.form-control{display:block;padding:.5rem 1rem;font-family:Inter;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.summary-card-sm{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:8px;padding:16px 20px}.summary-label-sm{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085)}.summary-value-sm{font-family:Inter;font-size:24px;font-weight:600;color:var(--Gray-900, #101828);margin-top:4px}.group-card{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:20px 24px}.group-icon{width:40px;height:40px;border-radius:8px;background:var(--Primary-50, #EAF8FF);display:flex;align-items:center;justify-content:center}.group-name{font-family:Inter;font-size:16px;font-weight:600;color:var(--Gray-900, #101828)}.group-detail-label{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085);margin-bottom:4px}.group-detail-value{font-family:Inter;font-size:14px;font-weight:500;color:var(--Gray-700, #344054)}.badge-light-secondary{background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.btn-icon{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
202
|
+
args: [{ selector: 'lib-billing-groups', template: "<div class=\"invoices-section\">\n <!-- Header Row -->\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span class=\"billingheader\">Billing Groups</span>\n <span class=\"badge bg-light text-dark ms-1\">{{ summary?.totalGroups || 0 }} total</span>\n </div>\n <div class=\"text-muted small mt-1\">Manage GST entities for consolidated invoicing. Each group gets its own invoice.</div>\n </div>\n <div></div>\n </div>\n\n <!-- Summary Cards -->\n <div class=\"row g-3 mb-4\" *ngIf=\"summary?.totalGroups\">\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Groups</div>\n <div class=\"summary-value-sm\">{{ summary?.totalGroups }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Active</div>\n <div class=\"summary-value-sm text-primary\">{{ summary?.active }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Inactive</div>\n <div class=\"summary-value-sm\">{{ summary?.inactive }}</div>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"summary-card-sm\">\n <div class=\"summary-label-sm\">Total Receivers</div>\n <div class=\"summary-value-sm\">{{ summary?.totalReceivers }}</div>\n </div>\n </div>\n </div>\n\n <!-- Search + Filter + Export + Add Row -->\n <div class=\"card-header paymenthistory border-0 px-0\">\n <div class=\"card-toolbar\">\n <div class=\"d-flex\">\n <div class=\"d-flex align-items-center position-relative my-1\">\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute mt-6 ms-3\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\n <path\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n <input [(ngModel)]=\"len\" type=\"text\" class=\"form-control ps-14 invoicesearch\"\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\"\n [disabled]=\"searchDisabled\" />\n <lib-filters [dataObject]=\"groupFilterObject\" (appliedFilters)=\"applyGroupFilters($event)\"></lib-filters>\n <button type=\"button\" (click)=\"onExport()\"\n class=\"btn-outline btn align-items-end text-nowrap invheader\"\n [disabled]=\"!groupList.length\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span class=\"ms-2\">Export</span>\n </button>\n <button type=\"button\" class=\"btn btn-primary text-nowrap ms-3\" (click)=\"addBillingGroup()\">\n + Add Billing Group\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Loading Shimmer -->\n <ng-container *ngIf=\"groupLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <ng-container *ngIf=\"groupNoData\">\n <div class=\"row\">\n <div class=\"col-lg-12 mb-3\">\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Groups List -->\n <div *ngIf=\"!groupLoading && !groupNoData\">\n <div *ngFor=\"let group of groupList\" class=\"group-card mb-3\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"d-flex align-items-center gap-3\">\n <div class=\"group-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M6.66667 10H13.3333M6.66667 6.66667H13.3333M6.66667 13.3333H10M5 17.5H15C15.9205 17.5 16.6667 16.7538 16.6667 15.8333V4.16667C16.6667 3.24619 15.9205 2.5 15 2.5H5C4.07953 2.5 3.33333 3.24619 3.33333 4.16667V15.8333C3.33333 16.7538 4.07953 17.5 5 17.5Z\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div>\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"group-name\">{{ group?.groupName }}</span>\n <span class=\"badge badge-light-success\">Active</span>\n </div>\n <div class=\"text-muted small\">\n <span *ngIf=\"group?.gst\">GST: {{ group?.gst }}</span>\n <span *ngIf=\"group?.gst && group?.registeredCompanyName\" class=\"mx-2\">·</span>\n <span *ngIf=\"group?.registeredCompanyName\">{{ group?.registeredCompanyName }}</span>\n </div>\n </div>\n </div>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"editBillingGroup(group)\" title=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M11.3333 2.00004C11.5083 1.82494 11.7163 1.68605 11.9451 1.59129C12.1739 1.49653 12.4191 1.44775 12.6667 1.44775C12.9143 1.44775 13.1594 1.49653 13.3882 1.59129C13.617 1.68605 13.825 1.82494 14 2.00004C14.1751 2.17513 14.314 2.38318 14.4088 2.61197C14.5035 2.84076 14.5523 3.08586 14.5523 3.33337C14.5523 3.58089 14.5035 3.82599 14.4088 4.05478C14.314 4.28357 14.1751 4.49162 14 4.66671L5 13.6667L1.33333 14.6667L2.33333 11L11.3333 2.00004Z\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button *ngIf=\"!group?.isPrimary\" class=\"btn btn-sm btn-outline-secondary btn-icon\" (click)=\"deleteBillingGroup(group)\" title=\"Delete\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M2 4H3.33333H14M12.6667 4V13.3333C12.6667 13.687 12.5262 14.0261 12.2761 14.2761C12.0261 14.5262 11.687 14.6667 11.3333 14.6667H4.66667C4.31304 14.6667 3.97391 14.5262 3.72386 14.2761C3.47381 14.0261 3.33333 13.687 3.33333 13.3333V4M5.33333 4V2.66667C5.33333 2.31304 5.47381 1.97391 5.72386 1.72386C5.97391 1.47381 6.31304 1.33333 6.66667 1.33333H9.33333C9.68696 1.33333 10.0261 1.47381 10.2761 1.72386C10.5262 1.97391 10.6667 2.31304 10.6667 2.66667V4\" stroke=\"#667085\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"row g-3 mt-2\">\n <div class=\"col\">\n <div class=\"group-detail-label\">Contact Email</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 4.08325L6.14617 7.40617C6.50533 7.64558 6.685 7.76525 6.87933 7.81042C7.05133 7.85042 7.23033 7.85042 7.40233 7.81042C7.59667 7.76525 7.77633 7.64558 8.1355 7.40617L13.115 4.08325M3.96667 11.6666H10.3147C11.1948 11.6666 11.6348 11.6666 11.9717 11.4951C12.2687 11.3439 12.5105 11.1021 12.6617 10.8051C12.8333 10.4682 12.8333 10.0282 12.8333 9.14808V5.13508C12.8333 4.25499 12.8333 3.81499 12.6617 3.47808C12.5105 3.18108 12.2687 2.93933 11.9717 2.78808C11.6348 2.61658 11.1948 2.61658 10.3147 2.61658H3.96667C3.08658 2.61658 2.64658 2.61658 2.30967 2.78808C2.01267 2.93933 1.77092 3.18108 1.61967 3.47808C1.44817 3.81499 1.44817 4.25499 1.44817 5.13508V9.14808C1.44817 10.0282 1.44817 10.4682 1.61967 10.8051C1.77092 11.1021 2.01267 11.3439 2.30967 11.4951C2.64658 11.6666 3.08658 11.6666 3.96667 11.6666Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span *ngIf=\"group?.generateInvoiceTo?.length\">{{ group?.generateInvoiceTo[0] }}</span>\n <span *ngIf=\"!group?.generateInvoiceTo?.length\" class=\"text-muted\">\u2014</span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Stores</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M1.16667 7.00008L6.56483 1.60192C6.78683 1.37992 6.89783 1.26892 7.02583 1.22192C7.13883 1.18025 7.26283 1.18025 7.37583 1.22192C7.50383 1.26892 7.61483 1.37992 7.83683 1.60192L13.235 7.00008M2.91667 5.54175V11.0251C2.91667 11.4651 2.91667 11.6851 3.00242 11.8536C3.07808 12.0021 3.19825 12.1223 3.34675 12.1979C3.51533 12.2837 3.73533 12.2837 4.17533 12.2837H5.83333V9.33342C5.83333 8.87508 5.83333 8.64592 5.92208 8.46892C6.00033 8.31308 6.12617 8.18725 6.282 8.10908C6.459 8.02025 6.68817 8.02025 7.14667 8.02025H7.25417C7.71267 8.02025 7.94183 8.02025 8.11883 8.10908C8.27467 8.18725 8.40067 8.31308 8.47883 8.46892C8.5675 8.64592 8.5675 8.87508 8.5675 9.33342V12.2837H10.226C10.666 12.2837 10.886 12.2837 11.0545 12.1979C11.203 12.1223 11.3232 12.0021 11.3988 11.8536C11.4847 11.6851 11.4847 11.4651 11.4847 11.0251V5.54175\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.storeCount || 0 }}\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Annexure Attachment</div>\n <div class=\"group-detail-value\">\n <span class=\"badge\" [ngClass]=\"group?.attachAnnexure ? 'badge-light-success' : 'badge-light-secondary'\">\n {{ group?.attachAnnexure ? 'Attached' : 'Not attached' }}\n </span>\n </div>\n </div>\n <div class=\"col\">\n <div class=\"group-detail-label\">Invoice Receivers</div>\n <div class=\"group-detail-value\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" class=\"me-1\">\n <path d=\"M9.33333 12.25V11.0833C9.33333 10.4645 9.08735 9.871 8.64976 9.43342C8.21218 8.99583 7.61868 8.75 7 8.75H2.91667C2.29799 8.75 1.70449 8.99583 1.2669 9.43342C0.829316 9.871 0.583333 10.4645 0.583333 11.0833V12.25M12.8333 12.25V11.0833C12.833 10.5735 12.6688 10.0778 12.3654 9.66858C12.0621 9.25933 11.636 8.95858 11.1458 8.81083M9.04167 1.81083C9.53308 1.95792 9.96058 2.25858 10.265 2.66825C10.5694 3.07792 10.734 3.57467 10.734 4.08542C10.734 4.59617 10.5694 5.09292 10.265 5.50258C9.96058 5.91225 9.53308 6.21292 9.04167 6.36M7.29167 4.08333C7.29167 5.37242 6.24742 6.41667 4.95833 6.41667C3.66925 6.41667 2.625 5.37242 2.625 4.08333C2.625 2.79425 3.66925 1.75 4.95833 1.75C6.24742 1.75 7.29167 2.79425 7.29167 4.08333Z\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n {{ group?.receiverCount || 0 }} recipients\n </div>\n </div>\n </div>\n </div>\n\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: [".paymenthistory{padding:0px 1.25rem!important}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;height:100%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.billingheader{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.invoices-section{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:24px}.form-control{display:block;padding:.5rem 1rem;font-family:Inter;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important}.summary-card-sm{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:8px;padding:16px 20px}.summary-label-sm{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085)}.summary-value-sm{font-family:Inter;font-size:24px;font-weight:600;color:var(--Gray-900, #101828);margin-top:4px}.group-card{background:#fff;border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;padding:20px 24px}.group-icon{width:40px;height:40px;border-radius:8px;background:var(--Primary-50, #EAF8FF);display:flex;align-items:center;justify-content:center}.group-name{font-family:Inter;font-size:16px;font-weight:600;color:var(--Gray-900, #101828)}.group-detail-label{font-family:Inter;font-size:13px;font-weight:400;color:var(--Gray-500, #667085);margin-bottom:4px}.group-detail-value{font-family:Inter;font-size:14px;font-weight:500;color:var(--Gray-700, #344054)}.badge-light-secondary{background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.btn-icon{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
202
203
|
}], ctorParameters: () => [{ type: i1.BillingService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3.NgbModal }], propDecorators: { clientId: [{
|
|
203
204
|
type: Input
|
|
204
205
|
}] } });
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLWJpbGxpbmcvc3JjL2xpYi9jb21wb25lbnRzL2JpbGxpbmctZ3JvdXBzL2JpbGxpbmctZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZFQUE2RSxDQUFDOzs7Ozs7O0FBTzNILE1BQU0sT0FBTyxzQkFBc0I7SUE4QnZCO0lBQ0E7SUFDQTtJQUNBO0lBaENPLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWpDLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFFL0IsR0FBRyxDQUFNO0lBQ1QsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUVoQyxVQUFVO0lBQ1YsT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUVsQixRQUFRO0lBQ1IsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUNwQixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsVUFBVSxHQUFXLENBQUMsQ0FBQztJQUN2QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFXLEVBQUUsQ0FB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QUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXhNVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixpSENibkMsdW9kQTZMTTs7NEZEaExPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7cUtBT3JCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vYmlsbGluZy1ncm91cC1mb3JtL2JpbGxpbmctZ3JvdXAtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdENvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3JlcXVlc3QtY29uZmlybWF0aW9uL3JlcXVlc3QtY29uZmlybWF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1iaWxsaW5nLWdyb3VwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9iaWxsaW5nLWdyb3Vwcy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgQmlsbGluZ0dyb3Vwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG5cbiAgbGVuOiBhbnk7XG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gU3VtbWFyeVxuICBzdW1tYXJ5OiBhbnkgPSB7fTtcblxuICAvLyBUYWJsZVxuICBncm91cExpc3Q6IGFueSA9IFtdO1xuICBncm91cExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBncm91cE5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IDEwO1xuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9ICdjcmVhdGVkQXQnO1xuICBzb3J0Qnk6IG51bWJlciA9IC0xO1xuXG4gIC8vIEZpbHRlclxuICBncm91cEZpbHRlck9iamVjdCA9IFtcbiAgICB7IERlc2NyaXB0aW9uOiAnQW5uZXh1cmUnLCB0eXBlOiAnc2luZ2xlJywgSXNzdWVzOiBbeyBpZDogJ2F0dGFjaGVkJywgdGV4dDogJ0F0dGFjaGVkJyB9LCB7IGlkOiAnbm90QXR0YWNoZWQnLCB0ZXh0OiAnTm90IEF0dGFjaGVkJyB9XSB9LFxuICBdO1xuICBhbm5leHVyZUZpbHRlcjogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBiaWxsaW5nU2VydmljZTogQmlsbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NsaWVudElkJ10gJiYgIWNoYW5nZXNbJ2NsaWVudElkJ10uZmlyc3RDaGFuZ2UgJiYgdGhpcy5jbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2FkQmlsbGluZ0dyb3VwcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2FkQmlsbGluZ0dyb3VwcygpIHtcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5ncm91cExvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZ3JvdXBOb0RhdGEgPSBmYWxzZTtcblxuICAgIGxldCBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBhbm5leHVyZUZpbHRlcjogdGhpcy5hbm5leHVyZUZpbHRlcixcbiAgICAgIGV4cG9ydDogZmFsc2VcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5icmFuZEJpbGxpbmdHcm91cHMoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZSkgPT4ge1xuICAgICAgICBpZiAoZT8uZGF0YT8uY291bnQpIHtcbiAgICAgICAgICB0aGlzLmdyb3VwTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ3JvdXBOb0RhdGEgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdyb3VwTGlzdCA9IGUuZGF0YT8uZGF0YTtcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSBlLmRhdGE/LmNvdW50O1xuICAgICAgICAgIHRoaXMuc3VtbWFyeSA9IGUuZGF0YT8uc3VtbWFyeSB8fCB7fTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdyb3VwTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ3JvdXBOb0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLmxlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXBMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JvdXBMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ3JvdXBOb0RhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLmdyb3VwTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZEJpbGxpbmdHcm91cCgpIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsIHNjcm9sbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmVkaXRNb2RlID0gZmFsc2U7XG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdGhpcy5sb2FkQmlsbGluZ0dyb3VwcygpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxuXG4gIGVkaXRCaWxsaW5nR3JvdXAoZ3JvdXA6IGFueSkge1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihCaWxsaW5nR3JvdXBGb3JtQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZWRpdE1vZGUgPSB0cnVlO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmdyb3VwRGF0YSA9IGdyb3VwO1xuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiB7fSk7XG4gIH1cblxuICBkZWxldGVCaWxsaW5nR3JvdXAoZ3JvdXA6IGFueSkge1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZXF1ZXN0Q29uZmlybWF0aW9uQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQgPT09ICdZZXMnKSB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZGVsZXRlQmlsbGluZ0dyb3VwKGdyb3VwLl9pZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBkZWxldGUgYmlsbGluZyBncm91cCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgYXBwbHlHcm91cEZpbHRlcnMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdBbm5leHVyZScpIHtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXM/LmlkIHx8ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbm5leHVyZUZpbHRlciA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBzZWFyY2hGaWVsZCgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpO1xuICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChwYWdlU2l6ZSk7XG4gICAgdGhpcy5sb2FkQmlsbGluZ0dyb3VwcygpO1xuICB9XG5cbiAgb25FeHBvcnQoKSB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBleHBvcnQ6IHRydWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5icmFuZEJpbGxpbmdHcm91cHNFeHBvcnQoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2JpbGxpbmctZ3JvdXBzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiaW52b2ljZXMtc2VjdGlvblwiPlxuICAgIDwhLS0gSGVhZGVyIFJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNjY2NjcgMTBIMTMuMzMzM002LjY2NjY3IDYuNjY2NjdIMTMuMzMzM002LjY2NjY3IDEzLjMzMzNIMTBNNSAxNy41SDE1QzE1LjkyMDUgMTcuNSAxNi42NjY3IDE2Ljc1MzggMTYuNjY2NyAxNS44MzMzVjQuMTY2NjdDMTYuNjY2NyAzLjI0NjE5IDE1LjkyMDUgMi41IDE1IDIuNUg1QzQuMDc5NTMgMi41IDMuMzMzMzMgMy4yNDYxOSAzLjMzMzMzIDQuMTY2NjdWMTUuODMzM0MzLjMzMzMzIDE2Ljc1MzggNC4wNzk1MyAxNy41IDUgMTcuNVpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpbGxpbmdoZWFkZXJcIj5CaWxsaW5nIEdyb3Vwczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBtcy0xXCI+e3sgc3VtbWFyeT8udG90YWxHcm91cHMgfHwgMCB9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPk1hbmFnZSBHU1QgZW50aXRpZXMgZm9yIGNvbnNvbGlkYXRlZCBpbnZvaWNpbmcuIEVhY2ggZ3JvdXAgZ2V0cyBpdHMgb3duIGludm9pY2UuPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTdW1tYXJ5IENhcmRzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zIG1iLTRcIiAqbmdJZj1cInN1bW1hcnk/LnRvdGFsR3JvdXBzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNhcmQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbC1zbVwiPlRvdGFsIEdyb3VwczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LXZhbHVlLXNtXCI+e3sgc3VtbWFyeT8udG90YWxHcm91cHMgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktY2FyZC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWxhYmVsLXNtXCI+QWN0aXZlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktdmFsdWUtc20gdGV4dC1wcmltYXJ5XCI+e3sgc3VtbWFyeT8uYWN0aXZlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNhcmQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbC1zbVwiPkluYWN0aXZlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktdmFsdWUtc21cIj57eyBzdW1tYXJ5Py5pbmFjdGl2ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1jYXJkLXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktbGFiZWwtc21cIj5Ub3RhbCBSZWNlaXZlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS12YWx1ZS1zbVwiPnt7IHN1bW1hcnk/LnRvdGFsUmVjZWl2ZXJzIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlYXJjaCArIEZpbHRlciArIEV4cG9ydCArIEFkZCBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHBheW1lbnRoaXN0b3J5IGJvcmRlci0wIHB4LTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBpbnZvaWNlc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXQtNiBtcy0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJsZW5cIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IGludm9pY2VzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNlYXJjaEZpZWxkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzIFtkYXRhT2JqZWN0XT1cImdyb3VwRmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5R3JvdXBGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZ3JvdXBMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdGV4dC1ub3dyYXAgbXMtM1wiIChjbGljayk9XCJhZGRCaWxsaW5nR3JvdXAoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgKyBBZGQgQmlsbGluZyBHcm91cFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTG9hZGluZyBTaGltbWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cExvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE5vIERhdGEgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwTm9EYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEdyb3VwcyBMaXN0IC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhZ3JvdXBMb2FkaW5nICYmICFncm91cE5vRGF0YVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cExpc3RcIiBjbGFzcz1cImdyb3VwLWNhcmQgbWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbmFtZVwiPnt7IGdyb3VwPy5ncm91cE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCI+QWN0aXZlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXA/LmdzdFwiPkdTVDoge3sgZ3JvdXA/LmdzdCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwPy5nc3QgJiYgZ3JvdXA/LnJlZ2lzdGVyZWRDb21wYW55TmFtZVwiIGNsYXNzPVwibXgtMlwiPiZtaWRkb3Q7PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXA/LnJlZ2lzdGVyZWRDb21wYW55TmFtZVwiPnt7IGdyb3VwPy5yZWdpc3RlcmVkQ29tcGFueU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWljb25cIiAoY2xpY2spPVwiZWRpdEJpbGxpbmdHcm91cChncm91cClcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuMzMzMyAyLjAwMDA0QzExLjUwODMgMS44MjQ5NCAxMS43MTYzIDEuNjg2MDUgMTEuOTQ1MSAxLjU5MTI5QzEyLjE3MzkgMS40OTY1MyAxMi40MTkxIDEuNDQ3NzUgMTIuNjY2NyAxLjQ0Nzc1QzEyLjkxNDMgMS40NDc3NSAxMy4xNTk0IDEuNDk2NTMgMTMuMzg4MiAxLjU5MTI5QzEzLjYxNyAxLjY4NjA1IDEzLjgyNSAxLjgyNDk0IDE0IDIuMDAwMDRDMTQuMTc1MSAyLjE3NTEzIDE0LjMxNCAyLjM4MzE4IDE0LjQwODggMi42MTE5N0MxNC41MDM1IDIuODQwNzYgMTQuNTUyMyAzLjA4NTg2IDE0LjU1MjMgMy4zMzMzN0MxNC41NTIzIDMuNTgwODkgMTQuNTAzNSAzLjgyNTk5IDE0LjQwODggNC4wNTQ3OEMxNC4zMTQgNC4yODM1NyAxNC4xNzUxIDQuNDkxNjIgMTQgNC42NjY3MUw1IDEzLjY2NjdMMS4zMzMzMyAxNC42NjY3TDIuMzMzMzMgMTFMMTEuMzMzMyAyLjAwMDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWljb25cIiAoY2xpY2spPVwiZGVsZXRlQmlsbGluZ0dyb3VwKGdyb3VwKVwiIHRpdGxlPVwiRGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgNEgzLjMzMzMzSDE0TTEyLjY2NjcgNFYxMy4zMzMzQzEyLjY2NjcgMTMuNjg3IDEyLjUyNjIgMTQuMDI2MSAxMi4yNzYxIDE0LjI3NjFDMTIuMDI2MSAxNC41MjYyIDExLjY4NyAxNC42NjY3IDExLjMzMzMgMTQuNjY2N0g0LjY2NjY3QzQuMzEzMDQgMTQuNjY2NyAzLjk3MzkxIDE0LjUyNjIgMy43MjM4NiAxNC4yNzYxQzMuNDczODEgMTQuMDI2MSAzLjMzMzMzIDEzLjY4NyAzLjMzMzMzIDEzLjMzMzNWNE01LjMzMzMzIDRWMi42NjY2N0M1LjMzMzMzIDIuMzEzMDQgNS40NzM4MSAxLjk3MzkxIDUuNzIzODYgMS43MjM4NkM1Ljk3MzkxIDEuNDczODEgNi4zMTMwNCAxLjMzMzMzIDYuNjY2NjcgMS4zMzMzM0g5LjMzMzMzQzkuNjg2OTYgMS4zMzMzMyAxMC4wMjYxIDEuNDczODEgMTAuMjc2MSAxLjcyMzg2QzEwLjUyNjIgMS45NzM5MSAxMC42NjY3IDIuMzEzMDQgMTAuNjY2NyAyLjY2NjY3VjRcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTMgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC1sYWJlbFwiPkNvbnRhY3QgRW1haWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJtZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xLjE2NjY3IDQuMDgzMjVMNi4xNDYxNyA3LjQwNjE3QzYuNTA1MzMgNy42NDU1OCA2LjY4NSA3Ljc2NTI1IDYuODc5MzMgNy44MTA0MkM3LjA1MTMzIDcuODUwNDIgNy4yMzAzMyA3Ljg1MDQyIDcuNDAyMzMgNy44MTA0MkM3LjU5NjY3IDcuNzY1MjUgNy43NzYzMyA3LjY0NTU4IDguMTM1NSA3LjQwNjE3TDEzLjExNSA0LjA4MzI1TTMuOTY2NjcgMTEuNjY2NkgxMC4zMTQ3QzExLjE5NDggMTEuNjY2NiAxMS42MzQ4IDExLjY2NjYgMTEuOTcxNyAxMS40OTUxQzEyLjI2ODcgMTEuMzQzOSAxMi41MTA1IDExLjEwMjEgMTIuNjYxNyAxMC44MDUxQzEyLjgzMzMgMTAuNDY4MiAxMi44MzMzIDEwLjAyODIgMTIuODMzMyA5LjE0ODA4VjUuMTM1MDhDMTIuODMzMyA0LjI1NDk5IDEyLjgzMzMgMy44MTQ5OSAxMi42NjE3IDMuNDc4MDhDMTIuNTEwNSAzLjE4MTA4IDEyLjI2ODcgMi45MzkzMyAxMS45NzE3IDIuNzg4MDhDMTEuNjM0OCAyLjYxNjU4IDExLjE5NDggMi42MTY1OCAxMC4zMTQ3IDIuNjE2NThIMy45NjY2N0MzLjA4NjU4IDIuNjE2NTggMi42NDY1OCAyLjYxNjU4IDIuMzA5NjcgMi43ODgwOEMyLjAxMjY3IDIuOTM5MzMgMS43NzA5MiAzLjE4MTA4IDEuNjE5NjcgMy40NzgwOEMxLjQ0ODE3IDMuODE0OTkgMS40NDgxNyA0LjI1NDk5IDEuNDQ4MTcgNS4xMzUwOFY5LjE0ODA4QzEuNDQ4MTcgMTAuMDI4MiAxLjQ0ODE3IDEwLjQ2ODIgMS42MTk2NyAxMC44MDUxQzEuNzcwOTIgMTEuMTAyMSAyLjAxMjY3IDExLjM0MzkgMi4zMDk2NyAxMS40OTUxQzIuNjQ2NTggMTEuNjY2NiAzLjA4NjU4IDExLjY2NjYgMy45NjY2NyAxMS42NjY2WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXA/LmdlbmVyYXRlSW52b2ljZVRvPy5sZW5ndGhcIj57eyBncm91cD8uZ2VuZXJhdGVJbnZvaWNlVG9bMF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cD8uZ2VuZXJhdGVJbnZvaWNlVG8/Lmxlbmd0aFwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPuKAlDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZGV0YWlsLWxhYmVsXCI+U3RvcmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMS4xNjY2NyA3LjAwMDA4TDYuNTY0ODMgMS42MDE5MkM2Ljc4NjgzIDEuMzc5OTIgNi44OTc4MyAxLjI2ODkyIDcuMDI1ODMgMS4yMjE5MkM3LjEzODgzIDEuMTgwMjUgNy4yNjI4MyAxLjE4MDI1IDcuMzc1ODMgMS4yMjE5MkM3LjUwMzgzIDEuMjY4OTIgNy42MTQ4MyAxLjM3OTkyIDcuODM2ODMgMS42MDE5MkwxMy4yMzUgNy4wMDAwOE0yLjkxNjY3IDUuNTQxNzVWMTEuMDI1MUMyLjkxNjY3IDExLjQ2NTEgMi45MTY2NyAxMS42ODUxIDMuMDAyNDIgMTEuODUzNkMzLjA3ODA4IDEyLjAwMjEgMy4xOTgyNSAxMi4xMjIzIDMuMzQ2NzUgMTIuMTk3OUMzLjUxNTMzIDEyLjI4MzcgMy43MzUzMyAxMi4yODM3IDQuMTc1MzMgMTIuMjgzN0g1LjgzMzMzVjkuMzMzNDJDNS44MzMzMyA4Ljg3NTA4IDUuODMzMzMgOC42NDU5MiA1LjkyMjA4IDguNDY4OTJDNi4wMDAzMyA4LjMxMzA4IDYuMTI2MTcgOC4xODcyNSA2LjI4MiA4LjEwOTA4QzYuNDU5IDguMDIwMjUgNi42ODgxNyA4LjAyMDI1IDcuMTQ2NjcgOC4wMjAyNUg3LjI1NDE3QzcuNzEyNjcgOC4wMjAyNSA3Ljk0MTgzIDguMDIwMjUgOC4xMTg4MyA4LjEwOTA4QzguMjc0NjcgOC4xODcyNSA4LjQwMDY3IDguMzEzMDggOC40Nzg4MyA4LjQ2ODkyQzguNTY3NSA4LjY0NTkyIDguNTY3NSA4Ljg3NTA4IDguNTY3NSA5LjMzMzQyVjEyLjI4MzdIMTAuMjI2QzEwLjY2NiAxMi4yODM3IDEwLjg4NiAxMi4yODM3IDExLjA1NDUgMTIuMTk3OUMxMS4yMDMgMTIuMTIyMyAxMS4zMjMyIDEyLjAwMjEgMTEuMzk4OCAxMS44NTM2QzExLjQ4NDcgMTEuNjg1MSAxMS40ODQ3IDExLjQ2NTEgMTEuNDg0NyAxMS4wMjUxVjUuNTQxNzVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uc3RvcmVDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC1sYWJlbFwiPkFubmV4dXJlIEF0dGFjaG1lbnQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiIFtuZ0NsYXNzXT1cImdyb3VwPy5hdHRhY2hBbm5leHVyZSA/ICdiYWRnZS1saWdodC1zdWNjZXNzJyA6ICdiYWRnZS1saWdodC1zZWNvbmRhcnknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/LmF0dGFjaEFubmV4dXJlID8gJ0F0dGFjaGVkJyA6ICdOb3QgYXR0YWNoZWQnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC1sYWJlbFwiPkludm9pY2UgUmVjZWl2ZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4zMzMzMyAxMi4yNVYxMS4wODMzQzkuMzMzMzMgMTAuNDY0NSA5LjA4NzM1IDkuODcxIDguNjQ5NzYgOS40MzM0MkM4LjIxMjE4IDguOTk1ODMgNy42MTg2OCA4Ljc1IDcgOC43NUgyLjkxNjY3QzIuMjk3OTkgOC43NSAxLjcwNDQ5IDguOTk1ODMgMS4yNjY5IDkuNDMzNDJDMC44MjkzMTYgOS44NzEgMC41ODMzMzMgMTAuNDY0NSAwLjU4MzMzMyAxMS4wODMzVjEyLjI1TTEyLjgzMzMgMTIuMjVWMTEuMDgzM0MxMi44MzMgMTAuNTczNSAxMi42Njg4IDEwLjA3NzggMTIuMzY1NCA5LjY2ODU4QzEyLjA2MjEgOS4yNTkzMyAxMS42MzYgOC45NTg1OCAxMS4xNDU4IDguODEwODNNOS4wNDE2NyAxLjgxMDgzQzkuNTMzMDggMS45NTc5MiA5Ljk2MDU4IDIuMjU4NTggMTAuMjY1IDIuNjY4MjVDMTAuNTY5NCAzLjA3NzkyIDEwLjczNCAzLjU3NDY3IDEwLjczNCA0LjA4NTQyQzEwLjczNCA0LjU5NjE3IDEwLjU2OTQgNS4wOTI5MiAxMC4yNjUgNS41MDI1OEM5Ljk2MDU4IDUuOTEyMjUgOS41MzMwOCA2LjIxMjkyIDkuMDQxNjcgNi4zNk03LjI5MTY3IDQuMDgzMzNDNy4yOTE2NyA1LjM3MjQyIDYuMjQ3NDIgNi40MTY2NyA0Ljk1ODMzIDYuNDE2NjdDMy42NjkyNSA2LjQxNjY3IDIuNjI1IDUuMzcyNDIgMi42MjUgNC4wODMzM0MyLjYyNSAyLjc5NDI1IDMuNjY5MjUgMS43NSA0Ljk1ODMzIDEuNzVDNi4yNDc0MiAxLjc1IDcuMjkxNjcgMi43OTQyNSA3LjI5MTY3IDQuMDgzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/LnJlY2VpdmVyQ291bnQgfHwgMCB9fSByZWNpcGllbnRzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiBjbGFzcz1cInRleHQtc3RhcnRcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLWJpbGxpbmcvc3JjL2xpYi9jb21wb25lbnRzL2JpbGxpbmctZ3JvdXBzL2JpbGxpbmctZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxzQkFBc0I7SUE4QnZCO0lBQ0E7SUFDQTtJQUNBO0lBaENPLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWpDLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFFL0IsR0FBRyxDQUFNO0lBQ1QsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUVoQyxVQUFVO0lBQ1YsT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUVsQixRQUFRO0lBQ1IsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUNwQixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsVUFBVSxHQUFXLENBQUMsQ0FBQztJQUN2QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFXLEVBQUUsQ0FB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RyxFQUFFO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDckQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBek1VLHNCQUFzQjs0RkFBdEIsc0JBQXNCLGlIQ2JuQyxtcWRBNkxNOzs0RkRoTE8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjtxS0FPckIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQmlsbGluZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iaWxsaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XG5pbXBvcnQgeyBCaWxsaW5nR3JvdXBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVXYXJuaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtd2FybmluZy9kZWxldGUtd2FybmluZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYmlsbGluZy1ncm91cHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmlsbGluZy1ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYmlsbGluZy1ncm91cHMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJpbGxpbmdHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xuXG4gIGxlbjogYW55O1xuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFN1bW1hcnlcbiAgc3VtbWFyeTogYW55ID0ge307XG5cbiAgLy8gVGFibGVcbiAgZ3JvdXBMaXN0OiBhbnkgPSBbXTtcbiAgZ3JvdXBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgZ3JvdXBOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xuICBzb3J0Q29sdW1OYW1lOiBzdHJpbmcgPSAnY3JlYXRlZEF0JztcbiAgc29ydEJ5OiBudW1iZXIgPSAtMTtcblxuICAvLyBGaWx0ZXJcbiAgZ3JvdXBGaWx0ZXJPYmplY3QgPSBbXG4gICAgeyBEZXNjcmlwdGlvbjogJ0FubmV4dXJlJywgdHlwZTogJ3NpbmdsZScsIElzc3VlczogW3sgaWQ6ICdhdHRhY2hlZCcsIHRleHQ6ICdBdHRhY2hlZCcgfSwgeyBpZDogJ25vdEF0dGFjaGVkJywgdGV4dDogJ05vdCBBdHRhY2hlZCcgfV0gfSxcbiAgXTtcbiAgYW5uZXh1cmVGaWx0ZXI6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjbGllbnRJZCddICYmICFjaGFuZ2VzWydjbGllbnRJZCddLmZpcnN0Q2hhbmdlICYmIHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbG9hZEJpbGxpbmdHcm91cHMoKSB7XG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JvdXBMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmdyb3VwTm9EYXRhID0gZmFsc2U7XG5cbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5sZW4sXG4gICAgICBzb3J0Q29sdW1OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5LFxuICAgICAgYW5uZXh1cmVGaWx0ZXI6IHRoaXMuYW5uZXh1cmVGaWx0ZXIsXG4gICAgICBleHBvcnQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYnJhbmRCaWxsaW5nR3JvdXBzKGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGUpID0+IHtcbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XG4gICAgICAgICAgdGhpcy5ncm91cExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdyb3VwTm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ncm91cExpc3QgPSBlLmRhdGE/LmRhdGE7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudDtcbiAgICAgICAgICB0aGlzLnN1bW1hcnkgPSBlLmRhdGE/LnN1bW1hcnkgfHwge307XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ncm91cExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdyb3VwTm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAodGhpcy5sZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdyb3VwTm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncm91cExpc3QgPSBbXTtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRCaWxsaW5nR3JvdXAoKSB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEJpbGxpbmdHcm91cEZvcm1Db21wb25lbnQsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnLCBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5lZGl0TW9kZSA9IGZhbHNlO1xuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiB7fSk7XG4gIH1cblxuICBlZGl0QmlsbGluZ0dyb3VwKGdyb3VwOiBhbnkpIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsIHNjcm9sbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmVkaXRNb2RlID0gdHJ1ZTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5ncm91cERhdGEgPSBncm91cDtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQgPT09ICdzdWNjZXNzJykge1xuICAgICAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gICAgICB9XG4gICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgZGVsZXRlQmlsbGluZ0dyb3VwKGdyb3VwOiBhbnkpIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRGVsZXRlV2FybmluZ0NvbXBvbmVudCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIHNjcm9sbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZ3JvdXBOYW1lID0gZ3JvdXA/Lmdyb3VwTmFtZSB8fCAnJztcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQgPT09ICdZZXMnKSB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZGVsZXRlQmlsbGluZ0dyb3VwKGdyb3VwLl9pZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBkZWxldGUgYmlsbGluZyBncm91cCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgYXBwbHlHcm91cEZpbHRlcnMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdBbm5leHVyZScpIHtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXM/LmlkIHx8ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbm5leHVyZUZpbHRlciA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBzZWFyY2hGaWVsZCgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWRCaWxsaW5nR3JvdXBzKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpO1xuICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChwYWdlU2l6ZSk7XG4gICAgdGhpcy5sb2FkQmlsbGluZ0dyb3VwcygpO1xuICB9XG5cbiAgb25FeHBvcnQoKSB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBleHBvcnQ6IHRydWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5icmFuZEJpbGxpbmdHcm91cHNFeHBvcnQoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2JpbGxpbmctZ3JvdXBzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiaW52b2ljZXMtc2VjdGlvblwiPlxuICAgIDwhLS0gSGVhZGVyIFJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNjY2NjcgMTBIMTMuMzMzM002LjY2NjY3IDYuNjY2NjdIMTMuMzMzM002LjY2NjY3IDEzLjMzMzNIMTBNNSAxNy41SDE1QzE1LjkyMDUgMTcuNSAxNi42NjY3IDE2Ljc1MzggMTYuNjY2NyAxNS44MzMzVjQuMTY2NjdDMTYuNjY2NyAzLjI0NjE5IDE1LjkyMDUgMi41IDE1IDIuNUg1QzQuMDc5NTMgMi41IDMuMzMzMzMgMy4yNDYxOSAzLjMzMzMzIDQuMTY2NjdWMTUuODMzM0MzLjMzMzMzIDE2Ljc1MzggNC4wNzk1MyAxNy41IDUgMTcuNVpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpbGxpbmdoZWFkZXJcIj5CaWxsaW5nIEdyb3Vwczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBtcy0xXCI+e3sgc3VtbWFyeT8udG90YWxHcm91cHMgfHwgMCB9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPk1hbmFnZSBHU1QgZW50aXRpZXMgZm9yIGNvbnNvbGlkYXRlZCBpbnZvaWNpbmcuIEVhY2ggZ3JvdXAgZ2V0cyBpdHMgb3duIGludm9pY2UuPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTdW1tYXJ5IENhcmRzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zIG1iLTRcIiAqbmdJZj1cInN1bW1hcnk/LnRvdGFsR3JvdXBzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNhcmQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbC1zbVwiPlRvdGFsIEdyb3VwczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LXZhbHVlLXNtXCI+e3sgc3VtbWFyeT8udG90YWxHcm91cHMgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktY2FyZC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWxhYmVsLXNtXCI+QWN0aXZlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktdmFsdWUtc20gdGV4dC1wcmltYXJ5XCI+e3sgc3VtbWFyeT8uYWN0aXZlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNhcmQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbC1zbVwiPkluYWN0aXZlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktdmFsdWUtc21cIj57eyBzdW1tYXJ5Py5pbmFjdGl2ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1jYXJkLXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktbGFiZWwtc21cIj5Ub3RhbCBSZWNlaXZlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS12YWx1ZS1zbVwiPnt7IHN1bW1hcnk/LnRvdGFsUmVjZWl2ZXJzIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlYXJjaCArIEZpbHRlciArIEV4cG9ydCArIEFkZCBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHBheW1lbnRoaXN0b3J5IGJvcmRlci0wIHB4LTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBpbnZvaWNlc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXQtNiBtcy0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJsZW5cIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IGludm9pY2VzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNlYXJjaEZpZWxkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzIFtkYXRhT2JqZWN0XT1cImdyb3VwRmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5R3JvdXBGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZ3JvdXBMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdGV4dC1ub3dyYXAgbXMtM1wiIChjbGljayk9XCJhZGRCaWxsaW5nR3JvdXAoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgKyBBZGQgQmlsbGluZyBHcm91cFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTG9hZGluZyBTaGltbWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cExvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE5vIERhdGEgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwTm9EYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEdyb3VwcyBMaXN0IC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhZ3JvdXBMb2FkaW5nICYmICFncm91cE5vRGF0YVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cExpc3RcIiBjbGFzcz1cImdyb3VwLWNhcmQgbWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbmFtZVwiPnt7IGdyb3VwPy5ncm91cE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCI+QWN0aXZlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXA/LmdzdFwiPkdTVDoge3sgZ3JvdXA/LmdzdCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwPy5nc3QgJiYgZ3JvdXA/LnJlZ2lzdGVyZWRDb21wYW55TmFtZVwiIGNsYXNzPVwibXgtMlwiPiZtaWRkb3Q7PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXA/LnJlZ2lzdGVyZWRDb21wYW55TmFtZVwiPnt7IGdyb3VwPy5yZWdpc3RlcmVkQ29tcGFueU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWljb25cIiAoY2xpY2spPVwiZWRpdEJpbGxpbmdHcm91cChncm91cClcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuMzMzMyAyLjAwMDA0QzExLjUwODMgMS44MjQ5NCAxMS43MTYzIDEuNjg2MDUgMTEuOTQ1MSAxLjU5MTI5QzEyLjE3MzkgMS40OTY1MyAxMi40MTkxIDEuNDQ3NzUgMTIuNjY2NyAxLjQ0Nzc1QzEyLjkxNDMgMS40NDc3NSAxMy4xNTk0IDEuNDk2NTMgMTMuMzg4MiAxLjU5MTI5QzEzLjYxNyAxLjY4NjA1IDEzLjgyNSAxLjgyNDk0IDE0IDIuMDAwMDRDMTQuMTc1MSAyLjE3NTEzIDE0LjMxNCAyLjM4MzE4IDE0LjQwODggMi42MTE5N0MxNC41MDM1IDIuODQwNzYgMTQuNTUyMyAzLjA4NTg2IDE0LjU1MjMgMy4zMzMzN0MxNC41NTIzIDMuNTgwODkgMTQuNTAzNSAzLjgyNTk5IDE0LjQwODggNC4wNTQ3OEMxNC4zMTQgNC4yODM1NyAxNC4xNzUxIDQuNDkxNjIgMTQgNC42NjY3MUw1IDEzLjY2NjdMMS4zMzMzMyAxNC42NjY3TDIuMzMzMzMgMTFMMTEuMzMzMyAyLjAwMDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWdyb3VwPy5pc1ByaW1hcnlcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1pY29uXCIgKGNsaWNrKT1cImRlbGV0ZUJpbGxpbmdHcm91cChncm91cClcIiB0aXRsZT1cIkRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDRIMy4zMzMzM0gxNE0xMi42NjY3IDRWMTMuMzMzM0MxMi42NjY3IDEzLjY4NyAxMi41MjYyIDE0LjAyNjEgMTIuMjc2MSAxNC4yNzYxQzEyLjAyNjEgMTQuNTI2MiAxMS42ODcgMTQuNjY2NyAxMS4zMzMzIDE0LjY2NjdINC42NjY2N0M0LjMxMzA0IDE0LjY2NjcgMy45NzM5MSAxNC41MjYyIDMuNzIzODYgMTQuMjc2MUMzLjQ3MzgxIDE0LjAyNjEgMy4zMzMzMyAxMy42ODcgMy4zMzMzMyAxMy4zMzMzVjRNNS4zMzMzMyA0VjIuNjY2NjdDNS4zMzMzMyAyLjMxMzA0IDUuNDczODEgMS45NzM5MSA1LjcyMzg2IDEuNzIzODZDNS45NzM5MSAxLjQ3MzgxIDYuMzEzMDQgMS4zMzMzMyA2LjY2NjY3IDEuMzMzMzNIOS4zMzMzM0M5LjY4Njk2IDEuMzMzMzMgMTAuMDI2MSAxLjQ3MzgxIDEwLjI3NjEgMS43MjM4NkMxMC41MjYyIDEuOTczOTEgMTAuNjY2NyAyLjMxMzA0IDEwLjY2NjcgMi42NjY2N1Y0XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtbGFiZWxcIj5Db250YWN0IEVtYWlsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMS4xNjY2NyA0LjA4MzI1TDYuMTQ2MTcgNy40MDYxN0M2LjUwNTMzIDcuNjQ1NTggNi42ODUgNy43NjUyNSA2Ljg3OTMzIDcuODEwNDJDNy4wNTEzMyA3Ljg1MDQyIDcuMjMwMzMgNy44NTA0MiA3LjQwMjMzIDcuODEwNDJDNy41OTY2NyA3Ljc2NTI1IDcuNzc2MzMgNy42NDU1OCA4LjEzNTUgNy40MDYxN0wxMy4xMTUgNC4wODMyNU0zLjk2NjY3IDExLjY2NjZIMTAuMzE0N0MxMS4xOTQ4IDExLjY2NjYgMTEuNjM0OCAxMS42NjY2IDExLjk3MTcgMTEuNDk1MUMxMi4yNjg3IDExLjM0MzkgMTIuNTEwNSAxMS4xMDIxIDEyLjY2MTcgMTAuODA1MUMxMi44MzMzIDEwLjQ2ODIgMTIuODMzMyAxMC4wMjgyIDEyLjgzMzMgOS4xNDgwOFY1LjEzNTA4QzEyLjgzMzMgNC4yNTQ5OSAxMi44MzMzIDMuODE0OTkgMTIuNjYxNyAzLjQ3ODA4QzEyLjUxMDUgMy4xODEwOCAxMi4yNjg3IDIuOTM5MzMgMTEuOTcxNyAyLjc4ODA4QzExLjYzNDggMi42MTY1OCAxMS4xOTQ4IDIuNjE2NTggMTAuMzE0NyAyLjYxNjU4SDMuOTY2NjdDMy4wODY1OCAyLjYxNjU4IDIuNjQ2NTggMi42MTY1OCAyLjMwOTY3IDIuNzg4MDhDMi4wMTI2NyAyLjkzOTMzIDEuNzcwOTIgMy4xODEwOCAxLjYxOTY3IDMuNDc4MDhDMS40NDgxNyAzLjgxNDk5IDEuNDQ4MTcgNC4yNTQ5OSAxLjQ0ODE3IDUuMTM1MDhWOS4xNDgwOEMxLjQ0ODE3IDEwLjAyODIgMS40NDgxNyAxMC40NjgyIDEuNjE5NjcgMTAuODA1MUMxLjc3MDkyIDExLjEwMjEgMi4wMTI2NyAxMS4zNDM5IDIuMzA5NjcgMTEuNDk1MUMyLjY0NjU4IDExLjY2NjYgMy4wODY1OCAxMS42NjY2IDMuOTY2NjcgMTEuNjY2NlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwPy5nZW5lcmF0ZUludm9pY2VUbz8ubGVuZ3RoXCI+e3sgZ3JvdXA/LmdlbmVyYXRlSW52b2ljZVRvWzBdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZ3JvdXA/LmdlbmVyYXRlSW52b2ljZVRvPy5sZW5ndGhcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj7igJQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRldGFpbC1sYWJlbFwiPlN0b3JlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZGV0YWlsLXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm1lLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEuMTY2NjcgNy4wMDAwOEw2LjU2NDgzIDEuNjAxOTJDNi43ODY4MyAxLjM3OTkyIDYuODk3ODMgMS4yNjg5MiA3LjAyNTgzIDEuMjIxOTJDNy4xMzg4MyAxLjE4MDI1IDcuMjYyODMgMS4xODAyNSA3LjM3NTgzIDEuMjIxOTJDNy41MDM4MyAxLjI2ODkyIDcuNjE0ODMgMS4zNzk5MiA3LjgzNjgzIDEuNjAxOTJMMTMuMjM1IDcuMDAwMDhNMi45MTY2NyA1LjU0MTc1VjExLjAyNTFDMi45MTY2NyAxMS40NjUxIDIuOTE2NjcgMTEuNjg1MSAzLjAwMjQyIDExLjg1MzZDMy4wNzgwOCAxMi4wMDIxIDMuMTk4MjUgMTIuMTIyMyAzLjM0Njc1IDEyLjE5NzlDMy41MTUzMyAxMi4yODM3IDMuNzM1MzMgMTIuMjgzNyA0LjE3NTMzIDEyLjI4MzdINS44MzMzM1Y5LjMzMzQyQzUuODMzMzMgOC44NzUwOCA1LjgzMzMzIDguNjQ1OTIgNS45MjIwOCA4LjQ2ODkyQzYuMDAwMzMgOC4zMTMwOCA2LjEyNjE3IDguMTg3MjUgNi4yODIgOC4xMDkwOEM2LjQ1OSA4LjAyMDI1IDYuNjg4MTcgOC4wMjAyNSA3LjE0NjY3IDguMDIwMjVINy4yNTQxN0M3LjcxMjY3IDguMDIwMjUgNy45NDE4MyA4LjAyMDI1IDguMTE4ODMgOC4xMDkwOEM4LjI3NDY3IDguMTg3MjUgOC40MDA2NyA4LjMxMzA4IDguNDc4ODMgOC40Njg5MkM4LjU2NzUgOC42NDU5MiA4LjU2NzUgOC44NzUwOCA4LjU2NzUgOS4zMzM0MlYxMi4yODM3SDEwLjIyNkMxMC42NjYgMTIuMjgzNyAxMC44ODYgMTIuMjgzNyAxMS4wNTQ1IDEyLjE5NzlDMTEuMjAzIDEyLjEyMjMgMTEuMzIzMiAxMi4wMDIxIDExLjM5ODggMTEuODUzNkMxMS40ODQ3IDExLjY4NTEgMTEuNDg0NyAxMS40NjUxIDExLjQ4NDcgMTEuMDI1MVY1LjU0MTc1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/LnN0b3JlQ291bnQgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtbGFiZWxcIj5Bbm5leHVyZSBBdHRhY2htZW50PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdDbGFzc109XCJncm91cD8uYXR0YWNoQW5uZXh1cmUgPyAnYmFkZ2UtbGlnaHQtc3VjY2VzcycgOiAnYmFkZ2UtbGlnaHQtc2Vjb25kYXJ5J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5hdHRhY2hBbm5leHVyZSA/ICdBdHRhY2hlZCcgOiAnTm90IGF0dGFjaGVkJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1kZXRhaWwtbGFiZWxcIj5JbnZvaWNlIFJlY2VpdmVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZGV0YWlsLXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm1lLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuMzMzMzMgMTIuMjVWMTEuMDgzM0M5LjMzMzMzIDEwLjQ2NDUgOS4wODczNSA5Ljg3MSA4LjY0OTc2IDkuNDMzNDJDOC4yMTIxOCA4Ljk5NTgzIDcuNjE4NjggOC43NSA3IDguNzVIMi45MTY2N0MyLjI5Nzk5IDguNzUgMS43MDQ0OSA4Ljk5NTgzIDEuMjY2OSA5LjQzMzQyQzAuODI5MzE2IDkuODcxIDAuNTgzMzMzIDEwLjQ2NDUgMC41ODMzMzMgMTEuMDgzM1YxMi4yNU0xMi44MzMzIDEyLjI1VjExLjA4MzNDMTIuODMzIDEwLjU3MzUgMTIuNjY4OCAxMC4wNzc4IDEyLjM2NTQgOS42Njg1OEMxMi4wNjIxIDkuMjU5MzMgMTEuNjM2IDguOTU4NTggMTEuMTQ1OCA4LjgxMDgzTTkuMDQxNjcgMS44MTA4M0M5LjUzMzA4IDEuOTU3OTIgOS45NjA1OCAyLjI1ODU4IDEwLjI2NSAyLjY2ODI1QzEwLjU2OTQgMy4wNzc5MiAxMC43MzQgMy41NzQ2NyAxMC43MzQgNC4wODU0MkMxMC43MzQgNC41OTYxNyAxMC41Njk0IDUuMDkyOTIgMTAuMjY1IDUuNTAyNThDOS45NjA1OCA1LjkxMjI1IDkuNTMzMDggNi4yMTI5MiA5LjA0MTY3IDYuMzZNNy4yOTE2NyA0LjA4MzMzQzcuMjkxNjcgNS4zNzI0MiA2LjI0NzQyIDYuNDE2NjcgNC45NTgzMyA2LjQxNjY3QzMuNjY5MjUgNi40MTY2NyAyLjYyNSA1LjM3MjQyIDIuNjI1IDQuMDgzMzNDMi42MjUgMi43OTQyNSAzLjY2OTI1IDEuNzUgNC45NTgzMyAxLjc1QzYuMjQ3NDIgMS43NSA3LjI5MTY3IDIuNzk0MjUgNy4yOTE2NyA0LjA4MzMzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5yZWNlaXZlckNvdW50IHx8IDAgfX0gcmVjaXBpZW50c1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
+
export class DeleteWarningComponent {
|
|
5
|
+
activeModal;
|
|
6
|
+
groupName = '';
|
|
7
|
+
constructor(activeModal) {
|
|
8
|
+
this.activeModal = activeModal;
|
|
9
|
+
}
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteWarningComponent, deps: [{ token: i1.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DeleteWarningComponent, selector: "lib-delete-warning", inputs: { groupName: "groupName" }, ngImport: i0, template: "<span class=\"mb-5\">\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\" />\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\" />\n <path\n d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\n stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n</span>\n\n<span class=\"mb-3 title\">\n Delete Billing Group?\n</span>\n\n<span class=\"mb-5 description\">\n Are you sure you want to delete <strong>{{ groupName }}</strong>? This action cannot be undone and all associated data will be removed.\n</span>\n\n<div class=\"row\">\n <div class=\"col-6\">\n <button (click)=\"activeModal.close('No')\" class=\"btn btn-outline w-100\">Cancel</button>\n </div>\n\n <div class=\"col-6\">\n <button (click)=\"activeModal.close('Yes')\" class=\"btn btn-danger w-100\" style=\"padding: 8.5px;\">Delete</button>\n </div>\n</div>", styles: [":host{padding:24px}.title{color:#101828;font-size:18px;font-weight:600;line-height:28px}.description{color:#667085;font-size:14px;font-weight:400;line-height:20px}\n"] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteWarningComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'lib-delete-warning', template: "<span class=\"mb-5\">\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\" />\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\" />\n <path\n d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\n stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n</span>\n\n<span class=\"mb-3 title\">\n Delete Billing Group?\n</span>\n\n<span class=\"mb-5 description\">\n Are you sure you want to delete <strong>{{ groupName }}</strong>? This action cannot be undone and all associated data will be removed.\n</span>\n\n<div class=\"row\">\n <div class=\"col-6\">\n <button (click)=\"activeModal.close('No')\" class=\"btn btn-outline w-100\">Cancel</button>\n </div>\n\n <div class=\"col-6\">\n <button (click)=\"activeModal.close('Yes')\" class=\"btn btn-danger w-100\" style=\"padding: 8.5px;\">Delete</button>\n </div>\n</div>", styles: [":host{padding:24px}.title{color:#101828;font-size:18px;font-weight:600;line-height:28px}.description{color:#667085;font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
16
|
+
}], ctorParameters: () => [{ type: i1.NgbActiveModal }], propDecorators: { groupName: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}] } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXdhcm5pbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLWJpbGxpbmcvc3JjL2xpYi9jb21wb25lbnRzL2JpbGxpbmctZ3JvdXBzL2RlbGV0ZS13YXJuaW5nL2RlbGV0ZS13YXJuaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9kZWxldGUtd2FybmluZy9kZWxldGUtd2FybmluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWpELE1BQU0sT0FBTyxzQkFBc0I7SUFJZDtJQUZWLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFFaEMsWUFBbUIsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO0lBQUcsQ0FBQzt3R0FKdkMsc0JBQXNCOzRGQUF0QixzQkFBc0IsOEZDUm5DLHlzQ0EwQk07OzRGRGxCTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9CO21GQU1yQixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kZWxldGUtd2FybmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWxldGUtd2FybmluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kZWxldGUtd2FybmluZy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRGVsZXRlV2FybmluZ0NvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgZ3JvdXBOYW1lOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKSB7fVxuXG59IiwiPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgPHN2ZyB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUU0RTJcIiAvPlxuICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRUYzRjJcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMjggMjRWMjhNMjggMzJIMjguMDFNMzggMjhDMzggMzMuNTIyOCAzMy41MjI4IDM4IDI4IDM4QzIyLjQ3NzIgMzggMTggMzMuNTIyOCAxOCAyOEMxOCAyMi40NzcyIDIyLjQ3NzIgMTggMjggMThDMzMuNTIyOCAxOCAzOCAyMi40NzcyIDM4IDI4WlwiXG4gICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgPC9zdmc+XG48L3NwYW4+XG5cbjxzcGFuIGNsYXNzPVwibWItMyB0aXRsZVwiPlxuICAgIERlbGV0ZSBCaWxsaW5nIEdyb3VwP1xuPC9zcGFuPlxuXG48c3BhbiBjbGFzcz1cIm1iLTUgZGVzY3JpcHRpb25cIj5cbiAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxzdHJvbmc+e3sgZ3JvdXBOYW1lIH19PC9zdHJvbmc+PyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lIGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgcmVtb3ZlZC5cbjwvc3Bhbj5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhY3RpdmVNb2RhbC5jbG9zZSgnTm8nKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuY2xvc2UoJ1llcycpXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciB3LTEwMFwiIHN0eWxlPVwicGFkZGluZzogOC41cHg7XCI+RGVsZXRlPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
import * as i2 from "tango-app-ui-global";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
export class BillingTabsComponent {
|
|
7
|
+
router;
|
|
8
|
+
route;
|
|
9
|
+
pageInfo;
|
|
10
|
+
activeTab = 'brands-billing';
|
|
11
|
+
constructor(router, route, pageInfo) {
|
|
12
|
+
this.router = router;
|
|
13
|
+
this.route = route;
|
|
14
|
+
this.pageInfo = pageInfo;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.setPageData();
|
|
18
|
+
// Determine active tab from current child route
|
|
19
|
+
const childPath = this.route.firstChild?.snapshot?.url?.[0]?.path;
|
|
20
|
+
if (childPath === 'invoices') {
|
|
21
|
+
this.activeTab = 'invoices';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.activeTab = 'brands-billing';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
setPageData() {
|
|
28
|
+
this.pageInfo.setTitle('Billing');
|
|
29
|
+
this.pageInfo.setDescription('Manage billing and invoices');
|
|
30
|
+
this.pageInfo.setBreadcrumbs([
|
|
31
|
+
{ title: 'Manage', path: '/manage', isActive: false, isSeparator: false },
|
|
32
|
+
{ title: 'Manage', path: '/manage', isActive: false, isSeparator: true },
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
selectTab(tab) {
|
|
36
|
+
this.activeTab = tab;
|
|
37
|
+
if (tab === 'brands-billing') {
|
|
38
|
+
this.router.navigate(['./'], { relativeTo: this.route });
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.router.navigate(['./invoices'], { relativeTo: this.route });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BillingTabsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BillingTabsComponent, selector: "lib-billing-tabs", ngImport: i0, template: "<div class=\"card\">\n <div class=\"billing-tabs-header mt-4 mx-3\">\n <button class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\n [ngClass]=\"activeTab === 'brands-billing' ? 'activePlanBtnprimary' : 'inactivePlanBtn'\"\n (click)=\"selectTab('brands-billing')\">\n Brands & Billing\n </button>\n <button class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\n [ngClass]=\"activeTab === 'invoices' ? 'activePlanBtnprimary' : 'inactivePlanBtn'\"\n (click)=\"selectTab('invoices')\">\n Invoice\n </button>\n </div>\n <router-outlet></router-outlet>\n</div>", styles: [".billing-tabs-header{padding:0px 1.25rem!important}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BillingTabsComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{ selector: 'lib-billing-tabs', template: "<div class=\"card\">\n <div class=\"billing-tabs-header mt-4 mx-3\">\n <button class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\n [ngClass]=\"activeTab === 'brands-billing' ? 'activePlanBtnprimary' : 'inactivePlanBtn'\"\n (click)=\"selectTab('brands-billing')\">\n Brands & Billing\n </button>\n <button class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\n [ngClass]=\"activeTab === 'invoices' ? 'activePlanBtnprimary' : 'inactivePlanBtn'\"\n (click)=\"selectTab('invoices')\">\n Invoice\n </button>\n </div>\n <router-outlet></router-outlet>\n</div>", styles: [".billing-tabs-header{padding:0px 1.25rem!important}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}\n"] }]
|
|
50
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.PageInfoService }] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLXRhYnMvYmlsbGluZy10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLXRhYnMvYmlsbGluZy10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU2xELE1BQU0sT0FBTyxvQkFBb0I7SUFJckI7SUFDQTtJQUNBO0lBTFYsU0FBUyxHQUFXLGdCQUFnQixDQUFDO0lBRXJDLFlBQ1UsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLFFBQXlCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNoQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUNsRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDM0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBQ3pFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtTQUN6RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7d0dBcENVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHdEQ1RqQyxzc0JBY007OzRGRExPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJpbGxpbmctdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYmlsbGluZy10YWJzLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBCaWxsaW5nVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2JyYW5kcy1iaWxsaW5nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xuICAgIC8vIERldGVybWluZSBhY3RpdmUgdGFiIGZyb20gY3VycmVudCBjaGlsZCByb3V0ZVxuICAgIGNvbnN0IGNoaWxkUGF0aCA9IHRoaXMucm91dGUuZmlyc3RDaGlsZD8uc25hcHNob3Q/LnVybD8uWzBdPy5wYXRoO1xuICAgIGlmIChjaGlsZFBhdGggPT09ICdpbnZvaWNlcycpIHtcbiAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ2ludm9pY2VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVUYWIgPSAnYnJhbmRzLWJpbGxpbmcnO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhZ2VEYXRhKCkge1xuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoJ0JpbGxpbmcnKTtcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKCdNYW5hZ2UgYmlsbGluZyBhbmQgaW52b2ljZXMnKTtcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcbiAgICAgIHsgdGl0bGU6ICdNYW5hZ2UnLCBwYXRoOiAnL21hbmFnZScsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXG4gICAgICB7IHRpdGxlOiAnTWFuYWdlJywgcGF0aDogJy9tYW5hZ2UnLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXG4gICAgXSk7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICBpZiAodGFiID09PSAnYnJhbmRzLWJpbGxpbmcnKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL2ludm9pY2VzJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nLXRhYnMtaGVhZGVyIG10LTQgbXgtM1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktMyBtZS0yXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGl2ZVRhYiA9PT0gJ2JyYW5kcy1iaWxsaW5nJyA/ICdhY3RpdmVQbGFuQnRucHJpbWFyeScgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKCdicmFuZHMtYmlsbGluZycpXCI+XG4gICAgICAgICAgICBCcmFuZHMgJiBCaWxsaW5nXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhY3RpdmVUYWIgPT09ICdpbnZvaWNlcycgPyAnYWN0aXZlUGxhbkJ0bnByaW1hcnknIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYignaW52b2ljZXMnKVwiPlxuICAgICAgICAgICAgSW52b2ljZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG48L2Rpdj4iXX0=
|