@pmcretail/mapper-library 0.0.34 → 0.0.35

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.
@@ -344,66 +344,47 @@ export class WebReturnSalesforceMapperBuilderClass {
344
344
  * @return {?}
345
345
  */
346
346
  transactionPromotionProductPortionCalc(txDoc, promotion) {
347
- /** @type {?} */
348
- let total = 0;
349
- /** @type {?} */
350
- let percentage = 0;
351
- {
352
- console.log(`ebasket: transactionPromotionProductPortionCalc: trnsactionPromotion: ${JSON.stringify(promotion)}`);
353
- if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {
354
- txDoc.basket.products.forEach((/**
355
- * @param {?} product
356
- * @return {?}
357
- */
358
- (product) => {
359
- product = this.validateProductItemDiscount(product);
360
- if (promotion.trigger && promotion.trigger.length > 0) {
361
- promotion.trigger.forEach((/**
362
- * @param {?} t
363
- * @return {?}
364
- */
365
- (t) => {
366
- if (t.itemLineId === product.itemLineId.toString()) {
367
- product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;
368
- }
369
- }));
370
- }
371
- }));
372
- }
373
- else {
374
- txDoc.basket.products.forEach((/**
375
- * @param {?} p
376
- * @return {?}
377
- */
378
- (p) => {
379
- if (promotion.itemLineIds && promotion.itemLineIds.includes(p.itemLineId) && !p.giftCard) {
380
- p = this.validateProductItemDiscount(p);
381
- /** @type {?} */
382
- const productContributionInTotal = this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnDiscountsPortion) +
383
- this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnPromotionsPortion) -
384
- this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.refundPortion);
385
- total += (p.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal));
386
- }
387
- }));
388
- console.log(`ebasket: trnsactionPromotion: ${JSON.stringify(promotion)}, selected products total: ${total}`);
389
- txDoc.basket.products.forEach((/**
390
- * @param {?} product
391
- * @return {?}
392
- */
393
- (product) => {
394
- product = this.validateProductItemDiscount(product);
347
+ console.log(`ebasket: transactionPromotionProductPortionCalc: trnsactionPromotion: ${JSON.stringify(promotion)}`);
348
+ if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {
349
+ txDoc.basket.products.forEach((/**
350
+ * @param {?} product
351
+ * @return {?}
352
+ */
353
+ (product) => {
354
+ product = this.validateProductItemDiscount(product);
355
+ if (promotion.trigger && promotion.trigger.length > 0) {
356
+ promotion.trigger.forEach((/**
357
+ * @param {?} t
358
+ * @return {?}
359
+ */
360
+ (t) => {
361
+ if (t.itemLineId === product.itemLineId.toString()) {
362
+ product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;
363
+ }
364
+ }));
365
+ }
366
+ }));
367
+ }
368
+ else {
369
+ txDoc.basket.products.forEach((/**
370
+ * @param {?} product
371
+ * @return {?}
372
+ */
373
+ (product) => {
374
+ product = this.validateProductItemDiscount(product);
375
+ if (promotion.itemLineIds.includes(+product.itemLineId)) {
395
376
  /** @type {?} */
396
- const productContributionInTotal = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion) +
397
- this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion) -
398
- this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.refundPortion);
399
- if (promotion.itemLineIds.includes(product.itemLineId)) {
400
- percentage = ((product.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal)) / total) * 100;
401
- product.itemDiscounts.trnPromotionsPortion +=
402
- (promotion.promotionAmount * percentage) / 100;
403
- product.itemDiscounts.trnPromotionsPortion = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion);
404
- }
405
- }));
406
- }
377
+ const productItem = this.orderDetails.product_items.find((/**
378
+ * @param {?} productItem
379
+ * @return {?}
380
+ */
381
+ productItem => productItem.product_id === product.SKU));
382
+ /** @type {?} */
383
+ const transactionPromotionPortion = (productItem && productItem.price_after_item_discount && productItem.price_after_order_discount) ?
384
+ (productItem.price_after_item_discount - productItem.price_after_order_discount) : 0;
385
+ product.itemDiscounts.trnPromotionsPortion += this.numberUtilService.trimTo2Decimal2(transactionPromotionPortion);
386
+ }
387
+ }));
407
388
  }
408
389
  return txDoc;
409
390
  }
@@ -685,4 +666,4 @@ if (false) {
685
666
  */
686
667
  WebReturnSalesforceMapperBuilderClass.prototype.currencyPipe;
687
668
  }
688
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BwbWNyZXRhaWwvbWFwcGVyLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBcUYsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBZ0MsU0FBUyxFQUFtQixnQkFBZ0IsRUFBa0ksTUFBTSx3QkFBd0IsQ0FBQztBQUM3WSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8scUNBQXFDOzs7OztJQWdDOUMsWUFBWSxZQUEwQixFQUMxQixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQTlCL0Isb0JBQWUsR0FBd0I7WUFDM0MsRUFBRSxFQUFFLEVBQUU7WUFDTixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsV0FBVyxFQUFFLEVBQUU7WUFDZixrQkFBa0IsRUFBRSxFQUFFO1lBQ3RCLFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEVBQUU7WUFDVixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osY0FBYyxFQUFFLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osa0JB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Q2hCLENBQUM7Ozs7SUFFRCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztDQUNKOzs7Ozs7SUE3ZUcsNkRBQW1DOzs7OztJQUNuQyxnRUEwQkM7O0lBQ0Qsa0VBQXVCOzs7OztJQUduQiw2REFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEFkZHJlc3MsIEJhc2tldFN1bW1hcnksIEJhc2tldFN1bW1hcnlEZXRhaWxzLCBDdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzLCBDdXN0b21lciwgREVMSVZFUllfTUVUSE9EUywgUFJPTU9USU9OX0xFVkVMLCBQUk9NT1RJT05fVFlQRSwgSU5JVElBVElOR19NT0RVTEUsIExpbmVQcm9tb3Rpb25zLCBPcmRlckRldGFpbHMsIFBST1ZJREVSUywgU2hpcG1lbnREZXRhaWxzLCBUUkFOU0FDVElPTl9UWVBFLCBUcmFuc2FjdGlvbkRvY3VtZW50LCBUcmFuc2FjdGlvbkluZm8sIFRyYW5zYWN0aW9uUHJvbW90aW9uLCBUcmlnZ2VyLCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscywgVFByb2R1Y3QsIFJlZnVuZFByb2R1Y3RDaGFuZ2UgfSBmcm9tIFwiLi9tYXBwZXItbGlicmFyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOdW1iZXJVdGlsU2VydmljZSB9IGZyb20gXCIuL251bWJlci11dGlsLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzIHtcclxuXHJcbiAgICBwcml2YXRlIG9yZGVyRGV0YWlsczogT3JkZXJEZXRhaWxzO1xyXG4gICAgcHJpdmF0ZSB3ZWJSZXR1cm5PYmplY3Q6IFRyYW5zYWN0aW9uRG9jdW1lbnQgPSB7XHJcbiAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgIG9yZ0NvZGU6IFwiXCIsXHJcbiAgICAgICAgc3RvcmVJZDogXCJcIixcclxuICAgICAgICBzdG9yZU5vZGVJZDogXCJcIixcclxuICAgICAgICBzdG9yZU5vZGVTdHJ1Y3R1cmU6IFwiXCIsXHJcbiAgICAgICAgZGV2aWNlSWQ6IFwiXCIsXHJcbiAgICAgICAgdGVybWluYWxJZDogXCJcIixcclxuICAgICAgICBpbml0aWF0aW5nTW9kdWxlOiBcIlwiLFxyXG4gICAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICAgICAgYmFza2V0OiB7fSxcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5OiB7fSxcclxuICAgICAgICBiYXNlQ3VycmVuY3k6IFwiXCIsXHJcbiAgICAgICAgY3VzdG9tZXI6IHtcclxuICAgICAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgICAgICBlbWFpbDogJycsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiAnJyxcclxuICAgICAgICAgICAgYmlsbGluZ0FkZHJlc3M6IFtdLFxyXG4gICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3M6IFtdLFxyXG4gICAgICAgICAgICBzaGlwbWVudERldGFpbHM6IFtdLFxyXG4gICAgICAgICAgICB0ZWxlcGhvbmU6ICcnLFxyXG4gICAgICAgICAgICBwb3N0Q29kZTogJycsXHJcbiAgICAgICAgICAgIG5vQ3VzdG9tZXJTZWxlY3RlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHM6IHt9IGFzIEN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHNcclxuICAgIH1cclxuICAgIG51bWJlclV0aWxTZXJ2aWNlOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3Iob3JkZXJEZXRhaWxzOiBPcmRlckRldGFpbHMsXHJcbiAgICAgICAgcHJpdmF0ZSBjdXJyZW5jeVBpcGU/OiBDdXJyZW5jeVBpcGVcclxuICAgICAgICApIHtcclxuICAgICAgICBpZiAob3JkZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzID0gb3JkZXJEZXRhaWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlID0gbmV3IE51bWJlclV0aWxTZXJ2aWNlKGN1cnJlbmN5UGlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2ViUmV0dXJuQ29tbW9uTWFwcGVyKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHdlYlJldHVybkNvbW1vbk1hcHBlciBzdGFydGVkLi4uXCIpO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0Wyd0eXBlJ10gPSBUUkFOU0FDVElPTl9UWVBFLldFQl9SRVRVUk5TO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0WydkYXRldGltZSddID0gdGhpcy5nZXRVVENEYXRlVGltZSh0aGlzLm9yZGVyRGV0YWlscy5sYXN0X21vZGlmaWVkKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNlQ3VycmVuY3kgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXJyZW5jeTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5zdWJzaWRpYXJ5SWQgPSAnMSc7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5pbml0aWF0aW5nTW9kdWxlID0gSU5JVElBVElOR19NT0RVTEUuRUJBU0tFVDtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5jcmVhdGVkQXQgPSB0aGlzLmdldFVUQ0RhdGVUaW1lKHRoaXMub3JkZXJEZXRhaWxzLmNyZWF0aW9uX2RhdGUpO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVwZGF0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudHJhbnNDb21wbGV0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3RbJ2V4dGVybmFsVHJhbnNhY3Rpb25JZCddID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm87XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogd2ViUmV0dXJuQ29tbW9uTWFwcGVyIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGV4cG9ydChzdGF0dXMsIGRldGFpbHMpIHtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHBvcnQgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHN0YXR1czpcIiwgc3RhdHVzKTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBkZXRhaWxzOlwiLCBKU09OLnN0cmluZ2lmeShkZXRhaWxzKSk7XHJcbiAgICAvLyAgICAgaWYgKHN0YXR1cyAmJiBkZXRhaWxzICYmIGRldGFpbHMucHJvdmlkZXJzICYmIGRldGFpbHMucHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgZGV0YWlscy5wcm92aWRlcnMuZm9yRWFjaChcclxuICAgIC8vICAgICAgICAgICAgIHByb3ZpZGVyT2JqID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJPYmoucHJvdmlkZXIgJiYgcHJvdmlkZXJPYmoucHJvdmlkZXIgPT09IFBST1ZJREVSUy5TQUxFU0ZPUkNFKSB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IHRydWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICApO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHBvcnQgbWFwcGluZyBlbmQuLi5cIilcclxuICAgIC8vICAgICByZXR1cm4gdGhpcztcclxuICAgIC8vIH1cclxuXHJcbiAgICBnZXREZWxpdmVyeU1ldGhvZCgpIHtcclxuICAgICAgICBpZih0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMgJiYgdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2hpcFRvU3RvcmVTaGlwbWVudCA9IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5maW5kKHNoaXBtZW50ID0+IHNoaXBtZW50LmNfZnJvbVN0b3JlSWQpO1xyXG4gICAgICAgICAgICBpZihzaGlwVG9TdG9yZVNoaXBtZW50KSByZXR1cm4gREVMSVZFUllfTUVUSE9EUy5TSElQX1RPX1NUT1JFO1xyXG4gICAgICAgICAgICBlbHNlIHJldHVybiBERUxJVkVSWV9NRVRIT0RTLkRFTElWRVJZO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvZHVjdCgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBwcm9kdWN0IG1hcHBpbmcgc3RhcnRlZC4uLlwiKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXRbJ3Byb2R1Y3RzJ10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgICAgKHByb2R1Y3QsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdE9iaiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb2R1Y3QuaXRlbV90ZXh0ID8gcHJvZHVjdC5pdGVtX3RleHQgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0tVOiBwcm9kdWN0LnByb2R1Y3RfaWQgPyBwcm9kdWN0LnByb2R1Y3RfaWQgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRRdWFudGl0eTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuYmFzZV9wcmljZSA/IHByb2R1Y3QuYmFzZV9wcmljZSA6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1MaW5lSWQ6IChpbmRleCArIDEpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiB0aGlzLmdldERlbGl2ZXJ5TWV0aG9kKCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMaW5lUHJpY2U6IHByb2R1Y3QucHJpY2UgPyBwcm9kdWN0LnByaWNlIDogMFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnByaWNlICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0Wydwcm9kdWN0cyddLnB1c2gocHJvZHVjdE9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBwcm9kdWN0IG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgbGluZVByb21vdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBsaW5lUHJvbW90aW9uIG1hcHBpbmcgc3RhcnRlZC4uLlwiKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbiA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XHJcbiAgICAgICAgbGV0IGxpbmVQcm9tb3Rpb25BcnJheSA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XHJcbiAgICAgICAgaWYgKHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuaXRlbV9pZCA9IChpbmRleCArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9tb3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb21vdGlvbi5jb3Vwb25fY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluZVByb21vdGlvbk9iaiA9IHt9IGFzIExpbmVQcm9tb3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlciA9IHt9IGFzIFRyaWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuaXRlbUxpbmVJZCA9IHByb2R1Y3QuaXRlbV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai50cmlnZ2VyID0gW10gYXMgVHJpZ2dlcltdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnRyaWdnZXIucHVzaCh0cmlnZ2VyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmouaXRlbUxpbmVJZCA9IGluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25JZCA9IHByb21vdGlvbi5wcm9tb3Rpb25faWQgPyBwcm9tb3Rpb24ucHJvbW90aW9uX2lkIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvblR5cGUgPSBwcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiBwcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudC50eXBlID8gcHJvbW90aW9uLmFwcGxpZWRfZGlzY291bnQudHlwZSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHByb21vdGlvbi5wcmljZSA/IE1hdGguYWJzKHByb21vdGlvbi5wcmljZSkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLm5hbWUgPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgID8gcHJvbW90aW9uLmNvdXBvbl9jb2RlIDogKHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDonJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uSW5mbyA9IHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uTGluZVByaWNlID0gcHJvZHVjdC5wcmljZSAtIE1hdGguYWJzKHByb21vdGlvbi5wcmljZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25BcnJheS5wdXNoKGxpbmVQcm9tb3Rpb25PYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC5saW5lUHJvbW90aW9uID0gbGluZVByb21vdGlvbkFycmF5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGxpbmVQcm9tb3Rpb24gbWFwcGluZyBlbmRlZC4uLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2FjdGlvblByb21vdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiB0cmFuc2FjdGlvblByb21vdGlvbiBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcblxyXG4gICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gdGhpcy5nZXRUcmFuc2FjdGlvblByb21vdGlvbnModGhpcy5vcmRlckRldGFpbHMpO1xyXG5cclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHRyYW5zYWN0aW9uUHJvbW90aW9uIG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJhbnNhY3Rpb25Qcm9tb3Rpb25zKGJhc2tldCk6IFRyYW5zYWN0aW9uUHJvbW90aW9uW10ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gW10gYXMgVHJhbnNhY3Rpb25Qcm9tb3Rpb25bXTtcclxuICAgICAgICAgICAgaWYgKGJhc2tldC5vcmRlcl9wcmljZV9hZGp1c3RtZW50cyAmJiBiYXNrZXQub3JkZXJfcHJpY2VfYWRqdXN0bWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYmFza2V0Lm9yZGVyX3ByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgICAgICAgKHRyYW5zYWN0aW9uUHJvbW90aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbk9iaiA9IHt9IGFzIFRyYW5zYWN0aW9uUHJvbW90aW9uO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgPyB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoubmFtZSA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbl9jb2RlID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uY291cG9uX2NvZGUgOiAodHJhbnNhY3Rpb25Qcm9tb3Rpb24gLml0ZW1fdGV4dD90cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgOiAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByaWNlID8gTWF0aC5hYnModHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJpY2UpIDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoucHJvbW90aW9uSWQgPSB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25faWQgPyB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25faWQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoucHJvbW90aW9uSW5mbyA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA/IHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25UeXBlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgPyB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouaXRlbUxpbmVJZHMgPSB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLm1hcCgocHJvZHVjdCwgaW5kZXgpID0+IGluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoudHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLmNvdXBvbkNvZGUgPSB0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnN1YkxldmVsVHlwZSA9IFBST01PVElPTl9MRVZFTC5UUkFOU0FDVElPTjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5LnB1c2godHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmopO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBnZXRUcmFuc2FjdGlvblByb21vdGlvbnMgOiBcIiwgSlNPTi5zdHJpbmdpZnkodHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiAgZmFpbGVkOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6ICBmYWlsZWQ6XCIsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxpbmVQcm9tb3Rpb25XaXRoQ291cG9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSB7fSBhcyBUcmFuc2FjdGlvblByb21vdGlvbjtcclxuICAgICAgICAgICAgbGV0IHRyaWdnZXJQcm9tb3Rpb24gPSBbXSBhcyBUcmlnZ2VyW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zICYmIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1faWQgPSAoaW5kZXggKyAxKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb21vdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlciA9IHt9IGFzIFRyaWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLml0ZW1MaW5lSWQgPSBwcm9kdWN0Lml0ZW1faWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci50b3RhbFF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5wcm9tb3Rpb25BbW91bnQgPSBwcm9tb3Rpb24ucHJpY2UgPyBNYXRoLmFicyhwcm9tb3Rpb24ucHJpY2UpIDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb24gPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgPyBwcm9tb3Rpb24uY291cG9uX2NvZGUgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbiA9IHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnByb21vdGlvbklkID0gcHJvbW90aW9uLnByb21vdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJQcm9tb3Rpb24ucHVzaCh0cmlnZ2VyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHJpZ2dlclByb21vdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5kaXNwbGF5VGV4dCA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLm5hbWUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50ID0gLSh0cmlnZ2VyUHJvbW90aW9uLnJlZHVjZSgobiwgeyBwcm9tb3Rpb25BbW91bnQgfSkgPT4gbiArIHByb21vdGlvbkFtb3VudCwgMCkpO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uSWQgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnByb21vdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uSW5mbyA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbkNvZGUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbUxpbmVJZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnR5cGUgPSBQUk9NT1RJT05fVFlQRS5DT1VQT047XHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5zdWJMZXZlbFR5cGUgPSBQUk9NT1RJT05fTEVWRUwuTElORTtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnRyaWdnZXIgPSB0cmlnZ2VyUHJvbW90aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGluZVByb21vdGlvbiBtYXBwaW5nIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImUtYmFza2V0OiB1cGRhdGVMaW5lUHJvbW90aW9uV2l0aENvdXBvblwiLCBKU09OLnN0cmluZ2lmeSh0cmFuc2FjdGlvblByb21vdGlvbikpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uUHJvbW90aW9uICYmIHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbklkICkge1xyXG4gICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHVzaCh0cmFuc2FjdGlvblByb21vdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWJhc2tldDogU2FsZXNmb3JjZTogbGluZVByb21vdGlvbiBtYXBwaW5nPT4gZmFpbGVkOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWJhc2tldDogU2FsZXNmb3JjZTogbGluZVByb21vdGlvbiBtYXBwaW5nPT4gZmFpbGVkOlwiLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUcmFuc2FjdGlvblByb21vdGlvblBydGlvbkNhbGMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbiAmJiB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uLmZvckVhY2godHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKHRoaXMud2ViUmV0dXJuT2JqZWN0ICwgdHIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKFxyXG4gICAgICAgIHR4RG9jOiBUcmFuc2FjdGlvbkRvY3VtZW50LFxyXG4gICAgICAgIHByb21vdGlvbjogVHJhbnNhY3Rpb25Qcm9tb3Rpb25cclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICBsZXQgcGVyY2VudGFnZSA9IDA7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGBlYmFza2V0OiB0cmFuc2FjdGlvblByb21vdGlvblByb2R1Y3RQb3J0aW9uQ2FsYzogdHJuc2FjdGlvblByb21vdGlvbjogJHtKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgICAgICBwcm9tb3Rpb25cclxuICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYocHJvbW90aW9uLnR5cGUgPT09IFBST01PVElPTl9UWVBFLkNPVVBPTiAmJiBwcm9tb3Rpb24uc3ViTGV2ZWxUeXBlID09PSBQUk9NT1RJT05fTEVWRUwuTElORSlcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHhEb2MuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcclxuICAgICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy52YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocHJvZHVjdCk7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChwcm9tb3Rpb24udHJpZ2dlciAmJiBwcm9tb3Rpb24udHJpZ2dlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9tb3Rpb24udHJpZ2dlci5mb3JFYWNoKCh0KT0+e1xyXG4gICAgICAgICAgICAgICAgICBpZih0Lml0ZW1MaW5lSWQgPT09IHByb2R1Y3QuaXRlbUxpbmVJZC50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuUHJvbW90aW9uc1BvcnRpb24gKz0gdC5wcm9tb3Rpb25BbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR4RG9jLmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwcm9tb3Rpb24uaXRlbUxpbmVJZHMgJiYgcHJvbW90aW9uLml0ZW1MaW5lSWRzLmluY2x1ZGVzKHAuaXRlbUxpbmVJZCkgJiYgIXAuZ2lmdENhcmQpIHtcclxuICAgICAgICAgICAgICBwID0gdGhpcy52YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0Q29udHJpYnV0aW9uSW5Ub3RhbCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwLml0ZW1EaXNjb3VudHMudHJuRGlzY291bnRzUG9ydGlvbikgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5udW1iZXJVdGlsU2VydmljZS50cmltVG8yRGVjaW1hbDIocC5pdGVtRGlzY291bnRzLnRyblByb21vdGlvbnNQb3J0aW9uKSAtXHJcbiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwLml0ZW1EaXNjb3VudHMucmVmdW5kUG9ydGlvbik7XHJcbiAgICAgICAgICAgICAgdG90YWwgKz0gKHAudG90YWwgLSB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwcm9kdWN0Q29udHJpYnV0aW9uSW5Ub3RhbCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgZWJhc2tldDogdHJuc2FjdGlvblByb21vdGlvbjogJHtKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgICAgICBwcm9tb3Rpb25cclxuICAgICAgICAgICAgKX0sIHNlbGVjdGVkIHByb2R1Y3RzIHRvdGFsOiAke3RvdGFsfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0eERvYy5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xyXG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy52YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocHJvZHVjdCk7XHJcbiAgICBcclxuICAgICAgICAgICAgY29uc3QgcHJvZHVjdENvbnRyaWJ1dGlvbkluVG90YWwgPVxyXG4gICAgICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuRGlzY291bnRzUG9ydGlvbikgK1xyXG4gICAgICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuUHJvbW90aW9uc1BvcnRpb24pIC1cclxuICAgICAgICAgICAgdGhpcy5udW1iZXJVdGlsU2VydmljZS50cmltVG8yRGVjaW1hbDIocHJvZHVjdC5pdGVtRGlzY291bnRzLnJlZnVuZFBvcnRpb24pO1xyXG4gICAgXHJcbiAgICAgICAgICAgIGlmIChwcm9tb3Rpb24uaXRlbUxpbmVJZHMuaW5jbHVkZXMocHJvZHVjdC5pdGVtTGluZUlkKSkge1xyXG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSAoKHByb2R1Y3QudG90YWwtIHRoaXMubnVtYmVyVXRpbFNlcnZpY2UudHJpbVRvMkRlY2ltYWwyKHByb2R1Y3RDb250cmlidXRpb25JblRvdGFsKSkgLyB0b3RhbCkgKiAxMDA7XHJcbiAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzLnRyblByb21vdGlvbnNQb3J0aW9uICs9XHJcbiAgICAgICAgICAgICAgKHByb21vdGlvbi5wcm9tb3Rpb25BbW91bnQgKiBwZXJjZW50YWdlKSAvIDEwMDtcclxuICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuUHJvbW90aW9uc1BvcnRpb24gPSB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMihwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuUHJvbW90aW9uc1BvcnRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eERvYztcclxuICAgICAgfVxyXG5cclxuICAgICAgXHJcbiAgICAgIHB1YmxpYyB2YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocHJvZHVjdDogVFByb2R1Y3QpIHtcclxuICAgICAgICBpZiAoIXByb2R1Y3QuaXRlbURpc2NvdW50cykge1xyXG4gICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzID0ge1xyXG4gICAgICAgICAgICB0cm5EaXNjb3VudHNQb3J0aW9uOiAwLFxyXG4gICAgICAgICAgICB0cm5Qcm9tb3Rpb25zUG9ydGlvbjogMCxcclxuICAgICAgICAgICAgcmVmdW5kUG9ydGlvbjogMCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgXHJcbiAgICBjdXN0b21lcigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBjdXN0b21lciBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcbiAgICAgICAgbGV0IGN1c3RvbWVyT2JqID0ge30gYXMgQ3VzdG9tZXI7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouZW1haWwgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvICYmIHRoaXMub3JkZXJEZXRhaWxzLmN1c3RvbWVyX2luZm8uZW1haWwgPyB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvLmVtYWlsIDogJyc7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouZmlyc3ROYW1lID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5maXJzdF9uYW1lID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmZpcnN0X25hbWUgOiAnJztcclxuICAgICAgICBjdXN0b21lck9iai5sYXN0TmFtZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MubGFzdF9uYW1lID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmxhc3RfbmFtZSA6ICcnO1xyXG5cclxuICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzID0gW10gYXMgQWRkcmVzc1tdO1xyXG4gICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5mb3JFYWNoKFxyXG4gICAgICAgICAgICBzaGlwbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzT2JqID0ge30gYXMgQWRkcmVzcztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5pZCA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5pZCA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuaWQgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5jb3VudHJ5X2NvZGUgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmFkZHJlc3MxID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmFkZHJlc3MxID8gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5hZGRyZXNzMSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNpdHkgPSBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzICYmIHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuY2l0eSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuY2l0eSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5wb3N0Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5wb3N0YWxfY29kZSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MucG9zdGFsX2NvZGUgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzcy5wdXNoKHNoaXBwaW5nQWRkcmVzc09iaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgY3VzdG9tZXJPYmouc2hpcHBpbmdBZGRyZXNzID0gc2hpcHBpbmdBZGRyZXNzO1xyXG5cclxuICAgICAgICBsZXQgYmlsbGluZ0FkZHJlc3MgPSBbXSBhcyBBZGRyZXNzW107XHJcbiAgICAgICAgbGV0IGJpbGxpbmdBZGRyZXNzT2JqID0ge30gYXMgQWRkcmVzcztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5pZCA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgOiAnJztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY291bnRyeV9jb2RlID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmFkZHJlc3MxID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5hZGRyZXNzMSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5hZGRyZXNzMSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNpdHkgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNpdHkgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY2l0eSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5wb3N0Q29kZSA9ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzLnB1c2goYmlsbGluZ0FkZHJlc3NPYmopO1xyXG4gICAgICAgIGN1c3RvbWVyT2JqLmJpbGxpbmdBZGRyZXNzID0gYmlsbGluZ0FkZHJlc3M7XHJcblxyXG4gICAgICAgIGxldCBzaGlwbWVudERldGFpbHMgPSBbXSBhcyBTaGlwbWVudERldGFpbHNbXTtcclxuICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgc2hpcG1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNoaXBtZW50RGV0YWlsc09iaiA9IHt9IGFzIFNoaXBtZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50RGV0YWlsc09iai5pZCA9IHNoaXBtZW50LnNoaXBtZW50X2lkID8gc2hpcG1lbnQuc2hpcG1lbnRfaWQgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50RGV0YWlsc09iai5kZWxpdmVyeUdyb3VwID0gc2hpcG1lbnQuc2hpcG1lbnRfaWQgPyBzaGlwbWVudC5zaGlwbWVudF9pZCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnREZXRhaWxzLnB1c2goc2hpcG1lbnREZXRhaWxzT2JqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouc2hpcG1lbnREZXRhaWxzID0gc2hpcG1lbnREZXRhaWxzO1xyXG5cclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5jdXN0b21lciA9IGN1c3RvbWVyT2JqO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGN1c3RvbWVyIG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xyXG4gICAgICAgIGxldCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyA9IFtdIGFzIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzW107XHJcbiAgICAgICAgaWYgKHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cyAmJiB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmogPSB7fSBhcyBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25JbmZvID0ge30gYXMgVHJhbnNhY3Rpb25JbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLnVuaXF1ZUlkID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm8gPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl9ubyA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLnByb3ZpZGVyVHlwZSA9IFBST1ZJREVSUy5TQUxFU0ZPUkNFO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5zaGlwcGluZ0lkID0gc2hpcG1lbnQuc2hpcHBpbmdfbWV0aG9kICYmIHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA/IHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5leHRlcm5hbFNoaXBwaW5nSWQgPSBzaGlwbWVudC5zaGlwbWVudF9pZCA/IHNoaXBtZW50LnNoaXBtZW50X2lkIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmouZGV0YWlscyA9IHRyYW5zYWN0aW9uSW5mbztcclxuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscy5wdXNoKGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgPSBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyBtYXBwaW5nIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGJhc2tldFN1bW1hcnkoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogYmFza2V0U3VtbWFyeSBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcbiAgICAgICAgbGV0IGJhc2tldFN1bW1hcnkgPSB7fSBhcyBCYXNrZXRTdW1tYXJ5O1xyXG4gICAgICAgIGxldCBiYXNrZXRTdW1tYXJ5V2ViT3JkZXIgPSB7fSBhcyBCYXNrZXRTdW1tYXJ5RGV0YWlscztcclxuICAgICAgICBjb25zdCBsaW5lUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbi5tYXAobGluZVByb21vdGlvbiA9PiBsaW5lUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25Qcm9tb3Rpb25Ub3RhbCA9IHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbi5tYXAodHJhbnNhY3Rpb25Qcm9tb3Rpb24gPT4gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50KS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUpID0+IGFjY3VtdWxhdG9yICsgY3VycmVudFZhbHVlLCAwKTtcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5LmRpc2NvdW50VG90YWwgPSBsaW5lUHJvbW90aW9uVG90YWwgKyB0cmFuc2FjdGlvblByb21vdGlvblRvdGFsO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuVkFUVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuc2FsZVRvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XHJcbiAgICAgICAgYmFza2V0U3VtbWFyeS5iYXNrZXRUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkudG90YWxJdGVtcyA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuc2hpcHBpbmdUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBwaW5nX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuYmFza2V0VG90YWxXaXRoU2hpcHBpbmdUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5zaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA6IDA7XHJcbiAgICAgICAgYmFza2V0U3VtbWFyeVdlYk9yZGVyLmJhc2tldFRvdGFsV2l0aFNoaXBwaW5nVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA/IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsIDogMDtcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5LndlYk9yZGVyID0gYmFza2V0U3VtbWFyeVdlYk9yZGVyO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFN1bW1hcnkgPSBiYXNrZXRTdW1tYXJ5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGJhc2tldFN1bW1hcnkgbWFwcGluZyBlbmRlZC4uLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBkZXZpY2VJZChkZXZpY2VJZCkge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmRldmljZUlkID0gZGV2aWNlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGVybWluYWxJZCh0ZXJtaW5hbElkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudGVybWluYWxJZCA9IHRlcm1pbmFsSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb3JnQ29kZShvcmdDb2RlKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Qub3JnQ29kZSA9IG9yZ0NvZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVJZChzdG9yZUlkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVJZCA9IHN0b3JlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVOb2RlSWQoc3RvcmVOb2RlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnN0b3JlTm9kZUlkID0gc3RvcmVOb2RlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVOb2RlU3RydWN0dXJlKHN0b3JlTm9kZVN0cnVjdHVyZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVOb2RlU3RydWN0dXJlID0gc3RvcmVOb2RlU3RydWN0dXJlO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGRvY0lkKGRvY0lkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaWQgPSBkb2NJZDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVVc2VySUQodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC51c2VySWQgPSB1c2VySUQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVXNlck5hbWUobmFtZSkge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVzZXJOYW1lID0gbmFtZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBidWlsZCgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBtYXBwaW5nIGRvbmUuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViUmV0dXJuT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVUQ0RhdGVUaW1lKGRhdGUpIHtcclxuICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BwbWNyZXRhaWwvbWFwcGVyLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBcUYsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBZ0MsU0FBUyxFQUFtQixnQkFBZ0IsRUFBa0ksTUFBTSx3QkFBd0IsQ0FBQztBQUM3WSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8scUNBQXFDOzs7OztJQWdDOUMsWUFBWSxZQUEwQixFQUMxQixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQTlCL0Isb0JBQWUsR0FBd0I7WUFDM0MsRUFBRSxFQUFFLEVBQUU7WUFDTixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsV0FBVyxFQUFFLEVBQUU7WUFDZixrQkFBa0IsRUFBRSxFQUFFO1lBQ3RCLFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEVBQUU7WUFDVixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osY0FBYyxFQUFFLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osa0JB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QUM7Ozs7SUFFRCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztDQUNKOzs7Ozs7SUFqZEcsNkRBQW1DOzs7OztJQUNuQyxnRUEwQkM7O0lBQ0Qsa0VBQXVCOzs7OztJQUduQiw2REFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEFkZHJlc3MsIEJhc2tldFN1bW1hcnksIEJhc2tldFN1bW1hcnlEZXRhaWxzLCBDdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzLCBDdXN0b21lciwgREVMSVZFUllfTUVUSE9EUywgUFJPTU9USU9OX0xFVkVMLCBQUk9NT1RJT05fVFlQRSwgSU5JVElBVElOR19NT0RVTEUsIExpbmVQcm9tb3Rpb25zLCBPcmRlckRldGFpbHMsIFBST1ZJREVSUywgU2hpcG1lbnREZXRhaWxzLCBUUkFOU0FDVElPTl9UWVBFLCBUcmFuc2FjdGlvbkRvY3VtZW50LCBUcmFuc2FjdGlvbkluZm8sIFRyYW5zYWN0aW9uUHJvbW90aW9uLCBUcmlnZ2VyLCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscywgVFByb2R1Y3QsIFJlZnVuZFByb2R1Y3RDaGFuZ2UgfSBmcm9tIFwiLi9tYXBwZXItbGlicmFyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOdW1iZXJVdGlsU2VydmljZSB9IGZyb20gXCIuL251bWJlci11dGlsLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzIHtcclxuXHJcbiAgICBwcml2YXRlIG9yZGVyRGV0YWlsczogT3JkZXJEZXRhaWxzO1xyXG4gICAgcHJpdmF0ZSB3ZWJSZXR1cm5PYmplY3Q6IFRyYW5zYWN0aW9uRG9jdW1lbnQgPSB7XHJcbiAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgIG9yZ0NvZGU6IFwiXCIsXHJcbiAgICAgICAgc3RvcmVJZDogXCJcIixcclxuICAgICAgICBzdG9yZU5vZGVJZDogXCJcIixcclxuICAgICAgICBzdG9yZU5vZGVTdHJ1Y3R1cmU6IFwiXCIsXHJcbiAgICAgICAgZGV2aWNlSWQ6IFwiXCIsXHJcbiAgICAgICAgdGVybWluYWxJZDogXCJcIixcclxuICAgICAgICBpbml0aWF0aW5nTW9kdWxlOiBcIlwiLFxyXG4gICAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICAgICAgYmFza2V0OiB7fSxcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5OiB7fSxcclxuICAgICAgICBiYXNlQ3VycmVuY3k6IFwiXCIsXHJcbiAgICAgICAgY3VzdG9tZXI6IHtcclxuICAgICAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgICAgICBlbWFpbDogJycsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiAnJyxcclxuICAgICAgICAgICAgYmlsbGluZ0FkZHJlc3M6IFtdLFxyXG4gICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3M6IFtdLFxyXG4gICAgICAgICAgICBzaGlwbWVudERldGFpbHM6IFtdLFxyXG4gICAgICAgICAgICB0ZWxlcGhvbmU6ICcnLFxyXG4gICAgICAgICAgICBwb3N0Q29kZTogJycsXHJcbiAgICAgICAgICAgIG5vQ3VzdG9tZXJTZWxlY3RlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHM6IHt9IGFzIEN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHNcclxuICAgIH1cclxuICAgIG51bWJlclV0aWxTZXJ2aWNlOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3Iob3JkZXJEZXRhaWxzOiBPcmRlckRldGFpbHMsXHJcbiAgICAgICAgcHJpdmF0ZSBjdXJyZW5jeVBpcGU/OiBDdXJyZW5jeVBpcGVcclxuICAgICAgICApIHtcclxuICAgICAgICBpZiAob3JkZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzID0gb3JkZXJEZXRhaWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlID0gbmV3IE51bWJlclV0aWxTZXJ2aWNlKGN1cnJlbmN5UGlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2ViUmV0dXJuQ29tbW9uTWFwcGVyKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHdlYlJldHVybkNvbW1vbk1hcHBlciBzdGFydGVkLi4uXCIpO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0Wyd0eXBlJ10gPSBUUkFOU0FDVElPTl9UWVBFLldFQl9SRVRVUk5TO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0WydkYXRldGltZSddID0gdGhpcy5nZXRVVENEYXRlVGltZSh0aGlzLm9yZGVyRGV0YWlscy5sYXN0X21vZGlmaWVkKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNlQ3VycmVuY3kgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXJyZW5jeTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5zdWJzaWRpYXJ5SWQgPSAnMSc7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5pbml0aWF0aW5nTW9kdWxlID0gSU5JVElBVElOR19NT0RVTEUuRUJBU0tFVDtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5jcmVhdGVkQXQgPSB0aGlzLmdldFVUQ0RhdGVUaW1lKHRoaXMub3JkZXJEZXRhaWxzLmNyZWF0aW9uX2RhdGUpO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVwZGF0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudHJhbnNDb21wbGV0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3RbJ2V4dGVybmFsVHJhbnNhY3Rpb25JZCddID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm87XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogd2ViUmV0dXJuQ29tbW9uTWFwcGVyIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGV4cG9ydChzdGF0dXMsIGRldGFpbHMpIHtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHBvcnQgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHN0YXR1czpcIiwgc3RhdHVzKTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBkZXRhaWxzOlwiLCBKU09OLnN0cmluZ2lmeShkZXRhaWxzKSk7XHJcbiAgICAvLyAgICAgaWYgKHN0YXR1cyAmJiBkZXRhaWxzICYmIGRldGFpbHMucHJvdmlkZXJzICYmIGRldGFpbHMucHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgZGV0YWlscy5wcm92aWRlcnMuZm9yRWFjaChcclxuICAgIC8vICAgICAgICAgICAgIHByb3ZpZGVyT2JqID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJPYmoucHJvdmlkZXIgJiYgcHJvdmlkZXJPYmoucHJvdmlkZXIgPT09IFBST1ZJREVSUy5TQUxFU0ZPUkNFKSB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IHRydWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICApO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHBvcnQgbWFwcGluZyBlbmQuLi5cIilcclxuICAgIC8vICAgICByZXR1cm4gdGhpcztcclxuICAgIC8vIH1cclxuXHJcbiAgICBnZXREZWxpdmVyeU1ldGhvZCgpIHtcclxuICAgICAgICBpZih0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMgJiYgdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2hpcFRvU3RvcmVTaGlwbWVudCA9IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5maW5kKHNoaXBtZW50ID0+IHNoaXBtZW50LmNfZnJvbVN0b3JlSWQpO1xyXG4gICAgICAgICAgICBpZihzaGlwVG9TdG9yZVNoaXBtZW50KSByZXR1cm4gREVMSVZFUllfTUVUSE9EUy5TSElQX1RPX1NUT1JFO1xyXG4gICAgICAgICAgICBlbHNlIHJldHVybiBERUxJVkVSWV9NRVRIT0RTLkRFTElWRVJZO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvZHVjdCgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBwcm9kdWN0IG1hcHBpbmcgc3RhcnRlZC4uLlwiKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXRbJ3Byb2R1Y3RzJ10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgICAgKHByb2R1Y3QsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdE9iaiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb2R1Y3QuaXRlbV90ZXh0ID8gcHJvZHVjdC5pdGVtX3RleHQgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0tVOiBwcm9kdWN0LnByb2R1Y3RfaWQgPyBwcm9kdWN0LnByb2R1Y3RfaWQgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRRdWFudGl0eTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuYmFzZV9wcmljZSA/IHByb2R1Y3QuYmFzZV9wcmljZSA6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1MaW5lSWQ6IChpbmRleCArIDEpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5TWV0aG9kOiB0aGlzLmdldERlbGl2ZXJ5TWV0aG9kKCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMaW5lUHJpY2U6IHByb2R1Y3QucHJpY2UgPyBwcm9kdWN0LnByaWNlIDogMFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnByaWNlICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0Wydwcm9kdWN0cyddLnB1c2gocHJvZHVjdE9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBwcm9kdWN0IG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgbGluZVByb21vdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBsaW5lUHJvbW90aW9uIG1hcHBpbmcgc3RhcnRlZC4uLlwiKTtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbiA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XHJcbiAgICAgICAgbGV0IGxpbmVQcm9tb3Rpb25BcnJheSA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XHJcbiAgICAgICAgaWYgKHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuaXRlbV9pZCA9IChpbmRleCArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9tb3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb21vdGlvbi5jb3Vwb25fY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluZVByb21vdGlvbk9iaiA9IHt9IGFzIExpbmVQcm9tb3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlciA9IHt9IGFzIFRyaWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuaXRlbUxpbmVJZCA9IHByb2R1Y3QuaXRlbV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai50cmlnZ2VyID0gW10gYXMgVHJpZ2dlcltdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnRyaWdnZXIucHVzaCh0cmlnZ2VyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmouaXRlbUxpbmVJZCA9IGluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25JZCA9IHByb21vdGlvbi5wcm9tb3Rpb25faWQgPyBwcm9tb3Rpb24ucHJvbW90aW9uX2lkIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvblR5cGUgPSBwcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiBwcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudC50eXBlID8gcHJvbW90aW9uLmFwcGxpZWRfZGlzY291bnQudHlwZSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHByb21vdGlvbi5wcmljZSA/IE1hdGguYWJzKHByb21vdGlvbi5wcmljZSkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLm5hbWUgPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgID8gcHJvbW90aW9uLmNvdXBvbl9jb2RlIDogKHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDonJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uSW5mbyA9IHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uTGluZVByaWNlID0gcHJvZHVjdC5wcmljZSAtIE1hdGguYWJzKHByb21vdGlvbi5wcmljZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25BcnJheS5wdXNoKGxpbmVQcm9tb3Rpb25PYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC5saW5lUHJvbW90aW9uID0gbGluZVByb21vdGlvbkFycmF5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGxpbmVQcm9tb3Rpb24gbWFwcGluZyBlbmRlZC4uLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2FjdGlvblByb21vdGlvbigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiB0cmFuc2FjdGlvblByb21vdGlvbiBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcblxyXG4gICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gdGhpcy5nZXRUcmFuc2FjdGlvblByb21vdGlvbnModGhpcy5vcmRlckRldGFpbHMpO1xyXG5cclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHRyYW5zYWN0aW9uUHJvbW90aW9uIG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJhbnNhY3Rpb25Qcm9tb3Rpb25zKGJhc2tldCk6IFRyYW5zYWN0aW9uUHJvbW90aW9uW10ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gW10gYXMgVHJhbnNhY3Rpb25Qcm9tb3Rpb25bXTtcclxuICAgICAgICAgICAgaWYgKGJhc2tldC5vcmRlcl9wcmljZV9hZGp1c3RtZW50cyAmJiBiYXNrZXQub3JkZXJfcHJpY2VfYWRqdXN0bWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYmFza2V0Lm9yZGVyX3ByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgICAgICAgKHRyYW5zYWN0aW9uUHJvbW90aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbk9iaiA9IHt9IGFzIFRyYW5zYWN0aW9uUHJvbW90aW9uO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgPyB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoubmFtZSA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbl9jb2RlID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uY291cG9uX2NvZGUgOiAodHJhbnNhY3Rpb25Qcm9tb3Rpb24gLml0ZW1fdGV4dD90cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgOiAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByaWNlID8gTWF0aC5hYnModHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJpY2UpIDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoucHJvbW90aW9uSWQgPSB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25faWQgPyB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25faWQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoucHJvbW90aW9uSW5mbyA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA/IHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25UeXBlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgPyB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouaXRlbUxpbmVJZHMgPSB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLm1hcCgocHJvZHVjdCwgaW5kZXgpID0+IGluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoudHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLmNvdXBvbkNvZGUgPSB0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnN1YkxldmVsVHlwZSA9IFBST01PVElPTl9MRVZFTC5UUkFOU0FDVElPTjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5LnB1c2godHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmopO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBnZXRUcmFuc2FjdGlvblByb21vdGlvbnMgOiBcIiwgSlNPTi5zdHJpbmdpZnkodHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiAgZmFpbGVkOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6ICBmYWlsZWQ6XCIsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxpbmVQcm9tb3Rpb25XaXRoQ291cG9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSB7fSBhcyBUcmFuc2FjdGlvblByb21vdGlvbjtcclxuICAgICAgICAgICAgbGV0IHRyaWdnZXJQcm9tb3Rpb24gPSBbXSBhcyBUcmlnZ2VyW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zICYmIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1faWQgPSAoaW5kZXggKyAxKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb21vdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlciA9IHt9IGFzIFRyaWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLml0ZW1MaW5lSWQgPSBwcm9kdWN0Lml0ZW1faWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci50b3RhbFF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5wcm9tb3Rpb25BbW91bnQgPSBwcm9tb3Rpb24ucHJpY2UgPyBNYXRoLmFicyhwcm9tb3Rpb24ucHJpY2UpIDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb24gPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgPyBwcm9tb3Rpb24uY291cG9uX2NvZGUgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbiA9IHByb21vdGlvbi5pdGVtX3RleHQgPyBwcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnByb21vdGlvbklkID0gcHJvbW90aW9uLnByb21vdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJQcm9tb3Rpb24ucHVzaCh0cmlnZ2VyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHJpZ2dlclByb21vdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5kaXNwbGF5VGV4dCA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLm5hbWUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50ID0gLSh0cmlnZ2VyUHJvbW90aW9uLnJlZHVjZSgobiwgeyBwcm9tb3Rpb25BbW91bnQgfSkgPT4gbiArIHByb21vdGlvbkFtb3VudCwgMCkpO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uSWQgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnByb21vdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uSW5mbyA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbkNvZGUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbUxpbmVJZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnR5cGUgPSBQUk9NT1RJT05fVFlQRS5DT1VQT047XHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5zdWJMZXZlbFR5cGUgPSBQUk9NT1RJT05fTEVWRUwuTElORTtcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnRyaWdnZXIgPSB0cmlnZ2VyUHJvbW90aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGluZVByb21vdGlvbiBtYXBwaW5nIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImUtYmFza2V0OiB1cGRhdGVMaW5lUHJvbW90aW9uV2l0aENvdXBvblwiLCBKU09OLnN0cmluZ2lmeSh0cmFuc2FjdGlvblByb21vdGlvbikpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uUHJvbW90aW9uICYmIHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbklkICkge1xyXG4gICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHVzaCh0cmFuc2FjdGlvblByb21vdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWJhc2tldDogU2FsZXNmb3JjZTogbGluZVByb21vdGlvbiBtYXBwaW5nPT4gZmFpbGVkOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWJhc2tldDogU2FsZXNmb3JjZTogbGluZVByb21vdGlvbiBtYXBwaW5nPT4gZmFpbGVkOlwiLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUcmFuc2FjdGlvblByb21vdGlvblBydGlvbkNhbGMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbiAmJiB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uLmZvckVhY2godHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKHRoaXMud2ViUmV0dXJuT2JqZWN0ICwgdHIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKFxyXG4gICAgICAgIHR4RG9jOiBUcmFuc2FjdGlvbkRvY3VtZW50LFxyXG4gICAgICAgIHByb21vdGlvbjogVHJhbnNhY3Rpb25Qcm9tb3Rpb25cclxuICAgICkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgZWJhc2tldDogdHJhbnNhY3Rpb25Qcm9tb3Rpb25Qcm9kdWN0UG9ydGlvbkNhbGM6IHRybnNhY3Rpb25Qcm9tb3Rpb246ICR7SlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgICAgICAgICAgICBwcm9tb3Rpb25cclxuICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocHJvbW90aW9uLnR5cGUgPT09IFBST01PVElPTl9UWVBFLkNPVVBPTiAmJiBwcm9tb3Rpb24uc3ViTGV2ZWxUeXBlID09PSBQUk9NT1RJT05fTEVWRUwuTElORSkge1xyXG4gICAgICAgICAgICB0eERvYy5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMudmFsaWRhdGVQcm9kdWN0SXRlbURpc2NvdW50KHByb2R1Y3QpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcm9tb3Rpb24udHJpZ2dlciAmJiBwcm9tb3Rpb24udHJpZ2dlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvbW90aW9uLnRyaWdnZXIuZm9yRWFjaCgodCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pdGVtTGluZUlkID09PSBwcm9kdWN0Lml0ZW1MaW5lSWQudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzLnRyblByb21vdGlvbnNQb3J0aW9uICs9IHQucHJvbW90aW9uQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHhEb2MuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLnZhbGlkYXRlUHJvZHVjdEl0ZW1EaXNjb3VudChwcm9kdWN0KTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9tb3Rpb24uaXRlbUxpbmVJZHMuaW5jbHVkZXMoK3Byb2R1Y3QuaXRlbUxpbmVJZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0SXRlbSA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMuZmluZChwcm9kdWN0SXRlbSA9PiBwcm9kdWN0SXRlbS5wcm9kdWN0X2lkID09PSBwcm9kdWN0LlNLVSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25Qcm9tb3Rpb25Qb3J0aW9uID0gKHByb2R1Y3RJdGVtICYmIHByb2R1Y3RJdGVtLnByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQgJiYgcHJvZHVjdEl0ZW0ucHJpY2VfYWZ0ZXJfb3JkZXJfZGlzY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2R1Y3RJdGVtLnByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQgLSBwcm9kdWN0SXRlbS5wcmljZV9hZnRlcl9vcmRlcl9kaXNjb3VudCkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuaXRlbURpc2NvdW50cy50cm5Qcm9tb3Rpb25zUG9ydGlvbiArPSB0aGlzLm51bWJlclV0aWxTZXJ2aWNlLnRyaW1UbzJEZWNpbWFsMih0cmFuc2FjdGlvblByb21vdGlvblBvcnRpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHR4RG9jO1xyXG4gICAgfVxyXG5cclxuICAgICAgXHJcbiAgICAgIHB1YmxpYyB2YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocHJvZHVjdDogVFByb2R1Y3QpIHtcclxuICAgICAgICBpZiAoIXByb2R1Y3QuaXRlbURpc2NvdW50cykge1xyXG4gICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzID0ge1xyXG4gICAgICAgICAgICB0cm5EaXNjb3VudHNQb3J0aW9uOiAwLFxyXG4gICAgICAgICAgICB0cm5Qcm9tb3Rpb25zUG9ydGlvbjogMCxcclxuICAgICAgICAgICAgcmVmdW5kUG9ydGlvbjogMCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgXHJcbiAgICBjdXN0b21lcigpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBjdXN0b21lciBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcbiAgICAgICAgbGV0IGN1c3RvbWVyT2JqID0ge30gYXMgQ3VzdG9tZXI7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouZW1haWwgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvICYmIHRoaXMub3JkZXJEZXRhaWxzLmN1c3RvbWVyX2luZm8uZW1haWwgPyB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvLmVtYWlsIDogJyc7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouZmlyc3ROYW1lID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5maXJzdF9uYW1lID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmZpcnN0X25hbWUgOiAnJztcclxuICAgICAgICBjdXN0b21lck9iai5sYXN0TmFtZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MubGFzdF9uYW1lID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmxhc3RfbmFtZSA6ICcnO1xyXG5cclxuICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzID0gW10gYXMgQWRkcmVzc1tdO1xyXG4gICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5mb3JFYWNoKFxyXG4gICAgICAgICAgICBzaGlwbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzT2JqID0ge30gYXMgQWRkcmVzcztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5pZCA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5pZCA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuaWQgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5jb3VudHJ5X2NvZGUgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmFkZHJlc3MxID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmFkZHJlc3MxID8gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5hZGRyZXNzMSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNpdHkgPSBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzICYmIHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuY2l0eSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuY2l0eSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5wb3N0Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5wb3N0YWxfY29kZSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MucG9zdGFsX2NvZGUgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzcy5wdXNoKHNoaXBwaW5nQWRkcmVzc09iaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgY3VzdG9tZXJPYmouc2hpcHBpbmdBZGRyZXNzID0gc2hpcHBpbmdBZGRyZXNzO1xyXG5cclxuICAgICAgICBsZXQgYmlsbGluZ0FkZHJlc3MgPSBbXSBhcyBBZGRyZXNzW107XHJcbiAgICAgICAgbGV0IGJpbGxpbmdBZGRyZXNzT2JqID0ge30gYXMgQWRkcmVzcztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5pZCA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgOiAnJztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY291bnRyeV9jb2RlID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmFkZHJlc3MxID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5hZGRyZXNzMSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5hZGRyZXNzMSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNpdHkgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNpdHkgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY2l0eSA6ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcclxuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5wb3N0Q29kZSA9ICcnO1xyXG4gICAgICAgIGJpbGxpbmdBZGRyZXNzLnB1c2goYmlsbGluZ0FkZHJlc3NPYmopO1xyXG4gICAgICAgIGN1c3RvbWVyT2JqLmJpbGxpbmdBZGRyZXNzID0gYmlsbGluZ0FkZHJlc3M7XHJcblxyXG4gICAgICAgIGxldCBzaGlwbWVudERldGFpbHMgPSBbXSBhcyBTaGlwbWVudERldGFpbHNbXTtcclxuICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgc2hpcG1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNoaXBtZW50RGV0YWlsc09iaiA9IHt9IGFzIFNoaXBtZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50RGV0YWlsc09iai5pZCA9IHNoaXBtZW50LnNoaXBtZW50X2lkID8gc2hpcG1lbnQuc2hpcG1lbnRfaWQgOiAnJztcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50RGV0YWlsc09iai5kZWxpdmVyeUdyb3VwID0gc2hpcG1lbnQuc2hpcG1lbnRfaWQgPyBzaGlwbWVudC5zaGlwbWVudF9pZCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnREZXRhaWxzLnB1c2goc2hpcG1lbnREZXRhaWxzT2JqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY3VzdG9tZXJPYmouc2hpcG1lbnREZXRhaWxzID0gc2hpcG1lbnREZXRhaWxzO1xyXG5cclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5jdXN0b21lciA9IGN1c3RvbWVyT2JqO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGN1c3RvbWVyIG1hcHBpbmcgZW5kZWQuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xyXG4gICAgICAgIGxldCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyA9IFtdIGFzIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzW107XHJcbiAgICAgICAgaWYgKHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cyAmJiB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgIHNoaXBtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmogPSB7fSBhcyBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25JbmZvID0ge30gYXMgVHJhbnNhY3Rpb25JbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLnVuaXF1ZUlkID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm8gPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl9ubyA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLnByb3ZpZGVyVHlwZSA9IFBST1ZJREVSUy5TQUxFU0ZPUkNFO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5zaGlwcGluZ0lkID0gc2hpcG1lbnQuc2hpcHBpbmdfbWV0aG9kICYmIHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA/IHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5leHRlcm5hbFNoaXBwaW5nSWQgPSBzaGlwbWVudC5zaGlwbWVudF9pZCA/IHNoaXBtZW50LnNoaXBtZW50X2lkIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmouZGV0YWlscyA9IHRyYW5zYWN0aW9uSW5mbztcclxuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscy5wdXNoKGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgPSBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyBtYXBwaW5nIGVuZGVkLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGJhc2tldFN1bW1hcnkoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogYmFza2V0U3VtbWFyeSBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XHJcbiAgICAgICAgbGV0IGJhc2tldFN1bW1hcnkgPSB7fSBhcyBCYXNrZXRTdW1tYXJ5O1xyXG4gICAgICAgIGxldCBiYXNrZXRTdW1tYXJ5V2ViT3JkZXIgPSB7fSBhcyBCYXNrZXRTdW1tYXJ5RGV0YWlscztcclxuICAgICAgICBjb25zdCBsaW5lUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbi5tYXAobGluZVByb21vdGlvbiA9PiBsaW5lUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25Qcm9tb3Rpb25Ub3RhbCA9IHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbi5tYXAodHJhbnNhY3Rpb25Qcm9tb3Rpb24gPT4gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50KS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUpID0+IGFjY3VtdWxhdG9yICsgY3VycmVudFZhbHVlLCAwKTtcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5LmRpc2NvdW50VG90YWwgPSBsaW5lUHJvbW90aW9uVG90YWwgKyB0cmFuc2FjdGlvblByb21vdGlvblRvdGFsO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuVkFUVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuc2FsZVRvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XHJcbiAgICAgICAgYmFza2V0U3VtbWFyeS5iYXNrZXRUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkudG90YWxJdGVtcyA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuc2hpcHBpbmdUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBwaW5nX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnkuYmFza2V0VG90YWxXaXRoU2hpcHBpbmdUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xyXG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5zaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA6IDA7XHJcbiAgICAgICAgYmFza2V0U3VtbWFyeVdlYk9yZGVyLmJhc2tldFRvdGFsV2l0aFNoaXBwaW5nVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA/IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsIDogMDtcclxuICAgICAgICBiYXNrZXRTdW1tYXJ5LndlYk9yZGVyID0gYmFza2V0U3VtbWFyeVdlYk9yZGVyO1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFN1bW1hcnkgPSBiYXNrZXRTdW1tYXJ5O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGJhc2tldFN1bW1hcnkgbWFwcGluZyBlbmRlZC4uLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBkZXZpY2VJZChkZXZpY2VJZCkge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmRldmljZUlkID0gZGV2aWNlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGVybWluYWxJZCh0ZXJtaW5hbElkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudGVybWluYWxJZCA9IHRlcm1pbmFsSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb3JnQ29kZShvcmdDb2RlKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Qub3JnQ29kZSA9IG9yZ0NvZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVJZChzdG9yZUlkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVJZCA9IHN0b3JlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVOb2RlSWQoc3RvcmVOb2RlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnN0b3JlTm9kZUlkID0gc3RvcmVOb2RlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcmVOb2RlU3RydWN0dXJlKHN0b3JlTm9kZVN0cnVjdHVyZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVOb2RlU3RydWN0dXJlID0gc3RvcmVOb2RlU3RydWN0dXJlO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGRvY0lkKGRvY0lkKSB7XHJcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaWQgPSBkb2NJZDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVVc2VySUQodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC51c2VySWQgPSB1c2VySUQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVXNlck5hbWUobmFtZSkge1xyXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVzZXJOYW1lID0gbmFtZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBidWlsZCgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBtYXBwaW5nIGRvbmUuLi5cIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViUmV0dXJuT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVUQ0RhdGVUaW1lKGRhdGUpIHtcclxuICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -15,13 +15,13 @@ export class MapperLibraryComponent {
15
15
  MapperLibraryComponent.decorators = [
16
16
  { type: Component, args: [{
17
17
  selector: 'lib-mapper-library',
18
- template: `
19
- <p>
20
- mapper-library works!
21
- </p>
18
+ template: `
19
+ <p>
20
+ mapper-library works!
21
+ </p>
22
22
  `
23
23
  }] }
24
24
  ];
25
25
  /** @nocollapse */
26
26
  MapperLibraryComponent.ctorParameters = () => [];
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9tYXBwZXItbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBWWxELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsZ0JBQWdCLENBQUM7Ozs7SUFFakIsUUFBUTtJQUNSLENBQUM7OztZQWZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUU7Ozs7R0FJVDthQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW1hcHBlci1saWJyYXJ5JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHA+XHJcbiAgICAgIG1hcHBlci1saWJyYXJ5IHdvcmtzIVxyXG4gICAgPC9wPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwcGVyTGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9tYXBwZXItbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBWWxELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsZ0JBQWdCLENBQUM7Ozs7SUFFakIsUUFBUTtJQUNSLENBQUM7OztZQWZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUU7Ozs7R0FJVDthQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW1hcHBlci1saWJyYXJ5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cD5cbiAgICAgIG1hcHBlci1saWJyYXJ5IHdvcmtzIVxuICAgIDwvcD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyTGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iXX0=
@@ -18,4 +18,4 @@ MapperLibraryModule.decorators = [
18
18
  ]
19
19
  },] }
20
20
  ];
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9tYXBwZXItbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBY3BFLE1BQU0sT0FBTyxtQkFBbUI7OztZQVYvQixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLHNCQUFzQjtpQkFDdkI7Z0JBQ0QsT0FBTyxFQUFFLEVBQ1I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHNCQUFzQjtpQkFDdkI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hcHBlckxpYnJhcnlDb21wb25lbnQgfSBmcm9tICcuL21hcHBlci1saWJyYXJ5LmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBNYXBwZXJMaWJyYXJ5Q29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBNYXBwZXJMaWJyYXJ5Q29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwcGVyTGlicmFyeU1vZHVsZSB7IH1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9tYXBwZXItbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBY3BFLE1BQU0sT0FBTyxtQkFBbUI7OztZQVYvQixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLHNCQUFzQjtpQkFDdkI7Z0JBQ0QsT0FBTyxFQUFFLEVBQ1I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHNCQUFzQjtpQkFDdkI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXBwZXJMaWJyYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9tYXBwZXItbGlicmFyeS5jb21wb25lbnQnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTWFwcGVyTGlicmFyeUNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNYXBwZXJMaWJyYXJ5Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyTGlicmFyeU1vZHVsZSB7IH1cbiJdfQ==