@colijnit/transaction 256.1.6 → 256.1.8

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 (31) hide show
  1. package/bundles/colijnit-transaction.umd.js +154 -84
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/add-product/add-product.component.js +5 -5
  5. package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.js +9 -2
  6. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-direct-sell.component.js +87 -68
  7. package/esm2015/lib/component/transaction/transaction.component.js +6 -2
  8. package/esm2015/lib/component/transaction-create-wizard/transaction-create-wizard.component.js +14 -3
  9. package/esm2015/lib/component/transaction-header-fields/transaction-header-deposit-amount.component.js +16 -11
  10. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +6 -1
  11. package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +4 -4
  12. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +2 -2
  13. package/esm2015/lib/component/transaction-search/transaction-search.component.js +8 -1
  14. package/esm2015/lib/service/transaction-connector-adapter.service.js +5 -5
  15. package/esm2015/lib/service/transaction-connector.service.js +5 -5
  16. package/esm2015/lib/service/transaction.service.js +11 -11
  17. package/esm2015/lib/transaction-version.js +3 -3
  18. package/fesm2015/colijnit-transaction.js +164 -108
  19. package/fesm2015/colijnit-transaction.js.map +1 -1
  20. package/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.d.ts +5 -1
  21. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-direct-sell.component.d.ts +8 -4
  22. package/lib/component/transaction/transaction.component.d.ts +5 -1
  23. package/lib/component/transaction-create-wizard/transaction-create-wizard.component.d.ts +4 -1
  24. package/lib/component/transaction-internal/transaction-internal.component.d.ts +4 -0
  25. package/lib/component/transaction-search/transaction-search.component.d.ts +2 -0
  26. package/lib/service/transaction-connector-adapter.service.d.ts +2 -2
  27. package/lib/service/transaction-connector.service.d.ts +2 -2
  28. package/lib/service/transaction.service.d.ts +5 -5
  29. package/package.json +1 -1
  30. package/colijnit-transaction-256.1.4.tgz +0 -0
  31. package/colijnit-transaction-256.1.5.tgz +0 -0
@@ -90,13 +90,13 @@ export class AddProductComponent {
90
90
  if (typeof data.article === 'string') {
91
91
  const article = JSON.parse(data.article);
92
92
  if (article.selectorData && article.selectorData.compositions) { // configured (frozen) article
93
- yield this.transactionService.addArticle(article.selectorData.compositions[0].compositionArticleNo, data.quantity, 0, 0 /*, lastArticle*/);
93
+ yield this.transactionService.addArticle(article.selectorData.compositions[0].compositionArticleNo, data.quantity, 0, 0, true, true);
94
94
  }
95
95
  }
96
96
  else { // flat (simple) article
97
97
  const articleNr = data.article['articleNr'] || data.article['articleNumber'] || data.article['articleNo'];
98
98
  if (articleNr) {
99
- yield this.transactionService.addArticle(articleNr, data.quantity, 0, 0 /*, lastArticle*/);
99
+ yield this.transactionService.addArticle(articleNr, data.quantity, 0, 0, true, true);
100
100
  }
101
101
  }
102
102
  }
@@ -152,7 +152,7 @@ export class AddProductComponent {
152
152
  request.catalogId = iFrameFeedbackObject.catalog;
153
153
  request.catalogType = iFrameFeedbackObject.sourceType;
154
154
  request.articleJson = iFrameFeedbackObject.jsonString;
155
- yield this.transactionService.addExternalCatalogArticle(request);
155
+ yield this.transactionService.addExternalCatalogArticle(request, true);
156
156
  });
157
157
  }
158
158
  handleAddCatFarmArticleClick(data) {
@@ -162,7 +162,7 @@ export class AddProductComponent {
162
162
  request.catalogId = data.catalog;
163
163
  request.catalogType = ExternalCatalogTypes.CatalogFarm;
164
164
  request.articleJson = data.jsonString;
165
- yield this.transactionService.addExternalCatalogArticle(request);
165
+ yield this.transactionService.addExternalCatalogArticle(request, true);
166
166
  });
167
167
  }
168
168
  _prepareCatalogRequest() {
@@ -226,4 +226,4 @@ AddProductComponent.propDecorators = {
226
226
  showClass: [{ type: HostBinding, args: ['class.co-add-product',] }],
227
227
  return: [{ type: HostBinding, args: ['class.return',] }]
228
228
  };
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQThDckcsTUFBTSxPQUFPLG1CQUFtQjtJQWtDOUIsWUFDUyxXQUE2QixFQUM3QixrQkFBc0MsRUFDckMsZUFBa0M7UUFGbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBcEM1QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQVV4RixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLG1CQUFjLEdBQVE7WUFDM0IsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsdUJBQXVCLEVBQUUsS0FBSztZQUM5QixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7UUFDSyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBR3RDLGlCQUFZLEdBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxnQkFBVyxHQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQU9yRixDQUFDO0lBM0JNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUEyQlksWUFBWSxDQUFDLElBQVk7O1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQyxnREFBZ0Q7WUFDaEQsNEJBQTRCO1lBQzVCLG9FQUFvRTtZQUNwRSxpQ0FBaUM7WUFDakMsc0JBQXNCO1lBRXRCLE1BQU0sZUFBZSxHQUFVLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdHLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLE9BQU8sR0FBb0IsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoSCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxNQUFNLGFBQWEsR0FBbUIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDL0MsTUFBTSxPQUFPLEdBQW9CLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbEgsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3RDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQjthQUNGO1FBQ0gsQ0FBQztLQUFBO0lBRU0sZ0JBQWdCLENBQUMsU0FBa0I7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBRVksZ0JBQWdCLENBQUMsT0FBd0I7O1lBQ3BELElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUNuQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDbkIsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQztLQUFBO0lBRVkscUJBQXFCLENBQUMsSUFBNkQ7O1lBQzlGLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUNuQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUN4QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7d0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQWlCLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQUUsOEJBQThCOzRCQUM3RixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLGlCQUFpQixDQUFDLENBQUM7eUJBQzNJO3FCQUNGO3lCQUFNLEVBQUUsd0JBQXdCO3dCQUMvQixNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDbEgsSUFBSSxTQUFTLEVBQUU7NEJBQ2IsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsaUJBQWlCLENBQUMsQ0FBQzt5QkFDM0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLGVBQWUsRUFBRTtvQkFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7d0JBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUMvQyxXQUFXLEVBQUUsQ0FBQzt3QkFDZCxXQUFXLEVBQUUsQ0FBQzt3QkFDZCxXQUFXLEVBQUUsSUFBSTtxQkFDbEIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7SUFFTSxpQkFBaUIsQ0FBQyxhQUFhO1FBQ3BDLElBQUksUUFBUSxHQUFXLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRTtZQUNwQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDZjthQUFNO1lBQ0wsUUFBUSxHQUFHLGFBQWEsQ0FBQztTQUMxQjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFWSx5QkFBeUIsQ0FBQyxPQUF3Qjs7WUFDN0QsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztLQUFBO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxLQUFpQjtRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRU0scUJBQXFCO1FBQzFCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVZLG9CQUFvQixDQUFDLG9CQUlqQzs7WUFDQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLE9BQU8sR0FBcUMsSUFBSSxnQ0FBZ0MsRUFBRSxDQUFDO1lBQ3ZGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1lBQ3RELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7S0FBQTtJQUVZLDRCQUE0QixDQUFDLElBSXpDOztZQUNDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksT0FBTyxHQUFxQyxJQUFJLGdDQUFnQyxFQUFFLENBQUM7WUFDdkYsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsV0FBVyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN0QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRSxDQUFDO0tBQUE7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsa0JBQWtCO1FBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxDQUFDOzs7WUEvTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFwRE8sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQVp4QixpQkFBaUI7Ozt5Q0FtRWhCLEtBQUs7eUJBR0wsTUFBTTs4QkFHTixTQUFTLFNBQUMsYUFBYTt3QkFFdkIsV0FBVyxTQUFDLHNCQUFzQjtxQkFLbEMsV0FBVyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3RcclxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1hZGQtYXJ0aWNsZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dUeXBlc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZXh0ZXJuYWwtY2F0YWxvZy10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtJbnB1dFNjYW5uZXJDb21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gIGFydGljbGU6IEFydGljbGVFeHRlbmRlZDtcclxuICBxdWFudGl0eTogbnVtYmVyO1xyXG4gIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgYmVsb3dMaW5lTnI6IG51bWJlcjtcclxuICBsYXN0QXJ0aWNsZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgKGlzRm9jdXNlZCk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgPjwvY28taW5wdXQtc2Nhbm5lcj5cclxuICAgIDxjby1kaWFsb2ctY2F0YWxvZyAqbmdJZj1cInNob3dDYXRhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BhcmFtZXRlcnNdPVwiY2F0YWxvZ1BhcmFtZXRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtpc1JldHVybl09XCJ0aGlzLnJldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInRyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dDYXRhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRBcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFjayk9XCJoYW5kbGVJRnJhbWVGZWVkYmFjaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQXJ0aWNsZTogRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaFRleHQ6IElucHV0U2Nhbm5lckNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXR1cm4nKVxyXG4gIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgc2hvd0FkZFRvQ2FydDogZmFsc2UsXHJcbiAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgIG9ubHlUaHJlZUQ6IGZhbHNlXHJcbiAgfTtcclxuICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjYXJ0UGx1c0ljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydFBsdXNSZWd1bGFyKTtcclxuICBwdWJsaWMgY2FydE1pbkljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydE1pbnVzUmVndWxhcik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5fcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgIC8vIFRoaXMgaXMgYSB0d28gY2hlY2sgc3RlcDpcclxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFuIGV4YWN0IG1hdGNoIG9uIGJhcmNvZGUsIGVhbiBvciBhcnRpY2xlbnVtYmVyXHJcbiAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgIC8vIGVsc2Ugb3BlbiBjYXRhbG9ndXNcclxuXHJcbiAgICBjb25zdCBmdWxsTWF0Y2hTZWFyY2g6IGFueVtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUxpc3RXaXRoQmFyY29kZUFydGljbGVOckVhbkNvZGUodGV4dCk7XHJcbiAgICBpZiAoZnVsbE1hdGNoU2VhcmNoICYmIGZ1bGxNYXRjaFNlYXJjaC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGZ1bGxNYXRjaFNlYXJjaFswXS5hcnRpY2xlTnIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmb3VuZEFydGljbGVzOiBBcnRpY2xlTGlnaHRbXSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVzKHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMpO1xyXG4gICAgICBpZiAoZm91bmRBcnRpY2xlcyAmJiBmb3VuZEFydGljbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmb3VuZEFydGljbGVzWzBdLmFydGljbGVOdW1iZXIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGlzRm9jdXNlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGlzRm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLCB0aGlzLnJldHVybiA/IC0xIDogMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICBxdWFudGl0eTogdGhpcy5yZXR1cm4gPyAtMSA6IDEsXHJcbiAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5hcnRpY2xlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgYXJ0aWNsZSA9IEpTT04ucGFyc2UoZGF0YS5hcnRpY2xlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEgJiYgYXJ0aWNsZS5zZWxlY3RvckRhdGEuY29tcG9zaXRpb25zKSB7IC8vIGNvbmZpZ3VyZWQgKGZyb3plbikgYXJ0aWNsZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9uc1swXS5jb21wb3NpdGlvbkFydGljbGVObywgZGF0YS5xdWFudGl0eSwgMCwgMC8qLCBsYXN0QXJ0aWNsZSovKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgeyAvLyBmbGF0IChzaW1wbGUpIGFydGljbGVcclxuICAgICAgICAgIGNvbnN0IGFydGljbGVOcjogc3RyaW5nID0gZGF0YS5hcnRpY2xlWydhcnRpY2xlTnInXSB8fCBkYXRhLmFydGljbGVbJ2FydGljbGVOdW1iZXInXSB8fCBkYXRhLmFydGljbGVbJ2FydGljbGVObyddO1xyXG4gICAgICAgICAgaWYgKGFydGljbGVOcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGVOciwgZGF0YS5xdWFudGl0eSwgMCwgMC8qLCBsYXN0QXJ0aWNsZSovKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSBpbnN0YW5jZW9mIEFydGljbGVFeHRlbmRlZCkge1xyXG4gICAgICAgIHRoaXMuYWRkQXJ0aWNsZS5uZXh0KHtcclxuICAgICAgICAgIGFydGljbGU6IGRhdGEuYXJ0aWNsZSxcclxuICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmdldEFjdHVhbFF1YW50aXR5KGRhdGEucXVhbnRpdHkpLFxyXG4gICAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgICBiZWxvd0xpbmVOcjogMCxcclxuICAgICAgICAgIGxhc3RBcnRpY2xlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY3R1YWxRdWFudGl0eShxdWFudGl0eUlucHV0KTogbnVtYmVyIHtcclxuICAgIGxldCBxdWFudGl0eTogbnVtYmVyID0gMDtcclxuICAgIGlmICh0aGlzLnJldHVybiAmJiBxdWFudGl0eUlucHV0ID4gMCkge1xyXG4gICAgICBxdWFudGl0eSA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVhbnRpdHkgPSBxdWFudGl0eUlucHV0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1YW50aXR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUNhdGFsb2dBcnRpY2xlQ2xpY2soYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0NhdGFsb2dEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYXJ0SWNvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnJldHVybiA9ICF0aGlzLnJldHVybjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZWFyY2hJY29uQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFNlYXJjaFRleHQubW9kZWwpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5pbnB1dFNlYXJjaFRleHQubW9kZWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVJRnJhbWVGZWVkYmFjayhpRnJhbWVGZWVkYmFja09iamVjdDoge1xyXG4gICAganNvblN0cmluZzogc3RyaW5nLFxyXG4gICAgY2F0YWxvZzogbnVtYmVyLFxyXG4gICAgc291cmNlVHlwZTogc3RyaW5nXHJcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgbGV0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LmNhdGFsb2dJZCA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0LmNhdGFsb2c7XHJcbiAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gaUZyYW1lRmVlZGJhY2tPYmplY3Quc291cmNlVHlwZTtcclxuICAgIHJlcXVlc3QuYXJ0aWNsZUpzb24gPSBpRnJhbWVGZWVkYmFja09iamVjdC5qc29uU3RyaW5nO1xyXG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKGRhdGE6IHtcclxuICAgIHF1YW50aXR5OiBudW1iZXIsXHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXJcclxuICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICBsZXQgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QgPSBuZXcgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gZGF0YS5jYXRhbG9nO1xyXG4gICAgcmVxdWVzdC5jYXRhbG9nVHlwZSA9IEV4dGVybmFsQ2F0YWxvZ1R5cGVzLkNhdGFsb2dGYXJtO1xyXG4gICAgcmVxdWVzdC5hcnRpY2xlSnNvbiA9IGRhdGEuanNvblN0cmluZztcclxuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGUocmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLmdlbmVyYWwgPSB0aGlzLnNlYXJjaFRleHQ7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dSZWd1bGFyQXJ0aWNsZXMgPSB0cnVlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJlZEFydGljbGVzID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb25maWd1cmFibGVBcnRpY2xlcyA9IHRydWU7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb21wb3NpdGlvbkFydGljbGVzID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDdXN0b21pemVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0luYWN0aXZlQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMucHVibGljYXRpb25Db2RlID0gNzE7IC8vIHRvZG86IGZpeCB0aGlzP1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5pc1JldHVybiA9IHRoaXMucmV0dXJuO1xyXG4gIH1cclxufVxyXG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQThDckcsTUFBTSxPQUFPLG1CQUFtQjtJQWtDOUIsWUFDUyxXQUE2QixFQUM3QixrQkFBc0MsRUFDckMsZUFBa0M7UUFGbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBcEM1QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQVV4RixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLG1CQUFjLEdBQVE7WUFDM0IsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFB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R0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsa0JBQWtCO1FBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxDQUFDOzs7WUEvTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFwRE8sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQVp4QixpQkFBaUI7Ozt5Q0FtRWhCLEtBQUs7eUJBR0wsTUFBTTs4QkFHTixTQUFTLFNBQUMsYUFBYTt3QkFFdkIsV0FBVyxTQUFDLHNCQUFzQjtxQkFLbEMsV0FBVyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3RcclxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1hZGQtYXJ0aWNsZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dUeXBlc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZXh0ZXJuYWwtY2F0YWxvZy10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtJbnB1dFNjYW5uZXJDb21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gIGFydGljbGU6IEFydGljbGVFeHRlbmRlZDtcclxuICBxdWFudGl0eTogbnVtYmVyO1xyXG4gIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgYmVsb3dMaW5lTnI6IG51bWJlcjtcclxuICBsYXN0QXJ0aWNsZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgKGlzRm9jdXNlZCk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgPjwvY28taW5wdXQtc2Nhbm5lcj5cclxuICAgIDxjby1kaWFsb2ctY2F0YWxvZyAqbmdJZj1cInNob3dDYXRhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BhcmFtZXRlcnNdPVwiY2F0YWxvZ1BhcmFtZXRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtpc1JldHVybl09XCJ0aGlzLnJldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInRyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dDYXRhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRBcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFjayk9XCJoYW5kbGVJRnJhbWVGZWVkYmFjaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQXJ0aWNsZTogRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaFRleHQ6IElucHV0U2Nhbm5lckNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXR1cm4nKVxyXG4gIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgc2hvd0FkZFRvQ2FydDogZmFsc2UsXHJcbiAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgIG9ubHlUaHJlZUQ6IGZhbHNlXHJcbiAgfTtcclxuICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjYXJ0UGx1c0ljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydFBsdXNSZWd1bGFyKTtcclxuICBwdWJsaWMgY2FydE1pbkljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydE1pbnVzUmVndWxhcik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5fcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgIC8vIFRoaXMgaXMgYSB0d28gY2hlY2sgc3RlcDpcclxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFuIGV4YWN0IG1hdGNoIG9uIGJhcmNvZGUsIGVhbiBvciBhcnRpY2xlbnVtYmVyXHJcbiAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgIC8vIGVsc2Ugb3BlbiBjYXRhbG9ndXNcclxuXHJcbiAgICBjb25zdCBmdWxsTWF0Y2hTZWFyY2g6IGFueVtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUxpc3RXaXRoQmFyY29kZUFydGljbGVOckVhbkNvZGUodGV4dCk7XHJcbiAgICBpZiAoZnVsbE1hdGNoU2VhcmNoICYmIGZ1bGxNYXRjaFNlYXJjaC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGZ1bGxNYXRjaFNlYXJjaFswXS5hcnRpY2xlTnIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmb3VuZEFydGljbGVzOiBBcnRpY2xlTGlnaHRbXSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVzKHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMpO1xyXG4gICAgICBpZiAoZm91bmRBcnRpY2xlcyAmJiBmb3VuZEFydGljbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmb3VuZEFydGljbGVzWzBdLmFydGljbGVOdW1iZXIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGlzRm9jdXNlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGlzRm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLCB0aGlzLnJldHVybiA/IC0xIDogMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICBxdWFudGl0eTogdGhpcy5yZXR1cm4gPyAtMSA6IDEsXHJcbiAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5hcnRpY2xlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgYXJ0aWNsZSA9IEpTT04ucGFyc2UoZGF0YS5hcnRpY2xlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEgJiYgYXJ0aWNsZS5zZWxlY3RvckRhdGEuY29tcG9zaXRpb25zKSB7IC8vIGNvbmZpZ3VyZWQgKGZyb3plbikgYXJ0aWNsZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9uc1swXS5jb21wb3NpdGlvbkFydGljbGVObywgZGF0YS5xdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHsgLy8gZmxhdCAoc2ltcGxlKSBhcnRpY2xlXHJcbiAgICAgICAgICBjb25zdCBhcnRpY2xlTnI6IHN0cmluZyA9IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTnVtYmVyJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTm8nXTtcclxuICAgICAgICAgIGlmIChhcnRpY2xlTnIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkQXJ0aWNsZShhcnRpY2xlTnIsIGRhdGEucXVhbnRpdHksIDAsIDAsIHRydWUsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlIGluc3RhbmNlb2YgQXJ0aWNsZUV4dGVuZGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRBcnRpY2xlLm5leHQoe1xyXG4gICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IHRoaXMuZ2V0QWN0dWFsUXVhbnRpdHkoZGF0YS5xdWFudGl0eSksXHJcbiAgICAgICAgICBhYm92ZUxpbmVOcjogMCxcclxuICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdHVhbFF1YW50aXR5KHF1YW50aXR5SW5wdXQpOiBudW1iZXIge1xyXG4gICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuICYmIHF1YW50aXR5SW5wdXQgPiAwKSB7XHJcbiAgICAgIHF1YW50aXR5ID0gLTE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWFudGl0eSA9IHF1YW50aXR5SW5wdXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVhbnRpdHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2F0YWxvZ0FydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZ0RpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhcnRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlYXJjaEljb25DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGlGcmFtZUZlZWRiYWNrT2JqZWN0OiB7XHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICBzb3VyY2VUeXBlOiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICBsZXQgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QgPSBuZXcgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgIHJlcXVlc3QuY2F0YWxvZ1R5cGUgPSBpRnJhbWVGZWVkYmFja09iamVjdC5zb3VyY2VUeXBlO1xyXG4gICAgcmVxdWVzdC5hcnRpY2xlSnNvbiA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0Lmpzb25TdHJpbmc7XHJcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2soZGF0YToge1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgIGNhdGFsb2c6IG51bWJlclxyXG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuQ2F0YWxvZ0Zhcm07XHJcbiAgICByZXF1ZXN0LmFydGljbGVKc29uID0gZGF0YS5qc29uU3RyaW5nO1xyXG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuZ2VuZXJhbCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb25maWd1cmVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbmZpZ3VyYWJsZUFydGljbGVzID0gdHJ1ZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0N1c3RvbWl6ZWRBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93SW5hY3RpdmVBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLmlzUmV0dXJuID0gdGhpcy5yZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -13,14 +13,17 @@ import { ExternalCatalogTypes } from '@colijnit/transactionapi/build/enum/extern
13
13
  import { ProductConnectorAdapterService, ProductConnectorService, ProductEventService, ProductSettingsService } from '@colijnit/product';
14
14
  import { CatalogScreenConfigurationService } from "./service/catalog-screen-configuration.service";
15
15
  import { BaseModuleScreenConfigService } from "@colijnit/corecomponents_v12";
16
+ import { TransactionEventService } from '../../../../service/transaction-event.service';
16
17
  export class DialogCatalogComponent {
17
- constructor(_transactionService, _catalogService, _catalogEventService, _articleService, _dialogService, _screenConfigService, iconCacheService) {
18
+ constructor(_transactionService, _catalogService, _catalogEventService, _articleService, _dialogService, _screenConfigService, _productConnectorAdapterService, _transactionEventService, iconCacheService) {
18
19
  this._transactionService = _transactionService;
19
20
  this._catalogService = _catalogService;
20
21
  this._catalogEventService = _catalogEventService;
21
22
  this._articleService = _articleService;
22
23
  this._dialogService = _dialogService;
23
24
  this._screenConfigService = _screenConfigService;
25
+ this._productConnectorAdapterService = _productConnectorAdapterService;
26
+ this._transactionEventService = _transactionEventService;
24
27
  this.iconCacheService = iconCacheService;
25
28
  this.icons = Icon;
26
29
  this.handleAddArticleInternally = true;
@@ -59,6 +62,8 @@ export class DialogCatalogComponent {
59
62
  }
60
63
  this._subs.push(this._catalogEventService.stockDetailsClick.subscribe((article) => {
61
64
  this.handleStockButtonClick(article);
65
+ }), this._productConnectorAdapterService.showLoader.subscribe((show) => {
66
+ this._transactionEventService.showLoader.next(show);
62
67
  }));
63
68
  });
64
69
  }
@@ -284,6 +289,8 @@ DialogCatalogComponent.ctorParameters = () => [
284
289
  { type: ArticleService },
285
290
  { type: DialogService },
286
291
  { type: CatalogScreenConfigurationService },
292
+ { type: ProductConnectorAdapterService },
293
+ { type: TransactionEventService },
287
294
  { type: IconCacheService }
288
295
  ];
289
296
  DialogCatalogComponent.propDecorators = {
@@ -302,4 +309,4 @@ DialogCatalogComponent.propDecorators = {
302
309
  addExternalArticleClicked: [{ type: Output }],
303
310
  showClass: [{ type: HostBinding, args: ["class.co-dialog-catalog",] }]
304
311
  };
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlhbG9nL2NhdGFsb2cvZGlhbG9nLWNhdGFsb2cvZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzFHLE9BQU8sRUFDTCxpQ0FBaUMsRUFDbEMsTUFBTSx3RUFBd0UsQ0FBQztBQUNoRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFJbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUNqRyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQXFGM0UsTUFBTSxPQUFPLHNCQUFzQjtJQThFakMsWUFDVSxtQkFBdUMsRUFDdkMsZUFBK0IsRUFDL0Isb0JBQXlDLEVBQ3pDLGVBQStCLEVBQy9CLGNBQTZCLEVBQzdCLG9CQUF1RCxFQUN4RCxnQkFBa0M7UUFOakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFtQztRQUN4RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBcEYzQixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFTM0MsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFHL0IsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBUzFDLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUd0RSxtQkFBYyxHQUFrQyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUUzRjs4R0FDc0c7UUFHL0YsbUJBQWMsR0FDakIsSUFBSSxZQUFZLEVBQStELENBQUM7UUFHN0Usc0JBQWlCLEdBQTBFLElBQUksWUFBWSxFQUc5RyxDQUFDO1FBR0UsNkJBQXdCLEdBSTFCLElBQUksWUFBWSxFQUE2RCxDQUFDO1FBRzVFLDhCQUF5QixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzdFLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUlyQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUlyQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFHO1lBQzlCLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUE7UUFHTyxVQUFLLEdBQW1CLEVBQUUsQ0FBQztJQVduQyxDQUFDO0lBakNNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFpQ0ssUUFBUTs7WUFDWixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUU3QyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdEO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtnQkFDakYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO0tBQUE7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sc0JBQXNCLENBQUMsT0FBd0I7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRVkseUJBQXlCLENBQUMsTUFBZ0M7O1lBQ3JFLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDNUMsSUFBSSxJQUFJLEdBQStCLElBQUksMEJBQTBCLEVBQUUsQ0FBQztnQkFFeEUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRTtvQkFDbEMsTUFBTSxPQUFPLEdBQXNDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO29CQUV0RixJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztpQkFDakM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQy9FO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7SUFFTSxrQkFBa0IsQ0FBQyxPQUF3QjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBWTtRQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sZ0NBQWdDLENBQUMsSUFBNkQ7UUFDbkcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sNkJBQTZCLENBQUMsSUFBWTtRQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBaUI7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBWTtRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixVQUFVLEVBQUUsSUFBSTtZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtZQUN2QyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsT0FBTyxFQUFFO1lBQzdELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsSUFBMkQ7UUFDNUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTSw4QkFBOEIsQ0FBQyxJQUEyQztRQUMvRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDeEIsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7U0FDeEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVZLHdCQUF3QixDQUFDLE9BQTBCOztZQUM5RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0UsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO29CQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVPLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvRyxJQUFJLGlCQUFpQixHQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN4SSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7dUJBQ2hFLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUU7b0JBQzVILE9BQU8sS0FBSyxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxNQUFNLE9BQU8sR0FBc0MsSUFBSSxpQ0FBaUMsRUFBRSxDQUFDO1FBQzNGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztTQUN4RTthQUFNO1lBQ0wsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUEsQ0FBQyxrQkFBa0I7U0FDM0M7UUFDRCxJQUFJLENBQUMsb0NBQW9DLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVPLG9DQUFvQyxDQUFDLE9BQTBDO1FBQ3JGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9HLElBQUksWUFBWSxHQUFxQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNsSixJQUFJLFlBQVksRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFBO2dCQUMzQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBQ3JCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO2lCQUM5QjtnQkFDRCxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7b0JBQzVCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztpQkFDNUM7cUJBQU0sSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFO29CQUNuQyxPQUFPLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7aUJBQzVDO2FBQ0Y7U0FDRjtJQUNILENBQUM7OztZQXZVRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRFQ7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGNBQWM7b0JBQ2QsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLHNCQUFzQjtvQkFDdEIsbUJBQW1CO29CQUNuQixFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUM7aUJBQ3pGO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsaUJBQWlCLEVBQUU7d0JBQ3pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzt3QkFDckQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQzt3QkFDbkQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvR08sa0JBQWtCO1lBQ0csY0FBYztZQUFuQyxtQkFBbUI7WUFZbkIsY0FBYztZQUlkLGFBQWE7WUFTYixpQ0FBaUM7WUFyQmpDLGdCQUFnQjs7O3lDQThHckIsS0FBSztzQkFHTCxLQUFLO3lCQUdMLEtBQUs7NkJBR0wsS0FBSzt1Q0FHTCxLQUFLOzBCQUdMLEtBQUs7dUJBR0wsS0FBSzt5QkFHTCxNQUFNOzZCQUdOLE1BQU07NkJBTU4sTUFBTTtnQ0FJTixNQUFNO3VDQU1OLE1BQU07d0NBT04sTUFBTTt3QkFHTixXQUFXLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ0V2ZW50U2VydmljZSwgQ2F0YWxvZ1NlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jYXRhbG9nJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlVmlld21vZGVsfSBmcm9tICdAY29saWpuaXQvY2F0YWxvZy9saWIvbW9kZWwvZXh0ZXJuYWwtc291cmNlLXZpZXdtb2RlbCc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7XHJcbiAgRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0XHJcbn0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1zdGFydHVwLWluZm8tcmVxdWVzdCc7XHJcbmltcG9ydCB7QXJ0aWNsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvYXJ0aWNsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xyXG5pbXBvcnQge09yZGVyTGluZVNldEluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1pbmZvLmJvJztcclxuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0LWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dUeXBlc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZXh0ZXJuYWwtY2F0YWxvZy10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtcclxuICBQcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXHJcbiAgUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXHJcbiAgUHJvZHVjdEV2ZW50U2VydmljZSxcclxuICBQcm9kdWN0U2V0dGluZ3NTZXJ2aWNlXHJcbn0gZnJvbSAnQGNvbGlqbml0L3Byb2R1Y3QnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdCc7XHJcbmltcG9ydCB7Q2F0YWxvZ1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlL2NhdGFsb2ctc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGlhbG9nLWNhdGFsb2dcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZyAoY2xvc2VDbGljayk9XCJjbG9zZUNsaWNrLmVtaXQoJGV2ZW50KVwiIFtALmRpc2FibGVkXT1cImRlc3Ryb3llZFwiPlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVCYWNrQ2xpY2soJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93RXh0ZXJuYWxDYXRhbG9nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jYXRhbG9nLXByb2R1Y3Qtd3JhcHBlclwiIFtjbGFzcy5zaG93LXByb2R1Y3RdPVwic2hvd1Byb2R1Y3RcIj5cclxuICAgICAgICAgIDxjby1jYXRhbG9nLXNlYXJjaFxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0NBVEFMT0cnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbc3ViVGl0bGVdPVwiJ1NFQVJDSF9CWV9BUlRJQ0xFTlVNQkVSX05BTUVfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NFQVJDSF9CWV9BUlRJQ0xFTlVNQkVSX09SX0RFU0NSSVBUSU9OJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2NyZWF0ZUZyb3plbkFydGljbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd05hdmlnYXRpb25dPVwic2hvd05hdmlnYXRpb25cIlxyXG4gICAgICAgICAgICBbc2V0dGluZ3NdPVwiY2F0YWxvZ1NldHRpbmdzXCJcclxuICAgICAgICAgICAgKG9uRXh0ZXJuYWxTb3VyY2VDbGljayk9XCJoYW5kbGVFeHRlcm5hbFNvdXJjZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25BZGRBcnRpY2xlQnV0dG9uQ2xpY2spPVwiaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25Mb29rQXRBcnRpY2xlQnV0dG9uQ2xpY2spPVwiaGFuZGxlQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25BcnRpY2xlQ2xpY2spPVwiaGFuZGxlQXJ0aWNsZUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgIDwvY28tY2F0YWxvZy1zZWFyY2g+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0YWxvZy1hcnRpY2xlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJiYWNrLWJ1dHRvbi1wcm9kdWN0XCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Byb2R1Y3QgPSBmYWxzZVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgPGFwcC1pb25lLXByb2R1Y3QgKm5nSWY9XCJzaG93UHJvZHVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldHRpbmdzXT1cImNhdGFsb2dTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JldHVybl09XCJpc1JldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFkZFRvQ2FydCk9XCJoYW5kbGVBZGRBcnRpY2xlRnJvbUFydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWx0ZXJuYXRpdmVDbGljayk9XCJoYW5kbGVPbkFsdGVybmF0aXZlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2FwcC1pb25lLXByb2R1Y3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXh0ZXJuYWxDYXRhbG9nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jYXRhbG9nLXByb2R1Y3Qtd3JhcHBlclwiIFtjbGFzcy5zaG93LXByb2R1Y3RdPVwic2hvd1Byb2R1Y3RcIj5cclxuXHJcbiAgICAgICAgICA8Y28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2VcclxuICAgICAgICAgICAgW2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvXT1cImNhdGFsb2dJbmZvXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cIidDQVRBTE9HJyB8IGxvY2FsaXplIHwgYXBwZW5kOiAnICcgfCBhcHBlbmQ6IGV4dGVybmFsQ2F0YWxvZ05hbWVcIlxyXG4gICAgICAgICAgICBbc3ViVGl0bGVdPVwiJ1NFQVJDSF9CWV9BUlRJQ0xFTlVNQkVSX05BTUVfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NFQVJDSF9CWV9BUlRJQ0xFTlVNQkVSX09SX0RFU0NSSVBUSU9OJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiZXh0ZXJuYWxDYXRhbG9nTmFtZVwiXHJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImV4dGVybmFsQ2F0YWxvZ09wdGlvbnNcIlxyXG4gICAgICAgICAgICBbc2hvd05hdmlnYXRpb25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoYXJ0aWNsZUNsaWNrKT1cImhhbmRsZUNhdEZhcm1BcnRpY2xlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGFkZEFydGljbGVDbGljayk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChpRnJhbWVGZWVkYmFja1JlY2VpdmVkKT1cImhhbmRsZUlGcmFtZUZlZWRiYWNrKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2U+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGFsb2ctYXJ0aWNsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwiYmFjay1idXR0b24tcHJvZHVjdFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcm9kdWN0ID0gZmFsc2VcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxjby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZSAqbmdJZj1cInNob3dQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlcm5hbFNvdXJjZV09XCJleHRlcm5hbFNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2t1XT1cImNhdFNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkVG9DYXJ0KT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvY28tcHJvZHVjdC1leHRlcm5hbC1zb3VyY2U+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICAgIDxjby1kaWFsb2cgKm5nSWY9XCJhcnRpY2xlRm9yU3RvY2sgJiYgc2hvd1N0b2NrXCIgKGNsb3NlQ2xpY2spPVwiY2FuY2VsU3RvY2tCdXR0b25DbGljaygpXCI+XHJcbiAgICAgIDxjby1zdG9jayBbYXJ0aWNsZV09XCJhcnRpY2xlRm9yU3RvY2tcIiAoY2FuY2VsQnV0dG9uQ2xpY2tlZCk9XCJjYW5jZWxTdG9ja0J1dHRvbkNsaWNrKClcIj48L2NvLXN0b2NrPlxyXG4gICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIENhdGFsb2dTZXJ2aWNlLFxyXG4gICAgUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBQcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXHJcbiAgICBQcm9kdWN0U2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgUHJvZHVjdEV2ZW50U2VydmljZSxcclxuICAgIHtwcm92aWRlOiBCYXNlTW9kdWxlU2NyZWVuQ29uZmlnU2VydmljZSwgdXNlRXhpc3Rpbmc6IENhdGFsb2dTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0sXHJcbiAgXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKFwic2hvd0hpZGVQcm9kdWN0XCIsIFtcclxuICAgICAgc3RhdGUoXCJ0cnVlXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgtNTAlKVwifSkpLFxyXG4gICAgICBzdGF0ZShcImZhbHNlXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwifSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFwiZmFsc2UgPD0+IHRydWVcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0NhdGFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmV0dXJuQXJ0aWNsZU9uVGlsZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXR1cm46IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4oKTtcclxuXHJcbiAgLypAT3V0cHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxBcnRpY2xlRXh0ZW5kZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnRpY2xlRXh0ZW5kZWQ+KCk7Ki9cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGlGcmFtZUZlZWRiYWNrOiBFdmVudEVtaXR0ZXI8eyBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciwgc291cmNlVHlwZTogc3RyaW5nIH0+XHJcbiAgICA9IG5ldyBFdmVudEVtaXR0ZXI8eyBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciwgc291cmNlVHlwZTogc3RyaW5nIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsXHJcbiAgICBxdWFudGl0eTogbnVtYmVyXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHtcclxuICAgIHF1YW50aXR5OiBudW1iZXIsXHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXJcclxuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBxdWFudGl0eTogbnVtYmVyLCBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGlhbG9nLWNhdGFsb2dcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2F0YWxvZ1NldHRpbmdzOiBhbnk7XHJcbiAgcHVibGljIGV4dGVybmFsQ2F0YWxvZ05hbWU6IHN0cmluZztcclxuICBwdWJsaWMgc2hvd0V4dGVybmFsQ2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHRlcm5hbFNvdXJjZTogRXh0ZXJuYWxTb3VyY2U7XHJcbiAgcHVibGljIGNhdGFsb2dEZWZpbml0aW9uOiBDYXRhbG9nRGVmaW5pdGlvbjtcclxuICBwdWJsaWMgYXJ0aWNsZUZvclN0b2NrOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcbiAgcHVibGljIHNob3dTdG9jazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNrdTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYXRTa3U6IHN0cmluZztcclxuICBwdWJsaWMgY2F0QXJ0TmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZXh0ZXJuYWxDYXRhbG9nT3B0aW9ucyA9IHtcclxuICAgIHNlYXJjaE9uU3RhcnQ6IHRydWVcclxuICB9XHJcbiAgcHVibGljIGNhdGFsb2dJbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbztcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NhdGFsb2dTZXJ2aWNlOiBDYXRhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NhdGFsb2dFdmVudFNlcnZpY2U6IENhdGFsb2dFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hcnRpY2xlU2VydmljZTogQXJ0aWNsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuQ29uZmlnU2VydmljZTogQ2F0YWxvZ1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5fc2NyZWVuQ29uZmlnU2VydmljZS5sb2FkQ29uZmlnKCk7XHJcblxyXG4gICAgdGhpcy5jYXRhbG9nU2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2Uub3B0aW9uc1NlcnZpY2Uuc2V0dGluZ3MpO1xyXG4gICAgaWYgKHRoaXMuY2F0YWxvZ1NldHRpbmdzKSB7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzLmNyZWF0ZVdlYk9yZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzLmNhdGFsb2dQYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzO1xyXG4gICAgICBhd2FpdCB0aGlzLl9jYXRhbG9nU2VydmljZS5pbml0KHRoaXMuY2F0YWxvZ1NldHRpbmdzLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX2NhdGFsb2dFdmVudFNlcnZpY2Uuc3RvY2tEZXRhaWxzQ2xpY2suc3Vic2NyaWJlKChhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b2NrQnV0dG9uQ2xpY2soYXJ0aWNsZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVN0b2NrQnV0dG9uQ2xpY2soYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmFydGljbGVGb3JTdG9jayA9IGFydGljbGU7XHJcbiAgICB0aGlzLnNob3dTdG9jayA9ICF0aGlzLnNob3dTdG9jaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxTdG9ja0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93U3RvY2sgPSAhdGhpcy5zaG93U3RvY2s7XHJcbiAgICB0aGlzLmFydGljbGVGb3JTdG9jayA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVFeHRlcm5hbFNvdXJjZUNsaWNrKHNvdXJjZT86IEV4dGVybmFsU291cmNlVmlld21vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoc291cmNlKSB7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ0RlZmluaXRpb24gPSBzb3VyY2UuY2F0YWxvZ0RlZmluaXRpb247XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTb3VyY2UgPSBzb3VyY2UuZXh0ZXJuYWxTb3VyY2U7XHJcbiAgICAgIGxldCBpbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2hlY2tJZk9wZW5pbmdJc0FsbG93ZWQoKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCA9IHRoaXMuYnVpbGRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgIGluZm8gPSBhd2FpdCB0aGlzLl9hcnRpY2xlU2VydmljZS5nZXRXZWJWaWV3U3RhcnR1cEluZm8ocmVxdWVzdCk7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nSW5mbyA9IGluZm87XHJcbiAgICAgICAgdGhpcy5zaG93RXh0ZXJuYWxDYXRhbG9nID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLnNob3dUb2FzdChcIkVYVEVSTkFMX0NBVEFMT0dfSVRFTVNfQUxSRUFEWV9PUkRFUkVEXCIsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQXJ0aWNsZUNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJldHVybkFydGljbGVPblRpbGVDbGljaykge1xyXG4gICAgICB0aGlzLnNrdSA9IGFydGljbGUuYXJ0aWNsZU51bWJlcjtcclxuICAgICAgdGhpcy5zaG93UHJvZHVjdCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFydGljbGVDbGlja2VkLm5leHQoYXJ0aWNsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGpzb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRBcnRpY2xlQ2xpY2tlZC5uZXh0KHthcnRpY2xlOiBqc29uLCBxdWFudGl0eTogMX0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVGcm9tQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQXJ0aWNsZUNsaWNrZWQubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBZGRFeHRlcm5hbEFydGljbGVDbGljayhqc29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2tlZC5uZXh0KGpzb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUJhY2tDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RXh0ZXJuYWxDYXRhbG9nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSUZyYW1lRmVlZGJhY2soanNvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlGcmFtZUZlZWRiYWNrLmVtaXQoe1xyXG4gICAgICBqc29uU3RyaW5nOiBqc29uLFxyXG4gICAgICBjYXRhbG9nOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCksXHJcbiAgICAgIHNvdXJjZVR5cGU6IHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFNvdXJjZS50eXBlICE9PSBFeHRlcm5hbENhdGFsb2dUeXBlcy5XZWJzaG9wKSB7XHJcbiAgICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhdEZhcm1BcnRpY2xlQ2xpY2tlZChkYXRhOiB7IGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQsIHNldHRpbmdzOiBhbnkgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXRTa3UgPSBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcjtcclxuICAgIHRoaXMuY2F0QXJ0TmFtZSA9IGRhdGEuYXJ0aWNsZS5uYW1lO1xyXG4gICAgdGhpcy5zaG93UHJvZHVjdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkQ2F0RmFybUFydGljbGVDbGlja2VkKGRhdGE6IHsgcXVhbnRpdHk6IG51bWJlciwgYXJ0aWNsZTogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQ2F0RmFybUFydGljbGVDbGlja2VkLmVtaXQoe1xyXG4gICAgICBxdWFudGl0eTogZGF0YS5xdWFudGl0eSxcclxuICAgICAganNvblN0cmluZzogZGF0YS5hcnRpY2xlLFxyXG4gICAgICBjYXRhbG9nOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlT25BbHRlcm5hdGl2ZUNsaWNrKGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGFydGljbGUuYXJ0aWNsZU51bWJlcikudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5za3UgPSByZXN1bHQuYXJ0aWNsZU51bWJlcjtcclxuICAgICAgICB0aGlzLnNob3dQcm9kdWN0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJZk9wZW5pbmdJc0FsbG93ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cyAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG9yZGVyTGluZVNldENvZGVzOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cy5maWx0ZXIobyA9PiBvLmNhdGFsb2dJZCA9IHRoaXMuY2F0YWxvZ0RlZmluaXRpb24uZ2V0SWQoKSkubWFwKG8gPT4gby5vcmRlckxpbmVTZXRDb2RlKTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZvckVhY2gobCA9PiB7XHJcbiAgICAgICAgaWYgKChvcmRlckxpbmVTZXRDb2Rlcy5maW5kSW5kZXgoYyA9PiBjID09PSBsLm9yZGVyTGluZVNldENvZGUpID49IDApXHJcbiAgICAgICAgICAmJiBsLmFydGljbGVMaW5lU3RhdHVzICYmIGwuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5T3JkZXJlZCcpICYmIGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlPcmRlcmVkID4gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRXh0ZXJuYWxDYXRhbG9nUmVxdWVzdCgpOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3Qge1xyXG4gICAgY29uc3QgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5jYXRhbG9nSWQgPSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCk7XHJcbiAgICByZXF1ZXN0LnBvc0VtcGxveWVlID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGFuZGxlZEJ5O1xyXG4gICAgcmVxdWVzdC5pb25lT3JkZXJOciA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uTnIudG9TdHJpbmcoKTtcclxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbikge1xyXG4gICAgICByZXF1ZXN0LnBvc05hbWUgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbi5mYW1pbHlOYW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVxdWVzdC5wb3NOYW1lID0gJ05OQicgLy9Ob2cgTmlldCBCZXBhYWxkXHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3RJZk5lZWRlZChyZXF1ZXN0KTtcclxuICAgIHJldHVybiByZXF1ZXN0XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGFuZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3RJZk5lZWRlZChyZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzICYmIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgb3JkZXJMaW5lU2V0OiBPcmRlckxpbmVTZXRJbmZvID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cy5maW5kKHNldCA9PiBzZXQuY2F0YWxvZ0lkID09PSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCkpO1xyXG4gICAgICBpZiAob3JkZXJMaW5lU2V0KSB7XHJcbiAgICAgICAgcmVxdWVzdC5wb3NBdXBpbmcgPSBvcmRlckxpbmVTZXQuYXVwT3JkZXJOclxyXG4gICAgICAgIGlmIChyZXF1ZXN0LnBvc0F1cGluZykge1xyXG4gICAgICAgICAgcmVxdWVzdC5wb3NTdGF0dXMgPSAnQ2hhbmdlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9yZGVyTGluZVNldC52ZFByb2plY3RJZCkge1xyXG4gICAgICAgICAgcmVxdWVzdC5vcmRlcklkID0gb3JkZXJMaW5lU2V0LnZkUHJvamVjdElkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3JkZXJMaW5lU2V0Lnd0UHJvamVjdE5yKSB7XHJcbiAgICAgICAgICByZXF1ZXN0Lm9yZGVySWQgPSBvcmRlckxpbmVTZXQud3RQcm9qZWN0TnI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlhbG9nL2NhdGFsb2cvZGlhbG9nLWNhdGFsb2cvZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzFHLE9BQU8sRUFDTCxpQ0FBaUMsRUFDbEMsTUFBTSx3RUFBd0UsQ0FBQztBQUNoRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFJbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUz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QkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRFQ7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGNBQWM7b0JBQ2QsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLHNCQUFzQjtvQkFDdEIsbUJBQW1CO29CQUNuQixFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUM7aUJBQ3pGO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsaUJBQWlCLEVBQUU7d0JBQ3pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzt3QkFDckQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQzt3QkFDbkQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoSE8sa0JBQWtCO1lBQ0csY0FBYztZQUFuQyxtQkFBbUI7WUFZbkIsY0FBYztZQUlkLGFBQWE7WUFTYixpQ0FBaUM7WUFOdkMsOEJBQThCO1lBUXhCLHVCQUF1QjtZQXZCdkIsZ0JBQWdCOzs7eUNBK0dyQixLQUFLO3NCQUdMLEtBQUs7eUJBR0wsS0FBSzs2QkFHTCxLQUFLO3VDQUdMLEtBQUs7MEJBR0wsS0FBSzt1QkFHTCxLQUFLO3lCQUdMLE1BQU07NkJBR04sTUFBTTs2QkFNTixNQUFNO2dDQUlOLE1BQU07dUNBTU4sTUFBTTt3Q0FPTixNQUFNO3dCQUdOLFdBQVcsU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXRhbG9nRXZlbnRTZXJ2aWNlLCBDYXRhbG9nU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NhdGFsb2cnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VWaWV3bW9kZWx9IGZyb20gJ0Bjb2xpam5pdC9jYXRhbG9nL2xpYi9tb2RlbC9leHRlcm5hbC1zb3VyY2Utdmlld21vZGVsJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm99IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvJztcclxuaW1wb3J0IHtcclxuICBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3RcclxufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mby1yZXF1ZXN0JztcclxuaW1wb3J0IHtBcnRpY2xlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9hcnRpY2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7T3JkZXJMaW5lU2V0SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWluZm8uYm8nO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcclxuICBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxyXG4gIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2VcclxufSBmcm9tICdAY29saWpuaXQvcHJvZHVjdCc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0JztcclxuaW1wb3J0IHtDYXRhbG9nU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2UvY2F0YWxvZy1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kaWFsb2ctY2F0YWxvZ1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28tZGlhbG9nIChjbG9zZUNsaWNrKT1cImNsb3NlQ2xpY2suZW1pdCgkZXZlbnQpXCIgW0AuZGlzYWJsZWRdPVwiZGVzdHJveWVkXCI+XHJcbiAgICAgIDxjby1pY29uICpuZ0lmPVwic2hvd0V4dGVybmFsQ2F0YWxvZ1wiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJhY2tDbGljaygkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dFeHRlcm5hbENhdGFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNhdGFsb2ctcHJvZHVjdC13cmFwcGVyXCIgW2NsYXNzLnNob3ctcHJvZHVjdF09XCJzaG93UHJvZHVjdFwiPlxyXG4gICAgICAgICAgPGNvLWNhdGFsb2ctc2VhcmNoXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCInQ0FUQUxPRycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzdWJUaXRsZV09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfTkFNRV9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY3JlYXRlRnJvemVuQXJ0aWNsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJzaG93TmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJjYXRhbG9nU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAob25FeHRlcm5hbFNvdXJjZUNsaWNrKT1cImhhbmRsZUV4dGVybmFsU291cmNlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkFkZEFydGljbGVCdXR0b25DbGljayk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkxvb2tBdEFydGljbGVCdXR0b25DbGljayk9XCJoYW5kbGVBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkFydGljbGVDbGljayk9XCJoYW5kbGVBcnRpY2xlQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1jYXRhbG9nLXNlYXJjaD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRhbG9nLWFydGljbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImJhY2stYnV0dG9uLXByb2R1Y3RcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJvZHVjdCA9IGZhbHNlXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICA8YXBwLWlvbmUtcHJvZHVjdCAqbmdJZj1cInNob3dQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NrdV09XCJza3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V0dGluZ3NdPVwiY2F0YWxvZ1NldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmV0dXJuXT1cImlzUmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWRkVG9DYXJ0KT1cImhhbmRsZUFkZEFydGljbGVGcm9tQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BbHRlcm5hdGl2ZUNsaWNrKT1cImhhbmRsZU9uQWx0ZXJuYXRpdmVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYXBwLWlvbmUtcHJvZHVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNhdGFsb2ctcHJvZHVjdC13cmFwcGVyXCIgW2NsYXNzLnNob3ctcHJvZHVjdF09XCJzaG93UHJvZHVjdFwiPlxyXG5cclxuICAgICAgICAgIDxjby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZVxyXG4gICAgICAgICAgICBbZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9dPVwiY2F0YWxvZ0luZm9cIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0NBVEFMT0cnIHwgbG9jYWxpemUgfCBhcHBlbmQ6ICcgJyB8IGFwcGVuZDogZXh0ZXJuYWxDYXRhbG9nTmFtZVwiXHJcbiAgICAgICAgICAgIFtzdWJUaXRsZV09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfTkFNRV9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCJleHRlcm5hbENhdGFsb2dOYW1lXCJcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZXh0ZXJuYWxDYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIChhcnRpY2xlQ2xpY2spPVwiaGFuZGxlQ2F0RmFybUFydGljbGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYWRkQXJ0aWNsZUNsaWNrKT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGlGcmFtZUZlZWRiYWNrUmVjZWl2ZWQpPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0YWxvZy1hcnRpY2xlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJiYWNrLWJ1dHRvbi1wcm9kdWN0XCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Byb2R1Y3QgPSBmYWxzZVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgPGNvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlICpuZ0lmPVwic2hvd1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsU291cmNlXT1cImV4dGVybmFsU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwiY2F0U2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRUb0NhcnQpPVwiaGFuZGxlQWRkQ2F0RmFybUFydGljbGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9jby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cImFydGljbGVGb3JTdG9jayAmJiBzaG93U3RvY2tcIiAoY2xvc2VDbGljayk9XCJjYW5jZWxTdG9ja0J1dHRvbkNsaWNrKClcIj5cclxuICAgICAgPGNvLXN0b2NrIFthcnRpY2xlXT1cImFydGljbGVGb3JTdG9ja1wiIChjYW5jZWxCdXR0b25DbGlja2VkKT1cImNhbmNlbFN0b2NrQnV0dG9uQ2xpY2soKVwiPjwvY28tc3RvY2s+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgICBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcclxuICAgIFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxyXG4gICAge3Byb3ZpZGU6IEJhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLCB1c2VFeGlzdGluZzogQ2F0YWxvZ1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSxcclxuICBdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoXCJzaG93SGlkZVByb2R1Y3RcIiwgW1xyXG4gICAgICBzdGF0ZShcInRydWVcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC01MCUpXCJ9KSksXHJcbiAgICAgIHN0YXRlKFwiZmFsc2VcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oXCJmYWxzZSA8PT4gdHJ1ZVwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ2F0YWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvcHRpb25zOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhcmFtZXRlcnM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXR1cm5BcnRpY2xlT25UaWxlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1JldHVybjogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZUV4dGVuZGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJ0aWNsZUV4dGVuZGVkPigpO1xyXG5cclxuICAvKkBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVBZGRBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4oKTsqL1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaUZyYW1lRmVlZGJhY2s6IEV2ZW50RW1pdHRlcjx7IGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyLCBzb3VyY2VUeXBlOiBzdHJpbmcgfT5cclxuICAgID0gbmV3IEV2ZW50RW1pdHRlcjx7IGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyLCBzb3VyY2VUeXBlOiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFkZEFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8eyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCxcclxuICAgIHF1YW50aXR5OiBudW1iZXJcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQ2F0RmFybUFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgIGNhdGFsb2c6IG51bWJlclxyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHF1YW50aXR5OiBudW1iZXIsIGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRFeHRlcm5hbEFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kaWFsb2ctY2F0YWxvZ1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYXRhbG9nU2V0dGluZ3M6IGFueTtcclxuICBwdWJsaWMgZXh0ZXJuYWxDYXRhbG9nTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxDYXRhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGV4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcclxuICBwdWJsaWMgY2F0YWxvZ0RlZmluaXRpb246IENhdGFsb2dEZWZpbml0aW9uO1xyXG4gIHB1YmxpYyBhcnRpY2xlRm9yU3RvY2s6IEFydGljbGVFeHRlbmRlZDtcclxuICBwdWJsaWMgc2hvd1N0b2NrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFeHRlcm5hbFByb2R1Y3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcbiAgcHVibGljIGNhdFNrdTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYXRBcnROYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIGRlc3Ryb3llZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHRlcm5hbENhdGFsb2dPcHRpb25zID0ge1xyXG4gICAgc2VhcmNoT25TdGFydDogdHJ1ZVxyXG4gIH1cclxuICBwdWJsaWMgY2F0YWxvZ0luZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2F0YWxvZ1NlcnZpY2U6IENhdGFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2F0YWxvZ0V2ZW50U2VydmljZTogQ2F0YWxvZ0V2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FydGljbGVTZXJ2aWNlOiBBcnRpY2xlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5Db25maWdTZXJ2aWNlOiBDYXRhbG9nU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuX3NjcmVlbkNvbmZpZ1NlcnZpY2UubG9hZENvbmZpZygpO1xyXG5cclxuICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLm9wdGlvbnNTZXJ2aWNlLnNldHRpbmdzKTtcclxuICAgIGlmICh0aGlzLmNhdGFsb2dTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jcmVhdGVXZWJPcmRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jYXRhbG9nUGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcclxuICAgICAgYXdhaXQgdGhpcy5fY2F0YWxvZ1NlcnZpY2UuaW5pdCh0aGlzLmNhdGFsb2dTZXR0aW5ncywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9jYXRhbG9nRXZlbnRTZXJ2aWNlLnN0b2NrRGV0YWlsc0NsaWNrLnN1YnNjcmliZSgoYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9ja0J1dHRvbkNsaWNrKGFydGljbGUpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fcHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLnNob3dMb2FkZXIuc3Vic2NyaWJlKChzaG93OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2hvd0xvYWRlci5uZXh0KHNob3cpO1xyXG4gICAgICB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTdG9ja0J1dHRvbkNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSBhcnRpY2xlO1xyXG4gICAgdGhpcy5zaG93U3RvY2sgPSAhdGhpcy5zaG93U3RvY2s7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsU3RvY2tCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrID0gIXRoaXMuc2hvd1N0b2NrO1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRXh0ZXJuYWxTb3VyY2VDbGljayhzb3VyY2U/OiBFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICB0aGlzLmNhdGFsb2dEZWZpbml0aW9uID0gc291cmNlLmNhdGFsb2dEZWZpbml0aW9uO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gc291cmNlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICBsZXQgaW5mbzogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSBuZXcgRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCkpIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QgPSB0aGlzLmJ1aWxkRXh0ZXJuYWxDYXRhbG9nUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICBpbmZvID0gYXdhaXQgdGhpcy5fYXJ0aWNsZVNlcnZpY2UuZ2V0V2ViVmlld1N0YXJ0dXBJbmZvKHJlcXVlc3QpO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ0luZm8gPSBpbmZvO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5zaG93VG9hc3QoXCJFWFRFUk5BTF9DQVRBTE9HX0lURU1TX0FMUkVBRFlfT1JERVJFRFwiLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZXR1cm5BcnRpY2xlT25UaWxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5za3UgPSBhcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcnRpY2xlQ2xpY2tlZC5uZXh0KGFydGljbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVDbGljayhqc29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQXJ0aWNsZUNsaWNrZWQubmV4dCh7YXJ0aWNsZToganNvbiwgcXVhbnRpdHk6IDF9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBZGRBcnRpY2xlRnJvbUFydGljbGVDbGljayhkYXRhOiB7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEFydGljbGVDbGlja2VkLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2soanNvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEV4dGVybmFsQXJ0aWNsZUNsaWNrZWQubmV4dChqc29uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVCYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGpzb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pRnJhbWVGZWVkYmFjay5lbWl0KHtcclxuICAgICAganNvblN0cmluZzoganNvbixcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpLFxyXG4gICAgICBzb3VyY2VUeXBlOiB0aGlzLmV4dGVybmFsU291cmNlLnR5cGVcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSAhPT0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuV2Vic2hvcCkge1xyXG4gICAgICB0aGlzLnNob3dFeHRlcm5hbENhdGFsb2cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoZGF0YTogeyBhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkLCBzZXR0aW5nczogYW55IH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0U2t1ID0gZGF0YS5hcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICB0aGlzLmNhdEFydE5hbWUgPSBkYXRhLmFydGljbGUubmFtZTtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZChkYXRhOiB7IHF1YW50aXR5OiBudW1iZXIsIGFydGljbGU6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgcXVhbnRpdHk6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIGpzb25TdHJpbmc6IGRhdGEuYXJ0aWNsZSxcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU9uQWx0ZXJuYXRpdmVDbGljayhhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlLmFydGljbGVOdW1iZXIpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuc2t1ID0gcmVzdWx0LmFydGljbGVOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZHVjdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMgJiYgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBvcmRlckxpbmVTZXRDb2Rlczogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmlsdGVyKG8gPT4gby5jYXRhbG9nSWQgPSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCkpLm1hcChvID0+IG8ub3JkZXJMaW5lU2V0Q29kZSk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgIGlmICgob3JkZXJMaW5lU2V0Q29kZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gbC5vcmRlckxpbmVTZXRDb2RlKSA+PSAwKVxyXG4gICAgICAgICAgJiYgbC5hcnRpY2xlTGluZVN0YXR1cyAmJiBsLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eU9yZGVyZWQnKSAmJiBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5T3JkZXJlZCA+IDApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3QoKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0IHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpO1xyXG4gICAgcmVxdWVzdC5wb3NFbXBsb3llZSA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhhbmRsZWRCeTtcclxuICAgIHJlcXVlc3QuaW9uZU9yZGVyTnIgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbk5yLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24pIHtcclxuICAgICAgcmVxdWVzdC5wb3NOYW1lID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24uZmFtaWx5TmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QucG9zTmFtZSA9ICdOTkInIC8vTm9nIE5pZXQgQmVwYWFsZFxyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCk7XHJcbiAgICByZXR1cm4gcmVxdWVzdFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cyAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG9yZGVyTGluZVNldDogT3JkZXJMaW5lU2V0SW5mbyA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmluZChzZXQgPT4gc2V0LmNhdGFsb2dJZCA9PT0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpKTtcclxuICAgICAgaWYgKG9yZGVyTGluZVNldCkge1xyXG4gICAgICAgIHJlcXVlc3QucG9zQXVwaW5nID0gb3JkZXJMaW5lU2V0LmF1cE9yZGVyTnJcclxuICAgICAgICBpZiAocmVxdWVzdC5wb3NBdXBpbmcpIHtcclxuICAgICAgICAgIHJlcXVlc3QucG9zU3RhdHVzID0gJ0NoYW5nZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcmRlckxpbmVTZXQudmRQcm9qZWN0SWQpIHtcclxuICAgICAgICAgIHJlcXVlc3Qub3JkZXJJZCA9IG9yZGVyTGluZVNldC52ZFByb2plY3RJZDtcclxuICAgICAgICB9IGVsc2UgaWYgKG9yZGVyTGluZVNldC53dFByb2plY3ROcikge1xyXG4gICAgICAgICAgcmVxdWVzdC5vcmRlcklkID0gb3JkZXJMaW5lU2V0Lnd0UHJvamVjdE5yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=