@colijnit/transaction 12.1.174 → 12.1.176
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/bundles/colijnit-transaction.umd.js +2499 -1873
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +529 -522
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +530 -523
- package/esm2015/lib/cache/service/transaction-business-object-cache-manager.service.js +157 -0
- package/esm2015/lib/cache/service/transaction-select-multiple-cache.service.js +38 -0
- package/esm2015/lib/cache/service/transaction-select-multiple-parameterized-cache.service.js +47 -0
- package/esm2015/lib/cache/service/transaction-select-single-cache.service.js +33 -0
- package/esm2015/lib/cache/service/transaction-select-single-parameterized-cache.service.js +47 -0
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +119 -214
- package/esm2015/lib/component/checkout/checkout.module.js +4 -2
- package/esm2015/lib/component/core/base/transaction-payment-base.component.js +257 -0
- package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.js +7 -2
- package/esm2015/lib/component/payment/payment.component.js +5 -238
- package/esm2015/lib/component/relation/relation-address/relation-address.component.js +1 -7
- package/esm2015/lib/component/relation/relation-addresses/relation-addresses.component.js +2 -1
- package/esm2015/lib/component/relation/suggestions-sidebar/suggestions-sidebar.component.js +151 -0
- package/esm2015/lib/component/relation/suggestions-sidebar/suggestions-sidebar.module.js +25 -0
- package/esm2015/lib/component/transaction/transaction.component.js +2 -2
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-link-relation/transaction-cash-register-link-relation.component.js +2 -5
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.js +26 -25
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.module.js +8 -2
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/transaction-cash-register-payment-dialog.component.js +103 -65
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/transaction-cash-register-payment-dialog.module.js +4 -2
- package/esm2015/lib/component/transaction-header/transaction-header/transaction-header.component.js +8 -6
- package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +2 -2
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.js +13 -5
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.js +72 -7
- package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.js +40 -25
- package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +12 -4
- package/esm2015/lib/component/transaction-internal/transaction-internal.module.js +4 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.component.js +2 -2
- package/esm2015/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.js +2 -2
- package/esm2015/lib/component/transaction-lines/transaction-lines.module.js +1 -1
- package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/transaction-lines-side-panel.component.js +70 -0
- package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/transaction-lines-side-panel.module.js +21 -0
- package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/transaction-lines-side-panel-cash-desk.component.js +109 -0
- package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/transaction-lines-side-panel-cash-desk.module.js +29 -0
- package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +5 -3
- package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/transaction-search-pos-grid.component.js +84 -0
- package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/transaction-search-pos-grid.module.js +24 -0
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.module.js +5 -1
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/transaction-search-pos-order-tile.component.js +102 -0
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/transaction-search-pos-order-tile.module.js +30 -0
- package/esm2015/lib/res/dictionary/dictionaries.js +2 -2
- package/esm2015/lib/service/article.service.js +5 -5
- package/esm2015/lib/service/payment.service.js +8 -8
- package/esm2015/lib/service/relation-suggestions.service.js +69 -0
- package/esm2015/lib/service/relation.service.js +29 -30
- package/esm2015/lib/service/transaction-base.service.js +15 -4
- package/esm2015/lib/service/transaction-connector-adapter.service.js +9 -9
- package/esm2015/lib/service/transaction-connector.service.js +14 -14
- package/esm2015/lib/service/transaction-mapping.service.js +16 -3
- package/esm2015/lib/service/transaction.service.js +3 -3
- package/esm2015/lib/transaction-version.js +3 -3
- package/esm2015/public_api.js +6 -1
- package/fesm2015/colijnit-transaction.js +2250 -1518
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/cache/service/{business-object-cache-manager.service.d.ts → transaction-business-object-cache-manager.service.d.ts} +1 -2
- package/lib/cache/service/{select-multiple-cache.service.d.ts → transaction-select-multiple-cache.service.d.ts} +3 -3
- package/lib/cache/service/{select-multiple-parameterized-cache.service.d.ts → transaction-select-multiple-parameterized-cache.service.d.ts} +3 -3
- package/lib/cache/service/{select-single-cache.service.d.ts → transaction-select-single-cache.service.d.ts} +3 -3
- package/lib/cache/service/{select-single-parameterized-cache.service.d.ts → transaction-select-single-parameterized-cache.service.d.ts} +3 -3
- package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +3 -10
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +0 -31
- package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +0 -15
- package/lib/component/core/base/transaction-payment-base.component.d.ts +68 -0
- package/lib/component/payment/payment.component.d.ts +2 -63
- package/lib/component/relation/suggestions-sidebar/style/_layout.scss +37 -0
- package/lib/component/relation/suggestions-sidebar/style/_material-definition.scss +15 -0
- package/lib/component/relation/suggestions-sidebar/style/_theme.scss +4 -0
- package/lib/component/relation/suggestions-sidebar/style/material.scss +4 -0
- package/lib/component/relation/suggestions-sidebar/suggestions-sidebar.component.d.ts +29 -0
- package/lib/component/relation/suggestions-sidebar/suggestions-sidebar.module.d.ts +2 -0
- package/lib/component/transaction-cash-register-order/style/_layout.scss +1 -1
- package/lib/component/transaction-cash-register-order/transaction-cash-register-link-relation/transaction-cash-register-link-relation.component.d.ts +0 -1
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.d.ts +2 -4
- package/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/style/_layout.scss +28 -6
- package/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/style/_material-definition.scss +3 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/transaction-cash-register-payment-dialog.component.d.ts +15 -12
- package/lib/component/transaction-header/transaction-header/transaction-header.component.d.ts +2 -0
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.d.ts +2 -2
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.d.ts +28 -1
- package/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.d.ts +1 -0
- package/lib/component/transaction-internal/style/_layout.scss +4 -1
- package/lib/component/transaction-internal/transaction-internal.component.d.ts +3 -1
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/style/_layout.scss +6 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/style/_material-definition.scss +2 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/style/_theme.scss +4 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/style/material.scss +5 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/transaction-lines-side-panel.component.d.ts +20 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel/transaction-lines-side-panel.module.d.ts +2 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/style/_layout.scss +31 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/style/_theme.scss +4 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/style/material.scss +4 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/transaction-lines-side-panel-cash-desk.component.d.ts +33 -0
- package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-cash-desk/transaction-lines-side-panel-cash-desk.module.d.ts +2 -0
- package/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/style/_layout.scss +4 -0
- package/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/style/_material-definition.scss +0 -0
- package/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/style/_theme.scss +4 -0
- package/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/transaction-search-pos-grid.component.d.ts +7 -0
- package/lib/component/transaction-search/transaction-search-grid/transaction-search-pos-grid/transaction-search-pos-grid.module.d.ts +2 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/style/_layout.scss +4 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/style/_material-definition.scss +0 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/style/_theme.scss +4 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/style/material.scss +4 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/transaction-search-pos-order-tile.component.d.ts +9 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/transaction-search-pos-order-tile.module.d.ts +2 -0
- package/lib/res/dictionary/dictionaries.d.ts +2 -0
- package/lib/service/article.service.d.ts +2 -2
- package/lib/service/payment.service.d.ts +3 -3
- package/lib/service/relation-suggestions.service.d.ts +22 -0
- package/lib/service/relation.service.d.ts +4 -4
- package/lib/service/transaction-connector-adapter.service.d.ts +3 -3
- package/lib/service/transaction-connector.service.d.ts +5 -5
- package/lib/service/transaction-mapping.service.d.ts +2 -0
- package/package.json +2 -2
- package/public_api.d.ts +5 -0
- package/esm2015/lib/cache/service/business-object-cache-manager.service.js +0 -156
- package/esm2015/lib/cache/service/select-multiple-cache.service.js +0 -38
- package/esm2015/lib/cache/service/select-multiple-parameterized-cache.service.js +0 -47
- package/esm2015/lib/cache/service/select-single-cache.service.js +0 -33
- package/esm2015/lib/cache/service/select-single-parameterized-cache.service.js +0 -47
- package/lib/component/cash-register-order-wrapper.ts/style/_layout.scss +0 -4
- package/lib/component/cash-register-order-wrapper.ts/style/_theme.scss +0 -4
- /package/lib/component/{cash-register-order-wrapper.ts → transaction-lines-side-panel/transaction-lines-side-panel-cash-desk}/style/_material-definition.scss +0 -0
- /package/lib/component/{cash-register-order-wrapper.ts → transaction-search/transaction-search-grid/transaction-search-pos-grid}/style/material.scss +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { CacheField } from '../cache-field';
|
|
4
|
+
import { ParameterCacheField } from '../parameter-cache-field';
|
|
5
|
+
import { ObjectUtils } from '@colijnit/ioneconnector/build/utils/object-utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* App-wide, top-level, 'dumb' BO cache manager service. It stores and returns simple and parameterized business object cache items.
|
|
9
|
+
*
|
|
10
|
+
* Several other services register cache items onto this manager, such as repositories or the more generic SelectMultipleSimpleCacheService.
|
|
11
|
+
*
|
|
12
|
+
* This is a dumb cache manager. It just functions as a point to add and retrieve generic cache items, but does not know how to actually
|
|
13
|
+
* LOAD these cache items from the database, or what exact types the items are.
|
|
14
|
+
*
|
|
15
|
+
* All caches are reset when the user logs out.
|
|
16
|
+
*/
|
|
17
|
+
export class TransactionBusinessObjectCacheManagerService {
|
|
18
|
+
constructor() {
|
|
19
|
+
// emits after this BO cache manager has been reset (e.g. after user logs out)
|
|
20
|
+
this.reset = new Subject();
|
|
21
|
+
// key: global cache id's, e.g. a model classe or any other arbitrary key for cache items
|
|
22
|
+
this._selectMultipleCache = new Map();
|
|
23
|
+
// key: global cache id's, e.g. a model classe or any other arbitrary key for cache items
|
|
24
|
+
this._selectMultipleParameterizedCache = new Map();
|
|
25
|
+
this._selectSingleCache = new Map();
|
|
26
|
+
this._selectSingleParameterizedCache = new Map();
|
|
27
|
+
}
|
|
28
|
+
// private _logoutSub: Subscription;
|
|
29
|
+
// constructor(private _transactionService: TransactionService) {
|
|
30
|
+
// this._logoutSub = this._transactionService.logout.subscribe(() => {
|
|
31
|
+
// this._reset();
|
|
32
|
+
// });
|
|
33
|
+
// }
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
// this._logoutSub.unsubscribe();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates and adds a new simple cache item for the given key with the given load function.
|
|
39
|
+
* @param key
|
|
40
|
+
* @param loadFunction e.g. () => { return this._dataService.selectMultiple(Color); }
|
|
41
|
+
* @param overrideOld Whether to allow an old cache item with the same key to become override by this newly created cache item.
|
|
42
|
+
* @returns The newly created cache item.
|
|
43
|
+
*/
|
|
44
|
+
addNewSelectMultipleCacheItem(key, loadFunction, overrideOld = false) {
|
|
45
|
+
if (!overrideOld && this._selectMultipleCache.has(key)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const newCacheItem = new CacheField();
|
|
49
|
+
newCacheItem.loadFunction = loadFunction;
|
|
50
|
+
this._selectMultipleCache.set(key, newCacheItem);
|
|
51
|
+
return newCacheItem;
|
|
52
|
+
}
|
|
53
|
+
addNewSelectSingleCacheItem(key, id = TransactionBusinessObjectCacheManagerService._NullBoId, loadFunction, overrideOld = false) {
|
|
54
|
+
const cacheId = id.toString();
|
|
55
|
+
if (!overrideOld && this.hasSingleCacheItem(key, id)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!this._selectSingleCache.has(key)) {
|
|
59
|
+
this._selectSingleCache.set(key, {});
|
|
60
|
+
}
|
|
61
|
+
const newCacheItem = new CacheField();
|
|
62
|
+
newCacheItem.loadFunction = loadFunction;
|
|
63
|
+
this._selectSingleCache.get(key)[cacheId] = newCacheItem;
|
|
64
|
+
return newCacheItem;
|
|
65
|
+
}
|
|
66
|
+
addNewSelectSingleParameterizedCacheItem(key, loadFunction, overrideOld = false) {
|
|
67
|
+
if (!overrideOld && this._selectSingleParameterizedCache.has(key)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const newCacheItem = new ParameterCacheField();
|
|
71
|
+
newCacheItem.loadFunction = loadFunction;
|
|
72
|
+
this._selectSingleParameterizedCache.set(key, newCacheItem);
|
|
73
|
+
return newCacheItem;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates and adds a new parameterized cache item for the given key with the given load function.
|
|
77
|
+
* @param key
|
|
78
|
+
* @param loadFunction e.g. (category: ArticleCategory) => { return this._dataService.selectMultiple(TurnoverGroupImage, category); }
|
|
79
|
+
* @param overrideOld Whether to allow an old cache item with the same key to become override by this newly created cache item.
|
|
80
|
+
*/
|
|
81
|
+
addNewSelectMultipleParameterizedCacheItem(key, loadFunction, overrideOld = false) {
|
|
82
|
+
if (!overrideOld && this._selectMultipleParameterizedCache.has(key)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const newCacheItem = new ParameterCacheField();
|
|
86
|
+
newCacheItem.loadFunction = loadFunction;
|
|
87
|
+
this._selectMultipleParameterizedCache.set(key, newCacheItem);
|
|
88
|
+
return newCacheItem;
|
|
89
|
+
}
|
|
90
|
+
hasSelectMultipleCacheItem(key) {
|
|
91
|
+
return this._selectMultipleCache.has(key);
|
|
92
|
+
}
|
|
93
|
+
hasSingleCacheItem(key, id = TransactionBusinessObjectCacheManagerService._NullBoId) {
|
|
94
|
+
const cacheId = id.toString();
|
|
95
|
+
return this._selectSingleCache.has(key) && !!this._selectSingleCache.get(key)[cacheId];
|
|
96
|
+
}
|
|
97
|
+
hasSelectMultipleParameterizedCacheItem(key) {
|
|
98
|
+
return this._selectMultipleParameterizedCache.has(key);
|
|
99
|
+
}
|
|
100
|
+
hasSelectSingleParameterizedCacheItem(key) {
|
|
101
|
+
return this._selectSingleParameterizedCache.has(key);
|
|
102
|
+
}
|
|
103
|
+
// Returns the simple cache item with the given key. T is the type of the cache value items requested, e.g. Color.
|
|
104
|
+
getSelectMultipleCacheItem(key) {
|
|
105
|
+
return this._selectMultipleCache.get(key);
|
|
106
|
+
}
|
|
107
|
+
getSingleCacheItem(key, id = TransactionBusinessObjectCacheManagerService._NullBoId) {
|
|
108
|
+
const cacheId = id.toString();
|
|
109
|
+
return this._selectSingleCache.has(key) && this._selectSingleCache.get(key)[cacheId];
|
|
110
|
+
}
|
|
111
|
+
deleteSingleCacheItem(key, id = TransactionBusinessObjectCacheManagerService._NullBoId) {
|
|
112
|
+
const cacheId = id.toString();
|
|
113
|
+
if (this._selectSingleCache.has(key)) {
|
|
114
|
+
this._selectSingleCache.delete(key);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Returns the parameterized cache item with the given key. T is the type of the cache value items requested, e.g. Color.
|
|
118
|
+
getSelectMultipleParameterCacheItem(key) {
|
|
119
|
+
return this._selectMultipleParameterizedCache.get(key);
|
|
120
|
+
}
|
|
121
|
+
getSelectSingleParameterCacheItem(key) {
|
|
122
|
+
return this._selectSingleParameterizedCache.get(key);
|
|
123
|
+
}
|
|
124
|
+
_reset() {
|
|
125
|
+
this._selectMultipleCache.forEach((cacheItem) => {
|
|
126
|
+
if (cacheItem) {
|
|
127
|
+
cacheItem.reset();
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
this._selectSingleCache.forEach((cache) => {
|
|
131
|
+
if (cache) {
|
|
132
|
+
ObjectUtils.ForOwnProperty(cache, (cacheField) => {
|
|
133
|
+
cacheField.reset();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
this._selectSingleParameterizedCache.forEach((selSinParamCacheItem) => {
|
|
138
|
+
if (selSinParamCacheItem) {
|
|
139
|
+
selSinParamCacheItem.reset();
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
this._selectMultipleParameterizedCache.forEach((selMulParamCacheItem) => {
|
|
143
|
+
if (selMulParamCacheItem) {
|
|
144
|
+
selMulParamCacheItem.reset();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
this.reset.next();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
TransactionBusinessObjectCacheManagerService._NullBoId = -1;
|
|
151
|
+
TransactionBusinessObjectCacheManagerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionBusinessObjectCacheManagerService_Factory() { return new TransactionBusinessObjectCacheManagerService(); }, token: TransactionBusinessObjectCacheManagerService, providedIn: "root" });
|
|
152
|
+
TransactionBusinessObjectCacheManagerService.decorators = [
|
|
153
|
+
{ type: Injectable, args: [{
|
|
154
|
+
providedIn: "root"
|
|
155
|
+
},] }
|
|
156
|
+
];
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYnVzaW5lc3Mtb2JqZWN0LWNhY2hlLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1idXNpbmVzcy1vYmplY3QtY2FjaGUtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtEQUFrRCxDQUFDOztBQUc3RTs7Ozs7Ozs7O0dBU0c7QUFLSCxNQUFNLE9BQU8sNENBQTRDO0lBSnpEO1FBS0UsOEVBQThFO1FBQzlELFVBQUssR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUkzRCx5RkFBeUY7UUFDakYseUJBQW9CLEdBQTJDLElBQUksR0FBRyxFQUFFLENBQUM7UUFFakYseUZBQXlGO1FBQ2pGLHNDQUFpQyxHQUNyQyxJQUFJLEdBQUcsRUFBOEMsQ0FBQztRQUVsRCx1QkFBa0IsR0FBaUYsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM3RyxvQ0FBK0IsR0FDbkMsSUFBSSxHQUFHLEVBQW9DLENBQUM7S0FtS2pEO0lBaktDLG9DQUFvQztJQUVwQyxpRUFBaUU7SUFDakUsd0VBQXdFO0lBQ3hFLHFCQUFxQjtJQUNyQixRQUFRO0lBQ1IsSUFBSTtJQUVKLFdBQVc7UUFDVCxpQ0FBaUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDZCQUE2QixDQUNsQyxHQUFRLEVBQ1IsWUFBZ0MsRUFD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RyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksU0FBUyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWtELEVBQUUsRUFBRTtZQUNyRixJQUFJLEtBQUssRUFBRTtnQkFDVCxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQXNDLEVBQUUsRUFBRTtvQkFDM0UsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQXlELEVBQUUsRUFBRTtZQUN6RyxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUEyRCxFQUFFLEVBQUU7WUFDN0csSUFBSSxvQkFBb0IsRUFBRTtnQkFDeEIsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7QUE3S2Msc0RBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQzs7O1lBUnZDLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0NhY2hlRmllbGR9IGZyb20gJy4uL2NhY2hlLWZpZWxkJztcclxuaW1wb3J0IHtQYXJhbWV0ZXJDYWNoZUZpZWxkfSBmcm9tICcuLi9wYXJhbWV0ZXItY2FjaGUtZmllbGQnO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3QnO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC91dGlscy9vYmplY3QtdXRpbHMnO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0SURUeXBlfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC90eXBlL2J1c2luZXNzLW9iamVjdC1pZC10eXBlJztcclxuXHJcbi8qKlxyXG4gKiBBcHAtd2lkZSwgdG9wLWxldmVsLCAnZHVtYicgQk8gY2FjaGUgbWFuYWdlciBzZXJ2aWNlLiBJdCBzdG9yZXMgYW5kIHJldHVybnMgc2ltcGxlIGFuZCBwYXJhbWV0ZXJpemVkIGJ1c2luZXNzIG9iamVjdCBjYWNoZSBpdGVtcy5cclxuICpcclxuICogU2V2ZXJhbCBvdGhlciBzZXJ2aWNlcyByZWdpc3RlciBjYWNoZSBpdGVtcyBvbnRvIHRoaXMgbWFuYWdlciwgc3VjaCBhcyByZXBvc2l0b3JpZXMgb3IgdGhlIG1vcmUgZ2VuZXJpYyBTZWxlY3RNdWx0aXBsZVNpbXBsZUNhY2hlU2VydmljZS5cclxuICpcclxuICogVGhpcyBpcyBhIGR1bWIgY2FjaGUgbWFuYWdlci4gSXQganVzdCBmdW5jdGlvbnMgYXMgYSBwb2ludCB0byBhZGQgYW5kIHJldHJpZXZlIGdlbmVyaWMgY2FjaGUgaXRlbXMsIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBhY3R1YWxseVxyXG4gKiBMT0FEIHRoZXNlIGNhY2hlIGl0ZW1zIGZyb20gdGhlIGRhdGFiYXNlLCBvciB3aGF0IGV4YWN0IHR5cGVzIHRoZSBpdGVtcyBhcmUuXHJcbiAqXHJcbiAqIEFsbCBjYWNoZXMgYXJlIHJlc2V0IHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdXNpbmVzc09iamVjdENhY2hlTWFuYWdlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vIGVtaXRzIGFmdGVyIHRoaXMgQk8gY2FjaGUgbWFuYWdlciBoYXMgYmVlbiByZXNldCAoZS5nLiBhZnRlciB1c2VyIGxvZ3Mgb3V0KVxyXG4gIHB1YmxpYyByZWFkb25seSByZXNldDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF9OdWxsQm9JZDogbnVtYmVyID0gLTE7XHJcblxyXG4gIC8vIGtleTogZ2xvYmFsIGNhY2hlIGlkJ3MsIGUuZy4gYSBtb2RlbCBjbGFzc2Ugb3IgYW55IG90aGVyIGFyYml0cmFyeSBrZXkgZm9yIGNhY2hlIGl0ZW1zXHJcbiAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZTogTWFwPGFueSwgQ2FjaGVGaWVsZDxCdXNpbmVzc09iamVjdFtdPj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIC8vIGtleTogZ2xvYmFsIGNhY2hlIGlkJ3MsIGUuZy4gYSBtb2RlbCBjbGFzc2Ugb3IgYW55IG90aGVyIGFyYml0cmFyeSBrZXkgZm9yIGNhY2hlIGl0ZW1zXHJcbiAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGU6IE1hcDxhbnksIFBhcmFtZXRlckNhY2hlRmllbGQ8QnVzaW5lc3NPYmplY3RbXT4+XHJcbiAgICA9IG5ldyBNYXA8YW55LCBQYXJhbWV0ZXJDYWNoZUZpZWxkPEJ1c2luZXNzT2JqZWN0W10+PigpO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RTaW5nbGVDYWNoZTogTWFwPHsgbmV3KCk6IEJ1c2luZXNzT2JqZWN0IH0sIHsgW2lkOiBzdHJpbmddOiBDYWNoZUZpZWxkPEJ1c2luZXNzT2JqZWN0PiB9PiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIF9zZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGU6IE1hcDxhbnksIFBhcmFtZXRlckNhY2hlRmllbGQ8T2JqZWN0Pj5cclxuICAgID0gbmV3IE1hcDxhbnksIFBhcmFtZXRlckNhY2hlRmllbGQ8T2JqZWN0Pj4oKTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBfbG9nb3V0U3ViOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8vIGNvbnN0cnVjdG9yKHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlKSB7XHJcbiAgLy8gICB0aGlzLl9sb2dvdXRTdWIgPSB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UubG9nb3V0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5fbG9nb3V0U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuZCBhZGRzIGEgbmV3IHNpbXBsZSBjYWNoZSBpdGVtIGZvciB0aGUgZ2l2ZW4ga2V5IHdpdGggdGhlIGdpdmVuIGxvYWQgZnVuY3Rpb24uXHJcbiAgICogQHBhcmFtIGtleVxyXG4gICAqIEBwYXJhbSBsb2FkRnVuY3Rpb24gZS5nLiAoKSA9PiB7IHJldHVybiB0aGlzLl9kYXRhU2VydmljZS5zZWxlY3RNdWx0aXBsZShDb2xvcik7IH1cclxuICAgKiBAcGFyYW0gb3ZlcnJpZGVPbGQgV2hldGhlciB0byBhbGxvdyBhbiBvbGQgY2FjaGUgaXRlbSB3aXRoIHRoZSBzYW1lIGtleSB0byBiZWNvbWUgb3ZlcnJpZGUgYnkgdGhpcyBuZXdseSBjcmVhdGVkIGNhY2hlIGl0ZW0uXHJcbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgY2FjaGUgaXRlbS5cclxuICAgKi9cclxuICBwdWJsaWMgYWRkTmV3U2VsZWN0TXVsdGlwbGVDYWNoZUl0ZW08VCBleHRlbmRzIEJ1c2luZXNzT2JqZWN0PihcclxuICAgIGtleTogYW55LFxyXG4gICAgbG9hZEZ1bmN0aW9uOiAoKSA9PiBQcm9taXNlPFRbXT4sXHJcbiAgICBvdmVycmlkZU9sZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogQ2FjaGVGaWVsZDxUW10+IHtcclxuICAgIGlmICghb3ZlcnJpZGVPbGQgJiYgdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZS5oYXMoa2V5KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3Q2FjaGVJdGVtOiBDYWNoZUZpZWxkPFRbXT4gPSBuZXcgQ2FjaGVGaWVsZDxUW10+KCk7XHJcbiAgICBuZXdDYWNoZUl0ZW0ubG9hZEZ1bmN0aW9uID0gbG9hZEZ1bmN0aW9uO1xyXG4gICAgdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZS5zZXQoa2V5LCBuZXdDYWNoZUl0ZW0pO1xyXG4gICAgcmV0dXJuIG5ld0NhY2hlSXRlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdTZWxlY3RTaW5nbGVDYWNoZUl0ZW08VCBleHRlbmRzIEJ1c2luZXNzT2JqZWN0PihcclxuICAgIGtleTogeyBuZXcoKTogVCB9LFxyXG4gICAgaWQ6IEJ1c2luZXNzT2JqZWN0SURUeXBlID0gVHJhbnNhY3Rpb25CdXNpbmVzc09iamVjdENhY2hlTWFuYWdlclNlcnZpY2UuX051bGxCb0lkLFxyXG4gICAgbG9hZEZ1bmN0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxyXG4gICAgb3ZlcnJpZGVPbGQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICk6IENhY2hlRmllbGQ8VD4ge1xyXG4gICAgY29uc3QgY2FjaGVJZDogc3RyaW5nID0gaWQudG9TdHJpbmcoKTtcclxuICAgIGlmICghb3ZlcnJpZGVPbGQgJiYgdGhpcy5oYXNTaW5nbGVDYWNoZUl0ZW0oa2V5LCBpZCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZS5oYXMoa2V5KSkge1xyXG4gICAgICB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZS5zZXQoa2V5LCB7fSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdDYWNoZUl0ZW06IENhY2hlRmllbGQ8VD4gPSBuZXcgQ2FjaGVGaWVsZDxUPigpO1xyXG4gICAgbmV3Q2FjaGVJdGVtLmxvYWRGdW5jdGlvbiA9IGxvYWRGdW5jdGlvbjtcclxuICAgIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlLmdldChrZXkpW2NhY2hlSWRdID0gbmV3Q2FjaGVJdGVtO1xyXG4gICAgcmV0dXJuIG5ld0NhY2hlSXRlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdTZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVJdGVtPFQgZXh0ZW5kcyBPYmplY3Q+KFxyXG4gICAga2V5OiBhbnksXHJcbiAgICBsb2FkRnVuY3Rpb246IChwYXJhbXM/OiBhbnkpID0+IFByb21pc2U8VD4sXHJcbiAgICBvdmVycmlkZU9sZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUPiB7XHJcbiAgICBpZiAoIW92ZXJyaWRlT2xkICYmIHRoaXMuX3NlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZS5oYXMoa2V5KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3Q2FjaGVJdGVtOiBQYXJhbWV0ZXJDYWNoZUZpZWxkPFQ+ID0gbmV3IFBhcmFtZXRlckNhY2hlRmllbGQ8VD4oKTtcclxuICAgIG5ld0NhY2hlSXRlbS5sb2FkRnVuY3Rpb24gPSBsb2FkRnVuY3Rpb247XHJcbiAgICB0aGlzLl9zZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGUuc2V0KGtleSwgbmV3Q2FjaGVJdGVtKTtcclxuICAgIHJldHVybiBuZXdDYWNoZUl0ZW07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuZCBhZGRzIGEgbmV3IHBhcmFtZXRlcml6ZWQgY2FjaGUgaXRlbSBmb3IgdGhlIGdpdmVuIGtleSB3aXRoIHRoZSBnaXZlbiBsb2FkIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcGFyYW0gbG9hZEZ1bmN0aW9uIGUuZy4gKGNhdGVnb3J5OiBBcnRpY2xlQ2F0ZWdvcnkpID0+IHsgcmV0dXJuIHRoaXMuX2RhdGFTZXJ2aWNlLnNlbGVjdE11bHRpcGxlKFR1cm5vdmVyR3JvdXBJbWFnZSwgY2F0ZWdvcnkpOyB9XHJcbiAgICogQHBhcmFtIG92ZXJyaWRlT2xkIFdoZXRoZXIgdG8gYWxsb3cgYW4gb2xkIGNhY2hlIGl0ZW0gd2l0aCB0aGUgc2FtZSBrZXkgdG8gYmVjb21lIG92ZXJyaWRlIGJ5IHRoaXMgbmV3bHkgY3JlYXRlZCBjYWNoZSBpdGVtLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGROZXdTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZUl0ZW08VCBleHRlbmRzIEJ1c2luZXNzT2JqZWN0PihcclxuICAgIGtleTogYW55LFxyXG4gICAgbG9hZEZ1bmN0aW9uOiAocGFyYW1zPzogYW55KSA9PiBQcm9taXNlPFRbXT4sXHJcbiAgICBvdmVycmlkZU9sZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUW10+IHtcclxuICAgIGlmICghb3ZlcnJpZGVPbGQgJiYgdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGUuaGFzKGtleSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0NhY2hlSXRlbTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUW10+ID0gbmV3IFBhcmFtZXRlckNhY2hlRmllbGQ8VFtdPigpO1xyXG4gICAgbmV3Q2FjaGVJdGVtLmxvYWRGdW5jdGlvbiA9IGxvYWRGdW5jdGlvbjtcclxuICAgIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlLnNldChrZXksIG5ld0NhY2hlSXRlbSk7XHJcbiAgICByZXR1cm4gbmV3Q2FjaGVJdGVtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc1NlbGVjdE11bHRpcGxlQ2FjaGVJdGVtKGtleTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZS5oYXMoa2V5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNTaW5nbGVDYWNoZUl0ZW08VCBleHRlbmRzIEJ1c2luZXNzT2JqZWN0PihrZXk6IHsgbmV3KCk6IFQgfSwgaWQ6IEJ1c2luZXNzT2JqZWN0SURUeXBlID0gVHJhbnNhY3Rpb25CdXNpbmVzc09iamVjdENhY2hlTWFuYWdlclNlcnZpY2UuX051bGxCb0lkKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjYWNoZUlkOiBzdHJpbmcgPSBpZC50b1N0cmluZygpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlLmhhcyhrZXkpICYmICEhdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGUuZ2V0KGtleSlbY2FjaGVJZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVJdGVtKGtleTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGUuaGFzKGtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlSXRlbShrZXk6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZS5oYXMoa2V5KTtcclxuICB9XHJcblxyXG4gIC8vIFJldHVybnMgdGhlIHNpbXBsZSBjYWNoZSBpdGVtIHdpdGggdGhlIGdpdmVuIGtleS4gVCBpcyB0aGUgdHlwZSBvZiB0aGUgY2FjaGUgdmFsdWUgaXRlbXMgcmVxdWVzdGVkLCBlLmcuIENvbG9yLlxyXG4gIHB1YmxpYyBnZXRTZWxlY3RNdWx0aXBsZUNhY2hlSXRlbTxUIGV4dGVuZHMgQnVzaW5lc3NPYmplY3Q+KGtleTogYW55KTogQ2FjaGVGaWVsZDxUW10+IHtcclxuICAgIHJldHVybiA8Q2FjaGVGaWVsZDxUW10+PnRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGUuZ2V0KGtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2luZ2xlQ2FjaGVJdGVtPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oa2V5OiB7IG5ldygpOiBUIH0sIGlkOiBCdXNpbmVzc09iamVjdElEVHlwZSA9IFRyYW5zYWN0aW9uQnVzaW5lc3NPYmplY3RDYWNoZU1hbmFnZXJTZXJ2aWNlLl9OdWxsQm9JZCk6IENhY2hlRmllbGQ8VD4ge1xyXG4gICAgY29uc3QgY2FjaGVJZDogc3RyaW5nID0gaWQudG9TdHJpbmcoKTtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZS5oYXMoa2V5KSAmJiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZS5nZXQoa2V5KVtjYWNoZUlkXSBhcyBDYWNoZUZpZWxkPFQ+O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZVNpbmdsZUNhY2hlSXRlbTxUIGV4dGVuZHMgQnVzaW5lc3NPYmplY3Q+KGtleTogeyBuZXcoKTogVCB9LCBpZDogQnVzaW5lc3NPYmplY3RJRFR5cGUgPSBUcmFuc2FjdGlvbkJ1c2luZXNzT2JqZWN0Q2FjaGVNYW5hZ2VyU2VydmljZS5fTnVsbEJvSWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNhY2hlSWQ6IHN0cmluZyA9IGlkLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGUuaGFzKGtleSkpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGUuZGVsZXRlKGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZXR1cm5zIHRoZSBwYXJhbWV0ZXJpemVkIGNhY2hlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4ga2V5LiBUIGlzIHRoZSB0eXBlIG9mIHRoZSBjYWNoZSB2YWx1ZSBpdGVtcyByZXF1ZXN0ZWQsIGUuZy4gQ29sb3IuXHJcbiAgcHVibGljIGdldFNlbGVjdE11bHRpcGxlUGFyYW1ldGVyQ2FjaGVJdGVtPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oa2V5OiBhbnkpOiBQYXJhbWV0ZXJDYWNoZUZpZWxkPFRbXT4ge1xyXG4gICAgcmV0dXJuIDxQYXJhbWV0ZXJDYWNoZUZpZWxkPFRbXT4+dGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGUuZ2V0KGtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VsZWN0U2luZ2xlUGFyYW1ldGVyQ2FjaGVJdGVtPFQ+KGtleTogYW55KTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUPiB7XHJcbiAgICByZXR1cm4gPFBhcmFtZXRlckNhY2hlRmllbGQ8VD4+dGhpcy5fc2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlLmZvckVhY2goKGNhY2hlSXRlbTogQ2FjaGVGaWVsZDxCdXNpbmVzc09iamVjdFtdPikgPT4ge1xyXG4gICAgICBpZiAoY2FjaGVJdGVtKSB7XHJcbiAgICAgICAgY2FjaGVJdGVtLnJlc2V0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlLmZvckVhY2goKGNhY2hlOiB7IFtwOiBzdHJpbmddOiBDYWNoZUZpZWxkPEJ1c2luZXNzT2JqZWN0PiB9KSA9PiB7XHJcbiAgICAgIGlmIChjYWNoZSkge1xyXG4gICAgICAgIE9iamVjdFV0aWxzLkZvck93blByb3BlcnR5KGNhY2hlLCAoY2FjaGVGaWVsZDogQ2FjaGVGaWVsZDxCdXNpbmVzc09iamVjdD4pID0+IHtcclxuICAgICAgICAgIGNhY2hlRmllbGQucmVzZXQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlLmZvckVhY2goKHNlbFNpblBhcmFtQ2FjaGVJdGVtOiBQYXJhbWV0ZXJDYWNoZUZpZWxkPEJ1c2luZXNzT2JqZWN0PikgPT4ge1xyXG4gICAgICBpZiAoc2VsU2luUGFyYW1DYWNoZUl0ZW0pIHtcclxuICAgICAgICBzZWxTaW5QYXJhbUNhY2hlSXRlbS5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZS5mb3JFYWNoKChzZWxNdWxQYXJhbUNhY2hlSXRlbTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxCdXNpbmVzc09iamVjdFtdPikgPT4ge1xyXG4gICAgICBpZiAoc2VsTXVsUGFyYW1DYWNoZUl0ZW0pIHtcclxuICAgICAgICBzZWxNdWxQYXJhbUNhY2hlSXRlbS5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlc2V0Lm5leHQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { TransactionBusinessObjectCacheManagerService } from "./transaction-business-object-cache-manager.service";
|
|
3
|
+
import { CacheField } from "../cache-field";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./transaction-business-object-cache-manager.service";
|
|
6
|
+
export class TransactionSelectMultipleCacheService {
|
|
7
|
+
constructor(_boCacheManager) {
|
|
8
|
+
this._boCacheManager = _boCacheManager;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Returns the global cache item for the select multiple of the given business object class. Creates a new cache item if not yet exists.
|
|
12
|
+
* @param clazz The BO class, e.g. CustomerFullObject
|
|
13
|
+
* @returns {CacheField<T[]>}
|
|
14
|
+
*/
|
|
15
|
+
requestCache(clazz, loadFunction) {
|
|
16
|
+
if (!this._boCacheManager.hasSelectMultipleCacheItem(clazz)) {
|
|
17
|
+
this._createCacheItem(clazz, loadFunction);
|
|
18
|
+
}
|
|
19
|
+
// noinspection TypeScriptValidateTypes
|
|
20
|
+
return this._boCacheManager.getSelectMultipleCacheItem(clazz);
|
|
21
|
+
}
|
|
22
|
+
// Creates and returns a new select multiple cache item into the global business object cache manager for given business object class.
|
|
23
|
+
_createCacheItem(clazz, loadFunction) {
|
|
24
|
+
// noinspection TypeScriptValidateTypes
|
|
25
|
+
return this._boCacheManager.addNewSelectMultipleCacheItem(clazz, loadFunction);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
TransactionSelectMultipleCacheService._NullCache = new CacheField();
|
|
29
|
+
TransactionSelectMultipleCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionSelectMultipleCacheService_Factory() { return new TransactionSelectMultipleCacheService(i0.ɵɵinject(i1.TransactionBusinessObjectCacheManagerService)); }, token: TransactionSelectMultipleCacheService, providedIn: "root" });
|
|
30
|
+
TransactionSelectMultipleCacheService.decorators = [
|
|
31
|
+
{ type: Injectable, args: [{
|
|
32
|
+
providedIn: "root"
|
|
33
|
+
},] }
|
|
34
|
+
];
|
|
35
|
+
TransactionSelectMultipleCacheService.ctorParameters = () => [
|
|
36
|
+
{ type: TransactionBusinessObjectCacheManagerService }
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsNENBQTRDLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUNqSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU0xQyxNQUFNLE9BQU8scUNBQXFDO0lBR2hELFlBQ1UsZUFBNkQ7UUFBN0Qsb0JBQWUsR0FBZixlQUFlLENBQThDO0lBRXZFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUEyQixLQUE0QixFQUFFLFlBQWdDO1FBQzFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDL0M7UUFFRCx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxzSUFBc0k7SUFDOUgsZ0JBQWdCLENBQTJCLEtBQTRCLEVBQUUsWUFBZ0M7UUFDL0csdUNBQXVDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBSSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDcEYsQ0FBQzs7QUF6QmMsZ0RBQVUsR0FBb0IsSUFBSSxVQUFVLEVBQU8sQ0FBQzs7O1lBSnBFLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTk8sNENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQnVzaW5lc3NPYmplY3RDYWNoZU1hbmFnZXJTZXJ2aWNlfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1idXNpbmVzcy1vYmplY3QtY2FjaGUtbWFuYWdlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q2FjaGVGaWVsZH0gZnJvbSBcIi4uL2NhY2hlLWZpZWxkXCI7XHJcbmltcG9ydCB7QnVzaW5lc3NPYmplY3R9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3RcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX051bGxDYWNoZTogQ2FjaGVGaWVsZDxhbnk+ID0gbmV3IENhY2hlRmllbGQ8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2JvQ2FjaGVNYW5hZ2VyOiBUcmFuc2FjdGlvbkJ1c2luZXNzT2JqZWN0Q2FjaGVNYW5hZ2VyU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZ2xvYmFsIGNhY2hlIGl0ZW0gZm9yIHRoZSBzZWxlY3QgbXVsdGlwbGUgb2YgdGhlIGdpdmVuIGJ1c2luZXNzIG9iamVjdCBjbGFzcy4gQ3JlYXRlcyBhIG5ldyBjYWNoZSBpdGVtIGlmIG5vdCB5ZXQgZXhpc3RzLlxyXG4gICAqIEBwYXJhbSBjbGF6eiBUaGUgQk8gY2xhc3MsIGUuZy4gQ3VzdG9tZXJGdWxsT2JqZWN0XHJcbiAgICogQHJldHVybnMge0NhY2hlRmllbGQ8VFtdPn1cclxuICAgKi9cclxuICBwdWJsaWMgcmVxdWVzdENhY2hlPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oY2xheno6IHR5cGVvZiBCdXNpbmVzc09iamVjdCwgbG9hZEZ1bmN0aW9uOiAoKSA9PiBQcm9taXNlPFRbXT4pOiBDYWNoZUZpZWxkPFRbXT4ge1xyXG4gICAgaWYgKCF0aGlzLl9ib0NhY2hlTWFuYWdlci5oYXNTZWxlY3RNdWx0aXBsZUNhY2hlSXRlbShjbGF6eikpIHtcclxuICAgICAgdGhpcy5fY3JlYXRlQ2FjaGVJdGVtPFQ+KGNsYXp6LCBsb2FkRnVuY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmdldFNlbGVjdE11bHRpcGxlQ2FjaGVJdGVtPFQ+KGNsYXp6KTtcclxuICB9XHJcblxyXG4gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgc2VsZWN0IG11bHRpcGxlIGNhY2hlIGl0ZW0gaW50byB0aGUgZ2xvYmFsIGJ1c2luZXNzIG9iamVjdCBjYWNoZSBtYW5hZ2VyIGZvciBnaXZlbiBidXNpbmVzcyBvYmplY3QgY2xhc3MuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlQ2FjaGVJdGVtPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oY2xheno6IHR5cGVvZiBCdXNpbmVzc09iamVjdCwgbG9hZEZ1bmN0aW9uOiAoKSA9PiBQcm9taXNlPFRbXT4pOiBDYWNoZUZpZWxkPFRbXT4ge1xyXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZVR5cGVzXHJcbiAgICByZXR1cm4gdGhpcy5fYm9DYWNoZU1hbmFnZXIuYWRkTmV3U2VsZWN0TXVsdGlwbGVDYWNoZUl0ZW08VD4oY2xhenosIGxvYWRGdW5jdGlvbik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { Subject } from "rxjs";
|
|
3
|
+
import { TransactionBusinessObjectCacheManagerService } from "./transaction-business-object-cache-manager.service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./transaction-business-object-cache-manager.service";
|
|
6
|
+
// service resonsible for filling the global BO cache manager service with parameterized select multiple cache items
|
|
7
|
+
export class TransactionSelectMultipleParameterizedCacheService {
|
|
8
|
+
constructor(_boCacheManager) {
|
|
9
|
+
this._boCacheManager = _boCacheManager;
|
|
10
|
+
// emits after this select multiple parameterized cache service has been reset (e.g. after user logs out)
|
|
11
|
+
this.reset = new Subject();
|
|
12
|
+
this._subs = [];
|
|
13
|
+
this._subs.push(this._boCacheManager.reset.subscribe(() => {
|
|
14
|
+
this.reset.next();
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
ngOnDestroy() {
|
|
18
|
+
this._subs.forEach(sub => sub.unsubscribe());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the global cache item for the parameterized select multiple of the given business object class. Creates a new cache item if not yet exists.
|
|
22
|
+
* @param clazz The BO class, used for undeflying dataService.selectMultiple(clazz) call.
|
|
23
|
+
* @returns {CacheField<T[]>}
|
|
24
|
+
*/
|
|
25
|
+
requestCache(clazz, loadFunction) {
|
|
26
|
+
if (!this._boCacheManager.hasSelectMultipleParameterizedCacheItem(clazz)) {
|
|
27
|
+
this._createParameterizedCacheItem(clazz, loadFunction);
|
|
28
|
+
}
|
|
29
|
+
// noinspection TypeScriptValidateTypes
|
|
30
|
+
return this._boCacheManager.getSelectMultipleParameterCacheItem(clazz);
|
|
31
|
+
}
|
|
32
|
+
// Creates and returns a new parameterized select multiple cache item into the global business object cache manager for given business object class.
|
|
33
|
+
_createParameterizedCacheItem(clazz, loadFunction) {
|
|
34
|
+
// noinspection TypeScriptValidateTypes
|
|
35
|
+
return this._boCacheManager.addNewSelectMultipleParameterizedCacheItem(clazz, loadFunction);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
TransactionSelectMultipleParameterizedCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionSelectMultipleParameterizedCacheService_Factory() { return new TransactionSelectMultipleParameterizedCacheService(i0.ɵɵinject(i1.TransactionBusinessObjectCacheManagerService)); }, token: TransactionSelectMultipleParameterizedCacheService, providedIn: "root" });
|
|
39
|
+
TransactionSelectMultipleParameterizedCacheService.decorators = [
|
|
40
|
+
{ type: Injectable, args: [{
|
|
41
|
+
providedIn: "root"
|
|
42
|
+
},] }
|
|
43
|
+
];
|
|
44
|
+
TransactionSelectMultipleParameterizedCacheService.ctorParameters = () => [
|
|
45
|
+
{ type: TransactionBusinessObjectCacheManagerService }
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsNENBQTRDLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7O0FBSWpILG9IQUFvSDtBQUlwSCxNQUFNLE9BQU8sa0RBQWtEO0lBTTdELFlBQW9CLGVBQTZEO1FBQTdELG9CQUFlLEdBQWYsZUFBZSxDQUE4QztRQUxqRix5R0FBeUc7UUFDekYsVUFBSyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRW5ELFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBR2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUEyQixLQUE0QixFQUFFLFlBQThDO1FBQ3hILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHVDQUF1QyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyw2QkFBNkIsQ0FBSSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDNUQ7UUFFRCx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxxSkFBcUo7SUFDN0ksNkJBQTZCLENBQTJCLEtBQTRCLEVBQUUsWUFBOEM7UUFDMUksdUNBQXVDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywwQ0FBMEMsQ0FBSSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakcsQ0FBQzs7OztZQXJDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVBPLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkJ1c2luZXNzT2JqZWN0Q2FjaGVNYW5hZ2VyU2VydmljZX0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tYnVzaW5lc3Mtb2JqZWN0LWNhY2hlLW1hbmFnZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvYnVzaW5lc3Mtb2JqZWN0XCI7XHJcbmltcG9ydCB7UGFyYW1ldGVyQ2FjaGVGaWVsZH0gZnJvbSBcIi4uL3BhcmFtZXRlci1jYWNoZS1maWVsZFwiO1xyXG5cclxuLy8gc2VydmljZSByZXNvbnNpYmxlIGZvciBmaWxsaW5nIHRoZSBnbG9iYWwgQk8gY2FjaGUgbWFuYWdlciBzZXJ2aWNlIHdpdGggcGFyYW1ldGVyaXplZCBzZWxlY3QgbXVsdGlwbGUgY2FjaGUgaXRlbXNcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLy8gZW1pdHMgYWZ0ZXIgdGhpcyBzZWxlY3QgbXVsdGlwbGUgcGFyYW1ldGVyaXplZCBjYWNoZSBzZXJ2aWNlIGhhcyBiZWVuIHJlc2V0IChlLmcuIGFmdGVyIHVzZXIgbG9ncyBvdXQpXHJcbiAgcHVibGljIHJlYWRvbmx5IHJlc2V0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYm9DYWNoZU1hbmFnZXI6IFRyYW5zYWN0aW9uQnVzaW5lc3NPYmplY3RDYWNoZU1hbmFnZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fYm9DYWNoZU1hbmFnZXIucmVzZXQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZXNldC5uZXh0KCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZ2xvYmFsIGNhY2hlIGl0ZW0gZm9yIHRoZSBwYXJhbWV0ZXJpemVkIHNlbGVjdCBtdWx0aXBsZSBvZiB0aGUgZ2l2ZW4gYnVzaW5lc3Mgb2JqZWN0IGNsYXNzLiBDcmVhdGVzIGEgbmV3IGNhY2hlIGl0ZW0gaWYgbm90IHlldCBleGlzdHMuXHJcbiAgICogQHBhcmFtIGNsYXp6IFRoZSBCTyBjbGFzcywgdXNlZCBmb3IgdW5kZWZseWluZyBkYXRhU2VydmljZS5zZWxlY3RNdWx0aXBsZShjbGF6eikgY2FsbC5cclxuICAgKiBAcmV0dXJucyB7Q2FjaGVGaWVsZDxUW10+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXF1ZXN0Q2FjaGU8VCBleHRlbmRzIEJ1c2luZXNzT2JqZWN0PihjbGF6ejogdHlwZW9mIEJ1c2luZXNzT2JqZWN0LCBsb2FkRnVuY3Rpb246ICguLi5wYXJhbXM6IGFueSkgPT4gUHJvbWlzZTxUW10+KTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUW10+IHtcclxuICAgIGlmICghdGhpcy5fYm9DYWNoZU1hbmFnZXIuaGFzU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVJdGVtKGNsYXp6KSkge1xyXG4gICAgICB0aGlzLl9jcmVhdGVQYXJhbWV0ZXJpemVkQ2FjaGVJdGVtPFQ+KGNsYXp6LCBsb2FkRnVuY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmdldFNlbGVjdE11bHRpcGxlUGFyYW1ldGVyQ2FjaGVJdGVtPFQ+KGNsYXp6KTtcclxuICB9XHJcblxyXG4gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgIHBhcmFtZXRlcml6ZWQgc2VsZWN0IG11bHRpcGxlIGNhY2hlIGl0ZW0gaW50byB0aGUgZ2xvYmFsIGJ1c2luZXNzIG9iamVjdCBjYWNoZSBtYW5hZ2VyIGZvciBnaXZlbiBidXNpbmVzcyBvYmplY3QgY2xhc3MuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlUGFyYW1ldGVyaXplZENhY2hlSXRlbTxUIGV4dGVuZHMgQnVzaW5lc3NPYmplY3Q+KGNsYXp6OiB0eXBlb2YgQnVzaW5lc3NPYmplY3QsIGxvYWRGdW5jdGlvbjogKC4uLnBhcmFtczogYW55KSA9PiBQcm9taXNlPFRbXT4pOiBQYXJhbWV0ZXJDYWNoZUZpZWxkPFRbXT4ge1xyXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZVR5cGVzXHJcbiAgICByZXR1cm4gdGhpcy5fYm9DYWNoZU1hbmFnZXIuYWRkTmV3U2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVJdGVtPFQ+KGNsYXp6LCBsb2FkRnVuY3Rpb24pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TransactionBusinessObjectCacheManagerService } from './transaction-business-object-cache-manager.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./transaction-business-object-cache-manager.service";
|
|
5
|
+
export class TransactionSelectSingleCacheService {
|
|
6
|
+
constructor(_boCacheManager) {
|
|
7
|
+
this._boCacheManager = _boCacheManager;
|
|
8
|
+
}
|
|
9
|
+
requestCache(clazz, sourceId, loadFunction, reload = false) {
|
|
10
|
+
if (reload) {
|
|
11
|
+
this._boCacheManager.deleteSingleCacheItem(clazz, sourceId);
|
|
12
|
+
}
|
|
13
|
+
if (!this._boCacheManager.hasSingleCacheItem(clazz, sourceId)) {
|
|
14
|
+
this._createCacheItem(clazz, sourceId, loadFunction);
|
|
15
|
+
}
|
|
16
|
+
// noinspection TypeScriptValidateTypes
|
|
17
|
+
return this._boCacheManager.getSingleCacheItem(clazz, sourceId);
|
|
18
|
+
}
|
|
19
|
+
_createCacheItem(clazz, sourceId, loadFunction) {
|
|
20
|
+
// noinspection TypeScriptValidateTypes
|
|
21
|
+
return this._boCacheManager.addNewSelectSingleCacheItem(clazz, sourceId, loadFunction);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
TransactionSelectSingleCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionSelectSingleCacheService_Factory() { return new TransactionSelectSingleCacheService(i0.ɵɵinject(i1.TransactionBusinessObjectCacheManagerService)); }, token: TransactionSelectSingleCacheService, providedIn: "root" });
|
|
25
|
+
TransactionSelectSingleCacheService.decorators = [
|
|
26
|
+
{ type: Injectable, args: [{
|
|
27
|
+
providedIn: "root"
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
TransactionSelectSingleCacheService.ctorParameters = () => [
|
|
31
|
+
{ type: TransactionBusinessObjectCacheManagerService }
|
|
32
|
+
];
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtY2FjaGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLHFEQUFxRCxDQUFDOzs7QUFRakgsTUFBTSxPQUFPLG1DQUFtQztJQUU5QyxZQUFvQixlQUE2RDtRQUE3RCxvQkFBZSxHQUFmLGVBQWUsQ0FBOEM7SUFDakYsQ0FBQztJQUVNLFlBQVksQ0FBMkIsS0FBbUIsRUFBRSxRQUE4QixFQUFFLFlBQThCLEVBQUUsU0FBa0IsS0FBSztRQUN4SixJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsdUNBQXVDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLGdCQUFnQixDQUEyQixLQUFtQixFQUFFLFFBQThCLEVBQUUsWUFBOEI7UUFDcEksdUNBQXVDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FBSSxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVGLENBQUM7Ozs7WUF2QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFQTyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQnVzaW5lc3NPYmplY3RDYWNoZU1hbmFnZXJTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWJ1c2luZXNzLW9iamVjdC1jYWNoZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3QnO1xyXG5pbXBvcnQge0NhY2hlRmllbGR9IGZyb20gJy4uL2NhY2hlLWZpZWxkJztcclxuaW1wb3J0IHtCdXNpbmVzc09iamVjdElEVHlwZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdHlwZS9idXNpbmVzcy1vYmplY3QtaWQtdHlwZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYm9DYWNoZU1hbmFnZXI6IFRyYW5zYWN0aW9uQnVzaW5lc3NPYmplY3RDYWNoZU1hbmFnZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdENhY2hlPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oY2xheno6IHsgbmV3KCk6IFQgfSwgc291cmNlSWQ6IEJ1c2luZXNzT2JqZWN0SURUeXBlLCBsb2FkRnVuY3Rpb246ICgpID0+IFByb21pc2U8VD4sIHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogQ2FjaGVGaWVsZDxUPiB7XHJcbiAgICBpZiAocmVsb2FkKSB7XHJcbiAgICAgIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmRlbGV0ZVNpbmdsZUNhY2hlSXRlbTxUPihjbGF6eiwgc291cmNlSWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9ib0NhY2hlTWFuYWdlci5oYXNTaW5nbGVDYWNoZUl0ZW08VD4oY2xhenosIHNvdXJjZUlkKSkge1xyXG4gICAgICB0aGlzLl9jcmVhdGVDYWNoZUl0ZW08VD4oY2xhenosIHNvdXJjZUlkLCBsb2FkRnVuY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmdldFNpbmdsZUNhY2hlSXRlbTxUPihjbGF6eiwgc291cmNlSWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlQ2FjaGVJdGVtPFQgZXh0ZW5kcyBCdXNpbmVzc09iamVjdD4oY2xheno6IHsgbmV3KCk6IFQgfSwgc291cmNlSWQ6IEJ1c2luZXNzT2JqZWN0SURUeXBlLCBsb2FkRnVuY3Rpb246ICgpID0+IFByb21pc2U8VD4pOiBDYWNoZUZpZWxkPFQ+IHtcclxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmFkZE5ld1NlbGVjdFNpbmdsZUNhY2hlSXRlbTxUPihjbGF6eiwgc291cmNlSWQsIGxvYWRGdW5jdGlvbik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { TransactionBusinessObjectCacheManagerService } from './transaction-business-object-cache-manager.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./transaction-business-object-cache-manager.service";
|
|
6
|
+
// service resonsible for filling the global BO cache manager service with parameterized select single cache items
|
|
7
|
+
export class TransactionSelectSingleParameterizedCacheService {
|
|
8
|
+
constructor(_boCacheManager) {
|
|
9
|
+
this._boCacheManager = _boCacheManager;
|
|
10
|
+
// emits after this select single parameterized cache service has been reset (e.g. after user logs out)
|
|
11
|
+
this.reset = new Subject();
|
|
12
|
+
this._subs = [];
|
|
13
|
+
this._subs.push(this._boCacheManager.reset.subscribe(() => {
|
|
14
|
+
this.reset.next();
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
ngOnDestroy() {
|
|
18
|
+
this._subs.forEach(sub => sub.unsubscribe());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the global cache item for the parameterized select single of the given business object class. Creates a new cache item if not yet exists.
|
|
22
|
+
* @param clazz The BO class, used for undeflying dataService.selectSingle(clazz) call.
|
|
23
|
+
* @returns {CacheField<T>}
|
|
24
|
+
*/
|
|
25
|
+
requestCache(clazz, loadFunction) {
|
|
26
|
+
if (!this._boCacheManager.hasSelectSingleParameterizedCacheItem(clazz)) {
|
|
27
|
+
this._createParameterizedCacheItem(clazz, loadFunction);
|
|
28
|
+
}
|
|
29
|
+
// noinspection TypeScriptValidateTypes
|
|
30
|
+
return this._boCacheManager.getSelectSingleParameterCacheItem(clazz);
|
|
31
|
+
}
|
|
32
|
+
// Creates and returns a new parameterized select single cache item into the global business object cache manager for given business object class.
|
|
33
|
+
_createParameterizedCacheItem(clazz, loadFunction) {
|
|
34
|
+
// noinspection TypeScriptValidateTypes
|
|
35
|
+
return this._boCacheManager.addNewSelectSingleParameterizedCacheItem(clazz, loadFunction);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
TransactionSelectSingleParameterizedCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionSelectSingleParameterizedCacheService_Factory() { return new TransactionSelectSingleParameterizedCacheService(i0.ɵɵinject(i1.TransactionBusinessObjectCacheManagerService)); }, token: TransactionSelectSingleParameterizedCacheService, providedIn: "root" });
|
|
39
|
+
TransactionSelectSingleParameterizedCacheService.decorators = [
|
|
40
|
+
{ type: Injectable, args: [{
|
|
41
|
+
providedIn: "root"
|
|
42
|
+
},] }
|
|
43
|
+
];
|
|
44
|
+
TransactionSelectSingleParameterizedCacheService.ctorParameters = () => [
|
|
45
|
+
{ type: TransactionBusinessObjectCacheManagerService }
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLHFEQUFxRCxDQUFDOzs7QUFLakgsa0hBQWtIO0FBSWxILE1BQU0sT0FBTyxnREFBZ0Q7SUFNM0QsWUFBb0IsZUFBNkQ7UUFBN0Qsb0JBQWUsR0FBZixlQUFlLENBQThDO1FBTGpGLHVHQUF1RztRQUN2RixVQUFLLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkQsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUksS0FBVSxFQUFFLFlBQWtEO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RFLElBQUksQ0FBQyw2QkFBNkIsQ0FBSSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDNUQ7UUFFRCx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxtSkFBbUo7SUFDM0ksNkJBQTZCLENBQUksS0FBVSxFQUFFLFlBQTRDO1FBQy9GLHVDQUF1QztRQUN2QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsd0NBQXdDLENBQUksS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9GLENBQUM7Ozs7WUFyQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFSTyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkJ1c2luZXNzT2JqZWN0Q2FjaGVNYW5hZ2VyU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1idXNpbmVzcy1vYmplY3QtY2FjaGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtQYXJhbWV0ZXJDYWNoZUZpZWxkfSBmcm9tICcuLi9wYXJhbWV0ZXItY2FjaGUtZmllbGQnO1xyXG5pbXBvcnQge1R9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7SW50ZXJuYWxQYXJhbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtJztcclxuXHJcbi8vIHNlcnZpY2UgcmVzb25zaWJsZSBmb3IgZmlsbGluZyB0aGUgZ2xvYmFsIEJPIGNhY2hlIG1hbmFnZXIgc2VydmljZSB3aXRoIHBhcmFtZXRlcml6ZWQgc2VsZWN0IHNpbmdsZSBjYWNoZSBpdGVtc1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLy8gZW1pdHMgYWZ0ZXIgdGhpcyBzZWxlY3Qgc2luZ2xlIHBhcmFtZXRlcml6ZWQgY2FjaGUgc2VydmljZSBoYXMgYmVlbiByZXNldCAoZS5nLiBhZnRlciB1c2VyIGxvZ3Mgb3V0KVxyXG4gIHB1YmxpYyByZWFkb25seSByZXNldDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2JvQ2FjaGVNYW5hZ2VyOiBUcmFuc2FjdGlvbkJ1c2luZXNzT2JqZWN0Q2FjaGVNYW5hZ2VyU2VydmljZSkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLnJlc2V0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVzZXQubmV4dCgpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGdsb2JhbCBjYWNoZSBpdGVtIGZvciB0aGUgcGFyYW1ldGVyaXplZCBzZWxlY3Qgc2luZ2xlIG9mIHRoZSBnaXZlbiBidXNpbmVzcyBvYmplY3QgY2xhc3MuIENyZWF0ZXMgYSBuZXcgY2FjaGUgaXRlbSBpZiBub3QgeWV0IGV4aXN0cy5cclxuICAgKiBAcGFyYW0gY2xhenogVGhlIEJPIGNsYXNzLCB1c2VkIGZvciB1bmRlZmx5aW5nIGRhdGFTZXJ2aWNlLnNlbGVjdFNpbmdsZShjbGF6eikgY2FsbC5cclxuICAgKiBAcmV0dXJucyB7Q2FjaGVGaWVsZDxUPn1cclxuICAgKi9cclxuICBwdWJsaWMgcmVxdWVzdENhY2hlPFQ+KGNsYXp6OiBhbnksIGxvYWRGdW5jdGlvbjogKHBhcmFtOiBJbnRlcm5hbFBhcmFtKSA9PiBQcm9taXNlPFQ+KTogUGFyYW1ldGVyQ2FjaGVGaWVsZDxUPiB7XHJcbiAgICBpZiAoIXRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmhhc1NlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZUl0ZW0oY2xhenopKSB7XHJcbiAgICAgIHRoaXMuX2NyZWF0ZVBhcmFtZXRlcml6ZWRDYWNoZUl0ZW08VD4oY2xhenosIGxvYWRGdW5jdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZVR5cGVzXHJcbiAgICByZXR1cm4gdGhpcy5fYm9DYWNoZU1hbmFnZXIuZ2V0U2VsZWN0U2luZ2xlUGFyYW1ldGVyQ2FjaGVJdGVtPFQ+KGNsYXp6KTtcclxuICB9XHJcblxyXG4gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgIHBhcmFtZXRlcml6ZWQgc2VsZWN0IHNpbmdsZSBjYWNoZSBpdGVtIGludG8gdGhlIGdsb2JhbCBidXNpbmVzcyBvYmplY3QgY2FjaGUgbWFuYWdlciBmb3IgZ2l2ZW4gYnVzaW5lc3Mgb2JqZWN0IGNsYXNzLlxyXG4gIHByaXZhdGUgX2NyZWF0ZVBhcmFtZXRlcml6ZWRDYWNoZUl0ZW08VD4oY2xheno6IGFueSwgbG9hZEZ1bmN0aW9uOiAoLi4ucGFyYW1zOiBhbnkpID0+IFByb21pc2U8VD4pOiBQYXJhbWV0ZXJDYWNoZUZpZWxkPFQ+IHtcclxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvQ2FjaGVNYW5hZ2VyLmFkZE5ld1NlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZUl0ZW08VD4oY2xhenosIGxvYWRGdW5jdGlvbik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|