buildingproduct-library 0.2.7
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/README.md +24 -0
- package/assets/fonts/arial-webfont.woff +0 -0
- package/assets/fonts/arial-webfont.woff2 +0 -0
- package/assets/fonts/arialblack-webfont.woff +0 -0
- package/assets/fonts/arialblack-webfont.woff2 +0 -0
- package/assets/fonts/arialbold-webfont.woff +0 -0
- package/assets/fonts/arialbold-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneue.woff +0 -0
- package/assets/fonts/helveticaneue.woff2 +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff2 +0 -0
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/images/ActivateIcon.svg +14 -0
- package/assets/images/AlertIcon.svg +3 -0
- package/assets/images/DisableIcon.svg +3 -0
- package/assets/images/Divider line.svg +3 -0
- package/assets/images/EditIconEnabled.svg +6 -0
- package/assets/images/EditIcondisabled.svg +6 -0
- package/assets/images/Grid-dark.svg +8 -0
- package/assets/images/Grid-light.svg +8 -0
- package/assets/images/Hamburger_icon_white.png +0 -0
- package/assets/images/Icon-awesome-user-alt-white.svg +13 -0
- package/assets/images/Icon-ionic-ios-arrow-down.svg +3 -0
- package/assets/images/Icon-ionic-ios-help-circle.svg +6 -0
- package/assets/images/Icon-ionic-ios-home.svg +6 -0
- package/assets/images/Icon-ionic-ios-settings.svg +6 -0
- package/assets/images/Icon-material-shopping-cart.svg +7 -0
- package/assets/images/Invited.svg +4 -0
- package/assets/images/List-dark.svg +3 -0
- package/assets/images/List-light.svg +3 -0
- package/assets/images/PDP-add-more.svg +3 -0
- package/assets/images/PDP-colour-selected.svg +7 -0
- package/assets/images/PDP-quote-exists.svg +12 -0
- package/assets/images/PDP-remove-icon.svg +3 -0
- package/assets/images/Selected icon.svg +3 -0
- package/assets/images/Selected-icon.svg +3 -0
- package/assets/images/banner-image.png +0 -0
- package/assets/images/br_down.png +0 -0
- package/assets/images/cart-shopping-fast.svg +6 -0
- package/assets/images/check-square.svg +3 -0
- package/assets/images/checkmark-circle-outline.svg +4 -0
- package/assets/images/closegrey.svg +71 -0
- package/assets/images/dashboard.svg +35 -0
- package/assets/images/delivery.svg +11 -0
- package/assets/images/download-icon.svg +7 -0
- package/assets/images/downloads-dark.svg +6 -0
- package/assets/images/downloads-light.svg +6 -0
- package/assets/images/erroricon.svg +3 -0
- package/assets/images/home-icon.svg +6 -0
- package/assets/images/home_banner.png +0 -0
- package/assets/images/ic_calender.svg +15 -0
- package/assets/images/icon-clock-icon.svg +10 -0
- package/assets/images/icon-feather-edit.svg +6 -0
- package/assets/images/icon-flashing-black.svg +3 -0
- package/assets/images/icon-flashing-white.svg +3 -0
- package/assets/images/icon-ionic-ios-search.svg +3 -0
- package/assets/images/icon-logout.svg +6 -0
- package/assets/images/icon-mail-icon.svg +7 -0
- package/assets/images/icon-metro-info.svg +3 -0
- package/assets/images/ionic-arrow-back.svg +3 -0
- package/assets/images/ionic-ios-feather-phone.svg +3 -0
- package/assets/images/ionic-ios-help-circle-outline.svg +6 -0
- package/assets/images/ionic-ios-location-outline.svg +3 -0
- package/assets/images/ionic-ios-my-location.svg +3 -0
- package/assets/images/ionic-ios-users-outline.svg +3 -0
- package/assets/images/ionic-trash.svg +3 -0
- package/assets/images/logo-black.svg +16 -0
- package/assets/images/logo-dark.svg +48 -0
- package/assets/images/logo.svg +16 -0
- package/assets/images/my-account.svg +21 -0
- package/assets/images/my-list.svg +43 -0
- package/assets/images/my-team.svg +17 -0
- package/assets/images/newsfeed-banner.jpg +0 -0
- package/assets/images/newtab.svg +11 -0
- package/assets/images/no-saved-cart.svg +3 -0
- package/assets/images/open-account-logout.png +0 -0
- package/assets/images/orders.svg +23 -0
- package/assets/images/pdf-icon.svg +45 -0
- package/assets/images/pdp-noimage.svg +21 -0
- package/assets/images/pickup.svg +8 -0
- package/assets/images/plp-grid-noimage.svg +22 -0
- package/assets/images/plp-list-noimage.svg +16 -0
- package/assets/images/product-banner.png +0 -0
- package/assets/images/product-details-dark.svg +10 -0
- package/assets/images/product-details-light.svg +10 -0
- package/assets/images/products.svg +34 -0
- package/assets/images/quotes.svg +12 -0
- package/assets/images/related-products-dark.svg +9 -0
- package/assets/images/related-products-light.svg +9 -0
- package/assets/images/search-noimage.svg +16 -0
- package/assets/images/see-more-bg-hover.svg +1 -0
- package/assets/images/see-more-bg.svg +1 -0
- package/assets/images/shopping-cart-icon.svg +14 -0
- package/assets/images/slash-small-white.svg +3 -0
- package/assets/images/warningicon.svg +3 -0
- package/assets/images/why-dimond.svg +7 -0
- package/buildingproduct-library-0.2.7.tgz +0 -0
- package/buildingproduct-library.d.ts +5 -0
- package/bundles/buildingproduct-library.umd.js +10979 -0
- package/bundles/buildingproduct-library.umd.js.map +1 -0
- package/esm2015/buildingproduct-library.js +5 -0
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +159 -0
- package/esm2015/lib/account-dropdown/account-dropdown.module.js +59 -0
- package/esm2015/lib/account-dropdown/account-dropdown.service.js +55 -0
- package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +442 -0
- package/esm2015/lib/checkout/checkout.module.js +149 -0
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +348 -0
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +37 -0
- package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +32 -0
- package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +162 -0
- package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +151 -0
- package/esm2015/lib/checkout/order-review/order-review.component.js +123 -0
- package/esm2015/lib/constants/general.js +57 -0
- package/esm2015/lib/contact-us/contact-us.component.js +38 -0
- package/esm2015/lib/contact-us/contact-us.module.js +41 -0
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +48 -0
- package/esm2015/lib/custom-cart/custom-cart.component.js +70 -0
- package/esm2015/lib/custom-cart/custom-cart.module.js +91 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.component.js +27 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.module.js +54 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.component.js +24 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.module.js +48 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +239 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +64 -0
- package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
- package/esm2015/lib/custom-navigation/custom-navigation.module.js +79 -0
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +205 -0
- package/esm2015/lib/custom-order-details/custom-order-details.module.js +99 -0
- package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +34 -0
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +191 -0
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +169 -0
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +680 -0
- package/esm2015/lib/custom-order-history/custom-order-history.module.js +105 -0
- package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +62 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +108 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +125 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +91 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +56 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +51 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +114 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +89 -0
- package/esm2015/lib/custom-saved-cart/save-cart.service.js +67 -0
- package/esm2015/lib/custom-saved-cart/saved-cart-general.js +49 -0
- package/esm2015/lib/custom-saved-cart/saved-cart.service.js +48 -0
- package/esm2015/lib/custom-search/custom-search.component.js +132 -0
- package/esm2015/lib/custom-search/custom-search.module.js +46 -0
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +92 -0
- package/esm2015/lib/custom-user-account/custom-user-account.module.js +63 -0
- package/esm2015/lib/directives/custom-directives.module.js +22 -0
- package/esm2015/lib/directives/custom-paginatior.directive.js +197 -0
- package/esm2015/lib/environments/environment.js +24 -0
- package/esm2015/lib/find-store/find-store.component.js +94 -0
- package/esm2015/lib/find-store/find-store.module.js +66 -0
- package/esm2015/lib/help-support/help-support.component.js +24 -0
- package/esm2015/lib/help-support/help-support.module.js +38 -0
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +133 -0
- package/esm2015/lib/my-account/account-statements/account-statements.component.js +57 -0
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +379 -0
- package/esm2015/lib/my-account/my-account.component.js +95 -0
- package/esm2015/lib/my-account/my-account.module.js +99 -0
- package/esm2015/lib/my-team/my-team.component.js +445 -0
- package/esm2015/lib/my-team/my-team.module.js +100 -0
- package/esm2015/lib/my-team/team-member.service.js +95 -0
- package/esm2015/lib/pipes/custom-date-pipe.pipe.js +26 -0
- package/esm2015/lib/services/account-dropdown-state.service.js +21 -0
- package/esm2015/lib/services/cart.service.js +70 -0
- package/esm2015/lib/services/checkout.service.js +69 -0
- package/esm2015/lib/services/endPointURL.js +192 -0
- package/esm2015/lib/services/find-store.service.js +50 -0
- package/esm2015/lib/services/logout.service.js +50 -0
- package/esm2015/lib/services/my-account.service.js +68 -0
- package/esm2015/lib/services/order-history.service.js +65 -0
- package/esm2015/lib/services/order.review.js +38 -0
- package/esm2015/lib/services/search.service.js +42 -0
- package/esm2015/lib/services/user-account-detail-service.service.js +207 -0
- package/esm2015/lib/shared/CustomProduct.js +48 -0
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +116 -0
- package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +102 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +95 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +477 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +431 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +622 -0
- package/esm2015/lib/shared/custom-cart-detail/split.pipe.js +17 -0
- package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +173 -0
- package/esm2015/lib/shared/regEx.validator.js +17 -0
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +83 -0
- package/esm2015/lib/shared/shared-components.module.js +119 -0
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +220 -0
- package/esm2015/lib/spa-custom-header.component.js +26 -0
- package/esm2015/lib/spa-custom-header.module.js +145 -0
- package/esm2015/lib/spa-custom-header.service.js +14 -0
- package/esm2015/lib/utils/utils.js +27 -0
- package/esm2015/lib/utils.js +27 -0
- package/esm2015/public-api.js +35 -0
- package/fesm2015/buildingproduct-library.js +10197 -0
- package/fesm2015/buildingproduct-library.js.map +1 -0
- package/lib/account-dropdown/account-dropdown.component.d.ts +24 -0
- package/lib/account-dropdown/account-dropdown.module.d.ts +11 -0
- package/lib/account-dropdown/account-dropdown.service.d.ts +14 -0
- package/lib/checkout/add-new-address/add-new-address.component.d.ts +30 -0
- package/lib/checkout/checkout.module.d.ts +28 -0
- package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +77 -0
- package/lib/checkout/order-confirmation/order-confirmation.component.d.ts +23 -0
- package/lib/checkout/order-review/delivery-information/delivery-information.component.d.ts +13 -0
- package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +33 -0
- package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +31 -0
- package/lib/checkout/order-review/order-review.component.d.ts +41 -0
- package/lib/constants/general.d.ts +50 -0
- package/lib/contact-us/contact-us.component.d.ts +13 -0
- package/lib/contact-us/contact-us.module.d.ts +9 -0
- package/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.d.ts +18 -0
- package/lib/custom-cart/custom-cart.component.d.ts +22 -0
- package/lib/custom-cart/custom-cart.module.d.ts +15 -0
- package/lib/custom-header-logo/custom-header-logo.component.d.ts +11 -0
- package/lib/custom-header-logo/custom-header-logo.module.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.component.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.module.d.ts +10 -0
- package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +62 -0
- package/lib/custom-mini-cart/custom-mini-cart.module.d.ts +13 -0
- package/lib/custom-navigation/custom-navigation.component.d.ts +37 -0
- package/lib/custom-navigation/custom-navigation.module.d.ts +21 -0
- package/lib/custom-order-details/custom-order-details.component.d.ts +63 -0
- package/lib/custom-order-details/custom-order-details.module.d.ts +19 -0
- package/lib/custom-order-details/download-popup/download-popup.component.d.ts +15 -0
- package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +40 -0
- package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +35 -0
- package/lib/custom-order-history/custom-order-history.component.d.ts +99 -0
- package/lib/custom-order-history/custom-order-history.module.d.ts +19 -0
- package/lib/custom-order-history/slider-progress/slider-progress.component.d.ts +15 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +33 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.d.ts +20 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +65 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.d.ts +31 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +19 -0
- package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +59 -0
- package/lib/custom-saved-cart/custom-saved-cart.module.d.ts +16 -0
- package/lib/custom-saved-cart/save-cart.service.d.ts +17 -0
- package/lib/custom-saved-cart/saved-cart-general.d.ts +88 -0
- package/lib/custom-saved-cart/saved-cart.service.d.ts +12 -0
- package/lib/custom-search/custom-search.component.d.ts +35 -0
- package/lib/custom-search/custom-search.module.d.ts +10 -0
- package/lib/custom-user-account/custom-user-account.component.d.ts +35 -0
- package/lib/custom-user-account/custom-user-account.module.d.ts +12 -0
- package/lib/directives/custom-directives.module.d.ts +8 -0
- package/lib/directives/custom-paginatior.directive.d.ts +29 -0
- package/lib/environments/environment.d.ts +12 -0
- package/lib/find-store/find-store.component.d.ts +34 -0
- package/lib/find-store/find-store.module.d.ts +12 -0
- package/lib/help-support/help-support.component.d.ts +11 -0
- package/lib/help-support/help-support.module.d.ts +9 -0
- package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +34 -0
- package/lib/my-account/account-statements/account-statements.component.d.ts +24 -0
- package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +66 -0
- package/lib/my-account/my-account.component.d.ts +26 -0
- package/lib/my-account/my-account.module.d.ts +20 -0
- package/lib/my-team/my-team.component.d.ts +103 -0
- package/lib/my-team/my-team.module.d.ts +18 -0
- package/lib/my-team/team-member.service.d.ts +17 -0
- package/lib/pipes/custom-date-pipe.pipe.d.ts +11 -0
- package/lib/services/account-dropdown-state.service.d.ts +10 -0
- package/lib/services/cart.service.d.ts +15 -0
- package/lib/services/checkout.service.d.ts +17 -0
- package/lib/services/endPointURL.d.ts +156 -0
- package/lib/services/find-store.service.d.ts +14 -0
- package/lib/services/logout.service.d.ts +11 -0
- package/lib/services/my-account.service.d.ts +16 -0
- package/lib/services/order-history.service.d.ts +14 -0
- package/lib/services/order.review.d.ts +11 -0
- package/lib/services/search.service.d.ts +11 -0
- package/lib/services/user-account-detail-service.service.d.ts +40 -0
- package/lib/shared/CustomProduct.d.ts +28 -0
- package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +58 -0
- package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +30 -0
- package/lib/shared/custom-cart-detail/custom-cart-detail.component.d.ts +32 -0
- package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +81 -0
- package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +72 -0
- package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +100 -0
- package/lib/shared/custom-cart-detail/split.pipe.d.ts +7 -0
- package/lib/shared/date-range-picker/date-range-picker.component.d.ts +39 -0
- package/lib/shared/regEx.validator.d.ts +10 -0
- package/lib/shared/saved-cart-popup/saved-cart-popup.component.d.ts +37 -0
- package/lib/shared/shared-components.module.d.ts +26 -0
- package/lib/shared/shared-download-order/shared-download-order.component.d.ts +40 -0
- package/lib/spa-custom-header.component.d.ts +11 -0
- package/lib/spa-custom-header.module.d.ts +27 -0
- package/lib/spa-custom-header.service.d.ts +6 -0
- package/lib/utils/utils.d.ts +6 -0
- package/lib/utils.d.ts +5 -0
- package/package.json +92 -0
- package/public-api.d.ts +31 -0
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
import { Component, ViewChild, } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { CommonUtils } from '../utils';
|
|
4
|
+
import * as moment from 'moment';
|
|
5
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
6
|
+
import { NgxMasonryComponent } from 'ngx-masonry';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@spartacus/core";
|
|
9
|
+
import * as i2 from "../services/order-history.service";
|
|
10
|
+
import * as i3 from "../shared/custom-breadcrum/custom-breadcrum.component";
|
|
11
|
+
import * as i4 from "../shared/date-range-picker/date-range-picker.component";
|
|
12
|
+
import * as i5 from "./slider-progress/slider-progress.component";
|
|
13
|
+
import * as i6 from "ngx-masonry";
|
|
14
|
+
import * as i7 from "@angular/material/menu";
|
|
15
|
+
import * as i8 from "@angular/common";
|
|
16
|
+
import * as i9 from "ngx-infinite-scroll";
|
|
17
|
+
import * as i10 from "@angular/forms";
|
|
18
|
+
import * as i11 from "@ng-bootstrap/ng-bootstrap";
|
|
19
|
+
import * as i12 from "../pipes/custom-date-pipe.pipe";
|
|
20
|
+
export class CustomOrderHistoryComponent {
|
|
21
|
+
constructor(cmsService, orderHistoryService, cd) {
|
|
22
|
+
this.cmsService = cmsService;
|
|
23
|
+
this.orderHistoryService = orderHistoryService;
|
|
24
|
+
this.cd = cd;
|
|
25
|
+
this.listview = true;
|
|
26
|
+
this.noSearchResults = false;
|
|
27
|
+
this.orderHistoryLists = [];
|
|
28
|
+
this.orderSortLists = [];
|
|
29
|
+
this.orderStatuses = [];
|
|
30
|
+
this.orderStates = [];
|
|
31
|
+
this.deliveryTypes = [];
|
|
32
|
+
this.isDesktop = true;
|
|
33
|
+
this.isMobile = false;
|
|
34
|
+
this.isTablet = false;
|
|
35
|
+
this.breadcrumbData = [];
|
|
36
|
+
this.showWaitCursor = new BehaviorSubject(false);
|
|
37
|
+
this.optionalColumns = [
|
|
38
|
+
{ name: 'Order', value: 'order' },
|
|
39
|
+
{ name: 'PO', value: 'po' },
|
|
40
|
+
{ name: 'Order Date', value: 'orderDate' },
|
|
41
|
+
{ name: 'Delivery Type', value: 'deliveryType' },
|
|
42
|
+
];
|
|
43
|
+
this.selectedOrderState = [];
|
|
44
|
+
this.selectedOrderType = 'orderNumber';
|
|
45
|
+
this.searchText = '';
|
|
46
|
+
this.environment = sessionStorage.getItem('env');
|
|
47
|
+
this.env = JSON.parse(this.environment);
|
|
48
|
+
this.storeFrontUrl = this.env.UIsiteURl;
|
|
49
|
+
this.loaderImage = new BehaviorSubject(false);
|
|
50
|
+
this.currentPage = 0;
|
|
51
|
+
this.selectedDateKey = 'orderDate';
|
|
52
|
+
this.isClearAll = false;
|
|
53
|
+
this.isInputValue = false;
|
|
54
|
+
this.selectedOrderNumber = '';
|
|
55
|
+
this.sesstionStorageCalled = false;
|
|
56
|
+
this.items = [];
|
|
57
|
+
this.isFirstCall = true;
|
|
58
|
+
this.menuTopLeftPosition = { x: 0, y: 0 };
|
|
59
|
+
}
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
var _a;
|
|
62
|
+
this.showWaitCursor.next(true);
|
|
63
|
+
this.breadcrumbData.push({ url: '/', name: 'Home' }, { url: '/my-account/orders', name: 'My Orders' });
|
|
64
|
+
this.cmsService.getCurrentPage().subscribe((pagadata) => {
|
|
65
|
+
this.pageTitle = pagadata.title;
|
|
66
|
+
});
|
|
67
|
+
this.cmsService
|
|
68
|
+
.getComponentData('EmptyOrderListComponent')
|
|
69
|
+
.subscribe((data) => {
|
|
70
|
+
if (data) {
|
|
71
|
+
this.noOrderHistoryData = data.content;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
this.cmsService
|
|
75
|
+
.getComponentData('OrderHistoryParagraphComponent')
|
|
76
|
+
.subscribe((data) => {
|
|
77
|
+
if (data) {
|
|
78
|
+
this.orderHistoryHeading = data.content;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
this.cmsService
|
|
82
|
+
.getComponentData('EmptySearchOrderListComponent')
|
|
83
|
+
.subscribe((data) => {
|
|
84
|
+
if (data) {
|
|
85
|
+
this.noSearchResultContent = data.content;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.cmsService
|
|
89
|
+
.getComponentData('orders_orderHistory_code')
|
|
90
|
+
.subscribe((data) => {
|
|
91
|
+
if (data) {
|
|
92
|
+
this.orderTooltipContent = data.content;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
this.cmsService
|
|
96
|
+
.getComponentData('orders_orderHistory_purchaseOrderNumber')
|
|
97
|
+
.subscribe((data) => {
|
|
98
|
+
if (data) {
|
|
99
|
+
this.poTooltipContent = data.content;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
this.cmsService
|
|
103
|
+
.getComponentData('orders_orderHistory_placed')
|
|
104
|
+
.subscribe((data) => {
|
|
105
|
+
if (data) {
|
|
106
|
+
this.orderDateTooltipContent = data.content;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
this.cmsService
|
|
110
|
+
.getComponentData('orders_orderHistory_deliveryMode')
|
|
111
|
+
.subscribe((data) => {
|
|
112
|
+
if (data) {
|
|
113
|
+
this.deliveryTypeTooltipContent = data.content;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
this.cmsService
|
|
117
|
+
.getComponentData('orders_orderHistory_deliveryDate')
|
|
118
|
+
.subscribe((data) => {
|
|
119
|
+
if (data) {
|
|
120
|
+
this.deliveryDateTooltipContent = data.content;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
this.cmsService
|
|
124
|
+
.getComponentData('orders_orderHistory_deliveryAddress')
|
|
125
|
+
.subscribe((data) => {
|
|
126
|
+
if (data) {
|
|
127
|
+
this.deliveryAddressTooltipContent = data.content;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
this.cmsService
|
|
131
|
+
.getComponentData('orders_orderHistory_total')
|
|
132
|
+
.subscribe((data) => {
|
|
133
|
+
if (data) {
|
|
134
|
+
this.totalPriceTooltipContent = data.content;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
this.cmsService
|
|
138
|
+
.getComponentData('orders_orderHistory_status')
|
|
139
|
+
.subscribe((data) => {
|
|
140
|
+
if (data) {
|
|
141
|
+
this.statusTooltipContent = data.content;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
this.selectedOrderType = 'orderNumber';
|
|
145
|
+
this.getLastMonthDateRange();
|
|
146
|
+
this.getSearchDropdownData();
|
|
147
|
+
const selectedFilters = sessionStorage.getItem('selectedOrderFilters');
|
|
148
|
+
if (this.isNullOrEmpty(selectedFilters === null || selectedFilters === void 0 ? void 0 : selectedFilters.toString())) {
|
|
149
|
+
this.getOrderList();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const orderData = JSON.parse(selectedFilters);
|
|
153
|
+
if (orderData.searchText) {
|
|
154
|
+
this.selectedOrderType = orderData.selectedOrderType;
|
|
155
|
+
this.searchText = orderData.searchText;
|
|
156
|
+
}
|
|
157
|
+
this.currentPage = orderData.currentPage;
|
|
158
|
+
this.selectedOrderState = JSON.parse(JSON.stringify(orderData.selectedFilters));
|
|
159
|
+
if (this.selectedOrderState && this.selectedOrderState.length > 0) {
|
|
160
|
+
let selectedDate = this.selectedOrderState.find((element) => element.key == 'orderDate');
|
|
161
|
+
if (selectedDate) {
|
|
162
|
+
selectedDate = (_a = selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.value) === null || _a === void 0 ? void 0 : _a.split(',');
|
|
163
|
+
const startDate = selectedDate[0].split('/')[1] + '/' + selectedDate[0].split('/')[0] + '/' + selectedDate[0].split('/')[2];
|
|
164
|
+
const endDate = selectedDate[1].split('/')[1] + '/' + selectedDate[1].split('/')[0] + '/' + selectedDate[1].split('/')[2];
|
|
165
|
+
this.selectedDateFilterValue = { startDate: moment(new Date(startDate)), endDate: moment(new Date(endDate)) };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
this.selectedOrderNumber = orderData.orderNumber;
|
|
169
|
+
this.sesstionStorageCalled = true;
|
|
170
|
+
this.getSearchResults();
|
|
171
|
+
}
|
|
172
|
+
this.onPageRefresh();
|
|
173
|
+
}
|
|
174
|
+
ngAfterViewInit() {
|
|
175
|
+
this.showWaitCursor.subscribe((data) => {
|
|
176
|
+
if (data == false) {
|
|
177
|
+
// setTimeout(() => {
|
|
178
|
+
this.getStatusUpdate();
|
|
179
|
+
// }, 3000);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
isNullOrEmpty(valueToCheck) {
|
|
184
|
+
return (valueToCheck == null || valueToCheck == '') ? true : false;
|
|
185
|
+
}
|
|
186
|
+
getLastMonthDateRange() {
|
|
187
|
+
this.selectedDateRange = [moment().subtract(29, 'days'), moment()];
|
|
188
|
+
const dateValue = this.selectedDateRange[0]._d.getDate() +
|
|
189
|
+
'/' +
|
|
190
|
+
(this.selectedDateRange[0]._d.getMonth() + 1) +
|
|
191
|
+
'/' +
|
|
192
|
+
this.selectedDateRange[0]._d.getFullYear() +
|
|
193
|
+
',' +
|
|
194
|
+
this.selectedDateRange[1]._d.getDate() +
|
|
195
|
+
'/' +
|
|
196
|
+
(this.selectedDateRange[1]._d.getMonth() + 1) +
|
|
197
|
+
'/' +
|
|
198
|
+
this.selectedDateRange[1]._d.getFullYear();
|
|
199
|
+
let obj = {
|
|
200
|
+
key: this.selectedDateKey,
|
|
201
|
+
value: dateValue,
|
|
202
|
+
name: dateValue,
|
|
203
|
+
};
|
|
204
|
+
this.selectedOrderState.push(obj);
|
|
205
|
+
}
|
|
206
|
+
getStatusUpdate() {
|
|
207
|
+
this.orderHistoryLists.forEach((element) => {
|
|
208
|
+
element.statusValue = 0;
|
|
209
|
+
if (element.status == 'CREATED') {
|
|
210
|
+
element.statusValue = 1;
|
|
211
|
+
}
|
|
212
|
+
else if (element.status == 'APPROVED') {
|
|
213
|
+
element.statusValue = 2;
|
|
214
|
+
}
|
|
215
|
+
else if (element.status == 'PROCESSING') {
|
|
216
|
+
element.statusValue = 3;
|
|
217
|
+
}
|
|
218
|
+
else if (element.status == 'READY') {
|
|
219
|
+
element.statusValue = 4;
|
|
220
|
+
}
|
|
221
|
+
else if (element.status == 'DELIVERING') {
|
|
222
|
+
element.statusValue = 5;
|
|
223
|
+
}
|
|
224
|
+
else if (element.status == 'COMPLETED') {
|
|
225
|
+
element.statusValue = 6;
|
|
226
|
+
}
|
|
227
|
+
this.loaderImage.next(false);
|
|
228
|
+
this.cd.markForCheck();
|
|
229
|
+
});
|
|
230
|
+
this.orderHistoryLists.forEach((element) => {
|
|
231
|
+
element.minValue = 0;
|
|
232
|
+
if (element.minLineStatus == 'CREATED') {
|
|
233
|
+
element.minValue = 1;
|
|
234
|
+
}
|
|
235
|
+
else if (element.minLineStatus == 'APPROVED') {
|
|
236
|
+
element.minValue = 2;
|
|
237
|
+
}
|
|
238
|
+
else if (element.minLineStatus == 'PROCESSING') {
|
|
239
|
+
element.minValue = 3;
|
|
240
|
+
}
|
|
241
|
+
else if (element.minLineStatus == 'READY') {
|
|
242
|
+
element.minValue = 4;
|
|
243
|
+
}
|
|
244
|
+
else if (element.minLineStatus == 'DELIVERING') {
|
|
245
|
+
element.minValue = 5;
|
|
246
|
+
}
|
|
247
|
+
else if (element.minLineStatus == 'COMPLETED') {
|
|
248
|
+
element.minValue = 6;
|
|
249
|
+
}
|
|
250
|
+
this.loaderImage.next(false);
|
|
251
|
+
this.cd.markForCheck();
|
|
252
|
+
});
|
|
253
|
+
this.orderHistoryLists.forEach((element) => {
|
|
254
|
+
if (element.maxLineStatus == 'CREATED') {
|
|
255
|
+
element.maxValue = 1;
|
|
256
|
+
}
|
|
257
|
+
else if (element.maxLineStatus == 'APPROVED') {
|
|
258
|
+
element.maxValue = 2;
|
|
259
|
+
}
|
|
260
|
+
else if (element.maxLineStatus == 'PROCESSING') {
|
|
261
|
+
element.maxValue = 3;
|
|
262
|
+
}
|
|
263
|
+
else if (element.maxLineStatus == 'READY') {
|
|
264
|
+
element.maxValue = 4;
|
|
265
|
+
}
|
|
266
|
+
else if (element.maxLineStatus == 'DELIVERING') {
|
|
267
|
+
element.maxValue = 5;
|
|
268
|
+
}
|
|
269
|
+
else if (element.maxLineStatus == 'COMPLETED') {
|
|
270
|
+
element.maxValue = 6;
|
|
271
|
+
}
|
|
272
|
+
this.loaderImage.next(false);
|
|
273
|
+
this.cd.markForCheck();
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
getOrderList() {
|
|
277
|
+
const reqObj = {
|
|
278
|
+
searchParams: this.selectedOrderState,
|
|
279
|
+
};
|
|
280
|
+
this.orderHistoryService.getOrderHistoryList(reqObj, this.currentPage)
|
|
281
|
+
.subscribe((data) => {
|
|
282
|
+
var _a;
|
|
283
|
+
// this.orderHistoryLists = this.orderHistoryLists.length == 0 ? data.orders : [...this.orderHistoryLists, data?.orders];
|
|
284
|
+
if (this.isClearAll == true) {
|
|
285
|
+
this.orderHistoryLists = [];
|
|
286
|
+
this.isClearAll = false;
|
|
287
|
+
}
|
|
288
|
+
this.orderHistoryLists = this.orderHistoryLists.concat(data.orders);
|
|
289
|
+
this.orderHistoryLists.forEach((element) => {
|
|
290
|
+
if (element.minDeliveryDate && element.maxDeliveryDate) {
|
|
291
|
+
element.minDeliveryDate = new Date(element.minDeliveryDate);
|
|
292
|
+
element.maxDeliveryDate = new Date(element.maxDeliveryDate);
|
|
293
|
+
element.isSameDate =
|
|
294
|
+
element.maxDeliveryDate.getFullYear() ==
|
|
295
|
+
element.minDeliveryDate.getFullYear() &&
|
|
296
|
+
element.maxDeliveryDate.getMonth() ==
|
|
297
|
+
element.minDeliveryDate.getMonth() &&
|
|
298
|
+
element.maxDeliveryDate.getDay() ==
|
|
299
|
+
element.minDeliveryDate.getDay()
|
|
300
|
+
? true
|
|
301
|
+
: false;
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
this.orderSortLists = data === null || data === void 0 ? void 0 : data.sorts;
|
|
305
|
+
this.totalResults = (_a = data === null || data === void 0 ? void 0 : data.pagination) === null || _a === void 0 ? void 0 : _a.totalResults;
|
|
306
|
+
this.getStatusUpdate();
|
|
307
|
+
this.orderSortLists.forEach((element) => {
|
|
308
|
+
if (element.code == 'byDateDesc') {
|
|
309
|
+
element.value = 'Newest Order';
|
|
310
|
+
}
|
|
311
|
+
if (element.code == 'byDateAsc') {
|
|
312
|
+
element.value = 'Oldest Order';
|
|
313
|
+
}
|
|
314
|
+
if (element.code == 'byPODesc') {
|
|
315
|
+
element.value = 'Highest PO number';
|
|
316
|
+
}
|
|
317
|
+
if (element.code == 'byPOAsc') {
|
|
318
|
+
element.value = 'Lowest PO number';
|
|
319
|
+
}
|
|
320
|
+
if (element.code == 'byDeliveryDesc') {
|
|
321
|
+
element.value = 'Newest Delivery';
|
|
322
|
+
}
|
|
323
|
+
if (element.code == 'byDeliveryAsc') {
|
|
324
|
+
element.value = 'Oldest Delivery';
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
if (this.orderHistoryLists && this.orderHistoryLists.length > 0) {
|
|
328
|
+
this.dataAvailale = 'hasData';
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
this.dataAvailale = 'noData';
|
|
332
|
+
}
|
|
333
|
+
this.showWaitCursor.next(false);
|
|
334
|
+
setTimeout(() => {
|
|
335
|
+
this.isFirstCall = false;
|
|
336
|
+
}, 2000);
|
|
337
|
+
}, (error) => {
|
|
338
|
+
setTimeout(() => {
|
|
339
|
+
this.isFirstCall = false;
|
|
340
|
+
}, 2000);
|
|
341
|
+
this.showWaitCursor.next(false);
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
clearAll() {
|
|
345
|
+
this.searchText = '';
|
|
346
|
+
this.selectedOrderType = 'orderNumber';
|
|
347
|
+
this.selectedOrderState = [];
|
|
348
|
+
this.orderHistoryLists = [];
|
|
349
|
+
this.noSearchResults = true;
|
|
350
|
+
this.isClearAll = true;
|
|
351
|
+
this.isInputValue = false;
|
|
352
|
+
// this.getLastMonthDateRange();
|
|
353
|
+
// this.getOrderList();
|
|
354
|
+
sessionStorage.removeItem('selectedOrderFilters');
|
|
355
|
+
}
|
|
356
|
+
getSearchDropdownData() {
|
|
357
|
+
this.orderHistoryService
|
|
358
|
+
.getOrderHistorySearchStatuses()
|
|
359
|
+
.subscribe((data) => {
|
|
360
|
+
if (data) {
|
|
361
|
+
this.orderStatuses = data.statuses;
|
|
362
|
+
this.orderStatuses.forEach((element) => {
|
|
363
|
+
element.name = element.value;
|
|
364
|
+
});
|
|
365
|
+
this.deliveryTypes = data.types;
|
|
366
|
+
this.orderStates = data.states;
|
|
367
|
+
this.deliveryTypes.forEach((element) => {
|
|
368
|
+
element.name = element.value;
|
|
369
|
+
});
|
|
370
|
+
this.orderStates.forEach((element) => {
|
|
371
|
+
element.name = element.value;
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
toggleGridOrListView(event) {
|
|
377
|
+
event.preventDefault();
|
|
378
|
+
this.listview = !this.listview;
|
|
379
|
+
if (this.listview == false) {
|
|
380
|
+
setTimeout(() => {
|
|
381
|
+
this.masonry.reloadItems();
|
|
382
|
+
this.masonry.layout();
|
|
383
|
+
}, 1000);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
getCheckedOrderStatuses(data) {
|
|
387
|
+
const ind = this.selectedOrderState.findIndex((element) => element.name == data.value);
|
|
388
|
+
return ind > -1 ? true : false;
|
|
389
|
+
this.orderHistoryLists = [];
|
|
390
|
+
this.getSearchResults();
|
|
391
|
+
}
|
|
392
|
+
checkOrderStatus(event, data, mobileData) {
|
|
393
|
+
var _a;
|
|
394
|
+
this.currentPage = 0;
|
|
395
|
+
if (event.currentTarget.checked) {
|
|
396
|
+
this.selectedOrderState.push(data);
|
|
397
|
+
this.orderHistoryLists = [];
|
|
398
|
+
if (!mobileData) {
|
|
399
|
+
this.getSearchResults();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
const ind = this.selectedOrderState.findIndex((element) => element.value == data.value);
|
|
404
|
+
this.selectedOrderState.splice(ind, 1);
|
|
405
|
+
this.orderHistoryLists = [];
|
|
406
|
+
if (this.selectedOrderState.length == 0) {
|
|
407
|
+
this.noSearchResults = true;
|
|
408
|
+
}
|
|
409
|
+
if (!mobileData && ((_a = this.selectedOrderState) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
410
|
+
this.getSearchResults();
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
this.cd.markForCheck();
|
|
414
|
+
}
|
|
415
|
+
removeChips(data) {
|
|
416
|
+
var _a;
|
|
417
|
+
const ind = this.selectedOrderState.findIndex((element) => element.value == data.value);
|
|
418
|
+
this.selectedOrderState.splice(ind, 1);
|
|
419
|
+
this.orderHistoryLists = [];
|
|
420
|
+
if (((_a = this.selectedOrderState) === null || _a === void 0 ? void 0 : _a.length) == 0) {
|
|
421
|
+
this.noSearchResults = true;
|
|
422
|
+
this.orderHistoryLists = [];
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
this.getSearchResults();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
onChange(e) {
|
|
429
|
+
this.selectedOrderType = e.target.value;
|
|
430
|
+
}
|
|
431
|
+
onSubmit() {
|
|
432
|
+
this.getSearchResults();
|
|
433
|
+
}
|
|
434
|
+
getSelectedDate(event) {
|
|
435
|
+
const selectedFilters = sessionStorage.getItem('selectedOrderFilters');
|
|
436
|
+
if (this.isNullOrEmpty(selectedFilters === null || selectedFilters === void 0 ? void 0 : selectedFilters.toString())) {
|
|
437
|
+
event.name = event.value;
|
|
438
|
+
this.selectedDateRange = event;
|
|
439
|
+
const ind = this.selectedOrderState.findIndex((element) => element.key == 'orderDate' || element.key == 'deliveryDate');
|
|
440
|
+
if (ind > -1)
|
|
441
|
+
this.selectedOrderState.splice(ind, 1);
|
|
442
|
+
this.selectedOrderState.push(event);
|
|
443
|
+
if (this.isFirstCall == false) {
|
|
444
|
+
this.getSearchResults();
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
getStatusValue() {
|
|
449
|
+
this.orderHistoryLists.forEach((element) => {
|
|
450
|
+
if (element.status == 'CREATED') {
|
|
451
|
+
element.statusValue = 1;
|
|
452
|
+
}
|
|
453
|
+
else if (element.status == 'APPROVED') {
|
|
454
|
+
element.statusValue = 2;
|
|
455
|
+
}
|
|
456
|
+
else if (element.status == 'PROCESSING') {
|
|
457
|
+
element.statusValue = 3;
|
|
458
|
+
}
|
|
459
|
+
else if (element.status == 'READY') {
|
|
460
|
+
element.statusValue = 4;
|
|
461
|
+
}
|
|
462
|
+
else if (element.status == 'DELIVERING') {
|
|
463
|
+
element.statusValue = 5;
|
|
464
|
+
}
|
|
465
|
+
else if (element.status == 'COMPLETED') {
|
|
466
|
+
element.statusValue = 6;
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
sortBy(e) {
|
|
471
|
+
this.sortByValue = e.target.value;
|
|
472
|
+
const reqObj = {
|
|
473
|
+
searchParams: this.selectedFilters,
|
|
474
|
+
};
|
|
475
|
+
this.orderHistoryService
|
|
476
|
+
.sortOrderHistory(this.sortByValue, reqObj)
|
|
477
|
+
.subscribe((res) => {
|
|
478
|
+
var _a;
|
|
479
|
+
this.orderHistoryLists = res === null || res === void 0 ? void 0 : res.orders;
|
|
480
|
+
this.totalResults = (_a = res === null || res === void 0 ? void 0 : res.pagination) === null || _a === void 0 ? void 0 : _a.totalResults;
|
|
481
|
+
this.getStatusValue();
|
|
482
|
+
this.showWaitCursor.next(false);
|
|
483
|
+
}, (error) => {
|
|
484
|
+
this.showWaitCursor.next(false);
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
getSearchResults() {
|
|
488
|
+
this.selectedFilters = JSON.parse(JSON.stringify(this.selectedOrderState));
|
|
489
|
+
const obj = {
|
|
490
|
+
key: this.selectedOrderType,
|
|
491
|
+
value: this.searchText,
|
|
492
|
+
};
|
|
493
|
+
if (this.searchText != '' &&
|
|
494
|
+
(this.selectedOrderType == 'orderNumber' ||
|
|
495
|
+
this.selectedOrderType == 'poNumber')) {
|
|
496
|
+
this.selectedOrderState = [];
|
|
497
|
+
this.selectedFilters = [];
|
|
498
|
+
this.selectedFilters.push(obj);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
this.selectedFilters.push(obj);
|
|
502
|
+
}
|
|
503
|
+
const reqObj = {
|
|
504
|
+
searchParams: this.selectedFilters,
|
|
505
|
+
};
|
|
506
|
+
this.showWaitCursor.next(true);
|
|
507
|
+
this.orderHistoryService.getOrderHistorySearchResults(reqObj, this.currentPage).subscribe((res) => {
|
|
508
|
+
var _a, _b;
|
|
509
|
+
if (res && ((_a = res === null || res === void 0 ? void 0 : res.orders) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
510
|
+
if (this.currentPage > 0) {
|
|
511
|
+
this.orderHistoryLists = this.orderHistoryLists.concat(res === null || res === void 0 ? void 0 : res.orders);
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
this.orderHistoryLists = res === null || res === void 0 ? void 0 : res.orders;
|
|
515
|
+
}
|
|
516
|
+
this.orderHistoryLists.forEach((element) => {
|
|
517
|
+
if (element.minDeliveryDate && element.maxDeliveryDate) {
|
|
518
|
+
element.minDeliveryDate = new Date(element.minDeliveryDate);
|
|
519
|
+
element.maxDeliveryDate = new Date(element.maxDeliveryDate);
|
|
520
|
+
element.isSameDate =
|
|
521
|
+
element.maxDeliveryDate.getFullYear() ==
|
|
522
|
+
element.minDeliveryDate.getFullYear() &&
|
|
523
|
+
element.maxDeliveryDate.getMonth() ==
|
|
524
|
+
element.minDeliveryDate.getMonth() &&
|
|
525
|
+
element.maxDeliveryDate.getDay() ==
|
|
526
|
+
element.minDeliveryDate.getDay()
|
|
527
|
+
? true
|
|
528
|
+
: false;
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
if (this.orderHistoryLists && this.orderHistoryLists.length > 0) {
|
|
532
|
+
this.dataAvailale = 'hasData';
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
this.dataAvailale = 'noData';
|
|
536
|
+
}
|
|
537
|
+
this.totalResults = (_b = res === null || res === void 0 ? void 0 : res.pagination) === null || _b === void 0 ? void 0 : _b.totalResults;
|
|
538
|
+
this.orderSortLists = res === null || res === void 0 ? void 0 : res.sorts;
|
|
539
|
+
this.noSearchResults = false;
|
|
540
|
+
this.orderSortLists.forEach((element) => {
|
|
541
|
+
if (element.code == 'byDateDesc') {
|
|
542
|
+
element.value = 'Newest Order';
|
|
543
|
+
}
|
|
544
|
+
if (element.code == 'byDateAsc') {
|
|
545
|
+
element.value = 'Oldest Order';
|
|
546
|
+
}
|
|
547
|
+
if (element.code == 'byPODesc') {
|
|
548
|
+
element.value = 'Highest PO number';
|
|
549
|
+
}
|
|
550
|
+
if (element.code == 'byPOAsc') {
|
|
551
|
+
element.value = 'Lowest PO number';
|
|
552
|
+
}
|
|
553
|
+
if (element.code == 'byDeliveryDesc') {
|
|
554
|
+
element.value = 'Newest Delivery';
|
|
555
|
+
}
|
|
556
|
+
if (element.code == 'byDeliveryAsc') {
|
|
557
|
+
element.value = 'Oldest Delivery';
|
|
558
|
+
}
|
|
559
|
+
});
|
|
560
|
+
this.getStatusValue();
|
|
561
|
+
this.cd.markForCheck();
|
|
562
|
+
this.showWaitCursor.next(false);
|
|
563
|
+
if (this.selectedOrderNumber != '' && this.sesstionStorageCalled) {
|
|
564
|
+
setTimeout(() => {
|
|
565
|
+
this.sesstionStorageCalled = false;
|
|
566
|
+
const element = document.getElementById('id-' + this.selectedOrderNumber);
|
|
567
|
+
element.scrollIntoView({ behavior: 'smooth', top: 150 });
|
|
568
|
+
}, 500);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
else {
|
|
572
|
+
this.showWaitCursor.next(false);
|
|
573
|
+
this.orderHistoryLists = [];
|
|
574
|
+
this.noSearchResults = true;
|
|
575
|
+
}
|
|
576
|
+
}, (error) => {
|
|
577
|
+
this.showWaitCursor.next(false);
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
onSearchChange(e) {
|
|
581
|
+
if (e.target.value == '' || e.target.value == ' ') {
|
|
582
|
+
this.isInputValue = false;
|
|
583
|
+
}
|
|
584
|
+
else {
|
|
585
|
+
this.isInputValue = true;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
search() {
|
|
589
|
+
this.currentPage = 0;
|
|
590
|
+
this.getSearchResults();
|
|
591
|
+
}
|
|
592
|
+
loadMoreRecord() {
|
|
593
|
+
this.loaderImage.next(true);
|
|
594
|
+
this.currentPage += 1;
|
|
595
|
+
this.getOrderList();
|
|
596
|
+
}
|
|
597
|
+
orderNumberClicked(orderNumber, newWindowFlag) {
|
|
598
|
+
var _a;
|
|
599
|
+
sessionStorage.removeItem('selectedOrderFilters');
|
|
600
|
+
const obj = {
|
|
601
|
+
selectedFilters: this.selectedOrderState.length == 0 && this.selectedFilters.length > 0 ? this.selectedFilters : this.selectedOrderState,
|
|
602
|
+
currentPage: this.currentPage,
|
|
603
|
+
orderNumber: orderNumber,
|
|
604
|
+
selectedOrderType: this.selectedOrderType
|
|
605
|
+
};
|
|
606
|
+
if (this.searchText != '') {
|
|
607
|
+
obj.searchText = this.searchText;
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
const ind = (_a = this.selectedFilters) === null || _a === void 0 ? void 0 : _a.findIndex((element) => element.key == this.selectedOrderType);
|
|
611
|
+
if (ind > -1) {
|
|
612
|
+
this.selectedFilters.splice(ind, 1);
|
|
613
|
+
}
|
|
614
|
+
obj.selectedFilters = this.selectedFilters;
|
|
615
|
+
}
|
|
616
|
+
sessionStorage.setItem('selectedOrderFilters', JSON.stringify(obj));
|
|
617
|
+
if (newWindowFlag) {
|
|
618
|
+
window.open(this.storeFrontUrl + '/my-account/order/' + orderNumber, '_blank');
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
window.location.href = this.storeFrontUrl + '/my-account/order/' + orderNumber;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
onRightClick(event, item) {
|
|
625
|
+
// preventDefault avoids to show the visualization of the right-click menu of the browser
|
|
626
|
+
event.preventDefault();
|
|
627
|
+
// we record the mouse position in our object
|
|
628
|
+
this.menuTopLeftPosition.x = event.clientX;
|
|
629
|
+
this.menuTopLeftPosition.y = event.clientY;
|
|
630
|
+
this.items = [];
|
|
631
|
+
this.items.push(item);
|
|
632
|
+
// we open the menu
|
|
633
|
+
// we pass to the menu the information about our object
|
|
634
|
+
this.matMenuTrigger.menuData = { item: item };
|
|
635
|
+
this.matMenuTrigger.closeMenu();
|
|
636
|
+
// we open the menu
|
|
637
|
+
this.matMenuTrigger.openMenu();
|
|
638
|
+
}
|
|
639
|
+
onScroll() {
|
|
640
|
+
if (!this.noSearchResults &&
|
|
641
|
+
this.totalResults > this.orderHistoryLists.length) {
|
|
642
|
+
this.loadMoreRecord();
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
onResize(event) {
|
|
646
|
+
event.target.innerWidth;
|
|
647
|
+
if (event.target.innerWidth < 992) {
|
|
648
|
+
this.isMobile = true;
|
|
649
|
+
this.isDesktop = false;
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
this.isDesktop = true;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
onPageRefresh() {
|
|
656
|
+
this.isMobile = CommonUtils.isMobile();
|
|
657
|
+
this.isTablet = CommonUtils.isTablet();
|
|
658
|
+
this.isDesktop = CommonUtils.isDesktop();
|
|
659
|
+
}
|
|
660
|
+
ngOnDestroy() {
|
|
661
|
+
sessionStorage.removeItem('selectedOrderFilters');
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
CustomOrderHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomOrderHistoryComponent, deps: [{ token: i1.CmsService }, { token: i2.OrderHistoryService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
665
|
+
CustomOrderHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomOrderHistoryComponent, selector: "app-custom-order-history", viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, static: true }, { propertyName: "masonry", first: true, predicate: NgxMasonryComponent, descendants: true }], ngImport: i0, template: "<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\"></app-custom-breadcrum>\r\n<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n\r\n<div\r\n class=\"container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <ng-container *ngIf=\"dataAvailale == 'hasData'\">\r\n <h1 class=\"pageTitle\">{{ pageTitle }}</h1> \r\n <div \r\n *ngIf=\"orderHistoryHeading\"\r\n class=\"text-left pageParaText mb-5 col-sm-9 pl-0\"\r\n [innerHTML]=\"orderHistoryHeading\"\r\n ></div> \r\n <span class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"order-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"jobReference\"\r\n [selected]=\"selectedOrderType == 'jobReference'\"\r\n >\r\n Job Ref\r\n </option>\r\n <option\r\n value=\"productCode\"\r\n [selected]=\"selectedOrderType == 'productCode'\"\r\n >\r\n SKU / Item #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchText\"\r\n (input)=\"onSearchChange($event)\"\r\n class=\"form-control\"\r\n (keyup.enter)=\"search()\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n [disabled]=\"!isInputValue\"\r\n (click)=\"search()\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n class=\"d-flex-mobile\"\r\n [selectedDateRange]=\"selectedDateFilterValue\"\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Delivery Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of deliveryTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedOrderState.length > 0\">\r\n <ng-container\r\n *ngIf=\"selectedOrderState && selectedOrderState.length > 0\"\r\n >\r\n <div class=\"chips\" *ngFor=\"let data of selectedOrderState\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"orderStatuses\"\r\n ? \"Order Status\"\r\n : data.key == \"orderState\"\r\n ? \"Order State\"\r\n : data.key == \"orderDate\"\r\n ? \"Order\"\r\n : data.key == \"deliveryDate\"\r\n ? \"Delivery\"\r\n : \"Delivery Type\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.name }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\r\n >\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n (click)=\"clearAll()\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"container\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Order State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Delivery Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of deliveryTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Order Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"noSearchResults\">\r\n <div class=\"noResults text-center\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div\r\n class=\"text-center\"\r\n [innerHTML]=\"\r\n noSearchResultContent\r\n ? noSearchResultContent\r\n : 'No Results Found !'\r\n \"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"order-history-table\" *ngIf=\"orderHistoryLists.length > 0\">\r\n <span class=\"total-order\">{{ totalResults }} orders found</span>\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of orderSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n <!-- <div class=\"btn-group\">\r\n <button class=\"btn history-table-dropdown position-relative\" type=\"button\" id=\"orderStatus\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Optional column\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of optionalColumns\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n [value]=\"data.value\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- ORDER HISTORY LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && orderHistoryLists.length > 0\"\r\n >\r\n <table class=\"table order-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">\r\n Order #\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ orderTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Po #\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ poTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Order Date\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ orderDateTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Type\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ deliveryTypeTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Dates\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ deliveryDateTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Address\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ deliveryAddressTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Total Price \r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ totalPriceTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n <br />\r\n <span class=\"gst-text\">excl GST</span>\r\n \r\n </th>\r\n <th scope=\"col\">\r\n Status\r\n <span\r\n class=\"d-inline-block ml-2\"\r\n ngbTooltip=\"{{ statusTooltipContent }}\"\r\n placement=\"bottom\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-metro-info.svg\"\r\n alt=\"info-icon\"\r\n />\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let orders of orderHistoryLists\">\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n style=\"padding-bottom: 20px\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"orderNumberClicked(orders.code, false)\"\r\n >{{ orders?.code }}</a\r\n >\r\n </td>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n <td>{{ orders?.placed | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n </td>\r\n <td class=\"ellipsis\">\r\n {{ orders?.deliveryAddress?.formattedAddress }}\r\n </td>\r\n <td class=\"price-bold\">{{ orders?.total?.formattedValue }}</td>\r\n <td>\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- ORDER HISTORY GRID -->\r\n <ngx-masonry \r\n class=\"row grid-view \"\r\n *ngIf=\"(!listview || !isDesktop) && orderHistoryLists.length > 0\"\r\n >\r\n <div\r\n ngxMasonryItem\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let orders of orderHistoryLists\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Order #:</th>\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a href=\"javascript:void(0)\" (click)=\"orderNumberClicked(orders.code, false)\">{{\r\n orders?.code\r\n }}</a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Delivery Type:</th>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n </tr>\r\n <tr>\r\n <th>Delivery Dates:</th>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n <span\r\n *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-2\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Order Date:</th>\r\n <td>{{ orders?.placed | customDatePipe : \"dd/MM/yy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Address:</th>\r\n <td>{{ orders?.deliveryAddress?.formattedAddress }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total Price:</th>\r\n <td class=\"price-bold\">\r\n {{ orders?.total?.formattedValue }}\r\n <span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-bottom\">\r\n <p>\r\n Status:\r\n <span\r\n *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-2\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </p>\r\n <div\r\n class=\"pb-3 mb-3\"\r\n [ngClass]=\"{ 'pt-4 mt-4': orders?.maxLineStatus }\"\r\n >\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ngx-masonry>\r\n </ng-container>\r\n <div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left.px]=\"menuTopLeftPosition.x\"\r\n [style.top.px]=\"menuTopLeftPosition.y\"\r\n [matMenuTriggerFor]=\"rightMenu\"\r\n ></div>\r\n\r\n <mat-menu #rightMenu=\"matMenu\">\r\n <div matMenuContent *ngFor=\"let item of items\">\r\n <button (click)=\"orderNumberClicked(item, true)\" mat-menu-item>\r\n Open Order in new tab\r\n </button>\r\n </div>\r\n </mat-menu>\r\n <ng-container *ngIf=\"loaderImage | async\">\r\n <div class=\"col-sm-12 mx-auto text-center mb-4\">\r\n <span class=\"product-loader\">\r\n <i class=\"loader-icon fas fa-spinner fa-pulse\"></i>\r\n <span class=\"loader-text\">loading\u2026.</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- NO ORDER HISTORY -->\r\n <ng-container *ngIf=\"dataAvailale == 'noData'\">\r\n <div class=\"row empty-orderpage-container\">\r\n <div class=\"col-sm-12 col-md-10 col-lg-10 m-auto\">\r\n <div class=\"text-center\" [innerHTML]=\"noOrderHistoryData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}*{scroll-margin-top:144px}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;margin-right:30px;padding:12px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:42px;height:auto;cursor:pointer;border:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom{background-color:#fff;padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom p{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;margin-bottom:20px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .list-view{overflow-x:hidden}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;position:relative;padding-bottom:1.5rem}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead th span{position:absolute}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr.selectedOrder{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr:hover{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td:last-child{min-width:220px;padding:40px 20px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table .gst-text{font-size:var(--fontsize12);text-transform:none}.status-text{font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.noResults{margin:5rem auto}.noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}.empty-orderpage-container{margin:10rem auto}::ng-deep .ngx-slider{margin:0!important;pointer-events:none;height:30px!important}::ng-deep .ngx-slider .ngx-slider-bar{height:7px;background:#A6A6A5!important}::ng-deep .ngx-slider .ngx-slider-tick{width:5px;height:5px;top:3px}::ng-deep .ngx-slider .ngx-slider-selected{background-color:#646363!important}::ng-deep .ngx-slider .ngx-slider-pointer{position:relative;width:30px;height:30px}::ng-deep .ngx-slider .ngx-slider-pointer:after{display:none}::ng-deep .ngx-slider .ngx-slider-inner-tooltip{display:none}::ng-deep .ngx-slider .ngx-slider-tick-legend{display:none!important;white-space:nowrap!important}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:18px!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.order-search-block{background-color:transparent!important;border:none!important;padding:10px 0!important}.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .ngx-daterangepicker-action{margin-right:0!important}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}.input-group-prepend select{height:48px}.order-history-table .history-table-dropdown{width:160px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}#main{margin:.75rem 0}#main .container{padding:0}#main #faq .card{margin-bottom:0}#main #faq .card .btn-header-link{padding-left:0}.grid-bottom p{text-align:center}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i3.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.SliderProgressComponent, selector: "app-slider-progress", inputs: ["sliderData"] }, { type: i6.NgxMasonryComponent, selector: "[ngx-masonry], ngx-masonry", inputs: ["updateLayout", "ordered", "options"], outputs: ["layoutComplete", "removeComplete", "itemsLoaded"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.NgxMasonryDirective, selector: "[ngxMasonryItem], ngxMasonryItem", inputs: ["prepend"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "async": i8.AsyncPipe, "date": i8.DatePipe, "customDatePipe": i12.CustomDatePipe } });
|
|
666
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomOrderHistoryComponent, decorators: [{
|
|
667
|
+
type: Component,
|
|
668
|
+
args: [{
|
|
669
|
+
selector: 'app-custom-order-history',
|
|
670
|
+
templateUrl: './custom-order-history.component.html',
|
|
671
|
+
styleUrls: ['./custom-order-history.component.scss']
|
|
672
|
+
}]
|
|
673
|
+
}], ctorParameters: function () { return [{ type: i1.CmsService }, { type: i2.OrderHistoryService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { matMenuTrigger: [{
|
|
674
|
+
type: ViewChild,
|
|
675
|
+
args: [MatMenuTrigger, { static: true }]
|
|
676
|
+
}], masonry: [{
|
|
677
|
+
type: ViewChild,
|
|
678
|
+
args: [NgxMasonryComponent, { static: false }]
|
|
679
|
+
}] } });
|
|
680
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW9yZGVyLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jdXN0b20tb3JkZXItaGlzdG9yeS9jdXN0b20tb3JkZXItaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2N1c3RvbS1vcmRlci1oaXN0b3J5L2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFxQixTQUFTLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBT2xELE1BQU0sT0FBTywyQkFBMkI7SUF5RHRDLFlBQ1MsVUFBc0IsRUFDckIsbUJBQXdDLEVBQ3pDLEVBQXFCO1FBRnJCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN6QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXZEOUIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFDekIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsZ0JB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QUFRLENBQUMsS0FBVTtRQUNqQixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxXQUFXO1FBQ1QsY0FBYyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O3lIQXRxQlUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsZ0hBdUQzQixjQUFjLHdGQUNkLG1CQUFtQixnREN2RWhDLHM1N0JBNnhCQTs0RkQ5d0JhLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsdUNBQXVDO29CQUNwRCxTQUFTLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQztpQkFDckQ7bUtBd0Q4QyxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1EsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgT3JkZXJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29yZGVyLWhpc3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblV0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE5neE1hc29ucnlDb21wb25lbnQgfSBmcm9tICduZ3gtbWFzb25yeSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tb3JkZXItaGlzdG9yeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tb3JkZXItaGlzdG9yeS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21PcmRlckhpc3RvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcGFnZVRpdGxlOiBhbnk7XHJcbiAgb3JkZXJIaXN0b3J5SGVhZGluZzogYW55O1xyXG4gIG5vT3JkZXJIaXN0b3J5RGF0YTogYW55O1xyXG4gIG5vU2VhcmNoUmVzdWx0Q29udGVudDogYW55O1xyXG4gIGxpc3R2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICBub1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkYXRhQXZhaWxhbGU/OiBzdHJpbmc7XHJcbiAgb3JkZXJIaXN0b3J5TGlzdHM6IGFueSA9IFtdO1xyXG4gIG9yZGVyU29ydExpc3RzOiBhbnkgPSBbXTtcclxuICBvcmRlclN0YXR1c2VzOiBhbnkgPSBbXTtcclxuICBvcmRlclN0YXRlczogYW55ID0gW107XHJcbiAgZGVsaXZlcnlUeXBlczogYW55ID0gW107XHJcbiAgaXNEZXNrdG9wID0gdHJ1ZTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGlzVGFibGV0ID0gZmFsc2U7XHJcbiAgYnJlYWRjcnVtYkRhdGE6IGFueSA9IFtdO1xyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgb3B0aW9uYWxDb2x1bW5zID0gW1xyXG4gICAgeyBuYW1lOiAnT3JkZXInLCB2YWx1ZTogJ29yZGVyJyB9LFxyXG4gICAgeyBuYW1lOiAnUE8nLCB2YWx1ZTogJ3BvJyB9LFxyXG4gICAgeyBuYW1lOiAnT3JkZXIgRGF0ZScsIHZhbHVlOiAnb3JkZXJEYXRlJyB9LFxyXG4gICAgeyBuYW1lOiAnRGVsaXZlcnkgVHlwZScsIHZhbHVlOiAnZGVsaXZlcnlUeXBlJyB9LFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRPcmRlclN0YXRlOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ29yZGVyTnVtYmVyJztcclxuICBsb2dUZXh0OiBhbnk7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VudicpO1xyXG4gIGVudiA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnZpcm9ubWVudCk7XHJcbiAgc3RvcmVGcm9udFVybCA9IHRoaXMuZW52LlVJc2l0ZVVSbDtcclxuICBzb3J0QnlWYWx1ZTogYW55O1xyXG4gIGxvYWRlckltYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgY3VycmVudFBhZ2UgPSAwO1xyXG4gIHRvdGFsUmVzdWx0czogYW55O1xyXG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnk7XHJcbiAgc2VsZWN0ZWREYXRlS2V5OiBzdHJpbmcgPSAnb3JkZXJEYXRlJztcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueTtcclxuICBpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcclxuICBvcmRlclRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgcG9Ub29sdGlwQ29udGVudDogYW55O1xyXG4gIG9yZGVyRGF0ZVRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgZGVsaXZlcnlUeXBlVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBkZWxpdmVyeURhdGVUb29sdGlwQ29udGVudDogYW55O1xyXG4gIGRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgdG90YWxQcmljZVRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgc3RhdHVzVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBzZWxlY3RlZE9yZGVyTnVtYmVyOiBzdHJpbmcgPSAnJztcclxuICBzZXNzdGlvblN0b3JhZ2VDYWxsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZTogYW55O1xyXG4gIGl0ZW1zOiBhbnkgPSBbXTtcclxuICBpc0ZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbWVudVRvcExlZnRQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xyXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIsIHsgc3RhdGljOiB0cnVlIH0pIG1hdE1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKE5neE1hc29ucnlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXNvbnJ5OiBOZ3hNYXNvbnJ5Q29tcG9uZW50O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZGVySGlzdG9yeVNlcnZpY2U6IE9yZGVySGlzdG9yeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJEYXRhLnB1c2goeyB1cmw6ICcvJywgbmFtZTogJ0hvbWUnIH0sIHsgdXJsOiAnL215LWFjY291bnQvb3JkZXJzJywgbmFtZTogJ015IE9yZGVycycgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2UuZ2V0Q3VycmVudFBhZ2UoKS5zdWJzY3JpYmUoKHBhZ2FkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYWdlVGl0bGUgPSBwYWdhZGF0YS50aXRsZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eU9yZGVyTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vT3JkZXJIaXN0b3J5RGF0YSA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdPcmRlckhpc3RvcnlQYXJhZ3JhcGhDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlIZWFkaW5nID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ0VtcHR5U2VhcmNoT3JkZXJMaXN0Q29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMubm9TZWFyY2hSZXN1bHRDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfY29kZScpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9wdXJjaGFzZU9yZGVyTnVtYmVyJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMucG9Ub29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X3BsYWNlZCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyRGF0ZVRvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfZGVsaXZlcnlNb2RlJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuZGVsaXZlcnlUeXBlVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9kZWxpdmVyeURhdGUnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeURhdGVUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X2RlbGl2ZXJ5QWRkcmVzcycpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfdG90YWwnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbFByaWNlVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9zdGF0dXMnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9ICdvcmRlck51bWJlcic7XHJcbiAgICB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hEcm9wZG93bkRhdGEoKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJyk7XHJcbiAgICBpZiAodGhpcy5pc051bGxPckVtcHR5KHNlbGVjdGVkRmlsdGVycz8udG9TdHJpbmcoKSkpIHtcclxuICAgICAgdGhpcy5nZXRPcmRlckxpc3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyRGF0YTogYW55ID0gSlNPTi5wYXJzZShzZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgICBpZiAob3JkZXJEYXRhLnNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gb3JkZXJEYXRhLnNlbGVjdGVkT3JkZXJUeXBlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG9yZGVyRGF0YS5zZWFyY2hUZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBvcmRlckRhdGEuY3VycmVudFBhZ2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcmRlckRhdGEuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZSAmJiB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5rZXkgPT0gJ29yZGVyRGF0ZScpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZT8udmFsdWU/LnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBzZWxlY3RlZERhdGVbMF0uc3BsaXQoJy8nKVsxXSArICcvJyArIHNlbGVjdGVkRGF0ZVswXS5zcGxpdCgnLycpWzBdICsgJy8nICsgc2VsZWN0ZWREYXRlWzBdLnNwbGl0KCcvJylbMl07XHJcbiAgICAgICAgICBjb25zdCBlbmREYXRlID0gc2VsZWN0ZWREYXRlWzFdLnNwbGl0KCcvJylbMV0gKyAnLycgKyBzZWxlY3RlZERhdGVbMV0uc3BsaXQoJy8nKVswXSArICcvJyArIHNlbGVjdGVkRGF0ZVsxXS5zcGxpdCgnLycpWzJdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZSA9IHsgc3RhcnREYXRlOiBtb21lbnQobmV3IERhdGUoc3RhcnREYXRlKSksIGVuZERhdGU6IG1vbWVudChuZXcgRGF0ZShlbmREYXRlKSkgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyTnVtYmVyID0gb3JkZXJEYXRhLm9yZGVyTnVtYmVyO1xyXG4gICAgICB0aGlzLnNlc3N0aW9uU3RvcmFnZUNhbGxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblBhZ2VSZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSA9PSBmYWxzZSkge1xyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RhdHVzVXBkYXRlKCk7XHJcbiAgICAgICAgLy8gfSwgMzAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBpc051bGxPckVtcHR5KHZhbHVlVG9DaGVjazogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKHZhbHVlVG9DaGVjayA9PSBudWxsIHx8IHZhbHVlVG9DaGVjayA9PSAnJykgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0TW9udGhEYXRlUmFuZ2UoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gW21vbWVudCgpLnN1YnRyYWN0KDI5LCAnZGF5cycpLCBtb21lbnQoKV07XHJcbiAgICBjb25zdCBkYXRlVmFsdWUgPVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMF0uX2QuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RGF0ZSgpICtcclxuICAgICAgJy8nICtcclxuICAgICAgKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgJy8nICtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVsxXS5fZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAga2V5OiB0aGlzLnNlbGVjdGVkRGF0ZUtleSxcclxuICAgICAgdmFsdWU6IGRhdGVWYWx1ZSxcclxuICAgICAgbmFtZTogZGF0ZVZhbHVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnB1c2gob2JqKTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c1VwZGF0ZSgpIHtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAwO1xyXG4gICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAwO1xyXG4gICAgICBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdDUkVBVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnQVBQUk9WRUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5taW5WYWx1ZSA9IDI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnUkVBRFknKSB7XHJcbiAgICAgICAgZWxlbWVudC5taW5WYWx1ZSA9IDQ7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdERUxJVkVSSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSA1O1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdBUFBST1ZFRCcpIHtcclxuICAgICAgICBlbGVtZW50Lm1heFZhbHVlID0gMjtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ1BST0NFU1NJTkcnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDM7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50Lm1heFZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ0RFTElWRVJJTkcnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdDT01QTEVURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDY7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JkZXJMaXN0KCkge1xyXG4gICAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcbiAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcmRlckhpc3RvcnlTZXJ2aWNlLmdldE9yZGVySGlzdG9yeUxpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA9PSAwID8gZGF0YS5vcmRlcnMgOiAgWy4uLnRoaXMub3JkZXJIaXN0b3J5TGlzdHMsIGRhdGE/Lm9yZGVyc107XHJcbiAgICAgICAgICBpZiAodGhpcy5pc0NsZWFyQWxsID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2xlYXJBbGwgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmNvbmNhdChkYXRhLm9yZGVycyk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5taW5EZWxpdmVyeURhdGUgJiYgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSA9IG5ldyBEYXRlKGVsZW1lbnQubWluRGVsaXZlcnlEYXRlKTtcclxuICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSA9IG5ldyBEYXRlKGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlKTtcclxuICAgICAgICAgICAgICBlbGVtZW50LmlzU2FtZURhdGUgPVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0RnVsbFllYXIoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXRGdWxsWWVhcigpICYmXHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldE1vbnRoKCkgPT1cclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5taW5EZWxpdmVyeURhdGUuZ2V0TW9udGgoKSAmJlxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXREYXkoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXREYXkoKVxyXG4gICAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyU29ydExpc3RzID0gZGF0YT8uc29ydHM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IGRhdGE/LnBhZ2luYXRpb24/LnRvdGFsUmVzdWx0cztcclxuICAgICAgICAgIHRoaXMuZ2V0U3RhdHVzVXBkYXRlKCk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyU29ydExpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURhdGVEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IE9yZGVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURhdGVBc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdPbGRlc3QgT3JkZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5UE9EZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnSGlnaGVzdCBQTyBudW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5UE9Bc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdMb3dlc3QgUE8gbnVtYmVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURlbGl2ZXJ5RGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ05ld2VzdCBEZWxpdmVyeSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEZWxpdmVyeUFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBEZWxpdmVyeSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgJiYgdGhpcy5vcmRlckhpc3RvcnlMaXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWxlID0gJ2hhc0RhdGEnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhQXZhaWxhbGUgPSAnbm9EYXRhJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0ZpcnN0Q2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnb3JkZXJOdW1iZXInO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUgPSBbXTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgIHRoaXMubm9TZWFyY2hSZXN1bHRzID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNDbGVhckFsbCA9IHRydWU7XHJcbiAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5nZXRMYXN0TW9udGhEYXRlUmFuZ2UoKTtcclxuICAgIC8vIHRoaXMuZ2V0T3JkZXJMaXN0KCk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzZWxlY3RlZE9yZGVyRmlsdGVycycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoRHJvcGRvd25EYXRhKCkge1xyXG4gICAgdGhpcy5vcmRlckhpc3RvcnlTZXJ2aWNlXHJcbiAgICAgIC5nZXRPcmRlckhpc3RvcnlTZWFyY2hTdGF0dXNlcygpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyU3RhdHVzZXMgPSBkYXRhLnN0YXR1c2VzO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXR1c2VzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50Lm5hbWUgPSBlbGVtZW50LnZhbHVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5VHlwZXMgPSBkYXRhLnR5cGVzO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXRlcyA9IGRhdGEuc3RhdGVzO1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeVR5cGVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50Lm5hbWUgPSBlbGVtZW50LnZhbHVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyU3RhdGVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50Lm5hbWUgPSBlbGVtZW50LnZhbHVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUdyaWRPckxpc3RWaWV3KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmxpc3R2aWV3ID0gIXRoaXMubGlzdHZpZXc7XHJcbiAgICBpZiAodGhpcy5saXN0dmlldyA9PSBmYWxzZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm1hc29ucnkucmVsb2FkSXRlbXMoKVxyXG4gICAgICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkT3JkZXJTdGF0dXNlcyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5uYW1lID09IGRhdGEudmFsdWVcclxuICAgICk7XHJcbiAgICByZXR1cm4gaW5kID4gLTEgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrT3JkZXJTdGF0dXMoZXZlbnQ6IGFueSwgZGF0YTogYW55LCBtb2JpbGVEYXRhPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcclxuICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUucHVzaChkYXRhKTtcclxuICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgICBpZiAoIW1vYmlsZURhdGEpIHtcclxuICAgICAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5zcGxpY2UoaW5kLCAxKTtcclxuICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUubGVuZ3RoID09IDApIHtcclxuICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFtb2JpbGVEYXRhICYmIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlwcyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC52YWx1ZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuc3BsaWNlKGluZCwgMSk7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9yZGVyU3RhdGU/Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMubm9TZWFyY2hSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZERhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJzOiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZE9yZGVyRmlsdGVycycpO1xyXG4gICAgaWYgKHRoaXMuaXNOdWxsT3JFbXB0eShzZWxlY3RlZEZpbHRlcnM/LnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgIGV2ZW50Lm5hbWUgPSBldmVudC52YWx1ZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGV2ZW50O1xyXG4gICAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGVsZW1lbnQua2V5ID09ICdvcmRlckRhdGUnIHx8IGVsZW1lbnQua2V5ID09ICdkZWxpdmVyeURhdGUnXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmQgPiAtMSkgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnB1c2goZXZlbnQpO1xyXG4gICAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzVmFsdWUoKSB7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNvcnRCeShlOiBhbnkpIHtcclxuICAgIHRoaXMuc29ydEJ5VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZVxyXG4gICAgICAuc29ydE9yZGVySGlzdG9yeSh0aGlzLnNvcnRCeVZhbHVlLCByZXFPYmopXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gcmVzPy5vcmRlcnM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXNWYWx1ZSgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hSZXN1bHRzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCAhPSAnJyAmJlxyXG4gICAgICAodGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInIHx8XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAncG9OdW1iZXInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZS5nZXRPcmRlckhpc3RvcnlTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ub3JkZXJzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuY29uY2F0KHJlcz8ub3JkZXJzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSByZXM/Lm9yZGVycztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSAmJiBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5taW5EZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5tYXhEZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaXNTYW1lRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXRGdWxsWWVhcigpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0TW9udGgoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXRNb250aCgpICYmXHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldERheSgpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldERheSgpXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLm9yZGVySGlzdG9yeUxpc3RzICYmIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFBdmFpbGFsZSA9ICdoYXNEYXRhJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWxlID0gJ25vRGF0YSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG5cclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMgPSByZXM/LnNvcnRzO1xyXG4gICAgICAgICAgdGhpcy5ub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZURlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgT3JkZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZUFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBPcmRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0Rlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IFBPIG51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0FzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBQTyBudW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGVsaXZlcnlEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURlbGl2ZXJ5QXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdldFN0YXR1c1ZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3JkZXJOdW1iZXIgIT0gJycgJiYgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWQtJyArIHRoaXMuc2VsZWN0ZWRPcmRlck51bWJlcik7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiAxNTAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoZS50YXJnZXQudmFsdWUgPT0gJycgfHwgZS50YXJnZXQudmFsdWUgPT0gJyAnKSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2goKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgbG9hZE1vcmVSZWNvcmQoKSB7XHJcbiAgICB0aGlzLmxvYWRlckltYWdlLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHJcbiAgICB0aGlzLmdldE9yZGVyTGlzdCgpO1xyXG4gIH1cclxuICBvcmRlck51bWJlckNsaWNrZWQob3JkZXJOdW1iZXI6IGFueSwgbmV3V2luZG93RmxhZzogYm9vbGVhbikge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICAgIGNvbnN0IG9iajogYW55ID0ge1xyXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmxlbmd0aCA9PSAwICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycyA6IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLFxyXG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgb3JkZXJOdW1iZXI6IG9yZGVyTnVtYmVyLFxyXG4gICAgICBzZWxlY3RlZE9yZGVyVHlwZTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPSAnJykge1xyXG4gICAgICBvYmouc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5rZXkgPT0gdGhpcy5zZWxlY3RlZE9yZGVyVHlwZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kID4gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zcGxpY2UoaW5kLCAxKTtcclxuICAgICAgfVxyXG4gICAgICBvYmouc2VsZWN0ZWRGaWx0ZXJzID0gdGhpcy5zZWxlY3RlZEZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZE9yZGVyRmlsdGVycycsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgaWYgKG5ld1dpbmRvd0ZsYWcpIHtcclxuICAgICAgd2luZG93Lm9wZW4odGhpcy5zdG9yZUZyb250VXJsICsgJy9teS1hY2NvdW50L29yZGVyLycgKyBvcmRlck51bWJlciwgJ19ibGFuaycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnN0b3JlRnJvbnRVcmwgKyAnL215LWFjY291bnQvb3JkZXIvJyArIG9yZGVyTnVtYmVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIC8vIHByZXZlbnREZWZhdWx0IGF2b2lkcyB0byBzaG93IHRoZSB2aXN1YWxpemF0aW9uIG9mIHRoZSByaWdodC1jbGljayBtZW51IG9mIHRoZSBicm93c2VyXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIC8vIHdlIHJlY29yZCB0aGUgbW91c2UgcG9zaXRpb24gaW4gb3VyIG9iamVjdFxyXG4gICAgdGhpcy5tZW51VG9wTGVmdFBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5tZW51VG9wTGVmdFBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgLy8gd2Ugb3BlbiB0aGUgbWVudVxyXG4gICAgLy8gd2UgcGFzcyB0byB0aGUgbWVudSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgb3VyIG9iamVjdFxyXG4gICAgdGhpcy5tYXRNZW51VHJpZ2dlci5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9XHJcbiAgICB0aGlzLm1hdE1lbnVUcmlnZ2VyLmNsb3NlTWVudSgpO1xyXG4gICAgLy8gd2Ugb3BlbiB0aGUgbWVudVxyXG4gICAgdGhpcy5tYXRNZW51VHJpZ2dlci5vcGVuTWVudSgpO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5ub1NlYXJjaFJlc3VsdHMgJiZcclxuICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVSZWNvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlUmVmcmVzaCgpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSBDb21tb25VdGlscy5pc01vYmlsZSgpO1xyXG4gICAgdGhpcy5pc1RhYmxldCA9IENvbW1vblV0aWxzLmlzVGFibGV0KCk7XHJcbiAgICB0aGlzLmlzRGVza3RvcCA9IENvbW1vblV0aWxzLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3VzdG9tLWJyZWFkY3J1bSBbY3VzdG9tQ3J1bWJEYXRhXT1cImJyZWFkY3J1bWJEYXRhXCI+PC9hcHAtY3VzdG9tLWJyZWFkY3J1bT5cclxuPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cInNob3dXYWl0Q3Vyc29yIHwgYXN5bmNcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBpbmZpbml0ZVNjcm9sbFxyXG4gIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjBcIlxyXG4gIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjEwMDBcIlxyXG4gIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCJcclxuICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQXZhaWxhbGUgPT0gJ2hhc0RhdGEnXCI+XHJcbiAgICA8aDEgY2xhc3M9XCJwYWdlVGl0bGVcIj57eyBwYWdlVGl0bGUgfX08L2gxPiBcclxuICAgIDxkaXYgXHJcbiAgICAgICpuZ0lmPVwib3JkZXJIaXN0b3J5SGVhZGluZ1wiXHJcbiAgICAgIGNsYXNzPVwidGV4dC1sZWZ0IHBhZ2VQYXJhVGV4dCBtYi01IGNvbC1zbS05IHBsLTBcIlxyXG4gICAgICBbaW5uZXJIVE1MXT1cIm9yZGVySGlzdG9yeUhlYWRpbmdcIlxyXG4gICAgPjwvZGl2PiBcclxuICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+PHU+Q2xlYXIgYWxsPC91PjwvYT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJvcmRlci1zZWFyY2gtYmxvY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIj5cclxuICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yZGVyTnVtYmVyXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ29yZGVyTnVtYmVyJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBPcmRlciAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwb051bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUE8gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiam9iUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ2pvYlJlZmVyZW5jZSdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSm9iIFJlZlxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAncHJvZHVjdENvZGUnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNLVSAvIEl0ZW0gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGV4dCBpbnB1dCB3aXRoIGRyb3Bkb3duIGJ1dHRvblwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBzZWFyY2gtYnRuXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0lucHV0VmFsdWVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLWlvbmljLWlvcy1zZWFyY2guc3ZnXCJcclxuICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWJsb2NrXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZGF0ZS1pbnB1dFwiPlxyXG4gICAgICAgIDxhcHAtZGF0ZS1yYW5nZS1waWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4LW1vYmlsZVwiXHJcbiAgICAgICAgICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwic2VsZWN0ZWREYXRlRmlsdGVyVmFsdWVcIlxyXG4gICAgICAgICAgKHNlbGVjdGVkRGF0ZSk9XCJnZXRTZWxlY3RlZERhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcclxuICAgICAgICA+PC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgICAgPCEtLSA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNfY2FsZW5kZXIuc3ZnXCIgYWx0PVwiY2FsZW5kZXJcIiBjbGFzcz1cImRhdGUtaWNvblwiPiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Rlc2t0b3A7IGVsc2UgZmlsdGVyTW9iaWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZVwiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE9yZGVyIFN0YXRlXHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXRlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9yZGVyU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrT3JkZXJTdGF0dXMoJGV2ZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnb3JkZXJTdGF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudmFsdWVcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZVwiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIERlbGl2ZXJ5IFR5cGVcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRlbGl2ZXJ5VHlwZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkZWxpdmVyeVR5cGVzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiZGVsaXZlcnlUeXBlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdkZWxpdmVyeVR5cGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXR1c1wiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE9yZGVyIFN0YXR1c1xyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3JkZXJTdGF0dXNlc1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cIm9yZGVyU3RhdHVzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdvcmRlclN0YXR1c2VzJyxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMtYmxvY2tcIiAqbmdJZj1cInNlbGVjdGVkT3JkZXJTdGF0ZS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZE9yZGVyU3RhdGUgJiYgc2VsZWN0ZWRPcmRlclN0YXRlLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwc1wiICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkT3JkZXJTdGF0ZVwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoaXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZGF0YS5rZXkgPT0gXCJvcmRlclN0YXR1c2VzXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIk9yZGVyIFN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgIDogZGF0YS5rZXkgPT0gXCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIk9yZGVyIFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcIm9yZGVyRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJPcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgIDogZGF0YS5rZXkgPT0gXCJkZWxpdmVyeURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiRGVsaXZlcnlcIlxyXG4gICAgICAgICAgICAgICAgICA6IFwiRGVsaXZlcnkgVHlwZVwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLWNvbnRlbnQgbWwtMVwiPnt7IGRhdGEubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhcyBmYS10aW1lcy1jaXJjbGUgbWwtMyBjbG9zZS1pY29uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2hpcHMoZGF0YSlcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbHRlck1vYmlsZT5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIGZpbHRlci1idG5cIlxyXG4gICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmaWx0ZXJNb2RhbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgTW9yZSBGaWx0ZXJzXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgLz5cclxuICAgIDwhLS0gRmlsdGVyIE1vZGFsLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbC1yaWdodFwiXHJcbiAgICAgIGlkPVwiZmlsdGVyTW9kYWxcIlxyXG4gICAgICByb2xlPVwiZGlhbG9nXCJcclxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj48L2g1PlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgI2Nsb3NlSW52aXRlTW9kYWxcclxuICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYWluLXZpZXdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgIDxoMz5GaWx0ZXJzPC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyQWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dT5DbGVhciBhbGw8L3U+PC9hXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cIm1haW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uXCIgaWQ9XCJmYXFcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5PcmRlciBTdGF0ZTwvYVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xsYXBzZSBzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtcGFyZW50PVwiI2ZhcVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3JkZXJTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3JkZXJTdGF0dXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ29yZGVyU3RhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vYmlsZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rIGNvbGxhcHNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5EZWxpdmVyeSBUeXBlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtcGFyZW50PVwiI2ZhcVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGVsaXZlcnlUeXBlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkZWxpdmVyeVR5cGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkT3JkZXJTdGF0dXNlcyhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdkZWxpdmVyeVR5cGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vYmlsZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rIGNvbGxhcHNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5PcmRlciBTdGF0dXM8L2FcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBvcmRlclN0YXR1c2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm9yZGVyU3RhdHVzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnb3JkZXJTdGF0dXNlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1sZy1mbGV4IGQtc20tYmxvY2sganVzdGlmeS1jb250ZW50LWVuZCBkLWJsb2NrIGZpeGVkLWJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLWxnLTVcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG1vYmlsZS1zYXZlLWJ0biBkaW1vbmQtcHJpbWFyeS1idG4gZmxvYXQtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIE5PIFNFQVJDSCBSRVNVTFRTIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vU2VhcmNoUmVzdWx0c1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9SZXN1bHRzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgbm9TZWFyY2hSZXN1bHRDb250ZW50XHJcbiAgICAgICAgICAgICAgICAgID8gbm9TZWFyY2hSZXN1bHRDb250ZW50XHJcbiAgICAgICAgICAgICAgICAgIDogJ05vIFJlc3VsdHMgRm91bmQgISdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJvcmRlci1oaXN0b3J5LXRhYmxlXCIgKm5nSWY9XCJvcmRlckhpc3RvcnlMaXN0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidG90YWwtb3JkZXJcIj57eyB0b3RhbFJlc3VsdHMgfX0gb3JkZXJzIGZvdW5kPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB5LTNcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJcIiBpZD1cIlwiIGNsYXNzPVwibXItM1wiIChjaGFuZ2UpPVwic29ydEJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IG9wdGlvbi5jb2RlIH19XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3JkZXJTb3J0TGlzdHNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gaGlzdG9yeS10YWJsZS1kcm9wZG93biBwb3NpdGlvbi1yZWxhdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBpZD1cIm9yZGVyU3RhdHVzXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbCBjb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9wdGlvbmFsQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXZpZXdcIiAqbmdJZj1cImlzRGVza3RvcFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc21cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1saWdodC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiZ3JpZHZpZXdsaWdodFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1kYXJrLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2RhcmtcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgR3JpZFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBsaXN0dmlldyA9PT0gdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYWN0aXZlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JpZE9yTGlzdFZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJsaXN0dmlld1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtaW1nXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvTGlzdC1kYXJrLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJsaXN0dmlld1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICBMaXN0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIE9SREVSIEhJU1RPUlkgTElTVCAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LXZpZXcgdGFibGUtcmVzcG9uc2l2ZVwiXHJcbiAgICAgICpuZ0lmPVwibGlzdHZpZXcgJiYgaXNEZXNrdG9wICYmIG9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBvcmRlci1saXN0LXRhYmxlXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBPcmRlciAjXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMlwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgb3JkZXJUb29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgYWx0PVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBQbyAjXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMlwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgcG9Ub29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgYWx0PVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBPcmRlciBEYXRlXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMlwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgb3JkZXJEYXRlVG9vbHRpcENvbnRlbnQgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1tZXRyby1pbmZvLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgRGVsaXZlcnkgVHlwZVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTJcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5VHlwZVRvb2x0aXBDb250ZW50IH19XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24tbWV0cm8taW5mby5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIERlbGl2ZXJ5IERhdGVzXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMlwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgZGVsaXZlcnlEYXRlVG9vbHRpcENvbnRlbnQgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1tZXRyby1pbmZvLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgRGVsaXZlcnkgQWRkcmVzc1xyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTJcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50IH19XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24tbWV0cm8taW5mby5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIFRvdGFsIFByaWNlIFxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTJcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IHRvdGFsUHJpY2VUb29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgYWx0PVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgU3RhdHVzXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMlwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgc3RhdHVzVG9vbHRpcENvbnRlbnQgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1tZXRyby1pbmZvLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9yZGVycyBvZiBvcmRlckhpc3RvcnlMaXN0c1wiPlxyXG4gICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgb3JkZXJzLmNvZGUpXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAyMHB4XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiJ2lkLScgKyBvcmRlcnMuY29kZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3JkZXJOdW1iZXJDbGlja2VkKG9yZGVycy5jb2RlLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgPnt7IG9yZGVycz8uY29kZSB9fTwvYVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8ucHVyY2hhc2VPcmRlck51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LnBsYWNlZCB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LmRlbGl2ZXJ5TW9kZT8ubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JkZXJzPy5pc1NhbWVEYXRlOyBlbHNlIG5vdE1hdGNoXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1heERlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TWF0Y2g+XHJcbiAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1pbkRlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fSAtXHJcbiAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1heERlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImVsbGlwc2lzXCI+XHJcbiAgICAgICAgICAgICAge3sgb3JkZXJzPy5kZWxpdmVyeUFkZHJlc3M/LmZvcm1hdHRlZEFkZHJlc3MgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicHJpY2UtYm9sZFwiPnt7IG9yZGVycz8udG90YWw/LmZvcm1hdHRlZFZhbHVlIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxhcHAtc2xpZGVyLXByb2dyZXNzIFtzbGlkZXJEYXRhXT1cIm9yZGVyc1wiPjwvYXBwLXNsaWRlci1wcm9ncmVzcz5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBPUkRFUiBISVNUT1JZIEdSSUQgLS0+XHJcbiAgICA8bmd4LW1hc29ucnkgIFxyXG4gICAgICBjbGFzcz1cInJvdyBncmlkLXZpZXcgXCJcclxuICAgICAgKm5nSWY9XCIoIWxpc3R2aWV3IHx8ICFpc0Rlc2t0b3ApICYmIG9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgIG5neE1hc29ucnlJdGVtXHJcbiAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtNiBjb2wtc20tMTIgY29sLTEyXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3JkZXJzIG9mIG9yZGVySGlzdG9yeUxpc3RzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRpbGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRvcFwiPlxyXG4gICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPk9yZGVyICM6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgb3JkZXJzLmNvZGUpXCJcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidpZC0nICsgb3JkZXJzLmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cIm9yZGVyTnVtYmVyQ2xpY2tlZChvcmRlcnMuY29kZSwgZmFsc2UpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICBvcmRlcnM/LmNvZGVcclxuICAgICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPlBPICM6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPkRlbGl2ZXJ5IFR5cGU6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LmRlbGl2ZXJ5TW9kZT8ubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+RGVsaXZlcnkgRGF0ZXM6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yZGVycz8uaXNTYW1lRGF0ZTsgZWxzZSBub3RNYXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWF4RGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE1hdGNoPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWluRGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19IC1cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1heERlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvbiBkLWlubGluZS1ibG9jayBtbC0yXCJcclxuICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU3RhdHVzIEluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5PcmRlciBEYXRlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5wbGFjZWQgfCBjdXN0b21EYXRlUGlwZSA6IFwiZGQvTU0veXlcIiB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+QWRkcmVzczo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8uZGVsaXZlcnlBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzIH19PC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5Ub3RhbCBQcmljZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHJpY2UtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcmRlcnM/LnRvdGFsPy5mb3JtYXR0ZWRWYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICBTdGF0dXM6XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTJcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlN0YXR1cyBJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicGItMyBtYi0zXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwdC00IG10LTQnOiBvcmRlcnM/Lm1heExpbmVTdGF0dXMgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YXBwLXNsaWRlci1wcm9ncmVzcyBbc2xpZGVyRGF0YV09XCJvcmRlcnNcIj48L2FwcC1zbGlkZXItcHJvZ3Jlc3M+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZ3gtbWFzb25yeT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2XHJcbiAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkXCJcclxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIm1lbnVUb3BMZWZ0UG9zaXRpb24ueFwiXHJcbiAgICBbc3R5bGUudG9wLnB4XT1cIm1lbnVUb3BMZWZ0UG9zaXRpb24ueVwiXHJcbiAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwicmlnaHRNZW51XCJcclxuICA+PC9kaXY+XHJcblxyXG4gIDxtYXQtbWVudSAjcmlnaHRNZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGRpdiBtYXRNZW51Q29udGVudCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcmRlck51bWJlckNsaWNrZWQoaXRlbSwgdHJ1ZSlcIiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICAgIE9wZW4gT3JkZXIgaW4gbmV3IHRhYlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlckltYWdlIHwgYXN5bmNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgbXgtYXV0byB0ZXh0LWNlbnRlciBtYi00XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicHJvZHVjdC1sb2FkZXJcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImxvYWRlci1pY29uIGZhcyBmYS1zcGlubmVyIGZhLXB1bHNlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGVyLXRleHRcIj5sb2FkaW5n4oCmLjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPCEtLSBOTyBPUkRFUiBISVNUT1JZIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQXZhaWxhbGUgPT0gJ25vRGF0YSdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZW1wdHktb3JkZXJwYWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMCBjb2wtbGctMTAgbS1hdXRvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgW2lubmVySFRNTF09XCJub09yZGVySGlzdG9yeURhdGFcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
|