@colijnit/transaction 12.1.64 → 12.1.66

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 (158) hide show
  1. package/bundles/colijnit-transaction.umd.js +1556 -645
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +152 -139
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +153 -140
  6. package/esm2015/lib/assets/dictionary/text.properties.js +3 -1
  7. package/esm2015/lib/component/checkout/checkout-overview-payment/checkout-overview-payment.component.js +2 -2
  8. package/esm2015/lib/component/checkout/checkout.component.js +36 -11
  9. package/esm2015/lib/component/core/base/transaction-lines-line-base.component.js +2 -3
  10. package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.js +45 -0
  11. package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.module.js +23 -0
  12. package/esm2015/lib/component/stepper/stepper.component.js +6 -4
  13. package/esm2015/lib/component/transaction/transaction.component.js +4 -3
  14. package/esm2015/lib/component/transaction/transaction.module.js +4 -2
  15. package/esm2015/lib/component/transaction-allocate-goods-history/transaction-allocate-goods-history.component.js +81 -0
  16. package/esm2015/lib/component/transaction-allocate-goods-history/transaction-allocate-goods-history.module.js +25 -0
  17. package/esm2015/lib/component/transaction-grid/transaction-available-stock-grid/transaction-available-stock-grid.component.js +3 -3
  18. package/esm2015/lib/component/transaction-grid/transaction-received-goods-grid/transaction-received-goods-grid.component.js +5 -5
  19. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +3 -3
  20. package/esm2015/lib/component/transaction-header-fields/transaction-header-downpayment-amount.component.js +2 -2
  21. package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +2 -1
  22. package/esm2015/lib/component/transaction-line/transaction-goods-allocation-line/service/transaction-allocate-goods.service.js +63 -0
  23. package/esm2015/lib/component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.component.js +109 -0
  24. package/esm2015/lib/component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.module.js +33 -0
  25. package/esm2015/lib/component/transaction-line/transaction-line/transaction-line.component.js +2 -1
  26. package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line.component.js +4 -4
  27. package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +2 -2
  28. package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.js +2 -2
  29. package/esm2015/lib/component/transaction-line/transaction-receive-goods-line/service/transaction-receive-goods.service.js +4 -12
  30. package/esm2015/lib/component/transaction-line/transaction-receive-goods-line/transaction-receive-goods-line.component.js +10 -5
  31. package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.js +16 -5
  32. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.js +1 -1
  33. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.js +1 -1
  34. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +8 -1
  35. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.js +4 -4
  36. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.js +12 -10
  37. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.module.js +4 -4
  38. package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.component.js +81 -0
  39. package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.module.js +25 -0
  40. package/esm2015/lib/component/transaction-line-statusbar/transaction-line-statusbar.component.js +36 -4
  41. package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +4 -2
  42. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.module.js +4 -2
  43. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.component.js +69 -0
  44. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.module.js +25 -0
  45. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +62 -1
  46. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.module.js +6 -2
  47. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component.js +1 -2
  48. package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.js +6 -3
  49. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.js +11 -4
  50. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.module.js +4 -3
  51. package/esm2015/lib/component/transaction-search/transaction-search.component.js +13 -3
  52. package/esm2015/lib/component/transaction-side-panel-edit-request-details/components/allocation-request.component.js +144 -0
  53. package/esm2015/lib/component/transaction-side-panel-edit-request-details/components/receive-goods-request.component.js +195 -0
  54. package/esm2015/lib/component/transaction-side-panel-edit-request-details/transaction-side-panel-edit-request-details.component.js +50 -0
  55. package/esm2015/lib/component/transaction-side-panel-edit-request-details/transaction-side-panel-edit-request-details.module.js +30 -0
  56. package/esm2015/lib/component/transaction-tile/transaction-tile.component.js +3 -2
  57. package/esm2015/lib/enum/icon.enum.js +2 -1
  58. package/esm2015/lib/enum/transaction-type-category.enum.js +2 -1
  59. package/esm2015/lib/model/extended-transaction-line-view-model.js +4 -0
  60. package/esm2015/lib/model/icon-svg.js +2 -1
  61. package/esm2015/lib/service/pending-reason.service.js +3 -1
  62. package/esm2015/lib/service/transaction-connector-adapter.service.js +51 -1
  63. package/esm2015/lib/service/transaction-connector.service.js +21 -1
  64. package/esm2015/lib/service/transaction-event.service.js +2 -1
  65. package/esm2015/lib/service/transaction-mapping.service.js +6 -1
  66. package/esm2015/lib/service/transaction.service.js +24 -8
  67. package/fesm2015/colijnit-transaction.js +1500 -566
  68. package/fesm2015/colijnit-transaction.js.map +1 -1
  69. package/lib/component/checkout/checkout.component.d.ts +13 -6
  70. package/lib/component/core/base/transaction-lines-line-base.component.d.ts +3 -1
  71. package/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.d.ts +15 -0
  72. package/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.module.d.ts +2 -0
  73. package/lib/component/dialog/catalog/dialog-catalog/style/_layout.scss +4 -0
  74. package/lib/component/dialog/catalog/dialog-catalog/style/_material-definition.scss +0 -0
  75. package/lib/component/dialog/catalog/dialog-catalog/style/_theme.scss +4 -0
  76. package/lib/component/dialog/catalog/dialog-catalog/style/material.scss +4 -0
  77. package/lib/component/dialog/dialog-header-search/style/_layout.scss +1 -1
  78. package/lib/component/dialog/dialog-header-search/style/_material-definition.scss +1 -1
  79. package/lib/component/stepper/stepper.component.d.ts +2 -1
  80. package/lib/component/transaction/transaction.component.d.ts +1 -1
  81. package/lib/component/transaction-allocate-goods-history/style/_layout.scss +4 -0
  82. package/lib/component/transaction-allocate-goods-history/style/_material-definition.scss +0 -0
  83. package/lib/component/transaction-allocate-goods-history/style/_theme.scss +4 -0
  84. package/lib/component/transaction-allocate-goods-history/style/material.scss +4 -0
  85. package/lib/component/transaction-allocate-goods-history/transaction-allocate-goods-history.component.d.ts +18 -0
  86. package/lib/component/transaction-allocate-goods-history/transaction-allocate-goods-history.module.d.ts +2 -0
  87. package/lib/component/transaction-confirmation-details/style/_layout.scss +1 -1
  88. package/lib/component/transaction-grid/transaction-available-stock-grid/transaction-available-stock-grid.component.d.ts +2 -1
  89. package/lib/component/transaction-grid/transaction-received-goods-grid/transaction-received-goods-grid.component.d.ts +2 -5
  90. package/lib/component/transaction-line/transaction-goods-allocation-line/service/transaction-allocate-goods.service.d.ts +12 -0
  91. package/lib/component/transaction-line/transaction-goods-allocation-line/style/_layout.scss +27 -0
  92. package/lib/component/transaction-line/transaction-goods-allocation-line/style/_material-definition.scss +0 -0
  93. package/lib/component/transaction-line/transaction-goods-allocation-line/style/_theme.scss +4 -0
  94. package/lib/component/transaction-line/transaction-goods-allocation-line/style/material.scss +4 -0
  95. package/lib/component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.component.d.ts +27 -0
  96. package/lib/component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.module.d.ts +2 -0
  97. package/lib/component/transaction-line/transaction-line/transaction-line.component.d.ts +2 -2
  98. package/lib/component/transaction-line/transaction-receive-goods-line/service/transaction-receive-goods.service.d.ts +2 -3
  99. package/lib/component/transaction-line/transaction-receive-goods-line/transaction-receive-goods-line.component.d.ts +2 -2
  100. package/lib/component/transaction-line-action-buttons/style/_layout.scss +2 -2
  101. package/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.d.ts +3 -1
  102. package/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.d.ts +3 -3
  103. package/lib/component/transaction-line-image-and-description/style/_layout.scss +1 -0
  104. package/lib/component/transaction-line-image-and-description/style/_material-definition.scss +1 -0
  105. package/lib/component/transaction-line-side-panel/style/material.scss +1 -1
  106. package/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.d.ts +2 -3
  107. package/lib/component/transaction-line-side-panel-sales/style/_layout.scss +4 -0
  108. package/lib/component/transaction-line-side-panel-sales/style/_material-definition.scss +0 -0
  109. package/lib/component/transaction-line-side-panel-sales/style/_theme.scss +4 -0
  110. package/lib/component/transaction-line-side-panel-sales/style/material.scss +4 -0
  111. package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.component.d.ts +20 -0
  112. package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.module.d.ts +2 -0
  113. package/lib/component/transaction-line-statusbar/transaction-line-statusbar.component.d.ts +11 -3
  114. package/lib/component/transaction-lines/style/material.scss +1 -0
  115. package/lib/component/transaction-quick-access/transaction-quick-access/style/material.scss +2 -0
  116. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/style/_layout.scss +27 -0
  117. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/style/_material-definition.scss +0 -0
  118. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/style/_theme.scss +4 -0
  119. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/style/material.scss +4 -0
  120. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.component.d.ts +20 -0
  121. package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.module.d.ts +2 -0
  122. package/lib/component/transaction-quick-access/transaction-quick-access-overview/style/_layout.scss +3 -0
  123. package/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.d.ts +17 -0
  124. package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/style/_layout.scss +1 -6
  125. package/lib/component/transaction-receiving-goods-history/style/_layout.scss +2 -2
  126. package/lib/component/transaction-receiving-goods-history/style/_material-definition.scss +1 -1
  127. package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.d.ts +6 -4
  128. package/lib/component/transaction-search/style/_material-definition.scss +9 -2
  129. package/lib/component/transaction-search/transaction-search-header/style/_layout.scss +12 -0
  130. package/lib/component/transaction-search/transaction-search-header/style/_theme.scss +10 -0
  131. package/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.d.ts +4 -1
  132. package/lib/component/transaction-search/transaction-search.component.d.ts +8 -3
  133. package/lib/component/transaction-side-panel-edit-request-details/components/allocation-request.component.d.ts +35 -0
  134. package/lib/component/{transaction-receiving-goods-details/transaction-receiving-goods-details.component.d.ts → transaction-side-panel-edit-request-details/components/receive-goods-request.component.d.ts} +9 -12
  135. package/lib/component/{transaction-receiving-goods-details → transaction-side-panel-edit-request-details}/style/_layout.scss +16 -19
  136. package/lib/component/transaction-side-panel-edit-request-details/style/_material-definition.scss +3 -0
  137. package/lib/component/transaction-side-panel-edit-request-details/style/_theme.scss +4 -0
  138. package/lib/component/transaction-side-panel-edit-request-details/style/material.scss +4 -0
  139. package/lib/component/transaction-side-panel-edit-request-details/transaction-side-panel-edit-request-details.component.d.ts +15 -0
  140. package/lib/component/transaction-side-panel-edit-request-details/transaction-side-panel-edit-request-details.module.d.ts +2 -0
  141. package/lib/component/transaction-tile/transaction-tile.component.d.ts +2 -0
  142. package/lib/enum/icon.enum.d.ts +1 -0
  143. package/lib/enum/transaction-type-category.enum.d.ts +1 -0
  144. package/lib/model/{receive-good-view-model.d.ts → extended-transaction-line-view-model.d.ts} +3 -1
  145. package/lib/service/pending-reason.service.d.ts +2 -0
  146. package/lib/service/transaction-connector-adapter.service.d.ts +8 -0
  147. package/lib/service/transaction-connector.service.d.ts +8 -0
  148. package/lib/service/transaction-event.service.d.ts +3 -5
  149. package/lib/service/transaction.service.d.ts +9 -1
  150. package/lib/style/_variables.scss +2 -1
  151. package/package.json +8 -6
  152. package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.js +0 -211
  153. package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.js +0 -30
  154. package/esm2015/lib/model/receive-good-view-model.js +0 -4
  155. package/lib/component/transaction-receiving-goods-details/style/_material-definition.scss +0 -3
  156. package/lib/component/transaction-receiving-goods-details/style/_theme.scss +0 -7
  157. package/lib/component/transaction-receiving-goods-details/style/material.scss +0 -3
  158. package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.d.ts +0 -2
@@ -533,6 +533,26 @@ export class TransactionConnectorService {
533
533
  return yield this._adapterService.getAvailableStockGroupedByWLBSByTransIdLineNr(transId, lineNr);
534
534
  });
535
535
  }
536
+ allocateGoodsForSalesOrder(request) {
537
+ return __awaiter(this, void 0, void 0, function* () {
538
+ return yield this._adapterService.allocateGoodsForSalesOrder(request);
539
+ });
540
+ }
541
+ allocateGoodsForSalesOrderCorrection(request) {
542
+ return __awaiter(this, void 0, void 0, function* () {
543
+ return yield this._adapterService.allocateGoodsForSalesOrderCorrection(request);
544
+ });
545
+ }
546
+ getGoodsAllocationStatus(transId, lineNr) {
547
+ return __awaiter(this, void 0, void 0, function* () {
548
+ return yield this._adapterService.getGoodsAllocationStatus(transId, lineNr);
549
+ });
550
+ }
551
+ getGoodsAllocationStatusWithHistory(transId, lineNr) {
552
+ return __awaiter(this, void 0, void 0, function* () {
553
+ return yield this._adapterService.getGoodsAllocationStatusWithHistory(transId, lineNr);
554
+ });
555
+ }
536
556
  }
537
557
  TransactionConnectorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionConnectorService_Factory() { return new TransactionConnectorService(i0.ɵɵinject(i1.TransactionConnectorAdapterService), i0.ɵɵinject(i2.SelectSingleCacheService), i0.ɵɵinject(i3.SelectMultipleCacheService), i0.ɵɵinject(i4.SelectMultipleParameterizedCacheService)); }, token: TransactionConnectorService, providedIn: "root" });
538
558
  TransactionConnectorService.decorators = [
@@ -546,4 +566,4 @@ TransactionConnectorService.ctorParameters = () => [
546
566
  { type: SelectMultipleCacheService },
547
567
  { type: SelectMultipleParameterizedCacheService }
548
568
  ];
549
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUV4RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBS3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRzNGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSzVFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQU9yRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVB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O1FBQ25FLENBQUM7S0FBQTtJQUVZLDZDQUE2QyxDQUFDLE9BQWUsRUFBRSxNQUFjOztZQUN4RixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyw2Q0FBNkMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkcsQ0FBQztLQUFBOzs7O1lBcGNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBbEJPLGtDQUFrQztZQUNsQyx3QkFBd0I7WUFIeEIsMEJBQTBCO1lBQzFCLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7TWFya2V0aW5nfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL21hcmtldGluZy5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcbmltcG9ydCB7U2VxdWVuY2VOYW1lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vc2VxdWVuY2UtbmFtZS5lbnVtXCI7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ib1wiO1xuaW1wb3J0IHtEZWxpdmVyeU9wdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm9cIjtcbmltcG9ydCB7U2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NldC10cmFuc2FjdGlvbi1kZWxpdmVyeS1vcHRpb25zLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcG9zdGFsLWNvZGUtcmV0cmlldmFsLW91dHB1dC1wYXJhbXNcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uUmVzcG9uc2VCYXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXJlc3BvbnNlLWJhc2UuYm9cIjtcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tIFwiLi4vbW9kZWwvc3RhbmRhcmQtdGV4dFwiO1xuaW1wb3J0IHtDdXN0b21lckdyb3VwfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWdyb3VwLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXJlZ2lzdGVyXCI7XG5pbXBvcnQge1Jlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1ByaWNlTGlzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmljZS1saXN0XCI7XG5pbXBvcnQge1ZhdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YXRcIjtcbmltcG9ydCB7RGlzY291bnRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdFwiO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29uLWhvbGQtY29kZS5ib1wiO1xuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLmJvXCI7XG5pbXBvcnQge0NvZGVEZXNjcmlwdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb2RlLWRlc2NyaXB0aW9uXCI7XG5pbXBvcnQge1JlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcmVjZWlwdC1zdGF0dXMtd2l0aC1oaXN0b3J5LmJvXCI7XG5pbXBvcnQge1JlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7UGF5bWVudE1ldGhvZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LW1ldGhvZC5ib1wiO1xuaW1wb3J0IHtHZXRQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLXBvcnRhbC1saW5lXCI7XG5pbXBvcnQge1B1cmNoYXNlUG9ydGFsTGluZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1wb3J0YWwtbGluZS5ib1wiO1xuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcGF5bWVudC1saW5rLXJlc3VsdC5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFJlc3VsdH0gZnJvbSBcIi4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHRcIjtcbmltcG9ydCB7UmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1saW5rLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSBcIi4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2VcIjtcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2V9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vY2FjaGUvc2VydmljZS9zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2VcIjtcbmltcG9ydCB7R2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2Utb3JkZXItY29uZmlybWF0aW9uXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1sb2NrLXJlc3VsdC5ib1wiO1xuaW1wb3J0IHtQcml2YWN5U2V0dGluZ30gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaXZhY3ktc2V0dGluZy5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvblByaXZhY3lTZXR0aW5nfSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXByaXZhY3ktc2V0dGluZy5ib1wiO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm9cIjtcbmltcG9ydCB7U2FsZXNQZXJzb259IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvXCI7XG5pbXBvcnQge1RhZ30gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3RhZ1wiO1xuaW1wb3J0IHtEZWxpdmVyeU9yZGVyU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9yZGVyLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtTdG9ja1N0aWNrZXJzRW1haWxMYXlvdXRzfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtZW1haWwtbGF5b3V0cy5ib1wiO1xuaW1wb3J0IHtTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtcHJpbnQtbGF5b3V0cy5ib1wiO1xuaW1wb3J0IHtFbWFpbE9yZGVyQ29uZmlybWF0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlcG9ydC9lbWFpbC1vcmRlci1jb25maXJtYXRpb25cIjtcbmltcG9ydCB7QXZhaWxhYmxlU3RvY2t9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXZhaWxhYmxlLXN0b2NrLmJvXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2U6IFNlbGVjdFNpbmdsZUNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZTogU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9hZGFwdGVyU2VydmljZS5jb25uZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8QXJ0aWNsZUZ1bGxPYmplY3Q+KEFydGljbGVGdWxsT2JqZWN0LCBnb29kSWQsKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkOiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIGluY2x1ZGVNaW1ldHlwZTogYm9vbGVhbiwgdGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTaW5nbGVJbWFnZShub2RlSWQsIHB1YmxpY2F0aW9uLCBpbmNsdWRlTWltZXR5cGUsIHRodW1iKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJpZXMoKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvdW50cnk+KENvdW50cnksICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJpZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJHcm91cHMoKTogUHJvbWlzZTxDdXN0b21lckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEN1c3RvbWVyR3JvdXA+KEN1c3RvbWVyR3JvdXAsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXN0b21lckdyb3VwcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyeShjb3VudHJ5Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpdmFjeVNldHRpbmc+KFByaXZhY3lTZXR0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpdmFjeVNldHRpbmdzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TWFya2V0aW5nPihNYXJrZXRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uKGtpbmQsIGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxpbmVJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQpO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZDogVHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZCwgdHJhbnNhY3Rpb25Obyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uTG9ja1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVHJhbnNhY3Rpb25CeUlkKHRyYW5zSWQsIHZlcnNpb24pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVUcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbih1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaD86IHN0cmluZywgZ3JvdXA/OiBudW1iZXIpOiBQcm9taXNlPENhc2hSZWdpc3RlcltdPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYnJhbmNoOiBicmFuY2gsXG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q2FzaFJlZ2lzdGVyPihDYXNoUmVnaXN0ZXIsIChicmFuY2gsIGdyb3VwKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2gsIGdyb3VwKVxuICAgIH0pLmdldFZhbHVlKGJyYW5jaCwgZ3JvdXApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaWNlTGlzdHMoY29kZT86IHN0cmluZyk6IFByb21pc2U8UHJpY2VMaXN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcmljZUxpc3Q+KFByaWNlTGlzdCwgKGNvZGU/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmljZUxpc3RzKGNvZGUpXG4gICAgfSkuZ2V0VmFsdWUoY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VmF0TGlzdChvbmx5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VmF0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxWYXQ+KFZhdCwgKG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VmF0TGlzdChvbmx5VmFsaWQpXG4gICAgfSkuZ2V0VmFsdWUob25seVZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2VhcmNoVHJhbnNhY3Rpb25zKHJlcXVlc3QpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VWYWx1ZShzZXF1ZW5jZU5hbWU6IFNlcXVlbmNlTmFtZSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcXVlbmNlVmFsdWUoc2VxdWVuY2VOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU1ldGhvZHMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU1ldGhvZD4oRGVsaXZlcnlNZXRob2QsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlPcHRpb25zKCk6IFByb21pc2U8RGVsaXZlcnlPcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8RGVsaXZlcnlPcHRpb24+KERlbGl2ZXJ5T3B0aW9uLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHV1aWQsIHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdDogU2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3BvbnNlQmFzZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh0cmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc3RhbENvZGVSZXRyaWV2YWwocG9zdGNhbENvZGU6IHN0cmluZywgaG91c2VObzogc3RyaW5nKTogUHJvbWlzZTxHZXRQb3N0YWxDb2RlUmV0cmlldmFsT3V0cHV0UGFyYW1zPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc3RhbENvZGVSZXRyaWV2YWwocG9zdGNhbENvZGUsIGhvdXNlTm8pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZShcbiAgICB1dWlkOiBzdHJpbmcsXG4gICAgYXJ0aWNsZUxpbmU6IFRyYW5zYWN0aW9uTGluZVR5cGUsXG4gICAgYXJ0aWNsZU5vOiBzdHJpbmcsXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgd2FyZWhvdXNlTm86IG51bWJlcixcbiAgICBjb21taXNzaW9uQ29kZTogc3RyaW5nLFxuICAgIGlzUmV0dXJuOiBib29sZWFuLFxuICAgIGFib3ZlTGluZU5yOiBudW1iZXIsXG4gICAgYmVsb3dMaW5lTnI6IG51bWJlclxuICApOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKHV1aWQsIGFydGljbGVMaW5lLCBhcnRpY2xlTm8sIGFtb3VudCwgd2FyZWhvdXNlTm8sIGNvbW1pc3Npb25Db2RlLCBpc1JldHVybiwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBzaG93T25Eb2N1bWVudHM6IG51bWJlciwgdGV4dDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgYXJ0aWNsZUJvdW5kOiBib29sZWFuLCByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMaW5lU2VxdWVuY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhYm92ZUxpbmVOcj86IG51bWJlciwgYmVsb3dMaW5lTnI/OiBudW1iZXIpOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlTGluZVNlcXVlbmNlKHV1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh1dWlkLCBsaW5lVXVpZCk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld1F1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHV1aWQsIGxpbmVVdWlkLCBuZXdRdWFudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzOiBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihDb0RvbWFpblZhbHVlLCAoZG9tYWluVmFsdWU6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlKVxuICAgIH0pLmdldFZhbHVlKCdDb21taXNzaW9uQ29kZScsIGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihDb0RvbWFpblZhbHVlLCAoZG9tYWluVmFsdWU6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlKVxuICAgIH0pLmdldFZhbHVlKCdJbk91dENvbGxlY3Rpb24nLCBsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1dWlkOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0UmVsYXRpb25CeVVzZXIodXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KENvRG9tYWluVmFsdWUsIChkb21haW5WYWx1ZTogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGUpXG4gICAgfSkuZ2V0VmFsdWUoJ1RleHRUeXBlcycsIGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhbmRhcmRUZXh0cyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8U3RhbmRhcmRUZXh0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RhbmRhcmRUZXh0cyhsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNhbGVzUGVyc29ucyhkYXRlPzogRGF0ZSk6IFByb21pc2U8U2FsZXNQZXJzb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFNhbGVzUGVyc29uPihTYWxlc1BlcnNvbiwgKGRhdGU/OiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2FsZXNQZXJzb25zKGRhdGUpXG4gICAgfSkuZ2V0VmFsdWUoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGFncyhjYXRlZ29yeTogbnVtYmVyKTogUHJvbWlzZTxUYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFRhZz4oVGFnLCAoY2F0ZWdvcnk6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRhZ3MoY2F0ZWdvcnkpXG4gICAgfSkuZ2V0VmFsdWUoY2F0ZWdvcnkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9uSG9sZENvZGVzKCk6IFByb21pc2U8T25Ib2xkQ29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxPbkhvbGRDb2RlPihPbkhvbGRDb2RlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T25Ib2xkQ29kZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2FyZWhvdXNlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxXYXJlaG91c2U+KFdhcmVob3VzZSwgKGJyYW5jaE5yPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlcyhicmFuY2hOcilcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpOiBQcm9taXNlPENvZGVEZXNjcmlwdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TWV0aG9kcygpOiBQcm9taXNlPFBheW1lbnRNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UGF5bWVudE1ldGhvZD4oUGF5bWVudE1ldGhvZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRNZXRob2RzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkLCBsaW5lVXVpZCwgaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHdhcmVob3VzZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UodXVpZCwgbGluZVV1aWQsIHdhcmVob3VzZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkLCBsaW5lVXVpZCwgcHJpY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlTGlzdDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZCwgbGluZVV1aWQsIHByaWNlTGlzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQsIGxpbmVVdWlkLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBkaXNjb3VudDogbnVtYmVyLCByZWFzb246IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZCwgbGluZVV1aWQsIHR5cGUsIGRpc2NvdW50LCByZWFzb24sIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQsIGxpbmVVdWlkLCBtZXRob2QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkLCBsaW5lVXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQXNzZW1ibHlUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZCwgbGluZVV1aWQsIHRpbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVFZGl0VGltZSh1dWlkLCBsaW5lVXVpZCwgdGltZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYXJ0aWNsZU51bWJlcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZCwgbGluZVV1aWQsIGFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UodXVpZCwgbGluZVV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZ29vZERlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUdvb2REZXNjcmlwdGlvbih1dWlkLCBsaW5lVXVpZCwgZ29vZERlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUodXVpZCwgbGluZVV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkLCBkZWZpbml0aXZlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZCwgbmV3TmF3TnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckludm9pY2VBZGRyZXNzKHV1aWQ6IHN0cmluZywgbmV3TmF3TnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZCwgbmV3TmF3TnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZDogc3RyaW5nLCByZW1hcms6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZCwgcmVtYXJrKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRvRG93blBheVBlcmNlbnRhZ2UodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVG9Eb3duUGF5UGVyY2VudGFnZSh1dWlkLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRvRG93blBheUFtb3VudCh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUb0Rvd25QYXlBbW91bnQodXVpZCwgYW1vdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlKHV1aWQsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCh1dWlkLCBtZXRob2QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHV1aWQ6IHN0cmluZywgb3B0aW9uczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHV1aWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5KHV1aWQ6IHN0cmluZywgYWxsb3dQYXJ0aWFsOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSh1dWlkLCBhbGxvd1BhcnRpYWwpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQ6IHN0cmluZywgYnJhbmNoOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQsIGJyYW5jaCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvcih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZCwgcmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nKHV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50KHV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCh1dWlkLCB0eXBlLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uVG9Eb3duUGF5KHV1aWQ6IHN0cmluZywgZG93blBheW1lbnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Ub0Rvd25QYXkodXVpZCwgZG93blBheW1lbnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZU91dHN0YW5kaW5nRW50cnkodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlT3V0c3RhbmRpbmdFbnRyeSh1dWlkLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwYXltZW50TWV0aG9kQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVQYXltZW50TGlua1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudExpbmtTdGF0dXMocGF5bWVudExpbmtVVUlEOiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRMaW5rU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNSZWNlaXB0U3RhdHVzKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUmVjZWlwdFN0YXR1cyh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdDogR2V0UHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxQdXJjaGFzZVBvcnRhbExpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb246IEdldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24pOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tQdXJjaGFzZVBvcnRhbExpbmVzKHRyYW5zSWRQdXJjaGFzZSwgbGluZUlkKVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycyh0cmFuc0lkOiBudW1iZXIsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnM6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5T3JkZXJTdGF0dXModHJhbnNJZDogbnVtYmVyLCBsaW5lSWQ6IG51bWJlcik6IFByb21pc2U8RGVsaXZlcnlPcmRlclN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU9yZGVyU3RhdHVzKHRyYW5zSWQsIGxpbmVJZClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxTdG9ja1N0aWNrZXJzRW1haWxMYXlvdXRzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsT3JkZXJDb25maXJtYXRpb24oZW1haWxPcmRlckNvbmZpcm1hdGlvbjogRW1haWxPcmRlckNvbmZpcm1hdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbE9yZGVyQ29uZmlybWF0aW9uKGVtYWlsT3JkZXJDb25maXJtYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhOiBTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzKTogUHJvbWlzZTxTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxBdmFpbGFibGVTdG9ja1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG59XG4iXX0=
569
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUV4RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBS3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRzNGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSzVFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQU9yRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUd0RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFHaEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM5RSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQW9CdEQsTUFBTSxPQUFPLDJCQUEyQjtJQUV0QyxZQUNVLGVBQW1ELEVBQ25ELHlCQUFtRCxFQUNuRCwyQkFBdUQsRUFDdkQsd0NBQWlGO1FBSGpGLG9CQUFlLEdBQWYsZUFBZSxDQUFvQztRQUNuRCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ25ELGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNEI7UUFDdkQsNkNBQXdDLEdBQXhDLHdDQUF3QyxDQUF5QztJQUN4RixDQUFDO0lBRVMsT0FBTzs7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0tBQUE7SUFFWSxvQkFBb0IsQ0FBQyxNQUFjOztZQUM5QyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQW9CLGlCQUFpQixFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUU7Z0JBQ25HLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMxRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFTSxzQkFBc0IsQ0FBQyxTQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUF1QixFQUFFLFdBQW1CLEVBQUUsZUFBd0IsRUFBRSxLQUFjO1FBQzFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxDQUFVLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDMUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzVDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFWSxpQkFBaUI7O1lBQzVCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksQ0FBZ0IsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDdEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDakQsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRVksVUFBVSxDQUFDLFdBQW1COztZQUN6QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7S0FBQTtJQUVNLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLENBQWlCLGNBQWMsRUFBRSxHQUFHLEVBQUU7WUFDeEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDbEQsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVZLDBCQUEwQjs7WUFDckMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDM0QsQ0FBQztLQUFBO0lBRU0saUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksQ0FBWSxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQzlFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQ2pELENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFxQixFQUFFLFFBQWdCO1FBQzlELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVZLHFDQUFxQyxDQUFDLGVBQXVCOztZQUN4RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMscUNBQXFDLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckYsQ0FBQztLQUFBO0lBRU0seUJBQXlCLENBQUMsSUFBcUIsRUFBRSxhQUFxQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxhQUFxQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLG1CQUFtQixDQUFDLE9BQWUsRUFBRSxPQUFlO1FBQ3pELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVZLGdCQUFnQixDQUFDLE1BQWUsRUFBRSxLQUFjOztZQUMzRCxNQUFNLE1BQU0sR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxLQUFLLEVBQUUsS0FBSzthQUNiLENBQUE7WUFDRCxPQUFPLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLENBQWUsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM5RyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQzdELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztLQUFBO0lBRVksYUFBYSxDQUFDLElBQWE7O1lBQ3RDLE9BQU8sSUFBSSxDQUFDLHdDQUF3QyxDQUFDLFlBQVksQ0FBWSxTQUFTLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRTtnQkFDeEcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqRCxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztLQUFBO0lBRVksVUFBVSxDQUFDLFlBQXFCLEtBQUs7O1lBQ2hELE9BQU8sSUFBSSxDQUFDLHdDQUF3QyxDQUFDLFlBQVksQ0FBTSxHQUFHLEVBQUUsQ0FBQyxZQUFxQixLQUFLLEVBQUUsRUFBRTtnQkFDekcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNuRCxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQztLQUFBO0lBRVksa0JBQWtCLENBQUMsT0FBcUM7O1lBQ25FLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN6RCxDQUFDO0tBQUE7SUFFWSxnQkFBZ0IsQ0FBQyxZQUEwQjs7WUFDdEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELENBQUM7S0FBQTtJQUVZLGtCQUFrQjs7WUFDN0IsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxDQUFpQixjQUFjLEVBQUUsR0FBRyxFQUFFO2dCQUN4RixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtZQUNsRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFWSxrQkFBa0I7O1lBQzdCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksQ0FBaUIsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDeEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUE7WUFDbEQsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQUMsSUFBWSxFQUFFLFVBQWtCOztZQUNwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7S0FBQTtJQUVZLDZCQUE2QixDQUFDLGlDQUF1RTs7WUFDaEgsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDL0YsQ0FBQztLQUFBO0lBRVksc0JBQXNCLENBQUMsV0FBbUIsRUFBRSxPQUFlOztZQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUM3QixJQUFZLEVBQ1osV0FBZ0MsRUFDaEMsU0FBaUIsRUFDakIsTUFBYyxFQUNkLFdBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLFFBQWlCLEVBQ2pCLFdBQW1CLEVBQ25CLFdBQW1COztZQUduQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4SixDQUFDO0tBQUE7SUFFWSx3QkFBd0IsQ0FBQyxJQUFZLEVBQUUsZUFBdUIsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLFlBQXFCLEVBQUUsZ0JBQXdCLEVBQUUsV0FBb0IsRUFBRSxXQUFvQjs7WUFFcE0sT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RKLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFdBQW9CLEVBQUUsV0FBb0I7O1lBRXhHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRixDQUFDO0tBQUE7SUFFWSx3QkFBd0IsQ0FBQyxRQUFnQjs7WUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FBQTtJQUVZLHFCQUFxQixDQUFDLElBQVksRUFBRSxRQUFnQjs7WUFDL0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRSxDQUFDO0tBQUE7SUFHWSw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQjs7WUFDNUYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekYsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQUMsaUJBQWtEOztZQUN0RixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRSxDQUFDO0tBQUE7SUFFWSwwQkFBMEIsQ0FBQyxtQkFBc0Q7O1lBQzVGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlFLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUFDLFlBQW9COztZQUNsRCxPQUFPLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLENBQWdCLGFBQWEsRUFBRSxDQUFDLFdBQW1CLEVBQUUsWUFBb0IsRUFBRSxFQUFFO2dCQUM1SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDOUQsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUFDLFlBQW9COztZQUNsRCxPQUFPLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLENBQWdCLGFBQWEsRUFBRSxDQUFDLFdBQW1CLEVBQUUsWUFBb0IsRUFBRSxFQUFFO2dCQUM1SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDOUQsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9DLENBQUM7S0FBQTtJQUVZLCtCQUErQixDQUFDLE1BQWM7O1lBQ3pELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQUE7SUFFWSxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQjs7WUFDN0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUUsQ0FBQztLQUFBO0lBRVksWUFBWSxDQUFDLFlBQW9COztZQUM1QyxPQUFPLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLENBQWdCLGFBQWEsRUFBRSxDQUFDLFdBQW1CLEVBQUUsWUFBb0IsRUFBRSxFQUFFO2dCQUM1SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3hELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekMsQ0FBQztLQUFBO0lBRVksZ0JBQWdCLENBQUMsWUFBb0I7O1lBQ2hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxDQUFDO0tBQUE7SUFFWSxlQUFlLENBQUMsSUFBVzs7WUFDdEMsT0FBTyxJQUFJLENBQUMsd0NBQXdDLENBQUMsWUFBWSxDQUFjLFdBQVcsRUFBRSxDQUFDLElBQVcsRUFBRSxFQUFFO2dCQUMxRyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ25ELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDO0tBQUE7SUFFWSxPQUFPLENBQUMsUUFBZ0I7O1lBQ25DLE9BQU8sSUFBSSxDQUFDLHdDQUF3QyxDQUFDLFlBQVksQ0FBTSxHQUFHLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUU7Z0JBQy9GLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7S0FBQTtJQUVZLGNBQWM7O1lBQ3pCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksQ0FBYSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNoRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDOUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRVksYUFBYSxDQUFDLFFBQWlCOztZQUMxQyxPQUFPLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLENBQVksU0FBUyxFQUFFLENBQUMsUUFBaUIsRUFBRSxFQUFFO2dCQUM1RyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3JELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixDQUFDO0tBQUE7SUFFWSxzQkFBc0I7O1lBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3ZELENBQUM7S0FBQTtJQUVZLGlCQUFpQjs7WUFDNUIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxDQUFnQixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUN0RixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUNqRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFWSxtQ0FBbUMsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxJQUFZOztZQUMzRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RixDQUFDO0tBQUE7SUFFWSw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxFQUFVOztZQUNuRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRixDQUFDO0tBQUE7SUFFWSw4QkFBOEIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxlQUF1Qjs7WUFDakcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDOUYsQ0FBQztLQUFBO0lBRVksMEJBQTBCLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsS0FBYTs7WUFDbkYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEYsQ0FBQztLQUFBO0lBRVksOEJBQThCLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsU0FBaUI7O1lBQzNGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7S0FBQTtJQUVZLHdCQUF3QixDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLEVBQVU7O1lBQzlFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7S0FBQTtJQUVZLGlDQUFpQyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLElBQWtCLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsSUFBWTs7WUFDL0ksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUcsQ0FBQztLQUFBO0lBRVksbUNBQW1DLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYzs7WUFDN0YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUFBO0lBRVksaUNBQWlDLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsSUFBVTs7WUFDdkYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsQ0FBQztLQUFBO0lBRVksaUNBQWlDLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsSUFBWTs7WUFDekYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsQ0FBQztLQUFBO0lBRVksNkJBQTZCLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsSUFBWTs7WUFDckYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEYsQ0FBQztLQUFBO0lBRVksMENBQTBDLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsYUFBcUI7O1lBQzNHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7S0FBQTtJQUVZLDhCQUE4QixDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFNBQWlCOztZQUMzRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDO0tBQUE7SUFFWSxvQ0FBb0MsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxlQUF1Qjs7WUFDdkcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG9DQUFvQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEcsQ0FBQztLQUFBO0lBRVksbUNBQW1DLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsSUFBWTs7WUFDM0YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEYsQ0FBQztLQUFBO0lBRVksaUNBQWlDLENBQUMsSUFBWSxFQUFFLFVBQW1COztZQUM5RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQWlDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7S0FBQTtJQUVZLDJCQUEyQixDQUFDLElBQVksRUFBRSxRQUFnQjs7WUFDckUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRSxDQUFDO0tBQUE7SUFFWSwwQkFBMEIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7O1lBQ3BFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekUsQ0FBQztLQUFBO0lBRVksbUNBQW1DLENBQUMsSUFBWSxFQUFFLElBQVU7O1lBQ3ZFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUUsQ0FBQztLQUFBO0lBRVksNkJBQTZCLENBQUMsSUFBWSxFQUFFLE1BQWM7O1lBQ3JFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUUsQ0FBQztLQUFBO0lBRVksZ0NBQWdDLENBQUMsSUFBWSxFQUFFLFNBQWlCOztZQUMzRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7S0FBQTtJQUVZLHdDQUF3QyxDQUFDLElBQVksRUFBRSxTQUFpQjs7WUFDbkYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHdDQUF3QyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDO0tBQUE7SUFFWSwrQkFBK0IsQ0FBQyxJQUFZLEVBQUUsTUFBYzs7WUFDdkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLCtCQUErQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxDQUFDO0tBQUE7SUFFWSwyQkFBMkIsQ0FBQyxJQUFZLEVBQUUsTUFBYzs7WUFDbkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQUE7SUFFWSw0Q0FBNEMsQ0FBQyxJQUFZLEVBQUUsSUFBVTs7WUFDaEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDRDQUE0QyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RixDQUFDO0tBQUE7SUFFWSxxQ0FBcUMsQ0FBQyxJQUFZLEVBQUUsTUFBYzs7WUFDN0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRixDQUFDO0tBQUE7SUFFWSxzQ0FBc0MsQ0FBQyxJQUFZLEVBQUUsT0FBaUI7O1lBQ2pGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEYsQ0FBQztLQUFBO0lBRVksc0NBQXNDLENBQUMsSUFBWSxFQUFFLFlBQXFCOztZQUNyRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0NBQXNDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pGLENBQUM7S0FBQTtJQUVZLDZCQUE2QixDQUFDLElBQVksRUFBRSxNQUFjOztZQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLENBQUM7S0FBQTtJQUVZLHFDQUFxQyxDQUFDLElBQVksRUFBRSxRQUFnQjs7WUFDL0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRixDQUFDO0tBQUE7SUFFWSxnQ0FBZ0MsQ0FBQyxJQUFZLEVBQUUsSUFBWTs7WUFDdEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdDQUFnQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQUE7SUFFWSwrQkFBK0IsQ0FBQyxJQUFZLEVBQUUsSUFBa0IsRUFBRSxNQUFjOztZQUMzRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsK0JBQStCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRixDQUFDO0tBQUE7SUFFWSxnQ0FBZ0MsQ0FBQyxJQUFZLEVBQUUsV0FBbUI7O1lBQzdFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEYsQ0FBQztLQUFBO0lBRVksc0JBQXNCLENBQUMsSUFBWSxFQUFFLE1BQWM7O1lBQzlELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUFBO0lBRVksOEJBQThCLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxpQkFBeUI7O1lBQ2pHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDOUYsQ0FBQztLQUFBO0lBRVksb0JBQW9CLENBQUMsZUFBdUI7O1lBQ3ZELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRSxDQUFDO0tBQUE7SUFFWSxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDaEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRSxDQUFDO0tBQUE7SUFFWSxnQ0FBZ0MsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDM0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRixDQUFDO0tBQUE7SUFFWSw0QkFBNEIsQ0FBQyxPQUE0Qzs7WUFDcEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7S0FBQTtJQUVZLHNDQUFzQyxDQUFDLE9BQXNEOztZQUN4RyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0NBQXNDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsQ0FBQztLQUFBO0lBRVksc0JBQXNCLENBQUMsT0FBOEI7O1lBQ2hFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RCxDQUFDO0tBQUE7SUFFWSx5QkFBeUIsQ0FBQyxrQkFBc0M7O1lBQzNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7S0FBQTtJQUVZLHlCQUF5QixDQUFDLHlCQUF1RDs7WUFDNUYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbkYsQ0FBQztLQUFBO0lBRVksdUJBQXVCLENBQUMsZUFBdUIsRUFBRSxNQUFjOztZQUMxRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlFLENBQUM7S0FBQTtJQUVNLHdCQUF3QixDQUFDLE9BQWUsRUFBRSxrQ0FBMkM7UUFDMUYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFWSxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDakUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyRSxDQUFDO0tBQUE7SUFFWSw0QkFBNEIsQ0FBQyxlQUF1Qjs7WUFDL0QsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEYsQ0FBQztLQUFBO0lBRVksc0JBQXNCLENBQUMsc0JBQThDOztZQUNoRixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25GLENBQUM7S0FBQTtJQUVZLHdCQUF3QixDQUFDLElBQStCOztZQUNuRSxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxDQUFDO0tBQUE7SUFFWSw2Q0FBNkMsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDeEYsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsNkNBQTZDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25HLENBQUM7S0FBQTtJQUVZLDBCQUEwQixDQUFDLE9BQTBDOztZQUNoRixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQUE7SUFFWSxvQ0FBb0MsQ0FBQyxPQUFvRDs7WUFDcEcsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsb0NBQW9DLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEYsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQUMsT0FBZSxFQUFFLE1BQWM7O1lBQ25FLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5RSxDQUFDO0tBQUE7SUFFWSxtQ0FBbUMsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDOUUsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsbUNBQW1DLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLENBQUM7S0FBQTs7OztZQXBkRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTVCTyxrQ0FBa0M7WUFDbEMsd0JBQXdCO1lBSHhCLDBCQUEwQjtZQUMxQix1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW1cIjtcbmltcG9ydCB7Q291bnRyeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvXCI7XG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bVwiO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvXCI7XG5pbXBvcnQge1NldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zZXQtdHJhbnNhY3Rpb24tZGVsaXZlcnktb3B0aW9ucy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0dldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1saW5lLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYXJ0aWNsZS13YXJlaG91c2UuYm9cIjtcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1mdWxsLW9iamVjdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblJlc3BvbnNlQmFzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1yZXNwb25zZS1iYXNlLmJvXCI7XG5pbXBvcnQge1N0YW5kYXJkVGV4dH0gZnJvbSBcIi4uL21vZGVsL3N0YW5kYXJkLXRleHRcIjtcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1ncm91cC5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xuaW1wb3J0IHtDYXNoUmVnaXN0ZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3RlclwiO1xuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdFwiO1xuaW1wb3J0IHtWYXR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0XCI7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2Rpc2NvdW50LXR5cGUuZW51bVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC12aWV3LXJlcXVlc3RcIjtcbmltcG9ydCB7T25Ib2xkQ29kZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vbi1ob2xkLWNvZGUuYm9cIjtcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtDb2RlRGVzY3JpcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvblwiO1xuaW1wb3J0IHtSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0dvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXJlY2VpcHQtc3RhdHVzLXdpdGgtaGlzdG9yeS5ib1wiO1xuaW1wb3J0IHtSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BheW1lbnRNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1tZXRob2QuYm9cIjtcbmltcG9ydCB7R2V0UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wdXJjaGFzZS1wb3J0YWwtbGluZVwiO1xuaW1wb3J0IHtQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm9cIjtcbmltcG9ydCB7Q3JlYXRlUGF5bWVudExpbmtSZXN1bHR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXBheW1lbnQtbGluay1yZXN1bHQuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gXCIuLi9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0XCI7XG5pbXBvcnQge1Jlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLWhlYWRlci1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BheW1lbnRMaW5rU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbGluay1zdGF0dXMuYm9cIjtcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2V9IGZyb20gXCIuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1tdWx0aXBsZS1jYWNoZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZX0gZnJvbSBcIi4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSBcIi4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LXNpbmdsZS1jYWNoZS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLW9yZGVyLWNvbmZpcm1hdGlvblwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxvY2tSZXN1bHR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbG9jay1yZXN1bHQuYm9cIjtcbmltcG9ydCB7UHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcml2YWN5LXNldHRpbmcuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm9cIjtcbmltcG9ydCB7RGF0YVNlcnZpY2VSZXNwb25zZURhdGF9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YVwiO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ib1wiO1xuaW1wb3J0IHtUYWd9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWdcIjtcbmltcG9ydCB7RGVsaXZlcnlPcmRlclN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcmRlci1zdGF0dXMuYm9cIjtcbmltcG9ydCB7U3RvY2tTdGlja2Vyc0VtYWlsTGF5b3V0c30gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvbW9kZWwvcmVwb3J0L3N0b2NrLXN0aWNrZXJzLWVtYWlsLWxheW91dHMuYm9cIjtcbmltcG9ydCB7U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c30gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvbW9kZWwvcmVwb3J0L3N0b2NrLXN0aWNrZXJzLXByaW50LWxheW91dHMuYm9cIjtcbmltcG9ydCB7RW1haWxPcmRlckNvbmZpcm1hdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQvZW1haWwtb3JkZXItY29uZmlybWF0aW9uXCI7XG5pbXBvcnQge0F2YWlsYWJsZVN0b2NrfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2F2YWlsYWJsZS1zdG9jay5ib1wiO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge0dvb2RzQWxsb2NhdGlvblN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1hbGxvY2F0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtcbiAgR29vZHNBbGxvY2F0aW9uU3RhdHVzV2l0aEhpc3Rvcnlcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1hbGxvY2F0aW9uLXN0YXR1cy13aXRoLWhpc3RvcnkuYm9cIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbm5lY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxBcnRpY2xlRnVsbE9iamVjdD4oQXJ0aWNsZUZ1bGxPYmplY3QsIGdvb2RJZCwoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R29vZElkRnJvbUFydGljbGVOcihhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTaW5nbGVJbWFnZShub2RlSWQ6IG51bWJlciB8IHN0cmluZywgcHVibGljYXRpb246IG51bWJlciwgaW5jbHVkZU1pbWV0eXBlOiBib29sZWFuLCB0aHVtYjogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNpbmdsZUltYWdlKG5vZGVJZCwgcHVibGljYXRpb24sIGluY2x1ZGVNaW1ldHlwZSwgdGh1bWIpO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cmllcygpOiBQcm9taXNlPENvdW50cnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q291bnRyeT4oQ291bnRyeSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvdW50cmllcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21lckdyb3VwcygpOiBQcm9taXNlPEN1c3RvbWVyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q3VzdG9tZXJHcm91cD4oQ3VzdG9tZXJHcm91cCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEN1c3RvbWVyR3JvdXBzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvdW50cnkoY291bnRyeUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q291bnRyeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJ5KGNvdW50cnlDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTxQcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcml2YWN5U2V0dGluZz4oUHJpdmFjeVNldHRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcml2YWN5U2V0dGluZ3MoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVsYXRpb25Qcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTxSZWxhdGlvblByaXZhY3lTZXR0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25Qcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZXRpbmdDb2RlcygpOiBQcm9taXNlPE1hcmtldGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxNYXJrZXRpbmc+KE1hcmtldGluZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE1hcmtldGluZ0NvZGVzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVRyYW5zYWN0aW9uKGtpbmQ6IFRyYW5zYWN0aW9uS2luZCwgYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlVHJhbnNhY3Rpb24oa2luZCwgYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTGluZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgbG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkOiBudW1iZXIsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25Mb2NrUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZCwgdmVyc2lvbik7XG4gIH1cblxuICBwdWJsaWMgY29tbWl0KCk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hSZWdpc3RlcnMoYnJhbmNoPzogc3RyaW5nLCBncm91cD86IG51bWJlcik6IFByb21pc2U8Q2FzaFJlZ2lzdGVyW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIGdyb3VwOiBncm91cFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoUmVnaXN0ZXI+KENhc2hSZWdpc3RlciwgKGJyYW5jaCwgZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaCwgZ3JvdXApXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoLCBncm91cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VMaXN0cyhjb2RlPzogc3RyaW5nKTogUHJvbWlzZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaWNlTGlzdD4oUHJpY2VMaXN0LCAoY29kZT86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlTGlzdHMoY29kZSlcbiAgICB9KS5nZXRWYWx1ZShjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYXRMaXN0KG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRWYXRMaXN0KG9ubHlWYWxpZClcbiAgICB9KS5nZXRWYWx1ZShvbmx5VmFsaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZTogU2VxdWVuY2VOYW1lKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VxdWVuY2VWYWx1ZShzZXF1ZW5jZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5TWV0aG9kcygpOiBQcm9taXNlPERlbGl2ZXJ5TWV0aG9kW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5TWV0aG9kPihEZWxpdmVyeU1ldGhvZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxEZWxpdmVyeU9wdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU9wdGlvbj4oRGVsaXZlcnlPcHRpb24sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU9wdGlvbnMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZCwgcmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzcG9uc2VCYXNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZTogc3RyaW5nLCBob3VzZU5vOiBzdHJpbmcpOiBQcm9taXNlPEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZSwgaG91c2VObyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVHJhbnNhY3Rpb25MaW5lKFxuICAgIHV1aWQ6IHN0cmluZyxcbiAgICBhcnRpY2xlTGluZTogVHJhbnNhY3Rpb25MaW5lVHlwZSxcbiAgICBhcnRpY2xlTm86IHN0cmluZyxcbiAgICBhbW91bnQ6IG51bWJlcixcbiAgICB3YXJlaG91c2VObzogbnVtYmVyLFxuICAgIGNvbW1pc3Npb25Db2RlOiBzdHJpbmcsXG4gICAgaXNSZXR1cm46IGJvb2xlYW4sXG4gICAgYWJvdmVMaW5lTnI6IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyXG4gICk6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgYXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBhcnRpY2xlQm91bmQ6IGJvb2xlYW4sIHJlZkFydGljbGVMaW5lTnI6IG51bWJlciwgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTZXF1ZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VMaW5lU2VxdWVuY2UodXVpZCwgbGluZVV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHV1aWQsIGxpbmVVdWlkKTtcbiAgfVxuXG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3UXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZCwgbGluZVV1aWQsIG5ld1F1YW50aXR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXM6IFJlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlczogUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0hlYWRlclJlYXNvbihwZW5kaW5nSGVhZGVyVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KENvRG9tYWluVmFsdWUsIChkb21haW5WYWx1ZTogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvbW1pc3Npb25Db2RlcyhsYW5ndWFnZUNvZGUpXG4gICAgfSkuZ2V0VmFsdWUoJ0NvbW1pc3Npb25Db2RlJywgbGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KENvRG9tYWluVmFsdWUsIChkb21haW5WYWx1ZTogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihsYW5ndWFnZUNvZGUpXG4gICAgfSkuZ2V0VmFsdWUoJ0luT3V0Q29sbGVjdGlvbicsIGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uQnlVc2VyKHV1aWQ6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRSZWxhdGlvbkJ5VXNlcih1dWlkLCB1c2VybmFtZSwgcGFzc3dvcmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oQ29Eb21haW5WYWx1ZSwgKGRvbWFpblZhbHVlOiBzdHJpbmcsIGxhbmd1YWdlQ29kZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGV4dFR5cGVzKGxhbmd1YWdlQ29kZSlcbiAgICB9KS5nZXRWYWx1ZSgnVGV4dFR5cGVzJywgbGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTdGFuZGFyZFRleHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2FsZXNQZXJzb25zKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxTYWxlc1BlcnNvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8U2FsZXNQZXJzb24+KFNhbGVzUGVyc29uLCAoZGF0ZT86IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTYWxlc1BlcnNvbnMoZGF0ZSlcbiAgICB9KS5nZXRWYWx1ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYWdzKGNhdGVnb3J5OiBudW1iZXIpOiBQcm9taXNlPFRhZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VGFnPihUYWcsIChjYXRlZ29yeTogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGFncyhjYXRlZ29yeSlcbiAgICB9KS5nZXRWYWx1ZShjYXRlZ29yeSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T25Ib2xkQ29kZXMoKTogUHJvbWlzZTxPbkhvbGRDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9uSG9sZENvZGU+KE9uSG9sZENvZGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPbkhvbGRDb2RlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXYXJlaG91c2VzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFdhcmVob3VzZT4oV2FyZWhvdXNlLCAoYnJhbmNoTnI/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXYXJlaG91c2VzKGJyYW5jaE5yKVxuICAgIH0pLmdldFZhbHVlKGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk6IFByb21pc2U8Q29kZURlc2NyaXB0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRNZXRob2RzKCk6IFByb21pc2U8UGF5bWVudE1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQYXltZW50TWV0aG9kPihQYXltZW50TWV0aG9kLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQsIGxpbmVVdWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyKHV1aWQsIGxpbmVVdWlkLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgd2FyZWhvdXNlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkLCBsaW5lVXVpZCwgd2FyZWhvdXNlTnVtYmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQsIGxpbmVVdWlkLCBwcmljZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkLCBsaW5lVXVpZCwgcHJpY2VMaXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZCwgbGluZVV1aWQsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCh1dWlkLCBsaW5lVXVpZCwgdHlwZSwgZGlzY291bnQsIHJlYXNvbiwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZCwgbGluZVV1aWQsIG1ldGhvZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQsIGxpbmVVdWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSh1dWlkLCBsaW5lVXVpZCwgdGltZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQsIGxpbmVVdWlkLCB0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkLCBsaW5lVXVpZCwgYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBnb29kRGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQsIGxpbmVVdWlkLCBnb29kRGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSh1dWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkOiBzdHJpbmcsIHJlbWFyazogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkLCByZW1hcmspO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlKHV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlKHV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVG9Eb3duUGF5UGVyY2VudGFnZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUb0Rvd25QYXlQZXJjZW50YWdlKHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVG9Eb3duUGF5QW1vdW50KHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRvRG93blBheUFtb3VudCh1dWlkLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCh1dWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHV1aWQsIG1ldGhvZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModXVpZDogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModXVpZCwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZDogc3RyaW5nLCBhbGxvd1BhcnRpYWw6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5KHV1aWQsIGFsbG93UGFydGlhbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2godXVpZDogc3RyaW5nLCBicmFuY2g6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2godXVpZCwgYnJhbmNoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yKHV1aWQ6IHN0cmluZywgcmVsYXRpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvcih1dWlkLCByZWxhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcodXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nKHV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50KHV1aWQsIHR5cGUsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Ub0Rvd25QYXkodXVpZDogc3RyaW5nLCBkb3duUGF5bWVudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblRvRG93blBheSh1dWlkLCBkb3duUGF5bWVudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlT3V0c3RhbmRpbmdFbnRyeSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVPdXRzdGFuZGluZ0VudHJ5KHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBheW1lbnRNZXRob2RDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZVBheW1lbnRMaW5rUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkLCBhbW91bnQsIHBheW1lbnRNZXRob2RDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TGlua1N0YXR1cyhwYXltZW50TGlua1VVSUQ6IHN0cmluZyk6IFByb21pc2U8UGF5bWVudExpbmtTdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudExpbmtTdGF0dXMocGF5bWVudExpbmtVVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1JlY2VpcHRTdGF0dXModHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNSZWNlaXB0U3RhdHVzKHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0OiBHZXRQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPFB1cmNoYXNlUG9ydGFsTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmU6IFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbjogR2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbihwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrUHVyY2hhc2VQb3J0YWxMaW5lcyh0cmFuc0lkUHVyY2hhc2U6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlLCBsaW5lSWQpXG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQ6IG51bWJlciwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyczogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUNvbW1pc3Npb25PcmRlcnModHJhbnNJZCwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlPcmRlclN0YXR1cyh0cmFuc0lkOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxEZWxpdmVyeU9yZGVyU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5T3JkZXJTdGF0dXModHJhbnNJZCwgbGluZUlkKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFN0b2NrU3RpY2tlcnNFbWFpbExheW91dHNbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxPcmRlckNvbmZpcm1hdGlvbihlbWFpbE9yZGVyQ29uZmlybWF0aW9uOiBFbWFpbE9yZGVyQ29uZmlybWF0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsT3JkZXJDb25maXJtYXRpb24oZW1haWxPcmRlckNvbmZpcm1hdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGE6IFN0b2NrU3RpY2tlcnNQcmludExheW91dHMpOiBQcm9taXNlPFN0b2NrU3RpY2tlcnNQcmludExheW91dHNbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdG9ja1N0aWNrZXJUZW1wbGF0ZXMoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXZhaWxhYmxlU3RvY2tHcm91cGVkQnlXTEJTQnlUcmFuc0lkTGluZU5yKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEF2YWlsYWJsZVN0b2NrW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tHcm91cGVkQnlXTEJTQnlUcmFuc0lkTGluZU5yKHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc0FsbG9jYXRpb25TdGF0dXModHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNBbGxvY2F0aW9uU3RhdHVzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzQWxsb2NhdGlvblN0YXR1cyh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzQWxsb2NhdGlvblN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzQWxsb2NhdGlvblN0YXR1c1dpdGhIaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzQWxsb2NhdGlvblN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxufVxuIl19
@@ -25,10 +25,11 @@ export class TransactionEventService {
25
25
  this.generateCommissionOrders = new Subject();
26
26
  this.allowPartialDeliveryChanged = new Subject();
27
27
  this.connectionInitialized = new BehaviorSubject(false);
28
+ this.createTransaction = new Subject();
28
29
  }
29
30
  }
30
31
  TransactionEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionEventService_Factory() { return new TransactionEventService(); }, token: TransactionEventService, providedIn: "root" });
31
32
  TransactionEventService.decorators = [
32
33
  { type: Injectable, args: [{ providedIn: "root" },] }
33
34
  ];
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUTlDLE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFa0IsbUJBQWMsR0FBNkQsSUFBSSxPQUFPLEVBQW1ELENBQUM7UUFDMUksOEJBQXlCLEdBQ3ZDLElBQUksT0FBTyxFQUFpSCxDQUFDO1FBQy9HLDJCQUFzQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzVELGFBQVEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM5QyxtQ0FBOEIsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN4RSxzQ0FBaUMsR0FBd0MsSUFBSSxPQUFPLEVBQThCLENBQUM7UUFDbkgsbUJBQWMsR0FBOEQsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDNUksZ0JBQVcsR0FBOEQsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDekkscUJBQWdCLEdBQTJGLElBQUksT0FBTyxFQUFpRixDQUFDO1FBQ3hNLGtCQUFhLEdBQTRFLElBQUksT0FBTyxFQUFrRSxDQUFDO1FBQ3ZLLHVCQUFrQixHQUFvRCxJQUFJLE9BQU8sRUFBd0MsQ0FBQztRQUMxSCwyQkFBc0IsR0FBNEIsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDaEYsc0JBQWlCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDdkQsa0JBQWEsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN2RCxnQ0FBMkIsR0FBc0MsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDekcsbUJBQWMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUMxRCwyQkFBc0IsR0FBdUcsSUFBSSxPQUFPLEVBQTZGLENBQUM7UUFDdE8sa0JBQWEsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUE7UUFDaEYsd0NBQW1DLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDL0UsNkJBQXdCLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDcEUsZ0NBQTJCLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdkUsMEJBQXFCLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0tBQ3ZHOzs7O1lBekJBLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5pbXBvcnQge1Njcm9sbH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xuaW1wb3J0IHtHb29kc1JlY2VpcHRTdGF0dXNXaXRoSGlzdG9yeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1yZWNlaXB0LXN0YXR1cy13aXRoLWhpc3RvcnkuYm9cIjtcbmltcG9ydCB7QnVzaW5lc3NPYmplY3R9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3RcIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46IFwicm9vdFwifSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUb0NhcnRCeVNrdTogU3ViamVjdDx7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwb3BDYXJ0OiBib29sZWFufT4gPSBuZXcgU3ViamVjdDx7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwb3BDYXJ0OiBib29sZWFufT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFRvQ2FydEJ5U2VsZWN0b3JSZXN1bHQ6IFN1YmplY3Q8e3NlbGVjdG9yUmVzdWx0OiB7Z29vZElkOiBudW1iZXIsIGJhc2VHb29kSWQ6IG51bWJlciwgc2VsZWN0b3JEYXRhOiBhbnksIHF1YW50aXR5OiBudW1iZXJ9LCBwb3BDYXJ0OiBib29sZWFufT4gPVxuICAgIG5ldyBTdWJqZWN0PHtzZWxlY3RvclJlc3VsdDoge2dvb2RJZDogbnVtYmVyLCBiYXNlR29vZElkOiBudW1iZXIsIHNlbGVjdG9yRGF0YTogYW55LCBxdWFudGl0eTogbnVtYmVyfSwgcG9wQ2FydDogYm9vbGVhbn0+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuU2hvcHBpbmdDYXJ0TW9kdWxlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2dlZEluOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZE5ld1VzZXJUb1Nob3BwaW5nQ2FydE1vZHVsZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVXNlclJlbGF0aW9uU2hvcHBpbmdDYXJ0TW9kdWxlOiBTdWJqZWN0PHt1c2VyOiBzdHJpbmcsIHB3OiBzdHJpbmd9PiA9IG5ldyBTdWJqZWN0PHt1c2VyOiBzdHJpbmcsIHB3OiBzdHJpbmd9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkQXJ0aWNsZUxpbmU6IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHtsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFRleHRMaW5lOiBTdWJqZWN0PHtsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4gPSBuZXcgU3ViamVjdDx7bGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRBcnRpY2xlTGluZUF0OiBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVGV4dExpbmVBdDogU3ViamVjdDx7dGV4dDogc3RyaW5nLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4gPSBuZXcgU3ViamVjdDx7dGV4dDogc3RyaW5nLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZUxpbmVTZXF1ZW5jZTogU3ViamVjdDwoe2Zyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXJ9KT4gPSBuZXcgU3ViamVjdDx7ZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcn0+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbkxpbmVDbGlja2VkOiBTdWJqZWN0PEJ1c2luZXNzT2JqZWN0PiA9IG5ldyBTdWJqZWN0PEJ1c2luZXNzT2JqZWN0PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmlnaHRTaWRlYmFyQ2xvc2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2Nyb2xsQ29udGVudDogU3ViamVjdDxTY3JvbGw+ID0gbmV3IFN1YmplY3Q8U2Nyb2xsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWl0UmVjZWl2ZVB1cmNoYXNlT3JkZXJzOiBTdWJqZWN0PHtkYXRlOiBEYXRlLCBpZDogc3RyaW5nfT4gPSBuZXcgU3ViamVjdDx7ZGF0ZTogRGF0ZSwgaWQ6IHN0cmluZ30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RBbGxMaW5lczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbkxpbmVDaGFuZ2VkOiBTdWJqZWN0PHt0cmFuc2FjdGlvbkxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8sIGdvb2RzUmVjZWlwdFN0YXR1czogR29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnl9PiA9IG5ldyBTdWJqZWN0PHt0cmFuc2FjdGlvbkxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8sIGdvb2RzUmVjZWlwdFN0YXR1czogR29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnl9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlblNpZGVQYW5lbDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KClcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvclB1cmNoYXNlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGdlbmVyYXRlQ29tbWlzc2lvbk9yZGVyczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhbGxvd1BhcnRpYWxEZWxpdmVyeUNoYW5nZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbkluaXRpYWxpemVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbn1cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUTlDLE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFa0IsbUJBQWMsR0FBNkQsSUFBSSxPQUFPLEVBQW1ELENBQUM7UUFDMUksOEJBQXlCLEdBQ3ZDLElBQUksT0FBTyxFQUFpSCxDQUFDO1FBQy9HLDJCQUFzQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzVELGFBQVEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM5QyxtQ0FBOEIsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN4RSxzQ0FBaUMsR0FBd0MsSUFBSSxPQUFPLEVBQThCLENBQUM7UUFDbkgsbUJBQWMsR0FBOEQsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDNUksZ0JBQVcsR0FBOEQsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDekkscUJBQWdCLEdBQTJGLElBQUksT0FBTyxFQUFpRixDQUFDO1FBQ3hNLGtCQUFhLEdBQTRFLElBQUksT0FBTyxFQUFrRSxDQUFDO1FBQ3ZLLHVCQUFrQixHQUFvRCxJQUFJLE9BQU8sRUFBd0MsQ0FBQztRQUMxSCwyQkFBc0IsR0FBNEIsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDaEYsc0JBQWlCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDdkQsa0JBQWEsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN2RCxnQ0FBMkIsR0FBc0MsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDekcsbUJBQWMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUMxRCwyQkFBc0IsR0FBOEMsSUFBSSxPQUFPLEVBQW9DLENBQUM7UUFDcEgsa0JBQWEsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUE7UUFDaEYsd0NBQW1DLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDL0UsNkJBQXdCLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDcEUsZ0NBQTJCLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdkUsMEJBQXFCLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLHNCQUFpQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0tBQ3hFOzs7O1lBMUJBLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5pbXBvcnQge1Njcm9sbH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2J1c2luZXNzLW9iamVjdFwiO1xuaW1wb3J0IHtFeHRlbmRlZFRyYW5zYWN0aW9uTGluZVZpZXdNb2RlbH0gZnJvbSBcIi4uL21vZGVsL2V4dGVuZGVkLXRyYW5zYWN0aW9uLWxpbmUtdmlldy1tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogXCJyb290XCJ9KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFRvQ2FydEJ5U2t1OiBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59PiA9IG5ldyBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdDogU3ViamVjdDx7c2VsZWN0b3JSZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0sIHBvcENhcnQ6IGJvb2xlYW59PiA9XG4gICAgbmV3IFN1YmplY3Q8e3NlbGVjdG9yUmVzdWx0OiB7Z29vZElkOiBudW1iZXIsIGJhc2VHb29kSWQ6IG51bWJlciwgc2VsZWN0b3JEYXRhOiBhbnksIHF1YW50aXR5OiBudW1iZXJ9LCBwb3BDYXJ0OiBib29sZWFufT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5TaG9wcGluZ0NhcnRNb2R1bGU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW46IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkTmV3VXNlclRvU2hvcHBpbmdDYXJ0TW9kdWxlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRVc2VyUmVsYXRpb25TaG9wcGluZ0NhcnRNb2R1bGU6IFN1YmplY3Q8e3VzZXI6IHN0cmluZywgcHc6IHN0cmluZ30+ID0gbmV3IFN1YmplY3Q8e3VzZXI6IHN0cmluZywgcHc6IHN0cmluZ30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRBcnRpY2xlTGluZTogU3ViamVjdDx7bGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVGV4dExpbmU6IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHtsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZEFydGljbGVMaW5lQXQ6IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUZXh0TGluZUF0OiBTdWJqZWN0PHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlTGluZVNlcXVlbmNlOiBTdWJqZWN0PCh7ZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcn0pPiA9IG5ldyBTdWJqZWN0PHtmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyfT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uTGluZUNsaWNrZWQ6IFN1YmplY3Q8QnVzaW5lc3NPYmplY3Q+ID0gbmV3IFN1YmplY3Q8QnVzaW5lc3NPYmplY3Q+KCk7XG4gIHB1YmxpYyByZWFkb25seSByaWdodFNpZGViYXJDbG9zZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzY3JvbGxDb250ZW50OiBTdWJqZWN0PFNjcm9sbD4gPSBuZXcgU3ViamVjdDxTY3JvbGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb21taXRSZWNlaXZlUHVyY2hhc2VPcmRlcnM6IFN1YmplY3Q8e2RhdGU6IERhdGUsIGlkOiBzdHJpbmd9PiA9IG5ldyBTdWJqZWN0PHtkYXRlOiBEYXRlLCBpZDogc3RyaW5nfT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbExpbmVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uTGluZUNoYW5nZWQ6IFN1YmplY3Q8RXh0ZW5kZWRUcmFuc2FjdGlvbkxpbmVWaWV3TW9kZWw+ID0gbmV3IFN1YmplY3Q8RXh0ZW5kZWRUcmFuc2FjdGlvbkxpbmVWaWV3TW9kZWw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuU2lkZVBhbmVsOiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzRm9yUHVyY2hhc2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFsbG93UGFydGlhbERlbGl2ZXJ5Q2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlVHJhbnNhY3Rpb246IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xufVxuIl19
@@ -20,6 +20,8 @@ import { TransactionReceiveGoodsLineComponent } from "../component/transaction-l
20
20
  import { TransactionPurchaseLineComponent } from "../component/transaction-line/transaction-purchase-line/transaction-purchase-line.component";
21
21
  import { TransactionQuickAccessOrderPurchaseComponent } from "../component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component";
22
22
  import { TransactionSalesPurchaseButtonBarButtonComponent } from "../component/transaction-button-bar/transaction-button-bar-button/transaction-sales-purchase-button-bar-button.component";
23
+ import { TransactionGoodsAllocationLineComponent } from "../component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.component";
24
+ import { TransactionQuickAccessGoodsAllocationComponent } from "../component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.component";
23
25
  import * as i0 from "@angular/core";
24
26
  export class TransactionMappingService {
25
27
  constructor() {
@@ -35,6 +37,7 @@ export class TransactionMappingService {
35
37
  [TransactionKind.SalesOrder, [
36
38
  { title: 'OVERVIEW', icon: Icon.CartShoppingSolid, category: TransactionTypeCategory.SalesOrderOverview },
37
39
  { title: 'PURCHASE', icon: Icon.PalletBoxesSolid, category: TransactionTypeCategory.SalesOrderPurchase, component: TransactionSalesPurchaseButtonBarButtonComponent },
40
+ { title: 'ALLOCATION', icon: Icon.ShelvesSolid, category: TransactionTypeCategory.SalesOrderAllocation },
38
41
  { title: 'LOGISTICS', icon: Icon.ShelvesSolid, category: TransactionTypeCategory.SalesOrderLogistics },
39
42
  { title: 'PLANNING', icon: Icon.TruckMovingSolid, category: TransactionTypeCategory.SalesOrderPlanning },
40
43
  { title: 'DELIVERY_NOTE', icon: Icon.MemoCircleCheckSolid, category: TransactionTypeCategory.SalesOrderDeliveryNote },
@@ -46,6 +49,7 @@ export class TransactionMappingService {
46
49
  [{ type: TransactionKind.PurchaseOrder, category: TransactionTypeCategory.PurchaseOrderReceivedGoods }, TransactionQuickAccessReceivedGoodsComponent],
47
50
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderOverview }, TransactionQuickAccessOverviewComponent],
48
51
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderPurchase }, TransactionQuickAccessOrderPurchaseComponent],
52
+ [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderAllocation }, TransactionQuickAccessGoodsAllocationComponent],
49
53
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderDeliveryNote }, TransactionQuickAccessOrderDeliveryComponent]
50
54
  ]);
51
55
  this._transactionGridComponent = new Map([
@@ -56,6 +60,7 @@ export class TransactionMappingService {
56
60
  this._transactionLineComponent = new Map([
57
61
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderOverview }, TransactionOverviewLineComponent],
58
62
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderPurchase }, TransactionPurchaseLineComponent],
63
+ [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderAllocation }, TransactionGoodsAllocationLineComponent],
59
64
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderDeliveryNote }, TransactionOrderDeliveryLineComponent],
60
65
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderInvoice }, TransactionOrderDeliveryLineComponent],
61
66
  [{ type: TransactionKind.PurchaseOrder, category: TransactionTypeCategory.PurchaseOrderReceivedGoods }, TransactionReceiveGoodsLineComponent],
@@ -167,4 +172,4 @@ TransactionMappingService.decorators = [
167
172
  providedIn: "root"
168
173
  },] }
169
174
  ];
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFwcGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLW1hcHBpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUkxRixPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSxrSUFBa0ksQ0FBQztBQUN6TCxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSw0SEFBNEgsQ0FBQztBQUNoTCxPQUFPLEVBQ0wsMkNBQTJDLEVBQzVDLE1BQU0saUpBQWlKLENBQUM7QUFDekosT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sMklBQTJJLENBQUM7QUFDbk0sT0FBTyxFQUNMLDJDQUEyQyxFQUM1QyxNQUFNLGlKQUFpSixDQUFDO0FBQ3pKLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDJJQUEySSxDQUFDO0FBRW5NLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsZ0RBQWdELEVBQ2pELE1BQU0seUlBQXlJLENBQUM7QUFFakosT0FBTyxFQUFDLDRDQUE0QyxFQUFDLE1BQU0saUlBQWlJLENBQUM7QUFDN0wsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0scUhBQXFILENBQUM7QUFFNUssT0FBTyxFQUFDLHlDQUF5QyxFQUFDLE1BQU0saUhBQWlILENBQUM7QUFDMUssT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sdUZBQXVGLENBQUM7QUFFcEksT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sNkZBQTZGLENB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QUFFO1lBQ3ZELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUN2QixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNWLE9BQU87YUFDUjtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0saUNBQWlDLENBQUMsSUFBcUI7UUFDNUQsTUFBTSxHQUFHLEdBQTRCO1lBQ25DLElBQUksRUFBRSxJQUFJO1NBQUMsQ0FBQTtRQUNiLElBQUksS0FBK0MsQ0FBQztRQUNwRCxJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDdkIsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDVixPQUFPO2FBQ1I7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7OztZQTVKRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25GaWx0ZXJCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaEdyaWRCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZC1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL3RyYW5zYWN0aW9uLXNlYXJjaC10aWxlLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QdXJjaGFzZU9yZGVyRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXIvdHJhbnNhY3Rpb24tcHVyY2hhc2Utb3JkZXItZmlsdGVyL3RyYW5zYWN0aW9uLXB1cmNoYXNlLW9yZGVyLWZpbHRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNhbGVzT3JkZXJGaWx0ZXJDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLWZpbHRlci90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXIvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uU2VhcmNoUHVyY2hhc2VPcmRlckdyaWRDb21wb25lbnRcclxufSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtcHVyY2hhc2Utb3JkZXItZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtcHVyY2hhc2Utb3JkZXItZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFNhbGVzT3JkZXJHcmlkQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtb3JkZXItZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtb3JkZXItZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtcclxuICBUcmFuc2FjdGlvblNlYXJjaFB1cmNoYXNlT3JkZXJUaWxlQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLXRpbGUvdHJhbnNhY3Rpb24tc2VhcmNoLXB1cmNoYXNlLW9yZGVyLXRpbGUvdHJhbnNhY3Rpb24tc2VhcmNoLXB1cmNoYXNlLW9yZGVyLXRpbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hTYWxlc09yZGVyVGlsZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLXRpbGUvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLXRpbGUvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLXRpbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXJCdXR0b259IGZyb20gXCIuLi9tb2RlbC90cmFuc2FjdGlvbi1iYXItYnV0dG9uXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9IGZyb20gXCIuLi9lbnVtL3RyYW5zYWN0aW9uLXR5cGUtY2F0ZWdvcnkuZW51bVwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlckNvbmZpcm1hdGlvbkNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24vdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWNvbmZpcm1hdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkJhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL3RyYW5zYWN0aW9uLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25RdWlja0FjY2Vzc1JlY2VpdmVkR29vZHNDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1yZWNlaXZlZC1nb29kcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MtcmVjZWl2ZWQtZ29vZHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25RdWlja0FjY2Vzc092ZXJ2aWV3Q29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3ZlcnZpZXcvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW92ZXJ2aWV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL3RyYW5zYWN0aW9uLWdyaWQtYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbk9yZGVyQ29uZmlybWF0aW9uR3JpZENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1ncmlkL3RyYW5zYWN0aW9uLW9yZGVyLWNvbmZpcm1hdGlvbi1ncmlkL3RyYW5zYWN0aW9uLW9yZGVyLWNvbmZpcm1hdGlvbi1ncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZXNHcmlkQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWdyaWQvdHJhbnNhY3Rpb24tbGluZXMtZ3JpZC90cmFuc2FjdGlvbi1saW5lcy1ncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZXNMaW5lQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tbGluZXMtbGluZS1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uT3ZlcnZpZXdMaW5lQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUvdHJhbnNhY3Rpb24tb3ZlcnZpZXctbGluZS90cmFuc2FjdGlvbi1vdmVydmlldy1saW5lLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uT3JkZXJEZWxpdmVyeUxpbmVDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS90cmFuc2FjdGlvbi1vcmRlci1kZWxpdmVyeS1saW5lL3RyYW5zYWN0aW9uLW9yZGVyLWRlbGl2ZXJ5LWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyRGVsaXZlcnlDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1kZWxpdmVyeS90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItZGVsaXZlcnkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWNlaXZlR29vZHNMaW5lQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUvdHJhbnNhY3Rpb24tcmVjZWl2ZS1nb29kcy1saW5lL3RyYW5zYWN0aW9uLXJlY2VpdmUtZ29vZHMtbGluZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblB1cmNoYXNlTGluZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLXB1cmNoYXNlLWxpbmUvdHJhbnNhY3Rpb24tcHVyY2hhc2UtbGluZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJQdXJjaGFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1wdXJjaGFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNhbGVzUHVyY2hhc2VCdXR0b25CYXJCdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tYnV0dG9uLWJhci90cmFuc2FjdGlvbi1idXR0b24tYmFyLWJ1dHRvbi90cmFuc2FjdGlvbi1zYWxlcy1wdXJjaGFzZS1idXR0b24tYmFyLWJ1dHRvbi5jb21wb25lbnRcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25NYXBwaW5nU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1dHRvbkJhclRyYW5zYWN0aW9uOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBUcmFuc2FjdGlvbkJhckJ1dHRvbltdPiA9IG5ldyBNYXA8VHJhbnNhY3Rpb25LaW5kLCBUcmFuc2FjdGlvbkJhckJ1dHRvbltdPihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFtcclxuICAgICAge3RpdGxlOiAnT1ZFUlZJRVcnLCBpY29uOiBJY29uLkNhcnRTaG9wcGluZ1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck92ZXJ2aWV3fSxcclxuICAgICAge3RpdGxlOiAnQ09ORklSTUFUSU9OJywgaWNvbjogSWNvbi5NZW1vQ2lyY2xlQ2hlY2tTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbn0sXHJcbiAgICAgIHt0aXRsZTogJ1RSQU5TUE9SVCcsIGljb246IEljb24uVHJ1Y2tDb250YWluZXJTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJUcmFuc3BvcnR9LFxyXG4gICAgICB7dGl0bGU6ICdSRUNFSVZFRCcsIGljb246IEljb24uQ2FydEZsYXRiZWRCb3hlc1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclJlY2VpdmVkR29vZHN9LFxyXG4gICAgICB7dGl0bGU6ICdJTlZPSUNFX0NIRUNLJywgaWNvbjogSWNvbi5UYWcsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVySW52b2ljZUNoZWNrfSxcclxuICAgICAge3RpdGxlOiAnTUVOVScsIGljb246IEljb24uVGFnLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck1lbnV9XHJcbiAgICBdXSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgW1xyXG4gICAgICB7dGl0bGU6ICdPVkVSVklFVycsIGljb246IEljb24uQ2FydFNob3BwaW5nU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyT3ZlcnZpZXd9LFxyXG4gICAgICB7dGl0bGU6ICdQVVJDSEFTRScsIGljb246IEljb24uUGFsbGV0Qm94ZXNTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQdXJjaGFzZSwgY29tcG9uZW50OiBUcmFuc2FjdGlvblNhbGVzUHVyY2hhc2VCdXR0b25CYXJCdXR0b25Db21wb25lbnR9LFxyXG4gICAgICB7dGl0bGU6ICdMT0dJU1RJQ1MnLCBpY29uOiBJY29uLlNoZWx2ZXNTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJMb2dpc3RpY3N9LFxyXG4gICAgICB7dGl0bGU6ICdQTEFOTklORycsIGljb246IEljb24uVHJ1Y2tNb3ZpbmdTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQbGFubmluZ30sXHJcbiAgICAgIHt0aXRsZTogJ0RFTElWRVJZX05PVEUnLCBpY29uOiBJY29uLk1lbW9DaXJjbGVDaGVja1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckRlbGl2ZXJ5Tm90ZX0sXHJcbiAgICAgIHt0aXRsZTogJ0lOVk9JQ0UnLCBpY29uOiBJY29uLkNhcnRDaGVjaywgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJJbnZvaWNlfVxyXG4gICAgXV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1aWNrQWNjZXNzQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQ7IGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyQ29uZmlybWF0aW9uQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJSZWNlaXZlZEdvb2RzfSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc1JlY2VpdmVkR29vZHNDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc092ZXJ2aWV3Q29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQdXJjaGFzZX0sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlclB1cmNoYXNlQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJEZWxpdmVyeU5vdGV9LCBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJEZWxpdmVyeUNvbXBvbmVudF1cclxuICAgIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2FjdGlvbkdyaWRDb21wb25lbnQ6IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9LCBUeXBlPFRyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQ7IGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPdmVydmlld30sIFRyYW5zYWN0aW9uTGluZXNHcmlkQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbn0sIFRyYW5zYWN0aW9uT3JkZXJDb25maXJtYXRpb25HcmlkQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sIFRyYW5zYWN0aW9uTGluZXNHcmlkQ29tcG9uZW50XVxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uTGluZUNvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25MaW5lc0xpbmVCYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kOyBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9LCBUeXBlPFRyYW5zYWN0aW9uTGluZXNMaW5lQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sIFRyYW5zYWN0aW9uT3ZlcnZpZXdMaW5lQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQdXJjaGFzZX0sIFRyYW5zYWN0aW9uUHVyY2hhc2VMaW5lQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJEZWxpdmVyeU5vdGV9LCBUcmFuc2FjdGlvbk9yZGVyRGVsaXZlcnlMaW5lQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJJbnZvaWNlfSwgVHJhbnNhY3Rpb25PcmRlckRlbGl2ZXJ5TGluZUNvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyUmVjZWl2ZWRHb29kc30sIFRyYW5zYWN0aW9uUmVjZWl2ZUdvb2RzTGluZUNvbXBvbmVudF0sXHJcbiAgICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNhY3Rpb25GaWx0ZXJDb21wb25lbnQ6IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvbkZpbHRlckJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uRmlsdGVyQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcn0sIFRyYW5zYWN0aW9uU2FsZXNPcmRlckZpbHRlckNvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXJ9LCBUcmFuc2FjdGlvblB1cmNoYXNlT3JkZXJGaWx0ZXJDb21wb25lbnRdLFxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uU2VhcmNoR3JpZENvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoR3JpZEJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoR3JpZEJhc2VDb21wb25lbnQ+PihbXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXJ9LCBUcmFuc2FjdGlvblNlYXJjaFNhbGVzT3JkZXJHcmlkQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlcn0sIFRyYW5zYWN0aW9uU2VhcmNoUHVyY2hhc2VPcmRlckdyaWRDb21wb25lbnRdLFxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uU2VhcmNoVGlsZUNvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnQ+PihbXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXJ9LCBUcmFuc2FjdGlvblNlYXJjaFNhbGVzT3JkZXJUaWxlQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlcn0sIFRyYW5zYWN0aW9uU2VhcmNoUHVyY2hhc2VPcmRlclRpbGVDb21wb25lbnRdLFxyXG4gICAgXSk7XHJcblxyXG4gIHB1YmxpYyBnZXRCdXR0b25CYXIodHlwZTogVHJhbnNhY3Rpb25LaW5kKTogVHJhbnNhY3Rpb25CYXJCdXR0b25bXSB7XHJcbiAgICBpZiAodGhpcy5fYnV0dG9uQmFyVHJhbnNhY3Rpb24uaGFzKHR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9idXR0b25CYXJUcmFuc2FjdGlvbi5nZXQodHlwZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UXVpY2tBY2Nlc3NDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkpOiBUeXBlPFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICBjYXRlZ29yeTogY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fcXVpY2tBY2Nlc3NDb21wb25lbnQuZm9yRWFjaCgodiwgdCwgbSkgPT4ge1xyXG4gICAgICBpZiAodC50eXBlID09PSBrZXkudHlwZSAmJiB0LmNhdGVnb3J5ID09PSBrZXkuY2F0ZWdvcnkpIHtcclxuICAgICAgICBlbnRyeSA9IHY7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRyYW5zYWN0aW9uR3JpZENvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSk6IFR5cGU8VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICBjYXRlZ29yeTogY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uR3JpZENvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlICYmIHQuY2F0ZWdvcnkgPT09IGtleS5jYXRlZ29yeSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25MaW5lQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5KTogVHlwZTxUcmFuc2FjdGlvbkxpbmVzTGluZUJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSA9IHtcclxuICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5XHJcbiAgICB9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25MaW5lc0xpbmVCYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uTGluZUNvbXBvbmVudC5mb3JFYWNoKCh2LCB0KSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlICYmIHQuY2F0ZWdvcnkgPT09IGtleS5jYXRlZ29yeSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25GaWx0ZXJDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kKTogVHlwZTxUcmFuc2FjdGlvbkZpbHRlckJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZH0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGV9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25GaWx0ZXJCYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uRmlsdGVyQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUpIHtcclxuICAgICAgICBlbnRyeSA9IHY7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRyYW5zYWN0aW9uU2VhcmNoR3JpZENvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQpOiBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoR3JpZEJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZH0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGV9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlYXJjaEdyaWRDb21wb25lbnQuZm9yRWFjaCgodiwgdCwgbSkgPT4ge1xyXG4gICAgICBpZiAodC50eXBlID09PSBrZXkudHlwZSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25TZWFyY2hUaWxlQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCk6IFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hUaWxlQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSA9IHtcclxuICAgICAgdHlwZTogdHlwZX1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvblNlYXJjaFRpbGVCYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uU2VhcmNoVGlsZUNvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlKSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcbn1cclxuIl19
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFwcGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLW1hcHBpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUkxRixPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSxrSUFBa0ksQ0FBQztBQUN6TCxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSw0SEFBNEgsQ0FBQztBQUNoTCxPQUFPLEVBQ0wsMkNBQTJDLEVBQzVDLE1BQU0saUpBQWlKLENBQUM7QUFDekosT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sMklBQTJJLENBQUM7QUFDbk0sT0FBTyxFQUNMLDJDQUEyQyxFQUM1QyxNQUFNLGlKQUFpSixDQUFDO0FBQ3pKLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDJJQUEySSxDQUFDO0FBRW5NLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsZ0RBQWdELEVBQ2pELE1BQU0seUlBQXlJLENBQUM7QUFFakosT0FBTyxFQUFDLDRDQUE0QyxFQUFDLE1BQU0saUlBQWlJLENBQUM7QUFDN0wsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0scUhBQXFILENBQUM7QUFFNUssT0FBTyxFQUFDLHlDQUF5QyxFQUFDLE1BQU0saUhBQWlILENBQUM7QUFDMUssT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sdUZBQXVGLENBQUM7QUFFcEksT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sNkZBQTZGLENB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRmlsdGVyQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tZmlsdGVyLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tc2VhcmNoLWdyaWQtYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFRpbGVCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1zZWFyY2gtdGlsZS1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUHVyY2hhc2VPcmRlckZpbHRlckNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tZmlsdGVyL3RyYW5zYWN0aW9uLXB1cmNoYXNlLW9yZGVyLWZpbHRlci90cmFuc2FjdGlvbi1wdXJjaGFzZS1vcmRlci1maWx0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TYWxlc09yZGVyRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXIvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyL3RyYW5zYWN0aW9uLXNhbGVzLW9yZGVyLWZpbHRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtcclxuICBUcmFuc2FjdGlvblNlYXJjaFB1cmNoYXNlT3JkZXJHcmlkQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXB1cmNoYXNlLW9yZGVyLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXB1cmNoYXNlLW9yZGVyLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hTYWxlc09yZGVyR3JpZENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25TZWFyY2hQdXJjaGFzZU9yZGVyVGlsZUNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLXNlYXJjaC10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1wdXJjaGFzZS1vcmRlci10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1wdXJjaGFzZS1vcmRlci10aWxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoU2FsZXNPcmRlclRpbGVDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLXNlYXJjaC10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1zYWxlcy1vcmRlci10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1zYWxlcy1vcmRlci10aWxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQmFyQnV0dG9ufSBmcm9tIFwiLi4vbW9kZWwvdHJhbnNhY3Rpb24tYmFyLWJ1dHRvblwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSBmcm9tIFwiLi4vZW51bS90cmFuc2FjdGlvbi10eXBlLWNhdGVnb3J5LmVudW1cIjtcclxuaW1wb3J0IHtcclxuICBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJDb25maXJtYXRpb25Db21wb25lbnRcclxufSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItY29uZmlybWF0aW9uL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NSZWNlaXZlZEdvb2RzQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MtcmVjZWl2ZWQtZ29vZHMvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPdmVydmlld0NvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW92ZXJ2aWV3L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vdmVydmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1ncmlkLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25PcmRlckNvbmZpcm1hdGlvbkdyaWRDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tZ3JpZC90cmFuc2FjdGlvbi1vcmRlci1jb25maXJtYXRpb24tZ3JpZC90cmFuc2FjdGlvbi1vcmRlci1jb25maXJtYXRpb24tZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVzR3JpZENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1ncmlkL3RyYW5zYWN0aW9uLWxpbmVzLWdyaWQvdHJhbnNhY3Rpb24tbGluZXMtZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVzTGluZUJhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL3RyYW5zYWN0aW9uLWxpbmVzLWxpbmUtYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbk92ZXJ2aWV3TGluZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLW92ZXJ2aWV3LWxpbmUvdHJhbnNhY3Rpb24tb3ZlcnZpZXctbGluZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbk9yZGVyRGVsaXZlcnlMaW5lQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUvdHJhbnNhY3Rpb24tb3JkZXItZGVsaXZlcnktbGluZS90cmFuc2FjdGlvbi1vcmRlci1kZWxpdmVyeS1saW5lLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlckRlbGl2ZXJ5Q29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItZGVsaXZlcnkvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUmVjZWl2ZUdvb2RzTGluZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLXJlY2VpdmUtZ29vZHMtbGluZS90cmFuc2FjdGlvbi1yZWNlaXZlLWdvb2RzLWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QdXJjaGFzZUxpbmVDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS90cmFuc2FjdGlvbi1wdXJjaGFzZS1saW5lL3RyYW5zYWN0aW9uLXB1cmNoYXNlLWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyUHVyY2hhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1wdXJjaGFzZS90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItcHVyY2hhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TYWxlc1B1cmNoYXNlQnV0dG9uQmFyQnV0dG9uQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWJ1dHRvbi1iYXIvdHJhbnNhY3Rpb24tYnV0dG9uLWJhci1idXR0b24vdHJhbnNhY3Rpb24tc2FsZXMtcHVyY2hhc2UtYnV0dG9uLWJhci1idXR0b24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25Hb29kc0FsbG9jYXRpb25MaW5lQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWdvb2RzLWFsbG9jYXRpb24tbGluZS90cmFuc2FjdGlvbi1nb29kcy1hbGxvY2F0aW9uLWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc0dvb2RzQWxsb2NhdGlvbkNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1nb29kcy1hbGxvY2F0aW9uL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1nb29kcy1hbGxvY2F0aW9uLmNvbXBvbmVudFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk1hcHBpbmdTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYnV0dG9uQmFyVHJhbnNhY3Rpb246IE1hcDxUcmFuc2FjdGlvbktpbmQsIFRyYW5zYWN0aW9uQmFyQnV0dG9uW10+ID0gbmV3IE1hcDxUcmFuc2FjdGlvbktpbmQsIFRyYW5zYWN0aW9uQmFyQnV0dG9uW10+KFtcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgW1xyXG4gICAgICB7dGl0bGU6ICdPVkVSVklFVycsIGljb246IEljb24uQ2FydFNob3BwaW5nU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3ZlcnZpZXd9LFxyXG4gICAgICB7dGl0bGU6ICdDT05GSVJNQVRJT04nLCBpY29uOiBJY29uLk1lbW9DaXJjbGVDaGVja1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSxcclxuICAgICAge3RpdGxlOiAnVFJBTlNQT1JUJywgaWNvbjogSWNvbi5UcnVja0NvbnRhaW5lclNvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclRyYW5zcG9ydH0sXHJcbiAgICAgIHt0aXRsZTogJ1JFQ0VJVkVEJywgaWNvbjogSWNvbi5DYXJ0RmxhdGJlZEJveGVzU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyUmVjZWl2ZWRHb29kc30sXHJcbiAgICAgIHt0aXRsZTogJ0lOVk9JQ0VfQ0hFQ0snLCBpY29uOiBJY29uLlRhZywgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJJbnZvaWNlQ2hlY2t9LFxyXG4gICAgICB7dGl0bGU6ICdNRU5VJywgaWNvbjogSWNvbi5UYWcsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyTWVudX1cclxuICAgIF1dLFxyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBbXHJcbiAgICAgIHt0aXRsZTogJ09WRVJWSUVXJywgaWNvbjogSWNvbi5DYXJ0U2hvcHBpbmdTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sXHJcbiAgICAgIHt0aXRsZTogJ1BVUkNIQVNFJywgaWNvbjogSWNvbi5QYWxsZXRCb3hlc1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlclB1cmNoYXNlLCBjb21wb25lbnQ6IFRyYW5zYWN0aW9uU2FsZXNQdXJjaGFzZUJ1dHRvbkJhckJ1dHRvbkNvbXBvbmVudH0sXHJcbiAgICAgIHt0aXRsZTogJ0FMTE9DQVRJT04nLCBpY29uOiBJY29uLlNoZWx2ZXNTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJBbGxvY2F0aW9ufSxcclxuICAgICAge3RpdGxlOiAnTE9HSVNUSUNTJywgaWNvbjogSWNvbi5TaGVsdmVzU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyTG9naXN0aWNzfSxcclxuICAgICAge3RpdGxlOiAnUExBTk5JTkcnLCBpY29uOiBJY29uLlRydWNrTW92aW5nU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyUGxhbm5pbmd9LFxyXG4gICAgICB7dGl0bGU6ICdERUxJVkVSWV9OT1RFJywgaWNvbjogSWNvbi5NZW1vQ2lyY2xlQ2hlY2tTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJEZWxpdmVyeU5vdGV9LFxyXG4gICAgICB7dGl0bGU6ICdJTlZPSUNFJywgaWNvbjogSWNvbi5DYXJ0Q2hlY2ssIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVySW52b2ljZX1cclxuICAgIF1dLFxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9xdWlja0FjY2Vzc0NvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kOyBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9LCBUeXBlPFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbn0sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlckNvbmZpcm1hdGlvbkNvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyUmVjZWl2ZWRHb29kc30sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NSZWNlaXZlZEdvb2RzQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPdmVydmlld0NvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyUHVyY2hhc2V9LCBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJQdXJjaGFzZUNvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyQWxsb2NhdGlvbn0sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NHb29kc0FsbG9jYXRpb25Db21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckRlbGl2ZXJ5Tm90ZX0sIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlckRlbGl2ZXJ5Q29tcG9uZW50XVxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uR3JpZENvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZDsgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25MaW5lc0dyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSwgVHJhbnNhY3Rpb25PcmRlckNvbmZpcm1hdGlvbkdyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25MaW5lc0dyaWRDb21wb25lbnRdXHJcbiAgICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNhY3Rpb25MaW5lQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkxpbmVzTGluZUJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQ7IGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25MaW5lc0xpbmVCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25PdmVydmlld0xpbmVDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlclB1cmNoYXNlfSwgVHJhbnNhY3Rpb25QdXJjaGFzZUxpbmVDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckFsbG9jYXRpb259LCBUcmFuc2FjdGlvbkdvb2RzQWxsb2NhdGlvbkxpbmVDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckRlbGl2ZXJ5Tm90ZX0sIFRyYW5zYWN0aW9uT3JkZXJEZWxpdmVyeUxpbmVDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckludm9pY2V9LCBUcmFuc2FjdGlvbk9yZGVyRGVsaXZlcnlMaW5lQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJSZWNlaXZlZEdvb2RzfSwgVHJhbnNhY3Rpb25SZWNlaXZlR29vZHNMaW5lQ29tcG9uZW50XSxcclxuICAgIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2FjdGlvbkZpbHRlckNvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9LCBUeXBlPFRyYW5zYWN0aW9uRmlsdGVyQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25GaWx0ZXJCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyfSwgVHJhbnNhY3Rpb25TYWxlc09yZGVyRmlsdGVyQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlcn0sIFRyYW5zYWN0aW9uUHVyY2hhc2VPcmRlckZpbHRlckNvbXBvbmVudF0sXHJcbiAgICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNhY3Rpb25TZWFyY2hHcmlkQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcn0sIFRyYW5zYWN0aW9uU2VhcmNoU2FsZXNPcmRlckdyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyfSwgVHJhbnNhY3Rpb25TZWFyY2hQdXJjaGFzZU9yZGVyR3JpZENvbXBvbmVudF0sXHJcbiAgICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNhY3Rpb25TZWFyY2hUaWxlQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hUaWxlQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hUaWxlQmFzZUNvbXBvbmVudD4+KFtcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcn0sIFRyYW5zYWN0aW9uU2VhcmNoU2FsZXNPcmRlclRpbGVDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyfSwgVHJhbnNhY3Rpb25TZWFyY2hQdXJjaGFzZU9yZGVyVGlsZUNvbXBvbmVudF0sXHJcbiAgICBdKTtcclxuXHJcbiAgcHVibGljIGdldEJ1dHRvbkJhcih0eXBlOiBUcmFuc2FjdGlvbktpbmQpOiBUcmFuc2FjdGlvbkJhckJ1dHRvbltdIHtcclxuICAgIGlmICh0aGlzLl9idXR0b25CYXJUcmFuc2FjdGlvbi5oYXModHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbkJhclRyYW5zYWN0aW9uLmdldCh0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRRdWlja0FjY2Vzc0NvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSk6IFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeVxyXG4gICAgfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl9xdWlja0FjY2Vzc0NvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlICYmIHQuY2F0ZWdvcnkgPT09IGtleS5jYXRlZ29yeSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25HcmlkQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5KTogVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeVxyXG4gICAgfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25HcmlkQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUgJiYgdC5jYXRlZ29yeSA9PT0ga2V5LmNhdGVnb3J5KSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkxpbmVDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkpOiBUeXBlPFRyYW5zYWN0aW9uTGluZXNMaW5lQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICBjYXRlZ29yeTogY2F0ZWdvcnlcclxuICAgIH1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvbkxpbmVzTGluZUJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25MaW5lQ29tcG9uZW50LmZvckVhY2goKHYsIHQpID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUgJiYgdC5jYXRlZ29yeSA9PT0ga2V5LmNhdGVnb3J5KSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkZpbHRlckNvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQpOiBUeXBlPFRyYW5zYWN0aW9uRmlsdGVyQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSA9IHtcclxuICAgICAgdHlwZTogdHlwZX1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvbkZpbHRlckJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25GaWx0ZXJDb21wb25lbnQuZm9yRWFjaCgodiwgdCwgbSkgPT4ge1xyXG4gICAgICBpZiAodC50eXBlID09PSBrZXkudHlwZSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25TZWFyY2hHcmlkQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCk6IFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3Qga2V5OiB7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSA9IHtcclxuICAgICAgdHlwZTogdHlwZX1cclxuICAgIGxldCBlbnRyeTogVHlwZTxUcmFuc2FjdGlvblNlYXJjaEdyaWRCYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uU2VhcmNoR3JpZENvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlKSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvblNlYXJjaFRpbGVDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kKTogVHlwZTxUcmFuc2FjdGlvblNlYXJjaFRpbGVCYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25TZWFyY2hUaWxlQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUpIHtcclxuICAgICAgICBlbnRyeSA9IHY7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxufVxyXG4iXX0=