@colijnit/transaction 12.1.7 → 12.1.10
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 +10 -13
- package/bundles/colijnit-transaction.umd.js +7754 -6787
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +106 -58
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +107 -59
- package/esm2015/lib/assets/dictionary/text.properties.js +456 -0
- package/esm2015/lib/component/checkout/checkout-login/checkout-login.component.js +106 -0
- package/esm2015/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +47 -0
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +275 -0
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +538 -0
- package/esm2015/lib/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +30 -0
- package/esm2015/lib/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +31 -0
- package/esm2015/lib/component/checkout/checkout.component.js +132 -0
- package/esm2015/lib/component/checkout/checkout.module.js +86 -0
- package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.component.js +52 -0
- package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.module.js +24 -0
- package/esm2015/lib/component/core/base/default-ok-cancel-buttons.component.js +41 -0
- package/esm2015/lib/component/core/base/dialog-base.component.js +6 -0
- package/esm2015/lib/component/core/base/transaction-base.component.js +94 -0
- package/esm2015/lib/component/core/core.module.js +39 -0
- package/esm2015/lib/component/core/enum/app-popup-button-type.enum.js +11 -0
- package/esm2015/lib/component/core/enum/app-popup-type.enum.js +8 -0
- package/esm2015/{app → lib}/component/core/icon/icon.component.js +3 -4
- package/esm2015/lib/component/core/image-display/image-display.component.js +29 -0
- package/esm2015/lib/component/core/relation/customer-groups.component.js +41 -0
- package/esm2015/{app → lib}/component/core/stock-status-indicator/stock-status-indicator.component.js +2 -2
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.component.js +40 -0
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.module.js +26 -0
- package/esm2015/lib/component/discount/discount.component.js +107 -0
- package/esm2015/lib/component/discount/discount.module.js +29 -0
- package/esm2015/lib/component/order-confirmation-grid.component/order-confirmation-grid.component.js +70 -0
- package/esm2015/lib/component/order-confirmation-grid.component/order-confirmation-grid.module.js +29 -0
- package/esm2015/lib/component/order-grid/order-grid.component.js +99 -0
- package/esm2015/lib/component/order-grid/order-grid.module.js +28 -0
- package/esm2015/lib/component/payment/payment.component.js +73 -0
- package/esm2015/lib/component/payment/payment.module.js +27 -0
- package/esm2015/lib/component/payment-tile/payment-tile.component.js +32 -0
- package/esm2015/lib/component/payment-tile/payment-tile.module.js +25 -0
- package/esm2015/lib/component/relation-address/relation-address.component.js +125 -0
- package/esm2015/lib/component/relation-address/relation-address.module.js +28 -0
- package/esm2015/lib/component/relation-address-select/relation-address-select.component.js +146 -0
- package/esm2015/lib/component/relation-address-select/relation-address-select.module.js +33 -0
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.component.js +61 -0
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.module.js +32 -0
- package/esm2015/lib/component/seller-information/seller-information.component.js +61 -0
- package/esm2015/lib/component/seller-information/seller-information.module.js +21 -0
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +118 -0
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +31 -0
- package/esm2015/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.component.js +129 -0
- package/esm2015/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.module.js +34 -0
- package/esm2015/lib/component/shopping-cart/shopping-cart.component.js +57 -0
- package/esm2015/lib/component/shopping-cart/shopping-cart.module.js +27 -0
- package/esm2015/lib/component/shopping-cart-preview/shopping-cart-preview.component.js +55 -0
- package/esm2015/lib/component/shopping-cart-preview/shopping-cart-preview.module.js +29 -0
- package/esm2015/lib/component/stepper/component/stepper-step.component.js +40 -0
- package/esm2015/lib/component/stepper/stepper.component.js +124 -0
- package/esm2015/lib/component/stepper/stepper.module.js +29 -0
- package/esm2015/lib/component/tile/tile.component.js +32 -0
- package/esm2015/lib/component/tile/tile.module.js +19 -0
- package/esm2015/lib/component/transaction/transaction.component.js +154 -0
- package/esm2015/lib/component/transaction/transaction.module.js +47 -0
- package/esm2015/lib/component/transaction-commit-bar/transaction-commit-bar.component.js +46 -0
- package/esm2015/lib/component/transaction-commit-bar/transaction-commit-bar.module.js +27 -0
- package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +28 -0
- package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.module.js +27 -0
- package/esm2015/lib/component/transaction-header/transaction-header.component.js +46 -0
- package/esm2015/lib/component/transaction-header/transaction-header.module.js +27 -0
- package/esm2015/lib/component/transaction-header-contact/transaction-header-contact.component.js +34 -0
- package/esm2015/lib/component/transaction-header-contact/transaction-header-contact.module.js +19 -0
- package/esm2015/lib/component/transaction-header-delivery/transaction-header-delivery.component.js +60 -0
- package/esm2015/lib/component/transaction-header-delivery/transaction-header-delivery.module.js +21 -0
- package/esm2015/lib/component/transaction-header-relation/transaction-header-relation.component.js +35 -0
- package/esm2015/lib/component/transaction-header-relation/transaction-header-relation.module.js +19 -0
- package/esm2015/lib/component/transaction-history-grid/transaction-history-grid.component.js +47 -0
- package/esm2015/lib/component/transaction-history-grid/transaction-history-grid.module.js +27 -0
- package/esm2015/lib/component/transaction-history-grid-status/transaction-history-grid-status.component.js +36 -0
- package/esm2015/lib/component/transaction-history-grid-status/transaction-history-grid-status.module.js +23 -0
- package/esm2015/lib/component/transaction-line/transaction-line.component.js +282 -0
- package/esm2015/lib/component/transaction-line/transaction-line.module.js +30 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date.component.js +40 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.component.js +48 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-fields-base.component.js +22 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.component.js +36 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.component.js +48 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.module.js +24 -0
- package/esm2015/lib/component/transaction-line-grid/transaction-line-grid.component.js +23 -0
- package/esm2015/lib/component/transaction-line-grid/transaction-line-grid.module.js +21 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +91 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.js +36 -0
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.js +134 -0
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.js +56 -0
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +128 -0
- package/esm2015/lib/component/transaction-lines/transaction-lines.module.js +31 -0
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.component.js +63 -0
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.module.js +27 -0
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.js +29 -0
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar.component.js +65 -0
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar.module.js +26 -0
- package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.js +39 -0
- package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.js +25 -0
- package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.js +28 -0
- package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.module.js +27 -0
- package/esm2015/lib/component/transaction-totals/transaction-totals.component.js +44 -0
- package/esm2015/lib/component/transaction-totals/transaction-totals.module.js +23 -0
- package/esm2015/lib/enum/content-view-mode.enum.js +10 -0
- package/esm2015/lib/enum/icon.enum.js +28 -0
- package/esm2015/lib/enum/language-code.enum.js +8 -0
- package/esm2015/lib/enum/order-discount-type.enum.js +7 -0
- package/esm2015/lib/enum/status-type.enum.js +5 -0
- package/esm2015/lib/enum/tab-category.enum.js +10 -0
- package/esm2015/lib/enum/time-size.type.js +10 -0
- package/esm2015/lib/factory/business-object-factory.js +120 -0
- package/esm2015/lib/factory/decorators/boolean.decorator.js +102 -0
- package/esm2015/lib/factory/decorators/complex-array.decorator.js +55 -0
- package/esm2015/lib/factory/decorators/complex-field.decorator.js +57 -0
- package/esm2015/lib/factory/decorators/date-field.decorator.js +36 -0
- package/esm2015/lib/factory/decorators/string-number.decorator.js +43 -0
- package/esm2015/lib/model/business-object.js +81 -0
- package/esm2015/lib/model/delivery-type.js +3 -0
- package/esm2015/lib/model/icon-svg.js +27 -0
- package/esm2015/lib/model/standard-text.js +3 -0
- package/esm2015/lib/model/text-value-container.js +3 -0
- package/esm2015/lib/pipe/append.pipe.js +17 -0
- package/esm2015/lib/pipe/co-currency.pipe.js +47 -0
- package/esm2015/lib/pipe/date-duration.pipe.js +57 -0
- package/esm2015/lib/pipe/delivery-time.pipe.js +36 -0
- package/esm2015/lib/pipe/localize.pipe.js +28 -0
- package/esm2015/lib/pipe/pipe.module.js +37 -0
- package/esm2015/lib/pipe/safe-html.pipe.js +19 -0
- package/esm2015/lib/pipe/safe-style.pipe.js +19 -0
- package/esm2015/lib/service/dialog.service.js +76 -0
- package/esm2015/lib/service/dictionary.service.js +76 -0
- package/esm2015/lib/service/icon-cache.service.js +51 -0
- package/esm2015/lib/service/ione-connector-adapter.service.js +836 -0
- package/esm2015/lib/service/options.service.js +69 -0
- package/esm2015/lib/service/pending-reason.service.js +183 -0
- package/esm2015/lib/service/transaction.service.js +679 -0
- package/esm2015/lib/utils/array-utils.js +183 -0
- package/esm2015/lib/utils/is-nill.function.js +5 -0
- package/esm2015/lib/utils/string-utils.js +64 -0
- package/esm2015/public_api.js +28 -10
- package/fesm2015/colijnit-transaction.js +7894 -6976
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/{assets → lib/assets}/dictionary/text.properties.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-login/checkout-login.component.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-login/checkout-login.component.scss +0 -0
- package/{app → lib}/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.scss +0 -0
- package/{app → lib}/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.d.ts +23 -36
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_layout.scss +98 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_material-definition.scss +12 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_theme.scss +17 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/material.scss +7 -0
- package/{app → lib}/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +40 -12
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +125 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +18 -0
- package/{app → lib}/component/checkout/checkout-overview-relation-edit/style/_theme.scss +1 -1
- package/lib/component/checkout/checkout-overview-relation-edit/style/material.scss +10 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list/style/_layout.scss +3 -2
- package/{app/component/checkout/checkout-overview-relation-address → lib/component/checkout/checkout-relation-suggestions-list}/style/_material-definition.scss +0 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list/style/_theme.scss +1 -1
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list/style/material.scss +1 -1
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list-item/style/_layout.scss +1 -1
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list-item/style/_material-definition.scss +0 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list-item/style/_theme.scss +1 -1
- package/{app/component/core/base → lib/component/checkout/checkout-relation-suggestions-list-item}/style/material.scss +1 -1
- package/lib/component/checkout/checkout.component.d.ts +36 -0
- package/lib/component/checkout/checkout.module.d.ts +2 -0
- package/lib/component/checkout/style/_layout.scss +31 -0
- package/lib/component/checkout/style/_material-definition.scss +5 -0
- package/lib/component/checkout/style/_theme.scss +8 -0
- package/lib/component/checkout/style/material.scss +10 -0
- package/lib/component/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
- package/lib/component/confirmation-dialog/confirmation-dialog.module.d.ts +2 -0
- package/lib/component/confirmation-dialog/style/_layout.scss +22 -0
- package/lib/component/confirmation-dialog/style/_material-definition.scss +2 -0
- package/lib/component/confirmation-dialog/style/_theme.scss +6 -0
- package/lib/component/confirmation-dialog/style/material.scss +5 -0
- package/{app → lib}/component/core/base/default-ok-cancel-buttons.component.d.ts +0 -0
- package/lib/component/core/base/dialog-base.component.d.ts +4 -0
- package/{app → lib}/component/core/base/style/_layout.scss +1 -1
- package/{app/component/checkout/checkout-relation-suggestions-list → lib/component/core/base}/style/_material-definition.scss +0 -0
- package/{app → lib}/component/core/base/style/_theme.scss +1 -1
- package/{app/component/checkout/checkout-overview-relation-address → lib/component/core/base}/style/material.scss +1 -1
- package/{app → lib}/component/core/base/transaction-base.component.d.ts +7 -23
- package/{app → lib}/component/core/characteristic-answer/characteristic-answer.component.scss +3 -1
- package/{app → lib}/component/core/core.module.d.ts +0 -0
- package/lib/component/core/enum/app-popup-button-type.enum.d.ts +9 -0
- package/lib/component/core/enum/app-popup-type.enum.d.ts +6 -0
- package/{app → lib}/component/core/icon/icon.component.d.ts +3 -2
- package/{app → lib}/component/core/icon/icon.component.scss +3 -1
- package/lib/component/core/image-display/image-display.component.d.ts +5 -0
- package/lib/component/core/image-display/style/_layout.scss +55 -0
- package/lib/component/core/image-display/style/_material-definition.scss +4 -0
- package/{app → lib}/component/core/image-display/style/_theme.scss +1 -1
- package/{app → lib}/component/core/image-display/style/material.scss +1 -1
- package/{app → lib}/component/core/relation/customer-groups.component.d.ts +0 -0
- package/lib/component/core/relation/relation-customer-groups.component.scss +6 -0
- package/{app → lib}/component/core/stock-status-indicator/stock-status-indicator.component.d.ts +0 -0
- package/{app → lib}/component/core/stock-status-indicator/stock-status-indicator.component.scss +3 -1
- package/lib/component/delivery-type-tile/delivery-type-tile.component.d.ts +10 -0
- package/lib/component/delivery-type-tile/delivery-type-tile.module.d.ts +2 -0
- package/lib/component/delivery-type-tile/style/_layout.scss +35 -0
- package/lib/component/delivery-type-tile/style/_material-definition.scss +16 -0
- package/lib/component/delivery-type-tile/style/_theme.scss +6 -0
- package/lib/component/delivery-type-tile/style/material.scss +5 -0
- package/lib/component/discount/discount.component.d.ts +19 -0
- package/lib/component/discount/discount.module.d.ts +2 -0
- package/{app/component/checkout/checkout-overview-block/checkout-overview-block.component.scss → lib/component/discount/style/_layout.scss} +0 -0
- package/{app/component/core/base → lib/component/discount}/style/_material-definition.scss +0 -0
- package/{app/component/checkout/checkout-overview/checkout-overview.component.scss → lib/component/discount/style/_theme.scss} +0 -0
- package/{app/component/core/image-display/style/_material-definition.scss → lib/component/discount/style/material.scss} +0 -0
- package/lib/component/order-confirmation-create/style/_layout.scss +5 -0
- package/lib/component/order-confirmation-create/style/_material-definition.scss +1 -0
- package/lib/component/order-confirmation-create/style/_theme.scss +5 -0
- package/{app/component/checkout/checkout-relation-suggestions-list-item → lib/component/order-confirmation-create}/style/material.scss +1 -1
- package/lib/component/order-confirmation-grid.component/order-confirmation-grid.component.d.ts +15 -0
- package/lib/component/order-confirmation-grid.component/order-confirmation-grid.module.d.ts +2 -0
- package/lib/component/order-confirmation-grid.component/style/_layout.scss +5 -0
- package/lib/component/order-confirmation-grid.component/style/_material-definition.scss +1 -0
- package/lib/component/order-confirmation-grid.component/style/_theme.scss +5 -0
- package/lib/component/order-confirmation-grid.component/style/material.scss +4 -0
- package/lib/component/order-grid/order-grid.component.d.ts +23 -0
- package/lib/component/order-grid/order-grid.module.d.ts +2 -0
- package/lib/component/order-grid/style/_layout.scss +21 -0
- package/lib/component/order-grid/style/_material-definition.scss +2 -0
- package/lib/component/order-grid/style/_theme.scss +6 -0
- package/lib/component/order-grid/style/material.scss +4 -0
- package/lib/component/payment/payment.component.d.ts +18 -0
- package/lib/component/payment/payment.module.d.ts +2 -0
- package/lib/component/payment/style/_layout.scss +54 -0
- package/lib/component/payment/style/_material-definition.scss +17 -0
- package/lib/component/payment/style/_theme.scss +16 -0
- package/lib/component/payment/style/material.scss +5 -0
- package/lib/component/payment-tile/payment-tile.component.d.ts +9 -0
- package/lib/component/payment-tile/payment-tile.module.d.ts +2 -0
- package/lib/component/payment-tile/style/_layout.scss +22 -0
- package/{app/component/core/no-image-display/no-image-display.component.scss → lib/component/payment-tile/style/_material-definition.scss} +0 -0
- package/lib/component/payment-tile/style/_theme.scss +6 -0
- package/lib/component/payment-tile/style/material.scss +5 -0
- package/lib/component/relation-address/relation-address.component.d.ts +28 -0
- package/lib/component/relation-address/relation-address.module.d.ts +2 -0
- package/lib/component/relation-address/style/_layout.scss +25 -0
- package/lib/component/relation-address/style/_material-definition.scss +3 -0
- package/lib/component/relation-address/style/_theme.scss +7 -0
- package/lib/component/relation-address/style/material.scss +5 -0
- package/lib/component/relation-address-select/relation-address-select.component.d.ts +33 -0
- package/lib/component/relation-address-select/relation-address-select.module.d.ts +2 -0
- package/lib/component/relation-address-select/style/_layout.scss +85 -0
- package/lib/component/relation-address-select/style/_material-definition.scss +4 -0
- package/lib/component/relation-address-select/style/_theme.scss +6 -0
- package/lib/component/relation-address-select/style/material.scss +5 -0
- package/lib/component/relation-address-tile/relation-address-tile.component.d.ts +14 -0
- package/lib/component/relation-address-tile/relation-address-tile.module.d.ts +2 -0
- package/lib/component/relation-address-tile/style/_layout.scss +42 -0
- package/lib/component/relation-address-tile/style/_material-definition.scss +16 -0
- package/lib/component/relation-address-tile/style/_theme.scss +21 -0
- package/lib/component/relation-address-tile/style/material.scss +5 -0
- package/lib/component/seller-information/seller-information.component.d.ts +13 -0
- package/lib/component/seller-information/seller-information.module.d.ts +2 -0
- package/lib/component/seller-information/style/_layout.scss +21 -0
- package/lib/component/seller-information/style/_material-definition.scss +2 -0
- package/lib/component/seller-information/style/_theme.scss +7 -0
- package/lib/component/seller-information/style/material.scss +4 -0
- package/lib/component/shared/transaction-article-text/style/_layout.scss +42 -0
- package/lib/component/shared/transaction-article-text/style/_material-definition.scss +7 -0
- package/lib/component/shared/transaction-article-text/style/_theme.scss +11 -0
- package/lib/component/shared/transaction-article-text/style/material.scss +5 -0
- package/lib/component/shared/transaction-article-text/transaction-article-text.component.d.ts +31 -0
- package/lib/component/shared/transaction-article-text/transaction-article-text.module.d.ts +2 -0
- package/lib/component/shared/transaction-article-text-overview/style/_layout.scss +56 -0
- package/lib/component/shared/transaction-article-text-overview/style/_material-definition.scss +9 -0
- package/lib/component/shared/transaction-article-text-overview/style/_theme.scss +9 -0
- package/lib/component/shared/transaction-article-text-overview/style/material.scss +4 -0
- package/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.component.d.ts +30 -0
- package/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.module.d.ts +2 -0
- package/lib/component/shopping-cart/shopping-cart.component.d.ts +15 -0
- package/lib/component/shopping-cart/shopping-cart.module.d.ts +2 -0
- package/lib/component/shopping-cart/style/_layout.scss +33 -0
- package/lib/component/shopping-cart/style/_material-definition.scss +10 -0
- package/lib/component/shopping-cart/style/_theme.scss +14 -0
- package/lib/component/shopping-cart/style/material.scss +4 -0
- package/{app/component/shopping-cart → lib/component/shopping-cart-OLD}/shopping-cart-manager/shopping-cart-manager.component.scss +4 -2
- package/lib/component/shopping-cart-preview/shopping-cart-preview.component.d.ts +13 -0
- package/lib/component/shopping-cart-preview/shopping-cart-preview.module.d.ts +2 -0
- package/lib/component/shopping-cart-preview/style/_layout.scss +48 -0
- package/lib/component/shopping-cart-preview/style/_material-definition.scss +20 -0
- package/lib/component/shopping-cart-preview/style/_theme.scss +17 -0
- package/lib/component/shopping-cart-preview/style/material.scss +4 -0
- package/lib/component/stepper/component/stepper-step.component.d.ts +12 -0
- package/lib/component/stepper/stepper.component.d.ts +35 -0
- package/lib/component/stepper/stepper.module.d.ts +2 -0
- package/lib/component/stepper/style/_layout.scss +107 -0
- package/lib/component/stepper/style/_material-definition.scss +18 -0
- package/lib/component/stepper/style/_theme.scss +43 -0
- package/lib/component/stepper/style/material.scss +4 -0
- package/lib/component/tile/style/_layout.scss +36 -0
- package/lib/component/tile/style/_material-definition.scss +16 -0
- package/lib/component/tile/style/_theme.scss +36 -0
- package/lib/component/tile/style/material.scss +4 -0
- package/lib/component/tile/tile.component.d.ts +6 -0
- package/lib/component/tile/tile.module.d.ts +2 -0
- package/lib/component/transaction/style/_layout.scss +31 -0
- package/lib/component/transaction/style/_material-definition.scss +7 -0
- package/lib/component/transaction/style/_theme.scss +24 -0
- package/lib/component/transaction/style/material.scss +11 -0
- package/lib/component/transaction/transaction.component.d.ts +39 -0
- package/lib/component/transaction/transaction.module.d.ts +2 -0
- package/lib/component/transaction-commit-bar/style/_layout.scss +16 -0
- package/lib/component/transaction-commit-bar/style/_material-definition.scss +1 -0
- package/lib/component/transaction-commit-bar/style/_theme.scss +7 -0
- package/lib/component/transaction-commit-bar/style/material.scss +4 -0
- package/lib/component/transaction-commit-bar/transaction-commit-bar.component.d.ts +11 -0
- package/lib/component/transaction-commit-bar/transaction-commit-bar.module.d.ts +2 -0
- package/lib/component/transaction-confirmation-history/style/_layout.scss +7 -0
- package/lib/component/transaction-confirmation-history/style/_material-definition.scss +1 -0
- package/lib/component/transaction-confirmation-history/style/_theme.scss +7 -0
- package/lib/component/transaction-confirmation-history/style/material.scss +4 -0
- package/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.d.ts +5 -0
- package/lib/component/transaction-confirmation-history/transaction-confirmation-history.module.d.ts +2 -0
- package/lib/component/transaction-header/style/_layout.scss +38 -0
- package/lib/component/transaction-header/style/_material-definition.scss +8 -0
- package/lib/component/transaction-header/style/_theme.scss +11 -0
- package/lib/component/transaction-header/style/material.scss +7 -0
- package/lib/component/transaction-header/transaction-header.component.d.ts +12 -0
- package/lib/component/transaction-header/transaction-header.module.d.ts +2 -0
- package/lib/component/transaction-header-contact/style/_layout.scss +25 -0
- package/lib/component/transaction-header-contact/style/_material-definition.scss +7 -0
- package/lib/component/transaction-header-contact/style/_theme.scss +11 -0
- package/lib/component/transaction-header-contact/style/material.scss +4 -0
- package/lib/component/transaction-header-contact/transaction-header-contact.component.d.ts +4 -0
- package/lib/component/transaction-header-contact/transaction-header-contact.module.d.ts +2 -0
- package/lib/component/transaction-header-delivery/style/_layout.scss +54 -0
- package/lib/component/transaction-header-delivery/style/_material-definition.scss +12 -0
- package/lib/component/transaction-header-delivery/style/_theme.scss +24 -0
- package/lib/component/transaction-header-delivery/style/material.scss +4 -0
- package/lib/component/transaction-header-delivery/transaction-header-delivery.component.d.ts +13 -0
- package/lib/component/transaction-header-delivery/transaction-header-delivery.module.d.ts +2 -0
- package/lib/component/transaction-header-relation/style/_layout.scss +25 -0
- package/lib/component/transaction-header-relation/style/_material-definition.scss +7 -0
- package/lib/component/transaction-header-relation/style/_theme.scss +11 -0
- package/lib/component/transaction-header-relation/style/material.scss +4 -0
- package/lib/component/transaction-header-relation/transaction-header-relation.component.d.ts +4 -0
- package/lib/component/transaction-header-relation/transaction-header-relation.module.d.ts +2 -0
- package/lib/component/transaction-history-grid/style/_layout.scss +7 -0
- package/{app/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.scss → lib/component/transaction-history-grid/style/_material-definition.scss} +0 -0
- package/lib/component/transaction-history-grid/style/_theme.scss +7 -0
- package/lib/component/transaction-history-grid/style/material.scss +4 -0
- package/lib/component/transaction-history-grid/transaction-history-grid.component.d.ts +14 -0
- package/lib/component/transaction-history-grid/transaction-history-grid.module.d.ts +2 -0
- package/lib/component/transaction-history-grid-status/style/_layout.scss +28 -0
- package/{app/component/service-order/transaction-article-text-overview/transaction-article-text-overview.component.scss → lib/component/transaction-history-grid-status/style/_material-definition.scss} +0 -0
- package/lib/component/transaction-history-grid-status/style/_theme.scss +7 -0
- package/lib/component/transaction-history-grid-status/style/material.scss +4 -0
- package/lib/component/transaction-history-grid-status/transaction-history-grid-status.component.d.ts +9 -0
- package/lib/component/transaction-history-grid-status/transaction-history-grid-status.module.d.ts +2 -0
- package/lib/component/transaction-line/style/_layout.scss +143 -0
- package/lib/component/transaction-line/style/_material-definition.scss +29 -0
- package/lib/component/transaction-line/style/_theme.scss +41 -0
- package/lib/component/transaction-line/style/material.scss +9 -0
- package/lib/component/transaction-line/transaction-line.component.d.ts +52 -0
- package/lib/component/transaction-line/transaction-line.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-commission-code.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-commission-code.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-date.component.d.ts +7 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-date.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-method.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-method.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-discount-amount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-discount-amount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-fields-base.component.d.ts +6 -0
- package/lib/component/transaction-line-fields/transaction-line-line-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-line-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-price-list.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-price-list.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-price.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-price.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-quantity.component.d.ts +7 -0
- package/lib/component/transaction-line-fields/transaction-line-quantity.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-quantum-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-reference.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-reference.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-special-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-special-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-vat.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-vat.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-warehouse.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-warehouse.module.d.ts +2 -0
- package/lib/component/transaction-line-grid/style/_layout.scss +6 -0
- package/{app/component/service-order/transaction-sidebar/transaction-line-accordion.component.scss → lib/component/transaction-line-grid/style/_material-definition.scss} +0 -0
- package/lib/component/transaction-line-grid/style/_theme.scss +6 -0
- package/lib/component/transaction-line-grid/style/material.scss +4 -0
- package/lib/component/transaction-line-grid/transaction-line-grid.component.d.ts +5 -0
- package/lib/component/transaction-line-grid/transaction-line-grid.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel/style/_layout.scss +64 -0
- package/lib/component/transaction-line-side-panel/style/_material-definition.scss +8 -0
- package/lib/component/transaction-line-side-panel/style/_theme.scss +9 -0
- package/lib/component/transaction-line-side-panel/style/material.scss +9 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +18 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel-default/style/_layout.scss +29 -0
- package/lib/component/transaction-line-side-panel-default/style/_material-definition.scss +10 -0
- package/lib/component/transaction-line-side-panel-default/style/_theme.scss +7 -0
- package/lib/component/transaction-line-side-panel-default/style/material.scss +4 -0
- package/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.d.ts +16 -0
- package/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.d.ts +2 -0
- package/lib/component/transaction-lines/style/_layout.scss +33 -0
- package/lib/component/transaction-lines/style/_material-definition.scss +3 -0
- package/lib/component/transaction-lines/style/_theme.scss +19 -0
- package/lib/component/transaction-lines/style/material.scss +7 -0
- package/lib/component/transaction-lines/transaction-lines.component.d.ts +37 -0
- package/lib/component/transaction-lines/transaction-lines.module.d.ts +2 -0
- package/lib/component/transaction-lines-grid/style/_layout.scss +37 -0
- package/lib/component/transaction-lines-grid/style/_material-definition.scss +19 -0
- package/lib/component/transaction-lines-grid/style/_theme.scss +15 -0
- package/lib/component/transaction-lines-grid/style/material.scss +5 -0
- package/lib/component/transaction-lines-grid/transaction-lines-grid.component.d.ts +20 -0
- package/lib/component/transaction-lines-grid/transaction-lines-grid.module.d.ts +2 -0
- package/lib/component/transaction-nav-bar/style/_layout.scss +13 -0
- package/lib/component/transaction-nav-bar/style/_material-definition.scss +1 -0
- package/lib/component/transaction-nav-bar/style/_theme.scss +7 -0
- package/lib/component/transaction-nav-bar/style/material.scss +4 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.d.ts +14 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.scss +23 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar.component.d.ts +18 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar.module.d.ts +2 -0
- package/lib/component/transaction-receiving-goods-details/style/_layout.scss +38 -0
- package/lib/component/transaction-receiving-goods-details/style/_material-definition.scss +1 -0
- package/lib/component/transaction-receiving-goods-details/style/_theme.scss +7 -0
- package/lib/component/transaction-receiving-goods-details/style/material.scss +4 -0
- package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.d.ts +6 -0
- package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.d.ts +2 -0
- package/lib/component/transaction-receiving-goods-history/style/_layout.scss +7 -0
- package/lib/component/transaction-receiving-goods-history/style/_material-definition.scss +1 -0
- package/lib/component/transaction-receiving-goods-history/style/_theme.scss +7 -0
- package/lib/component/transaction-receiving-goods-history/style/material.scss +4 -0
- package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.d.ts +5 -0
- package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.module.d.ts +2 -0
- package/lib/component/transaction-totals/style/_layout.scss +35 -0
- package/lib/component/transaction-totals/style/_material-definition.scss +15 -0
- package/lib/component/transaction-totals/style/_theme.scss +10 -0
- package/lib/component/transaction-totals/style/material.scss +4 -0
- package/lib/component/transaction-totals/transaction-totals.component.d.ts +9 -0
- package/lib/component/transaction-totals/transaction-totals.module.d.ts +2 -0
- package/{app → lib}/enum/content-view-mode.enum.d.ts +0 -0
- package/lib/enum/icon.enum.d.ts +26 -0
- package/{app → lib}/enum/language-code.enum.d.ts +0 -0
- package/{app → lib}/enum/order-discount-type.enum.d.ts +0 -0
- package/lib/enum/status-type.enum.d.ts +3 -0
- package/lib/enum/tab-category.enum.d.ts +8 -0
- package/{app → lib}/enum/time-size.type.d.ts +0 -0
- package/{factory → lib/factory}/business-object-factory.d.ts +1 -1
- package/{factory → lib/factory}/decorators/boolean.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/complex-array.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/complex-field.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/date-field.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/string-number.decorator.d.ts +0 -0
- package/{app → lib}/model/business-object.d.ts +0 -0
- package/lib/model/delivery-type.d.ts +7 -0
- package/lib/model/icon-svg.d.ts +4 -0
- package/{app → lib}/model/standard-text.d.ts +0 -0
- package/{app → lib}/model/text-value-container.d.ts +0 -0
- package/{app → lib}/pipe/append.pipe.d.ts +0 -0
- package/{app → lib}/pipe/co-currency.pipe.d.ts +0 -0
- package/{app → lib}/pipe/date-duration.pipe.d.ts +0 -0
- package/{app → lib}/pipe/delivery-time.pipe.d.ts +0 -0
- package/{app → lib}/pipe/localize.pipe.d.ts +0 -0
- package/lib/pipe/pipe.module.d.ts +2 -0
- package/lib/pipe/safe-html.pipe.d.ts +7 -0
- package/{app/pipe/safe-style-pipe.d.ts → lib/pipe/safe-style.pipe.d.ts} +0 -0
- package/lib/service/dialog.service.d.ts +12 -0
- package/{app → lib}/service/dictionary.service.d.ts +0 -0
- package/lib/service/icon-cache.service.d.ts +18 -0
- package/{app → lib}/service/ione-connector-adapter.service.d.ts +34 -13
- package/{app → lib}/service/options.service.d.ts +3 -4
- package/lib/service/pending-reason.service.d.ts +32 -0
- package/{app → lib}/service/transaction.service.d.ts +35 -55
- package/{style → lib/style}/_mixin.scss +0 -0
- package/{style → lib/style}/_variables.scss +29 -3
- package/{utils → lib/utils}/array-utils.d.ts +0 -0
- package/{utils → lib/utils}/is-nill.function.d.ts +0 -0
- package/{app → lib}/utils/string-utils.d.ts +0 -0
- package/package.json +27 -33
- package/public_api.d.ts +27 -6
- package/app/app.component.scss +0 -39
- package/app/component/checkout/checkout/checkout.component.d.ts +0 -34
- package/app/component/checkout/checkout/checkout.component.scss +0 -137
- package/app/component/checkout/checkout-overview/checkout-overview.component.d.ts +0 -42
- package/app/component/checkout/checkout-overview-block/checkout-overview-block.component.d.ts +0 -12
- package/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.scss +0 -3
- package/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.d.ts +0 -23
- package/app/component/checkout/checkout-overview-relation-address/style/_layout.scss +0 -19
- package/app/component/checkout/checkout-overview-relation-address/style/_theme.scss +0 -7
- package/app/component/checkout/checkout-overview-relation-edit/style/_layout.scss +0 -92
- package/app/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +0 -15
- package/app/component/checkout/checkout-overview-relation-edit/style/material.scss +0 -5
- package/app/component/checkout/checkout-transaction/checkout-transaction.component.d.ts +0 -16
- package/app/component/checkout/checkout-transaction/checkout-transaction.component.scss +0 -11
- package/app/component/checkout/ione-checkout.component.d.ts +0 -41
- package/app/component/checkout/ione-checkout.module.d.ts +0 -2
- package/app/component/core/characteristic-answer/characteristic-answer.component.d.ts +0 -22
- package/app/component/core/directive/template-wrapper.directive.d.ts +0 -13
- package/app/component/core/image-display/image-display.component.d.ts +0 -14
- package/app/component/core/image-display/style/_layout.scss +0 -39
- package/app/component/core/no-image-display/no-image-display.component.d.ts +0 -5
- package/app/component/service-order/ione-service-order-module.d.ts +0 -2
- package/app/component/service-order/ione-service-order.component.d.ts +0 -25
- package/app/component/service-order/service-order.component.d.ts +0 -52
- package/app/component/service-order/service-order.component.scss +0 -152
- package/app/component/service-order/summary/transaction-article-summary.component.d.ts +0 -17
- package/app/component/service-order/summary/transaction-delivery-summary.component.d.ts +0 -20
- package/app/component/service-order/summary/transaction-delivery-summary.component.scss +0 -20
- package/app/component/service-order/summary/transaction-order-summary.component.d.ts +0 -16
- package/app/component/service-order/summary/transaction-payment-info.component.d.ts +0 -14
- package/app/component/service-order/summary/transaction-product-contract-summary.component.d.ts +0 -7
- package/app/component/service-order/summary/transaction-product-summary.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-service-status.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-service-summary.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-summary-block.component.d.ts +0 -16
- package/app/component/service-order/summary/transaction-summary-block.component.scss +0 -107
- package/app/component/service-order/transaction-article-text/transaction-article-text.component.d.ts +0 -33
- package/app/component/service-order/transaction-article-text/transaction-article-text.component.scss +0 -6
- package/app/component/service-order/transaction-article-text-overview/transaction-article-text-overview.component.d.ts +0 -23
- package/app/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.d.ts +0 -19
- package/app/component/service-order/transaction-header-block/transaction-header-block.component.d.ts +0 -15
- package/app/component/service-order/transaction-header-block/transaction-header-block.component.scss +0 -65
- package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +0 -64
- package/app/component/service-order/transaction-manager/transaction-manager.component.scss +0 -52
- package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.d.ts +0 -16
- package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.scss +0 -88
- package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.d.ts +0 -25
- package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.scss +0 -83
- package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +0 -6
- package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.scss +0 -24
- package/app/component/service-order/transaction-relation/transaction-relation-address.component.d.ts +0 -22
- package/app/component/service-order/transaction-relation/transaction-relation-edit.component.d.ts +0 -29
- package/app/component/service-order/transaction-relation/transaction-relation-edit.component.scss +0 -24
- package/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.d.ts +0 -11
- package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.d.ts +0 -26
- package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.scss +0 -17
- package/app/component/service-order/warehouse/warehouse.component.d.ts +0 -35
- package/app/component/service-order/warehouse/warehouse.component.scss +0 -52
- package/app/component/shopping-cart/ione-shopping-cart.component.d.ts +0 -71
- package/app/component/shopping-cart/ione-shopping-cart.module.d.ts +0 -2
- package/app/component/shopping-cart/shopping-cart/shopping-cart.component.d.ts +0 -61
- package/app/component/shopping-cart/shopping-cart/shopping-cart.component.scss +0 -79
- package/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.d.ts +0 -34
- package/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.scss +0 -107
- package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +0 -91
- package/app/enum/checkout-steps.enum.d.ts +0 -7
- package/app/enum/position-grid-row.enum.d.ts +0 -4
- package/app/model/transaction-add-text-line-request.d.ts +0 -9
- package/app/service/transaction-event.service.d.ts +0 -53
- package/esm2015/app/component/checkout/checkout/checkout.component.js +0 -157
- package/esm2015/app/component/checkout/checkout-login/checkout-login.component.js +0 -106
- package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +0 -185
- package/esm2015/app/component/checkout/checkout-overview-block/checkout-overview-block.component.js +0 -47
- package/esm2015/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +0 -47
- package/esm2015/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +0 -420
- package/esm2015/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.js +0 -103
- package/esm2015/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +0 -377
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +0 -30
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +0 -31
- package/esm2015/app/component/checkout/checkout-transaction/checkout-transaction.component.js +0 -55
- package/esm2015/app/component/checkout/ione-checkout.component.js +0 -137
- package/esm2015/app/component/checkout/ione-checkout.module.js +0 -76
- package/esm2015/app/component/core/base/default-ok-cancel-buttons.component.js +0 -41
- package/esm2015/app/component/core/base/transaction-base.component.js +0 -146
- package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +0 -100
- package/esm2015/app/component/core/core.module.js +0 -48
- package/esm2015/app/component/core/directive/template-wrapper.directive.js +0 -69
- package/esm2015/app/component/core/image-display/image-display.component.js +0 -45
- package/esm2015/app/component/core/no-image-display/no-image-display.component.js +0 -26
- package/esm2015/app/component/core/relation/customer-groups.component.js +0 -40
- package/esm2015/app/component/service-order/ione-service-order-module.js +0 -114
- package/esm2015/app/component/service-order/ione-service-order.component.js +0 -96
- package/esm2015/app/component/service-order/service-order.component.js +0 -199
- package/esm2015/app/component/service-order/summary/transaction-article-summary.component.js +0 -55
- package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +0 -59
- package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +0 -43
- package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +0 -35
- package/esm2015/app/component/service-order/summary/transaction-product-contract-summary.component.js +0 -38
- package/esm2015/app/component/service-order/summary/transaction-product-summary.component.js +0 -41
- package/esm2015/app/component/service-order/summary/transaction-service-status.component.js +0 -37
- package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +0 -38
- package/esm2015/app/component/service-order/summary/transaction-summary-block.component.js +0 -53
- package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +0 -140
- package/esm2015/app/component/service-order/transaction-article-text-overview/transaction-article-text-overview.component.js +0 -105
- package/esm2015/app/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.js +0 -73
- package/esm2015/app/component/service-order/transaction-header-block/transaction-header-block.component.js +0 -83
- package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +0 -314
- package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +0 -76
- package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +0 -71
- package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +0 -36
- package/esm2015/app/component/service-order/transaction-relation/transaction-relation-address.component.js +0 -116
- package/esm2015/app/component/service-order/transaction-relation/transaction-relation-edit.component.js +0 -225
- package/esm2015/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.js +0 -172
- package/esm2015/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.js +0 -120
- package/esm2015/app/component/service-order/warehouse/warehouse.component.js +0 -133
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.component.js +0 -185
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +0 -62
- package/esm2015/app/component/shopping-cart/shopping-cart/shopping-cart.component.js +0 -294
- package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +0 -172
- package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +0 -451
- package/esm2015/app/enum/checkout-steps.enum.js +0 -10
- package/esm2015/app/enum/content-view-mode.enum.js +0 -10
- package/esm2015/app/enum/language-code.enum.js +0 -8
- package/esm2015/app/enum/order-discount-type.enum.js +0 -7
- package/esm2015/app/enum/position-grid-row.enum.js +0 -6
- package/esm2015/app/enum/time-size.type.js +0 -10
- package/esm2015/app/model/business-object.js +0 -81
- package/esm2015/app/model/standard-text.js +0 -3
- package/esm2015/app/model/text-value-container.js +0 -3
- package/esm2015/app/model/transaction-add-text-line-request.js +0 -11
- package/esm2015/app/pipe/append.pipe.js +0 -17
- package/esm2015/app/pipe/co-currency.pipe.js +0 -47
- package/esm2015/app/pipe/date-duration.pipe.js +0 -57
- package/esm2015/app/pipe/delivery-time.pipe.js +0 -33
- package/esm2015/app/pipe/localize.pipe.js +0 -28
- package/esm2015/app/pipe/safe-style-pipe.js +0 -19
- package/esm2015/app/service/dictionary.service.js +0 -76
- package/esm2015/app/service/ione-connector-adapter.service.js +0 -567
- package/esm2015/app/service/options.service.js +0 -91
- package/esm2015/app/service/transaction-event.service.js +0 -26
- package/esm2015/app/service/transaction.service.js +0 -584
- package/esm2015/app/utils/string-utils.js +0 -64
- package/esm2015/assets/dictionary/text.properties.js +0 -332
- package/esm2015/factory/business-object-factory.js +0 -120
- package/esm2015/factory/decorators/boolean.decorator.js +0 -102
- package/esm2015/factory/decorators/complex-array.decorator.js +0 -55
- package/esm2015/factory/decorators/complex-field.decorator.js +0 -57
- package/esm2015/factory/decorators/date-field.decorator.js +0 -36
- package/esm2015/factory/decorators/string-number.decorator.js +0 -43
- package/esm2015/utils/array-utils.js +0 -183
- package/esm2015/utils/is-nill.function.js +0 -5
- package/style/styles.scss +0 -367
- package/styles.scss +0 -11
|
@@ -0,0 +1,679 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { NULL_CUSTOMER_FULL_OBJECT } from "@colijnit/transactionapi/build/model/nul-relation-object";
|
|
4
|
+
import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
|
|
5
|
+
import { SequenceName } from "@colijnit/transactionapi/build/enum/sequence-name.enum";
|
|
6
|
+
import { TransactionLineType } from "@colijnit/transactionapi/build/enum/transaction-line-type.enum";
|
|
7
|
+
import { PendingReasonType } from "@colijnit/transactionapi/build/enum/pending-reason-type.enum";
|
|
8
|
+
import { throwError } from "rxjs";
|
|
9
|
+
import { AddressType } from "@colijnit/transactionapi/build/enum/address-type.enum";
|
|
10
|
+
import { PendingReasonService } from "./pending-reason.service";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./dialog.service";
|
|
13
|
+
import * as i2 from "./options.service";
|
|
14
|
+
import * as i3 from "./ione-connector-adapter.service";
|
|
15
|
+
export class TransactionService extends PendingReasonService {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this._imageCache = new Map();
|
|
19
|
+
}
|
|
20
|
+
// public get currentLines(): TransactionLineInfo[] {
|
|
21
|
+
// return this._currentLines;
|
|
22
|
+
// }
|
|
23
|
+
//
|
|
24
|
+
// public set currentLines(value: TransactionLineInfo[]) {
|
|
25
|
+
// this._currentLines = value;
|
|
26
|
+
// this.articleAmount = ArrayUtils.FindAll(this._currentLines, line => line.isArticle).length;
|
|
27
|
+
// }
|
|
28
|
+
//
|
|
29
|
+
// public set currentTotals(value: TransactionTotal) {
|
|
30
|
+
// this._currentTotals = value;
|
|
31
|
+
// }
|
|
32
|
+
//
|
|
33
|
+
// public get currentTotals(): TransactionTotal {
|
|
34
|
+
// return this._currentTotals;
|
|
35
|
+
// }
|
|
36
|
+
//
|
|
37
|
+
// public get currentRelation(): RelationAnyType {
|
|
38
|
+
// return this._currentRelation;
|
|
39
|
+
// }
|
|
40
|
+
//
|
|
41
|
+
// public get currentTransaction(): TransactionInfo {
|
|
42
|
+
// return this._currentTransaction;
|
|
43
|
+
// }
|
|
44
|
+
//
|
|
45
|
+
// public set currentLineOperationStatuses(values: LineOperationStatus[]) {
|
|
46
|
+
// this._currentLineOperationStatuses = values;
|
|
47
|
+
// }
|
|
48
|
+
//
|
|
49
|
+
// public get currentLineOperationStatuses(): LineOperationStatus[] {
|
|
50
|
+
// return this._currentLineOperationStatuses;
|
|
51
|
+
// }
|
|
52
|
+
//
|
|
53
|
+
// public set currentLineOperationStatus(value: LineOperationStatus) {
|
|
54
|
+
// this._currentLineOperationStatus = value;
|
|
55
|
+
// }
|
|
56
|
+
//
|
|
57
|
+
// public get currentLineOperationStatus(): LineOperationStatus | undefined {
|
|
58
|
+
// const status: LineOperationStatus = this.currentLineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE
|
|
59
|
+
// && line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);
|
|
60
|
+
// return status;
|
|
61
|
+
// }
|
|
62
|
+
//
|
|
63
|
+
// public articleAmount: number = 0;
|
|
64
|
+
// private _currentLines: TransactionLineInfo[] = [];
|
|
65
|
+
// private _currentTotals: TransactionTotal = new TransactionTotal();
|
|
66
|
+
// private _currentRelation: RelationAnyType; // = NULL_RELATION_OBJECT;
|
|
67
|
+
// private _currentTransaction: TransactionInfo = new TransactionInfo();
|
|
68
|
+
// private _currentLineOperationStatus: LineOperationStatus = new LineOperationStatus();
|
|
69
|
+
// private _currentLineOperationStatuses: LineOperationStatus[] = [];
|
|
70
|
+
pendingLineOperationStatus(lineOperationStatuses) {
|
|
71
|
+
const status = lineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE
|
|
72
|
+
&& line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);
|
|
73
|
+
return status;
|
|
74
|
+
}
|
|
75
|
+
updatePriceTransactionLine(uuid, lineUuid, price) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
const response = yield this.connector.changeTransactionLinePrice(uuid, lineUuid, price)
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
// todo: do something with the error
|
|
80
|
+
return false;
|
|
81
|
+
});
|
|
82
|
+
if (response) {
|
|
83
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
84
|
+
this._rememberCurrentTransaction(response);
|
|
85
|
+
return success;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
updateReferenceTransactionLine(uuid, lineUuid, reference) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const response = yield this.connector.changeTransactionLineReference(uuid, lineUuid, reference)
|
|
93
|
+
.catch((error) => {
|
|
94
|
+
// todo: do something with the error
|
|
95
|
+
return false;
|
|
96
|
+
});
|
|
97
|
+
if (response) {
|
|
98
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
99
|
+
this._rememberCurrentTransaction(response);
|
|
100
|
+
return success;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
updateQuantityTransactionLine(uuid, lineUuid, quantity) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
const response = yield this.connector.changeTransactionLineQuantity(uuid, lineUuid, quantity)
|
|
108
|
+
.catch((error) => {
|
|
109
|
+
// todo: do something with the error
|
|
110
|
+
return false;
|
|
111
|
+
});
|
|
112
|
+
if (response) {
|
|
113
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
114
|
+
this._rememberCurrentTransaction(response);
|
|
115
|
+
return success;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
updateDeliveryDateTransactionLine(uuid, lineUuid, date) {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const response = yield this.connector.changeTransactionLineDeliveryDate(uuid, lineUuid, date)
|
|
123
|
+
.catch((error) => {
|
|
124
|
+
// todo: do something with the error
|
|
125
|
+
return false;
|
|
126
|
+
});
|
|
127
|
+
if (response) {
|
|
128
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
129
|
+
this._rememberCurrentTransaction(response);
|
|
130
|
+
return success;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
updatePriceListTransactionLine(uuid, lineUuid, priceList) {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
const response = yield this.connector.changeTransactionLinePriceList(uuid, lineUuid, priceList)
|
|
138
|
+
.catch((error) => {
|
|
139
|
+
// todo: do something with the error
|
|
140
|
+
return false;
|
|
141
|
+
});
|
|
142
|
+
if (response) {
|
|
143
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
144
|
+
this._rememberCurrentTransaction(response);
|
|
145
|
+
return success;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
updateVatTransactionLine(uuid, lineUuid, id) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const response = yield this.connector.changeTransactionLineVat(uuid, lineUuid, id)
|
|
153
|
+
.catch((error) => {
|
|
154
|
+
// todo: do something with the error
|
|
155
|
+
return false;
|
|
156
|
+
});
|
|
157
|
+
if (response) {
|
|
158
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
159
|
+
this._rememberCurrentTransaction(response);
|
|
160
|
+
return success;
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
updateCommissionCodeTransactionLine(uuid, lineUuid, code) {
|
|
166
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
+
const response = yield this.connector.changeTransactionLineCommissionCode(uuid, lineUuid, code)
|
|
168
|
+
.catch((error) => {
|
|
169
|
+
// todo: do something with the error
|
|
170
|
+
return false;
|
|
171
|
+
});
|
|
172
|
+
if (response) {
|
|
173
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
174
|
+
this._rememberCurrentTransaction(response);
|
|
175
|
+
return success;
|
|
176
|
+
}
|
|
177
|
+
return false;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
updateWarehouseTransactionLine(uuid, lineUuid, warehouseNumber) {
|
|
181
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
const response = yield this.connector.changeTransactionLineWarehouse(uuid, lineUuid, warehouseNumber)
|
|
183
|
+
.catch((error) => {
|
|
184
|
+
// todo: do something with the error
|
|
185
|
+
return false;
|
|
186
|
+
});
|
|
187
|
+
if (response) {
|
|
188
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
189
|
+
this._rememberCurrentTransaction(response);
|
|
190
|
+
return success;
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
updateDeliveryMethodTransactionLine(uuid, lineUuid, method) {
|
|
196
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
const response = yield this.connector.changeTransactionLineDeliveryMethod(uuid, lineUuid, method)
|
|
198
|
+
.catch((error) => {
|
|
199
|
+
// todo: do something with the error
|
|
200
|
+
return false;
|
|
201
|
+
});
|
|
202
|
+
if (response) {
|
|
203
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
204
|
+
this._rememberCurrentTransaction(response);
|
|
205
|
+
return success;
|
|
206
|
+
}
|
|
207
|
+
return false;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
updateDiscountTransactionLine(uuid, lineUuid, type, discount, reason = "", code = "") {
|
|
211
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
212
|
+
const response = yield this.connector.changeTransactionLineLineDiscount(uuid, lineUuid, type, discount, reason, code)
|
|
213
|
+
.catch((error) => {
|
|
214
|
+
// todo: do something with the error
|
|
215
|
+
return false;
|
|
216
|
+
});
|
|
217
|
+
if (response) {
|
|
218
|
+
const success = yield this.handleLineOperationStatuses(response);
|
|
219
|
+
this._rememberCurrentTransaction(response);
|
|
220
|
+
return success;
|
|
221
|
+
}
|
|
222
|
+
return false;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
getArticleFullObject(goodId) {
|
|
226
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
return yield this.connector.getArticleFullObject(goodId);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
getDocumentContent(id) {
|
|
231
|
+
return this.connector.getDocumentContent(id);
|
|
232
|
+
}
|
|
233
|
+
getGoodIdFromArticleNr(sku) {
|
|
234
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
235
|
+
return yield this.connector.getGoodIdFromArticleNr(sku);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
getCountry(countryCode) {
|
|
239
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
240
|
+
return yield this.connector.getCountry(countryCode);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
getCashRegisters() {
|
|
244
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
+
return this.connector.getCashRegisters(undefined, 1);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
getRelationNumber(relationId) {
|
|
249
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
250
|
+
return this.connector.getRelationNumber(relationId);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
getPriceLists() {
|
|
254
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
255
|
+
return this.connector.getPriceLists();
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
getVatLists() {
|
|
259
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
260
|
+
return this.connector.getVatList();
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
saveRelation() {
|
|
264
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
265
|
+
// this._cleanRelationBeforeSave();
|
|
266
|
+
if (!this.relation.relationId) {
|
|
267
|
+
this.relation = yield this.connector.insertCustomer(this.relation);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
this.relation = yield this.connector.updateCustomer(this.relation);
|
|
271
|
+
}
|
|
272
|
+
return yield this.addRelationToTransaction(this.relation.relationId);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
getSequenceValue() {
|
|
276
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
277
|
+
return yield this.connector.getSequenceValue(SequenceName.RelationId);
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
getRelationPrivacySettings() {
|
|
281
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
282
|
+
return yield this.connector.getRelationPrivacySettings();
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
getArticleBoundTextLinesOfArticleLine(articleLineUuid) {
|
|
286
|
+
return this.connector.getArticleBoundTextLinesOfArticleLine(articleLineUuid);
|
|
287
|
+
}
|
|
288
|
+
createTransaction() {
|
|
289
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
290
|
+
return new Promise((resolve, reject) => {
|
|
291
|
+
this.connector.createTransaction(TransactionKind.SalesOrder, "1").then((response) => {
|
|
292
|
+
this._rememberCurrentTransaction(response);
|
|
293
|
+
resolve(true);
|
|
294
|
+
}, (error) => {
|
|
295
|
+
reject(error);
|
|
296
|
+
}).catch((reason) => {
|
|
297
|
+
reject(false);
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
getTransaction(transactionNo) {
|
|
303
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
304
|
+
return yield this.openExistingTransaction(TransactionKind.SalesOrder, transactionNo);
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
openExistingTransaction(kind, transactionNr) {
|
|
308
|
+
return new Promise((resolve, reject) => {
|
|
309
|
+
this.connector.getTransactionByNrAndKind(kind, transactionNr)
|
|
310
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
311
|
+
if (response.isSuccess) {
|
|
312
|
+
this.transactionUpdated.next(response);
|
|
313
|
+
resolve(true);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
reject(false);
|
|
317
|
+
}
|
|
318
|
+
}))
|
|
319
|
+
.catch((reason) => {
|
|
320
|
+
reject(false);
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
getTransactionById(transactionId) {
|
|
325
|
+
return new Promise((resolve, reject) => {
|
|
326
|
+
this.connector.getTransactionById(transactionId)
|
|
327
|
+
.then((response) => {
|
|
328
|
+
if (response.isSuccess) {
|
|
329
|
+
this._rememberCurrentTransaction(response);
|
|
330
|
+
this.transactionUpdated.next(response);
|
|
331
|
+
resolve(true);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
reject(false);
|
|
335
|
+
}
|
|
336
|
+
})
|
|
337
|
+
.catch((reason) => {
|
|
338
|
+
reject(false);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
commit() {
|
|
343
|
+
return this.connector.commit();
|
|
344
|
+
}
|
|
345
|
+
saveTransaction(close = false) {
|
|
346
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
347
|
+
const response = yield this.connector.saveTransaction(this.currentTransaction.transactionInfo.uuid);
|
|
348
|
+
if (response.isSuccess) {
|
|
349
|
+
this._rememberCurrentTransaction(response);
|
|
350
|
+
}
|
|
351
|
+
return response;
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
saveTransactionByUuid(transactionUuid) {
|
|
355
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
356
|
+
return new Promise((resolve, reject) => {
|
|
357
|
+
this.connector.saveTransaction(transactionUuid)
|
|
358
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
359
|
+
if (response.isSuccess) {
|
|
360
|
+
this.transactionUpdated.next(response);
|
|
361
|
+
resolve(true);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
reject(false);
|
|
365
|
+
}
|
|
366
|
+
}))
|
|
367
|
+
.catch((reason) => {
|
|
368
|
+
if (reason) {
|
|
369
|
+
this.dialogService.showError(reason.getFullErrorString());
|
|
370
|
+
}
|
|
371
|
+
reject(false);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
addRelationToTransaction(relationId) {
|
|
377
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
378
|
+
yield this._checkAndCreateTransaction();
|
|
379
|
+
const result = yield this.connector.addRelationToTransaction(this.currentTransaction.transactionInfo.uuid, relationId);
|
|
380
|
+
if (result.isSuccess) {
|
|
381
|
+
this._rememberCurrentTransaction(result);
|
|
382
|
+
return true;
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
getCommissionCodes(languageCode) {
|
|
390
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
391
|
+
return yield this.connector.getCommissionCodes(languageCode);
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
getInOutCollection(languageCode) {
|
|
395
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
396
|
+
return yield this.connector.getInOutCollection(languageCode);
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
getTransactionArticleWarehouses(goodId) {
|
|
400
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
401
|
+
return this.connector.getTransactionArticleWarehouses(goodId);
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
getMarketingCodes() {
|
|
405
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
406
|
+
return yield this.connector.getMarketingCodes();
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
insertCustomer(relation) {
|
|
410
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
411
|
+
return yield this.connector.insertCustomer(relation);
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
updateCustomer(relation) {
|
|
415
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
416
|
+
return new Promise((resolve, reject) => {
|
|
417
|
+
this.connector.updateCustomer(relation).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
418
|
+
// this.currentTransaction.transactionInfo.relation = relation;
|
|
419
|
+
resolve(response);
|
|
420
|
+
}))
|
|
421
|
+
.catch((response) => {
|
|
422
|
+
resolve(response);
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
getDeliveryMethods() {
|
|
428
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
429
|
+
return yield this.connector.getDeliveryMethods();
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
getDeliveryOptions() {
|
|
433
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
434
|
+
return yield this.connector.getDeliveryOptions();
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
setTransactionDeliveryOptions() {
|
|
438
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
439
|
+
// const transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest = this._getTransactionDeliveryOptions();
|
|
440
|
+
if (!this.deliveryOptions.transactionUuid) {
|
|
441
|
+
this.deliveryOptions.transactionUuid = this.currentTransaction.transactionInfo.uuid;
|
|
442
|
+
}
|
|
443
|
+
const response = yield this.connector.setTransactionDeliveryOptions(this.deliveryOptions)
|
|
444
|
+
.catch(() => {
|
|
445
|
+
return undefined;
|
|
446
|
+
});
|
|
447
|
+
return response && response.isSuccess;
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
getRelationListObjects(relationRequest) {
|
|
451
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
452
|
+
return yield this.connector.getRelationListObjects(relationRequest);
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
retrieveLineImage(line) {
|
|
456
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
457
|
+
return yield this.getArticleImageByArticleNumber(line.articleNumber);
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
getArticleImageByArticleNumber(articleNumber) {
|
|
461
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
462
|
+
if (this._imageCache.has(articleNumber)) {
|
|
463
|
+
return this._imageCache.get(articleNumber);
|
|
464
|
+
}
|
|
465
|
+
const goodId = yield this.connector.getGoodIdFromArticleNr(articleNumber).catch((error) => {
|
|
466
|
+
console.error(error);
|
|
467
|
+
return null;
|
|
468
|
+
});
|
|
469
|
+
const image = yield this.getArticleImageByGoodId(goodId);
|
|
470
|
+
this._imageCache.set(articleNumber, image);
|
|
471
|
+
return image;
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
getArticleImageByGoodId(goodId) {
|
|
475
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
476
|
+
if (!isNaN(goodId)) {
|
|
477
|
+
return this.connector.getSingleImage(goodId, 1, true, true).catch((error) => {
|
|
478
|
+
console.error(error);
|
|
479
|
+
return "";
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
return "";
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
addArticle(articleNo, amount = 1, warehouseNo = 1, commissionCode = "2", isReturn = false, aboveLineNr = 0, belowLineNr = 0) {
|
|
488
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
489
|
+
yield this._checkAndCreateTransaction();
|
|
490
|
+
const response = yield this.connector.addTransactionLine(this.currentTransaction.transactionInfo.uuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr);
|
|
491
|
+
if (yield this.handleLineOperationStatuses(response)) {
|
|
492
|
+
this._rememberCurrentTransaction(response);
|
|
493
|
+
}
|
|
494
|
+
return true;
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
// public async addArticleToTransaction(transactionUuid: string, articleNo: string, amount: number = 1, warehouseNo: number = 1, commissionCode: string = "2", isReturn: boolean = false, aboveLineNr: number = 0, belowLineNr: number = 0): Promise<LineOperationResponse> {
|
|
498
|
+
// await this._checkAndCreateTransaction();
|
|
499
|
+
// return new Promise<LineOperationResponse>((resolve, reject) => {
|
|
500
|
+
// this.connector.addTransactionLine(transactionUuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)
|
|
501
|
+
// .then(async( response: LineOperationResponse) => {
|
|
502
|
+
// resolve(response);
|
|
503
|
+
// }, (error) => {
|
|
504
|
+
// this._prompt.showError(error);
|
|
505
|
+
// reject(error);
|
|
506
|
+
// })
|
|
507
|
+
// .catch((reason: ValidationResult) => {
|
|
508
|
+
// this._prompt.showError(reason.getFullErrorString());
|
|
509
|
+
// resolve(null);
|
|
510
|
+
// });
|
|
511
|
+
// });
|
|
512
|
+
// }
|
|
513
|
+
addTransactionLine(lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr, remember = true) {
|
|
514
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
515
|
+
yield this._checkAndCreateTransaction();
|
|
516
|
+
return new Promise((resolve, reject) => {
|
|
517
|
+
this.connector.addTransactionLine(this.currentTransaction.transactionInfo.uuid, lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)
|
|
518
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
519
|
+
this._rememberCurrentTransaction(response);
|
|
520
|
+
resolve(response);
|
|
521
|
+
}), (error) => {
|
|
522
|
+
reject(error);
|
|
523
|
+
})
|
|
524
|
+
.catch((reason) => {
|
|
525
|
+
resolve(null);
|
|
526
|
+
});
|
|
527
|
+
});
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
addTextLine(showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr, remember = true) {
|
|
531
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
532
|
+
yield this._checkAndCreateTransaction();
|
|
533
|
+
return new Promise((resolve, reject) => {
|
|
534
|
+
this.connector.addTextLineToTransaction(this.currentTransaction.transactionInfo.uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)
|
|
535
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
536
|
+
this._rememberCurrentTransaction(response);
|
|
537
|
+
resolve(response);
|
|
538
|
+
}), (error) => {
|
|
539
|
+
reject(error);
|
|
540
|
+
})
|
|
541
|
+
.catch((reason) => {
|
|
542
|
+
resolve(null);
|
|
543
|
+
});
|
|
544
|
+
});
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
addTextLineToTransaction(transactionUuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr) {
|
|
548
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
549
|
+
yield this._checkAndCreateTransaction();
|
|
550
|
+
return new Promise((resolve, reject) => {
|
|
551
|
+
this.connector.addTextLineToTransaction(transactionUuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)
|
|
552
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
553
|
+
resolve(response);
|
|
554
|
+
}), (error) => {
|
|
555
|
+
reject(error);
|
|
556
|
+
})
|
|
557
|
+
.catch((reason) => {
|
|
558
|
+
resolve(null);
|
|
559
|
+
});
|
|
560
|
+
});
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
changeLineSequence(lineUuid, aboveLineNr, belowLineNr, remember = true) {
|
|
564
|
+
return new Promise((resolve, reject) => {
|
|
565
|
+
this.connector.changeLineSequence(this.currentTransaction.transactionInfo.uuid, lineUuid, aboveLineNr, belowLineNr)
|
|
566
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
567
|
+
this._rememberCurrentTransaction(response);
|
|
568
|
+
resolve(response);
|
|
569
|
+
}), (error) => {
|
|
570
|
+
reject(error);
|
|
571
|
+
})
|
|
572
|
+
.catch((reason) => {
|
|
573
|
+
resolve(null);
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
deleteTransactionLine(transactionUuid, TransactionLineUuid, remember = true) {
|
|
578
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
579
|
+
return new Promise((resolve, reject) => {
|
|
580
|
+
this.connector.deleteTransactionLine(transactionUuid, TransactionLineUuid)
|
|
581
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
582
|
+
this._rememberCurrentTransaction(response);
|
|
583
|
+
if (response.isSuccess) {
|
|
584
|
+
resolve(response);
|
|
585
|
+
}
|
|
586
|
+
else {
|
|
587
|
+
reject(response);
|
|
588
|
+
}
|
|
589
|
+
}))
|
|
590
|
+
.catch((reason) => {
|
|
591
|
+
resolve(null);
|
|
592
|
+
});
|
|
593
|
+
});
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
changeTransactionLineQuantity(lineUuid, newQuantity, remember = true) {
|
|
597
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
598
|
+
return new Promise((resolve) => {
|
|
599
|
+
this.connector.changeTransactionLineQuantity(this.currentTransaction.transactionInfo.uuid, lineUuid, newQuantity)
|
|
600
|
+
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
601
|
+
if (response.isSuccess) {
|
|
602
|
+
this._rememberCurrentTransaction(response);
|
|
603
|
+
}
|
|
604
|
+
resolve(response);
|
|
605
|
+
})).catch((reason) => {
|
|
606
|
+
resolve(null);
|
|
607
|
+
});
|
|
608
|
+
});
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
setRelationByUser(username, password) {
|
|
612
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
613
|
+
return new Promise((resolve) => {
|
|
614
|
+
this.connector.setRelationByUser(this.currentTransaction.transactionInfo.uuid, username, password)
|
|
615
|
+
.then((isSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
616
|
+
resolve(isSuccess);
|
|
617
|
+
})).catch((reason) => {
|
|
618
|
+
resolve(false);
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
getCustomerFullObjectByRelationId(relationId) {
|
|
624
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
625
|
+
const relationNr = yield this.connector.getRelationNumber(relationId);
|
|
626
|
+
if (relationNr) {
|
|
627
|
+
return yield this.connector.getCustomerFullObject(Number(relationNr));
|
|
628
|
+
}
|
|
629
|
+
return NULL_CUSTOMER_FULL_OBJECT;
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
// public async setRelationByUser(username: string, password: string): Promise<boolean> {
|
|
633
|
+
// const response: boolean = await this.connector.setRelationByUser(this.currentTransaction.uuid, username, password);
|
|
634
|
+
// return response;
|
|
635
|
+
// }
|
|
636
|
+
getTextTypes(languageCode) {
|
|
637
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
638
|
+
return yield this.connector.getTextTypes(languageCode);
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
getStandardTexts(languageCode) {
|
|
642
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
643
|
+
return yield this.connector.getStandardTexts(languageCode);
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
getFirstAddress(relation) {
|
|
647
|
+
if (!relation || !relation.addresses.length) {
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
return relation.getFirstAvailableAddress([
|
|
651
|
+
AddressType.DeliveryAddress,
|
|
652
|
+
AddressType.BillingAddress,
|
|
653
|
+
AddressType.VisitingAddress,
|
|
654
|
+
AddressType.MailingAddress,
|
|
655
|
+
AddressType.NursingAddress
|
|
656
|
+
]);
|
|
657
|
+
}
|
|
658
|
+
// private _cleanRelationBeforeSave(): void {
|
|
659
|
+
// ArrayUtils.RemoveElementsByFilter(this.currentTransaction.transactionInfo.relation.contactOptions, ((item: ContactOption) => {
|
|
660
|
+
// return isNill(item.value);
|
|
661
|
+
// }));
|
|
662
|
+
// }
|
|
663
|
+
_checkAndCreateTransaction() {
|
|
664
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
665
|
+
if (!this.currentTransaction || !this.currentTransaction.transactionInfo || !this.currentTransaction.transactionInfo.transactionNr) {
|
|
666
|
+
if (!(yield this.createTransaction())) {
|
|
667
|
+
throwError("Failed to create transaction");
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
});
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
TransactionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionService_Factory() { return new TransactionService(i0.ɵɵinject(i1.DialogService), i0.ɵɵinject(i2.OptionsService), i0.ɵɵinject(i3.IOneConnectorAdapterService)); }, token: TransactionService, providedIn: "root" });
|
|
674
|
+
TransactionService.decorators = [
|
|
675
|
+
{ type: Injectable, args: [{
|
|
676
|
+
providedIn: "root"
|
|
677
|
+
},] }
|
|
678
|
+
];
|
|
679
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRW5HLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUcxRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFPcEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFPbkcsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFHL0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFFbEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBUzlELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxvQkFBb0I7SUFINUQ7O1FBS1UsZ0JBQVcsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztLQTBvQnREO0lBeG9CQyxxREFBcUQ7SUFDckQsK0JBQStCO0lBQy9CLElBQUk7SUFDSixFQUFFO0lBQ0YsMERBQTBEO0lBQzFELGdDQUFnQztJQUNoQyxnR0FBZ0c7SUFDaEcsSUFBSTtJQUNKLEVBQUU7SUFDRixzREFBc0Q7SUFDdEQsaUNBQWlDO0lBQ2pDLElBQUk7SUFDSixFQUFFO0lBQ0YsaURBQWlEO0lBQ2pELGdDQUFnQztJQUNoQyxJQUFJO0lBQ0osRUFBRTtJQUNGLGtEQUFrRDtJQUNsRCxrQ0FBa0M7SUFDbEMsSUFBSTtJQUNKLEVBQUU7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QUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XG5pbXBvcnQge05VTExfQ1VTVE9NRVJfRlVMTF9PQkpFQ1R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbnVsLXJlbGF0aW9uLW9iamVjdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvXCI7XG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bVwiO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24tbGluZS10eXBlLmVudW1cIjtcbmltcG9ydCB7Q29Eb21haW5WYWx1ZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvXCI7XG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3RcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9saW5lLW9wZXJhdGlvbi1zdGF0dXMuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25SZXNwb25zZUJhc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tcmVzcG9uc2UtYmFzZS5ib1wiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gXCIuLi9tb2RlbC9zdGFuZGFyZC10ZXh0XCI7XG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhXCI7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHtBZGRyZXNzVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uU2VydmljZX0gZnJvbSBcIi4vcGVuZGluZy1yZWFzb24uc2VydmljZVwiO1xuaW1wb3J0IHtDYXNoUmVnaXN0ZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3RlclwiO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdFwiO1xuaW1wb3J0IHtWYXR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0XCI7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2Rpc2NvdW50LXR5cGUuZW51bVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFBlbmRpbmdSZWFzb25TZXJ2aWNlIHtcblxuICBwcml2YXRlIF9pbWFnZUNhY2hlOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gIC8vIHB1YmxpYyBnZXQgY3VycmVudExpbmVzKCk6IFRyYW5zYWN0aW9uTGluZUluZm9bXSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRMaW5lcztcbiAgLy8gfVxuICAvL1xuICAvLyBwdWJsaWMgc2V0IGN1cnJlbnRMaW5lcyh2YWx1ZTogVHJhbnNhY3Rpb25MaW5lSW5mb1tdKSB7XG4gIC8vICAgdGhpcy5fY3VycmVudExpbmVzID0gdmFsdWU7XG4gIC8vICAgdGhpcy5hcnRpY2xlQW1vdW50ID0gQXJyYXlVdGlscy5GaW5kQWxsKHRoaXMuX2N1cnJlbnRMaW5lcywgbGluZSA9PiBsaW5lLmlzQXJ0aWNsZSkubGVuZ3RoO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBzZXQgY3VycmVudFRvdGFscyh2YWx1ZTogVHJhbnNhY3Rpb25Ub3RhbCkge1xuICAvLyAgIHRoaXMuX2N1cnJlbnRUb3RhbHMgPSB2YWx1ZTtcbiAgLy8gfVxuICAvL1xuICAvLyBwdWJsaWMgZ2V0IGN1cnJlbnRUb3RhbHMoKTogVHJhbnNhY3Rpb25Ub3RhbCB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUb3RhbHM7XG4gIC8vIH1cbiAgLy9cbiAgLy8gcHVibGljIGdldCBjdXJyZW50UmVsYXRpb24oKTogUmVsYXRpb25BbnlUeXBlIHtcbiAgLy8gICByZXR1cm4gdGhpcy5fY3VycmVudFJlbGF0aW9uO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBnZXQgY3VycmVudFRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uSW5mbyB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbjtcbiAgLy8gfVxuICAvL1xuICAvLyBwdWJsaWMgc2V0IGN1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzZXModmFsdWVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10pIHtcbiAgLy8gICB0aGlzLl9jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzID0gdmFsdWVzO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBnZXQgY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXNlcygpOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10ge1xuICAvLyAgIHJldHVybiB0aGlzLl9jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBzZXQgY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXModmFsdWU6IExpbmVPcGVyYXRpb25TdGF0dXMpIHtcbiAgLy8gICB0aGlzLl9jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1cyA9IHZhbHVlO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBnZXQgY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXMoKTogTGluZU9wZXJhdGlvblN0YXR1cyB8IHVuZGVmaW5lZCB7XG4gIC8vICAgY29uc3Qgc3RhdHVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzID0gdGhpcy5jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzLmZpbmQobGluZSA9PiBsaW5lLnBlbmRpbmdSZWFzb25UeXBlICE9PSBQZW5kaW5nUmVhc29uVHlwZS5OT05FXG4gIC8vICAgICAmJiBsaW5lLnBlbmRpbmdSZWFzb25UeXBlICE9PSBQZW5kaW5nUmVhc29uVHlwZS5OT05fQ1JJVElDQUxfRElTQ09OVElOVUFUSU9OKTtcbiAgLy8gICByZXR1cm4gc3RhdHVzO1xuICAvLyB9XG4gIC8vXG4gIC8vIHB1YmxpYyBhcnRpY2xlQW1vdW50OiBudW1iZXIgPSAwO1xuXG4gIC8vIHByaXZhdGUgX2N1cnJlbnRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gW107XG4gIC8vIHByaXZhdGUgX2N1cnJlbnRUb3RhbHM6IFRyYW5zYWN0aW9uVG90YWwgPSBuZXcgVHJhbnNhY3Rpb25Ub3RhbCgpO1xuICAvLyBwcml2YXRlIF9jdXJyZW50UmVsYXRpb246IFJlbGF0aW9uQW55VHlwZTsgLy8gPSBOVUxMX1JFTEFUSU9OX09CSkVDVDtcbiAgLy8gcHJpdmF0ZSBfY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm8gPSBuZXcgVHJhbnNhY3Rpb25JbmZvKCk7XG4gIC8vIHByaXZhdGUgX2N1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzID0gbmV3IExpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgLy8gcHJpdmF0ZSBfY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXNlczogTGluZU9wZXJhdGlvblN0YXR1c1tdID0gW107XG5cbiAgcHVibGljIHBlbmRpbmdMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25TdGF0dXNlczogTGluZU9wZXJhdGlvblN0YXR1c1tdKTogTGluZU9wZXJhdGlvblN0YXR1cyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RhdHVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzID0gbGluZU9wZXJhdGlvblN0YXR1c2VzLmZpbmQobGluZSA9PiBsaW5lLnBlbmRpbmdSZWFzb25UeXBlICE9PSBQZW5kaW5nUmVhc29uVHlwZS5OT05FXG4gICAgICAmJiBsaW5lLnBlbmRpbmdSZWFzb25UeXBlICE9PSBQZW5kaW5nUmVhc29uVHlwZS5OT05fQ1JJVElDQUxfRElTQ09OVElOVUFUSU9OKTtcbiAgICByZXR1cm4gc3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVByaWNlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2U6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkLCBsaW5lVXVpZCwgcHJpY2UpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVJlZmVyZW5jZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVRdWFudGl0eVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZCwgbGluZVV1aWQsIHF1YW50aXR5KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVEZWxpdmVyeURhdGVUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkLCBsaW5lVXVpZCwgZGF0ZSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHJpY2VMaXN0VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQsIGxpbmVVdWlkLCBwcmljZUxpc3QpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVZhdFRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQsIGxpbmVVdWlkLCBpZClcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ29tbWlzc2lvbkNvZGVUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUodXVpZCwgbGluZVV1aWQsIGNvZGUpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVdhcmVob3VzZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHdhcmVob3VzZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkLCBsaW5lVXVpZCwgd2FyZWhvdXNlTnVtYmVyKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVEZWxpdmVyeU1ldGhvZFRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQsIGxpbmVVdWlkLCBtZXRob2QpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURpc2NvdW50VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBkaXNjb3VudDogbnVtYmVyLCByZWFzb246IHN0cmluZyA9IFwiXCIsIGNvZGU6IHN0cmluZyA9IFwiXCIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50KHV1aWQsIGxpbmVVdWlkLCB0eXBlLCBkaXNjb3VudCwgcmVhc29uLCBjb2RlKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREb2N1bWVudENvbnRlbnQoaWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldERvY3VtZW50Q29udGVudChpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZElkRnJvbUFydGljbGVOcihza3U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoc2t1KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0Q291bnRyeShjb3VudHJ5Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaFJlZ2lzdGVycygpOiBQcm9taXNlPENhc2hSZWdpc3RlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldENhc2hSZWdpc3RlcnModW5kZWZpbmVkLCAxKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUxpc3RzKCk6IFByb21pc2U8UHJpY2VMaXN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0UHJpY2VMaXN0cygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZhdExpc3RzKCk6IFByb21pc2U8VmF0W10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0VmF0TGlzdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVSZWxhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyB0aGlzLl9jbGVhblJlbGF0aW9uQmVmb3JlU2F2ZSgpO1xuICAgIGlmICghdGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKSB7XG4gICAgICB0aGlzLnJlbGF0aW9uID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIodGhpcy5yZWxhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVsYXRpb24gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci51cGRhdGVDdXN0b21lcih0aGlzLnJlbGF0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHRoaXMucmVsYXRpb24ucmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VWYWx1ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRTZXF1ZW5jZVZhbHVlKFNlcXVlbmNlTmFtZS5SZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTGluZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuY3JlYXRlVHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIFwiMVwiKS50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wZW5FeGlzdGluZ1RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRXhpc3RpbmdUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTnI6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZCwgdHJhbnNhY3Rpb25OcilcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpXG4gICAgICAgIC50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVXBkYXRlZC5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNvbW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbihjbG9zZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCk7XG4gICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVRyYW5zYWN0aW9uQnlVdWlkKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3Iuc2F2ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uVXVpZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlYXNvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24ocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHJlbGF0aW9uSWQpO1xuICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXN1bHQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE1hcmtldGluZ0NvZGVzKCk6IFByb21pc2U8TWFya2V0aW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0TWFya2V0aW5nQ29kZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIocmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uKS50aGVuKGFzeW5jKCByZXNwb25zZTogQ3VzdG9tZXJGdWxsT2JqZWN0KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHJlc3BvbnNlOiBDdXN0b21lckZ1bGxPYmplY3QpID0+IHtcbiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU1ldGhvZHMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldERlbGl2ZXJ5TWV0aG9kcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0RGVsaXZlcnlPcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gY29uc3QgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QgPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucygpO1xuICAgIGlmICghdGhpcy5kZWxpdmVyeU9wdGlvbnMudHJhbnNhY3Rpb25VdWlkKSB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5T3B0aW9ucy50cmFuc2FjdGlvblV1aWQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZDtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uUmVzcG9uc2VCYXNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3Iuc2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModGhpcy5kZWxpdmVyeU9wdGlvbnMpXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlICYmIHJlc3BvbnNlLmlzU3VjY2VzcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmV0cmlldmVMaW5lSW1hZ2UobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXJ0aWNsZUltYWdlQnlBcnRpY2xlTnVtYmVyKGxpbmUuYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUltYWdlQnlBcnRpY2xlTnVtYmVyKGFydGljbGVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKGFydGljbGVOdW1iZXIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoYXJ0aWNsZU51bWJlcik7XG4gICAgfVxuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0R29vZElkRnJvbUFydGljbGVOcihhcnRpY2xlTnVtYmVyKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgY29uc3QgaW1hZ2UgPSBhd2FpdCB0aGlzLmdldEFydGljbGVJbWFnZUJ5R29vZElkKGdvb2RJZCk7XG4gICAgdGhpcy5faW1hZ2VDYWNoZS5zZXQoYXJ0aWNsZU51bWJlciwgaW1hZ2UpO1xuICAgIHJldHVybiBpbWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlSW1hZ2VCeUdvb2RJZChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFpc05hTihnb29kSWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0U2luZ2xlSW1hZ2UoZ29vZElkLCAxLCB0cnVlLCB0cnVlKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcnRpY2xlKFxuICAgIGFydGljbGVObzogc3RyaW5nLFxuICAgIGFtb3VudDogbnVtYmVyID0gMSxcbiAgICB3YXJlaG91c2VObzogbnVtYmVyID0gMSxcbiAgICBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsXG4gICAgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhYm92ZUxpbmVOcjogbnVtYmVyID0gMCxcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuYWRkVHJhbnNhY3Rpb25MaW5lKFxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICAgIGlmIChhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSkpIHtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgYWRkQXJ0aWNsZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcsIGFydGljbGVObzogc3RyaW5nLCBhbW91bnQ6IG51bWJlciA9IDEsIHdhcmVob3VzZU5vOiBudW1iZXIgPSAxLCBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2UsIGFib3ZlTGluZU5yOiBudW1iZXIgPSAwLCBiZWxvd0xpbmVOcjogbnVtYmVyID0gMCk6IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPiB7XG4gIC8vICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgLy8gICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gIC8vICAgICAgIC50aGVuKGFzeW5jKCByZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gIC8vICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIC8vICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuX3Byb21wdC5zaG93RXJyb3IoZXJyb3IpO1xuICAvLyAgICAgICAgIHJlamVjdChlcnJvcik7XG4gIC8vICAgICAgIH0pXG4gIC8vICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5fcHJvbXB0LnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAvLyAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gIC8vICAgICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZShsaW5lVHlwZTogVHJhbnNhY3Rpb25MaW5lVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTm86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJlaG91c2VObz86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXNzaW9uQ29kZT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JldHVybj86IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgbGluZVR5cGUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmUoXG4gICAgICAgICAgICAgICAgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICAgICAgICAgIGFtb3VudDogbnVtYmVyLFxuICAgICAgICAgICAgICAgIGFydGljbGVCb3VuZDogYm9vbGVhbixcbiAgICAgICAgICAgICAgICByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZyxcbiAgICBzaG93T25Eb2N1bWVudHM6IG51bWJlcixcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgYXJ0aWNsZUJvdW5kOiBib29sZWFuLFxuICAgIHJlZkFydGljbGVMaW5lTnI6IG51bWJlcixcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMaW5lU2VxdWVuY2UoXG4gICAgbGluZVV1aWQ6IHN0cmluZyxcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcixcbiAgICByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VMaW5lU2VxdWVuY2UodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBUcmFuc2FjdGlvbkxpbmVVdWlkOiBzdHJpbmcsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVV1aWQpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KGxpbmVVdWlkOiBzdHJpbmcsIG5ld1F1YW50aXR5OiBudW1iZXIsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGxpbmVVdWlkLCBuZXdRdWFudGl0eSlcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0UmVsYXRpb25CeVVzZXIodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLnNldFJlbGF0aW9uQnlVc2VyKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkLCB1c2VybmFtZSwgcGFzc3dvcmQpXG4gICAgICAgIC50aGVuKGFzeW5jIChpc1N1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICByZXNvbHZlKGlzU3VjY2Vzcyk7XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21lckZ1bGxPYmplY3RCeVJlbGF0aW9uSWQocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcbiAgICBjb25zdCByZWxhdGlvbk5yOiBzdHJpbmcgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkKTtcbiAgICBpZiAocmVsYXRpb25Ocikge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldEN1c3RvbWVyRnVsbE9iamVjdChOdW1iZXIocmVsYXRpb25OcikpO1xuICAgIH1cbiAgICByZXR1cm4gTlVMTF9DVVNUT01FUl9GVUxMX09CSkVDVDtcbiAgfVxuXG4gIC8vIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIC8vICAgY29uc3QgcmVzcG9uc2U6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5zZXRSZWxhdGlvbkJ5VXNlcih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCB1c2VybmFtZSwgcGFzc3dvcmQpO1xuICAvLyAgIHJldHVybiByZXNwb25zZTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTdGFuZGFyZFRleHRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmlyc3RBZGRyZXNzKHJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUpOiBBZGRyZXNzIHtcbiAgICBpZiAoIXJlbGF0aW9uIHx8ICFyZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbGF0aW9uLmdldEZpcnN0QXZhaWxhYmxlQWRkcmVzcyhbXG4gICAgICBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MsXG4gICAgICBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcyxcbiAgICAgIEFkZHJlc3NUeXBlLlZpc2l0aW5nQWRkcmVzcyxcbiAgICAgIEFkZHJlc3NUeXBlLk1haWxpbmdBZGRyZXNzLFxuICAgICAgQWRkcmVzc1R5cGUuTnVyc2luZ0FkZHJlc3NcbiAgICBdKTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgX2NsZWFuUmVsYXRpb25CZWZvcmVTYXZlKCk6IHZvaWQge1xuICAvLyAgIEFycmF5VXRpbHMuUmVtb3ZlRWxlbWVudHNCeUZpbHRlcih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24uY29udGFjdE9wdGlvbnMsICgoaXRlbTogQ29udGFjdE9wdGlvbikgPT4ge1xuICAvLyAgICAgcmV0dXJuIGlzTmlsbChpdGVtLnZhbHVlKTtcbiAgLy8gICB9KSk7XG4gIC8vIH1cblxuICBwcml2YXRlIGFzeW5jIF9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gfHwgIXRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyB8fCAhdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uTnIpIHtcbiAgICAgIGlmICghYXdhaXQgdGhpcy5jcmVhdGVUcmFuc2FjdGlvbigpKSB7XG4gICAgICAgIHRocm93RXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHRyYW5zYWN0aW9uXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
|