simpo-component-library 1.6.135 → 1.6.137

Sign up to get free protection for your applications and to get access to all the features.
@@ -166,6 +166,8 @@ export class CartComponent extends BaseSection {
166
166
  this.styles = this.data?.styles;
167
167
  }
168
168
  getCouponList() {
169
+ if (!this.cartInfo.cartId)
170
+ this.cartInfo.cartId = localStorage.getItem("cartId");
169
171
  this.restService.applicableDiscountList(this.cartInfo.cartId).subscribe((response) => {
170
172
  this.couponList = response.data?.filter((coupon) => coupon.active)?.map((coupon) => {
171
173
  return {
@@ -235,6 +237,7 @@ export class CartComponent extends BaseSection {
235
237
  "mobile": this.userDetails?.contact.mobile,
236
238
  "email": this.userDetails?.contact.email,
237
239
  };
240
+ this.cartInfo["cartId"] = localStorage.getItem("cartId");
238
241
  console.log("Response : ", response);
239
242
  if (response)
240
243
  this.proceedToCheckout();
@@ -253,6 +256,7 @@ export class CartComponent extends BaseSection {
253
256
  "mobile": this.userDetails?.contact.mobile,
254
257
  "email": this.userDetails?.contact.email,
255
258
  };
259
+ this.cartInfo["cartId"] = localStorage.getItem("cartId");
256
260
  console.log("Response : ", response);
257
261
  if (response)
258
262
  this.proceedToCheckout();
@@ -575,4 +579,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
575
579
  }], customClass: [{
576
580
  type: Input
577
581
  }] } });
578
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBYSxlQUFlLEVBQWdCLE1B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LENBQUMsQ0FBQyxJQUFTLEVBQUMsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLENBQUMsY0FBYyxFQUFFLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RLLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDcEksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFl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LEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxjQUFjLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0SyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUNoSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7WUFDdEksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLElBQUksQ0FBQyxDQUFDLENBQUU7SUFDckosQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQzs4R0F4aEJVLGFBQWEscVBBcUJGLGVBQWU7a0dBckIxQixhQUFhLDZMQUpiLENBQUMsY0FBYyxDQUFDLGlEQzlEN0IsMHVoQkE4UUEsbXhSRGhPSSxXQUFXLDhtQkFDWCxZQUFZLDgxQkFDWixPQUFPLDBJQUNQLGVBQWUsOEJBQ2Ysb0JBQW9CLHVoQkFDcEIsbUJBQW1CLHlHQUNuQixvQkFBb0I7Z0JBQ3BCLFdBQVc7Z0JBQ1gsd0JBQXdCLG9IQUN4QixrQkFBa0IseUZBQ2xCLG1CQUFtQixtRkFDbkIsY0FBYyxnRkFDZCxnQkFBZ0IsNktBQ2hCLFdBQVc7OzJGQU9GLGFBQWE7a0JBeEJ6QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLHVCQUF1QjtxQkFDeEIsYUFDVSxDQUFDLGNBQWMsQ0FBQzs7MEJBeUJ4QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFRO3lDQXJCRixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZGRyZXNzLCBDYXJ0U2VjdGlvbk1vZGFsLCBDYXJ0U2VjdGlvblN0eWxlc01vZGVsIH0gZnJvbSAnLi9jYXJ0Lm1vZGFsJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZHJlc3NDb21wb25lbnQgfSBmcm9tIFwiLi4vYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0aGVudGljYXRlLXVzZXIvYXV0aGVudGljYXRlLXVzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcclxuaW1wb3J0IHsgQ3VzdG9tZXJSZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b21lci1yZXZpZXcvY3VzdG9tZXItcmV2aWV3LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQ291cG9uIHtcclxuICBkaXNjb3VudFR5cGU6IHN0cmluZztcclxuICBkaXNjb3VudE5hbWU6IHN0cmluZztcclxuICBkaXNjb3VudERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgYXBwbGljYWJsZTogYm9vbGVhbjtcclxuICBjb3Vwb25Db2RlOiBzdHJpbmc7XHJcbiAgY291cG9uSWQ6IHN0cmluZztcclxuICBzdGF0dXM6IGJvb2xlYW47XHJcbiAgdmFsaWRGcm9tOiBEYXRlO1xyXG4gIHZhbGlkVG86IERhdGU7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tY2FydCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSwgXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgTWF0Qm90dG9tU2hlZXRNb2R1bGUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLCBcclxuICAgIEFkZHJlc3NDb21wb25lbnQsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIEN1c3RvbWVyUmV2aWV3Q29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jYXJ0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBDYXJ0U2VjdGlvbk1vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0eWxlcz86IENhcnRTZWN0aW9uU3R5bGVzTW9kZWw7XHJcbiAgcHVibGljIGN1cnJlbnRUYWI6ICdCQUcnIHwgJ0FERFJFU1MnIHwgJ1BBWU1FTlQnID0gXCJCQUdcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2UgOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdHRvbVNoZWV0OiBNYXRCb3R0b21TaGVldCxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgbWF0RGlhbG9nRGF0YTogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENhcnRDb21wb25lbnQ+XHJcbiAgKXtcclxuICAgIHN1cGVyKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIFVTRVJfQ0FSVF9JVEVNUzogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgc2VsZWN0ZWRBZGRyZXNzSWR4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBlbnRlcmVkQ291cG9uQ29kZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgY291cG9uTGlzdDogQ291cG9uW10gPSBbXTtcclxuXHJcbiAgY2FydEluZm86IGFueSA9IHtcclxuICAgIG9yZGVyZWRJdGVtczogbnVsbCxcclxuICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgIGJpbGxkZXRhaWxzOiB7XHJcbiAgICAgIFwidG90YWxOZXRWYWx1ZVwiOiAwLFxyXG4gICAgICBcInRvdGFsR3Jvc3NWYWx1ZVwiOiAwLFxyXG4gICAgICBcInRvdGFsVGF4XCI6IDAsXHJcbiAgICAgIFwidG90YWxPZmZlcmVkVmFsdWVcIjogMCxcclxuICAgICAgXCJkZWxpdmVyeUNoYXJnZXNcIjogMFxyXG4gICAgfSxcclxuICAgIHBsYXRmb3JtOiBcIldFQlwiLFxyXG4gICAgY2FydFR5cGU6IFwiQ0FSVFwiLFxyXG4gICAgYWRkcmVzc0RldGFpbHM6IG51bGwsXHJcbiAgICB1c2VyRGV0YWlsczoge1xyXG4gICAgICBcInVzZXJJZFwiOiBcIlwiLFxyXG4gICAgICBcInVzZXJOYW1lXCI6IFwiXCIsXHJcbiAgICAgIFwibW9iaWxlXCI6IFwiXCIsXHJcbiAgICAgIFwiZW1haWxcIjogXCJcIlxyXG4gICAgfSxcclxuICAgIHRvdGFsQW1vdW50OiAwXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgICB0aGlzLmdldEluZGV4REJEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJDQVJUXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcFVzZXJDYXJ0ID0gcmVzcG9uc2U/LmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zID8/IFtdO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYXJ0SWQnLCByZXNwb25zZS5kYXRhPy5bMF0/LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkOyBcclxuICAgICAgICB0aGlzLmdldENvdXBvbkxpc3QoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YT8uWzBdPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRBbGxQcm9kdWN0c1RvQ2FydCh0ZW1wVXNlckNhcnQpLm9uY29tcGxldGUgPSAoKT0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN0UmVzcG9uc2UgPSB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgcmVzdFJlc3BvbnNlLmZpbmFsbHkoKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLmNhcnRJbmZvO1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25lcnJvciA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6ICdGYWlsZWQgdG8gdXBkYXRlIGNhcnQgZGV0YWlscycgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TLmZvckVhY2goKGl0ZW0pPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5xdWFudGl0eSAqIChpdGVtLml0ZW1UYXggPz8gMCkpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlIC0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlLCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4LCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCk7ICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLnJlc3BvbnNlRGF0YSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYXJ0SWQnLCByZXNwb25zZS5kYXRhPy5jYXJ0SWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhW1wiY2FydElkXCJdID0gdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0SW5kZXhEQkRhdGEoKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIGdldENvdXBvbkxpc3QoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgfSlcclxuICB9XHJcbiAgcmVtb3ZlQ291cG9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbklkID0gXCJcIjtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gMDtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVtb3ZlRGlzY291bnRGcm9tQ2FydCh0aGlzLmNhcnRJbmZvLmNhcnRJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KCk7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBSZW1vdmVkJyB9KTtcclxuICAgIH0pXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kZXhEQkRhdGEoKSB7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgY29uc29sZS5sb2coY2FydFJlc3BvbnNlKTtcclxuICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcblxyXG4gICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUy5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLmNhcnRJbmZvO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBwcm9jZWVkVG9DaGVja291dCgpe1xyXG4gICAgaWYodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWIgPSBcIkFERFJFU1NcIjsgXHJcbiAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpIHtcclxuICAgICAgICAgICAgdGhpcy5ib3R0b21TaGVldC5vcGVuKEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQsIHtkYXRhOiB0aGlzLmRhdGF9KS5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgICAgICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZXNwb25zZSA6IFwiLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9DaGVja291dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAnNTB2aCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSBcclxuICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAgICAgICAgICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgICAgICAgICAgICAgXCJlbWFpbFwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0LmVtYWlsLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2UgOiBcIiwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9DaGVja291dCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdvVG9Qcm9kdWN0RGV0YWlscyhwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2RldGFpbHMnXSwge3F1ZXJ5UGFyYW1zOiB7aWQ6IHByb2R1Y3QuaXRlbUlkLCB2YXJpZW50SWQ6IHByb2R1Y3QudmFyaWVudElkfX0pO1xyXG4gIH1cclxuICBwcm9jZWVkVG9MaXN0UGFnZSgpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xyXG4gIH1cclxuICByZW1vdmVJdGVtKGl0ZW06IE9yZGVyZWRJdGVtcykge1xyXG5cclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgIGljb246IFwid2FybmluZ1wiLFxyXG4gICAgICBodG1sOiBcIjxzcGFuPllvdSBjYW4gbW92ZSA8L3NwYW4+IDxiPlwiICsgaXRlbS5pdGVtTmFtZSArIFwiPC9iPiA8c3Bhbj50byB3aXNobGlzdCBzbyB5b3UgY2FuIGJ1eSBsYXRlci48L3NwYW4+XCIsXHJcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIk1vdmUgdG8gd2lzaGxpc3RcIixcclxuICAgICAgc2hvd0RlbnlCdXR0b246IHRydWUsXHJcbiAgICAgIGRlbnlCdXR0b25UZXh0OiBcIkRlbGV0ZSBpdGVtXCIsXHJcbiAgICAgIGRlbnlCdXR0b25Db2xvcjogXCIjOTI4YzhjXCJcclxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKT0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtRnJvbUNhcnQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5tb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNEZW5pZWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBtb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KGl0ZW0pO1xyXG4gIH1cclxuICBwcml2YXRlIHJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGl0ZW0ucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHRoaXMuVVNFUl9DQVJUX0lURU1TKVxyXG4gICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNvdXBvbkNvZGUgPSByZXNwb25zZS5kYXRhPy5iaWxsZGV0YWlscz8uY291cG9uQ29kZTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5jb3Vwb25JZCA9IHJlc3BvbnNlLmRhdGE/LmJpbGxkZXRhaWxzPy5jb3Vwb25JZDtcclxuICAgICAgXHJcbiAgICAgIHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5xdWFudGl0eSAqIChpdGVtLml0ZW1UYXggPz8gMCkpO1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZFRvQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKSB7XHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgKz0gMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpdGVtLnF1YW50aXR5IC09IDE7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpZiAoaXRlbS5xdWFudGl0eSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW0oaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHByb2NlZWRUb1BheW1lbnQoKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1c2VyRGV0YWlsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSB1c2VyRGV0YWlsPy5hZGRyZXNzRGV0YWlsc0xpc3RbdGhpcy5zZWxlY3RlZEFkZHJlc3NJZHhdIGFzIEFkZHJlc3M7XHJcbiAgICBpZiAoYWRkcmVzcz8ucmVjZWl2ZXJOYW1lPy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHByb3ZpZGUgYWRkcmVzcyBkZXRhaWxzJyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnUGxlYXNlIHdhaXQnLCBkZXRhaWw6ICdXZSBhcmUgcHJvY2Vzc2luZyB5b3VyIHBheW1lbnQnLCBsaWZlOiAyMDAwIH0pO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuY2FydEluZm9bXCJhZGRyZXNzRGV0YWlsc1wiXSA9IGFkZHJlc3M7XHJcbiAgICBjb25zdCBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIikgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImlzUGF5bWVudEdhdGV3YXlFbmFibGVkXCIpID09IFwidHJ1ZVwiIDogdHJ1ZTtcclxuICAgIGNvbnN0IHVwZGF0ZUFkZHJlc3MgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJ1c2VySWRcIjogdXNlckRldGFpbC51c2VySWQsXHJcbiAgICAgIFwiY2FydElkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYXJ0SWQnKSxcclxuICAgICAgXCJvcmRlckFtb3VudFwiOiBOdW1iZXIoTnVtYmVyKHRoaXMucmVzcG9uc2VEYXRhLnRvdGFsQW1vdW50KS50b0ZpeGVkKDIpKSxcclxuICAgICAgXCJpc1BheW1lbnRHYXRld2F5RW5hYmxlZFwiOiBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCxcclxuICAgICAgXCJjb250YWN0RGV0YWlsc1wiOiB7XHJcbiAgICAgICAgXCJuYW1lXCI6IGFkZHJlc3MucmVjZWl2ZXJOYW1lLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IGFkZHJlc3MucmVjZWl2ZXJQaG9uZSxcclxuICAgICAgICBcImNvdW50cnlDb2RlXCI6IFwiOTFcIixcclxuICAgICAgICBcImVtYWlsXCI6IGFkZHJlc3MucmVjZWl2ZXJFbWFpbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRUb2tlbihwYXlsb2FkKS5zdWJzY3JpYmUoKHBheW1lbnREZXRhaWxzOiBhbnkpPT4ge1xyXG4gICAgICBpZiAoaXNQYXltZW50R2F0ZXdheUVuYWJsZWQpXHJcbiAgICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdChwYXltZW50RGV0YWlscyk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwib3JkZXJJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBheW1lbnRGb3JcIik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgdGl0bGU6IFwiSHVycmF5XCIsXHJcbiAgICAgICAgICB0ZXh0OiBcIk9yZGVyIHBsYWNlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNlZSBEZXRhaWxzXCJcclxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpPT4ge1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3JDb2RlID09IDEwMDEgfHwgZXJyb3IuZXJyb3JDb2RlID09IDEwMDIpIHtcclxuICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgaWNvbjogXCJpbmZvXCIsXHJcbiAgICAgICAgICBodG1sOiBcIjxwPlwiICsgZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8gKlxcKFteKV0qXFwpICovZywgXCJcIikgKyBcIjwvcD5cIixcclxuICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGVycm9yLmVycm9yQ29kZSA9PSAxMDAyLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiUmVtb3ZlIGl0ZW0gJiBQbGFjZSBPcmRlclwiLFxyXG4gICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJSZWR1Y2UgcXVhbnRpdHlcIixcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIixcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdQcm9jZXNzaW5nJywgZGV0YWlsOiAnUGxlYXNlIHdhaXQsIHVwZGFpbmcgeW91ciBjYXJ0JywgbGlmZTogMjAwMH0pO1xyXG4gICAgICAgICAgY29uc3QgcmVnRXhwID0gL3soW159XSspfS9nO1xyXG4gICAgICAgICAgY29uc3QgaWQgPSByZWdFeHAuZXhlYyhlcnJvci5tZXNzYWdlKT8uWzFdO1xyXG4gICAgICAgICAgbGV0IGl0ZW1EZXRhaWw6IFByb2R1Y3QgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgIGNvbnN0IHByb2R1Y3REZXRhaWxzQXN5bmMgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKGlkKS50b1Byb21pc2UoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtRGV0YWlsID0gcmVzcG9uc2VbMF0gYXMgUHJvZHVjdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNEaXNtaXNzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gaXRlbURldGFpbD8uaXRlbUlkKVxyXG4gICAgICAgICAgICAgICAgaXRlbS5xdWFudGl0eSA9IGl0ZW1EZXRhaWw/Lml0ZW1JbnZlbnRvcnkub3BlbmluZ1N0b2NrO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLml0ZW1JZCAhPSBpdGVtRGV0YWlsPy5pdGVtSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9QYXltZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHRyeSBhZ2FpbicgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBuZWVkIGNvbmRpdGlvblxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBlZGl0U2VjdGlvbigpe1xyXG4gICAgXHJcbiAgICBpZih3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIFxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoe2RhdGE6dGhpcy5kYXRhfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBjbG9zZVdpbmRvdygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIGNvdXBvbkRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XHJcbiAgb3BlbkRpYWxvZyhjb250YWluZXI6IGFueSkge1xyXG5cclxuICAgIGlmICh0aGlzLmNhcnRJbmZvPy5iaWxsZGV0YWlscz8uY291cG9uSWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghIXRoaXMudXNlckRldGFpbHMpXHJcbiAgICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGNvbnRhaW5lciwge3BhbmVsQ2xhc3M6ICdzaWRlcGFuZWwtY2xhc3MnfSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0xvZ2luJywgZGV0YWlsOiAnUGxlYXNlIGxvZ2luIHdpdGggbW9iaWxlIG51bWJlciB0byBhcHBseSBjb3Vwb24nIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzZWFyY2hJZkFwcGxpY2FibGUoKSB7fVxyXG4gIGNsb3NlRGlhbG9nUmVmKCkge1xyXG4gICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG4gIGFwcGx5Q291cG9uKGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICBcclxuICAgIGlmICghY291cG9uLmFwcGxpY2FibGUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBjb3Vwb24uY291cG9uQ29kZTtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBjb3Vwb24uY291cG9uSWQ7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvKTtcclxuICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgIFxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZUNhcnQoKTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBBZGRlZCcgfSk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGlzY291bnRBbW91bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY291cG9uRGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgY2FsY3VsYXRlQ2FydCgpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICBcclxuICAgIGlmICh0aGlzLlVTRVJfQ0FSVF9JVEVNUykge1xyXG5cclxuICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICB9XHJcblxyXG4gIGdldFRheEFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICF0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/ICh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ID8/IDApIDogKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwKSA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0QWRkcmVzc0xpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGV0YWlscyA/IFsuLi50aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3RdIDogW107XHJcbiAgfVxyXG4gIGdldCBpc01vYmlsZSgpIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbYXR0ci5jbGFzc109XCJpc01vYmlsZSA/ICdweS01JyA6ICcnXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG0tYXV0byBtYi00XCIgW3N0eWxlLm1hcmdpblRvcC5weF09XCJpc01vYmlsZSA/ICcnOiAnNTAnXCIgW3N0eWxlLndpZHRoLiVdPVwiaXNNb2JpbGUgPyAnOTAnIDogJydcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0JBRyd9XCIgKGNsaWNrKT1cImN1cnJlbnRUYWIgPSAnQkFHJ1wiPkJhZzwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyXCI+PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdBRERSRVNTJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdBRERSRVNTJ1wiPkFkZHJlc3M8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhclwiPjwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmVcIiBbbmdDbGFzc109XCJ7J2lzQWN0aXZlJzogY3VycmVudFRhYiA9PSAnUEFZTUVOVCd9XCIgc3R5bGU9XCJjdXJzb3I6IGF1dG87XCI+UGF5bWVudDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXBhcmVudCBjb250YWluZXJcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID4gMFwiICBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjdXJyZW50VGFiXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiICpuZ1N3aXRjaENhc2U9XCInQkFHJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktYmFnXCI+XHJcbiAgICAgICAgICAgICAgTXkgQmFnJm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcGFyZW50IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJwcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGgtMTAwXCIgW3N0eWxlLndpZHRoLnB4XT1cImlzTW9iaWxlID8gJzIwMCcgOiAnJ1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSB0cmltLXRleHQgaGVhZGluZy1sYXJnZVwiPnt7aXRlbS5pdGVtTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uZGlzY291bnRlZFByaWNlKSB8IG51bWJlcjogJzEuMC0yJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLml0ZW1WYXJpYW50XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0Zvcj1cImxldCB2YXJpZW50IG9mIGdldEtleXMoaXRlbS5pdGVtVmFyaWFudC5wcm9wZXJ0aWVzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+e3sgdmFyaWVudCB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZ3LW5vcm1hbFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDsgaGVpZ2h0OiAxM3B4OyB3aWR0aDogMTNweDsgYm9yZGVyLXJhZGl1czogNTAlO1wiICpuZ0lmPVwidmFyaWVudC50b0xvd2VyQ2FzZSgpID09ICdjb2xvcidcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllc1t2YXJpZW50XVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctbm9ybWFsXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPiB7eyBpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF0gfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHdpZHRoOiAwcHg7IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KChpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5KSAgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImlzTW9iaWxlID8gJzUnIDogJzAnXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggIT0gKGlkeCArMSlcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidBRERSRVNTJ1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tYWRkcmVzcyBbaXNDYXJ0XT1cInRydWVcIiBbcmVzcG9uc2VEYXRhXT1cImdldEFkZHJlc3NMaXN0XCIgW2RhdGFdPVwiZGF0YVwiIChzZWxlY3RlZEFkZHJlc3MpPVwiYWRkcmVzc1NlbGVjdGVkKCRldmVudClcIj48L3NpbXBvLWFkZHJlc3M+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidQQVlNRU5UJ1wiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBDb3Vwb25cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbnNcIiAoY2xpY2spPVwib3BlbkRpYWxvZyhDb3Vwb25MaXN0KVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+QXBwbHkgQ291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj5BcHBseTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+Q291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVDb3Vwb24oJGV2ZW50KVwiPlJlbW92ZTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBQcmljZSBEZXRhaWxzXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiPlRvdGFsIFByaWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsTmV0VmFsdWUgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+VG90YWwgVGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KCghcmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/IHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4IDogcmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50KSA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRlbGl2ZXJ5Q2hhcmdlcyAmJiByZXNwb25zZURhdGEuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGVsaXZlcnkgQ2hhcmdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGlzY291bnQgQW1vdW50PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIiBzdHlsZT1cImNvbG9yOiBibGFjaztmb250LXdlaWdodDogNjAwO1wiPlRvdGFsIEFtb3VudDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS12YWx1ZVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj48c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soKHJlc3BvbnNlRGF0YT8udG90YWxBbW91bnQgPz8gMCkgLSAocmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMCkpIHwgbnVtYmVyOiAnMS4wLTInfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXBhcmVudFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09ICdCQUcnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIG1vYmlsZS1maXhlZFwiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCIgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlswXT8uY29udGVudD8ubGFiZWwgPz8gJ0NoZWNrb3V0IENhcnQnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvY2VlZFRvTGlzdFBhZ2UoKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsxXT8uc3R5bGVzXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzFdPy5jb250ZW50Py5sYWJlbCA/PyAnQ29udGludWUgU2hvcHBpbmcnfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PSAnQUREUkVTUydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb1BheW1lbnQoKVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsyXT8uY29udGVudD8ubGFiZWwgPz8gJ1BsYWNlIE9yZGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaSA9PSAwID8gcHJvY2VlZFRvQ2hlY2tvdXQoKSA6IHByb2NlZWRUb0xpc3RQYWdlKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnRcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY2FydC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J2hlYWRpbmctbWVkaXVtJzogdGV4dC5sYWJlbCA9PSAnSGVhZGluZycsICdkZXNjcmlwdGlvbic6IHRleHQubGFiZWwgPT0gJ1RleHQnfVwiPnt7dGV4dC52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiPlxyXG4gICAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgY2FydC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiIFtpc0Vjb21tZXJjZV09XCJ0cnVlXCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcnQtd2luZG93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGxoLTIgbWItMyBoZWFkZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VXaW5kb3coKVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+WW91ciBDYXJ0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYXZpbmdcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvZmZlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2h0WTU1c3FZL2Rpc2NvdW50LnBuZ1wiIGFsdD1cIlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxyXG4gICAgICAgICAgPHNwYW4+QXZhaWwgT2ZmZXJzIC8gQ291cG9uczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJzbWFsbC1wcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLW5hbWUgdHJpbS10ZXh0XCI+e3sgaXRlbS5pdGVtTmFtZSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnQoaXRlbSwgJ1NVQlNUUkFDVCcpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW0tcHJpY2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS13aXRoLXRheFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uc2VsbGluZykgfCBudW1iZXI6ICcxLjAtMid9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvdHRlci1zZWNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktYWRkIGQtZmxleFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3NcIj5UZXRzdGluZzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYXltZW50LWJ0blwiIFtkaXNhYmxlZF09XCJjYXJ0SW5mby5hZGRyZXNzRGV0YWlsc1wiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCI+IDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+Q2xpY2sgdG8gUGF5PC9zcGFuPiA8c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3socmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgd2lkdGg6ICcxMDAlJyxcclxuICBoZWlnaHQ6ICc0MHZoJyxcclxuICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICdyaWdodCc6ICc1cHgnXHJcbn1cIj5cclxuPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNDb3Vwb25MaXN0PlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiY291cG9ucy1saXN0aW5nLXNlY3Rpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24taGVhZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmFjay1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2dSZWYoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGV4dFwiPkFwcGx5IENvdXBvbjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLXNlYXJjaC1zZWNcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIENvdXBvbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJlbnRlcmVkQ291cG9uQ29kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnRuLXNlYXJjaFwiIChjbGljayk9XCJzZWFyY2hJZkFwcGxpY2FibGUoKVwiPkFwcGx5PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24tbGlzdGluZ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY291cG9uTGlzdC5sZW5ndGggPiAwOyBlbHNlIHNob3dFbXB0eVNjcmVlblwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvdXBvbkRldGFpbHMgb2YgY291cG9uTGlzdDsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWRldGFpbHNcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiAhY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJyNGRkYyRjQnIDogJyNFREZGRkEnfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc19fY291cG9uLWhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWJyaWVmXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWJyaWVmX19sZWZ0LXNlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnY29sb3InOiAhY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJyNEQjFBMUEnIDogJyMwOTdENUYnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvdXBvbkRldGFpbHMuY291cG9uQ29kZSB8IHVwcGVyY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWRlc2NcIj57eyBjb3Vwb25EZXRhaWxzLmRpc2NvdW50RGVzY3JpcHRpb24gfCB0aXRsZWNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZl9fcmlnaHQtc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBseS1vZmZlci1idG5cIiBcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJjb3Vwb25EZXRhaWxzLmFwcGxpY2FibGUgPyAnMScgOiAnMC4zJ1wiIFtuZ1N0eWxlXT1cInsnY3Vyc29yJzogY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJ3BvaW50ZXInIDogJyd9XCIgKGNsaWNrKT1cImFwcGx5Q291cG9uKGNvdXBvbkRldGFpbHMpXCI+QXBwbHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdXBvbi10b2dnbGUtZGV0YWlscy1idG5cIiAoY2xpY2spPVwiY291cG9uRGV0YWlscy5zdGF0dXMgPSAhY291cG9uRGV0YWlscy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiY291cG9uRGV0YWlscy5zdGF0dXNcIj5IaWRlIGRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvdy1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiIWNvdXBvbkRldGFpbHMuc3RhdHVzXCI+VmlldyBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkRldGFpbHMuc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi10ZXJtc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpPk9mZmVyIHZhbGlkIGZyb20ge3sgY291cG9uRGV0YWlscy52YWxpZEZyb20gfCBkYXRlIH19IC0ge3sgY291cG9uRGV0YWlscy52YWxpZFRvIHwgZGF0ZSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5U2NyZWVuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zY3JlZW4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2NvbW1vbi9jb3Vwb24tZW1wdHktaW1nLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fcHJpbWFyeS10ZXh0XCI+Tm8gQ291cG9uIEF2YWlsYWJsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fc2Vjb25kYXJ5LXRleHRcIj5cclxuICAgICAgICAgICAgTG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gY291cG9ucyBhdCB0aGUgbW9tZW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fYnV0dG9uXCI+RXhwbG9yZTwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBYSxlQUFlLEVBQWdCLE1B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QThRQSxteFJEaE9JLFdBQVcsOG1CQUNYLFlBQVksODFCQUNaLE9BQU8sMElBQ1AsZUFBZSw4QkFDZixvQkFBb0IsdWhCQUNwQixtQkFBbUIseUdBQ25CLG9CQUFvQjtnQkFDcEIsV0FBVztnQkFDWCx3QkFBd0Isb0hBQ3hCLGtCQUFrQix5RkFDbEIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLGdCQUFnQiw2S0FDaEIsV0FBVzs7MkZBT0YsYUFBYTtrQkF4QnpCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsdUJBQXVCO3FCQUN4QixhQUNVLENBQUMsY0FBYyxDQUFDOzswQkF5QnhCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7eUNBckJGLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZHJlc3MsIENhcnRTZWN0aW9uTW9kYWwsIENhcnRTZWN0aW9uU3R5bGVzTW9kZWwgfSBmcm9tICcuL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gXCIuLi9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQgfSBmcm9tICcuLi9hdXRoZW50aWNhdGUtdXNlci9hdXRoZW50aWNhdGUtdXNlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRCb3R0b21TaGVldCwgTWF0Qm90dG9tU2hlZXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ib3R0b20tc2hlZXQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDdXN0b21lclJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWVyLXJldmlldy9jdXN0b21lci1yZXZpZXcuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBDb3Vwb24ge1xyXG4gIGRpc2NvdW50VHlwZTogc3RyaW5nO1xyXG4gIGRpc2NvdW50TmFtZTogc3RyaW5nO1xyXG4gIGRpc2NvdW50RGVzY3JpcHRpb246IHN0cmluZztcclxuICBhcHBsaWNhYmxlOiBib29sZWFuO1xyXG4gIGNvdXBvbkNvZGU6IHN0cmluZztcclxuICBjb3Vwb25JZDogc3RyaW5nO1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICB2YWxpZEZyb206IERhdGU7XHJcbiAgdmFsaWRUbzogRGF0ZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jYXJ0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLCBcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIC8vRElSRUNUSVZFXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsIFxyXG4gICAgQWRkcmVzc0NvbXBvbmVudCxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgQ3VzdG9tZXJSZXZpZXdDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NhcnQuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YT86IENhcnRTZWN0aW9uTW9kYWw7XHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3R5bGVzPzogQ2FydFNlY3Rpb25TdHlsZXNNb2RlbDtcclxuICBwdWJsaWMgY3VycmVudFRhYjogJ0JBRycgfCAnQUREUkVTUycgfCAnUEFZTUVOVCcgPSBcIkJBR1wiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBtYXREaWFsb2dEYXRhOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q2FydENvbXBvbmVudD5cclxuICApe1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1c2VyRGV0YWlsczogVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9DQVJUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEFkZHJlc3NJZHg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGVudGVyZWRDb3Vwb25Db2RlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBjb3Vwb25MaXN0OiBDb3Vwb25bXSA9IFtdO1xyXG5cclxuICBjYXJ0SW5mbzogYW55ID0ge1xyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRlbGl2ZXJ5Q2hhcmdlc1wiOiAwXHJcbiAgICB9LFxyXG4gICAgcGxhdGZvcm06IFwiV0VCXCIsXHJcbiAgICBjYXJ0VHlwZTogXCJDQVJUXCIsXHJcbiAgICBhZGRyZXNzRGV0YWlsczogbnVsbCxcclxuICAgIHVzZXJEZXRhaWxzOiB7XHJcbiAgICAgIFwidXNlcklkXCI6IFwiXCIsXHJcbiAgICAgIFwidXNlck5hbWVcIjogXCJcIixcclxuICAgICAgXCJtb2JpbGVcIjogXCJcIixcclxuICAgICAgXCJlbWFpbFwiOiBcIlwiXHJcbiAgICB9LFxyXG4gICAgdG90YWxBbW91bnQ6IDBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBjb25zdCBkZWxpdmVyeU9wdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJkZWxpdmVyeU9wdGlvbnNcIikgPz8gXCJ7fVwiKTtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICAgIHRoaXMuZ2V0SW5kZXhEQkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAgICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgICAgICAgXCJlbWFpbFwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0LmVtYWlsLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckl0ZW1zKHRoaXMudXNlckRldGFpbHMudXNlcklkLCBcIkNBUlRcIikuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICBjb25zdCB0ZW1wVXNlckNhcnQgPSByZXNwb25zZT8uZGF0YT8uWzBdPy5vcmRlcmVkSXRlbXMgPz8gW107XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gcmVzcG9uc2UuZGF0YT8uWzBdPy5jYXJ0SWQ7IFxyXG4gICAgICAgIHRoaXMuZ2V0Q291cG9uTGlzdCgpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRlbXBVc2VyQ2FydCkub25jb21wbGV0ZSA9ICgpPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICByZXN0UmVzcG9uc2UuZmluYWxseSgoKT0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUy5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5xdWFudGl0eSAqIChpdGVtLml0ZW1UYXggPz8gMCkpO1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNhcnRSZXNwb25zZS5vbmVycm9yID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ0ZhaWxlZCB0byB1cGRhdGUgY2FydCBkZXRhaWxzJyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgLSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKTsgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMucmVzcG9uc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gcmVzcG9uc2UuZGF0YT8uY2FydElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGFbXCJjYXJ0SWRcIl0gPSB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRJbmRleERCRGF0YSgpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q291cG9uTGlzdCgpIHtcclxuICAgIGlmICghdGhpcy5jYXJ0SW5mby5jYXJ0SWQpXHJcbiAgICAgIHRoaXMuY2FydEluZm8uY2FydElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgfSlcclxuICB9XHJcbiAgcmVtb3ZlQ291cG9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbklkID0gXCJcIjtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gMDtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVtb3ZlRGlzY291bnRGcm9tQ2FydCh0aGlzLmNhcnRJbmZvLmNhcnRJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KCk7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBSZW1vdmVkJyB9KTtcclxuICAgIH0pXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kZXhEQkRhdGEoKSB7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgY29uc29sZS5sb2coY2FydFJlc3BvbnNlKTtcclxuICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcblxyXG4gICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUy5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLmNhcnRJbmZvO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBwcm9jZWVkVG9DaGVja291dCgpe1xyXG4gICAgaWYodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWIgPSBcIkFERFJFU1NcIjsgXHJcbiAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpIHtcclxuICAgICAgICAgICAgdGhpcy5ib3R0b21TaGVldC5vcGVuKEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQsIHtkYXRhOiB0aGlzLmRhdGF9KS5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgICAgICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2UgOiBcIiwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZSlcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2VlZFRvQ2hlY2tvdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGhlaWdodDogJzUwdmgnLFxyXG4gICAgICAgICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEgXHJcbiAgICAgICAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAgICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2UgOiBcIiwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9DaGVja291dCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdvVG9Qcm9kdWN0RGV0YWlscyhwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2RldGFpbHMnXSwge3F1ZXJ5UGFyYW1zOiB7aWQ6IHByb2R1Y3QuaXRlbUlkLCB2YXJpZW50SWQ6IHByb2R1Y3QudmFyaWVudElkfX0pO1xyXG4gIH1cclxuICBwcm9jZWVkVG9MaXN0UGFnZSgpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xyXG4gIH1cclxuICByZW1vdmVJdGVtKGl0ZW06IE9yZGVyZWRJdGVtcykge1xyXG5cclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgIGljb246IFwid2FybmluZ1wiLFxyXG4gICAgICBodG1sOiBcIjxzcGFuPllvdSBjYW4gbW92ZSA8L3NwYW4+IDxiPlwiICsgaXRlbS5pdGVtTmFtZSArIFwiPC9iPiA8c3Bhbj50byB3aXNobGlzdCBzbyB5b3UgY2FuIGJ1eSBsYXRlci48L3NwYW4+XCIsXHJcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIk1vdmUgdG8gd2lzaGxpc3RcIixcclxuICAgICAgc2hvd0RlbnlCdXR0b246IHRydWUsXHJcbiAgICAgIGRlbnlCdXR0b25UZXh0OiBcIkRlbGV0ZSBpdGVtXCIsXHJcbiAgICAgIGRlbnlCdXR0b25Db2xvcjogXCIjOTI4YzhjXCJcclxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKT0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtRnJvbUNhcnQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5tb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNEZW5pZWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBtb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KGl0ZW0pO1xyXG4gIH1cclxuICBwcml2YXRlIHJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGl0ZW0ucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHRoaXMuVVNFUl9DQVJUX0lURU1TKVxyXG4gICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNvdXBvbkNvZGUgPSByZXNwb25zZS5kYXRhPy5iaWxsZGV0YWlscz8uY291cG9uQ29kZTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5jb3Vwb25JZCA9IHJlc3BvbnNlLmRhdGE/LmJpbGxkZXRhaWxzPy5jb3Vwb25JZDtcclxuICAgICAgXHJcbiAgICAgIHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5xdWFudGl0eSAqIChpdGVtLml0ZW1UYXggPz8gMCkpO1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZFRvQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKSB7XHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgKz0gMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpdGVtLnF1YW50aXR5IC09IDE7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpZiAoaXRlbS5xdWFudGl0eSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW0oaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHByb2NlZWRUb1BheW1lbnQoKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1c2VyRGV0YWlsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSB1c2VyRGV0YWlsPy5hZGRyZXNzRGV0YWlsc0xpc3RbdGhpcy5zZWxlY3RlZEFkZHJlc3NJZHhdIGFzIEFkZHJlc3M7XHJcbiAgICBpZiAoYWRkcmVzcz8ucmVjZWl2ZXJOYW1lPy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHByb3ZpZGUgYWRkcmVzcyBkZXRhaWxzJyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnUGxlYXNlIHdhaXQnLCBkZXRhaWw6ICdXZSBhcmUgcHJvY2Vzc2luZyB5b3VyIHBheW1lbnQnLCBsaWZlOiAyMDAwIH0pO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuY2FydEluZm9bXCJhZGRyZXNzRGV0YWlsc1wiXSA9IGFkZHJlc3M7XHJcbiAgICBjb25zdCBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIikgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImlzUGF5bWVudEdhdGV3YXlFbmFibGVkXCIpID09IFwidHJ1ZVwiIDogdHJ1ZTtcclxuICAgIGNvbnN0IHVwZGF0ZUFkZHJlc3MgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJ1c2VySWRcIjogdXNlckRldGFpbC51c2VySWQsXHJcbiAgICAgIFwiY2FydElkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYXJ0SWQnKSxcclxuICAgICAgXCJvcmRlckFtb3VudFwiOiBOdW1iZXIoTnVtYmVyKHRoaXMucmVzcG9uc2VEYXRhLnRvdGFsQW1vdW50KS50b0ZpeGVkKDIpKSxcclxuICAgICAgXCJpc1BheW1lbnRHYXRld2F5RW5hYmxlZFwiOiBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCxcclxuICAgICAgXCJjb250YWN0RGV0YWlsc1wiOiB7XHJcbiAgICAgICAgXCJuYW1lXCI6IGFkZHJlc3MucmVjZWl2ZXJOYW1lLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IGFkZHJlc3MucmVjZWl2ZXJQaG9uZSxcclxuICAgICAgICBcImNvdW50cnlDb2RlXCI6IFwiOTFcIixcclxuICAgICAgICBcImVtYWlsXCI6IGFkZHJlc3MucmVjZWl2ZXJFbWFpbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRUb2tlbihwYXlsb2FkKS5zdWJzY3JpYmUoKHBheW1lbnREZXRhaWxzOiBhbnkpPT4ge1xyXG4gICAgICBpZiAoaXNQYXltZW50R2F0ZXdheUVuYWJsZWQpXHJcbiAgICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdChwYXltZW50RGV0YWlscyk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwib3JkZXJJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBheW1lbnRGb3JcIik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgdGl0bGU6IFwiSHVycmF5XCIsXHJcbiAgICAgICAgICB0ZXh0OiBcIk9yZGVyIHBsYWNlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNlZSBEZXRhaWxzXCJcclxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpPT4ge1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3JDb2RlID09IDEwMDEgfHwgZXJyb3IuZXJyb3JDb2RlID09IDEwMDIpIHtcclxuICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgaWNvbjogXCJpbmZvXCIsXHJcbiAgICAgICAgICBodG1sOiBcIjxwPlwiICsgZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8gKlxcKFteKV0qXFwpICovZywgXCJcIikgKyBcIjwvcD5cIixcclxuICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGVycm9yLmVycm9yQ29kZSA9PSAxMDAyLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiUmVtb3ZlIGl0ZW0gJiBQbGFjZSBPcmRlclwiLFxyXG4gICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJSZWR1Y2UgcXVhbnRpdHlcIixcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIixcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdQcm9jZXNzaW5nJywgZGV0YWlsOiAnUGxlYXNlIHdhaXQsIHVwZGFpbmcgeW91ciBjYXJ0JywgbGlmZTogMjAwMH0pO1xyXG4gICAgICAgICAgY29uc3QgcmVnRXhwID0gL3soW159XSspfS9nO1xyXG4gICAgICAgICAgY29uc3QgaWQgPSByZWdFeHAuZXhlYyhlcnJvci5tZXNzYWdlKT8uWzFdO1xyXG4gICAgICAgICAgbGV0IGl0ZW1EZXRhaWw6IFByb2R1Y3QgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgIGNvbnN0IHByb2R1Y3REZXRhaWxzQXN5bmMgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKGlkKS50b1Byb21pc2UoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtRGV0YWlsID0gcmVzcG9uc2VbMF0gYXMgUHJvZHVjdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNEaXNtaXNzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gaXRlbURldGFpbD8uaXRlbUlkKVxyXG4gICAgICAgICAgICAgICAgaXRlbS5xdWFudGl0eSA9IGl0ZW1EZXRhaWw/Lml0ZW1JbnZlbnRvcnkub3BlbmluZ1N0b2NrO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLml0ZW1JZCAhPSBpdGVtRGV0YWlsPy5pdGVtSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9QYXltZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHRyeSBhZ2FpbicgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBuZWVkIGNvbmRpdGlvblxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBlZGl0U2VjdGlvbigpe1xyXG4gICAgXHJcbiAgICBpZih3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIFxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoe2RhdGE6dGhpcy5kYXRhfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBjbG9zZVdpbmRvdygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIGNvdXBvbkRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XHJcbiAgb3BlbkRpYWxvZyhjb250YWluZXI6IGFueSkge1xyXG5cclxuICAgIGlmICh0aGlzLmNhcnRJbmZvPy5iaWxsZGV0YWlscz8uY291cG9uSWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghIXRoaXMudXNlckRldGFpbHMpXHJcbiAgICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGNvbnRhaW5lciwge3BhbmVsQ2xhc3M6ICdzaWRlcGFuZWwtY2xhc3MnfSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0xvZ2luJywgZGV0YWlsOiAnUGxlYXNlIGxvZ2luIHdpdGggbW9iaWxlIG51bWJlciB0byBhcHBseSBjb3Vwb24nIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzZWFyY2hJZkFwcGxpY2FibGUoKSB7fVxyXG4gIGNsb3NlRGlhbG9nUmVmKCkge1xyXG4gICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG4gIGFwcGx5Q291cG9uKGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICBcclxuICAgIGlmICghY291cG9uLmFwcGxpY2FibGUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBjb3Vwb24uY291cG9uQ29kZTtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBjb3Vwb24uY291cG9uSWQ7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvKTtcclxuICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgIFxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZUNhcnQoKTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBBZGRlZCcgfSk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGlzY291bnRBbW91bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY291cG9uRGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgY2FsY3VsYXRlQ2FydCgpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IDA7XHJcbiAgICBcclxuICAgIGlmICh0aGlzLlVTRVJfQ0FSVF9JVEVNUykge1xyXG5cclxuICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICB9XHJcblxyXG4gIGdldFRheEFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICF0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/ICh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ID8/IDApIDogKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwKSA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0QWRkcmVzc0xpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGV0YWlscyA/IFsuLi50aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3RdIDogW107XHJcbiAgfVxyXG4gIGdldCBpc01vYmlsZSgpIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbYXR0ci5jbGFzc109XCJpc01vYmlsZSA/ICdweS01JyA6ICcnXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG0tYXV0byBtYi00XCIgW3N0eWxlLm1hcmdpblRvcC5weF09XCJpc01vYmlsZSA/ICcnOiAnNTAnXCIgW3N0eWxlLndpZHRoLiVdPVwiaXNNb2JpbGUgPyAnOTAnIDogJydcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0JBRyd9XCIgKGNsaWNrKT1cImN1cnJlbnRUYWIgPSAnQkFHJ1wiPkJhZzwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyXCI+PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdBRERSRVNTJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdBRERSRVNTJ1wiPkFkZHJlc3M8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhclwiPjwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmVcIiBbbmdDbGFzc109XCJ7J2lzQWN0aXZlJzogY3VycmVudFRhYiA9PSAnUEFZTUVOVCd9XCIgc3R5bGU9XCJjdXJzb3I6IGF1dG87XCI+UGF5bWVudDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXBhcmVudCBjb250YWluZXJcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID4gMFwiICBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjdXJyZW50VGFiXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiICpuZ1N3aXRjaENhc2U9XCInQkFHJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktYmFnXCI+XHJcbiAgICAgICAgICAgICAgTXkgQmFnJm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcGFyZW50IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJwcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGgtMTAwXCIgW3N0eWxlLndpZHRoLnB4XT1cImlzTW9iaWxlID8gJzIwMCcgOiAnJ1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSB0cmltLXRleHQgaGVhZGluZy1sYXJnZVwiPnt7aXRlbS5pdGVtTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uZGlzY291bnRlZFByaWNlKSB8IG51bWJlcjogJzEuMC0yJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLml0ZW1WYXJpYW50XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0Zvcj1cImxldCB2YXJpZW50IG9mIGdldEtleXMoaXRlbS5pdGVtVmFyaWFudC5wcm9wZXJ0aWVzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+e3sgdmFyaWVudCB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZ3LW5vcm1hbFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDsgaGVpZ2h0OiAxM3B4OyB3aWR0aDogMTNweDsgYm9yZGVyLXJhZGl1czogNTAlO1wiICpuZ0lmPVwidmFyaWVudC50b0xvd2VyQ2FzZSgpID09ICdjb2xvcidcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllc1t2YXJpZW50XVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctbm9ybWFsXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPiB7eyBpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF0gfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHdpZHRoOiAwcHg7IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KChpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5KSAgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImlzTW9iaWxlID8gJzUnIDogJzAnXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggIT0gKGlkeCArMSlcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidBRERSRVNTJ1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tYWRkcmVzcyBbaXNDYXJ0XT1cInRydWVcIiBbcmVzcG9uc2VEYXRhXT1cImdldEFkZHJlc3NMaXN0XCIgW2RhdGFdPVwiZGF0YVwiIChzZWxlY3RlZEFkZHJlc3MpPVwiYWRkcmVzc1NlbGVjdGVkKCRldmVudClcIj48L3NpbXBvLWFkZHJlc3M+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidQQVlNRU5UJ1wiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBDb3Vwb25cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbnNcIiAoY2xpY2spPVwib3BlbkRpYWxvZyhDb3Vwb25MaXN0KVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+QXBwbHkgQ291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj5BcHBseTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+Q291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVDb3Vwb24oJGV2ZW50KVwiPlJlbW92ZTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBQcmljZSBEZXRhaWxzXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiPlRvdGFsIFByaWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsTmV0VmFsdWUgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+VG90YWwgVGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KCghcmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/IHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4IDogcmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50KSA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRlbGl2ZXJ5Q2hhcmdlcyAmJiByZXNwb25zZURhdGEuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGVsaXZlcnkgQ2hhcmdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGlzY291bnQgQW1vdW50PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIiBzdHlsZT1cImNvbG9yOiBibGFjaztmb250LXdlaWdodDogNjAwO1wiPlRvdGFsIEFtb3VudDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS12YWx1ZVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj48c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soKHJlc3BvbnNlRGF0YT8udG90YWxBbW91bnQgPz8gMCkgLSAocmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMCkpIHwgbnVtYmVyOiAnMS4wLTInfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXBhcmVudFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09ICdCQUcnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIG1vYmlsZS1maXhlZFwiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCIgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlswXT8uY29udGVudD8ubGFiZWwgPz8gJ0NoZWNrb3V0IENhcnQnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvY2VlZFRvTGlzdFBhZ2UoKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsxXT8uc3R5bGVzXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzFdPy5jb250ZW50Py5sYWJlbCA/PyAnQ29udGludWUgU2hvcHBpbmcnfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PSAnQUREUkVTUydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb1BheW1lbnQoKVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsyXT8uY29udGVudD8ubGFiZWwgPz8gJ1BsYWNlIE9yZGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaSA9PSAwID8gcHJvY2VlZFRvQ2hlY2tvdXQoKSA6IHByb2NlZWRUb0xpc3RQYWdlKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnRcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY2FydC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J2hlYWRpbmctbWVkaXVtJzogdGV4dC5sYWJlbCA9PSAnSGVhZGluZycsICdkZXNjcmlwdGlvbic6IHRleHQubGFiZWwgPT0gJ1RleHQnfVwiPnt7dGV4dC52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiPlxyXG4gICAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgY2FydC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiIFtpc0Vjb21tZXJjZV09XCJ0cnVlXCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcnQtd2luZG93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGxoLTIgbWItMyBoZWFkZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VXaW5kb3coKVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+WW91ciBDYXJ0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYXZpbmdcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvZmZlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2h0WTU1c3FZL2Rpc2NvdW50LnBuZ1wiIGFsdD1cIlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxyXG4gICAgICAgICAgPHNwYW4+QXZhaWwgT2ZmZXJzIC8gQ291cG9uczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJzbWFsbC1wcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLW5hbWUgdHJpbS10ZXh0XCI+e3sgaXRlbS5pdGVtTmFtZSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnQoaXRlbSwgJ1NVQlNUUkFDVCcpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW0tcHJpY2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS13aXRoLXRheFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uc2VsbGluZykgfCBudW1iZXI6ICcxLjAtMid9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvdHRlci1zZWNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktYWRkIGQtZmxleFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3NcIj5UZXRzdGluZzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYXltZW50LWJ0blwiIFtkaXNhYmxlZF09XCJjYXJ0SW5mby5hZGRyZXNzRGV0YWlsc1wiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCI+IDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+Q2xpY2sgdG8gUGF5PC9zcGFuPiA8c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3socmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgd2lkdGg6ICcxMDAlJyxcclxuICBoZWlnaHQ6ICc0MHZoJyxcclxuICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICdyaWdodCc6ICc1cHgnXHJcbn1cIj5cclxuPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNDb3Vwb25MaXN0PlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiY291cG9ucy1saXN0aW5nLXNlY3Rpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24taGVhZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmFjay1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2dSZWYoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGV4dFwiPkFwcGx5IENvdXBvbjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLXNlYXJjaC1zZWNcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIENvdXBvbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJlbnRlcmVkQ291cG9uQ29kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnRuLXNlYXJjaFwiIChjbGljayk9XCJzZWFyY2hJZkFwcGxpY2FibGUoKVwiPkFwcGx5PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24tbGlzdGluZ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY291cG9uTGlzdC5sZW5ndGggPiAwOyBlbHNlIHNob3dFbXB0eVNjcmVlblwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvdXBvbkRldGFpbHMgb2YgY291cG9uTGlzdDsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWRldGFpbHNcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiAhY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJyNGRkYyRjQnIDogJyNFREZGRkEnfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc19fY291cG9uLWhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWJyaWVmXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWJyaWVmX19sZWZ0LXNlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnY29sb3InOiAhY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJyNEQjFBMUEnIDogJyMwOTdENUYnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvdXBvbkRldGFpbHMuY291cG9uQ29kZSB8IHVwcGVyY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWRlc2NcIj57eyBjb3Vwb25EZXRhaWxzLmRpc2NvdW50RGVzY3JpcHRpb24gfCB0aXRsZWNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZl9fcmlnaHQtc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBseS1vZmZlci1idG5cIiBcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJjb3Vwb25EZXRhaWxzLmFwcGxpY2FibGUgPyAnMScgOiAnMC4zJ1wiIFtuZ1N0eWxlXT1cInsnY3Vyc29yJzogY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJ3BvaW50ZXInIDogJyd9XCIgKGNsaWNrKT1cImFwcGx5Q291cG9uKGNvdXBvbkRldGFpbHMpXCI+QXBwbHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdXBvbi10b2dnbGUtZGV0YWlscy1idG5cIiAoY2xpY2spPVwiY291cG9uRGV0YWlscy5zdGF0dXMgPSAhY291cG9uRGV0YWlscy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiY291cG9uRGV0YWlscy5zdGF0dXNcIj5IaWRlIGRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvdy1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiIWNvdXBvbkRldGFpbHMuc3RhdHVzXCI+VmlldyBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkRldGFpbHMuc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi10ZXJtc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpPk9mZmVyIHZhbGlkIGZyb20ge3sgY291cG9uRGV0YWlscy52YWxpZEZyb20gfCBkYXRlIH19IC0ge3sgY291cG9uRGV0YWlscy52YWxpZFRvIHwgZGF0ZSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5U2NyZWVuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zY3JlZW4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2NvbW1vbi9jb3Vwb24tZW1wdHktaW1nLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fcHJpbWFyeS10ZXh0XCI+Tm8gQ291cG9uIEF2YWlsYWJsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fc2Vjb25kYXJ5LXRleHRcIj5cclxuICAgICAgICAgICAgTG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gY291cG9ucyBhdCB0aGUgbW9tZW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fYnV0dG9uXCI+RXhwbG9yZTwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==