@esolve/ng-esolve-connect 0.15.2 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/esm2020/lib/account/registration/esolve-registration-data.interface.mjs +1 -1
  2. package/esm2020/lib/manufacturers/esolve-manufacturer-image-size.type.mjs +2 -0
  3. package/esm2020/lib/manufacturers/esolve-manufacturer.model.mjs +30 -13
  4. package/esm2020/lib/manufacturers/esolve-manufacturers.service.mjs +2 -2
  5. package/esm2020/lib/manufacturers/index.mjs +7 -2
  6. package/esm2020/lib/media/esolve-media.service.mjs +3 -3
  7. package/esm2020/lib/news/esolve-news-article-options.interface.mjs +1 -1
  8. package/esm2020/lib/news/esolve-news-article-record.interface.mjs +1 -1
  9. package/esm2020/lib/news/esolve-news-article.model.mjs +66 -13
  10. package/esm2020/lib/news/esolve-news.service.mjs +56 -46
  11. package/esm2020/lib/news/index.mjs +1 -3
  12. package/esm2020/lib/ranges/esolve-range.model.mjs +35 -14
  13. package/esm2020/lib/ranges/esolve-ranges.service.mjs +2 -2
  14. package/esm2020/lib/shared/assets/esolve-asset-list.type.mjs +2 -0
  15. package/esm2020/lib/shared/assets/esolve-asset-options.interface.mjs +2 -0
  16. package/esm2020/lib/shared/assets/esolve-asset-record.interface.mjs +2 -0
  17. package/esm2020/lib/shared/assets/esolve-asset.model.mjs +77 -0
  18. package/esm2020/lib/shared/assets/esolve-assets.service.mjs +102 -0
  19. package/esm2020/lib/shared/assets/index.mjs +11 -2
  20. package/esm2020/lib/shared/sort/esolve-sort-order.type.mjs +2 -0
  21. package/esm2020/lib/shared/sort/esolve-sort.interface.mjs +2 -0
  22. package/esm2020/lib/shared/sort/index.mjs +5 -0
  23. package/esm2020/lib/stock/classes/esolve-additional-stock-image.model.mjs +21 -0
  24. package/esm2020/lib/stock/classes/esolve-colour.model.mjs +8 -0
  25. package/esm2020/lib/stock/classes/esolve-linked-stock-item.model.mjs +9 -0
  26. package/esm2020/lib/stock/classes/esolve-media-stock-item.model.mjs +7 -0
  27. package/esm2020/lib/stock/classes/esolve-recipe-stock-item.model.mjs +9 -0
  28. package/esm2020/lib/stock/classes/esolve-stock-badge.model.mjs +11 -0
  29. package/esm2020/lib/stock/classes/esolve-stock-group-item.model.mjs +7 -0
  30. package/esm2020/lib/stock/classes/esolve-stock-group.model.mjs +13 -0
  31. package/esm2020/lib/stock/classes/esolve-stock-image-collection.model.mjs +26 -0
  32. package/esm2020/lib/stock/classes/esolve-stock-image.model.mjs +45 -0
  33. package/esm2020/lib/stock/classes/esolve-stock-item-base.model.mjs +224 -0
  34. package/esm2020/lib/stock/classes/esolve-stock-item-list.model.mjs +11 -0
  35. package/esm2020/lib/stock/classes/esolve-stock-item.model.mjs +17 -0
  36. package/esm2020/lib/stock/classes/esolve-stock-lead-times.model.mjs +9 -0
  37. package/esm2020/lib/stock/classes/esolve-stock-price.model.mjs +43 -0
  38. package/esm2020/lib/stock/classes/index.mjs +17 -0
  39. package/esm2020/lib/stock/esolve-stock.service.mjs +40 -9
  40. package/esm2020/lib/stock/index.mjs +4 -35
  41. package/esm2020/lib/stock/interfaces/esolve-additional-stock-image-record.interface.mjs +2 -0
  42. package/esm2020/lib/stock/interfaces/esolve-colour-record.interface.mjs +2 -0
  43. package/esm2020/lib/stock/interfaces/esolve-linked-stock-record.interface.mjs +2 -0
  44. package/esm2020/lib/stock/interfaces/esolve-media-stock-item-options.interface.mjs +2 -0
  45. package/esm2020/lib/stock/interfaces/esolve-media-stock-item-record.interface.mjs +2 -0
  46. package/esm2020/lib/stock/interfaces/esolve-recipe-item-record.interface.mjs +2 -0
  47. package/esm2020/lib/stock/interfaces/esolve-recipe-stock-options.interface.mjs +2 -0
  48. package/esm2020/lib/stock/interfaces/esolve-stock-badge-record.interface.mjs +2 -0
  49. package/esm2020/lib/stock/interfaces/esolve-stock-base-record.interface.mjs +2 -0
  50. package/esm2020/lib/stock/interfaces/esolve-stock-group-item-record.interface.mjs +2 -0
  51. package/esm2020/lib/stock/interfaces/esolve-stock-image-collection-record.interface.mjs +3 -0
  52. package/esm2020/lib/stock/interfaces/esolve-stock-item-options.interface.mjs +2 -0
  53. package/esm2020/lib/stock/interfaces/esolve-stock-lead-times-record.interface.mjs +2 -0
  54. package/esm2020/lib/stock/interfaces/esolve-stock-linked-category-record.interface.mjs +2 -0
  55. package/esm2020/lib/stock/interfaces/esolve-stock-record.interface.mjs +2 -0
  56. package/esm2020/lib/stock/interfaces/index.mjs +17 -0
  57. package/esm2020/lib/stock/types/esolve-media-stock-item-list.type.mjs +2 -0
  58. package/esm2020/lib/stock/types/esolve-media-stock-sort-field.type.mjs +2 -0
  59. package/esm2020/lib/stock/types/esolve-stock-image-size.type.mjs +2 -0
  60. package/esm2020/lib/stock/types/esolve-stock-sort-field.type.mjs +2 -0
  61. package/esm2020/lib/stock/types/esolve-stock-unit-of-measure.type.mjs +2 -0
  62. package/esm2020/lib/stock/types/index.mjs +7 -0
  63. package/esm2020/lib/tags/esolve-tag-options.interface.mjs +2 -0
  64. package/esm2020/lib/tags/esolve-tag-phrase-match-mode.type.mjs +2 -0
  65. package/esm2020/lib/tags/esolve-tag-record.interface.mjs +1 -1
  66. package/esm2020/lib/tags/esolve-tag.model.mjs +32 -6
  67. package/esm2020/lib/tags/esolve-tags.service.mjs +76 -0
  68. package/esm2020/lib/tags/index.mjs +9 -2
  69. package/esm2020/lib/topics/esolve-topic.model.mjs +12 -6
  70. package/esm2020/lib/topics/esolve-topic.service.mjs +2 -2
  71. package/esm2020/public-api.mjs +2 -1
  72. package/fesm2015/esolve-ng-esolve-connect.mjs +1902 -1452
  73. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  74. package/fesm2020/esolve-ng-esolve-connect.mjs +1875 -1437
  75. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  76. package/lib/account/registration/esolve-registration-data.interface.d.ts +3 -0
  77. package/lib/manufacturers/esolve-manufacturer-image-size.type.d.ts +1 -0
  78. package/lib/manufacturers/esolve-manufacturer.model.d.ts +4 -3
  79. package/lib/manufacturers/index.d.ts +2 -1
  80. package/lib/news/esolve-news-article-options.interface.d.ts +1 -0
  81. package/lib/news/esolve-news-article-record.interface.d.ts +8 -4
  82. package/lib/news/esolve-news-article.model.d.ts +13 -2
  83. package/lib/news/esolve-news.service.d.ts +2 -1
  84. package/lib/news/index.d.ts +0 -2
  85. package/lib/ranges/esolve-range.model.d.ts +2 -2
  86. package/lib/shared/assets/esolve-asset-list.type.d.ts +3 -0
  87. package/lib/shared/assets/esolve-asset-options.interface.d.ts +15 -0
  88. package/lib/shared/assets/esolve-asset-record.interface.d.ts +27 -0
  89. package/lib/shared/assets/esolve-asset.model.d.ts +39 -0
  90. package/lib/shared/assets/esolve-assets.service.d.ts +19 -0
  91. package/lib/shared/assets/index.d.ts +6 -1
  92. package/lib/shared/sort/esolve-sort-order.type.d.ts +1 -0
  93. package/lib/shared/sort/esolve-sort.interface.d.ts +5 -0
  94. package/lib/shared/sort/index.d.ts +2 -0
  95. package/lib/stock/{esolve-additional-stock-image.model.d.ts → classes/esolve-additional-stock-image.model.d.ts} +1 -1
  96. package/lib/stock/{esolve-colour.model.d.ts → classes/esolve-colour.model.d.ts} +1 -1
  97. package/lib/stock/{esolve-linked-stock-item.model.d.ts → classes/esolve-linked-stock-item.model.d.ts} +2 -2
  98. package/lib/stock/{esolve-media-stock-item.model.d.ts → classes/esolve-media-stock-item.model.d.ts} +2 -2
  99. package/lib/stock/{esolve-recipe-stock-item.model.d.ts → classes/esolve-recipe-stock-item.model.d.ts} +2 -2
  100. package/lib/stock/{esolve-stock-badge.model.d.ts → classes/esolve-stock-badge.model.d.ts} +0 -0
  101. package/lib/stock/{esolve-stock-group-item.model.d.ts → classes/esolve-stock-group-item.model.d.ts} +2 -2
  102. package/lib/stock/{esolve-stock-group.model.d.ts → classes/esolve-stock-group.model.d.ts} +2 -2
  103. package/lib/stock/{esolve-stock-image-collection.model.d.ts → classes/esolve-stock-image-collection.model.d.ts} +1 -1
  104. package/lib/stock/{esolve-stock-image.model.d.ts → classes/esolve-stock-image.model.d.ts} +1 -1
  105. package/lib/stock/{esolve-stock-item-base.model.d.ts → classes/esolve-stock-item-base.model.d.ts} +29 -9
  106. package/lib/stock/{esolve-stock-item-list.model.d.ts → classes/esolve-stock-item-list.model.d.ts} +1 -1
  107. package/lib/stock/{esolve-stock-item.model.d.ts → classes/esolve-stock-item.model.d.ts} +2 -2
  108. package/lib/stock/{esolve-stock-lead-times.model.d.ts → classes/esolve-stock-lead-times.model.d.ts} +1 -1
  109. package/lib/stock/{esolve-stock-price.model.d.ts → classes/esolve-stock-price.model.d.ts} +0 -0
  110. package/lib/stock/classes/index.d.ts +15 -0
  111. package/lib/stock/esolve-stock.service.d.ts +4 -9
  112. package/lib/stock/index.d.ts +3 -31
  113. package/lib/stock/{esolve-additional-stock-image-record.interface.d.ts → interfaces/esolve-additional-stock-image-record.interface.d.ts} +0 -0
  114. package/lib/stock/{esolve-colour-record.interface.d.ts → interfaces/esolve-colour-record.interface.d.ts} +0 -0
  115. package/lib/stock/{esolve-linked-stock-record.interface.d.ts → interfaces/esolve-linked-stock-record.interface.d.ts} +1 -1
  116. package/lib/stock/{esolve-media-stock-item-options.interface.d.ts → interfaces/esolve-media-stock-item-options.interface.d.ts} +3 -0
  117. package/lib/stock/{esolve-media-stock-item-record.interface.d.ts → interfaces/esolve-media-stock-item-record.interface.d.ts} +1 -1
  118. package/lib/stock/{esolve-recipe-item-record.interface.d.ts → interfaces/esolve-recipe-item-record.interface.d.ts} +1 -1
  119. package/lib/stock/interfaces/esolve-recipe-stock-options.interface.d.ts +7 -0
  120. package/lib/stock/{esolve-stock-badge-record.interface.d.ts → interfaces/esolve-stock-badge-record.interface.d.ts} +0 -0
  121. package/lib/stock/{esolve-stock-base-record.interface.d.ts → interfaces/esolve-stock-base-record.interface.d.ts} +12 -6
  122. package/lib/stock/{esolve-stock-group-item-record.interface.d.ts → interfaces/esolve-stock-group-item-record.interface.d.ts} +1 -1
  123. package/lib/stock/{esolve-stock-image-collection-record.interface.d.ts → interfaces/esolve-stock-image-collection-record.interface.d.ts} +0 -0
  124. package/lib/stock/{esolve-stock-item-options.interface.d.ts → interfaces/esolve-stock-item-options.interface.d.ts} +3 -0
  125. package/lib/stock/{esolve-stock-lead-times-record.interface.d.ts → interfaces/esolve-stock-lead-times-record.interface.d.ts} +0 -0
  126. package/lib/stock/{esolve-stock-linked-category-record.interface.d.ts → interfaces/esolve-stock-linked-category-record.interface.d.ts} +0 -0
  127. package/lib/stock/{esolve-stock-record.interface.d.ts → interfaces/esolve-stock-record.interface.d.ts} +1 -1
  128. package/lib/stock/interfaces/index.d.ts +15 -0
  129. package/lib/stock/types/esolve-media-stock-item-list.type.d.ts +7 -0
  130. package/lib/stock/types/esolve-media-stock-sort-field.type.d.ts +2 -0
  131. package/lib/stock/{esolve-stock-image-size.type.d.ts → types/esolve-stock-image-size.type.d.ts} +0 -0
  132. package/lib/stock/types/esolve-stock-sort-field.type.d.ts +1 -0
  133. package/lib/stock/types/esolve-stock-unit-of-measure.type.d.ts +1 -0
  134. package/lib/stock/types/index.d.ts +5 -0
  135. package/lib/tags/esolve-tag-options.interface.d.ts +6 -0
  136. package/lib/tags/esolve-tag-phrase-match-mode.type.d.ts +1 -0
  137. package/lib/tags/esolve-tag-record.interface.d.ts +1 -0
  138. package/lib/tags/esolve-tag.model.d.ts +14 -3
  139. package/lib/tags/esolve-tags.service.d.ts +22 -0
  140. package/lib/tags/index.d.ts +4 -1
  141. package/lib/topics/esolve-topic.model.d.ts +1 -1
  142. package/package.json +1 -1
  143. package/public-api.d.ts +1 -0
  144. package/esm2020/lib/news/esolve-news-manufacturer-record.interface.mjs +0 -2
  145. package/esm2020/lib/news/esolve-news-range-record.interface.mjs +0 -2
  146. package/esm2020/lib/stock/esolve-additional-stock-image-record.interface.mjs +0 -2
  147. package/esm2020/lib/stock/esolve-additional-stock-image.model.mjs +0 -21
  148. package/esm2020/lib/stock/esolve-colour-record.interface.mjs +0 -2
  149. package/esm2020/lib/stock/esolve-colour.model.mjs +0 -8
  150. package/esm2020/lib/stock/esolve-linked-stock-item.model.mjs +0 -9
  151. package/esm2020/lib/stock/esolve-linked-stock-record.interface.mjs +0 -2
  152. package/esm2020/lib/stock/esolve-media-stock-item-list.type.mjs +0 -2
  153. package/esm2020/lib/stock/esolve-media-stock-item-options.interface.mjs +0 -2
  154. package/esm2020/lib/stock/esolve-media-stock-item-record.interface.mjs +0 -2
  155. package/esm2020/lib/stock/esolve-media-stock-item.model.mjs +0 -7
  156. package/esm2020/lib/stock/esolve-recipe-item-record.interface.mjs +0 -2
  157. package/esm2020/lib/stock/esolve-recipe-stock-item.model.mjs +0 -9
  158. package/esm2020/lib/stock/esolve-stock-badge-record.interface.mjs +0 -2
  159. package/esm2020/lib/stock/esolve-stock-badge.model.mjs +0 -11
  160. package/esm2020/lib/stock/esolve-stock-base-record.interface.mjs +0 -2
  161. package/esm2020/lib/stock/esolve-stock-group-item-record.interface.mjs +0 -2
  162. package/esm2020/lib/stock/esolve-stock-group-item.model.mjs +0 -7
  163. package/esm2020/lib/stock/esolve-stock-group.model.mjs +0 -13
  164. package/esm2020/lib/stock/esolve-stock-image-collection-record.interface.mjs +0 -3
  165. package/esm2020/lib/stock/esolve-stock-image-collection.model.mjs +0 -26
  166. package/esm2020/lib/stock/esolve-stock-image-size.type.mjs +0 -2
  167. package/esm2020/lib/stock/esolve-stock-image.model.mjs +0 -45
  168. package/esm2020/lib/stock/esolve-stock-item-base.model.mjs +0 -197
  169. package/esm2020/lib/stock/esolve-stock-item-list.model.mjs +0 -11
  170. package/esm2020/lib/stock/esolve-stock-item-options.interface.mjs +0 -2
  171. package/esm2020/lib/stock/esolve-stock-item.model.mjs +0 -17
  172. package/esm2020/lib/stock/esolve-stock-lead-times-record.interface.mjs +0 -2
  173. package/esm2020/lib/stock/esolve-stock-lead-times.model.mjs +0 -9
  174. package/esm2020/lib/stock/esolve-stock-linked-category-record.interface.mjs +0 -2
  175. package/esm2020/lib/stock/esolve-stock-price.model.mjs +0 -43
  176. package/esm2020/lib/stock/esolve-stock-record.interface.mjs +0 -2
  177. package/lib/news/esolve-news-manufacturer-record.interface.d.ts +0 -8
  178. package/lib/news/esolve-news-range-record.interface.d.ts +0 -9
  179. package/lib/stock/esolve-media-stock-item-list.type.d.ts +0 -7
@@ -0,0 +1,224 @@
1
+ import { EsolveSeoInfo } from '../../shared/seo';
2
+ import { EsolveCategoryTreeItem } from '../../category-tree';
3
+ import { EsolveManufacturer } from '../../manufacturers';
4
+ import { EsolveRange } from '../../ranges';
5
+ import { EsolveTag } from '../../tags';
6
+ import { EsolveTopic } from '../../topics';
7
+ import { EsolveStockBadge } from './esolve-stock-badge.model';
8
+ import { EsolveStockPrice } from './esolve-stock-price.model';
9
+ import { EsolveColour } from './esolve-colour.model';
10
+ import { EsolveStockLeadTimes } from './esolve-stock-lead-times.model';
11
+ export class EsolveStockItemBase {
12
+ constructor(record = {}) {
13
+ /**
14
+ * eSolve Generated ID
15
+ */
16
+ this.id = 0;
17
+ /**
18
+ * Code identifying the stock item
19
+ */
20
+ this.code = '';
21
+ /**
22
+ * Name of the stock item
23
+ */
24
+ this.name = '';
25
+ /**
26
+ * Search engine friendly name
27
+ */
28
+ this.sef_name = '';
29
+ /**
30
+ * Short description of stock item
31
+ */
32
+ this.description = '';
33
+ /**
34
+ * Full description of stock item
35
+ */
36
+ this.extended_description = '';
37
+ /**
38
+ * Active state
39
+ */
40
+ this.active = false;
41
+ /**
42
+ * Featured state
43
+ */
44
+ this.featured = false;
45
+ /**
46
+ * Height measured in meters (m)
47
+ */
48
+ this.height = 0;
49
+ /**
50
+ * Width measured in meters (m)
51
+ */
52
+ this.width = 0;
53
+ /**
54
+ * Length / depth measured in meters (m)
55
+ */
56
+ this.length = 0;
57
+ /**
58
+ * Weight measured in kilograms (kg)
59
+ */
60
+ this.weight = 0;
61
+ /**
62
+ * Units used to measure the quantity
63
+ */
64
+ this.unit_of_measure = 'unit';
65
+ /**
66
+ * ID of default category linked to the stock item
67
+ *
68
+ * @deprecated Use `category.esolve_id` field instead
69
+ */
70
+ this.category_id = '';
71
+ /**
72
+ * ID of default subcategory linked to the stock item
73
+ *
74
+ * @deprecated Use `subcategory.esolve_id` field instead
75
+ */
76
+ this.subcategory_id = 0;
77
+ /**
78
+ * ID of linked manufacturer
79
+ *
80
+ * @deprecated Use `manufacturer.id` field instead
81
+ */
82
+ this.manufacturers_id = 0;
83
+ /**
84
+ * ID of linked range
85
+ *
86
+ * @deprecated Use `range.id` field instead
87
+ */
88
+ this.ranges_id = 0;
89
+ /**
90
+ * Linked tags
91
+ */
92
+ this.tags = [];
93
+ /**
94
+ * Linked topics
95
+ */
96
+ this.topics = [];
97
+ /**
98
+ * Stock badges
99
+ */
100
+ this.badges = [];
101
+ /**
102
+ * Colours
103
+ */
104
+ this.colours = [];
105
+ /**
106
+ * Image filename
107
+ */
108
+ this.image_name = '';
109
+ let seo_title = '';
110
+ let seo_keywords = '';
111
+ let base_price = 0;
112
+ let base_price_with_tax = 0;
113
+ let sell_price = 0;
114
+ let sell_price_with_tax = 0;
115
+ if (record) {
116
+ this.id = +(record.id ?? 0);
117
+ this.code = record.code ?? '';
118
+ this.name = record.name ?? '';
119
+ this.sef_name = record.sef_name ?? '';
120
+ this.description = record.description ?? '';
121
+ this.extended_description = record.extended_description ?? '';
122
+ this.image_name = record.image_name ?? '';
123
+ this.category_id = record.category_id ?? '';
124
+ this.subcategory_id = +(record.subcategory_id ?? 0);
125
+ this.manufacturers_id = +(record.manufacturers_id ?? 0);
126
+ this.ranges_id = +(record.ranges_id ?? 0);
127
+ this.active = !!+(record.is_active ?? false);
128
+ this.featured = !!+(record.is_featured ?? false);
129
+ this.height = +(record.height ?? 0);
130
+ this.width = +(record.width ?? 0);
131
+ this.length = +(record.length ?? 0);
132
+ this.weight = +(record.weight ?? 0);
133
+ if (record.unit_of_measure) {
134
+ this.unit_of_measure = record.unit_of_measure;
135
+ }
136
+ base_price = +(record.regular_sellprice ?? 0);
137
+ base_price_with_tax = +(record.regular_sellprice_inclusive ?? 0);
138
+ sell_price = +(record.sellprice ?? 0);
139
+ sell_price_with_tax = +(record.sellprice_inclusive ?? 0);
140
+ if ((record.tags) && (record.tags.length > 0)) {
141
+ for (const tag of record.tags) {
142
+ this.tags.push(new EsolveTag(tag));
143
+ }
144
+ }
145
+ if ((record.topics) && (record.topics.length > 0)) {
146
+ for (const topic of record.topics) {
147
+ this.topics.push(new EsolveTopic(topic));
148
+ }
149
+ }
150
+ if ((record.badges) && (record.badges.length > 0)) {
151
+ for (const badge of record.badges) {
152
+ this.badges.push(new EsolveStockBadge(+badge.id, badge.text, badge.identifier, badge.font_colour, badge.badge_colour, +badge.sort_priority));
153
+ }
154
+ }
155
+ if (record.category) {
156
+ this.category = new EsolveCategoryTreeItem(record.category.type, record.category.id, record.category.parent_id, record.category.description, record.category.sef_description, record.category.short_description, record.category.sort_priority, record.category.active, record.category.display_only, record.category.image, record.category.seo_page_title, record.category.seo_keywords, record.category.seo_description);
157
+ }
158
+ if (record.subcategory) {
159
+ this.subcategory = new EsolveCategoryTreeItem(record.subcategory.type, record.subcategory.id, record.subcategory.parent_id, record.subcategory.description, record.subcategory.sef_description, record.subcategory.short_description, record.subcategory.sort_priority, record.subcategory.active, record.subcategory.display_only, record.subcategory.image, record.subcategory.seo_page_title, record.subcategory.seo_keywords, record.subcategory.seo_description);
160
+ }
161
+ if (record.manufacturer) {
162
+ this.manufacturer = new EsolveManufacturer(record.manufacturer);
163
+ }
164
+ if (record.range) {
165
+ this.range = new EsolveRange(record.range);
166
+ }
167
+ if (record.colours && record.colours.length > 0) {
168
+ for (const colour of record.colours) {
169
+ this.colours.push(new EsolveColour(colour));
170
+ }
171
+ }
172
+ if (record.lead_times) {
173
+ this.lead_times = new EsolveStockLeadTimes(record.lead_times);
174
+ }
175
+ if (record.custom_fields) {
176
+ this.custom_fields = record.custom_fields;
177
+ }
178
+ seo_title = record.seo_page_title ?? '';
179
+ seo_keywords = record.seo_keywords ?? '';
180
+ }
181
+ this.price = new EsolveStockPrice(base_price, base_price_with_tax, sell_price, sell_price_with_tax);
182
+ if (seo_title.trim() === '') {
183
+ seo_title = this.name;
184
+ }
185
+ this.seo_details = new EsolveSeoInfo(seo_title, this.description, seo_keywords);
186
+ }
187
+ /**
188
+ * Path to tiny stock image
189
+ */
190
+ get tiny_image_src() {
191
+ return this.getImagePath('tiny');
192
+ }
193
+ /**
194
+ * Path to thumbnail stock image
195
+ */
196
+ get thumbnail_image_src() {
197
+ return this.getImagePath('thumb');
198
+ }
199
+ /**
200
+ * Path to small stock image
201
+ */
202
+ get small_image_src() {
203
+ return this.getImagePath('small');
204
+ }
205
+ /**
206
+ * Path to big stock image
207
+ */
208
+ get big_image_src() {
209
+ return this.getImagePath('big');
210
+ }
211
+ /**
212
+ * Path to original stock image
213
+ */
214
+ get original_image_src() {
215
+ return this.getImagePath('original');
216
+ }
217
+ getImagePath(image_size) {
218
+ if (this.image_name !== '') {
219
+ return `/images/stock/${image_size}/${this.image_name}`;
220
+ }
221
+ return '';
222
+ }
223
+ }
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tYmFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svY2xhc3Nlcy9lc29sdmUtc3RvY2staXRlbS1iYXNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE1BQU0sT0FBTyxtQkFBbUI7SUFzSzVCLFlBQVksU0FBNEMsRUFBRTtRQXJLMUQ7O1dBRUc7UUFDSSxPQUFFLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCOztXQUVHO1FBQ0ksU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUN6Qjs7V0FFRztRQUNJLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDekI7O1dBRUc7UUFDSSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQzdCOztXQUVHO1FBQ0ksZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSx5QkFBb0IsR0FB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QWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBaUpNLFlBQVksQ0FBQyxVQUFnQztRQUNoRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO1lBQ3hCLE9BQU8saUJBQWlCLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDM0Q7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZUN1c3RvbUZpZWxkcywgRXNvbHZlR2VuZXJpY0N1c3RvbUZpZWxkcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jdXN0b20tZmllbGRzJztcclxuaW1wb3J0IHsgRXNvbHZlU2VvRGV0YWlscywgRXNvbHZlU2VvSW5mbyB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZW8nO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbSB9IGZyb20gJy4uLy4uL2NhdGVnb3J5LXRyZWUnO1xyXG5pbXBvcnQgeyBFc29sdmVNYW51ZmFjdHVyZXIgfSBmcm9tICcuLi8uLi9tYW51ZmFjdHVyZXJzJztcclxuaW1wb3J0IHsgRXNvbHZlUmFuZ2UgfSBmcm9tICcuLi8uLi9yYW5nZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVUYWcgfSBmcm9tICcuLi8uLi90YWdzJztcclxuaW1wb3J0IHsgRXNvbHZlVG9waWMgfSBmcm9tICcuLi8uLi90b3BpY3MnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJbWFnZVNpemUsIEVzb2x2ZVN0b2NrVW5pdE9mTWVhc3VyZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tCYXNlUmVjb3JkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrQmFkZ2UgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1iYWRnZS5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrUHJpY2UgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1wcmljZS5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNvbG91ciB9IGZyb20gJy4vZXNvbHZlLWNvbG91ci5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrTGVhZFRpbWVzIH0gZnJvbSAnLi9lc29sdmUtc3RvY2stbGVhZC10aW1lcy5tb2RlbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tJdGVtQmFzZTxUID0gRXNvbHZlR2VuZXJpY0N1c3RvbUZpZWxkcz4gaW1wbGVtZW50cyBFc29sdmVTZW9EZXRhaWxzIHtcclxuICAgIC8qKlxyXG4gICAgICogZVNvbHZlIEdlbmVyYXRlZCBJRFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaWQ6IG51bWJlciA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIENvZGUgaWRlbnRpZnlpbmcgdGhlIHN0b2NrIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvZGU6IHN0cmluZyA9ICcnO1xyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBzdG9jayBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnJztcclxuICAgIC8qKlxyXG4gICAgICogU2VhcmNoIGVuZ2luZSBmcmllbmRseSBuYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWZfbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgICAvKipcclxuICAgICAqIFNob3J0IGRlc2NyaXB0aW9uIG9mIHN0b2NrIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcclxuICAgIC8qKlxyXG4gICAgICogRnVsbCBkZXNjcmlwdGlvbiBvZiBzdG9jayBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmRlZF9kZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XHJcbiAgICAvKipcclxuICAgICAqIEFjdGl2ZSBzdGF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIEZlYXR1cmVkIHN0YXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmZWF0dXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBIZWlnaHQgbWVhc3VyZWQgaW4gbWV0ZXJzIChtKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgLyoqXHJcbiAgICAgKiBXaWR0aCBtZWFzdXJlZCBpbiBtZXRlcnMgKG0pXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3aWR0aDogbnVtYmVyID0gMDtcclxuICAgIC8qKlxyXG4gICAgICogTGVuZ3RoIC8gZGVwdGggbWVhc3VyZWQgaW4gbWV0ZXJzIChtKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gICAgLyoqXHJcbiAgICAgKiBXZWlnaHQgbWVhc3VyZWQgaW4ga2lsb2dyYW1zIChrZylcclxuICAgICAqL1xyXG4gICAgcHVibGljIHdlaWdodDogbnVtYmVyID0gMDtcclxuICAgIC8qKlxyXG4gICAgICogVW5pdHMgdXNlZCB0byBtZWFzdXJlIHRoZSBxdWFudGl0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdW5pdF9vZl9tZWFzdXJlOiBFc29sdmVTdG9ja1VuaXRPZk1lYXN1cmUgPSAndW5pdCc7XHJcbiAgICAvKipcclxuICAgICAqIElEIG9mIGRlZmF1bHQgY2F0ZWdvcnkgbGlua2VkIHRvIHRoZSBzdG9jayBpdGVtXHJcbiAgICAgKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGBjYXRlZ29yeS5lc29sdmVfaWRgIGZpZWxkIGluc3RlYWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhdGVnb3J5X2lkOiBzdHJpbmcgPSAnJztcclxuICAgIC8qKlxyXG4gICAgICogRGVmYXVsdCBsaW5rZWQgY2F0ZWdvcnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhdGVnb3J5PzogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbTtcclxuICAgIC8qKlxyXG4gICAgICogSUQgb2YgZGVmYXVsdCBzdWJjYXRlZ29yeSBsaW5rZWQgdG8gdGhlIHN0b2NrIGl0ZW1cclxuICAgICAqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHN1YmNhdGVnb3J5LmVzb2x2ZV9pZGAgZmllbGQgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3ViY2F0ZWdvcnlfaWQ6IG51bWJlciA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIERlZmF1bHQgbGlua2VkIHN1YmNhdGVnb3J5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdWJjYXRlZ29yeT86IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW07XHJcbiAgICAvKipcclxuICAgICAqIElEIG9mIGxpbmtlZCBtYW51ZmFjdHVyZXJcclxuICAgICAqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYG1hbnVmYWN0dXJlci5pZGAgZmllbGQgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFudWZhY3R1cmVyc19pZDogbnVtYmVyID0gMDtcclxuICAgIC8qKlxyXG4gICAgICogTGlua2VkIG1hbnVmYWN0dXJlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFudWZhY3R1cmVyPzogRXNvbHZlTWFudWZhY3R1cmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJRCBvZiBsaW5rZWQgcmFuZ2VcclxuICAgICAqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJhbmdlLmlkYCBmaWVsZCBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByYW5nZXNfaWQ6IG51bWJlciA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIExpbmtlZCByYW5nZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmFuZ2U/OiBFc29sdmVSYW5nZTtcclxuICAgIC8qKlxyXG4gICAgICogRGVmYXVsdCBwcmljZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJpY2U6IEVzb2x2ZVN0b2NrUHJpY2U7XHJcbiAgICAvKipcclxuICAgICAqIFNFTyBwYWdlIGRldGFpbHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlb19kZXRhaWxzOiBFc29sdmVTZW9JbmZvO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaW5rZWQgdGFnc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdGFnczogRXNvbHZlVGFnW10gPSBbXTtcclxuICAgIC8qKlxyXG4gICAgICogTGlua2VkIHRvcGljc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9waWNzOiBFc29sdmVUb3BpY1tdID0gW107XHJcbiAgICAvKipcclxuICAgICAqIFN0b2NrIGJhZGdlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYmFkZ2VzOiBFc29sdmVTdG9ja0JhZGdlW10gPSBbXTtcclxuICAgIC8qKlxyXG4gICAgICogU3RvY2sgaXRlbSBjdXN0b20gZmllbGRzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3VzdG9tX2ZpZWxkcz86IEVzb2x2ZUN1c3RvbUZpZWxkczxUPjtcclxuICAgIC8qKlxyXG4gICAgICogQ29sb3Vyc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29sb3VyczogRXNvbHZlQ29sb3VyW10gPSBbXTtcclxuICAgIC8qKlxyXG4gICAgICogU3RvY2sgSXRlbSBMZWFkIFRpbWVzIGZvciBzdXBwbHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxlYWRfdGltZXM/OiBFc29sdmVTdG9ja0xlYWRUaW1lcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltYWdlIGZpbGVuYW1lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW1hZ2VfbmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXRoIHRvIHRpbnkgc3RvY2sgaW1hZ2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB0aW55X2ltYWdlX3NyYygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEltYWdlUGF0aCgndGlueScpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF0aCB0byB0aHVtYm5haWwgc3RvY2sgaW1hZ2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB0aHVtYm5haWxfaW1hZ2Vfc3JjKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCd0aHVtYicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF0aCB0byBzbWFsbCBzdG9jayBpbWFnZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHNtYWxsX2ltYWdlX3NyYygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEltYWdlUGF0aCgnc21hbGwnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdGggdG8gYmlnIHN0b2NrIGltYWdlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgYmlnX2ltYWdlX3NyYygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEltYWdlUGF0aCgnYmlnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXRoIHRvIG9yaWdpbmFsIHN0b2NrIGltYWdlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZ2luYWxfaW1hZ2Vfc3JjKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCdvcmlnaW5hbCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlY29yZDogUGFydGlhbDxFc29sdmVTdG9ja0Jhc2VSZWNvcmQ8VD4+ID0ge30pIHtcclxuICAgICAgICBsZXQgc2VvX3RpdGxlID0gJyc7XHJcbiAgICAgICAgbGV0IHNlb19rZXl3b3JkcyA9ICcnO1xyXG4gICAgICAgIGxldCBiYXNlX3ByaWNlID0gMDtcclxuICAgICAgICBsZXQgYmFzZV9wcmljZV93aXRoX3RheCA9IDA7XHJcbiAgICAgICAgbGV0IHNlbGxfcHJpY2UgPSAwO1xyXG4gICAgICAgIGxldCBzZWxsX3ByaWNlX3dpdGhfdGF4ID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZCkge1xyXG4gICAgICAgICAgICB0aGlzLmlkID0gKyhyZWNvcmQuaWQgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZSA9IHJlY29yZC5jb2RlID8/ICcnO1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSByZWNvcmQubmFtZSA/PyAnJztcclxuICAgICAgICAgICAgdGhpcy5zZWZfbmFtZSA9IHJlY29yZC5zZWZfbmFtZSA/PyAnJztcclxuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHJlY29yZC5kZXNjcmlwdGlvbiA/PyAnJztcclxuICAgICAgICAgICAgdGhpcy5leHRlbmRlZF9kZXNjcmlwdGlvbiA9IHJlY29yZC5leHRlbmRlZF9kZXNjcmlwdGlvbiA/PyAnJztcclxuICAgICAgICAgICAgdGhpcy5pbWFnZV9uYW1lID0gcmVjb3JkLmltYWdlX25hbWUgPz8gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlfaWQgPSByZWNvcmQuY2F0ZWdvcnlfaWQgPz8gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuc3ViY2F0ZWdvcnlfaWQgPSArKHJlY29yZC5zdWJjYXRlZ29yeV9pZCA/PyAwKTtcclxuICAgICAgICAgICAgdGhpcy5tYW51ZmFjdHVyZXJzX2lkID0gKyhyZWNvcmQubWFudWZhY3R1cmVyc19pZCA/PyAwKTtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZXNfaWQgPSArKHJlY29yZC5yYW5nZXNfaWQgPz8gMCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9ICEhKyhyZWNvcmQuaXNfYWN0aXZlID8/IGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlZCA9ICEhKyhyZWNvcmQuaXNfZmVhdHVyZWQgPz8gZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSArKHJlY29yZC5oZWlnaHQgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSArKHJlY29yZC53aWR0aCA/PyAwKTtcclxuICAgICAgICAgICAgdGhpcy5sZW5ndGggPSArKHJlY29yZC5sZW5ndGggPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMud2VpZ2h0ID0gKyhyZWNvcmQud2VpZ2h0ID8/IDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlY29yZC51bml0X29mX21lYXN1cmUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5pdF9vZl9tZWFzdXJlID0gcmVjb3JkLnVuaXRfb2ZfbWVhc3VyZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYmFzZV9wcmljZSA9ICsocmVjb3JkLnJlZ3VsYXJfc2VsbHByaWNlID8/IDApO1xyXG4gICAgICAgICAgICBiYXNlX3ByaWNlX3dpdGhfdGF4ID0gKyhyZWNvcmQucmVndWxhcl9zZWxscHJpY2VfaW5jbHVzaXZlID8/IDApO1xyXG4gICAgICAgICAgICBzZWxsX3ByaWNlID0gKyhyZWNvcmQuc2VsbHByaWNlID8/IDApO1xyXG4gICAgICAgICAgICBzZWxsX3ByaWNlX3dpdGhfdGF4ID0gKyhyZWNvcmQuc2VsbHByaWNlX2luY2x1c2l2ZSA/PyAwKTtcclxuXHJcbiAgICAgICAgICAgIGlmICgocmVjb3JkLnRhZ3MpICYmIChyZWNvcmQudGFncy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgcmVjb3JkLnRhZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhZ3MucHVzaChuZXcgRXNvbHZlVGFnKHRhZykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHJlY29yZC50b3BpY3MpICYmIChyZWNvcmQudG9waWNzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRvcGljIG9mIHJlY29yZC50b3BpY3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcGljcy5wdXNoKG5ldyBFc29sdmVUb3BpYyh0b3BpYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHJlY29yZC5iYWRnZXMpICYmIChyZWNvcmQuYmFkZ2VzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJhZGdlIG9mIHJlY29yZC5iYWRnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhZGdlcy5wdXNoKG5ldyBFc29sdmVTdG9ja0JhZGdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICArYmFkZ2UuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlLnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlLmlkZW50aWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlLmZvbnRfY29sb3VyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWRnZS5iYWRnZV9jb2xvdXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICtiYWRnZS5zb3J0X3ByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocmVjb3JkLmNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gbmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5wYXJlbnRfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zZWZfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNob3J0X2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zb3J0X3ByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5hY3RpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmRpc3BsYXlfb25seSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuaW1hZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNlb19wYWdlX3RpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zZW9fa2V5d29yZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNlb19kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChyZWNvcmQuc3ViY2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ViY2F0ZWdvcnkgPSBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnBhcmVudF9pZCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNlZl9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2hvcnRfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNvcnRfcHJpb3JpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LmFjdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuZGlzcGxheV9vbmx5LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5pbWFnZSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2VvX3BhZ2VfdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNlb19rZXl3b3JkcyxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2VvX2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJlY29yZC5tYW51ZmFjdHVyZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFudWZhY3R1cmVyID0gbmV3IEVzb2x2ZU1hbnVmYWN0dXJlcihyZWNvcmQubWFudWZhY3R1cmVyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJlY29yZC5yYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yYW5nZSA9IG5ldyBFc29sdmVSYW5nZShyZWNvcmQucmFuZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocmVjb3JkLmNvbG91cnMgJiYgcmVjb3JkLmNvbG91cnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2xvdXIgb2YgcmVjb3JkLmNvbG91cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG91cnMucHVzaChuZXcgRXNvbHZlQ29sb3VyKGNvbG91cikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocmVjb3JkLmxlYWRfdGltZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGVhZF90aW1lcyA9IG5ldyBFc29sdmVTdG9ja0xlYWRUaW1lcyhyZWNvcmQubGVhZF90aW1lcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChyZWNvcmQuY3VzdG9tX2ZpZWxkcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21fZmllbGRzID0gcmVjb3JkLmN1c3RvbV9maWVsZHM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNlb190aXRsZSA9IHJlY29yZC5zZW9fcGFnZV90aXRsZSA/PyAnJztcclxuICAgICAgICAgICAgc2VvX2tleXdvcmRzID0gcmVjb3JkLnNlb19rZXl3b3JkcyA/PyAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJpY2UgPSBuZXcgRXNvbHZlU3RvY2tQcmljZShcclxuICAgICAgICAgICAgYmFzZV9wcmljZSxcclxuICAgICAgICAgICAgYmFzZV9wcmljZV93aXRoX3RheCxcclxuICAgICAgICAgICAgc2VsbF9wcmljZSxcclxuICAgICAgICAgICAgc2VsbF9wcmljZV93aXRoX3RheCxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoc2VvX3RpdGxlLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgc2VvX3RpdGxlID0gdGhpcy5uYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZW9fZGV0YWlscyA9IG5ldyBFc29sdmVTZW9JbmZvKFxyXG4gICAgICAgICAgICBzZW9fdGl0bGUsXHJcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIHNlb19rZXl3b3JkcyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRJbWFnZVBhdGgoaW1hZ2Vfc2l6ZTogRXNvbHZlU3RvY2tJbWFnZVNpemUpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmltYWdlX25hbWUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgL2ltYWdlcy9zdG9jay8ke2ltYWdlX3NpemV9LyR7dGhpcy5pbWFnZV9uYW1lfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Stock item object list
3
+ */
4
+ export class EsolveStockItemList {
5
+ constructor(stock_items, total, page) {
6
+ this.stock_items = stock_items;
7
+ this.total = total;
8
+ this.page = page;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tbGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svY2xhc3Nlcy9lc29sdmUtc3RvY2staXRlbS1saXN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUNXLFdBQWlDLEVBQ2pDLEtBQWEsRUFDYixJQUFZO1FBRlosZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFRO0lBQ25CLENBQUM7Q0FDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZUdlbmVyaWNDdXN0b21GaWVsZHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvY3VzdG9tLWZpZWxkcyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVTdG9ja0l0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBTdG9jayBpdGVtIG9iamVjdCBsaXN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tJdGVtTGlzdDxUID0gRXNvbHZlR2VuZXJpY0N1c3RvbUZpZWxkcz4ge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHN0b2NrX2l0ZW1zOiBFc29sdmVTdG9ja0l0ZW08VD5bXSxcclxuICAgICAgICBwdWJsaWMgdG90YWw6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgcGFnZTogbnVtYmVyLFxyXG4gICAgKSB7IH1cclxufVxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { EsolveStockItemBase } from './esolve-stock-item-base.model';
2
+ import { EsolveStockGroup } from './esolve-stock-group.model';
3
+ /**
4
+ * Stock Item object. It can be a service or a product (physical and/or digital).
5
+ */
6
+ export class EsolveStockItem extends EsolveStockItemBase {
7
+ /**
8
+ * Constructs an instance of EsolveStockItem
9
+ */
10
+ constructor(record) {
11
+ super(record);
12
+ if (record?.group && record.grouped_items) {
13
+ this.group = new EsolveStockGroup(record.group, record.grouped_items);
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3N0b2NrL2NsYXNzZXMvZXNvbHZlLXN0b2NrLWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBK0MsU0FBUSxtQkFBc0I7SUFHdEY7O09BRUc7SUFDSCxZQUFZLE1BQXNDO1FBQzlDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVkLElBQUksTUFBTSxFQUFFLEtBQUssSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDN0IsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsYUFBYSxDQUN2QixDQUFDO1NBQ0w7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVHZW5lcmljQ3VzdG9tRmllbGRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2N1c3RvbS1maWVsZHMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tSZWNvcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJdGVtQmFzZSB9IGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0tYmFzZS5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrR3JvdXAgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1ncm91cC5tb2RlbCc7XHJcblxyXG4vKipcclxuICogU3RvY2sgSXRlbSBvYmplY3QuIEl0IGNhbiBiZSBhIHNlcnZpY2Ugb3IgYSBwcm9kdWN0IChwaHlzaWNhbCBhbmQvb3IgZGlnaXRhbCkuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tJdGVtPFQgPSBFc29sdmVHZW5lcmljQ3VzdG9tRmllbGRzPiBleHRlbmRzIEVzb2x2ZVN0b2NrSXRlbUJhc2U8VD4ge1xyXG4gICAgcHVibGljIGdyb3VwPzogRXNvbHZlU3RvY2tHcm91cDxUPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYW4gaW5zdGFuY2Ugb2YgRXNvbHZlU3RvY2tJdGVtXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHJlY29yZD86IFBhcnRpYWw8RXNvbHZlU3RvY2tSZWNvcmQ8VD4+KSB7XHJcbiAgICAgICAgc3VwZXIocmVjb3JkKTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZD8uZ3JvdXAgJiYgcmVjb3JkLmdyb3VwZWRfaXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cCA9IG5ldyBFc29sdmVTdG9ja0dyb3VwKFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmdyb3VwLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmdyb3VwZWRfaXRlbXMsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ export class EsolveStockLeadTimes {
2
+ constructor(lead_times) {
3
+ this.min = 0;
4
+ this.max = 0;
5
+ this.min = lead_times.min;
6
+ this.max = lead_times.max;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWxlYWQtdGltZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3N0b2NrL2NsYXNzZXMvZXNvbHZlLXN0b2NrLWxlYWQtdGltZXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG9CQUFvQjtJQUk3QixZQUFZLFVBQXNDO1FBSDNDLFFBQUcsR0FBVyxDQUFDLENBQUM7UUFDaEIsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUduQixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVN0b2NrTGVhZFRpbWVzUmVjb3JkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tMZWFkVGltZXMge1xyXG4gICAgcHVibGljIG1pbjogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBtYXg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IobGVhZF90aW1lczogRXNvbHZlU3RvY2tMZWFkVGltZXNSZWNvcmQpIHtcclxuICAgICAgICB0aGlzLm1pbiA9IGxlYWRfdGltZXMubWluO1xyXG4gICAgICAgIHRoaXMubWF4ID0gbGVhZF90aW1lcy5tYXg7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Price of eSolve stock item
3
+ */
4
+ export class EsolveStockPrice {
5
+ /**
6
+ * Create stock price instance
7
+ * @param base_price Price without tax
8
+ * @param base_price_with_tax Price with tax
9
+ * @param sell_price Price without tax and with discounts applied if applicable
10
+ * @param sell_price_with_tax Price with tax and with discounts applied if applicable
11
+ */
12
+ constructor(
13
+ /**
14
+ * Price without tax
15
+ */
16
+ base_price = 0,
17
+ /**
18
+ * Price with tax
19
+ */
20
+ base_price_with_tax = 0,
21
+ /**
22
+ * Price without tax and with discounts applied if applicable
23
+ */
24
+ sell_price = 0,
25
+ /**
26
+ * Price with tax and with discounts applied if applicable
27
+ */
28
+ sell_price_with_tax = 0) {
29
+ this.base_price = base_price;
30
+ this.base_price_with_tax = base_price_with_tax;
31
+ this.sell_price = sell_price;
32
+ this.sell_price_with_tax = sell_price_with_tax;
33
+ if ((this.base_price === 0) && (this.sell_price > 0)) {
34
+ this.base_price = this.sell_price;
35
+ this.base_price_with_tax = this.sell_price_with_tax;
36
+ }
37
+ else if ((this.base_price > 0) && (this.sell_price === 0)) {
38
+ this.sell_price = this.base_price;
39
+ this.sell_price_with_tax = this.base_price_with_tax;
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLXByaWNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zdG9jay9jbGFzc2VzL2Vzb2x2ZS1zdG9jay1wcmljZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7Ozs7OztPQU1HO0lBQ0g7SUFDSTs7T0FFRztJQUNJLGFBQXFCLENBQUM7SUFFN0I7O09BRUc7SUFDSSxzQkFBOEIsQ0FBQztJQUV0Qzs7T0FFRztJQUNJLGFBQXFCLENBQUM7SUFFN0I7O09BRUc7SUFDSSxzQkFBOEIsQ0FBQztRQWYvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBS3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBWTtRQUsvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBS3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBWTtRQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FDdkQ7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FDdkQ7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogUHJpY2Ugb2YgZVNvbHZlIHN0b2NrIGl0ZW1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVTdG9ja1ByaWNlIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIHN0b2NrIHByaWNlIGluc3RhbmNlXHJcbiAgICAgKiBAcGFyYW0gYmFzZV9wcmljZSBQcmljZSB3aXRob3V0IHRheFxyXG4gICAgICogQHBhcmFtIGJhc2VfcHJpY2Vfd2l0aF90YXggUHJpY2Ugd2l0aCB0YXhcclxuICAgICAqIEBwYXJhbSBzZWxsX3ByaWNlIFByaWNlIHdpdGhvdXQgdGF4IGFuZCB3aXRoIGRpc2NvdW50cyBhcHBsaWVkIGlmIGFwcGxpY2FibGVcclxuICAgICAqIEBwYXJhbSBzZWxsX3ByaWNlX3dpdGhfdGF4IFByaWNlIHdpdGggdGF4IGFuZCB3aXRoIGRpc2NvdW50cyBhcHBsaWVkIGlmIGFwcGxpY2FibGVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUHJpY2Ugd2l0aG91dCB0YXhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgYmFzZV9wcmljZTogbnVtYmVyID0gMCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUHJpY2Ugd2l0aCB0YXhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgYmFzZV9wcmljZV93aXRoX3RheDogbnVtYmVyID0gMCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUHJpY2Ugd2l0aG91dCB0YXggYW5kIHdpdGggZGlzY291bnRzIGFwcGxpZWQgaWYgYXBwbGljYWJsZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBzZWxsX3ByaWNlOiBudW1iZXIgPSAwLFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBQcmljZSB3aXRoIHRheCBhbmQgd2l0aCBkaXNjb3VudHMgYXBwbGllZCBpZiBhcHBsaWNhYmxlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNlbGxfcHJpY2Vfd2l0aF90YXg6IG51bWJlciA9IDAsXHJcbiAgICApIHtcclxuICAgICAgICBpZiAoKHRoaXMuYmFzZV9wcmljZSA9PT0gMCkgJiYgKHRoaXMuc2VsbF9wcmljZSA+IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzZV9wcmljZSA9IHRoaXMuc2VsbF9wcmljZTtcclxuICAgICAgICAgICAgdGhpcy5iYXNlX3ByaWNlX3dpdGhfdGF4ID0gdGhpcy5zZWxsX3ByaWNlX3dpdGhfdGF4O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuYmFzZV9wcmljZSA+IDApICYmICh0aGlzLnNlbGxfcHJpY2UgPT09IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsbF9wcmljZSA9IHRoaXMuYmFzZV9wcmljZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxsX3ByaWNlX3dpdGhfdGF4ID0gdGhpcy5iYXNlX3ByaWNlX3dpdGhfdGF4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ // Classes
2
+ export * from './esolve-colour.model';
3
+ export * from './esolve-stock-item.model';
4
+ export * from './esolve-stock-price.model';
5
+ export * from './esolve-stock-badge.model';
6
+ export * from './esolve-stock-group.model';
7
+ export * from './esolve-stock-item-base.model';
8
+ export * from './esolve-stock-item-list.model';
9
+ export * from './esolve-stock-group-item.model';
10
+ export * from './esolve-recipe-stock-item.model';
11
+ export * from './esolve-linked-stock-item.model';
12
+ export * from './esolve-stock-lead-times.model';
13
+ export * from './esolve-media-stock-item.model';
14
+ export * from './esolve-stock-image.model';
15
+ export * from './esolve-stock-image-collection.model';
16
+ export * from './esolve-additional-stock-image.model';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3N0b2NrL2NsYXNzZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2xhc3Nlc1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1jb2xvdXIubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stcHJpY2UubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1iYWRnZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWdyb3VwLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1iYXNlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1saXN0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stZ3JvdXAtaXRlbS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXJlY2lwZS1zdG9jay1pdGVtLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbGlua2VkLXN0b2NrLWl0ZW0ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1sZWFkLXRpbWVzLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbWVkaWEtc3RvY2staXRlbS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWltYWdlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staW1hZ2UtY29sbGVjdGlvbi5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWFkZGl0aW9uYWwtc3RvY2staW1hZ2UubW9kZWwnO1xyXG4iXX0=
@@ -3,12 +3,7 @@ import { HttpParams } from '@angular/common/http';
3
3
  import { map } from 'rxjs/operators';
4
4
  import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect-config.constant';
5
5
  import { EsolveList } from '../shared/esolve-list.model';
6
- import { EsolveStockItem } from './esolve-stock-item.model';
7
- import { EsolveStockItemList } from './esolve-stock-item-list.model';
8
- import { EsolveRecipeStockItem } from './esolve-recipe-stock-item.model';
9
- import { EsolveLinkedStockItem } from './esolve-linked-stock-item.model';
10
- import { EsolveMediaStockItem } from './esolve-media-stock-item.model';
11
- import { EsolveStockImageCollection } from './esolve-stock-image-collection.model';
6
+ import { EsolveStockItem, EsolveStockItemList, EsolveMediaStockItem, EsolveRecipeStockItem, EsolveLinkedStockItem, EsolveStockImageCollection, } from './classes';
12
7
  import * as i0 from "@angular/core";
13
8
  import * as i1 from "@angular/common/http";
14
9
  export class EsolveStockService {
@@ -69,6 +64,15 @@ export class EsolveStockService {
69
64
  if (options.rows) {
70
65
  params = params.set('rows', options.rows);
71
66
  }
67
+ if (options.sort) {
68
+ const sort = options.sort;
69
+ if (sort.field) {
70
+ params = params.set('sort', sort.field);
71
+ }
72
+ if (sort.order) {
73
+ params = params.set('order', sort.order);
74
+ }
75
+ }
72
76
  if (options.search_phrase) {
73
77
  params = params.set('search_phrase', options.search_phrase);
74
78
  }
@@ -136,9 +140,27 @@ export class EsolveStockService {
136
140
  *
137
141
  * @param code Stock item code
138
142
  */
139
- getRecipeItems(code) {
143
+ getRecipeItems(code, options) {
144
+ let params = new HttpParams().set('code', code);
145
+ if (options) {
146
+ if (options.page) {
147
+ params = params.set('page', options.page);
148
+ }
149
+ if (options.rows) {
150
+ params = params.set('rows', options.rows);
151
+ }
152
+ if (options.sort) {
153
+ const sort = options.sort;
154
+ if (sort.field) {
155
+ params = params.set('sort', sort.field);
156
+ }
157
+ if (sort.order) {
158
+ params = params.set('order', sort.order);
159
+ }
160
+ }
161
+ }
140
162
  return this.http
141
- .get(`${this.config.api_url}/get-recipe-items.php`, { params: { code } })
163
+ .get(`${this.config.api_url}/get-recipe-items.php`, { params })
142
164
  .pipe(map((response) => {
143
165
  if ((response.records === undefined) ||
144
166
  (response.records.length <= 0)) {
@@ -163,6 +185,15 @@ export class EsolveStockService {
163
185
  is_active: options.is_active ?? true,
164
186
  },
165
187
  });
188
+ if (options.sort) {
189
+ const sort = options.sort;
190
+ if (sort.field) {
191
+ params = params.set('sort', sort.field);
192
+ }
193
+ if (sort.order) {
194
+ params = params.set('order', sort.order);
195
+ }
196
+ }
166
197
  if (options.media_identifier) {
167
198
  params = params.append('media_identifier', options.media_identifier);
168
199
  }
@@ -265,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
265
296
  type: Inject,
266
297
  args: [ESOLVE_CONNECT_CONFIG]
267
298
  }] }, { type: i1.HttpClient }]; } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3N0b2NrL2Vzb2x2ZS1zdG9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUt6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUt2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS25GLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0I7UUFEZSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3hCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLElBQVk7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFO2dCQUNSLElBQUk7YUFDUDtTQUNKLENBQUMs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QVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVMaXN0IH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1saXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVHZW5lcmljQ3VzdG9tRmllbGRzIH0gZnJvbSAnLi4vc2hhcmVkL2N1c3RvbS1maWVsZHMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJdGVtIH0gZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrSXRlbUxpc3QgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWNpcGVTdG9ja0l0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1yZWNpcGUtc3RvY2staXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbSB9IGZyb20gJy4vZXNvbHZlLWxpbmtlZC1zdG9jay1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1yZWNvcmQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJdGVtT3B0aW9ucyB9IGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVMaW5rZWRTdG9ja1JlY29yZCB9IGZyb20gJy4vZXNvbHZlLWxpbmtlZC1zdG9jay1yZWNvcmQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVjaXBlSXRlbVJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXJlY2lwZS1pdGVtLXJlY29yZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVNZWRpYVN0b2NrSXRlbSB9IGZyb20gJy4vZXNvbHZlLW1lZGlhLXN0b2NrLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZCB9IGZyb20gJy4vZXNvbHZlLW1lZGlhLXN0b2NrLWl0ZW0tcmVjb3JkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZU1lZGlhU3RvY2tJdGVtT3B0aW9ucyB9IGZyb20gJy4vZXNvbHZlLW1lZGlhLXN0b2NrLWl0ZW0tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVNZWRpYVN0b2NrSXRlbUxpc3QgfSBmcm9tICcuL2Vzb2x2ZS1tZWRpYS1zdG9jay1pdGVtLWxpc3QudHlwZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtc3RvY2staW1hZ2UtY29sbGVjdGlvbi1yZWNvcmQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb24gfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pbWFnZS1jb2xsZWN0aW9uLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVN0b2NrU2VydmljZTxUID0gRXNvbHZlR2VuZXJpY0N1c3RvbUZpZWxkcz4ge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0b2NrIHJlY29yZCBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgdGhlIGNvZGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvZGUgZVNvbHZlIHN0b2NrIGNvZGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFN0b2NrSXRlbShjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSXRlbTxUPj4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrUmVjb3JkcyhwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyB0aGUgc3RvY2sgcmVjb3JkIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSB1c2luZyB0aGUgU0VGIG5hbWUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNlZl9uYW1lIFNFRiBuYW1lIG9mIHRoZSBzdG9jayBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1Gcm9tU0VGKHNlZl9uYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSXRlbTxUPj4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xyXG4gICAgICAgICAgICAgICAgc2VmX25hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja1JlY29yZHMocGFyYW1zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja1JlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgbGlzdCBvZiBzdG9jayBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgaW5mbyBwcm92aWRlZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN0b2NrIGZpbHRlciBvcHRpb25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1zKFxyXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSXRlbUxpc3Q8VD4+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMucGFnZSkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncm93cycsIG9wdGlvbnMucm93cyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5zZWFyY2hfcGhyYXNlKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaF9waHJhc2UnLCBvcHRpb25zLnNlYXJjaF9waHJhc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZGlzcGxheV9vbmx5KSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Rpc3BsYXlfb25seScsIG9wdGlvbnMuZGlzcGxheV9vbmx5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmlzX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19hY3RpdmUnLCBvcHRpb25zLmlzX2FjdGl2ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5jYXRlZ29yeV9pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjYXRlZ29yeV9pZCcsIG9wdGlvbnMuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3ViY2F0ZWdvcnlfaWQnLCBvcHRpb25zLnN1YmNhdGVnb3J5X2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbWFudWZhY3R1cmVyc19pZCcsIG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5yYW5nZXNfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmFuZ2VzX2lkJywgb3B0aW9ucy5yYW5nZXNfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc3BlY2lhbHNfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3BlY2lhbHNfaWQnLCBvcHRpb25zLnNwZWNpYWxzX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnRhZ19pZF9saXN0KSB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRhZ19pZF9saXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RhZ19pZCcsIG9wdGlvbnMudGFnX2lkX2xpc3Quam9pbignLCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMudG9waWNfaWRfbGlzdCkge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy50b3BpY19pZF9saXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvcGljX2lkJywgb3B0aW9ucy50b3BpY19pZF9saXN0LmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrUmVjb3JkcyhwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrSXRlbXM6IEVzb2x2ZVN0b2NrSXRlbTxUPltdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKHN0b2NrUmVjb3JkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLnB1c2godGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbUxpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcyxcclxuICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlID8/IDAsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldExpbmtlZEl0ZW1zKFxyXG4gICAgICAgIGNvZGU6IHN0cmluZ1xyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMaW5rZWRTdG9ja1JlY29yZDxUPltdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbGlua2VkLWl0ZW1zLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjb2RlIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaW5rZWRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBvbiBhIHJlY2lwZSBmcm9tIHRoZSBlU29sdmUgQVBJXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRSZWNpcGVJdGVtcyhcclxuICAgICAgICBjb2RlOiBzdHJpbmdcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlUmVjaXBlSXRlbVJlY29yZDxUPltdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcmVjaXBlLWl0ZW1zLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjb2RlIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNpcGVJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TWVkaWFMaW5rZWRJdGVtcyhcclxuICAgICAgICBvcHRpb25zOiBFc29sdmVNZWRpYVN0b2NrSXRlbU9wdGlvbnMsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdDxUPj4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIHJvd3M6IG9wdGlvbnMucm93cyA/PyAwLFxyXG4gICAgICAgICAgICAgICAgcGFnZTogb3B0aW9ucy5wYWdlID8/IDAsXHJcbiAgICAgICAgICAgICAgICByYW5nZXNfaWQ6IG9wdGlvbnMucmFuZ2VzX2lkID8/IDAsXHJcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlfb25seTogb3B0aW9ucy5kaXNwbGF5X29ubHkgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IG9wdGlvbnMuaXNfYWN0aXZlID8/IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLm1lZGlhX2lkZW50aWZpZXIpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbWVkaWFfaWRlbnRpZmllcicsIG9wdGlvbnMubWVkaWFfaWRlbnRpZmllcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5tZWRpYV9pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdtZWRpYV9pZCcsIG9wdGlvbnMubWVkaWFfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkPFQ+W10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1tZWRpYS1saW5rZWQtaXRlbXMucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnJvd3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGZ1bGwgaW1hZ2UgY29sbGVjdGlvbiBvZiBhIHN0b2NrIGl0ZW1cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFN0b2NrSW1hZ2VDb2xsZWN0aW9uKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb25SZWNvcmQ+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1pdGVtLWltYWdlLWNvbGxlY3Rpb24ucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGNvZGUgfSB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBvYmplY3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3RvY2tJdGVtKHJlY29yZDogRXNvbHZlU3RvY2tSZWNvcmQ8VD4pOiBFc29sdmVTdG9ja0l0ZW08VD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtPFQ+KHJlY29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGxpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZHMgTGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzTGlua2VkSXRlbXMoXHJcbiAgICAgICAgcmVjb3JkczogRXNvbHZlTGlua2VkU3RvY2tSZWNvcmQ8VD5bXSxcclxuICAgICk6IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPltdIHtcclxuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+W10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgcmVjaXBlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gb2JqZWN0cy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNpcGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3Jkc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NSZWNpcGVJdGVtcyhcclxuICAgICAgICByZWNvcmRzOiBFc29sdmVSZWNpcGVJdGVtUmVjb3JkPFQ+W10sXHJcbiAgICApOiBFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD5bXSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGxpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZHMgTGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzTWVkaWFTdG9ja0l0ZW1zKFxyXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkPFQ+W10sXHJcbiAgICApOiBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPltdIHtcclxuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD5bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxyXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0U3RvY2tSZWNvcmRzKFxyXG4gICAgICAgIHBhcmFtczogSHR0cFBhcmFtcyxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1pdGVtcy5waHBgLFxyXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3N0b2NrL2Vzb2x2ZS1zdG9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZXpELE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDBCQUEwQixHQUM3QixNQUFNLFdBQVcsQ0FBQzs7O0FBS25CLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0I7UUFEZSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3hCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLElBQVk7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFO2dCQUNSLElBQUk7YUFDUDtTQUNKLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNYLElBQ0ksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztnQkFDaEMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFD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QU0sRUFBRSxDQUNiLENBQUM7SUFDTixDQUFDOzsrR0F2WlEsa0JBQWtCLGtCQUVmLHFCQUFxQjttSEFGeEIsa0JBQWtCLGNBRmYsTUFBTTsyRkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUxpc3QgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUdlbmVyaWNDdXN0b21GaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQvY3VzdG9tLWZpZWxkcyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVNZWRpYVN0b2NrSXRlbUxpc3QgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVN0b2NrUmVjb3JkLFxyXG4gICAgRXNvbHZlU3RvY2tJdGVtT3B0aW9ucyxcclxuICAgIEVzb2x2ZVJlY2lwZUl0ZW1SZWNvcmQsXHJcbiAgICBFc29sdmVMaW5rZWRTdG9ja1JlY29yZCxcclxuICAgIEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcclxuICAgIEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkLFxyXG4gICAgRXNvbHZlTWVkaWFTdG9ja0l0ZW1PcHRpb25zLFxyXG4gICAgRXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb25SZWNvcmQsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVN0b2NrSXRlbSxcclxuICAgIEVzb2x2ZVN0b2NrSXRlbUxpc3QsXHJcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbSxcclxuICAgIEVzb2x2ZVJlY2lwZVN0b2NrSXRlbSxcclxuICAgIEVzb2x2ZUxpbmtlZFN0b2NrSXRlbSxcclxuICAgIEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uLFxyXG59IGZyb20gJy4vY2xhc3Nlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVTdG9ja1NlcnZpY2U8VCA9IEVzb2x2ZUdlbmVyaWNDdXN0b21GaWVsZHM+IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBjb2RlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb2RlIGVTb2x2ZSBzdG9jayBjb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW0oY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW08VD4+IHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja1JlY29yZHMocGFyYW1zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja1JlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0b2NrIHJlY29yZCBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgdGhlIFNFRiBuYW1lLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzZWZfbmFtZSBTRUYgbmFtZSBvZiB0aGUgc3RvY2sgaXRlbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtRnJvbVNFRihzZWZfbmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW08VD4+IHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIHNlZl9uYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tSZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGxpc3Qgb2Ygc3RvY2sgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIGluZm8gcHJvdmlkZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBTdG9jayBmaWx0ZXIgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtcyhcclxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0l0ZW1PcHRpb25zLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW1MaXN0PFQ+PiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5yb3dzKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xyXG5cclxuICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnNlYXJjaF9waHJhc2UpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VhcmNoX3BocmFzZScsIG9wdGlvbnMuc2VhcmNoX3BocmFzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5kaXNwbGF5X29ubHkpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGlzcGxheV9vbmx5Jywgb3B0aW9ucy5kaXNwbGF5X29ubHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNfYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX2FjdGl2ZScsIG9wdGlvbnMuaXNfYWN0aXZlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmNhdGVnb3J5X2lkKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhdGVnb3J5X2lkJywgb3B0aW9ucy5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5zdWJjYXRlZ29yeV9pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdWJjYXRlZ29yeV9pZCcsIG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtYW51ZmFjdHVyZXJzX2lkJywgb3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnJhbmdlc19pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyYW5nZXNfaWQnLCBvcHRpb25zLnJhbmdlc19pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5zcGVjaWFsc19pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzcGVjaWFsc19pZCcsIG9wdGlvbnMuc3BlY2lhbHNfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMudGFnX2lkX2xpc3QpIHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudGFnX2lkX2xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndGFnX2lkJywgb3B0aW9ucy50YWdfaWRfbGlzdC5qb2luKCcsJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy50b3BpY19pZF9saXN0KSB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRvcGljX2lkX2xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG9waWNfaWQnLCBvcHRpb25zLnRvcGljX2lkX2xpc3Quam9pbignLCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tJdGVtczogRXNvbHZlU3RvY2tJdGVtPFQ+W10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goc3RvY2tSZWNvcmQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMucHVzaCh0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtTGlzdChcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLFxyXG4gICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UgPz8gMCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSBsaXN0IG9mIHN0b2NrIGl0ZW1zIGxpbmtlZCB0byBhIHN0b2NrIGl0ZW0gZnJvbSB0aGUgZVNvbHZlIEFQSVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb2RlIFN0b2NrIGl0ZW0gY29kZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TGlua2VkSXRlbXMoXHJcbiAgICAgICAgY29kZTogc3RyaW5nLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMaW5rZWRTdG9ja1JlY29yZDxUPltdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbGlua2VkLWl0ZW1zLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjb2RlIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaW5rZWRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBvbiBhIHJlY2lwZSBmcm9tIHRoZSBlU29sdmUgQVBJXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRSZWNpcGVJdGVtcyhcclxuICAgICAgICBjb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgb3B0aW9ucz86IEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2NvZGUnLCBjb2RlKTtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFnZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQuZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVJlY2lwZUl0ZW1SZWNvcmQ8VD5bXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXJlY2lwZS1pdGVtcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNpcGVJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TWVkaWFMaW5rZWRJdGVtcyhcclxuICAgICAgICBvcHRpb25zOiBFc29sdmVNZWRpYVN0b2NrSXRlbU9wdGlvbnMsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdDxUPj4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIHJvd3M6IG9wdGlvbnMucm93cyA/PyAwLFxyXG4gICAgICAgICAgICAgICAgcGFnZTogb3B0aW9ucy5wYWdlID8/IDAsXHJcbiAgICAgICAgICAgICAgICByYW5nZXNfaWQ6IG9wdGlvbnMucmFuZ2VzX2lkID8/IDAsXHJcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlfb25seTogb3B0aW9ucy5kaXNwbGF5X29ubHkgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IG9wdGlvbnMuaXNfYWN0aXZlID8/IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcclxuXHJcbiAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5tZWRpYV9pZGVudGlmaWVyKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ21lZGlhX2lkZW50aWZpZXInLCBvcHRpb25zLm1lZGlhX2lkZW50aWZpZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMubWVkaWFfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbWVkaWFfaWQnLCBvcHRpb25zLm1lZGlhX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZDxUPltdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbWVkaWEtbGlua2VkLWl0ZW1zLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnByb2Nlc3NNZWRpYVN0b2NrSXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlTGlzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5yb3dzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBmdWxsIGltYWdlIGNvbGxlY3Rpb24gb2YgYSBzdG9jayBpdGVtXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdG9ja0ltYWdlQ29sbGVjdGlvbihjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbS1pbWFnZS1jb2xsZWN0aW9uLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjb2RlIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkc1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZCBhbmQgY29udmVydHMgaXQgdG8gYW4gb2JqZWN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZWNvcmQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc1N0b2NrSXRlbShyZWNvcmQ6IEVzb2x2ZVN0b2NrUmVjb3JkPFQ+KTogRXNvbHZlU3RvY2tJdGVtPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbTxUPihyZWNvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBsaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZWNvcmRzIExpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc0xpbmtlZEl0ZW1zKFxyXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZUxpbmtlZFN0b2NrUmVjb3JkPFQ+W10sXHJcbiAgICApOiBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPltdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIHJlY2lwZSBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjaXBlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzUmVjaXBlSXRlbXMoXHJcbiAgICAgICAgcmVjb3JkczogRXNvbHZlUmVjaXBlSXRlbVJlY29yZDxUPltdLFxyXG4gICAgKTogRXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD5bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPihyZWNvcmQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBsaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZWNvcmRzIExpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhcclxuICAgICAgICByZWNvcmRzOiBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZDxUPltdLFxyXG4gICAgKTogRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD5bXSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+W10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPihyZWNvcmQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHN0b2NrIHJlY29yZHMgZnJvbSBIVFRQIHBhcmFtcy5cclxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFN0b2NrUmVjb3JkcyhcclxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMucGhwYCxcclxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==