@snabcentr/client-ui 3.50.1 → 3.50.2
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/configurators/sandwich/sc-sandwich.component.d.ts +1 -1
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +2 -2
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +3 -3
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +3 -3
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +6 -7
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +4 -4
- package/esm2022/order/directives/index.mjs +3 -0
- package/esm2022/order/directives/sc-order-accessor.directive.mjs +28 -0
- package/esm2022/order/directives/sc-order-options.mjs +11 -0
- package/esm2022/order/draft/sc-draft.component.mjs +6 -5
- package/esm2022/order/index.mjs +2 -1
- package/esm2022/order/order-item/sc-order-item.component.mjs +5 -4
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +15 -12
- package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +3 -3
- package/fesm2022/snabcentr-client-ui.mjs +69 -33
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/order/directives/index.d.ts +2 -0
- package/order/directives/sc-order-accessor.directive.d.ts +13 -0
- package/order/directives/sc-order-options.d.ts +14 -0
- package/order/index.d.ts +1 -0
- package/order/order-items-list/sc-order-items-list.component.d.ts +5 -0
- package/package.json +2 -2
|
@@ -171,7 +171,7 @@ export class ScSandwichComponent {
|
|
|
171
171
|
validators: [Validators.required, Validators.min(this.settings()?.minLength ?? 0.01)],
|
|
172
172
|
nonNullable: true,
|
|
173
173
|
}),
|
|
174
|
-
|
|
174
|
+
count: new FormControl(item?.count ?? 1, {
|
|
175
175
|
validators: [Validators.required, Validators.min(1)],
|
|
176
176
|
nonNullable: true,
|
|
177
177
|
}),
|
|
@@ -200,8 +200,7 @@ export class ScSandwichComponent {
|
|
|
200
200
|
if (!this.product.value?.costRub) {
|
|
201
201
|
return 0;
|
|
202
202
|
}
|
|
203
|
-
const
|
|
204
|
-
const totalCost = calculateResult.quantity * this.product.value.costRub * quantity;
|
|
203
|
+
const totalCost = calculateResult.quantity * this.product.value.costRub;
|
|
205
204
|
return Math.round(totalCost * 100) / 100;
|
|
206
205
|
}
|
|
207
206
|
/**
|
|
@@ -262,7 +261,7 @@ export class ScSandwichComponent {
|
|
|
262
261
|
this.product.reset(this.cartItem()?.product ?? null);
|
|
263
262
|
const configuratorParameters = this.cartItem()?.configuratorParams;
|
|
264
263
|
configuratorParameters?.items.forEach((item) => {
|
|
265
|
-
this.items.push(this.createItemGroup({ width: item.width, length: item.length,
|
|
264
|
+
this.items.push(this.createItemGroup({ width: item.width, length: item.length, count: item.count }));
|
|
266
265
|
});
|
|
267
266
|
if (!configuratorParameters?.items.length) {
|
|
268
267
|
this.addItem();
|
|
@@ -278,7 +277,7 @@ export class ScSandwichComponent {
|
|
|
278
277
|
stringify: signal((x) => x.name),
|
|
279
278
|
identityMatcher: signal((a, b) => a.id === b.id),
|
|
280
279
|
}),
|
|
281
|
-
], ngImport: i0, template: "@if (!cartItem() && settings()?.allowShowTable) {\n <div class=\"mb-5 flex justify-center\">\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"toggleShowEvent.emit()\"\n type=\"button\"\n iconStart=\"@tui.layout-list\"\n >\n \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0432\u0438\u0434\u0435 \u0441\u043F\u0438\u0441\u043A\u0430\n </button>\n </div>\n}\n<div class=\"\">\n @let calculateResult = calculateResult$ | async;\n @let products = products$ | async;\n @let productValue = product.value;\n @let validatorWidth = validatorWidth$ | async;\n @let validatorLength = validatorLength$ | async;\n\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit(calculateResult)\"\n ScNextInputFocus\n class=\"flex flex-col gap-3\"\n >\n <label\n tuiLabel\n class=\"grow\"\n >\n \u0422\u043E\u0432\u0430\u0440\n <tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n tuiChevron\n tuiSelect\n [formControl]=\"product\"\n placeholder=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\"\n />\n\n <tui-data-list-wrapper\n *tuiTextfieldDropdown\n new\n [items]=\"products\"\n />\n </tui-textfield>\n @if (productValue) {\n <div class=\"ml-2 text-tui-text-secondary\">\n \u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C:\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.</span>\n </div>\n }\n <tui-error\n [formControl]=\"product\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value && validatorWidth && validatorLength) {\n <p class=\"w-full font-bold\">\u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0438\u0437\u0434\u0435\u043B\u0438\u0439</p>\n <p class=\"w-full\">\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ settings()?.minWidth }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ product.value.properties?.width }} \u043C\u043C.\n <br />\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ settings()?.minLength }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ product.value.properties?.length }} \u043C\u043C.\n <br />\n </p>\n <div\n formArrayName=\"items\"\n class=\"flex flex-col gap-3\"\n >\n @for (item of items.controls; track item) {\n <div\n class=\"flex grow gap-2\"\n [formGroupName]=\"$index\"\n >\n <div class=\"grid grow grid-cols-3 gap-2\">\n <label tuiLabel>\n \u0428\u0438\u0440\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"width\"\n [min]=\"settings()?.minWidth ?? 0\"\n [max]=\"product.value.properties?.width ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0428\u0438\u0440\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.width }}</span>\n </div>\n }\n <tui-error\n formControlName=\"width\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label tuiLabel>\n \u0414\u043B\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"length\"\n [min]=\"settings()?.minLength ?? 0\"\n [max]=\"product.value.properties?.length ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0414\u043B\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.length }}</span>\n </div>\n }\n <tui-error\n formControlName=\"length\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n <span class=\"whitespace-nowrap\">\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u0448\u0442</span>\n <tui-textfield [tuiTextfieldCleaner]=\"false\">\n <input\n tuiInputNumber\n formControlName=\"quantity\"\n [min]=\"1\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\"\n autocomplete=\"off\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"quantity\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <button\n tuiIconButton\n (click)=\"removeItem($index)\"\n [disabled]=\"items.length <= 1\"\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n class=\"mt-6\"\n [style.flex]=\"'0 0 auto'\"\n ></button>\n </div>\n }\n </div>\n <button\n tuiButton\n appearance=\"secondary\"\n [disabled]=\"items.invalid\"\n (click)=\"addItem()\"\n type=\"button\"\n class=\"self-center\"\n iconStart=\"@tui.plus\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u0434\u0435\u043B\u0438\u0435\n </button>\n } @else if (product.value) {\n <tui-error error=\"\u0420\u0430\u0441\u0447\u0435\u0442 \u043F\u043E \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0443 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u0435\u043D. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u0443\" />\n }\n\n <label tuiLabel>\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"marker\"\n placeholder=\"\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\"\n autocomplete=\"marker\"\n />\n </tui-textfield>\n\n <tui-error\n formControlName=\"marker\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value) {\n <tui-loader [showLoader]=\"isCalculateLoading()\">\n @if (calculateResult) {\n <div class=\"mt-2 flex flex-wrap items-end gap-2\">\n <div>\n \u0418\u0442\u043E\u0433\u043E: <span class=\"whitespace-nowrap text-xl font-bold\">{{ getTotalCost(calculateResult).toLocaleString() }} {{ product.value.currency.symbol }}</span>\n </div>\n @if (calculateResult?.quantity && productValue) {\n <div class=\"whitespace-nowrap text-lg text-sc-dark-grey\">\n <span class=\"font-bold\">({{ calculateResult.quantity }} \u0448\u0442.</span> x\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.)</span>\n </div>\n }\n </div>\n }\n </tui-loader>\n }\n\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n\n <button\n [disabled]=\"form.invalid || !calculateResult || isCalculateLoading() || isSubmitLoading()\"\n [loading]=\"isSubmitLoading()\"\n tuiButton\n class=\"self-center\"\n iconStart=\"@tui.check\"\n >\n {{ !cartItem() ? '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443' : '\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C' }}\n </button>\n </form>\n</div>\n", styles: [":host{display:block;width:100%;max-width:30rem}.slider-ticks-labels{--t-offset: calc($thumb / 2);display:flex;font:var(--tui-font-text-s);margin-inline-start:var(--t-offset);margin-inline-end:var(--t-offset);color:var(--tui-text-secondary)}.slider-ticks-labels>*{position:relative;flex:2;text-align:center}.slider-ticks-labels>*:first-child{left:calc(-1 * var(--t-offset));inset-inline-start:calc(-1 * var(--t-offset));flex:1;text-align:start}.slider-ticks-labels>*:last-child{right:calc(-1 * var(--t-offset));flex:1;text-align:end}@supports (inset-inline-end: 0){.slider-ticks-labels>*:last-child{right:unset;inset-inline-end:calc(-1 * var(--t-offset))}}tui-input-slider+.slider-ticks-labels{margin-inline-start:calc(var(--tui-radius-m) / 2 + var(--t-offset))}tui-textfield+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-m) / 2 + $thumb / 2)}tui-textfield[data-size=l]+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-l) / 2 + $thumb / 2)}tui-input-range:not([new])+.slider-ticks-labels,tui-range+.slider-ticks-labels{--t-offset: $thumb}tui-input-range[new]+.slider-ticks-labels{--t-offset: calc(map-get($track-inset, $input-size) + $thumb)}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ScNextInputFocusModule }, { kind: "directive", type: i2.ScNextInputFocusDirective, selector: "form[ScNextInputFocus]" }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels]), tui-data-list-wrapper:not([labels])[new]", inputs: ["items", "disabledItemHandler", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "component", type: TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i3.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i3.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: i4.TuiSelectDirective, selector: "input[tuiSelect]" }, { kind: "directive", type: i4.TuiInputNumberDirective, selector: "input[tuiInputNumber]", inputs: ["min", "max", "prefix", "postfix"] }, { kind: "directive", type: TuiNumberFormat, selector: "[tuiNumberFormat]", inputs: ["tuiNumberFormat"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: i5.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "directive", type: i4.TuiInputSliderDirective, selector: "input[tuiInputSlider]" }, { kind: "directive", type: ScSelectOnFocusinDirective, selector: "tui-input-number, tui-input, tui-input-phone, tui-input-date, tui-input-password, input[tuiInputNumber], input[tuiTextfield], input[tuiInputSlider]" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
280
|
+
], ngImport: i0, template: "@if (!cartItem() && settings()?.allowShowTable) {\n <div class=\"mb-5 flex justify-center\">\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"toggleShowEvent.emit()\"\n type=\"button\"\n iconStart=\"@tui.layout-list\"\n >\n \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0432\u0438\u0434\u0435 \u0441\u043F\u0438\u0441\u043A\u0430\n </button>\n </div>\n}\n<div class=\"\">\n @let calculateResult = calculateResult$ | async;\n @let products = products$ | async;\n @let productValue = product.value;\n @let validatorWidth = validatorWidth$ | async;\n @let validatorLength = validatorLength$ | async;\n\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit(calculateResult)\"\n ScNextInputFocus\n class=\"flex flex-col gap-3\"\n >\n <label\n tuiLabel\n class=\"grow\"\n >\n \u0422\u043E\u0432\u0430\u0440\n <tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n tuiChevron\n tuiSelect\n [formControl]=\"product\"\n placeholder=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\"\n />\n\n <tui-data-list-wrapper\n *tuiTextfieldDropdown\n new\n [items]=\"products\"\n />\n </tui-textfield>\n @if (productValue) {\n <div class=\"ml-2 text-tui-text-secondary\">\n \u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C:\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.</span>\n </div>\n }\n <tui-error\n [formControl]=\"product\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value && validatorWidth && validatorLength) {\n <p class=\"w-full font-bold\">\u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0438\u0437\u0434\u0435\u043B\u0438\u0439</p>\n <p class=\"w-full\">\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ settings()?.minWidth }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ product.value.properties?.width }} \u043C\u043C.\n <br />\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ settings()?.minLength }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ product.value.properties?.length }} \u043C\u043C.\n <br />\n </p>\n <div\n formArrayName=\"items\"\n class=\"flex flex-col gap-3\"\n >\n @for (item of items.controls; track item) {\n <div\n class=\"flex grow gap-2\"\n [formGroupName]=\"$index\"\n >\n <div class=\"grid grow grid-cols-3 gap-2\">\n <label tuiLabel>\n \u0428\u0438\u0440\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"width\"\n [min]=\"settings()?.minWidth ?? 0\"\n [max]=\"product.value.properties?.width ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0428\u0438\u0440\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.width }}</span>\n </div>\n }\n <tui-error\n formControlName=\"width\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label tuiLabel>\n \u0414\u043B\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"length\"\n [min]=\"settings()?.minLength ?? 0\"\n [max]=\"product.value.properties?.length ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0414\u043B\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.length }}</span>\n </div>\n }\n <tui-error\n formControlName=\"length\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n <span class=\"whitespace-nowrap\">\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u0448\u0442</span>\n <tui-textfield [tuiTextfieldCleaner]=\"false\">\n <input\n tuiInputNumber\n formControlName=\"count\"\n [min]=\"1\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\"\n autocomplete=\"off\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"count\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <button\n tuiIconButton\n (click)=\"removeItem($index)\"\n [disabled]=\"items.length <= 1\"\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n class=\"mt-6\"\n [style.flex]=\"'0 0 auto'\"\n ></button>\n </div>\n }\n </div>\n <button\n tuiButton\n appearance=\"secondary\"\n [disabled]=\"items.invalid\"\n (click)=\"addItem()\"\n type=\"button\"\n class=\"self-center\"\n iconStart=\"@tui.plus\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u0434\u0435\u043B\u0438\u0435\n </button>\n } @else if (product.value) {\n <tui-error error=\"\u0420\u0430\u0441\u0447\u0435\u0442 \u043F\u043E \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0443 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u0435\u043D. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u0443\" />\n }\n\n <label tuiLabel>\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"marker\"\n placeholder=\"\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\"\n autocomplete=\"marker\"\n />\n </tui-textfield>\n\n <tui-error\n formControlName=\"marker\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value) {\n <tui-loader [showLoader]=\"isCalculateLoading()\">\n @if (calculateResult) {\n <div class=\"mt-2 flex flex-wrap items-end gap-2\">\n <div>\n \u0418\u0442\u043E\u0433\u043E: <span class=\"whitespace-nowrap text-xl font-bold\">{{ getTotalCost(calculateResult).toLocaleString() }} {{ product.value.currency.symbol }}</span>\n </div>\n @if (calculateResult?.quantity && productValue) {\n <div class=\"whitespace-nowrap text-lg text-sc-dark-grey\">\n <span class=\"font-bold\">({{ calculateResult.quantity }} \u0448\u0442.</span> x\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.)</span>\n </div>\n }\n </div>\n }\n </tui-loader>\n }\n\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n\n <button\n [disabled]=\"form.invalid || !calculateResult || isCalculateLoading() || isSubmitLoading()\"\n [loading]=\"isSubmitLoading()\"\n tuiButton\n class=\"self-center\"\n iconStart=\"@tui.check\"\n >\n {{ !cartItem() ? '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443' : '\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C' }}\n </button>\n </form>\n</div>\n", styles: [":host{display:block;width:100%;max-width:30rem}.slider-ticks-labels{--t-offset: calc($thumb / 2);display:flex;font:var(--tui-font-text-s);margin-inline-start:var(--t-offset);margin-inline-end:var(--t-offset);color:var(--tui-text-secondary)}.slider-ticks-labels>*{position:relative;flex:2;text-align:center}.slider-ticks-labels>*:first-child{left:calc(-1 * var(--t-offset));inset-inline-start:calc(-1 * var(--t-offset));flex:1;text-align:start}.slider-ticks-labels>*:last-child{right:calc(-1 * var(--t-offset));flex:1;text-align:end}@supports (inset-inline-end: 0){.slider-ticks-labels>*:last-child{right:unset;inset-inline-end:calc(-1 * var(--t-offset))}}tui-input-slider+.slider-ticks-labels{margin-inline-start:calc(var(--tui-radius-m) / 2 + var(--t-offset))}tui-textfield+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-m) / 2 + $thumb / 2)}tui-textfield[data-size=l]+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-l) / 2 + $thumb / 2)}tui-input-range:not([new])+.slider-ticks-labels,tui-range+.slider-ticks-labels{--t-offset: $thumb}tui-input-range[new]+.slider-ticks-labels{--t-offset: calc(map-get($track-inset, $input-size) + $thumb)}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ScNextInputFocusModule }, { kind: "directive", type: i2.ScNextInputFocusDirective, selector: "form[ScNextInputFocus]" }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels]), tui-data-list-wrapper:not([labels])[new]", inputs: ["items", "disabledItemHandler", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "component", type: TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i3.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i3.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: i4.TuiSelectDirective, selector: "input[tuiSelect]" }, { kind: "directive", type: i4.TuiInputNumberDirective, selector: "input[tuiInputNumber]", inputs: ["min", "max", "prefix", "postfix"] }, { kind: "directive", type: TuiNumberFormat, selector: "[tuiNumberFormat]", inputs: ["tuiNumberFormat"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: i5.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "directive", type: i4.TuiInputSliderDirective, selector: "input[tuiInputSlider]" }, { kind: "directive", type: ScSelectOnFocusinDirective, selector: "tui-input-number, tui-input, tui-input-phone, tui-input-date, tui-input-password, input[tuiInputNumber], input[tuiTextfield], input[tuiInputSlider]" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
282
281
|
}
|
|
283
282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSandwichComponent, decorators: [{
|
|
284
283
|
type: Component,
|
|
@@ -310,6 +309,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
310
309
|
stringify: signal((x) => x.name),
|
|
311
310
|
identityMatcher: signal((a, b) => a.id === b.id),
|
|
312
311
|
}),
|
|
313
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!cartItem() && settings()?.allowShowTable) {\n <div class=\"mb-5 flex justify-center\">\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"toggleShowEvent.emit()\"\n type=\"button\"\n iconStart=\"@tui.layout-list\"\n >\n \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0432\u0438\u0434\u0435 \u0441\u043F\u0438\u0441\u043A\u0430\n </button>\n </div>\n}\n<div class=\"\">\n @let calculateResult = calculateResult$ | async;\n @let products = products$ | async;\n @let productValue = product.value;\n @let validatorWidth = validatorWidth$ | async;\n @let validatorLength = validatorLength$ | async;\n\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit(calculateResult)\"\n ScNextInputFocus\n class=\"flex flex-col gap-3\"\n >\n <label\n tuiLabel\n class=\"grow\"\n >\n \u0422\u043E\u0432\u0430\u0440\n <tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n tuiChevron\n tuiSelect\n [formControl]=\"product\"\n placeholder=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\"\n />\n\n <tui-data-list-wrapper\n *tuiTextfieldDropdown\n new\n [items]=\"products\"\n />\n </tui-textfield>\n @if (productValue) {\n <div class=\"ml-2 text-tui-text-secondary\">\n \u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C:\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.</span>\n </div>\n }\n <tui-error\n [formControl]=\"product\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value && validatorWidth && validatorLength) {\n <p class=\"w-full font-bold\">\u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0438\u0437\u0434\u0435\u043B\u0438\u0439</p>\n <p class=\"w-full\">\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ settings()?.minWidth }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ product.value.properties?.width }} \u043C\u043C.\n <br />\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ settings()?.minLength }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ product.value.properties?.length }} \u043C\u043C.\n <br />\n </p>\n <div\n formArrayName=\"items\"\n class=\"flex flex-col gap-3\"\n >\n @for (item of items.controls; track item) {\n <div\n class=\"flex grow gap-2\"\n [formGroupName]=\"$index\"\n >\n <div class=\"grid grow grid-cols-3 gap-2\">\n <label tuiLabel>\n \u0428\u0438\u0440\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"width\"\n [min]=\"settings()?.minWidth ?? 0\"\n [max]=\"product.value.properties?.width ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0428\u0438\u0440\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.width }}</span>\n </div>\n }\n <tui-error\n formControlName=\"width\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label tuiLabel>\n \u0414\u043B\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"length\"\n [min]=\"settings()?.minLength ?? 0\"\n [max]=\"product.value.properties?.length ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0414\u043B\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.length }}</span>\n </div>\n }\n <tui-error\n formControlName=\"length\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n <span class=\"whitespace-nowrap\">\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u0448\u0442</span>\n <tui-textfield [tuiTextfieldCleaner]=\"false\">\n <input\n tuiInputNumber\n formControlName=\"quantity\"\n [min]=\"1\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\"\n autocomplete=\"off\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"quantity\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <button\n tuiIconButton\n (click)=\"removeItem($index)\"\n [disabled]=\"items.length <= 1\"\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n class=\"mt-6\"\n [style.flex]=\"'0 0 auto'\"\n ></button>\n </div>\n }\n </div>\n <button\n tuiButton\n appearance=\"secondary\"\n [disabled]=\"items.invalid\"\n (click)=\"addItem()\"\n type=\"button\"\n class=\"self-center\"\n iconStart=\"@tui.plus\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u0434\u0435\u043B\u0438\u0435\n </button>\n } @else if (product.value) {\n <tui-error error=\"\u0420\u0430\u0441\u0447\u0435\u0442 \u043F\u043E \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0443 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u0435\u043D. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u0443\" />\n }\n\n <label tuiLabel>\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"marker\"\n placeholder=\"\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\"\n autocomplete=\"marker\"\n />\n </tui-textfield>\n\n <tui-error\n formControlName=\"marker\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value) {\n <tui-loader [showLoader]=\"isCalculateLoading()\">\n @if (calculateResult) {\n <div class=\"mt-2 flex flex-wrap items-end gap-2\">\n <div>\n \u0418\u0442\u043E\u0433\u043E: <span class=\"whitespace-nowrap text-xl font-bold\">{{ getTotalCost(calculateResult).toLocaleString() }} {{ product.value.currency.symbol }}</span>\n </div>\n @if (calculateResult?.quantity && productValue) {\n <div class=\"whitespace-nowrap text-lg text-sc-dark-grey\">\n <span class=\"font-bold\">({{ calculateResult.quantity }} \u0448\u0442.</span> x\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.)</span>\n </div>\n }\n </div>\n }\n </tui-loader>\n }\n\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n\n <button\n [disabled]=\"form.invalid || !calculateResult || isCalculateLoading() || isSubmitLoading()\"\n [loading]=\"isSubmitLoading()\"\n tuiButton\n class=\"self-center\"\n iconStart=\"@tui.check\"\n >\n {{ !cartItem() ? '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443' : '\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C' }}\n </button>\n </form>\n</div>\n", styles: [":host{display:block;width:100%;max-width:30rem}.slider-ticks-labels{--t-offset: calc($thumb / 2);display:flex;font:var(--tui-font-text-s);margin-inline-start:var(--t-offset);margin-inline-end:var(--t-offset);color:var(--tui-text-secondary)}.slider-ticks-labels>*{position:relative;flex:2;text-align:center}.slider-ticks-labels>*:first-child{left:calc(-1 * var(--t-offset));inset-inline-start:calc(-1 * var(--t-offset));flex:1;text-align:start}.slider-ticks-labels>*:last-child{right:calc(-1 * var(--t-offset));flex:1;text-align:end}@supports (inset-inline-end: 0){.slider-ticks-labels>*:last-child{right:unset;inset-inline-end:calc(-1 * var(--t-offset))}}tui-input-slider+.slider-ticks-labels{margin-inline-start:calc(var(--tui-radius-m) / 2 + var(--t-offset))}tui-textfield+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-m) / 2 + $thumb / 2)}tui-textfield[data-size=l]+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-l) / 2 + $thumb / 2)}tui-input-range:not([new])+.slider-ticks-labels,tui-range+.slider-ticks-labels{--t-offset: $thumb}tui-input-range[new]+.slider-ticks-labels{--t-offset: calc(map-get($track-inset, $input-size) + $thumb)}\n"] }]
|
|
312
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!cartItem() && settings()?.allowShowTable) {\n <div class=\"mb-5 flex justify-center\">\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"toggleShowEvent.emit()\"\n type=\"button\"\n iconStart=\"@tui.layout-list\"\n >\n \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0432\u0438\u0434\u0435 \u0441\u043F\u0438\u0441\u043A\u0430\n </button>\n </div>\n}\n<div class=\"\">\n @let calculateResult = calculateResult$ | async;\n @let products = products$ | async;\n @let productValue = product.value;\n @let validatorWidth = validatorWidth$ | async;\n @let validatorLength = validatorLength$ | async;\n\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit(calculateResult)\"\n ScNextInputFocus\n class=\"flex flex-col gap-3\"\n >\n <label\n tuiLabel\n class=\"grow\"\n >\n \u0422\u043E\u0432\u0430\u0440\n <tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n tuiChevron\n tuiSelect\n [formControl]=\"product\"\n placeholder=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\"\n />\n\n <tui-data-list-wrapper\n *tuiTextfieldDropdown\n new\n [items]=\"products\"\n />\n </tui-textfield>\n @if (productValue) {\n <div class=\"ml-2 text-tui-text-secondary\">\n \u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C:\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.</span>\n </div>\n }\n <tui-error\n [formControl]=\"product\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value && validatorWidth && validatorLength) {\n <p class=\"w-full font-bold\">\u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0438\u0437\u0434\u0435\u043B\u0438\u0439</p>\n <p class=\"w-full\">\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ settings()?.minWidth }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{ product.value.properties?.width }} \u043C\u043C.\n <br />\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ settings()?.minLength }} \u043C\u043C.\n <br />\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430: {{ product.value.properties?.length }} \u043C\u043C.\n <br />\n </p>\n <div\n formArrayName=\"items\"\n class=\"flex flex-col gap-3\"\n >\n @for (item of items.controls; track item) {\n <div\n class=\"flex grow gap-2\"\n [formGroupName]=\"$index\"\n >\n <div class=\"grid grow grid-cols-3 gap-2\">\n <label tuiLabel>\n \u0428\u0438\u0440\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"width\"\n [min]=\"settings()?.minWidth ?? 0\"\n [max]=\"product.value.properties?.width ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0428\u0438\u0440\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.width }}</span>\n </div>\n }\n <tui-error\n formControlName=\"width\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label tuiLabel>\n \u0414\u043B\u0438\u043D\u0430, \u043C\u043C\n <tui-textfield>\n <input\n tuiInputSlider\n formControlName=\"length\"\n [min]=\"settings()?.minLength ?? 0\"\n [max]=\"product.value.properties?.length ?? 0\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u0414\u043B\u0438\u043D\u0430\"\n autocomplete=\"off\"\n />\n @if (product.value) {\n <input\n tuiSlider\n type=\"range\"\n />\n }\n </tui-textfield>\n @if (product.value) {\n <div class=\"slider-ticks-labels\">\n <span> 0 </span>\n <span>{{ product.value.properties?.length }}</span>\n </div>\n }\n <tui-error\n formControlName=\"length\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n <span class=\"whitespace-nowrap\">\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u0448\u0442</span>\n <tui-textfield [tuiTextfieldCleaner]=\"false\">\n <input\n tuiInputNumber\n formControlName=\"count\"\n [min]=\"1\"\n [tuiNumberFormat]=\"{ precision: 0 }\"\n placeholder=\"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\"\n autocomplete=\"off\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"count\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <button\n tuiIconButton\n (click)=\"removeItem($index)\"\n [disabled]=\"items.length <= 1\"\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n class=\"mt-6\"\n [style.flex]=\"'0 0 auto'\"\n ></button>\n </div>\n }\n </div>\n <button\n tuiButton\n appearance=\"secondary\"\n [disabled]=\"items.invalid\"\n (click)=\"addItem()\"\n type=\"button\"\n class=\"self-center\"\n iconStart=\"@tui.plus\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u0434\u0435\u043B\u0438\u0435\n </button>\n } @else if (product.value) {\n <tui-error error=\"\u0420\u0430\u0441\u0447\u0435\u0442 \u043F\u043E \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0443 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u0435\u043D. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u0443\" />\n }\n\n <label tuiLabel>\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"marker\"\n placeholder=\"\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0441\u043F\u0438\u043B\u0430\"\n autocomplete=\"marker\"\n />\n </tui-textfield>\n\n <tui-error\n formControlName=\"marker\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (product.value) {\n <tui-loader [showLoader]=\"isCalculateLoading()\">\n @if (calculateResult) {\n <div class=\"mt-2 flex flex-wrap items-end gap-2\">\n <div>\n \u0418\u0442\u043E\u0433\u043E: <span class=\"whitespace-nowrap text-xl font-bold\">{{ getTotalCost(calculateResult).toLocaleString() }} {{ product.value.currency.symbol }}</span>\n </div>\n @if (calculateResult?.quantity && productValue) {\n <div class=\"whitespace-nowrap text-lg text-sc-dark-grey\">\n <span class=\"font-bold\">({{ calculateResult.quantity }} \u0448\u0442.</span> x\n <span class=\"font-bold\">{{ productValue.costRub?.toLocaleString() }} {{ productValue.currency.symbol }}/\u0448\u0442.)</span>\n </div>\n }\n </div>\n }\n </tui-loader>\n }\n\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n\n <button\n [disabled]=\"form.invalid || !calculateResult || isCalculateLoading() || isSubmitLoading()\"\n [loading]=\"isSubmitLoading()\"\n tuiButton\n class=\"self-center\"\n iconStart=\"@tui.check\"\n >\n {{ !cartItem() ? '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443' : '\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C' }}\n </button>\n </form>\n</div>\n", styles: [":host{display:block;width:100%;max-width:30rem}.slider-ticks-labels{--t-offset: calc($thumb / 2);display:flex;font:var(--tui-font-text-s);margin-inline-start:var(--t-offset);margin-inline-end:var(--t-offset);color:var(--tui-text-secondary)}.slider-ticks-labels>*{position:relative;flex:2;text-align:center}.slider-ticks-labels>*:first-child{left:calc(-1 * var(--t-offset));inset-inline-start:calc(-1 * var(--t-offset));flex:1;text-align:start}.slider-ticks-labels>*:last-child{right:calc(-1 * var(--t-offset));flex:1;text-align:end}@supports (inset-inline-end: 0){.slider-ticks-labels>*:last-child{right:unset;inset-inline-end:calc(-1 * var(--t-offset))}}tui-input-slider+.slider-ticks-labels{margin-inline-start:calc(var(--tui-radius-m) / 2 + var(--t-offset))}tui-textfield+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-m) / 2 + $thumb / 2)}tui-textfield[data-size=l]+.slider-ticks-labels{--t-offset: calc(var(--tui-radius-l) / 2 + $thumb / 2)}tui-input-range:not([new])+.slider-ticks-labels,tui-range+.slider-ticks-labels{--t-offset: $thumb}tui-input-range[new]+.slider-ticks-labels{--t-offset: calc(map-get($track-inset, $input-size) + $thumb)}\n"] }]
|
|
314
313
|
}] });
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2FuZHdpY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbmZpZ3VyYXRvcnMvc2FuZHdpY2gvc2Mtc2FuZHdpY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbmZpZ3VyYXRvcnMvc2FuZHdpY2gvc2Mtc2FuZHdpY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlILE9BQU8sRUFJSCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixtQkFBbUIsR0FLdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5SyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hC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YUFBYSxXQUdkO3dCQUNMLFNBQVM7d0JBQ1QsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUiwyQkFBMkI7d0JBQzNCLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsU0FBUzt3QkFDVCxnQkFBZ0I7cUJBQ25CLGFBQ1U7d0JBQ1AsdUJBQXVCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQ3pDLDZCQUE2QixDQUFDOzRCQUMxQixHQUFHLEVBQUUsQ0FBQzt5QkFDVCxDQUFDO3dCQUNGLHdCQUF3QixDQUFDOzRCQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOzRCQUMzQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUN6RSxDQUFDO3FCQUNMLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJU2FuZHdpY2hDYWxjdWxhdGUsXG4gICAgSVNhbmR3aWNoQ2FsY3VsYXRlSXRlbSxcbiAgICBTY0NhcnQsXG4gICAgU2NDYXJ0U2VydmljZSxcbiAgICBTY0NhdGFsb2dTZXJ2aWNlLFxuICAgIFNjQ29uZmlndXJhdG9yU2VydmljZSxcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjSUFwaUVycm9yUmVzcG9uc2UsXG4gICAgU2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0LFxuICAgIFNjT3JkZXJJdGVtLFxuICAgIFNjUHJvZHVjdCxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlDb250cm9sVmFsdWUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRGlhbG9nQ29udGV4dCwgVHVpRXJyb3IsIHR1aUl0ZW1zSGFuZGxlcnNQcm92aWRlciwgVHVpTGFiZWwsIFR1aUxvYWRlciwgVHVpTnVtYmVyRm9ybWF0LCB0dWlOdW1iZXJGb3JtYXRQcm92aWRlciwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIFR1aUNoZXZyb24sXG4gICAgVHVpRGF0YUxpc3RXcmFwcGVyQ29tcG9uZW50LFxuICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgIFR1aUlucHV0TnVtYmVyLFxuICAgIHR1aUlucHV0TnVtYmVyT3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aUlucHV0U2xpZGVyLFxuICAgIFR1aVNlbGVjdCxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY05leHRJbnB1dEZvY3VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMubW9kdWxlJztcbmltcG9ydCB7IFNjU2VsZWN0T25Gb2N1c2luRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zZWxlY3Qtb24tZm9jdXNpbi9zYy1zZWxlY3Qtb24tZm9jdXNpbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU0NfREVCT1VOQ0VfVElNRV9ERUZBVUxUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzJztcbmltcG9ydCB7IHN0ZXBWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3N0ZXAtdmFsaWRhdG9yJztcbmltcG9ydCB7IFNjSVNhbmR3aWNoU2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2FuZHdpY2gvc2MtaS1zYW5kd2ljaC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBTY0lOZXdDYXJ0SXRlbVNhbmR3aWNoIH0gZnJvbSAnLi9zYy1pLW5ldy1jYXJ0LWl0ZW0tc2FuZHdpY2gnO1xuXG4vKipcbiAqINCa0L7QvdGE0LjQs9GD0YDQsNGC0L7RgCDRgNCw0YHQv9C40LvQsCDRgdGN0L3QtNCy0LjRhy3Qv9Cw0L3QtdC70LXQuS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXNhbmR3aWNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2FuZHdpY2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1zYW5kd2ljaC5jb21wb25lbnQuc2NzcycsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBTY05leHRJbnB1dEZvY3VzTW9kdWxlLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpRGF0YUxpc3RXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlDaGV2cm9uLFxuICAgICAgICBUdWlTZWxlY3QsXG4gICAgICAgIFR1aUlucHV0TnVtYmVyLFxuICAgICAgICBUdWlOdW1iZXJGb3JtYXQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFR1aUlucHV0U2xpZGVyLFxuICAgICAgICBTY1NlbGVjdE9uRm9jdXNpbkRpcmVjdGl2ZSxcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aU51bWJlckZvcm1hdFByb3ZpZGVyKHsgcHJlY2lzaW9uOiAwIH0pLFxuICAgICAgICB0dWlJbnB1dE51bWJlck9wdGlvbnNQcm92aWRlcih7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgIH0pLFxuICAgICAgICB0dWlJdGVtc0hhbmRsZXJzUHJvdmlkZXIoe1xuICAgICAgICAgICAgc3RyaW5naWZ5OiBzaWduYWwoKHg6IFNjUHJvZHVjdCkgPT4geC5uYW1lKSxcbiAgICAgICAgICAgIGlkZW50aXR5TWF0Y2hlcjogc2lnbmFsKChhOiBTY1Byb2R1Y3QsIGI6IFNjUHJvZHVjdCkgPT4gYS5pZCA9PT0gYi5pZCksXG4gICAgICAgIH0pLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2FuZHdpY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVGltZURlZmF1bHQ6IG51bWJlciA9IGluamVjdDxudW1iZXI+KFNDX0RFQk9VTkNFX1RJTUVfREVGQVVMVCk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0YHRgtGA0L7QudC60Lgg0LTQu9GPINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINGB0Y3QvdC00LLQuNGHLdC/0LDQvdC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZXR0aW5ncyA9IGlucHV0PFNjSVNhbmR3aWNoU2V0dGluZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5SWQgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjRjyDRgtC+0LLQsNGA0LAv0YPRgdC70YPQs9C4INCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjYXJ0SXRlbSA9IGlucHV0LnJlcXVpcmVkPFNjT3JkZXJJdGVtIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L/QtdGA0LXQutC70Y7Rh9C10L3QuNGPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvZ2dsZVNob3dFdmVudCA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC+0LHQsNCy0LvQtdC90LjRjy/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC/0YDQvtC00YPQutGC0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgcHJvZHVjdENhdGVnb3J5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCB7IHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQsIG5vbk51bGxhYmxlOiBmYWxzZSB9KSxcbiAgICAgICAgY29uZmlndXJhdG9yOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLCBub25OdWxsYWJsZTogZmFsc2UgfSksXG4gICAgICAgIHF1YW50aXR5OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgc3RlcFZhbGlkYXRvcigxKV0sIG5vbk51bGxhYmxlOiBmYWxzZSB9KSxcbiAgICAgICAgbWFya2VyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgaXRlbXM6IG5ldyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY1NhbmR3aWNoQ29tcG9uZW50WydjcmVhdGVJdGVtR3JvdXAnXT4+KFtdKSxcbiAgICAgICAgY2FsY3VsYXRpb25JZDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIHsgbm9uTnVsbGFibGU6IGZhbHNlIH0pLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBTY0NhcnRTZXJ2aWNlID0gaW5qZWN0KFNjQ2FydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0IHwgdW5kZWZpbmVkID0gaW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhULCB7IG9wdGlvbmFsOiB0cnVlIH0pIGFzIFR1aURpYWxvZ0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCw0LzQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvclNlcnZpY2U6IFNjQ29uZmlndXJhdG9yU2VydmljZSA9IGluamVjdChTY0NvbmZpZ3VyYXRvclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT4gPSB0b09ic2VydmFibGUodGhpcy5jYXRlZ29yeUlkKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGNhdGVnb3J5SWQpID0+IHtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnlJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzQ2F0ZWdvcnlDYWNoZWQkKHsgY2F0ZWdvcnlJZDogTnVtYmVyKGNhdGVnb3J5SWQpIH0pLnBpcGUobWFwKChwcm9kdWN0cykgPT4gcHJvZHVjdHMgPz8gW10pKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JLRi9Cx0YDQsNC90L3Ri9C5INC/0YDQvtC00YPQutGCICjQvNCw0YLQtdGA0LjQsNC7INC00LvRjyDRgNCw0YHQutGA0L7RjykuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2R1Y3QgPSBuZXcgRm9ybUNvbnRyb2w8U2NQcm9kdWN0IHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGA0LDRgdGH0LXRgtCwINC+0L/RgtC40LzQuNC30LDRhtC40Lgg0YDQsNGB0LrQu9Cw0LTQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FsY3VsYXRlJDogT2JzZXJ2YWJsZTxTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkPiA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBwcm9kdWN0SWQ6IHR1aUNvbnRyb2xWYWx1ZTxTY1Byb2R1Y3QgfCBudWxsPih0aGlzLnByb2R1Y3QpLnBpcGUobWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0Py5pZCA/PyBudWxsKSksXG4gICAgICAgIGl0ZW1zOiB0dWlDb250cm9sVmFsdWU8SVNhbmR3aWNoQ2FsY3VsYXRlSXRlbVtdPih0aGlzLml0ZW1zKSxcbiAgICB9KS5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVEZWZhdWx0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHByb2R1Y3RJZCwgaXRlbXMgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2R1Y3RJZCA9PT0gbnVsbCB8fCBpdGVtcy5sZW5ndGggPT09IDAgfHwgdGhpcy5mb3JtLmNvbnRyb2xzLml0ZW1zLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0b3JTZXJ2aWNlLmNhbGN1bGF0ZSQodGhpcy5jYXRlZ29yeUlkKCksIHRoaXMuZWRpdG9yKCksIHsgcHJvZHVjdElkLCBpdGVtcyB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoY2FsY3VsYXRlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3F1YW50aXR5Jyk/LnNldFZhbHVlKGNhbGN1bGF0ZVJlc3VsdC5xdWFudGl0eSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0L7Qv9GC0LjQvNC40LfQsNGG0LjQuCDRgNCw0YHQutC70LDQtNC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGN1bGF0ZVJlc3VsdCQ6IE9ic2VydmFibGU8U2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0IHwgdW5kZWZpbmVkPiA9IHRoaXMuY2FsY3VsYXRlJC5waXBlKGZpbHRlcigoZGF0YSkgPT4gZGF0YSAhPT0gbnVsbCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INGA0LDRgdGH0LXRgtCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0NhbGN1bGF0ZUxvYWRpbmcgPSB0b1NpZ25hbCh0aGlzLmNhbGN1bGF0ZSQucGlwZShtYXAoKGRhdGEpID0+IGRhdGEgPT09IG51bGwpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGAINC00LvRjyDRiNC40YDQuNC90Ysg0LjQt9C00LXQu9C40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbGlkYXRvcldpZHRoJDogT2JzZXJ2YWJsZTxWYWxpZGF0b3JGbiB8IG51bGw+ID0gdHVpQ29udHJvbFZhbHVlPFNjUHJvZHVjdCB8IG51bGw+KHRoaXMucHJvZHVjdCkucGlwZShcbiAgICAgICAgbWFwKChwcm9kdWN0KSA9PiBWYWxpZGF0b3JzLm1pbihwcm9kdWN0Py5wcm9wZXJ0aWVzPy53aWR0aCA/PyAwKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGAINC00LvRjyDQtNC70LjQvdGLINC40LfQtNC10LvQuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2YWxpZGF0b3JMZW5ndGgkOiBPYnNlcnZhYmxlPFZhbGlkYXRvckZuIHwgbnVsbD4gPSB0dWlDb250cm9sVmFsdWU8U2NQcm9kdWN0IHwgbnVsbD4odGhpcy5wcm9kdWN0KS5waXBlKFxuICAgICAgICBtYXAoKHByb2R1Y3QpID0+IFZhbGlkYXRvcnMubWluKHByb2R1Y3Q/LnByb3BlcnRpZXM/Lmxlbmd0aCA/PyAwKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC30LDQv9GA0L7RgSDQvdCwINC+0YLQv9GA0LDQstC60YMg0LTQsNC90L3Ri9GFINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3VibWl0TG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdGB0LjQsiDQuNC30LTQtdC70LjQuS5cbiAgICAgKi9cbiAgICBnZXQgaXRlbXMoKTogRm9ybUFycmF5PFJldHVyblR5cGU8U2NTYW5kd2ljaENvbXBvbmVudFsnY3JlYXRlSXRlbUdyb3VwJ10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtVmFsdWUoKTtcblxuICAgICAgICB0aGlzLnByb2R1Y3QudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmNvbnRyb2xzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9kdWN0LnByb3BlcnRpZXM/LndpZHRoICYmIHZhbHVlLndpZHRoIDwgcHJvZHVjdC5wcm9wZXJ0aWVzLndpZHRoKSB8fCAocHJvZHVjdC5wcm9wZXJ0aWVzPy5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgcHJvZHVjdC5wcm9wZXJ0aWVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IE1hdGgubWluKHZhbHVlLndpZHRoLCBwcm9kdWN0LnByb3BlcnRpZXMud2lkdGggPz8gdmFsdWUud2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogTWF0aC5taW4odmFsdWUubGVuZ3RoLCBwcm9kdWN0LnByb3BlcnRpZXMubGVuZ3RoID8/IHZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQs9GA0YPQv9C/0YMg0LTQu9GPINC40LfQtNC10LvQuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0J/QsNGA0LDQvNC10YLRgNGLINC40LfQtNC10LvQuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlSXRlbUdyb3VwKGl0ZW0/OiBJU2FuZHdpY2hDYWxjdWxhdGVJdGVtKTogRm9ybUdyb3VwPHtcbiAgICAgICAgd2lkdGg6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIGxlbmd0aDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcbiAgICAgICAgcXVhbnRpdHk6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICB3aWR0aDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oaXRlbT8ud2lkdGggPz8gMCwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbih0aGlzLnNldHRpbmdzKCk/Lm1pbldpZHRoID8/IDAuMDEpXSxcbiAgICAgICAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbGVuZ3RoOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihpdGVtPy5sZW5ndGggPz8gMCwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbih0aGlzLnNldHRpbmdzKCk/Lm1pbkxlbmd0aCA/PyAwLjAxKV0sXG4gICAgICAgICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHF1YW50aXR5OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihpdGVtPy5xdWFudGl0eSA/PyAxLCB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXSxcbiAgICAgICAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0L3QvtCy0L7QtSDQuNC30LTQtdC70LjQtSDQsiDRhNC+0YDQvNGDLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5jcmVhdGVJdGVtR3JvdXAoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LjQt9C00LXQu9C40LUg0LjQtyDRhNC+0YDQvNGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4INCY0L3QtNC10LrRgSDQuNC30LTQtdC70LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlSXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40YLQvtCz0L7QstGD0Y4g0YHRgtC+0LjQvNC+0YHRgtGMLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhbGN1bGF0ZVJlc3VsdCDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0L7Qv9GC0LjQvNC40LfQsNGG0LjQuCDRgNCw0YHQutC70LDQtNC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFRvdGFsQ29zdChjYWxjdWxhdGVSZXN1bHQ6IFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5wcm9kdWN0LnZhbHVlPy5jb3N0UnViKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1YW50aXR5ID0gdGhpcy5mb3JtLmdldCgncXVhbnRpdHknKT8udmFsdWUgPz8gMTtcbiAgICAgICAgY29uc3QgdG90YWxDb3N0ID0gY2FsY3VsYXRlUmVzdWx0LnF1YW50aXR5ICogdGhpcy5wcm9kdWN0LnZhbHVlLmNvc3RSdWIgKiBxdWFudGl0eTtcblxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0b3RhbENvc3QgKiAxMDApIC8gMTAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INC00L7QsdCw0LLQu9C10L3QuNGPL9GA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0L/RgNC+0LTRg9C60YLQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxjdWxhdGVSZXN1bHQg0KDQtdC30YPQu9GM0YLQsNGCINGA0LDRgdGH0LXRgtCwINC+0L/RgtC40LzQuNC30LDRhtC40Lgg0YDQsNGB0LrQu9Cw0LTQutC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN1Ym1pdChjYWxjdWxhdGVSZXN1bHQ6IFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdCB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjYWxjdWxhdGVSZXN1bHQgfHwgdGhpcy5mb3JtLmludmFsaWQgfHwgdGhpcy5pc0NhbGN1bGF0ZUxvYWRpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0geyAuLi50aGlzLmZvcm0udmFsdWUsIHByb2R1Y3RJZDogdGhpcy5wcm9kdWN0LnZhbHVlPy5pZCA/PyBudWxsLCBjYWxjdWxhdGlvbklkOiBjYWxjdWxhdGVSZXN1bHQuaWQgfTtcbiAgICAgICAgLy8g0KPQtNCw0LvRj9C10LwgaXRlbXMsINGC0LDQuiDQutCw0Log0L7QvdC4INC90LUg0L3Rg9C20L3RiyDQsiB7QGxpbmsgU2NJTmV3Q2FydEl0ZW1TYW5kd2ljaH0uXG4gICAgICAgIGRlbGV0ZSBmb3JtVmFsdWUuaXRlbXM7XG4gICAgICAgIGNvbnN0IG9yZGVySXRlbSA9IHRoaXMuY2FydEl0ZW0oKTtcblxuICAgICAgICBjb25zdCBuZXdDYXJ0SXRlbSQ6IE9ic2VydmFibGU8U2NDYXJ0PiA9IG9yZGVySXRlbVxuICAgICAgICAgICAgPyB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZVByb2R1Y3QkKG9yZGVySXRlbS5pZCwgdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsKGZvcm1WYWx1ZSkgYXMgU2NJTmV3Q2FydEl0ZW1TYW5kd2ljaClcbiAgICAgICAgICAgIDogdGhpcy5jYXJ0U2VydmljZS5hZGRQcm9kdWN0JCh0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGwoZm9ybVZhbHVlKSBhcyBTY0lOZXdDYXJ0SXRlbVNhbmR3aWNoKTtcblxuICAgICAgICB0aGlzLmlzU3VibWl0TG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICAgICAgbmV3Q2FydEl0ZW0kXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgbWVzc2FnZSB9ID0gZXJyb3IuZXJyb3IgYXMgU2NJQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW21lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdExvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC90LDRh9Cw0LvRjNC90YvQtSDQt9C90LDRh9C10L3QuNGPINC00LvRjyDQv9C+0LvQtdC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Rm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoe1xuICAgICAgICAgICAgcHJvZHVjdENhdGVnb3J5SWQ6IE51bWJlcih0aGlzLmNhdGVnb3J5SWQoKSksXG4gICAgICAgICAgICBjb25maWd1cmF0b3I6IHRoaXMuZWRpdG9yKCksXG4gICAgICAgICAgICBxdWFudGl0eTogdGhpcy5jYXJ0SXRlbSgpPy5xdWFudGl0eSA/PyBudWxsLFxuICAgICAgICAgICAgbWFya2VyOiB0aGlzLmNhcnRJdGVtKCk/Lm1hcmtlciA/PyAnJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMucHJvZHVjdC5yZXNldCh0aGlzLmNhcnRJdGVtKCk/LnByb2R1Y3QgPz8gbnVsbCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlndXJhdG9yUGFyYW1ldGVycyA9IHRoaXMuY2FydEl0ZW0oKT8uY29uZmlndXJhdG9yUGFyYW1zIGFzIElTYW5kd2ljaENhbGN1bGF0ZSB8IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25maWd1cmF0b3JQYXJhbWV0ZXJzPy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5jcmVhdGVJdGVtR3JvdXAoeyB3aWR0aDogaXRlbS53aWR0aCwgbGVuZ3RoOiBpdGVtLmxlbmd0aCwgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWNvbmZpZ3VyYXRvclBhcmFtZXRlcnM/Lml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hZGRJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKCFjYXJ0SXRlbSgpICYmIHNldHRpbmdzKCk/LmFsbG93U2hvd1RhYmxlKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1iLTUgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLmxheW91dC1saXN0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J/QvtC60LDQt9Cw0YLRjCDQsiDQstC40LTQtSDRgdC/0LjRgdC60LBcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG59XG48ZGl2IGNsYXNzPVwiXCI+XG4gICAgQGxldCBjYWxjdWxhdGVSZXN1bHQgPSBjYWxjdWxhdGVSZXN1bHQkIHwgYXN5bmM7XG4gICAgQGxldCBwcm9kdWN0cyA9IHByb2R1Y3RzJCB8IGFzeW5jO1xuICAgIEBsZXQgcHJvZHVjdFZhbHVlID0gcHJvZHVjdC52YWx1ZTtcbiAgICBAbGV0IHZhbGlkYXRvcldpZHRoID0gdmFsaWRhdG9yV2lkdGgkIHwgYXN5bmM7XG4gICAgQGxldCB2YWxpZGF0b3JMZW5ndGggPSB2YWxpZGF0b3JMZW5ndGgkIHwgYXN5bmM7XG5cbiAgICA8Zm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAobmdTdWJtaXQpPVwib25TdWJtaXQoY2FsY3VsYXRlUmVzdWx0KVwiXG4gICAgICAgIFNjTmV4dElucHV0Rm9jdXNcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgdHVpTGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiZ3Jvd1wiXG4gICAgICAgID5cbiAgICAgICAgICAgINCi0L7QstCw0YBcbiAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgdHVpQ2hldnJvblxuICAgICAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRDbGVhbmVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHVpQ2hldnJvblxuICAgICAgICAgICAgICAgICAgICB0dWlTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb2R1Y3RcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCS0YvQsdC10YDQuNGC0LUg0LzQsNGC0LXRgNC40LDQu1wiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDx0dWktZGF0YS1saXN0LXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgKnR1aVRleHRmaWVsZERyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwicHJvZHVjdHNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICBAaWYgKHByb2R1Y3RWYWx1ZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yIHRleHQtdHVpLXRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgINCh0YLQvtC40LzQvtGB0YLRjDpcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0VmFsdWUuY29zdFJ1Yj8udG9Mb2NhbGVTdHJpbmcoKSB9fSB7eyBwcm9kdWN0VmFsdWUuY3VycmVuY3kuc3ltYm9sIH19L9GI0YIuPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9kdWN0XCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUgJiYgdmFsaWRhdG9yV2lkdGggJiYgdmFsaWRhdG9yTGVuZ3RoKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInctZnVsbCBmb250LWJvbGRcIj7QoNCw0LfQvNC10YDRiyDQuNC30LTQtdC70LjQuTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAg0JzQuNC90LjQvNCw0LvRjNC90LDRjyDRiNC40YDQuNC90LA6IHt7IHNldHRpbmdzKCk/Lm1pbldpZHRoIH19INC80LwuXG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAg0JzQsNC60YHQuNC80LDQu9GM0L3QsNGPINGI0LjRgNC40L3QsDoge3sgcHJvZHVjdC52YWx1ZS5wcm9wZXJ0aWVzPy53aWR0aCB9fSDQvNC8LlxuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgINCc0LjQvdC40LzQsNC70YzQvdCw0Y8g0LTQu9C40L3QsDoge3sgc2V0dGluZ3MoKT8ubWluTGVuZ3RoIH19INC80LwuXG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAg0JzQsNC60YHQuNC80LDQu9GM0L3QsNGPINC00LvQuNC90LA6IHt7IHByb2R1Y3QudmFsdWUucHJvcGVydGllcz8ubGVuZ3RoIH19INC80LwuXG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZm9ybUFycmF5TmFtZT1cIml0ZW1zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMuY29udHJvbHM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGdyb3cgZ2FwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JvdyBncmlkLWNvbHMtMyBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KjQuNGA0LjQvdCwLCDQvNC8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSW5wdXRTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJzZXR0aW5ncygpPy5taW5XaWR0aCA/PyAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInByb2R1Y3QudmFsdWUucHJvcGVydGllcz8ud2lkdGggPz8gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aU51bWJlckZvcm1hdF09XCJ7IHByZWNpc2lvbjogMCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCo0LjRgNC40L3QsFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpU2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdGlja3MtbGFiZWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2R1Y3QudmFsdWUucHJvcGVydGllcz8ud2lkdGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCU0LvQuNC90LAsINC80LxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dFNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJzZXR0aW5ncygpPy5taW5MZW5ndGggPz8gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJwcm9kdWN0LnZhbHVlLnByb3BlcnRpZXM/Lmxlbmd0aCA/PyAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpTnVtYmVyRm9ybWF0XT1cInsgcHJlY2lzaW9uOiAwIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JTQu9C40L3QsFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpU2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdGlja3MtbGFiZWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2R1Y3QudmFsdWUucHJvcGVydGllcz8ubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXBcIj7QmtC+0LvQuNGH0LXRgdGC0LLQviwg0YjRgjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGQgW3R1aVRleHRmaWVsZENsZWFuZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUlucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aU51bWJlckZvcm1hdF09XCJ7IHByZWNpc2lvbjogMCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCa0L7Qu9C40YfQtdGB0YLQstC+XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW1zLmxlbmd0aCA8PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4XT1cIicwIDAgYXV0bydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbXMuaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW0oKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5wbHVzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQlNC+0LHQsNCy0LjRgtGMINC40LfQtNC10LvQuNC1XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfSBAZWxzZSBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgPHR1aS1lcnJvciBlcnJvcj1cItCg0LDRgdGH0LXRgiDQv9C+INC/0YDQvtC00YPQutGC0YMg0L3QtdCy0L7Qt9C80L7QttC10L0uINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INC80LXQvdC10LTQttC10YDRg1wiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQnNCw0YDQutC40YDQvtCy0LrQsCDRgNCw0YHQv9C40LvQsFxuICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXJrZXJcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCc0LDRgNC60LjRgNC+0LLQutCwINGA0LDRgdC/0LjQu9CwXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibWFya2VyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuXG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFya2VyXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICBAaWYgKHByb2R1Y3QudmFsdWUpIHtcbiAgICAgICAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cImlzQ2FsY3VsYXRlTG9hZGluZygpXCI+XG4gICAgICAgICAgICAgICAgQGlmIChjYWxjdWxhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtZW5kIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgINCY0YLQvtCz0L46IDxzcGFuIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgdGV4dC14bCBmb250LWJvbGRcIj57eyBnZXRUb3RhbENvc3QoY2FsY3VsYXRlUmVzdWx0KS50b0xvY2FsZVN0cmluZygpIH19IHt7IHByb2R1Y3QudmFsdWUuY3VycmVuY3kuc3ltYm9sIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhbGN1bGF0ZVJlc3VsdD8ucXVhbnRpdHkgJiYgcHJvZHVjdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHRleHQtbGcgdGV4dC1zYy1kYXJrLWdyZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj4oe3sgY2FsY3VsYXRlUmVzdWx0LnF1YW50aXR5IH19INGI0YIuPC9zcGFuPiB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgcHJvZHVjdFZhbHVlLmNvc3RSdWI/LnRvTG9jYWxlU3RyaW5nKCkgfX0ge3sgcHJvZHVjdFZhbHVlLmN1cnJlbmN5LnN5bWJvbCB9fS/RiNGCLik8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDx0dWktZXJyb3IgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCIgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8ICFjYWxjdWxhdGVSZXN1bHQgfHwgaXNDYWxjdWxhdGVMb2FkaW5nKCkgfHwgaXNTdWJtaXRMb2FkaW5nKClcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNTdWJtaXRMb2FkaW5nKClcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hlY2tcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAhY2FydEl0ZW0oKSA/ICfQlNC+0LHQsNCy0LjRgtGMINCyINC60L7RgNC30LjQvdGDJyA6ICfQmNC30LzQtdC90LjRgtGMJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2FuZHdpY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbmZpZ3VyYXRvcnMvc2FuZHdpY2gvc2Mtc2FuZHdpY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbmZpZ3VyYXRvcnMvc2FuZHdpY2gvc2Mtc2FuZHdpY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlILE9BQU8sRUFJSCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixtQkFBbUIsR0FLdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5SyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hC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d0JBQ1IsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsU0FBUzt3QkFDVCxnQkFBZ0I7cUJBQ25CLGFBQ1U7d0JBQ1AsdUJBQXVCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQ3pDLDZCQUE2QixDQUFDOzRCQUMxQixHQUFHLEVBQUUsQ0FBQzt5QkFDVCxDQUFDO3dCQUNGLHdCQUF3QixDQUFDOzRCQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOzRCQUMzQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUN6RSxDQUFDO3FCQUNMLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJU2FuZHdpY2hDYWxjdWxhdGUsXG4gICAgSVNhbmR3aWNoQ2FsY3VsYXRlSXRlbSxcbiAgICBTY0NhcnQsXG4gICAgU2NDYXJ0U2VydmljZSxcbiAgICBTY0NhdGFsb2dTZXJ2aWNlLFxuICAgIFNjQ29uZmlndXJhdG9yU2VydmljZSxcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjSUFwaUVycm9yUmVzcG9uc2UsXG4gICAgU2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0LFxuICAgIFNjT3JkZXJJdGVtLFxuICAgIFNjUHJvZHVjdCxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlDb250cm9sVmFsdWUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRGlhbG9nQ29udGV4dCwgVHVpRXJyb3IsIHR1aUl0ZW1zSGFuZGxlcnNQcm92aWRlciwgVHVpTGFiZWwsIFR1aUxvYWRlciwgVHVpTnVtYmVyRm9ybWF0LCB0dWlOdW1iZXJGb3JtYXRQcm92aWRlciwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIFR1aUNoZXZyb24sXG4gICAgVHVpRGF0YUxpc3RXcmFwcGVyQ29tcG9uZW50LFxuICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgIFR1aUlucHV0TnVtYmVyLFxuICAgIHR1aUlucHV0TnVtYmVyT3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aUlucHV0U2xpZGVyLFxuICAgIFR1aVNlbGVjdCxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY05leHRJbnB1dEZvY3VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMubW9kdWxlJztcbmltcG9ydCB7IFNjU2VsZWN0T25Gb2N1c2luRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zZWxlY3Qtb24tZm9jdXNpbi9zYy1zZWxlY3Qtb24tZm9jdXNpbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU0NfREVCT1VOQ0VfVElNRV9ERUZBVUxUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzJztcbmltcG9ydCB7IHN0ZXBWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3N0ZXAtdmFsaWRhdG9yJztcbmltcG9ydCB7IFNjSVNhbmR3aWNoU2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2FuZHdpY2gvc2MtaS1zYW5kd2ljaC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBTY0lOZXdDYXJ0SXRlbVNhbmR3aWNoIH0gZnJvbSAnLi9zYy1pLW5ldy1jYXJ0LWl0ZW0tc2FuZHdpY2gnO1xuXG4vKipcbiAqINCa0L7QvdGE0LjQs9GD0YDQsNGC0L7RgCDRgNCw0YHQv9C40LvQsCDRgdGN0L3QtNCy0LjRhy3Qv9Cw0L3QtdC70LXQuS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXNhbmR3aWNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2FuZHdpY2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1zYW5kd2ljaC5jb21wb25lbnQuc2NzcycsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBTY05leHRJbnB1dEZvY3VzTW9kdWxlLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpRGF0YUxpc3RXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlDaGV2cm9uLFxuICAgICAgICBUdWlTZWxlY3QsXG4gICAgICAgIFR1aUlucHV0TnVtYmVyLFxuICAgICAgICBUdWlOdW1iZXJGb3JtYXQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFR1aUlucHV0U2xpZGVyLFxuICAgICAgICBTY1NlbGVjdE9uRm9jdXNpbkRpcmVjdGl2ZSxcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aU51bWJlckZvcm1hdFByb3ZpZGVyKHsgcHJlY2lzaW9uOiAwIH0pLFxuICAgICAgICB0dWlJbnB1dE51bWJlck9wdGlvbnNQcm92aWRlcih7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgIH0pLFxuICAgICAgICB0dWlJdGVtc0hhbmRsZXJzUHJvdmlkZXIoe1xuICAgICAgICAgICAgc3RyaW5naWZ5OiBzaWduYWwoKHg6IFNjUHJvZHVjdCkgPT4geC5uYW1lKSxcbiAgICAgICAgICAgIGlkZW50aXR5TWF0Y2hlcjogc2lnbmFsKChhOiBTY1Byb2R1Y3QsIGI6IFNjUHJvZHVjdCkgPT4gYS5pZCA9PT0gYi5pZCksXG4gICAgICAgIH0pLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2FuZHdpY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVGltZURlZmF1bHQ6IG51bWJlciA9IGluamVjdDxudW1iZXI+KFNDX0RFQk9VTkNFX1RJTUVfREVGQVVMVCk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0YHRgtGA0L7QudC60Lgg0LTQu9GPINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINGB0Y3QvdC00LLQuNGHLdC/0LDQvdC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZXR0aW5ncyA9IGlucHV0PFNjSVNhbmR3aWNoU2V0dGluZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5SWQgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjRjyDRgtC+0LLQsNGA0LAv0YPRgdC70YPQs9C4INCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjYXJ0SXRlbSA9IGlucHV0LnJlcXVpcmVkPFNjT3JkZXJJdGVtIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L/QtdGA0LXQutC70Y7Rh9C10L3QuNGPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvZ2dsZVNob3dFdmVudCA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC+0LHQsNCy0LvQtdC90LjRjy/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC/0YDQvtC00YPQutGC0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgcHJvZHVjdENhdGVnb3J5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCB7IHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQsIG5vbk51bGxhYmxlOiBmYWxzZSB9KSxcbiAgICAgICAgY29uZmlndXJhdG9yOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLCBub25OdWxsYWJsZTogZmFsc2UgfSksXG4gICAgICAgIHF1YW50aXR5OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgc3RlcFZhbGlkYXRvcigxKV0sIG5vbk51bGxhYmxlOiBmYWxzZSB9KSxcbiAgICAgICAgbWFya2VyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgaXRlbXM6IG5ldyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY1NhbmR3aWNoQ29tcG9uZW50WydjcmVhdGVJdGVtR3JvdXAnXT4+KFtdKSxcbiAgICAgICAgY2FsY3VsYXRpb25JZDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIHsgbm9uTnVsbGFibGU6IGZhbHNlIH0pLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBTY0NhcnRTZXJ2aWNlID0gaW5qZWN0KFNjQ2FydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0IHwgdW5kZWZpbmVkID0gaW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhULCB7IG9wdGlvbmFsOiB0cnVlIH0pIGFzIFR1aURpYWxvZ0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCw0LzQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvclNlcnZpY2U6IFNjQ29uZmlndXJhdG9yU2VydmljZSA9IGluamVjdChTY0NvbmZpZ3VyYXRvclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT4gPSB0b09ic2VydmFibGUodGhpcy5jYXRlZ29yeUlkKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGNhdGVnb3J5SWQpID0+IHtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnlJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzQ2F0ZWdvcnlDYWNoZWQkKHsgY2F0ZWdvcnlJZDogTnVtYmVyKGNhdGVnb3J5SWQpIH0pLnBpcGUobWFwKChwcm9kdWN0cykgPT4gcHJvZHVjdHMgPz8gW10pKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JLRi9Cx0YDQsNC90L3Ri9C5INC/0YDQvtC00YPQutGCICjQvNCw0YLQtdGA0LjQsNC7INC00LvRjyDRgNCw0YHQutGA0L7RjykuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2R1Y3QgPSBuZXcgRm9ybUNvbnRyb2w8U2NQcm9kdWN0IHwgbnVsbD4obnVsbCwgeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGA0LDRgdGH0LXRgtCwINC+0L/RgtC40LzQuNC30LDRhtC40Lgg0YDQsNGB0LrQu9Cw0LTQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FsY3VsYXRlJDogT2JzZXJ2YWJsZTxTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkPiA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBwcm9kdWN0SWQ6IHR1aUNvbnRyb2xWYWx1ZTxTY1Byb2R1Y3QgfCBudWxsPih0aGlzLnByb2R1Y3QpLnBpcGUobWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0Py5pZCA/PyBudWxsKSksXG4gICAgICAgIGl0ZW1zOiB0dWlDb250cm9sVmFsdWU8SVNhbmR3aWNoQ2FsY3VsYXRlSXRlbVtdPih0aGlzLml0ZW1zKSxcbiAgICB9KS5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVEZWZhdWx0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHByb2R1Y3RJZCwgaXRlbXMgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2R1Y3RJZCA9PT0gbnVsbCB8fCBpdGVtcy5sZW5ndGggPT09IDAgfHwgdGhpcy5mb3JtLmNvbnRyb2xzLml0ZW1zLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0b3JTZXJ2aWNlLmNhbGN1bGF0ZSQodGhpcy5jYXRlZ29yeUlkKCksIHRoaXMuZWRpdG9yKCksIHsgcHJvZHVjdElkLCBpdGVtcyB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoY2FsY3VsYXRlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3F1YW50aXR5Jyk/LnNldFZhbHVlKGNhbGN1bGF0ZVJlc3VsdC5xdWFudGl0eSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0L7Qv9GC0LjQvNC40LfQsNGG0LjQuCDRgNCw0YHQutC70LDQtNC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGN1bGF0ZVJlc3VsdCQ6IE9ic2VydmFibGU8U2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0IHwgdW5kZWZpbmVkPiA9IHRoaXMuY2FsY3VsYXRlJC5waXBlKGZpbHRlcigoZGF0YSkgPT4gZGF0YSAhPT0gbnVsbCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INGA0LDRgdGH0LXRgtCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0NhbGN1bGF0ZUxvYWRpbmcgPSB0b1NpZ25hbCh0aGlzLmNhbGN1bGF0ZSQucGlwZShtYXAoKGRhdGEpID0+IGRhdGEgPT09IG51bGwpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGAINC00LvRjyDRiNC40YDQuNC90Ysg0LjQt9C00LXQu9C40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbGlkYXRvcldpZHRoJDogT2JzZXJ2YWJsZTxWYWxpZGF0b3JGbiB8IG51bGw+ID0gdHVpQ29udHJvbFZhbHVlPFNjUHJvZHVjdCB8IG51bGw+KHRoaXMucHJvZHVjdCkucGlwZShcbiAgICAgICAgbWFwKChwcm9kdWN0KSA9PiBWYWxpZGF0b3JzLm1pbihwcm9kdWN0Py5wcm9wZXJ0aWVzPy53aWR0aCA/PyAwKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGAINC00LvRjyDQtNC70LjQvdGLINC40LfQtNC10LvQuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2YWxpZGF0b3JMZW5ndGgkOiBPYnNlcnZhYmxlPFZhbGlkYXRvckZuIHwgbnVsbD4gPSB0dWlDb250cm9sVmFsdWU8U2NQcm9kdWN0IHwgbnVsbD4odGhpcy5wcm9kdWN0KS5waXBlKFxuICAgICAgICBtYXAoKHByb2R1Y3QpID0+IFZhbGlkYXRvcnMubWluKHByb2R1Y3Q/LnByb3BlcnRpZXM/Lmxlbmd0aCA/PyAwKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC30LDQv9GA0L7RgSDQvdCwINC+0YLQv9GA0LDQstC60YMg0LTQsNC90L3Ri9GFINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3VibWl0TG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdGB0LjQsiDQuNC30LTQtdC70LjQuS5cbiAgICAgKi9cbiAgICBnZXQgaXRlbXMoKTogRm9ybUFycmF5PFJldHVyblR5cGU8U2NTYW5kd2ljaENvbXBvbmVudFsnY3JlYXRlSXRlbUdyb3VwJ10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtVmFsdWUoKTtcblxuICAgICAgICB0aGlzLnByb2R1Y3QudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmNvbnRyb2xzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9kdWN0LnByb3BlcnRpZXM/LndpZHRoICYmIHZhbHVlLndpZHRoIDwgcHJvZHVjdC5wcm9wZXJ0aWVzLndpZHRoKSB8fCAocHJvZHVjdC5wcm9wZXJ0aWVzPy5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgcHJvZHVjdC5wcm9wZXJ0aWVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IE1hdGgubWluKHZhbHVlLndpZHRoLCBwcm9kdWN0LnByb3BlcnRpZXMud2lkdGggPz8gdmFsdWUud2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogTWF0aC5taW4odmFsdWUubGVuZ3RoLCBwcm9kdWN0LnByb3BlcnRpZXMubGVuZ3RoID8/IHZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQs9GA0YPQv9C/0YMg0LTQu9GPINC40LfQtNC10LvQuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0J/QsNGA0LDQvNC10YLRgNGLINC40LfQtNC10LvQuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlSXRlbUdyb3VwKGl0ZW0/OiBJU2FuZHdpY2hDYWxjdWxhdGVJdGVtKTogRm9ybUdyb3VwPHtcbiAgICAgICAgd2lkdGg6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIGxlbmd0aDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcbiAgICAgICAgY291bnQ6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICB3aWR0aDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oaXRlbT8ud2lkdGggPz8gMCwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbih0aGlzLnNldHRpbmdzKCk/Lm1pbldpZHRoID8/IDAuMDEpXSxcbiAgICAgICAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbGVuZ3RoOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihpdGVtPy5sZW5ndGggPz8gMCwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbih0aGlzLnNldHRpbmdzKCk/Lm1pbkxlbmd0aCA/PyAwLjAxKV0sXG4gICAgICAgICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNvdW50OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihpdGVtPy5jb3VudCA/PyAxLCB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXSxcbiAgICAgICAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0L3QvtCy0L7QtSDQuNC30LTQtdC70LjQtSDQsiDRhNC+0YDQvNGDLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5jcmVhdGVJdGVtR3JvdXAoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LjQt9C00LXQu9C40LUg0LjQtyDRhNC+0YDQvNGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4INCY0L3QtNC10LrRgSDQuNC30LTQtdC70LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlSXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40YLQvtCz0L7QstGD0Y4g0YHRgtC+0LjQvNC+0YHRgtGMLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhbGN1bGF0ZVJlc3VsdCDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0L7Qv9GC0LjQvNC40LfQsNGG0LjQuCDRgNCw0YHQutC70LDQtNC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFRvdGFsQ29zdChjYWxjdWxhdGVSZXN1bHQ6IFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5wcm9kdWN0LnZhbHVlPy5jb3N0UnViKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsQ29zdCA9IGNhbGN1bGF0ZVJlc3VsdC5xdWFudGl0eSAqIHRoaXMucHJvZHVjdC52YWx1ZS5jb3N0UnViO1xuXG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRvdGFsQ29zdCAqIDEwMCkgLyAxMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LTQvtCx0LDQstC70LXQvdC40Y8v0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQv9GA0L7QtNGD0LrRgtCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhbGN1bGF0ZVJlc3VsdCDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0L7Qv9GC0LjQvNC40LfQsNGG0LjQuCDRgNCw0YHQutC70LDQtNC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uU3VibWl0KGNhbGN1bGF0ZVJlc3VsdDogU2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNhbGN1bGF0ZVJlc3VsdCB8fCB0aGlzLmZvcm0uaW52YWxpZCB8fCB0aGlzLmlzQ2FsY3VsYXRlTG9hZGluZygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB7IC4uLnRoaXMuZm9ybS52YWx1ZSwgcHJvZHVjdElkOiB0aGlzLnByb2R1Y3QudmFsdWU/LmlkID8/IG51bGwsIGNhbGN1bGF0aW9uSWQ6IGNhbGN1bGF0ZVJlc3VsdC5pZCB9O1xuICAgICAgICAvLyDQo9C00LDQu9GP0LXQvCBpdGVtcywg0YLQsNC6INC60LDQuiDQvtC90Lgg0L3QtSDQvdGD0LbQvdGLINCyIHtAbGluayBTY0lOZXdDYXJ0SXRlbVNhbmR3aWNofS5cbiAgICAgICAgZGVsZXRlIGZvcm1WYWx1ZS5pdGVtcztcbiAgICAgICAgY29uc3Qgb3JkZXJJdGVtID0gdGhpcy5jYXJ0SXRlbSgpO1xuXG4gICAgICAgIGNvbnN0IG5ld0NhcnRJdGVtJDogT2JzZXJ2YWJsZTxTY0NhcnQ+ID0gb3JkZXJJdGVtXG4gICAgICAgICAgICA/IHRoaXMuY2FydFNlcnZpY2UudXBkYXRlUHJvZHVjdCQob3JkZXJJdGVtLmlkLCB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGwoZm9ybVZhbHVlKSBhcyBTY0lOZXdDYXJ0SXRlbVNhbmR3aWNoKVxuICAgICAgICAgICAgOiB0aGlzLmNhcnRTZXJ2aWNlLmFkZFByb2R1Y3QkKHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbChmb3JtVmFsdWUpIGFzIFNjSU5ld0NhcnRJdGVtU2FuZHdpY2gpO1xuXG4gICAgICAgIHRoaXMuaXNTdWJtaXRMb2FkaW5nLnNldCh0cnVlKTtcblxuICAgICAgICBuZXdDYXJ0SXRlbSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm1WYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBTY0lBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0TG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0L3QsNGH0LDQu9GM0L3Ri9C1INC30L3QsNGH0LXQvdC40Y8g0LTQu9GPINC/0L7Qu9C10Lkg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh7XG4gICAgICAgICAgICBwcm9kdWN0Q2F0ZWdvcnlJZDogTnVtYmVyKHRoaXMuY2F0ZWdvcnlJZCgpKSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRvcjogdGhpcy5lZGl0b3IoKSxcbiAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmNhcnRJdGVtKCk/LnF1YW50aXR5ID8/IG51bGwsXG4gICAgICAgICAgICBtYXJrZXI6IHRoaXMuY2FydEl0ZW0oKT8ubWFya2VyID8/ICcnLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLml0ZW1zLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy5wcm9kdWN0LnJlc2V0KHRoaXMuY2FydEl0ZW0oKT8ucHJvZHVjdCA/PyBudWxsKTtcblxuICAgICAgICBjb25zdCBjb25maWd1cmF0b3JQYXJhbWV0ZXJzID0gdGhpcy5jYXJ0SXRlbSgpPy5jb25maWd1cmF0b3JQYXJhbXMgYXMgSVNhbmR3aWNoQ2FsY3VsYXRlIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbmZpZ3VyYXRvclBhcmFtZXRlcnM/Lml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLmNyZWF0ZUl0ZW1Hcm91cCh7IHdpZHRoOiBpdGVtLndpZHRoLCBsZW5ndGg6IGl0ZW0ubGVuZ3RoLCBjb3VudDogaXRlbS5jb3VudCB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY29uZmlndXJhdG9yUGFyYW1ldGVycz8uaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoIWNhcnRJdGVtKCkgJiYgc2V0dGluZ3MoKT8uYWxsb3dTaG93VGFibGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwibWItNSBmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0V2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkubGF5b3V0LWxpc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQn9C+0LrQsNC30LDRgtGMINCyINCy0LjQtNC1INGB0L/QuNGB0LrQsFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbn1cbjxkaXYgY2xhc3M9XCJcIj5cbiAgICBAbGV0IGNhbGN1bGF0ZVJlc3VsdCA9IGNhbGN1bGF0ZVJlc3VsdCQgfCBhc3luYztcbiAgICBAbGV0IHByb2R1Y3RzID0gcHJvZHVjdHMkIHwgYXN5bmM7XG4gICAgQGxldCBwcm9kdWN0VmFsdWUgPSBwcm9kdWN0LnZhbHVlO1xuICAgIEBsZXQgdmFsaWRhdG9yV2lkdGggPSB2YWxpZGF0b3JXaWR0aCQgfCBhc3luYztcbiAgICBAbGV0IHZhbGlkYXRvckxlbmd0aCA9IHZhbGlkYXRvckxlbmd0aCQgfCBhc3luYztcblxuICAgIDxmb3JtXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdChjYWxjdWxhdGVSZXN1bHQpXCJcbiAgICAgICAgU2NOZXh0SW5wdXRGb2N1c1xuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIlxuICAgID5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJncm93XCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0KLQvtCy0LDRgFxuICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGRcbiAgICAgICAgICAgICAgICB0dWlDaGV2cm9uXG4gICAgICAgICAgICAgICAgW3R1aVRleHRmaWVsZENsZWFuZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlDaGV2cm9uXG4gICAgICAgICAgICAgICAgICAgIHR1aVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicHJvZHVjdFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JLRi9Cx0LXRgNC40YLQtSDQvNCw0YLQtdGA0LjQsNC7XCJcbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3Qtd3JhcHBlclxuICAgICAgICAgICAgICAgICAgICAqdHVpVGV4dGZpZWxkRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgbmV3XG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9kdWN0c1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIEBpZiAocHJvZHVjdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTIgdGV4dC10dWktdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgICAg0KHRgtC+0LjQvNC+0YHRgtGMOlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3RWYWx1ZS5jb3N0UnViPy50b0xvY2FsZVN0cmluZygpIH19IHt7IHByb2R1Y3RWYWx1ZS5jdXJyZW5jeS5zeW1ib2wgfX0v0YjRgi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb2R1Y3RcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSAmJiB2YWxpZGF0b3JXaWR0aCAmJiB2YWxpZGF0b3JMZW5ndGgpIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidy1mdWxsIGZvbnQtYm9sZFwiPtCg0LDQt9C80LXRgNGLINC40LfQtNC10LvQuNC5PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICDQnNC40L3QuNC80LDQu9GM0L3QsNGPINGI0LjRgNC40L3QsDoge3sgc2V0dGluZ3MoKT8ubWluV2lkdGggfX0g0LzQvC5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICDQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0YjQuNGA0LjQvdCwOiB7eyBwcm9kdWN0LnZhbHVlLnByb3BlcnRpZXM/LndpZHRoIH19INC80LwuXG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAg0JzQuNC90LjQvNCw0LvRjNC90LDRjyDQtNC70LjQvdCwOiB7eyBzZXR0aW5ncygpPy5taW5MZW5ndGggfX0g0LzQvC5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICDQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LTQu9C40L3QsDoge3sgcHJvZHVjdC52YWx1ZS5wcm9wZXJ0aWVzPy5sZW5ndGggfX0g0LzQvC5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBmb3JtQXJyYXlOYW1lPVwiaXRlbXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcy5jb250cm9sczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZ3JvdyBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCIkaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncm93IGdyaWQtY29scy0zIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQqNC40YDQuNC90LAsINC80LxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dFNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cInNldHRpbmdzKCk/Lm1pbldpZHRoID8/IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwicHJvZHVjdC52YWx1ZS5wcm9wZXJ0aWVzPy53aWR0aCA/PyAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpTnVtYmVyRm9ybWF0XT1cInsgcHJlY2lzaW9uOiAwIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0KjQuNGA0LjQvdCwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10aWNrcy1sYWJlbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gMCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC52YWx1ZS5wcm9wZXJ0aWVzPy53aWR0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0JTQu9C40L3QsCwg0LzQvFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUlucHV0U2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cInNldHRpbmdzKCk/Lm1pbkxlbmd0aCA/PyAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInByb2R1Y3QudmFsdWUucHJvcGVydGllcz8ubGVuZ3RoID8/IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlOdW1iZXJGb3JtYXRdPVwieyBwcmVjaXNpb246IDAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQlNC70LjQvdCwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10aWNrcy1sYWJlbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gMCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC52YWx1ZS5wcm9wZXJ0aWVzPy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcFwiPtCa0L7Qu9C40YfQtdGB0YLQstC+LCDRiNGCPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXRleHRmaWVsZCBbdHVpVGV4dGZpZWxkQ2xlYW5lcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSW5wdXROdW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpTnVtYmVyRm9ybWF0XT1cInsgcHJlY2lzaW9uOiAwIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JrQvtC70LjRh9C10YHRgtCy0L5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbSgkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbXMubGVuZ3RoIDw9IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZsZXhdPVwiJzAgMCBhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtcy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkSXRlbSgpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnBsdXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0LjQt9C00LXQu9C40LVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIGlmIChwcm9kdWN0LnZhbHVlKSB7XG4gICAgICAgICAgICA8dHVpLWVycm9yIGVycm9yPVwi0KDQsNGB0YfQtdGCINC/0L4g0L/RgNC+0LTRg9C60YLRgyDQvdC10LLQvtC30LzQvtC20LXQvS4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0LzQtdC90LXQtNC20LXRgNGDXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCc0LDRgNC60LjRgNC+0LLQutCwINGA0LDRgdC/0LjQu9CwXG4gICAgICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1hcmtlclwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JzQsNGA0LrQuNGA0L7QstC60LAg0YDQsNGB0L/QuNC70LBcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJtYXJrZXJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXJrZXJcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIEBpZiAocHJvZHVjdC52YWx1ZSkge1xuICAgICAgICAgICAgPHR1aS1sb2FkZXIgW3Nob3dMb2FkZXJdPVwiaXNDYWxjdWxhdGVMb2FkaW5nKClcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNhbGN1bGF0ZVJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmbGV4IGZsZXgtd3JhcCBpdGVtcy1lbmQgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg0JjRgtC+0LPQvjogPHNwYW4gY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXhsIGZvbnQtYm9sZFwiPnt7IGdldFRvdGFsQ29zdChjYWxjdWxhdGVSZXN1bHQpLnRvTG9jYWxlU3RyaW5nKCkgfX0ge3sgcHJvZHVjdC52YWx1ZS5jdXJyZW5jeS5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2FsY3VsYXRlUmVzdWx0Py5xdWFudGl0eSAmJiBwcm9kdWN0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1sZyB0ZXh0LXNjLWRhcmstZ3JleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPih7eyBjYWxjdWxhdGVSZXN1bHQucXVhbnRpdHkgfX0g0YjRgi48L3NwYW4+IHhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0VmFsdWUuY29zdFJ1Yj8udG9Mb2NhbGVTdHJpbmcoKSB9fSB7eyBwcm9kdWN0VmFsdWUuY3VycmVuY3kuc3ltYm9sIH19L9GI0YIuKTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPHR1aS1lcnJvciBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIiAvPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgIWNhbGN1bGF0ZVJlc3VsdCB8fCBpc0NhbGN1bGF0ZUxvYWRpbmcoKSB8fCBpc1N1Ym1pdExvYWRpbmcoKVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJpc1N1Ym1pdExvYWRpbmcoKVwiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGVja1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7ICFjYXJ0SXRlbSgpID8gJ9CU0L7QsdCw0LLQuNGC0Ywg0LIg0LrQvtGA0LfQuNC90YMnIDogJ9CY0LfQvNC10L3QuNGC0YwnIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
|
@@ -20,11 +20,11 @@ export class AbstractScPriceCard {
|
|
|
20
20
|
/**
|
|
21
21
|
* Признак, что необходимо отобразить лоадер для поля ввода количества товара.
|
|
22
22
|
*/
|
|
23
|
-
this.
|
|
23
|
+
this.showLoader = signal(false);
|
|
24
24
|
/**
|
|
25
25
|
* Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.
|
|
26
26
|
*/
|
|
27
|
-
this.favoriteShowLoader = false;
|
|
27
|
+
this.favoriteShowLoader = signal(false);
|
|
28
28
|
/**
|
|
29
29
|
* {@link Observable} изменения статуса авторизации.
|
|
30
30
|
*/
|
|
@@ -98,7 +98,7 @@ export class AbstractScPriceCard {
|
|
|
98
98
|
set orderItem(value) {
|
|
99
99
|
this._orderItem = value;
|
|
100
100
|
this.quantityControl.patchValue(this._orderItem?.quantity ?? null, { emitEvent: false });
|
|
101
|
-
this.
|
|
101
|
+
this.showLoader.set(false);
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
104
|
* Объект товара.
|
|
@@ -167,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
167
167
|
}], quantityValueChanges: [{
|
|
168
168
|
type: Output
|
|
169
169
|
}] } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2MtcHJpY2UtY2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hYnN0cmFjdC1wcmljZS1jYXJkL2Fic3RyYWN0LXNjLXByaWNlLWNhcmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFZLE9BQU8sRUFBRSxhQUFhLEVBQTBCLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0SyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUc5Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUF5Q0k7O1dBRUc7UUFDYSxhQUFRLEdBQVksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFEOztXQUVHO1FBQ0ksb0JBQWUsR0FBK0IsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRWhIOztXQUVHO1FBQ0ksdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ0ksdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBd0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpGOztXQUVHO1FBQ2EsWUFBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5Qzs7V0FF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QUFtQjtzQkFEbEMsTUFBTTtnQkFPUyxlQUFlO3NCQUQ5QixNQUFNO2dCQU9TLGNBQWM7c0JBRDdCLE1BQU07Z0JBT1Msc0JBQXNCO3NCQURyQyxNQUFNO2dCQU9TLG9CQUFvQjtzQkFEbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5ELCBTY0F1dGhTZXJ2aWNlLCBTY0lJbWFnZSwgU2NJbWFnZSwgU2NJbWFnZUhlbHBlciwgU2NPcmRlckl0ZW0sIFNjUHJvZHVjdCwgU2NVbml0c0hlbHBlciwgU0VBUkNIX1RFUk0gfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAg0LDQsdGB0YLRgNCw0LrRgtC90L7QuSDQutCw0YDRgtC+0YfQutC4INGC0L7QstCw0YDQsC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxufSkgLy8g0JDQsdGB0YLRgNCw0LrRgtC90YvQuSDQutC70LDRgdGBINC40LzQtdC10YIg0LTQtdC60L7RgNCw0YLQvtGAIEBEaXJlY3RpdmUoKSDQtNC70Y8g0LLQvdC10LTRgNC10L3QuNGPINC10LPQviDQsiBESSwg0YEg0YbQtdC70YzRjiDQv9C+0LvRg9GH0LXQvdC40Y8g0YTRg9C90LrRhtC40L7QvdCw0LvQsCBpbmplY3Qg0LLQvdGD0YLRgNC4INCw0LHRgdGC0YDQsNC60YbQuNC4LCDQuCDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0L7Qu9GD0YfQsNGC0Ywg0L/QvtGC0L7QvNC60L7QsiDRh9C10YDQtdC3IERJINC40LvQuCDRh9C10YDQtdC3INC00LXQutC+0YDQsNGC0L7RgCBAVmlld0NoaWxkLlxuZXhwb3J0IGNsYXNzIEFic3RyYWN0U2NQcmljZUNhcmQge1xuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIFRPRE86INCh0LTQtdC70LDRgtGMINGC0L7QstCw0YAg0LIg0LrQvtGA0LfQuNC90LUg0L3QsNCx0LvRjtC00LDQtdC80L7QuSDQv9C10YDQtdC80LXQvdC90L7QuSDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4IFRBU0s6WyM3MTQ0XS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG9yZGVySXRlbSgpOiBTY09yZGVySXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRlckl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC30LjRhtC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1XG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINCyINC60L7RgNC30LjQvdC1INC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IG9yZGVySXRlbSh2YWx1ZTogU2NPcmRlckl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fb3JkZXJJdGVtID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5xdWFudGl0eUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLl9vcmRlckl0ZW0/LnF1YW50aXR5ID8/IG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5xdWFudGl0eVNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvZHVjdCgpOiBTY1Byb2R1Y3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvZHVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBwcm9kdWN0KHZhbHVlOiBTY1Byb2R1Y3QgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fcHJvZHVjdCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjyDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4gPSBpbmplY3QoVFVJX0lTX01PQklMRSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRm9ybUNvbnRyb2x9INC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBxdWFudGl0eUNvbnRyb2w6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIHsgdXBkYXRlT246ICdibHVyJyB9KTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcXVhbnRpdHlTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC70L7QsNC00LXRgCDQtNC70Y8g0LrQvdC+0L/QutC4INC40LfQsdGA0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQuCDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGZhdm9yaXRlU2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdXRoU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGluamVjdChTY0F1dGhTZXJ2aWNlKS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L/QvtC40YHQutCwINGC0LXRgNC80LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaCQgPSBpbmplY3QoU0VBUkNIX1RFUk0pO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQv9C+0LvQtSDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93UXVhbnRpdHlDb250cm9sOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDRgdGC0YDQsNC90LjRhtGDINGC0L7QstCw0YDQsC4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC40LzQtdC90L3QviBgaHJlZmAsINGC0LDQuiDQutCw0Log0L7RgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtCx0YvRgtC40LUg0LrQu9C40LrQsCDQtNC70Y8gYHJvdXRlckxpbmtgINC90LUg0LLRi9GI0LvQvi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQkiDQuNC30LHRgNCw0L3QvdC+0LVcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tGYXZvcml0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCSINC60L7RgNC30LjQvdGDXCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrQWRkVG9DYXJ0RXZlbnQ6IEV2ZW50RW1pdHRlcjxTY1Byb2R1Y3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY1Byb2R1Y3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQvtGH0LjRgdGC0LrQuCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrQ2xlYXJFdmVudDogRXZlbnRFbWl0dGVyPFNjT3JkZXJJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NPcmRlckl0ZW0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjbGlja0NhcmRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQuNGB0YLQvtGA0LjRjiDRhtC10L0uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrUHJpY2VIaXN0b3J5RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBxdWFudGl0eVZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiA9IHRoaXMucXVhbnRpdHlDb250cm9sLnZhbHVlQ2hhbmdlcztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC4INCy0YvRgdGC0LDQstC40YLRjCDRhNC+0LrRg9GBINC90LAg0L/QvtC70LUg0LLQstC+0LTQsCDQutC+0LvQu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0b0ZvY3VzZVF1YW50aXR5SW5wdXQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAt0L/QvtC80L7RidC90LjQutCwINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFNjVW5pdHNIZWxwZXIgPSBpbmplY3QoU2NVbml0c0hlbHBlcik7XG5cbiAgICAvKipcbiAgICAgKiDQpdC10LvQv9C10YAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQuNC30L7QsdGA0LDQttC10L3QuNGP0LzQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGltYWdlSGVscGVyOiBTY0ltYWdlSGVscGVyID0gaW5qZWN0KFNjSW1hZ2VIZWxwZXIpO1xuXG4gICAgLyoqXG4gICAgICog0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdGhJbWFnZU5vdEZvdW5kOiBzdHJpbmcgPSBpbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINGB0LvQtdC20LXQvdC40Y8g0LfQsCDQuNC30LzQtdC90LXQvdC40Y/QvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Byb2R1Y3Q6IFNjUHJvZHVjdCB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIFRPRE86INCh0LTQtdC70LDRgtGMINGC0L7QstCw0YAg0LIg0LrQvtGA0LfQuNC90LUg0L3QsNCx0LvRjtC00LDQtdC80L7QuSDQv9C10YDQtdC80LXQvdC90L7QuSDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4IFRBU0s6WyM3MTQ0XS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vcmRlckl0ZW06IFNjT3JkZXJJdGVtIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdGD0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0YHQutC10LvQtdGC0L7QvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNrZWxldG9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LTQsNC90L3Ri9C1INC00LvRjyBwcmV2aWV3LdC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldENhcmRJbWFnZVByZXZpZXcoKTogU2NJSW1hZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0ID8gdGhpcy5pbWFnZUhlbHBlci5nZXRJbWFnZVByZXZpZXcodGhpcy5wcm9kdWN0KSA6IG5ldyBTY0ltYWdlKHsgaW1hZ2U6IHRoaXMucGF0aEltYWdlTm90Rm91bmQsIGFsdDogYNCi0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L1gIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC80LDRgdGB0LjQsiDQv9GA0LXQstGM0Y4t0LjQt9C+0LHRgNCw0LbQtdC90LjQuSDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXJkSW1hZ2VQcmV2aWV3TGlzdChwcm9kdWN0OiBTY1Byb2R1Y3QpOiBTY0lJbWFnZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VIZWxwZXIuZ2V0UHJvZHVjdEltYWdlUHJldmlld0xpc3QocHJvZHVjdCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGCINCyINC+0YfQtdGA0LXQtNGMINC90LAg0L7QsdC90L7QstC70LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIl19
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2MtcHJpY2UtY2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hYnN0cmFjdC1wcmljZS1jYXJkL2Fic3RyYWN0LXNjLXByaWNlLWNhcmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFZLE9BQU8sRUFBRSxhQUFhLEVBQTBCLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0SyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUc5Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUF5Q0k7O1dBRUc7UUFDYSxhQUFRLEdBQVksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFEOztXQUVHO1FBQ0ksb0JBQWUsR0FBK0IsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRWhIOztXQUVHO1FBQ2EsZUFBVSxHQUE0QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDYSx1QkFBa0IsR0FBNEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVFOztXQUVHO1FBQ2EsZ0JBQVcsR0FBd0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpGOztXQUVHO1FBQ2EsWUFBTyxHQUFHLE1BQU0s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QkFEVixLQUFLO2dCQU9VLGtCQUFrQjtzQkFEakMsTUFBTTtnQkFPUyxtQkFBbUI7c0JBRGxDLE1BQU07Z0JBT1MsZUFBZTtzQkFEOUIsTUFBTTtnQkFPUyxjQUFjO3NCQUQ3QixNQUFNO2dCQU9TLHNCQUFzQjtzQkFEckMsTUFBTTtnQkFPUyxvQkFBb0I7c0JBRG5DLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTQ19QQVRIX0lNQUdFX05PVF9GT1VORCwgU2NBdXRoU2VydmljZSwgU2NJSW1hZ2UsIFNjSW1hZ2UsIFNjSW1hZ2VIZWxwZXIsIFNjT3JkZXJJdGVtLCBTY1Byb2R1Y3QsIFNjVW5pdHNIZWxwZXIsIFNFQVJDSF9URVJNIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfSVNfTU9CSUxFIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwINCw0LHRgdGC0YDQsNC60YLQvdC+0Lkg0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbn0pIC8vINCQ0LHRgdGC0YDQsNC60YLQvdGL0Lkg0LrQu9Cw0YHRgSDQuNC80LXQtdGCINC00LXQutC+0YDQsNGC0L7RgCBARGlyZWN0aXZlKCkg0LTQu9GPINCy0L3QtdC00YDQtdC90LjRjyDQtdCz0L4g0LIgREksINGBINGG0LXQu9GM0Y4g0L/QvtC70YPRh9C10L3QuNGPINGE0YPQvdC60YbQuNC+0L3QsNC70LAgaW5qZWN0INCy0L3Rg9GC0YDQuCDQsNCx0YHRgtGA0LDQutGG0LjQuCwg0Lgg0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQv9C+0LvRg9GH0LDRgtGMINC/0L7RgtC+0LzQutC+0LIg0YfQtdGA0LXQtyBESSDQuNC70Lgg0YfQtdGA0LXQtyDQtNC10LrQvtGA0LDRgtC+0YAgQFZpZXdDaGlsZC5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFNjUHJpY2VDYXJkIHtcbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINCyINC60L7RgNC30LjQvdC1INC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBvcmRlckl0ZW0oKTogU2NPcmRlckl0ZW0gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJJdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtVxuICAgICAqXG4gICAgICogVE9ETzog0KHQtNC10LvQsNGC0Ywg0YLQvtCy0LDRgCDQsiDQutC+0YDQt9C40L3QtSDQvdCw0LHQu9GO0LTQsNC10LzQvtC5INC/0LXRgNC10LzQtdC90L3QvtC5INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40LggVEFTSzpbIzcxNDRdLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBvcmRlckl0ZW0odmFsdWU6IFNjT3JkZXJJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX29yZGVySXRlbSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMucXVhbnRpdHlDb250cm9sLnBhdGNoVmFsdWUodGhpcy5fb3JkZXJJdGVtPy5xdWFudGl0eSA/PyBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlci5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwcm9kdWN0KCk6IFNjUHJvZHVjdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9kdWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHByb2R1Y3QodmFsdWU6IFNjUHJvZHVjdCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9wcm9kdWN0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDRjdGC0L7RgiDQutC+0LzQv9C+0L3QtdC90YIg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBGb3JtQ29udHJvbH0g0L/QvtC70Y8g0LLQstC+0LTQsCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHVibGljIHF1YW50aXR5Q29udHJvbDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgeyB1cGRhdGVPbjogJ2JsdXInIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQu9C+0LDQtNC10YAg0LTQu9GPINC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzaG93TG9hZGVyOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC70L7QsNC00LXRgCDQtNC70Y8g0LrQvdC+0L/QutC4INC40LfQsdGA0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQuCDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZhdm9yaXRlU2hvd0xvYWRlcjogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdXRoU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGluamVjdChTY0F1dGhTZXJ2aWNlKS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L/QvtC40YHQutCwINGC0LXRgNC80LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaCQgPSBpbmplY3QoU0VBUkNIX1RFUk0pO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQv9C+0LvQtSDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93UXVhbnRpdHlDb250cm9sOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDRgdGC0YDQsNC90LjRhtGDINGC0L7QstCw0YDQsC4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC40LzQtdC90L3QviBgaHJlZmAsINGC0LDQuiDQutCw0Log0L7RgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtCx0YvRgtC40LUg0LrQu9C40LrQsCDQtNC70Y8gYHJvdXRlckxpbmtgINC90LUg0LLRi9GI0LvQvi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQkiDQuNC30LHRgNCw0L3QvdC+0LVcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tGYXZvcml0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCSINC60L7RgNC30LjQvdGDXCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrQWRkVG9DYXJ0RXZlbnQ6IEV2ZW50RW1pdHRlcjxTY1Byb2R1Y3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY1Byb2R1Y3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQvtGH0LjRgdGC0LrQuCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrQ2xlYXJFdmVudDogRXZlbnRFbWl0dGVyPFNjT3JkZXJJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NPcmRlckl0ZW0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjbGlja0NhcmRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQuNGB0YLQvtGA0LjRjiDRhtC10L0uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrUHJpY2VIaXN0b3J5RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBxdWFudGl0eVZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiA9IHRoaXMucXVhbnRpdHlDb250cm9sLnZhbHVlQ2hhbmdlcztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC4INCy0YvRgdGC0LDQstC40YLRjCDRhNC+0LrRg9GBINC90LAg0L/QvtC70LUg0LLQstC+0LTQsCDQutC+0LvQu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0b0ZvY3VzZVF1YW50aXR5SW5wdXQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAt0L/QvtC80L7RidC90LjQutCwINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFNjVW5pdHNIZWxwZXIgPSBpbmplY3QoU2NVbml0c0hlbHBlcik7XG5cbiAgICAvKipcbiAgICAgKiDQpdC10LvQv9C10YAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQuNC30L7QsdGA0LDQttC10L3QuNGP0LzQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGltYWdlSGVscGVyOiBTY0ltYWdlSGVscGVyID0gaW5qZWN0KFNjSW1hZ2VIZWxwZXIpO1xuXG4gICAgLyoqXG4gICAgICog0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdGhJbWFnZU5vdEZvdW5kOiBzdHJpbmcgPSBpbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINGB0LvQtdC20LXQvdC40Y8g0LfQsCDQuNC30LzQtdC90LXQvdC40Y/QvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Byb2R1Y3Q6IFNjUHJvZHVjdCB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIFRPRE86INCh0LTQtdC70LDRgtGMINGC0L7QstCw0YAg0LIg0LrQvtGA0LfQuNC90LUg0L3QsNCx0LvRjtC00LDQtdC80L7QuSDQv9C10YDQtdC80LXQvdC90L7QuSDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4IFRBU0s6WyM3MTQ0XS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vcmRlckl0ZW06IFNjT3JkZXJJdGVtIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdGD0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0YHQutC10LvQtdGC0L7QvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNrZWxldG9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LTQsNC90L3Ri9C1INC00LvRjyBwcmV2aWV3LdC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldENhcmRJbWFnZVByZXZpZXcoKTogU2NJSW1hZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0ID8gdGhpcy5pbWFnZUhlbHBlci5nZXRJbWFnZVByZXZpZXcodGhpcy5wcm9kdWN0KSA6IG5ldyBTY0ltYWdlKHsgaW1hZ2U6IHRoaXMucGF0aEltYWdlTm90Rm91bmQsIGFsdDogYNCi0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L1gIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC80LDRgdGB0LjQsiDQv9GA0LXQstGM0Y4t0LjQt9C+0LHRgNCw0LbQtdC90LjQuSDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXJkSW1hZ2VQcmV2aWV3TGlzdChwcm9kdWN0OiBTY1Byb2R1Y3QpOiBTY0lJbWFnZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VIZWxwZXIuZ2V0UHJvZHVjdEltYWdlUHJldmlld0xpc3QocHJvZHVjdCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGCINCyINC+0YfQtdGA0LXQtNGMINC90LAg0L7QsdC90L7QstC70LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './sc-order-options';
|
|
2
|
+
export * from './sc-order-accessor.directive';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLW9yZGVyLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlci1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* eslint-disable no-use-before-define */
|
|
2
|
+
import { Directive, input } from '@angular/core';
|
|
3
|
+
import { tuiProvide } from '@taiga-ui/cdk';
|
|
4
|
+
import { SC_ORDER_OPTIONS } from './sc-order-options';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Директива, создающая контекст опций заказа для DI.
|
|
8
|
+
* Позволяет дочерним компонентам получать опции заказа через {@link SC_ORDER_OPTIONS}.
|
|
9
|
+
*/
|
|
10
|
+
export class ScOrderAccessorDirective {
|
|
11
|
+
constructor() {
|
|
12
|
+
/**
|
|
13
|
+
* Идентификатор заказа (черновика).
|
|
14
|
+
*/
|
|
15
|
+
this.orderId = input();
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: ScOrderAccessorDirective, isStandalone: true, selector: "[scOrder]", inputs: { orderId: { classPropertyName: "orderId", publicName: "orderId", isSignal: true, isRequired: false, transformFunction: null } }, providers: [tuiProvide(SC_ORDER_OPTIONS, ScOrderAccessorDirective)], ngImport: i0 }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderAccessorDirective, decorators: [{
|
|
21
|
+
type: Directive,
|
|
22
|
+
args: [{
|
|
23
|
+
standalone: true,
|
|
24
|
+
selector: '[scOrder]',
|
|
25
|
+
providers: [tuiProvide(SC_ORDER_OPTIONS, ScOrderAccessorDirective)],
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItYWNjZXNzb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RpcmVjdGl2ZXMvc2Mtb3JkZXItYWNjZXNzb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUV6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUV0RDs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTUk7O1dBRUc7UUFDYSxZQUFPLEdBQUcsS0FBSyxFQUFzQixDQUFDO0tBQ3pEOytHQUxZLHdCQUF3QjttR0FBeEIsd0JBQXdCLGtNQUZ0QixDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDOzs0RkFFMUQsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsV0FBVztvQkFDckIsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQiwyQkFBMkIsQ0FBQztpQkFDdEUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0dWlQcm92aWRlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbmltcG9ydCB7IFNDX09SREVSX09QVElPTlMgfSBmcm9tICcuL3NjLW9yZGVyLW9wdGlvbnMnO1xuXG4vKipcbiAqINCU0LjRgNC10LrRgtC40LLQsCwg0YHQvtC30LTQsNGO0YnQsNGPINC60L7QvdGC0LXQutGB0YIg0L7Qv9GG0LjQuSDQt9Cw0LrQsNC30LAg0LTQu9GPIERJLlxuICog0J/QvtC30LLQvtC70Y/QtdGCINC00L7Rh9C10YDQvdC40Lwg0LrQvtC80L/QvtC90LXQvdGC0LDQvCDQv9C+0LvRg9GH0LDRgtGMINC+0L/RhtC40Lgg0LfQsNC60LDQt9CwINGH0LXRgNC10Lcge0BsaW5rIFNDX09SREVSX09QVElPTlN9LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3NjT3JkZXJdJyxcbiAgICBwcm92aWRlcnM6IFt0dWlQcm92aWRlKFNDX09SREVSX09QVElPTlMsIFNjT3JkZXJBY2Nlc3NvckRpcmVjdGl2ZSldLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyQWNjZXNzb3JEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsCAo0YfQtdGA0L3QvtCy0LjQutCwKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3JkZXJJZCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { InjectionToken, signal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Токен для внедрения опций заказа (черновика) в дочерние компоненты.
|
|
4
|
+
*/
|
|
5
|
+
export const SC_ORDER_OPTIONS = new InjectionToken('SC_ORDER_OPTIONS', {
|
|
6
|
+
factory: () => ({
|
|
7
|
+
// eslint-disable-next-line unicorn/no-useless-undefined
|
|
8
|
+
orderId: signal(undefined),
|
|
9
|
+
}),
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kaXJlY3RpdmVzL3NjLW9yZGVyLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFZL0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsa0JBQWtCLEVBQUU7SUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDWix3REFBd0Q7UUFDeEQsT0FBTyxFQUFFLE1BQU0sQ0FBcUIsU0FBUyxDQUFDO0tBQ2pELENBQUM7Q0FDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiDQntC/0YbQuNC4INC30LDQutCw0LfQsCAo0YfQtdGA0L3QvtCy0LjQutCwKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY09yZGVyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwICjRh9C10YDQvdC+0LLQuNC60LApLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9yZGVySWQ6IFNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+O1xufVxuXG4vKipcbiAqINCi0L7QutC10L0g0LTQu9GPINCy0L3QtdC00YDQtdC90LjRjyDQvtC/0YbQuNC5INC30LDQutCw0LfQsCAo0YfQtdGA0L3QvtCy0LjQutCwKSDQsiDQtNC+0YfQtdGA0L3QuNC1INC60L7QvNC/0L7QvdC10L3RgtGLLlxuICovXG5leHBvcnQgY29uc3QgU0NfT1JERVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTY09yZGVyT3B0aW9ucz4oJ1NDX09SREVSX09QVElPTlMnLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gKHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWRcbiAgICAgICAgb3JkZXJJZDogc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcbiAgICB9KSxcbn0pO1xuIl19
|