@hmcts/ccpay-web-component 6.2.7 → 6.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/add-remission/add-remission.component.mjs +20 -6
- package/esm2022/lib/components/payment-view/payment-view.component.mjs +3 -1
- package/esm2022/lib/payment-lib.component.mjs +88 -2
- package/fesm2022/hmcts-ccpay-web-component.mjs +105 -2
- package/fesm2022/hmcts-ccpay-web-component.mjs.map +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +5 -4
- package/lib/payment-lib.component.d.ts +47 -0
- package/package.json +1 -1
|
@@ -115,6 +115,7 @@ export class PaymentViewComponent {
|
|
|
115
115
|
this.paymentGroup.payments = this.paymentGroup.payments.filter(paymentGroupObj => paymentGroupObj['reference'].includes(this.paymentLibComponent.paymentReference));
|
|
116
116
|
const paymentAllocation = this.paymentGroup.payments[0].payment_allocation;
|
|
117
117
|
this.isStatusAllocated = paymentAllocation.length > 0 && paymentAllocation[0].allocation_status === 'Allocated' || paymentAllocation.length === 0;
|
|
118
|
+
this.paymentLibComponent.addPaymentGroup(this.paymentGroup);
|
|
118
119
|
}, (error) => this.errorMessage = error);
|
|
119
120
|
this.paymentViewService.getPaymentFailure(this.paymentLibComponent.paymentReference).subscribe({
|
|
120
121
|
next: (res) => {
|
|
@@ -338,6 +339,7 @@ export class PaymentViewComponent {
|
|
|
338
339
|
return false;
|
|
339
340
|
}
|
|
340
341
|
chkIsAddRemissionBtnEnable(fee) {
|
|
342
|
+
this.paymentLibComponent.addPaymentGroup(this.paymentGroup);
|
|
341
343
|
if (fee !== null && fee !== undefined) {
|
|
342
344
|
if (this.paymentLibComponent.overPaymentAmount > 0) {
|
|
343
345
|
return fee.add_remission && fee.remission_enable && this.paymentLibComponent.isTheCurrentRefundInProcessForThisFee(fee);
|
|
@@ -461,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
461
463
|
type: Input,
|
|
462
464
|
args: ["isServiceRequest"]
|
|
463
465
|
}] } });
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFLckYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFLekQsTUFBTSxjQUFjLEdBQUcsdUJBQXVCLENBQUM7QUFtQi9DLE1BQU0sT0FBTyxvQkFBb0I7SUFxRFg7SUFDVjtJQUN1QjtJQUN2QjtJQUNBO0lBeERELFNBQVMsQ0FBVTtJQUNuQixhQUFhLENBQVU7SUFDdkIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBUztJQUNqQixXQUFXLENBQVM7SUFDcEIsa0JBQWtCLENBQVM7SUFDM0IsT0FBTyxDQUFXO0lBQ2xCLGlCQUFpQixDQUFXO0lBQzVCLHNCQUFzQixDQUFTO0lBQy9CLFVBQVUsQ0FBUztJQUNuQixZQUFZLENBQU87SUFDbkIsYUFBYSxDQUFTO0lBQ3RCLGNBQWMsQ0FBUztJQUN2QixtQkFBbUIsQ0FBUztJQUM1QixXQUFXLENBQVE7SUFDNUIsSUFBSSxDQUFNO0lBQ1YsYUFBYSxDQUFVO0lBQ0ksZ0JBQWdCLENBQVM7SUFDcEQsUUFBUSxDQUFTO0lBQ2pCLFlBQVksQ0FBZ0I7SUFDNUIsWUFBWSxDQUFTO0lBQ3JCLGFBQWEsQ0FBUztJQUN0QixjQUFjLENBQVM7SUFDdkIsU0FBUyxDQUFTO0lBQ2xCLGlCQUFpQixDQUFVO0lBQzNCLGlCQUFpQixDQUFVO0lBQzNCLEtBQUssQ0FBTztJQUNaLFVBQVUsQ0FBUztJQUNuQixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsb0JBQW9CLENBQVU7SUFDOUIsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLHNCQUFzQixHQUFZLEtBQUssQ0FBQztJQUN4QywwQkFBMEIsR0FBRyxDQUFDLDBCQUEwQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0UsVUFBVSxHQUFpQixFQUFFLENBQUM7SUFDOUIsa0JBQWtCLEdBQXNCLEVBQUUsQ0FBQztJQUMzQyxzQkFBc0IsQ0FBa0I7SUFDeEMsZUFBZSxDQUFTO0lBQ3hCLDBCQUEwQixDQUFVO0lBQ3BDLGdCQUFnQixDQUFTO0lBQ3pCLHdCQUF3QixDQUFVO0lBQ2xDLHVCQUF1QixDQUFVO0lBQ2pDLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQVM7SUFDcEIscUJBQXFCLEdBQVksSUFBSSxDQUFDO0lBQ3RDLGNBQWMsQ0FBUztJQUN2QixpQkFBaUIsQ0FBdUI7SUFDeEMsWUFBWSxDQUFNO0lBQ2xCLHlCQUF5QixDQUFVO0lBQ25DLGVBQWUsQ0FBUztJQUN4QixZQUFZLENBQVM7SUFDckIsdUJBQXVCLENBQVM7SUFDaEMsbUJBQW1CLENBQVU7SUFDN0IsWUFBb0Isa0JBQXNDLEVBQ2hELG1CQUF3QyxFQUNqQixtQkFBb0MsRUFDM0QsRUFBcUIsRUFDckIsaUJBQW9DO1FBSjFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDaEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQWlCO1FBQzNELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDOUMsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUM7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FDckcsWUFBWSxDQUFDLEVBQUU7WUFDYixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFFL0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3BDLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7d0JBQzlCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUFDM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEtBQUssV0FBVyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFFcEosQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0YsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBRWhFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBQ2pFLElBQUksUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ2hFLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUE7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsbUJBQW1CO1FBQ2pCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO0lBRTNGLENBQUM7SUFDRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELHNCQUFzQixDQUFDLEtBQVU7UUFDL0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztZQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3RHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLENBQUM7SUFFSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVM7UUFDcEIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUNuRyxZQUFZLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFFakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUMzRCxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQWlCO1FBQzVCLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEQsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFFSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNYLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO2dCQUN0QyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO2dCQUN4QyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtnQkFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTthQUMxQyxDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQ2xJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQzlELFFBQVEsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUE0QjtRQUMxQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7SUFDcEQsQ0FBQztJQUNELHFCQUFxQixDQUFDLE9BQWlCLEVBQUUsU0FBdUIsRUFBRSxJQUFTO1FBQ3pFLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDN0UsWUFBWSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNwRyxJQUFJLENBQUMsVUFBVSxHQUFHLHVCQUF1QixDQUFDO1lBQzFDLDhFQUE4RTtZQUM5RSxxSkFBcUo7UUFDdkosQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNGLEdBQUc7SUFDTCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBeUI7UUFFbkMsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFFM0QsMERBQTBEO2dCQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO2dCQUNELG1EQUFtRDtnQkFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLE9BQU07Z0JBQ1IsQ0FBQztnQkFDRCxrRkFBa0Y7Z0JBQ2xGLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO2dCQUNELHNFQUFzRTtnQkFDdEUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFFcEUsbUdBQW1HO29CQUNuRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUN2RyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3ZCLE9BQU07b0JBQ1IsQ0FBQztvQkFDRCxnREFBZ0Q7b0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsdUJBQXVCO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsVUFBeUI7UUFFM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO0lBQ25ELENBQUM7SUFJRCxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsVUFBd0I7UUFDN0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxPQUFpQjtRQUN6QyxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFBO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQXFCO1FBQzNDLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUdELGVBQWUsQ0FBQyxTQUFxQjtRQUNuQyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xELElBQUksU0FBUyxDQUFDLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsMEJBQTBCLENBQUMsR0FBUztRQUNsQyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQ0FBcUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxSCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxXQUFtQjtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxlQUFlLENBQUMsVUFBeUI7UUFFdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFBO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7UUFDcEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUNELGlCQUFpQixDQUFDLEdBQTBCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBRXBELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsT0FBaUI7UUFFMUMsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxSCxDQUFDO0lBRUgsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO3VHQXRiVSxvQkFBb0IsdUZBdURyQixhQUFhOzJGQXZEWixvQkFBb0IsNmtCQWJwQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQywwQkM5Qi9GLG8wNEJBeWpCQSwwcUZEemhCSSxZQUFZLHVwQkFBbUIscUJBQXFCLDJ1QkFDcEQsc0JBQXNCLG1IQUFtQix1QkFBdUIsNllBQ2hFLHVCQUF1QixrUUFDdkIsNEJBQTRCLGdSQUM1QixjQUFjLG1FQUNkLGNBQWMsdUVBQ2Qsb0JBQW9COzsyRkFLWCxvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsV0FDcEY7d0JBQ1AsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDckQsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3dCQUNqRSx1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLG9CQUFvQjtxQkFDckIsY0FDVyxJQUFJOzswQkEwRGIsTUFBTTsyQkFBQyxhQUFhO3lHQXREZCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR3FCLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BheW1lbnRWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7Tm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7SUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7SVBheW1lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHtJUmVtaXNzaW9ufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHtQb3N0UmVmdW5kUmV0cm9SZW1pc3Npb259IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uJztcbmltcG9ydCB7SVBheW1lbnRGYWlsdXJlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50RmFpbHVyZSc7XG5pbXBvcnQge09yZGVyc2xpc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUmVmdW5kQ29udGFjdERldGFpbHN9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZENvbnRhY3REZXRhaWxzJztcbmltcG9ydCB7QWRkUmVtaXNzaW9uQ29tcG9uZW50fSBmcm9tICcuLi9hZGQtcmVtaXNzaW9uL2FkZC1yZW1pc3Npb24uY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTdGF0dXNIaXN0b3J5Q29tcG9uZW50fSBmcm9tICcuLi9zdGF0dXMtaGlzdG9yeS9zdGF0dXMtaGlzdG9yeS5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXJ2aWNlUmVxdWVzdENvbXBvbmVudH0gZnJvbSAnLi4vc2VydmljZS1yZXF1ZXN0L3NlcnZpY2UtcmVxdWVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtDb250YWN0RGV0YWlsc0NvbXBvbmVudH0gZnJvbSAnLi4vY29udGFjdC1kZXRhaWxzL2NvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi9ub3RpZmljYXRpb24tcHJldmlldy9ub3RpZmljYXRpb24tcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtDY2RIeXBoZW5zUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMvY2NkLWh5cGhlbnMucGlwZSc7XG5pbXBvcnQge0NhcGl0YWxpemVQaXBlfSBmcm9tICcuLi8uLi9waXBlcy9jYXBpdGFsaXplLnBpcGUnO1xuaW1wb3J0IHtScHhUcmFuc2xhdGlvbk1vZHVsZX0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgdHlwZSB7UGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5cbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcGF5bWVudC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BheW1lbnQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BheW1lbnQtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdQQVlNRU5UX1ZJRVcnLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYXltZW50Vmlld0NvbXBvbmVudCkgfV0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQWRkUmVtaXNzaW9uQ29tcG9uZW50KSxcbiAgICBTdGF0dXNIaXN0b3J5Q29tcG9uZW50LCBmb3J3YXJkUmVmKCgpID0+IFNlcnZpY2VSZXF1ZXN0Q29tcG9uZW50KSxcbiAgICBDb250YWN0RGV0YWlsc0NvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50LFxuICAgIENjZEh5cGhlbnNQaXBlLFxuICAgIENhcGl0YWxpemVQaXBlLFxuICAgIFJweFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBQYXltZW50Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNUYWtlUGF5bWVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FzZVR5cGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyU3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyVG90YWxQYXltZW50czogbnVtYmVyO1xuICBASW5wdXQoKSBwYXltZW50OiBJUGF5bWVudDtcbiAgQElucHV0KCkgTE9HR0VESU5VU0VSUk9MRVM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgQElucHV0KCkgb3JkZXJDcmVhdGVkOiBEYXRlO1xuICBASW5wdXQoKSBvcmRlckNDREV2ZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyRmVlc1RvdGFsOiBudW1iZXI7XG4gIEBJbnB1dCgpIG9yZGVyUmVtaXNzaW9uVG90YWw6IG51bWJlcjtcbiAgQElucHV0KCkgb3JkZXJEZXRhaWw6IGFueVtdO1xuICBmZWVzOiBhbnk7XG4gIGlzRnVsbHlSZWZ1bmQ6IGJvb2xlYW47XG4gIEBJbnB1dChcImlzU2VydmljZVJlcXVlc3RcIikgaXNTZXJ2aWNlUmVxdWVzdDogc3RyaW5nO1xuICBlcnJvck1zZzogc3RyaW5nO1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBjY2RDYXNlTnVtYmVyOiBzdHJpbmc7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBpc1N0YXR1c0FsbG9jYXRlZDogYm9vbGVhbjtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIGZlZUlkOiBJRmVlO1xuICB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIGlzUmVmdW5kUmVtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3RyYXRlZ2ljRml4RW5hYmxlOiBib29sZWFuO1xuICBpc0FkZEZlZUJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJc3N1ZVJlZnVuZkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxvd2VkUm9sZXNUb0FjY2Vzc1JlZnVuZCA9IFsncGF5bWVudHMtcmVmdW5kLWFwcHJvdmVyJywgJ3BheW1lbnRzLXJlZnVuZCddO1xuICByZW1pc3Npb25zOiBJUmVtaXNzaW9uW10gPSBbXTtcbiAgYWxsUGF5bWVudHNGYWlsdXJlOiBJUGF5bWVudEZhaWx1cmVbXSA9IFtdO1xuICBzZWxlY3RlZFBheW1lbnRzU3RhdHVzOiBJUGF5bWVudEZhaWx1cmU7XG4gIHJlbWlzc2lvbkZlZUFtdDogbnVtYmVyO1xuICBpc1JlZnVuZFJlbWlzc2lvbkJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgc2VydmljZVJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U6IGJvb2xlYW47XG4gIGlzRnJvbVBheW1lbnREZXRhaWxQYWdlOiBib29sZWFuO1xuICBwYXltZW50RmVlczogSUZlZVtdO1xuICBwYXltZW50VHlwZTogc3RyaW5nO1xuICBpc0NvbnRpbnVlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICB2aWV3Q29tcFN0YXR1czogc3RyaW5nO1xuICBjb250YWN0RGV0YWlsc09iajogSVJlZnVuZENvbnRhY3REZXRhaWxzXG4gIG5vdGlmaWNhdGlvbjogYW55O1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmdW5kQW1vdW50OiBzdHJpbmc7XG4gIHRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvblByZXZpZXc6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoJ1BBWU1FTlRfTElCJykgcHJpdmF0ZSBwYXltZW50TGliQ29tcG9uZW50OiBQYXltZW50TGliQWxpYXMsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT047XG4gICAgdGhpcy5kY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuRENOX05VTUJFUjtcbiAgICB0aGlzLmlzVHVybk9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkY7XG4gICAgdGhpcy5zZXJ2aWNlUmVmZXJlbmNlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudHZpZXcnO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50UmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICBsZXQgZmVlcyA9IFtdO1xuICAgICAgICBwYXltZW50R3JvdXAuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMuZm9yRWFjaChyZW0gPT4ge1xuICAgICAgICAgICAgaWYgKHJlbS5mZWVfY29kZSA9PT0gZmVlLmNvZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgIGZlZVsncmVtaXNzaW9ucyddID0gcmVtO1xuICAgICAgICAgICAgICBmZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNSZW1pc3Npb25zTWF0Y2gpIHtcbiAgICAgICAgICAgIGZlZXMucHVzaChmZWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHBheW1lbnRHcm91cC5mZWVzID0gZmVlc1xuICAgICAgICB0aGlzLnBheW1lbnRGZWVzID0gZmVlcztcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXModGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UpKTtcbiAgICAgICAgY29uc3QgcGF5bWVudEFsbG9jYXRpb24gPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5wYXltZW50X2FsbG9jYXRpb247XG4gICAgICAgIHRoaXMuaXNTdGF0dXNBbGxvY2F0ZWQgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPiAwICYmIHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSAnQWxsb2NhdGVkJyB8fCBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPT09IDA7XG5cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICk7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0UGF5bWVudEZhaWx1cmUodGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIEpTT04ucGFyc2UocmVzKS5wYXltZW50X2ZhaWx1cmVfbGlzdC5yZXZlcnNlKCkuZm9yRWFjaChwYXltZW50cyA9PiB7XG5cbiAgICAgICAgICB0aGlzLmFsbFBheW1lbnRzRmFpbHVyZS5wdXNoKHBheW1lbnRzLnBheW1lbnRfZmFpbHVyZV9pbml0aWF0ZWQpO1xuICAgICAgICAgIGlmIChwYXltZW50cy5wYXltZW50X2ZhaWx1cmVfY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmFsbFBheW1lbnRzRmFpbHVyZS5wdXNoKHBheW1lbnRzLnBheW1lbnRfZmFpbHVyZV9jbG9zZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsUGF5bWVudHNGYWlsdXJlID0gdGhpcy5hbGxQYXltZW50c0ZhaWx1cmUucmV2ZXJzZSgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLmFsbFBheW1lbnRzRmFpbHVyZSA9IFtdO1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gXCJTZXJ2ZXIgZXJyb3JcIlxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgaXNDYXJkUGF5bWVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ubWV0aG9kID09PSAnY2FyZCc7XG4gIH1cblxuICBnZXQgaXNUZWxlcGhvbnlQYXltZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5jaGFubmVsID09PSAndGVsZXBob255JztcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGF5bWVudExpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3BheW1lbnQtbGlzdCc7XG4gIH1cbiAgZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIHtcbiAgICBsZXQgZmVlc092ZXJQYXltZW50ID0gMDtcbiAgICB0aGlzLnBheW1lbnRHcm91cC5mZWVzLmZvckVhY2goZmVlID0+IHtcbiAgICAgIGZlZXNPdmVyUGF5bWVudCArPSBmZWUub3Zlcl9wYXltZW50O1xuICAgIH0pO1xuICAgIHJldHVybiBmZWVzT3ZlclBheW1lbnQgPiAwID8gZmVlc092ZXJQYXltZW50IDogdGhpcy5wYXltZW50TGliQ29tcG9uZW50Lm92ZXJQYXltZW50QW1vdW50XG5cbiAgfVxuICBnb1RvU2VydmljZVJlcXVlc3RQYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFUlZJQ0VSRVFVRVNUID0gJ3RydWUnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSB0cnVlO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfVxuICBnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSkge1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZSgnY2FzZXRyYW5zYWN0aW9ucycpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzZXRPcmRlckRhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlclJlZnMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJSZWYgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJDQ0RFdmVudHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJDQ0RFdmVudCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckNyZWF0ZWRzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyQ3JlYXRlZCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckRldGFpbCgpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckRldGFpbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlclBhcnR5cygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclBhcnR5ID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUmVtaXNzaW9uVG90YWxzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUmVtaXNzaW9uVG90YWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJGZWVzVG90YWxzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyRmVlc1RvdGFsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9vcmRlclRvdGFsUGF5bWVudHNzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyVG90YWxQYXltZW50cyA9IGRhdGEpO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ29yZGVyLWZ1bGwtdmlldyc7XG4gICAgfVxuXG4gIH1cblxuICBhZGRSZW1pc3Npb24oZmVlOiBJRmVlKSB7XG4gICAgaWYgKHRoaXMuY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlKSkge1xuICAgICAgdGhpcy5mZWVJZCA9IGZlZTtcbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1xuXG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAgIChwYXltZW50R3JvdXBPYmogPT4gcGF5bWVudEdyb3VwT2JqWydyZWZlcmVuY2UnXS5pbmNsdWRlcyh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSkpO1xuICAgICAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdO1xuICAgICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlbWlzc2lvbic7XG4gICAgICAgICAgdGhpcy5pc1JlZnVuZFJlbWlzc2lvbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRm9yRmVlcyhwYXltZW50R3JvdXA6IGFueSkge1xuICAgIGlmIChwYXltZW50R3JvdXAgIT09IG51bGwgJiYgcGF5bWVudEdyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwYXltZW50R3JvdXAuZmVlcyAhPT0gbnVsbCAmJiBwYXltZW50R3JvdXAuZmVlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBwcm9jZXNzUmVmdW5kKCkge1xuICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICBjb25zdCBvYmogPSB0aGlzLnBheW1lbnRHcm91cC5mZWVzWzBdO1xuICAgIHRoaXMuZmVlcyA9IFt7XG4gICAgICBpZDogb2JqLmlkLFxuICAgICAgY29kZTogb2JqLmNvZGUsXG4gICAgICB2ZXJzaW9uOiBvYmoudmVyc2lvbixcbiAgICAgIGFwcG9ydGlvbl9hbW91bnQ6IG9iai5hcHBvcnRpb25fYW1vdW50LFxuICAgICAgY2FsY3VsYXRlZF9hbW91bnQ6IG9iai5jYWxjdWxhdGVkX2Ftb3VudCxcbiAgICAgIHVwZGF0ZWRfdm9sdW1lOiBvYmoudXBkYXRlZF92b2x1bWUgPyBvYmoudXBkYXRlZF92b2x1bWUgOiBvYmoudm9sdW1lLFxuICAgICAgdm9sdW1lOiBvYmoudm9sdW1lLFxuICAgICAgcmVmdW5kX2Ftb3VudDogdGhpcy5nZXRPdmVyUGF5bWVudFZhbHVlKClcbiAgICB9XTtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IG5ldyBQb3N0UmVmdW5kUmV0cm9SZW1pc3Npb24odGhpcy5jb250YWN0RGV0YWlsc09iaiwgdGhpcy5mZWVzLCB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5yZWZlcmVuY2UsICdSUjAzNycsXG4gICAgICB0aGlzLmdldE92ZXJQYXltZW50VmFsdWUoKSwgJ29wJyk7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdFJlZnVuZHNSZWFzb24ocmVxdWVzdEJvZHkpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICcnO1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgICB0aGlzLnJlZnVuZFJlZmVyZW5jZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9yZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy5yZWZ1bmRBbW91bnQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfYW1vdW50O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgfVxuICBnb3RvQWRkcmVzc1BhZ2Uobm90ZT86IElSZWZ1bmRDb250YWN0RGV0YWlscykge1xuICAgIGlmIChub3RlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHsgY29udGFjdF9kZXRhaWxzOiBub3RlLCBub3RpZmljYXRpb25fdHlwZTogbm90ZS5ub3RpZmljYXRpb25fdHlwZSB9O1xuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gIH1cbiAgYWRkUmVmdW5kRm9yUmVtaXNzaW9uKHBheW1lbnQ6IElQYXltZW50LCByZW1pc3Npb246IElSZW1pc3Npb25bXSwgZmVlczogYW55KSB7XG4gICAgLy9pZighdGhpcy5jaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQpKSB7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0QXBwb3J0aW9uUGF5bWVudERldGFpbHMocGF5bWVudC5yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHBheW1lbnRHcm91cCA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1xuXG4gICAgICAgIHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMuZmlsdGVyXG4gICAgICAgICAgKHBheW1lbnRHcm91cE9iaiA9PiBwYXltZW50R3JvdXBPYmpbJ3JlZmVyZW5jZSddLmluY2x1ZGVzKHBheW1lbnQucmVmZXJlbmNlKSk7XG4gICAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdO1xuICAgICAgICB0aGlzLnJlbWlzc2lvbnMgPSByZW1pc3Npb247XG4gICAgICAgIHRoaXMucmVtaXNzaW9uRmVlQW10ID0gZmVlcy5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvZGUgPT09IHRoaXMucmVtaXNzaW9uc1snZmVlX2NvZGUnXSlbMF0ubmV0X2Ftb3VudDtcbiAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlZnVuZGZvcnJlbWlzc2lvbic7XG4gICAgICAgIC8vIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAvLyB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgKTtcbiAgICAvL31cbiAgfVxuXG4gIGdvVG9QYXltZW50Vmlld0NvbXBvbmVudCgpIHtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJyc7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnR2aWV3JztcbiAgfVxuXG4gIGlzc3VlUmVmdW5kKHBheW1lbnRncnA6IElQYXltZW50R3JvdXApIHtcblxuICAgIGlmIChwYXltZW50Z3JwICE9PSBudWxsICYmIHBheW1lbnRncnAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50Z3JwLnBheW1lbnRzWzBdKSkge1xuXG4gICAgICAgIC8vIE5vIHJlZnVuZCBhbmQgbm8gb3ZlciBwYXltZW50IC0tPiBzaG93SXNzdWVSZWZ1bmRQYWdlKClcbiAgICAgICAgaWYgKCF0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgdGhpcy5zaG93SXNzdWVSZWZ1bmRQYWdlKHBheW1lbnRncnApO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIC8vIE5vIHJlZnVuZCBhbmQgb3ZlciBwYXltZW50IC0tPiBzaG93T3ZlclBheW1lbnQoKVxuICAgICAgICBpZiAoIXRoaXMuaXNBbnlSZWZ1bmRzRm9yVGhpc0Nhc2UoKSAmJiB0aGlzLmdldEJhbGFuY2VUb0JlUGFpZCgpID4gMCkge1xuICAgICAgICAgIHRoaXMuc2hvd092ZXJQYXltZW50KCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVmdW5kcyA+IDAgIGFuZCBvdmVyUGF5bWVudCA9PSAwIC0tLT4gcmVmdW5kcyBhY2NlcHRlZC4gc2hvd0lzc3VlUmVmdW5kUGFnZShzKVxuICAgICAgICBpZiAodGhpcy5pc0FueVJlZnVuZHNGb3JUaGlzQ2FzZSgpICYmIHRoaXMuZ2V0QmFsYW5jZVRvQmVQYWlkKCkgPT0gMCkge1xuICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50Z3JwKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICAvLyBSZWZ1bmRzID4gMCBhbmQgb3ZlclBheW1lbnQgPiAwIC0tPiByZWZ1bmRzIGluIHByb2Nlc3Mgb3IgUmVqZWN0ZWQuXG4gICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA+IDApIHtcblxuICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IGZlZSByZWZ1bmRzID09PSByZWZ1bmRzIGJ5IGZlZSBpdCBtZWFucyB0aGF0IHJlZnVuZCBmb3IgdGhlIGN1cnJlbnQgZmVlIGlzIHJlamVjdGVkLlxuICAgICAgICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUodGhpcy5wYXltZW50RmVlcy5hdCgwKS5pZC50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93T3ZlclBheW1lbnQoKTtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyByZWZ1bmRzIGluIHByb2Nlc3MgU2VudCBmb3IgYXBwcm92YWwsQXBwcm92ZWRcbiAgICAgICAgICB0aGlzLnNob3dJc3N1ZVJlZnVuZFBhZ2UocGF5bWVudGdycCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCl7XG4gICAgcmV0dXJuICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kcyAhPSBudWxsKSAmJiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZHMubGVuZ3RoID4gMCk7XG4gIH1cbiAgc2hvd092ZXJQYXltZW50KCkge1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnQnO1xuICB9XG5cbiAgc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50Z3JwOiBJUGF5bWVudEdyb3VwKSB7XG5cbiAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRncnA7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ2lzc3VlcmVmdW5kJztcbiAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gZmFsc2U7XG4gIH1cblxuICBnZXRCYWxhbmNlVG9CZVBhaWQoKXtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50TGliQ29tcG9uZW50Lm92ZXJQYXltZW50QW1vdW50XG4gIH1cblxuXG5cbiAgZ2V0UmVtaXNzaW9uQnlGZWVDb2RlKGZlZUNvZGU6IHN0cmluZywgcmVtaXNzaW9uczogSVJlbWlzc2lvbltdKTogSVJlbWlzc2lvbiB7XG4gICAgaWYgKHJlbWlzc2lvbnMgJiYgcmVtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlbWlzc2lvbiBvZiByZW1pc3Npb25zKSB7XG4gICAgICAgIGlmIChyZW1pc3Npb24uZmVlX2NvZGUgPT09IGZlZUNvZGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVtaXNzaW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50OiBJUGF5bWVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChwYXltZW50ICE9PSBudWxsICYmIHBheW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHBheW1lbnQuaXNzdWVfcmVmdW5kICYmIHBheW1lbnQucmVmdW5kX2VuYWJsZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hrSXNBZGRSZWZ1bmRCdG5FbmFibGUocmVtaXNzaW9uOiBJUmVtaXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHJlbWlzc2lvbiAhPT0gbnVsbCAmJiByZW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHJlbWlzc2lvbi5hZGRfcmVmdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cblxuICBjYW5JdEJlUmVmdW5kZWQocmVtaXNzaW9uOiBJUmVtaXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHJlbWlzc2lvbiAhPT0gbnVsbCAmJiByZW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHJlbWlzc2lvbi5hZGRfcmVmdW5kID09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1pc3Npb24ub3ZlcmFsbF9iYWxhbmNlID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlOiBJRmVlKTogYm9vbGVhbiB7XG4gICAgaWYgKGZlZSAhPT0gbnVsbCAmJiBmZWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5vdmVyUGF5bWVudEFtb3VudCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZlZS5hZGRfcmVtaXNzaW9uICYmIGZlZS5yZW1pc3Npb25fZW5hYmxlICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1RoZUN1cnJlbnRSZWZ1bmRJblByb2Nlc3NGb3JUaGlzRmVlKGZlZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmVlLmFkZF9yZW1pc3Npb24gJiYgZmVlLnJlbWlzc2lvbl9lbmFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG5cbiAgc2VsZWN0UHltZW50T3B0aW9uKHBheW1lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBheW1lbnRUeXBlID0gcGF5bWVudFR5cGU7XG4gICAgdGhpcy5pc0NvbnRpbnVlQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuICBjb250aW51ZVBheW1lbnQocGF5bWVudGdycDogSVBheW1lbnRHcm91cCkge1xuXG4gICAgaWYgKHRoaXMucGF5bWVudFR5cGUgPT09ICdvcCcpIHtcbiAgICAgIHRoaXMuaXNGdWxseVJlZnVuZCA9IGZhbHNlXG4gICAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYXltZW50VHlwZSA9PT0gJ2ZwJykge1xuICAgICAgdGhpcy5pc0Z1bGx5UmVmdW5kID0gdHJ1ZVxuICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50Z3JwO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2lzc3VlcmVmdW5kJztcbiAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSBcIlwiO1xuICAgICAgdGhpcy5pc1JlZnVuZFJlbWlzc2lvbiA9IHRydWU7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U7XG4gICAgfVxuICB9XG4gIGdvdG9QYXltZW50U2VsZWN0UGFnZShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnQnO1xuICB9XG4gIGdldENvbnRhY3REZXRhaWxzKG9iajogSVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgdGhpcy5jb250YWN0RGV0YWlsc09iaiA9IG9iajtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLmdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdKTtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInO1xuXG4gIH1cblxuICByZXNldE9yZGVyRGF0YSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldE9yZGVyUmVmKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDQ0RFdmVudChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyQ3JlYXRlZChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRGV0YWlsKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJQYXJ0eShudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyVG90YWxQYXltZW50cyhudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyUmVtaXNzaW9uVG90YWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckZlZXNUb3RhbChudWxsKTtcbiAgfVxuXG4gIGdvVG9QYXltZW50RmFpbHVlUGFnZShwYXltZW50OiBhbnkpIHtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudC1mYWlsdXJlJztcbiAgICB0aGlzLnNlbGVjdGVkUGF5bWVudHNTdGF0dXMgPSBwYXltZW50O1xuICB9XG4gIGdvQmFja1RvUGF5bWVudFZpZXcoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnR2aWV3JztcbiAgfVxuXG4gIGdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQ6IElQYXltZW50KTogdm9pZCB7XG5cbiAgICBpZiAocGF5bWVudCA9PSB1bmRlZmluZWQgfHwgcGF5bWVudCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gJ1RlbXBsYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUocGF5bWVudC5jaGFubmVsLCBwYXltZW50Lm1ldGhvZCk7XG4gICAgfVxuXG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYXltZW50LXZpZXctc2VjdGlvblwiPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdwYXltZW50dmlldycgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG48ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG5cbiAgPGRpdiAgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic1wiPlxuICAgIDxvbCBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0XCI+XG4gICAgICA8bGkgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub0Nhc2VUcmFuc2F0aW9uUGFnZSgkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1iYWNrLWxpbmtcIj57eyBcIkJhY2tcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+XG5cbiAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXIgZ292dWstIS1wYWRkaW5nLXRvcC0wXCIgaWQ9XCJtYWluLWNvbnRlbnRcIiByb2xlPVwibWFpblwiPlxuXG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYWlsdXJlLWVycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1tZWRpdW0gZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJmYWlsdXJlLWVycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAgICAgIHt7IFwiUGF5bWVudCBkZXRhaWxzIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWRcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBheW1lbnQtdmlldy1hbGlnbm1lbnRcIiAqbmdJZj1cIiFlcnJvck1lc3NhZ2UgJiYgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXVwiPlxuXG4gICAgICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J1BBWU1FTlRERVRBSUxTJz5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZSBnb3Z1ay0hLW1hcmdpbi10b3AtMFwiPnt7IFwiUGF5bWVudCBkZXRhaWxzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGJvZHk+XG5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlNlcnZpY2UgcmVxdWVzdCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj57eyBzZXJ2aWNlUmVmZXJlbmNlICB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJQYXltZW50IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LnJlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJQYXltZW50IGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPsKje3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uYW1vdW50IHwgbnVtYmVyOicuMicgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5vdmVyX3BheW1lbnQgPiAwXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiT3ZlciBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+wqN7eyBnZXRPdmVyUGF5bWVudFZhbHVlKCkgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIiAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0gJiYgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZG9jdW1lbnRfY29udHJvbF9udW1iZXIgJiYgIXBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmV4dGVybmFsX3JlZmVyZW5jZVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBheW1lbnQgYXNzZXQgbnVtYmVyXCIgfCBycHhUcmFuc2xhdGV9fShEQ04pPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmRvY3VtZW50X2NvbnRyb2xfbnVtYmVyIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXSAmJiBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5kb2N1bWVudF9jb250cm9sX251bWJlciAmJiAhcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZXh0ZXJuYWxfcmVmZXJlbmNlXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiQmFua2VkIGRhdGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5iYW5rZWRfZGF0ZSB8IGRhdGU6J2RkIE1NTSB5eXl5JyB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIiAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0gJiYgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZXh0ZXJuYWxfcmVmZXJlbmNlXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiR292UGF5IFRyYW5zYWN0aW9uIElEXCIgfCBycHhUcmFuc2xhdGU6IHtnb3Y6IFwiR292UGF5XCIsIGlkOiBcIklEXCJ9IH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmV4dGVybmFsX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIiA+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJQYXltZW50IG1ldGhvZFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13IHRleHQtdHJhbnNmb3JtXCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ubWV0aG9kIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ubWV0aG9kID09PSAncGF5bWVudCBieSBhY2NvdW50J1wiID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlR5cGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ubWV0aG9kICE9PSAnY2FyZCdcIj57eyBcIkNyZWRpdFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgPT09ICdjYXJkJ1wiPnt7IFwiQ2FyZFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiQ2hhbm5lbFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13IHRleHQtdHJhbnNmb3JtXCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uY2hhbm5lbCB8IHJweFRyYW5zbGF0ZSAgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8IS0tIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5NZXRob2Q8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ubWV0aG9kICE9PSAnY2FyZCdcIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgfX08L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ubWV0aG9kID09PSAnY2FyZCdcIj5DQVJEPC90ZD5cbiAgICAgICAgPC90cj4gLS0+XG4gICAgICAgIDwhLS0gPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uY2hhbm5lbCAhPT0gJ3RlbGVwaG9ueSdcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5TdGF0dXM8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LnN0YXR1cyB9fTwvdGQ+XG4gICAgICAgICA8L3RyPiAtLT5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ucGF5bWVudF9hbGxvY2F0aW9uWzBdICE9PSB1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIkFsbG9jYXRvbiBzdGF0dXNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LnBheW1lbnRfYWxsb2NhdGlvblswXT8uYWxsb2NhdGlvbl9zdGF0dXMgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdLm9yZ2FuaXNhdGlvbl9uYW1lXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJQQkEgYWNjb3VudCBuYW1lXCIgfCBycHhUcmFuc2xhdGU6IHtwYmE6IFwiUEJBXCJ9IH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ub3JnYW5pc2F0aW9uX25hbWUgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdLmFjY291bnRfbnVtYmVyXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+UEJBIHt7IFwibnVtYmVyXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5hY2NvdW50X251bWJlciB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0uY3VzdG9tZXJfcmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJDdXN0b21lciBpbnRlcm5hbCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmN1c3RvbWVyX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cblxuICAgICAgPGRpdj5cbiAgICAgICAgICAgIDwhLS0gU3RhdHVzIGhpc3RvcmllcyAtLT5cbiAgICAgIDxjY3BheS1wYXltZW50LXN0YXR1c2VzICpuZ0lmPVwiaXNTdGF0dXNBbGxvY2F0ZWRcIiBbaXNUYWtlUGF5bWVudF09XCJpc1Rha2VQYXltZW50XCI+PC9jY3BheS1wYXltZW50LXN0YXR1c2VzPlxuICAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJyZW1pc3Npb25cIj5cbiAgICAgICAgPGJ1dHRvbiAgW2Rpc2FibGVkXT1cIiFjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0pXCIgIChjbGljayk9XCJpc3N1ZVJlZnVuZChwYXltZW50R3JvdXApXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj57eyBcIklzc3VlIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgIDwvZGl2PlxuPGRpdiAqbmdJZj1cIklTUEFZTUVOVFNUQVRVU0VOQUJMRURcIj5cbiAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj57eyBcIkRpc3B1dGVkIHBheW1lbnQgaGlzdG9yeVwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2PlxuICAgICAgPHRhYmxlPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPnt7IFwiU3RhdHVzXCIgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGg+e3sgXCJBbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyBcIkRhdGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGg+e3sgXCJFdmVudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+IFxuICAgICAgICAgIDx0Ym9keSAqbmdJZj1cIiFlcnJvck1zZyAmJiBhbGxQYXltZW50c0ZhaWx1cmUubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIGFsbFBheW1lbnRzRmFpbHVyZVwiPlxuICAgICAgICAgICAgICA8dGQ+e3sgcGF5bWVudC5zdGF0dXMgfCBjYXBpdGFsaXplIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPsKje3sgcGF5bWVudC5kaXNwdXRlZF9hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyhwYXltZW50LnJlcHJlc2VudG1lbnRfZGF0ZSA/IHBheW1lbnQucmVwcmVzZW50bWVudF9kYXRlIDogcGF5bWVudC5mYWlsdXJlX2V2ZW50X2RhdGVfdGltZSkgfCBkYXRlOidkZCBNTU0geXl5eSd9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyBwYXltZW50LnBheW1lbnRfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkID57eyBwYXltZW50LmZhaWx1cmVfdHlwZSB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9QYXltZW50RmFpbHVlUGFnZShwYXltZW50KVwiPnt7IFwiU2hvdyBkZXRhaWxcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cblxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDx0Ym9keSAgKm5nSWY9XCJlcnJvck1zZyB8fCBhbGxQYXltZW50c0ZhaWx1cmUubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiPiB7eyBcIk5vIGRpc3B1dGVkIHBheW1lbnQgaGlzdG9yeSBhdmFpbGFibGUuXCIgfCBycHhUcmFuc2xhdGUgfX0gPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuICAgIDxici8+XG4gICAgPGJyLz5cbiAgPC9kaXY+XG4gICAgICBcbiAgICAgPGRpdiAgKm5nSWY9XCJjaGVja0ZvckZlZXMocGF5bWVudEdyb3VwKVwiPlxuICAgICAgPGRpdiAgKm5nSWY9XCJwYXltZW50R3JvdXAuZmVlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIDxici8+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPnt7IFwiRmVlIGFuZCByZW1pc3Npb24gZGV0YWlsc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9oMj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmZWUgb2YgcGF5bWVudEdyb3VwLmZlZXNcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIj5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiRGVzY3JpcHRpb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IFwiQXBwbGljYXRpb24gZm9yXCIgfCBycHhUcmFuc2xhdGUgfX0ge3sgZmVlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIkZlZSBjb2RlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj57eyBmZWU/LmNvZGUgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiIFtuZ0NsYXNzXT1cInsndHItYm9yZGVyJzogIWZlZS5hcHBvcnRpb25fYW1vdW50ICYmICFmZWUucmVtaXNzaW9ucyAmJiAhaXNUdXJuT2ZmIH1cIj57eyBcIkZlZSBhbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyd0ci1ib3JkZXInOiAhZmVlLmFwcG9ydGlvbl9hbW91bnQgJiYgIWZlZS5yZW1pc3Npb25zICYmICFpc1R1cm5PZmZ9XCI+wqN7eyBmZWU/LmNhbGN1bGF0ZWRfYW1vdW50IHwgbnVtYmVyOicuMicgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJmZWUuYXBwb3J0aW9uX2Ftb3VudFwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtdyB0ci1ib3JkZXJcIiBbbmdDbGFzc109XCJ7J3RyLWJvcmRlcic6ICFmZWUucmVtaXNzaW9uc31cIj57eyBcIkFsbG9jYXRlZCBhbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyd0ci1ib3JkZXInOiAhZmVlLnJlbWlzc2lvbnN9XCI+wqN7eyBmZWU/LmFwcG9ydGlvbl9hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWUpXCIgKGNsaWNrKT1cImFkZFJlbWlzc2lvbihmZWUpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj4ge3sgXCJBZGQgcmVtaXNzaW9uXCIgfCBycHhUcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSByZW1pc3Npb25zIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmRlci1jbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI0IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJIZWxwIHdpdGggZmVlcyBvciByZW1pc3Npb24gY29kZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI3IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJSZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJGZWVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJSZW1pc3Npb24gQW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkICBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0IHJlZnVuZEJ0blwiIHNjb3BlPVwiY29sXCI+PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgICpuZ0Zvcj1cImxldCByZW1pc3Npb24gb2YgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24/Lmh3Zl9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5yZW1pc3Npb25fcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8uZmVlX2NvZGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5od2ZfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCByZWZ1bmRCdG4gd2hpdGVzcGFjZS1pbmhlcml0XCIgID5cbiAgICAgICAgICAgICAgIDxidXR0b24gIFtkaXNhYmxlZF09XCIhY2FuSXRCZVJlZnVuZGVkKHJlbWlzc2lvbilcIiAoY2xpY2spPVwiYWRkUmVmdW5kRm9yUmVtaXNzaW9uKHBheW1lbnRHcm91cC5wYXltZW50c1swXSxyZW1pc3Npb24scGF5bWVudEdyb3VwLmZlZXMpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj4gQWRkIHJlZnVuZDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuXG4gICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PlxuXG4gICA8ZGl2ICpuZ0lmPVwicGF5bWVudEdyb3VwLnJlbWlzc2lvbnM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXItMTdcIiA+e3sgXCJObyBoZWxwIHdpdGggZmVlcyBvciByZW1pc3Npb25zLlwiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgPC9kaXY+XG5cbiAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbWFpbj5cbjwvZGl2PlxuXG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnYWRkcmVtaXNzaW9uJyAmJiBmZWVJZCAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50JyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcidcIj5cbjxjY3BheS1hZGQtcmVtaXNzaW9uIFxuW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcblt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG5bZmVlXT1cImZlZUlkXCJcbltwYXltZW50XSA9IFwicGF5bWVudFwiXG5bb3JkZXJTdGF0dXNdID1cInBheW1lbnRHcm91cC5wYXltZW50c1swXS5zdGF0dXNcIlxuW3BhaWRBbW91bnRdPSBcInBheW1lbnRHcm91cC5wYXltZW50c1swXS5hbW91bnRcIlxuW2lzUmVmdW5kUmVtaXNzaW9uXT1cImlzUmVmdW5kUmVtaXNzaW9uXCJcbltjYXNlVHlwZV09XCJjYXNlVHlwZVwiXG5bcGF5bWVudEdyb3VwUmVmXT1cInBheW1lbnRHcm91cC5wYXltZW50X2dyb3VwX3JlZmVyZW5jZVwiXG5baXNGcm9tUGF5bWVudERldGFpbFBhZ2VdID0gXCJ0cnVlXCJcbltjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIlxuW29yZGVyRmVlc1RvdGFsXSA9IFwib3JkZXJGZWVzVG90YWxcIlxuW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5bb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIlxuW29yZGVyUmVmXSA9IFwib3JkZXJSZWZcIlxuW29yZGVyQ3JlYXRlZF0gPSBcIm9yZGVyQ3JlYXRlZFwiXG5bb3JkZXJQYXJ0eV0gPSBcIm9yZGVyUGFydHlcIlxuW29yZGVyQ0NERXZlbnRdID0gXCJvcmRlckNDREV2ZW50XCJcbltvcmRlckRldGFpbF0gPSBcIm9yZGVyRGV0YWlsXCJcbltMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnYWRkcmVmdW5kZm9ycmVtaXNzaW9uJyAmJiBwYXltZW50ICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnQnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJ1wiPlxuXG48Y2NwYXktYWRkLXJlbWlzc2lvblxuW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcblt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG5bcGF5bWVudF09XCJwYXltZW50XCJcbltvcmRlclN0YXR1c10gPVwib3JkZXJTdGF0dXNcIlxuW3BhaWRBbW91bnRdPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5baXNSZWZ1bmRSZW1pc3Npb25dPVwiaXNSZWZ1bmRSZW1pc3Npb25cIlxuW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbltmZWVhbW91bnRdPVwicmVtaXNzaW9uRmVlQW10XCJcbltyZW1pc3Npb25dID0gXCJyZW1pc3Npb25zXCJcbltpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VdPVwiZmFsc2VcIlxuW3BheW1lbnRHcm91cFJlZl09XCJwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2VcIlxuW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiXG5bb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG5bb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiXG5bb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG5bb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbltvcmRlclBhcnR5XSA9IFwib3JkZXJQYXJ0eVwiXG5bb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIj48L2NjcGF5LWFkZC1yZW1pc3Npb24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdpc3N1ZXJlZnVuZCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gICAgPGNjcGF5LWFkZC1yZW1pc3Npb24gXG4gICAgW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuICAgIFtpc1N0cmF0ZWdpY0ZpeEVuYWJsZV09XCJpc1N0cmF0ZWdpY0ZpeEVuYWJsZVwiXG4gICAgW3BheW1lbnRdID0gJ3BheW1lbnRHcm91cC5wYXltZW50c1swXSdcbiAgICBbdmlld0NvbXBTdGF0dXNdPSBcInZpZXdTdGF0dXNcIlxuICAgIFtvcmRlclN0YXR1c10gPVwicGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLnN0YXR1c1wiXG4gICAgW3BhaWRBbW91bnRdPSBcInBheW1lbnRHcm91cC5wYXltZW50c1swXS5hbW91bnRcIlxuICAgIFtpc1JlZnVuZFJlbWlzc2lvbl09XCJpc1JlZnVuZFJlbWlzc2lvblwiXG4gICAgW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbiAgICBbaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXT1cImlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZVwiXG4gICAgW2lzRnJvbVBheW1lbnREZXRhaWxQYWdlXSA9IFwiaXNGcm9tUGF5bWVudERldGFpbFBhZ2VcIlxuICAgIFtwYXltZW50R3JvdXBSZWZdPVwicGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlXCJcbiAgICBbY2NkQ2FzZU51bWJlcl09XCJjY2RDYXNlTnVtYmVyXCJcbiAgICBbb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG4gICAgW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG4gICAgW29yZGVyUmVtaXNzaW9uVG90YWxdID0gXCJvcmRlclJlbWlzc2lvblRvdGFsXCJcbiAgICBbb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG4gICAgW29yZGVyQ3JlYXRlZF0gPSBcIm9yZGVyQ3JlYXRlZFwiXG4gICAgW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbiAgICBbb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuICAgIFtvcmRlckRldGFpbF0gPSBcIm9yZGVyRGV0YWlsXCJcbiAgICBbZmVlc10gPVwicGF5bWVudEZlZXNcIlxuICAgIFtpc0Z1bGx5UmVmdW5kXSA9IFwiaXNGdWxseVJlZnVuZFwiXG4gICAgW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIj5cbiAgICBcbiAgPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdvcmRlci1mdWxsLXZpZXcnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnQnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJ1wiPlxuICA8Y2NwYXktc2VydmljZS1yZXF1ZXN0XG4gIFt2aWV3U3RhdHVzXSA9IFwidmlld1N0YXR1c1wiXG4gIFtvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbiAgW29yZGVyU3RhdHVzXSA9IFwib3JkZXJTdGF0dXNcIlxuICBbb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbiAgW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbiAgW29yZGVyQ0NERXZlbnRdID0gXCJvcmRlckNDREV2ZW50XCJcbiAgW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuICBbTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiXG4gIFt0YWtlUGF5bWVudF0gPSBcImlzVGFrZVBheW1lbnRcIlxuICBbY2NkQ2FzZU51bWJlcl0gPSBcImNjZENhc2VOdW1iZXJcIlxuICBbb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG4gIFtvcmRlclRvdGFsUGF5bWVudHNdID0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuICBbb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIlxuICBbaXNTZXJ2aWNlUmVxdWVzdF0gPSBcImlzU2VydmljZVJlcXVlc3RcIlxuICAoZ29Ub1NlcnZpY2VScXVlc3RDb21wb25lbnQpID0gXCJnb1RvU2VydmljZVJlcXVlc3RQYWdlKClcIlxuPlxuPC9jY3BheS1zZXJ2aWNlLXJlcXVlc3Q+XG5cbjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwib3Zlci1wYXltZW50XCI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld0NvbXBTdGF0dXMgPT09ICdvdmVycGF5bWVudCdcIj5cbiAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdPVkVSUEFZTUVOVFBBR0UnPiBcbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPnt7IFwiSXNzdWUgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICA8aDEgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPnt7IFwiQ2FzZSByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZX19OiB7e2NjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9oMT5cbiAgPHNwYW4gaWQ9XCJob3ctY29udGFjdGVkLWNvbmRpdGlvbmFsLWhpbnQgZ292dWstZm9udDE5cHhcIiBjbGFzcz1cImZvcm0taGludFwiPlxuICAgIHt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fToge3twYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5yZWZlcmVuY2V9fVxuICA8L3NwYW4+XG48ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+e3sgXCJTZWxlY3QgcGF5bWVudCB0byByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgPC9sZWdlbmQ+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc1wiIGRhdGEtbW9kdWxlPVwiZ292dWstcmFkaW9zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cIm92ZXItcGF5bWVudFwiIG5hbWU9XCJvdmVyLXBheW1lbnRcIiB0eXBlPVwicmFkaW9cIiAoY2xpY2spPVwic2VsZWN0UHltZW50T3B0aW9uKCdvcCcpXCIgdmFsdWU9XCJvcFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWZvbnQxOXB4XCIgZm9yPVwid2hlcmUtZG8teW91LWxpdmVcIj5cbiAgICAgICAgICB7eyBcIk92ZXIgcGF5bWVudFwiIHwgcnB4VHJhbnNsYXRlIH19IMKje3tnZXRPdmVyUGF5bWVudFZhbHVlKCkgfCBudW1iZXI6Jy4yJ319XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiZnVsbC1wYXltZW50XCIgbmFtZT1cIm92ZXItcGF5bWVudFwiIHR5cGU9XCJyYWRpb1wiIChjbGljayk9XCJzZWxlY3RQeW1lbnRPcHRpb24oJ2ZwJylcIiB2YWx1ZT1cImZwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstZm9udDE5cHhcIiBmb3I9XCJ3aGVyZS1kby15b3UtbGl2ZS0yXCI+XG4gICAgICAgICAge3sgXCJGdWxsIHBheW1lbnRcIiB8IHJweFRyYW5zbGF0ZSB9fSDCo3t7cGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uYW1vdW50IHwgbnVtYmVyOicuMid9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IG92ZXItcGF5bWVudC1hbGlnbm1lbnQgZ292dWstZm9udDE5cHhcIlxuICAgICAgKGNsaWNrKT1cImdvVG9QYXltZW50Vmlld0NvbXBvbmVudCgpXCI+IHt7IFwiUHJldmlvdXNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgIChjbGljayk9XCJjb250aW51ZVBheW1lbnQocGF5bWVudEdyb3VwKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNDb250aW51ZUJ0bkRpc2FibGVkXCJcbiAgICAgIFtuZ0NsYXNzXT0naXNDb250aW51ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCInXG4gICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvblwiPiB7eyBcIkNvbnRpbnVlXCIgfCBycHhUcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgPC9maWVsZHNldD5cbjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nT1ZFUlBBWU1FTlRBRERSRVNTQ0FQVFVSRVBBR0UnPiAgICAgIFxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57eyBcIklzc3VlIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1tIGdvdnVrLWZvbnQxOXB4XCI+e3sgXCJDYXNlIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19OiB7e2NjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9oMj5cbiAgPHNwYW4gaWQ9XCJob3ctY29udGFjdGVkLWNvbmRpdGlvbmFsLWhpbnRcIiBjbGFzcz1cImdvdnVrLWhpbnQgZ292dWstZm9udDE5cHhcIj5cbiAgICB7eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7cGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ucmVmZXJlbmNlfX1cbiAgPC9zcGFuPlxuPGNjcGF5LWNvbnRhY3QtZGV0YWlscyBcblthZGRyZXNzT2JqXSA9IG5vdGlmaWNhdGlvblxuKGFzc2lnbkNvbnRhY3REZXRhaWxzKT1cImdldENvbnRhY3REZXRhaWxzKCRldmVudClcIlxuKHJlZGlyZWN0VG9Jc3N1ZVJlZnVuZCk9XCJnb3RvUGF5bWVudFNlbGVjdFBhZ2UoJGV2ZW50KVwiID48L2NjcGF5LWNvbnRhY3QtZGV0YWlscz5cbjxwPlxuICAgIDxhIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICB7eyBcIkNhbmNlbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgPC9hPlxuPC9wPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nQUREUkVGVU5ERk9SUkVNSVNTSU9OJz4gXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIj5cbiAgIFxuICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPiB7eyBcIkNoZWNrIHlvdXIgYW5zd2Vyc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgPC9kaXY+XG4gIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJQYXltZW50IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPiB7e3BheW1lbnRHcm91cC5wYXltZW50c1swXS5yZWZlcmVuY2V9fSA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlBheW1lbnQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3twYXltZW50R3JvdXAucGF5bWVudHNbMF0uYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiRmVlIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7cGF5bWVudEdyb3VwPy5mZWVzWzBdPy5uZXRfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUmVmdW5kIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7Z2V0T3ZlclBheW1lbnRWYWx1ZSgpIHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUmVmdW5kIHJlYXNvblwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IFwiT3ZlciBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJTZW5kIHRvXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7b3JkZXJQYXJ0eX19PC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiU2VuZCB2aWFcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3REZXRhaWxzT2JqPy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGhcIj5cbiAgICAgICAgICA8c3Ryb25nPnt7IFwiRW1haWxcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDxici8+XG4gICAgICAgICAge3tjb250YWN0RGV0YWlsc09iaj8uZW1haWw/LnRyaW0oKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdERldGFpbHNPYmo/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGhcIj5cbiAgICAgICAgICA8c3Ryb25nPnt7IFwiUG9zdFwiIHwgcnB4VHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgPGJyLz5cbiAgICAgICAgICB7e2NvbnRhY3REZXRhaWxzT2JqPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19Jm5ic3A7e3tjb250YWN0RGV0YWlsc09iaj8uY2l0eT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jb3VudHk/LnRyaW0oKX19Jm5ic3A7e3tjb250YWN0RGV0YWlsc09iaj8uY291bnRyeT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5wb3N0YWxfY29kZT8udHJpbSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhIChjbGljayk9XCJnb3RvQWRkcmVzc1BhZ2UoY29udGFjdERldGFpbHNPYmopXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgPnt7IFwiQ2hhbmdlXCIgfCBycHhUcmFuc2xhdGUgfX08L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIk5vdGlmaWNhdGlvblwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZX19XG4gICAgICAgICAgPGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcmlnaHRcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAge3sgXCJQcmV2aWV3XCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGEgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICB7eyBcIkhpZGUgUHJldmlld1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3RhYmxlPlxuXG4gIDxhcHAtbm90aWZpY2F0aW9uLXByZXZpZXcgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgXG4gIFtwYXltZW50XT1cInBheW1lbnRHcm91cC5wYXltZW50c1swXVwiIFxuICBbY29udGFjdERldGFpbHNdPVwiY29udGFjdERldGFpbHNPYmpcIlxuICBbcmVmdW5kUmVhc29uXT1cIidSUjAzNydcIlxuICBbcmVmdW5kQW1vdW50XT1cImdldE92ZXJQYXltZW50VmFsdWUoKVwiPjwvYXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3PlxuXG4gIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IG92ZXItcGF5bWVudC1hbGlnbm1lbnQgZ292dWstZm9udDE5cHhcIiAoY2xpY2spPVwiZ290b0FkZHJlc3NQYWdlKGNvbnRhY3REZXRhaWxzT2JqKVwiPnt7IFwiUHJldmlvdXNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICBbbmdDbGFzc109J2lzQ29udGludWVCdG5EaXNhYmxlZCA/IFwiYnV0dG9uIGJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMSBnb3Z1ay1mb250MTlweFwiIDogXCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMSBnb3Z1ay1mb250MTlweFwiJ1xuICAoY2xpY2spPVwicHJvY2Vzc1JlZnVuZCgpXCI+XG4gICAge3sgXCJTdWJtaXQgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG4gIDxwPlxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiICAoY2xpY2spPVwiZ29Ub0Nhc2VUcmFuc2F0aW9uUGFnZSgkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1saW5rIGdvdnVrLWZvbnQxOXB4XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAgICB7eyBcIkNhbmNlbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2E+XG4gIDwvcD5cblxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnQnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJ1wiPlxuICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBpZD0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J1JFVFJPUkVNSVNTSU9OUkVGVU5EQ09ORklSTUFUSU9OUEFHRSc+IFxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICA8ZGl2ID5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbCBnb3Z1ay1wYW5lbC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLXBhbmVsX3ZpZXdfdGl0bGVcIj5cbiAgICAgICAgICB7eyBcIlJlZnVuZCBzdWJtaXR0ZWRcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2gxPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsX19ib2R5XCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5IHdoaXRlXCI+PHN0cm9uZyBjbGFzcz1cIndoaXRlXCI+e3sgXCJSZWZ1bmQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGV9fToge3tyZWZ1bmRSZWZlcmVuY2V9fTwvc3Ryb25nPjwvcD5cbiAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgPC9kaXY+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e1wiV2hhdCBoYXBwZW5zIG5leHRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAge3tcIkEgcmVmdW5kIHJlcXVlc3QgZm9yXCIgfCBycHhUcmFuc2xhdGUgfX0ge3tyZWZ1bmRBbW91bnQgIHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX0ge3sgXCJoYXMgYmVlbiBjcmVhdGVkIGFuZCB3aWxsIGJlIHBhc3NlZCB0byBhIHRlYW0gbGVhZGVyIHRvIGFwcHJvdmUuXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvcD5cbiAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstbGluayBwb2ludGVyXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgIHt7IFwiUmV0dXJuIHRvIGNhc2VcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICA8L2E+XG4gICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdwYXltZW50LWZhaWx1cmUnXCI+XG4gIDxkaXYgY2xhc3M9XCJwYXltZW50LWZhaWx1cmUtYWxpZ25tZW50XCI+XG4gICAgPGRpdiAgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic1wiPlxuICAgICAgPG9sIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3RcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbVwiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29CYWNrVG9QYXltZW50VmlldygkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1iYWNrLWxpbmtcIj57eyBcIkJhY2tcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbGFyZ2UgZ292dWstIS1tYXJnaW4tdG9wLTBcIj57eyBcIkZhaWx1cmUgZXZlbnQgZGV0YWlsc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZT5cbiAgICAgIDx0Ym9keT5cblxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJGYWlsdXJlIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPHRkPlx0e3tzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmZhaWx1cmVfcmVmZXJlbmNlfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiRmFpbHVyZSByZWFzb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7c2VsZWN0ZWRQYXltZW50c1N0YXR1cy5mYWlsdXJlX3JlYXNvbiB8IHJweFRyYW5zbGF0ZX19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkPnt7IHNlbGVjdGVkUGF5bWVudHNTdGF0dXMucGF5bWVudF9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJQYXltZW50IGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQ+IMKje3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uYW1vdW50IHwgbnVtYmVyOicuMicgfX08L3RkPlxuXG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGRcIj57eyBcIkRpc3B1dGVkIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQ+XHTCo3t7c2VsZWN0ZWRQYXltZW50c1N0YXR1cy5kaXNwdXRlZF9hbW91bnQgIHwgbnVtYmVyOicuMid9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJBZGRpdGlvbmFsIGluZm9ybWF0aW9uXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7e3NlbGVjdGVkUGF5bWVudHNTdGF0dXMuYWRkaXRpb25hbF9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiRmFpbHVyZSB0eXBlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7eyBzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmZhaWx1cmVfdHlwZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJGYWlsdXJlIGV2ZW50IGRhdGUgYW5kIHRpbWVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD4ge3sgc2VsZWN0ZWRQYXltZW50c1N0YXR1cy5mYWlsdXJlX2V2ZW50X2RhdGVfdGltZSB8IGRhdGU6J2RkIE1NTSB5eXl5IEhIOm1tOnNzJyB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwic2VsZWN0ZWRQYXltZW50c1N0YXR1cy5oYXNfYW1vdW50X2RlYml0ZWRcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiSGFzIGRpc3B1dGVkIGFtb3VudCBkZWJpdGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7e3NlbGVjdGVkUGF5bWVudHNTdGF0dXMuaGFzX2Ftb3VudF9kZWJpdGVkfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIiAqbmdJZj1cInNlbGVjdGVkUGF5bWVudHNTdGF0dXMucmVwcmVzZW50bWVudF9zdGF0dXNcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiU3RhdHVzIGZvbGxvd2luZyByZXByZXNlbnRhdGlvbiBvZiBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7eyhzZWxlY3RlZFBheW1lbnRzU3RhdHVzLnJlcHJlc2VudG1lbnRfc3RhdHVzID09PSAnWWVzJyB8fCBzZWxlY3RlZFBheW1lbnRzU3RhdHVzLnJlcHJlc2VudG1lbnRfc3RhdHVzID09PSAneWVzJykgPyAnU3VjY2VzcycgOiAnRmFpbHVyZSd9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwic2VsZWN0ZWRQYXltZW50c1N0YXR1cy5yZXByZXNlbnRtZW50X2RhdGVcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiRGF0ZSBwYXltZW50IHJlcHJlc2VudGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7e3NlbGVjdGVkUGF5bWVudHNTdGF0dXMucmVwcmVzZW50bWVudF9kYXRlICB8IGRhdGU6J2RkIE1NTSB5eXl5IEhIOm1tOnNzJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG5cbiAgICA8ZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFLckYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFLekQsTUFBTSxjQUFjLEdBQUcsdUJBQXVCLENBQUM7QUFtQi9DLE1BQU0sT0FBTyxvQkFBb0I7SUFxRFg7SUFDVjtJQUN1QjtJQUN2QjtJQUNBO0lBeERELFNBQVMsQ0FBVTtJQUNuQixhQUFhLENBQVU7SUFDdkIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBUztJQUNqQixXQUFXLENBQVM7SUFDcEIsa0JBQWtCLENBQVM7SUFDM0IsT0FBTyxDQUFXO0lBQ2xCLGlCQUFpQixDQUFXO0lBQzVCLHNCQUFzQixDQUFTO0lBQy9CLFVBQVUsQ0FBUztJQUNuQixZQUFZLENBQU87SUFDbkIsYUFBYSxDQUFTO0lBQ3RCLGNBQWMsQ0FBUztJQUN2QixtQkFBbUIsQ0FBUztJQUM1QixXQUFXLENBQVE7SUFDNUIsSUFBSSxDQUFNO0lBQ1YsYUFBYSxDQUFVO0lBQ0ksZ0JBQWdCLENBQVM7SUFDcEQsUUFBUSxDQUFTO0lBQ2pCLFlBQVksQ0FBZ0I7SUFDNUIsWUFBWSxDQUFTO0lBQ3JCLGFBQWEsQ0FBUztJQUN0QixjQUFjLENBQVM7SUFDdkIsU0FBUyxDQUFTO0lBQ2xCLGlCQUFpQixDQUFVO0lBQzNCLGlCQUFpQixDQUFVO0lBQzNCLEtBQUssQ0FBTztJQUNaLFVBQVUsQ0FBUztJQUNuQixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsb0JBQW9CLENBQVU7SUFDOUIsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLHNCQUFzQixHQUFZLEtBQUssQ0FBQztJQUN4QywwQkFBMEIsR0FBRyxDQUFDLDBCQUEwQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0UsVUFBVSxHQUFpQixFQUFFLENBQUM7SUFDOUIsa0JBQWtCLEdBQXNCLEVBQUUsQ0FBQztJQUMzQyxzQkFBc0IsQ0FBa0I7SUFDeEMsZUFBZSxDQUFTO0lBQ3hCLDBCQUEwQixDQUFVO0lBQ3BDLGdCQUFnQixDQUFTO0lBQ3pCLHdCQUF3QixDQUFVO0lBQ2xDLHVCQUF1QixDQUFVO0lBQ2pDLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQVM7SUFDcEIscUJBQXFCLEdBQVksSUFBSSxDQUFDO0lBQ3RDLGNBQWMsQ0FBUztJQUN2QixpQkFBaUIsQ0FBdUI7SUFDeEMsWUFBWSxDQUFNO0lBQ2xCLHlCQUF5QixDQUFVO0lBQ25DLGVBQWUsQ0FBUztJQUN4QixZQUFZLENBQVM7SUFDckIsdUJBQXVCLENBQVM7SUFDaEMsbUJBQW1CLENBQVU7SUFDN0IsWUFBb0Isa0JBQXNDLEVBQ2hELG1CQUF3QyxFQUNqQixtQkFBb0MsRUFDM0QsRUFBcUIsRUFDckIsaUJBQW9DO1FBSjFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDaEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQWlCO1FBQzNELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDOUMsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUM7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FDckcsWUFBWSxDQUFDLEVBQUU7WUFDYixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFFL0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3BDLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7d0JBQzlCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUFDM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEtBQUssV0FBVyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDbEosSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0YsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBRWhFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBQ2pFLElBQUksUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ2hFLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUE7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsbUJBQW1CO1FBQ2pCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO0lBRTNGLENBQUM7SUFDRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELHNCQUFzQixDQUFDLEtBQVU7UUFDL0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztZQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3RHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLENBQUM7SUFFSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVM7UUFDcEIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUNuRyxZQUFZLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFFakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUMzRCxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQWlCO1FBQzVCLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEQsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFFSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNYLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO2dCQUN0QyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO2dCQUN4QyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtnQkFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTthQUMxQyxDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQ2xJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQzlELFFBQVEsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUE0QjtRQUMxQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7SUFDcEQsQ0FBQztJQUNELHFCQUFxQixDQUFDLE9BQWlCLEVBQUUsU0FBdUIsRUFBRSxJQUFTO1FBQ3pFLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDN0UsWUFBWSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNwRyxJQUFJLENBQUMsVUFBVSxHQUFHLHVCQUF1QixDQUFDO1lBQzFDLDhFQUE4RTtZQUM5RSxxSkFBcUo7UUFDdkosQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDMUMsQ0FBQztRQUNGLEdBQUc7SUFDTCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBeUI7UUFFbkMsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFFM0QsMERBQTBEO2dCQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO2dCQUNELG1EQUFtRDtnQkFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLE9BQU07Z0JBQ1IsQ0FBQztnQkFDRCxrRkFBa0Y7Z0JBQ2xGLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO2dCQUNELHNFQUFzRTtnQkFDdEUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFFcEUsbUdBQW1HO29CQUNuRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUN2RyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3ZCLE9BQU07b0JBQ1IsQ0FBQztvQkFDRCxnREFBZ0Q7b0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDckMsT0FBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsdUJBQXVCO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsVUFBeUI7UUFFM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO0lBQ25ELENBQUM7SUFJRCxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsVUFBd0I7UUFDN0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxPQUFpQjtRQUN6QyxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFBO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQXFCO1FBQzNDLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUdELGVBQWUsQ0FBQyxTQUFxQjtRQUNuQyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xELElBQUksU0FBUyxDQUFDLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsMEJBQTBCLENBQUMsR0FBUztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQ0FBcUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxSCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxXQUFtQjtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxlQUFlLENBQUMsVUFBeUI7UUFFdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFBO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7UUFDcEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUNELGlCQUFpQixDQUFDLEdBQTBCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBRXBELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsT0FBaUI7UUFFMUMsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxSCxDQUFDO0lBRUgsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO3VHQXZiVSxvQkFBb0IsdUZBdURyQixhQUFhOzJGQXZEWixvQkFBb0IsNmtCQWJwQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQywwQkM5Qi9GLG8wNEJBeWpCQSwwcUZEemhCSSxZQUFZLHVwQkFBbUIscUJBQXFCLDJ1QkFDcEQsc0JBQXNCLG1IQUFtQix1QkFBdUIsNllBQ2hFLHVCQUF1QixrUUFDdkIsNEJBQTRCLGdSQUM1QixjQUFjLG1FQUNkLGNBQWMsdUVBQ2Qsb0JBQW9COzsyRkFLWCxvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsV0FDcEY7d0JBQ1AsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDckQsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3dCQUNqRSx1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLG9CQUFvQjtxQkFDckIsY0FDVyxJQUFJOzswQkEwRGIsTUFBTTsyQkFBQyxhQUFhO3lHQXREZCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR3FCLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BheW1lbnRWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7Tm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7SUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7SVBheW1lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHtJUmVtaXNzaW9ufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHtQb3N0UmVmdW5kUmV0cm9SZW1pc3Npb259IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uJztcbmltcG9ydCB7SVBheW1lbnRGYWlsdXJlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50RmFpbHVyZSc7XG5pbXBvcnQge09yZGVyc2xpc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUmVmdW5kQ29udGFjdERldGFpbHN9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZENvbnRhY3REZXRhaWxzJztcbmltcG9ydCB7QWRkUmVtaXNzaW9uQ29tcG9uZW50fSBmcm9tICcuLi9hZGQtcmVtaXNzaW9uL2FkZC1yZW1pc3Npb24uY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTdGF0dXNIaXN0b3J5Q29tcG9uZW50fSBmcm9tICcuLi9zdGF0dXMtaGlzdG9yeS9zdGF0dXMtaGlzdG9yeS5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXJ2aWNlUmVxdWVzdENvbXBvbmVudH0gZnJvbSAnLi4vc2VydmljZS1yZXF1ZXN0L3NlcnZpY2UtcmVxdWVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtDb250YWN0RGV0YWlsc0NvbXBvbmVudH0gZnJvbSAnLi4vY29udGFjdC1kZXRhaWxzL2NvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi9ub3RpZmljYXRpb24tcHJldmlldy9ub3RpZmljYXRpb24tcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtDY2RIeXBoZW5zUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMvY2NkLWh5cGhlbnMucGlwZSc7XG5pbXBvcnQge0NhcGl0YWxpemVQaXBlfSBmcm9tICcuLi8uLi9waXBlcy9jYXBpdGFsaXplLnBpcGUnO1xuaW1wb3J0IHtScHhUcmFuc2xhdGlvbk1vZHVsZX0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgdHlwZSB7UGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5cbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcGF5bWVudC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BheW1lbnQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BheW1lbnQtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdQQVlNRU5UX1ZJRVcnLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYXltZW50Vmlld0NvbXBvbmVudCkgfV0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQWRkUmVtaXNzaW9uQ29tcG9uZW50KSxcbiAgICBTdGF0dXNIaXN0b3J5Q29tcG9uZW50LCBmb3J3YXJkUmVmKCgpID0+IFNlcnZpY2VSZXF1ZXN0Q29tcG9uZW50KSxcbiAgICBDb250YWN0RGV0YWlsc0NvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50LFxuICAgIENjZEh5cGhlbnNQaXBlLFxuICAgIENhcGl0YWxpemVQaXBlLFxuICAgIFJweFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBQYXltZW50Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNUYWtlUGF5bWVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FzZVR5cGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyU3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyVG90YWxQYXltZW50czogbnVtYmVyO1xuICBASW5wdXQoKSBwYXltZW50OiBJUGF5bWVudDtcbiAgQElucHV0KCkgTE9HR0VESU5VU0VSUk9MRVM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgQElucHV0KCkgb3JkZXJDcmVhdGVkOiBEYXRlO1xuICBASW5wdXQoKSBvcmRlckNDREV2ZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9yZGVyRmVlc1RvdGFsOiBudW1iZXI7XG4gIEBJbnB1dCgpIG9yZGVyUmVtaXNzaW9uVG90YWw6IG51bWJlcjtcbiAgQElucHV0KCkgb3JkZXJEZXRhaWw6IGFueVtdO1xuICBmZWVzOiBhbnk7XG4gIGlzRnVsbHlSZWZ1bmQ6IGJvb2xlYW47XG4gIEBJbnB1dChcImlzU2VydmljZVJlcXVlc3RcIikgaXNTZXJ2aWNlUmVxdWVzdDogc3RyaW5nO1xuICBlcnJvck1zZzogc3RyaW5nO1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBjY2RDYXNlTnVtYmVyOiBzdHJpbmc7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBpc1N0YXR1c0FsbG9jYXRlZDogYm9vbGVhbjtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIGZlZUlkOiBJRmVlO1xuICB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIGlzUmVmdW5kUmVtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3RyYXRlZ2ljRml4RW5hYmxlOiBib29sZWFuO1xuICBpc0FkZEZlZUJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJc3N1ZVJlZnVuZkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxvd2VkUm9sZXNUb0FjY2Vzc1JlZnVuZCA9IFsncGF5bWVudHMtcmVmdW5kLWFwcHJvdmVyJywgJ3BheW1lbnRzLXJlZnVuZCddO1xuICByZW1pc3Npb25zOiBJUmVtaXNzaW9uW10gPSBbXTtcbiAgYWxsUGF5bWVudHNGYWlsdXJlOiBJUGF5bWVudEZhaWx1cmVbXSA9IFtdO1xuICBzZWxlY3RlZFBheW1lbnRzU3RhdHVzOiBJUGF5bWVudEZhaWx1cmU7XG4gIHJlbWlzc2lvbkZlZUFtdDogbnVtYmVyO1xuICBpc1JlZnVuZFJlbWlzc2lvbkJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgc2VydmljZVJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U6IGJvb2xlYW47XG4gIGlzRnJvbVBheW1lbnREZXRhaWxQYWdlOiBib29sZWFuO1xuICBwYXltZW50RmVlczogSUZlZVtdO1xuICBwYXltZW50VHlwZTogc3RyaW5nO1xuICBpc0NvbnRpbnVlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICB2aWV3Q29tcFN0YXR1czogc3RyaW5nO1xuICBjb250YWN0RGV0YWlsc09iajogSVJlZnVuZENvbnRhY3REZXRhaWxzXG4gIG5vdGlmaWNhdGlvbjogYW55O1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmdW5kQW1vdW50OiBzdHJpbmc7XG4gIHRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvblByZXZpZXc6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoJ1BBWU1FTlRfTElCJykgcHJpdmF0ZSBwYXltZW50TGliQ29tcG9uZW50OiBQYXltZW50TGliQWxpYXMsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT047XG4gICAgdGhpcy5kY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuRENOX05VTUJFUjtcbiAgICB0aGlzLmlzVHVybk9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkY7XG4gICAgdGhpcy5zZXJ2aWNlUmVmZXJlbmNlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudHZpZXcnO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50UmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICBsZXQgZmVlcyA9IFtdO1xuICAgICAgICBwYXltZW50R3JvdXAuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMuZm9yRWFjaChyZW0gPT4ge1xuICAgICAgICAgICAgaWYgKHJlbS5mZWVfY29kZSA9PT0gZmVlLmNvZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgIGZlZVsncmVtaXNzaW9ucyddID0gcmVtO1xuICAgICAgICAgICAgICBmZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNSZW1pc3Npb25zTWF0Y2gpIHtcbiAgICAgICAgICAgIGZlZXMucHVzaChmZWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHBheW1lbnRHcm91cC5mZWVzID0gZmVlc1xuICAgICAgICB0aGlzLnBheW1lbnRGZWVzID0gZmVlcztcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXModGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UpKTtcbiAgICAgICAgY29uc3QgcGF5bWVudEFsbG9jYXRpb24gPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5wYXltZW50X2FsbG9jYXRpb247XG4gICAgICAgIHRoaXMuaXNTdGF0dXNBbGxvY2F0ZWQgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPiAwICYmIHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSAnQWxsb2NhdGVkJyB8fCBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPT09IDA7XG4gICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5hZGRQYXltZW50R3JvdXAodGhpcy5wYXltZW50R3JvdXApO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgKTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRQYXltZW50RmFpbHVyZSh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgSlNPTi5wYXJzZShyZXMpLnBheW1lbnRfZmFpbHVyZV9saXN0LnJldmVyc2UoKS5mb3JFYWNoKHBheW1lbnRzID0+IHtcblxuICAgICAgICAgIHRoaXMuYWxsUGF5bWVudHNGYWlsdXJlLnB1c2gocGF5bWVudHMucGF5bWVudF9mYWlsdXJlX2luaXRpYXRlZCk7XG4gICAgICAgICAgaWYgKHBheW1lbnRzLnBheW1lbnRfZmFpbHVyZV9jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWxsUGF5bWVudHNGYWlsdXJlLnB1c2gocGF5bWVudHMucGF5bWVudF9mYWlsdXJlX2Nsb3NlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hbGxQYXltZW50c0ZhaWx1cmUgPSB0aGlzLmFsbFBheW1lbnRzRmFpbHVyZS5yZXZlcnNlKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsUGF5bWVudHNGYWlsdXJlID0gW107XG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSBcIlNlcnZlciBlcnJvclwiXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldCBpc0NhcmRQYXltZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5tZXRob2QgPT09ICdjYXJkJztcbiAgfVxuXG4gIGdldCBpc1RlbGVwaG9ueVBheW1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLmNoYW5uZWwgPT09ICd0ZWxlcGhvbnknO1xuICB9XG5cbiAgcHVibGljIGdvVG9QYXltZW50TGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncGF5bWVudC1saXN0JztcbiAgfVxuICBnZXRPdmVyUGF5bWVudFZhbHVlKCkge1xuICAgIGxldCBmZWVzT3ZlclBheW1lbnQgPSAwO1xuICAgIHRoaXMucGF5bWVudEdyb3VwLmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgZmVlc092ZXJQYXltZW50ICs9IGZlZS5vdmVyX3BheW1lbnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZlZXNPdmVyUGF5bWVudCA+IDAgPyBmZWVzT3ZlclBheW1lbnQgOiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQub3ZlclBheW1lbnRBbW91bnRcblxuICB9XG4gIGdvVG9TZXJ2aWNlUmVxdWVzdFBhZ2UoKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VSVklDRVJFUVVFU1QgPSAndHJ1ZSc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRydWU7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG4gIGdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCF0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZShmYWxzZSk7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgICAgdGhpcy5yZXNldE9yZGVyRGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUmVmcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclJlZiA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckNDREV2ZW50cygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckNDREV2ZW50ID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyQ3JlYXRlZHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJDcmVhdGVkID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyRGV0YWlsKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyRGV0YWlsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUGFydHlzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUGFydHkgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJSZW1pc3Npb25Ub3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJSZW1pc3Npb25Ub3RhbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckZlZXNUb3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJGZWVzVG90YWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b29yZGVyVG90YWxQYXltZW50c3MoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJUb3RhbFBheW1lbnRzID0gZGF0YSk7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnb3JkZXItZnVsbC12aWV3JztcbiAgICB9XG5cbiAgfVxuXG4gIGFkZFJlbWlzc2lvbihmZWU6IElGZWUpIHtcbiAgICBpZiAodGhpcy5jaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWUpKSB7XG4gICAgICB0aGlzLmZlZUlkID0gZmVlO1xuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0QXBwb3J0aW9uUGF5bWVudERldGFpbHModGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgIHBheW1lbnRHcm91cCA9PiB7XG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgICB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cyA9IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzLmZpbHRlclxuICAgICAgICAgICAgKHBheW1lbnRHcm91cE9iaiA9PiBwYXltZW50R3JvdXBPYmpbJ3JlZmVyZW5jZSddLmluY2x1ZGVzKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50UmVmZXJlbmNlKSk7XG4gICAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVtaXNzaW9uJztcbiAgICAgICAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGb3JGZWVzKHBheW1lbnRHcm91cDogYW55KSB7XG4gICAgaWYgKHBheW1lbnRHcm91cCAhPT0gbnVsbCAmJiBwYXltZW50R3JvdXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHBheW1lbnRHcm91cC5mZWVzICE9PSBudWxsICYmIHBheW1lbnRHcm91cC5mZWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHByb2Nlc3NSZWZ1bmQoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGNvbnN0IG9iaiA9IHRoaXMucGF5bWVudEdyb3VwLmZlZXNbMF07XG4gICAgdGhpcy5mZWVzID0gW3tcbiAgICAgIGlkOiBvYmouaWQsXG4gICAgICBjb2RlOiBvYmouY29kZSxcbiAgICAgIHZlcnNpb246IG9iai52ZXJzaW9uLFxuICAgICAgYXBwb3J0aW9uX2Ftb3VudDogb2JqLmFwcG9ydGlvbl9hbW91bnQsXG4gICAgICBjYWxjdWxhdGVkX2Ftb3VudDogb2JqLmNhbGN1bGF0ZWRfYW1vdW50LFxuICAgICAgdXBkYXRlZF92b2x1bWU6IG9iai51cGRhdGVkX3ZvbHVtZSA/IG9iai51cGRhdGVkX3ZvbHVtZSA6IG9iai52b2x1bWUsXG4gICAgICB2b2x1bWU6IG9iai52b2x1bWUsXG4gICAgICByZWZ1bmRfYW1vdW50OiB0aGlzLmdldE92ZXJQYXltZW50VmFsdWUoKVxuICAgIH1dO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbih0aGlzLmNvbnRhY3REZXRhaWxzT2JqLCB0aGlzLmZlZXMsIHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLnJlZmVyZW5jZSwgJ1JSMDM3JyxcbiAgICAgIHRoaXMuZ2V0T3ZlclBheW1lbnRWYWx1ZSgpLCAnb3AnKTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UmVmdW5kc1JlYXNvbihyZXF1ZXN0Qm9keSkuc3Vic2NyaWJlKFxuICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNwb25zZSkpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJyc7XG4gICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnO1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICB9XG4gIGdvdG9BZGRyZXNzUGFnZShub3RlPzogSVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgaWYgKG5vdGUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uID0geyBjb250YWN0X2RldGFpbHM6IG5vdGUsIG5vdGlmaWNhdGlvbl90eXBlOiBub3RlLm5vdGlmaWNhdGlvbl90eXBlIH07XG4gICAgfVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJztcbiAgfVxuICBhZGRSZWZ1bmRGb3JSZW1pc3Npb24ocGF5bWVudDogSVBheW1lbnQsIHJlbWlzc2lvbjogSVJlbWlzc2lvbltdLCBmZWVzOiBhbnkpIHtcbiAgICAvL2lmKCF0aGlzLmNoa0lzSXNzdWVSZWZ1bmRCdG5FbmFibGUocGF5bWVudCkpIHtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyhwYXltZW50LnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXMocGF5bWVudC5yZWZlcmVuY2UpKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgIHRoaXMucmVtaXNzaW9ucyA9IHJlbWlzc2lvbjtcbiAgICAgICAgdGhpcy5yZW1pc3Npb25GZWVBbXQgPSBmZWVzLmZpbHRlcihkYXRhID0+IGRhdGEuY29kZSA9PT0gdGhpcy5yZW1pc3Npb25zWydmZWVfY29kZSddKVswXS5uZXRfYW1vdW50O1xuICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVmdW5kZm9ycmVtaXNzaW9uJztcbiAgICAgICAgLy8gY29uc3QgcGF5bWVudEFsbG9jYXRpb24gPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5wYXltZW50X2FsbG9jYXRpb247XG4gICAgICAgIC8vIHRoaXMuaXNTdGF0dXNBbGxvY2F0ZWQgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPiAwICYmIHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSAnQWxsb2NhdGVkJyB8fCBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPT09IDA7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICApO1xuICAgIC8vfVxuICB9XG5cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KCkge1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudHZpZXcnO1xuICB9XG5cbiAgaXNzdWVSZWZ1bmQocGF5bWVudGdycDogSVBheW1lbnRHcm91cCkge1xuXG4gICAgaWYgKHBheW1lbnRncnAgIT09IG51bGwgJiYgcGF5bWVudGdycCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5jaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnRncnAucGF5bWVudHNbMF0pKSB7XG5cbiAgICAgICAgLy8gTm8gcmVmdW5kIGFuZCBubyBvdmVyIHBheW1lbnQgLS0+IHNob3dJc3N1ZVJlZnVuZFBhZ2UoKVxuICAgICAgICBpZiAoIXRoaXMuaXNBbnlSZWZ1bmRzRm9yVGhpc0Nhc2UoKSAmJiB0aGlzLmdldEJhbGFuY2VUb0JlUGFpZCgpID09IDApIHtcbiAgICAgICAgICB0aGlzLnNob3dJc3N1ZVJlZnVuZFBhZ2UocGF5bWVudGdycCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgLy8gTm8gcmVmdW5kIGFuZCBvdmVyIHBheW1lbnQgLS0+IHNob3dPdmVyUGF5bWVudCgpXG4gICAgICAgIGlmICghdGhpcy5pc0FueVJlZnVuZHNGb3JUaGlzQ2FzZSgpICYmIHRoaXMuZ2V0QmFsYW5jZVRvQmVQYWlkKCkgPiAwKSB7XG4gICAgICAgICAgdGhpcy5zaG93T3ZlclBheW1lbnQoKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICAvLyBSZWZ1bmRzID4gMCAgYW5kIG92ZXJQYXltZW50ID09IDAgLS0tPiByZWZ1bmRzIGFjY2VwdGVkLiBzaG93SXNzdWVSZWZ1bmRQYWdlKHMpXG4gICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgdGhpcy5zaG93SXNzdWVSZWZ1bmRQYWdlKHBheW1lbnRncnApO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIC8vIFJlZnVuZHMgPiAwIGFuZCBvdmVyUGF5bWVudCA+IDAgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICAgICAgaWYgKHRoaXMuaXNBbnlSZWZ1bmRzRm9yVGhpc0Nhc2UoKSAmJiB0aGlzLmdldEJhbGFuY2VUb0JlUGFpZCgpID4gMCkge1xuXG4gICAgICAgICAgLy8gcmVqZWN0ZWQgYnkgZmVlIHJlZnVuZHMgPT09IHJlZnVuZHMgYnkgZmVlIGl0IG1lYW5zIHRoYXQgcmVmdW5kIGZvciB0aGUgY3VycmVudCBmZWUgaXMgcmVqZWN0ZWQuXG4gICAgICAgICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1RoZUN1cnJlbnRSZWZ1bmRSZWplY3RlZEZvclRoZUZlZSh0aGlzLnBheW1lbnRGZWVzLmF0KDApLmlkLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVyUGF5bWVudCgpO1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHJlZnVuZHMgaW4gcHJvY2VzcyBTZW50IGZvciBhcHByb3ZhbCxBcHByb3ZlZFxuICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50Z3JwKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgaXNBbnlSZWZ1bmRzRm9yVGhpc0Nhc2UoKXtcbiAgICByZXR1cm4gKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRzICE9IG51bGwpICYmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kcy5sZW5ndGggPiAwKTtcbiAgfVxuICBzaG93T3ZlclBheW1lbnQoKSB7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVycGF5bWVudCc7XG4gIH1cblxuICBzaG93SXNzdWVSZWZ1bmRQYWdlKHBheW1lbnRncnA6IElQYXltZW50R3JvdXApIHtcblxuICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudGdycDtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgIHRoaXMuaXNSZWZ1bmRSZW1pc3Npb24gPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgdGhpcy5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgdGhpcy5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIGdldEJhbGFuY2VUb0JlUGFpZCgpe1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQub3ZlclBheW1lbnRBbW91bnRcbiAgfVxuXG5cblxuICBnZXRSZW1pc3Npb25CeUZlZUNvZGUoZmVlQ29kZTogc3RyaW5nLCByZW1pc3Npb25zOiBJUmVtaXNzaW9uW10pOiBJUmVtaXNzaW9uIHtcbiAgICBpZiAocmVtaXNzaW9ucyAmJiByZW1pc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgcmVtaXNzaW9uIG9mIHJlbWlzc2lvbnMpIHtcbiAgICAgICAgaWYgKHJlbWlzc2lvbi5mZWVfY29kZSA9PT0gZmVlQ29kZSkge1xuICAgICAgICAgIHJldHVybiByZW1pc3Npb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQ6IElQYXltZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGF5bWVudC5pc3N1ZV9yZWZ1bmQgJiYgcGF5bWVudC5yZWZ1bmRfZW5hYmxlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlZnVuZEJ0bkVuYWJsZShyZW1pc3Npb246IElSZW1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVtaXNzaW9uLmFkZF9yZWZ1bmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuXG4gIGNhbkl0QmVSZWZ1bmRlZChyZW1pc3Npb246IElSZW1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmVtaXNzaW9uLmFkZF9yZWZ1bmQgPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHJlbWlzc2lvbi5vdmVyYWxsX2JhbGFuY2UgPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWU6IElGZWUpOiBib29sZWFuIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYWRkUGF5bWVudEdyb3VwKHRoaXMucGF5bWVudEdyb3VwKTtcbiAgICBpZiAoZmVlICE9PSBudWxsICYmIGZlZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50Lm92ZXJQYXltZW50QW1vdW50ID4gMCkge1xuICAgICAgICByZXR1cm4gZmVlLmFkZF9yZW1pc3Npb24gJiYgZmVlLnJlbWlzc2lvbl9lbmFibGUgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVGhlQ3VycmVudFJlZnVuZEluUHJvY2Vzc0ZvclRoaXNGZWUoZmVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmZWUuYWRkX3JlbWlzc2lvbiAmJiBmZWUucmVtaXNzaW9uX2VuYWJsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RQeW1lbnRPcHRpb24ocGF5bWVudFR5cGU6IHN0cmluZykge1xuICAgIHRoaXMucGF5bWVudFR5cGUgPSBwYXltZW50VHlwZTtcbiAgICB0aGlzLmlzQ29udGludWVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICB9XG4gIGNvbnRpbnVlUGF5bWVudChwYXltZW50Z3JwOiBJUGF5bWVudEdyb3VwKSB7XG5cbiAgICBpZiAodGhpcy5wYXltZW50VHlwZSA9PT0gJ29wJykge1xuICAgICAgdGhpcy5pc0Z1bGx5UmVmdW5kID0gZmFsc2VcbiAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBheW1lbnRUeXBlID09PSAnZnAnKSB7XG4gICAgICB0aGlzLmlzRnVsbHlSZWZ1bmQgPSB0cnVlXG4gICAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRncnA7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9IFwiXCI7XG4gICAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTtcbiAgICB9XG4gIH1cbiAgZ290b1BheW1lbnRTZWxlY3RQYWdlKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVycGF5bWVudCc7XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLmNvbnRhY3REZXRhaWxzT2JqID0gb2JqO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0pO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcic7XG5cbiAgfVxuXG4gIHJlc2V0T3JkZXJEYXRhKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0T3JkZXJSZWYobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNDREV2ZW50KG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDcmVhdGVkKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJEZXRhaWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclBhcnR5KG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJUb3RhbFBheW1lbnRzKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJSZW1pc3Npb25Ub3RhbChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRmVlc1RvdGFsKG51bGwpO1xuICB9XG5cbiAgZ29Ub1BheW1lbnRGYWlsdWVQYWdlKHBheW1lbnQ6IGFueSkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXltZW50LWZhaWx1cmUnO1xuICAgIHRoaXMuc2VsZWN0ZWRQYXltZW50c1N0YXR1cyA9IHBheW1lbnQ7XG4gIH1cbiAgZ29CYWNrVG9QYXltZW50VmlldyhldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudHZpZXcnO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUocGF5bWVudDogSVBheW1lbnQpOiB2b2lkIHtcblxuICAgIGlmIChwYXltZW50ID09IHVuZGVmaW5lZCB8fCBwYXltZW50ID09IG51bGwpIHtcbiAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSAnVGVtcGxhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZShwYXltZW50LmNoYW5uZWwsIHBheW1lbnQubWV0aG9kKTtcbiAgICB9XG5cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBheW1lbnQtdmlldy1zZWN0aW9uXCI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ3BheW1lbnR2aWV3JyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50JyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcidcIj5cbjxkaXYgY2xhc3M9XCJnb3Z1ay13aWR0aC1jb250YWluZXJcIj5cblxuICA8ZGl2ICBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzXCI+XG4gICAgPG9sIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3RcIj5cbiAgICAgIDxsaSBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW1cIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWJhY2stbGlua1wiPnt7IFwiQmFja1wiIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgPC9saT5cbiAgICA8L29sPlxuICA8L2Rpdj5cblxuICA8bWFpbiBjbGFzcz1cImdvdnVrLW1haW4td3JhcHBlciBnb3Z1ay0hLXBhZGRpbmctdG9wLTBcIiBpZD1cIm1haW4tY29udGVudFwiIHJvbGU9XCJtYWluXCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImZhaWx1cmUtZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImZhaWx1cmUtZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICAgICAge3sgXCJQYXltZW50IGRldGFpbHMgY291bGQgbm90IGJlIHJldHJpZXZlZFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC12aWV3LWFsaWdubWVudFwiICpuZ0lmPVwiIWVycm9yTWVzc2FnZSAmJiBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdXCI+XG5cbiAgICAgIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nUEFZTUVOVERFVEFJTFMnPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGdvdnVrLSEtbWFyZ2luLXRvcC0wXCI+e3sgXCJQYXltZW50IGRldGFpbHNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dGFibGU+XG4gICAgICAgIDx0Ym9keT5cblxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiU2VydmljZSByZXF1ZXN0IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHNlcnZpY2VSZWZlcmVuY2UgIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ucmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBheW1lbnQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+wqN7eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIiAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/Lm92ZXJfcGF5bWVudCA+IDBcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJPdmVyIHBheW1lbnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj7Co3t7IGdldE92ZXJQYXltZW50VmFsdWUoKSB8IG51bWJlcjonLjInIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXSAmJiBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5kb2N1bWVudF9jb250cm9sX251bWJlciAmJiAhcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZXh0ZXJuYWxfcmVmZXJlbmNlXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiUGF5bWVudCBhc3NldCBudW1iZXJcIiB8IHJweFRyYW5zbGF0ZX19KERDTik8L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZG9jdW1lbnRfY29udHJvbF9udW1iZXIgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdICYmIHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmRvY3VtZW50X2NvbnRyb2xfbnVtYmVyICYmICFwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5leHRlcm5hbF9yZWZlcmVuY2VcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJCYW5rZWQgZGF0ZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmJhbmtlZF9kYXRlIHwgZGF0ZTonZGQgTU1NIHl5eXknIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXSAmJiBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5leHRlcm5hbF9yZWZlcmVuY2VcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJHb3ZQYXkgVHJhbnNhY3Rpb24gSURcIiB8IHJweFRyYW5zbGF0ZToge2dvdjogXCJHb3ZQYXlcIiwgaWQ6IFwiSURcIn0gfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uZXh0ZXJuYWxfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBheW1lbnQgbWV0aG9kXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXcgdGV4dC10cmFuc2Zvcm1cIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgPT09ICdwYXltZW50IGJ5IGFjY291bnQnXCIgPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiVHlwZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgIT09ICdjYXJkJ1wiPnt7IFwiQ3JlZGl0XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIiAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/Lm1ldGhvZCA9PT0gJ2NhcmQnXCI+e3sgXCJDYXJkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJDaGFubmVsXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXcgdGV4dC10cmFuc2Zvcm1cIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5jaGFubmVsIHwgcnB4VHJhbnNsYXRlICB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwhLS0gPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPk1ldGhvZDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgIT09ICdjYXJkJ1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/Lm1ldGhvZCB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5tZXRob2QgPT09ICdjYXJkJ1wiPkNBUkQ8L3RkPlxuICAgICAgICA8L3RyPiAtLT5cbiAgICAgICAgPCEtLSA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5jaGFubmVsICE9PSAndGVsZXBob255J1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlN0YXR1czwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uc3RhdHVzIH19PC90ZD5cbiAgICAgICAgIDwvdHI+IC0tPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5wYXltZW50X2FsbG9jYXRpb25bMF0gIT09IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiQWxsb2NhdG9uIHN0YXR1c1wiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8ucGF5bWVudF9hbGxvY2F0aW9uWzBdPy5hbGxvY2F0aW9uX3N0YXR1cyB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0ub3JnYW5pc2F0aW9uX25hbWVcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBCQSBhY2NvdW50IG5hbWVcIiB8IHJweFRyYW5zbGF0ZToge3BiYTogXCJQQkFcIn0gfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGItY29sLXdcIj57eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5vcmdhbmlzYXRpb25fbmFtZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cInBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0uYWNjb3VudF9udW1iZXJcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5QQkEge3sgXCJudW1iZXJcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IHBheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LmFjY291bnRfbnVtYmVyIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwicGF5bWVudEdyb3VwPy5wYXltZW50c1swXS5jdXN0b21lcl9yZWZlcmVuY2VcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIkN1c3RvbWVyIGludGVybmFsIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgcGF5bWVudEdyb3VwPy5wYXltZW50c1swXT8uY3VzdG9tZXJfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8ZGl2PlxuICAgICAgICAgICAgPCEtLSBTdGF0dXMgaGlzdG9yaWVzIC0tPlxuICAgICAgPGNjcGF5LXBheW1lbnQtc3RhdHVzZXMgKm5nSWY9XCJpc1N0YXR1c0FsbG9jYXRlZFwiIFtpc1Rha2VQYXltZW50XT1cImlzVGFrZVBheW1lbnRcIj48L2NjcGF5LXBheW1lbnQtc3RhdHVzZXM+XG4gICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJlbWlzc2lvblwiPlxuICAgICAgICA8YnV0dG9uICBbZGlzYWJsZWRdPVwiIWNoa0lzSXNzdWVSZWZ1bmRCdG5FbmFibGUocGF5bWVudEdyb3VwPy5wYXltZW50c1swXSlcIiAgKGNsaWNrKT1cImlzc3VlUmVmdW5kKHBheW1lbnRHcm91cClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPnt7IFwiSXNzdWUgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgPC9kaXY+XG48ZGl2ICpuZ0lmPVwiSVNQQVlNRU5UU1RBVFVTRU5BQkxFRFwiPlxuICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPnt7IFwiRGlzcHV0ZWQgcGF5bWVudCBoaXN0b3J5XCIgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXY+XG4gICAgICA8dGFibGU+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgXCJTdGF0dXNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyBcIkFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgPHRoPnt7IFwiRGF0ZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgPHRoPnt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyBcIkV2ZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD4gXG4gICAgICAgICAgPHRib2R5ICpuZ0lmPVwiIWVycm9yTXNnICYmIGFsbFBheW1lbnRzRmFpbHVyZS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBheW1lbnQgb2YgYWxsUGF5bWVudHNGYWlsdXJlXCI+XG4gICAgICAgICAgICAgIDx0ZD57eyBwYXltZW50LnN0YXR1cyB8IGNhcGl0YWxpemUgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+wqN7eyBwYXltZW50LmRpc3B1dGVkX2Ftb3VudCB8IG51bWJlcjonLjInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7KHBheW1lbnQucmVwcmVzZW50bWVudF9kYXRlID8gcGF5bWVudC5yZXByZXNlbnRtZW50X2RhdGUgOiBwYXltZW50LmZhaWx1cmVfZXZlbnRfZGF0ZV90aW1lKSB8IGRhdGU6J2RkIE1NTSB5eXl5J319PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHBheW1lbnQucGF5bWVudF9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgPnt7IHBheW1lbnQuZmFpbHVyZV90eXBlIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub1BheW1lbnRGYWlsdWVQYWdlKHBheW1lbnQpXCI+e3sgXCJTaG93IGRldGFpbFwiIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuXG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPHRib2R5ICAqbmdJZj1cImVycm9yTXNnIHx8IGFsbFBheW1lbnRzRmFpbHVyZS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+IHt7IFwiTm8gZGlzcHV0ZWQgcGF5bWVudCBoaXN0b3J5IGF2YWlsYWJsZS5cIiB8IHJweFRyYW5zbGF0ZSB9fSA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGJyLz5cbiAgICA8YnIvPlxuICA8L2Rpdj5cbiAgICAgIFxuICAgICA8ZGl2ICAqbmdJZj1cImNoZWNrRm9yRmVlcyhwYXltZW50R3JvdXApXCI+XG4gICAgICA8ZGl2ICAqbmdJZj1cInBheW1lbnRHcm91cC5mZWVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgIDxici8+XG4gICAgICAgICAgPGJyLz5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+e3sgXCJGZWUgYW5kIHJlbWlzc2lvbiBkZXRhaWxzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZlZSBvZiBwYXltZW50R3JvdXAuZmVlc1wiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJEZXNjcmlwdGlvblwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRiLWNvbC13XCI+e3sgXCJBcHBsaWNhdGlvbiBmb3JcIiB8IHJweFRyYW5zbGF0ZSB9fSB7eyBmZWUuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiRmVlIGNvZGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0Yi1jb2wtd1wiPnt7IGZlZT8uY29kZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCIgW25nQ2xhc3NdPVwieyd0ci1ib3JkZXInOiAhZmVlLmFwcG9ydGlvbl9hbW91bnQgJiYgIWZlZS5yZW1pc3Npb25zICYmICFpc1R1cm5PZmYgfVwiPnt7IFwiRmVlIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J3RyLWJvcmRlcic6ICFmZWUuYXBwb3J0aW9uX2Ftb3VudCAmJiAhZmVlLnJlbWlzc2lvbnMgJiYgIWlzVHVybk9mZn1cIj7Co3t7IGZlZT8uY2FsY3VsYXRlZF9hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImZlZS5hcHBvcnRpb25fYW1vdW50XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13IHRyLWJvcmRlclwiIFtuZ0NsYXNzXT1cInsndHItYm9yZGVyJzogIWZlZS5yZW1pc3Npb25zfVwiPnt7IFwiQWxsb2NhdGVkIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J3RyLWJvcmRlcic6ICFmZWUucmVtaXNzaW9uc31cIj7Co3t7IGZlZT8uYXBwb3J0aW9uX2Ftb3VudCB8IG51bWJlcjonLjInIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWNoa0lzQWRkUmVtaXNzaW9uQnRuRW5hYmxlKGZlZSlcIiAoY2xpY2spPVwiYWRkUmVtaXNzaW9uKGZlZSlcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiB7eyBcIkFkZCByZW1pc3Npb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIHJlbWlzc2lvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyLWNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjQgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIkhlbHAgd2l0aCBmZWVzIG9yIHJlbWlzc2lvbiBjb2RlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjcgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIlJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIkZlZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIlJlbWlzc2lvbiBBbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXQgcmVmdW5kQnRuXCIgc2NvcGU9XCJjb2xcIj48L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAgKm5nRm9yPVwibGV0IHJlbWlzc2lvbiBvZiBwYXltZW50R3JvdXAucmVtaXNzaW9uc1wiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8uaHdmX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24/LnJlbWlzc2lvbl9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5mZWVfY29kZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24/Lmh3Zl9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHJlZnVuZEJ0biB3aGl0ZXNwYWNlLWluaGVyaXRcIiAgPlxuICAgICAgICAgICAgICAgPGJ1dHRvbiAgW2Rpc2FibGVkXT1cIiFjYW5JdEJlUmVmdW5kZWQocmVtaXNzaW9uKVwiIChjbGljayk9XCJhZGRSZWZ1bmRGb3JSZW1pc3Npb24ocGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLHJlbWlzc2lvbixwYXltZW50R3JvdXAuZmVlcylcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiBBZGQgcmVmdW5kPC9idXR0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuXG5cbiAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+XG5cbiAgIDxkaXYgKm5nSWY9XCJwYXltZW50R3JvdXAucmVtaXNzaW9ucz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hci0xN1wiID57eyBcIk5vIGhlbHAgd2l0aCBmZWVzIG9yIHJlbWlzc2lvbnMuXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICA8L2Rpdj5cblxuICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYWluPlxuPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdhZGRyZW1pc3Npb24nICYmIGZlZUlkICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnQnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJ1wiPlxuPGNjcGF5LWFkZC1yZW1pc3Npb24gXG5baXNUdXJuT2ZmXT1cImlzVHVybk9mZlwiXG5baXNTdHJhdGVnaWNGaXhFbmFibGVdPVwiaXNTdHJhdGVnaWNGaXhFbmFibGVcIlxuW3ZpZXdDb21wU3RhdHVzXT0gXCJ2aWV3U3RhdHVzXCJcbltmZWVdPVwiZmVlSWRcIlxuW3BheW1lbnRdID0gXCJwYXltZW50XCJcbltvcmRlclN0YXR1c10gPVwicGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLnN0YXR1c1wiXG5bcGFpZEFtb3VudF09IFwicGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLmFtb3VudFwiXG5baXNSZWZ1bmRSZW1pc3Npb25dPVwiaXNSZWZ1bmRSZW1pc3Npb25cIlxuW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbltwYXltZW50R3JvdXBSZWZdPVwicGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlXCJcbltpc0Zyb21QYXltZW50RGV0YWlsUGFnZV0gPSBcInRydWVcIlxuW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiXG5bb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG5bb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiXG5bb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG5bb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbltvcmRlclBhcnR5XSA9IFwib3JkZXJQYXJ0eVwiXG5bb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIj48L2NjcGF5LWFkZC1yZW1pc3Npb24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdhZGRyZWZ1bmRmb3JyZW1pc3Npb24nICYmIHBheW1lbnQgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG5cbjxjY3BheS1hZGQtcmVtaXNzaW9uXG5baXNUdXJuT2ZmXT1cImlzVHVybk9mZlwiXG5baXNTdHJhdGVnaWNGaXhFbmFibGVdPVwiaXNTdHJhdGVnaWNGaXhFbmFibGVcIlxuW3ZpZXdDb21wU3RhdHVzXT0gXCJ2aWV3U3RhdHVzXCJcbltwYXltZW50XT1cInBheW1lbnRcIlxuW29yZGVyU3RhdHVzXSA9XCJvcmRlclN0YXR1c1wiXG5bcGFpZEFtb3VudF09IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltpc1JlZnVuZFJlbWlzc2lvbl09XCJpc1JlZnVuZFJlbWlzc2lvblwiXG5bY2FzZVR5cGVdPVwiY2FzZVR5cGVcIlxuW2ZlZWFtb3VudF09XCJyZW1pc3Npb25GZWVBbXRcIlxuW3JlbWlzc2lvbl0gPSBcInJlbWlzc2lvbnNcIlxuW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJmYWxzZVwiXG5bcGF5bWVudEdyb3VwUmVmXT1cInBheW1lbnRHcm91cC5wYXltZW50X2dyb3VwX3JlZmVyZW5jZVwiXG5bY2NkQ2FzZU51bWJlcl09XCJjY2RDYXNlTnVtYmVyXCJcbltvcmRlckZlZXNUb3RhbF0gPSBcIm9yZGVyRmVlc1RvdGFsXCJcbltvcmRlclRvdGFsUGF5bWVudHNdID0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuW29yZGVyUmVtaXNzaW9uVG90YWxdID0gXCJvcmRlclJlbWlzc2lvblRvdGFsXCJcbltvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbltvcmRlckNyZWF0ZWRdID0gXCJvcmRlckNyZWF0ZWRcIlxuW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbltvcmRlckNDREV2ZW50XSA9IFwib3JkZXJDQ0RFdmVudFwiXG5bb3JkZXJEZXRhaWxdID0gXCJvcmRlckRldGFpbFwiXG5bTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2lzc3VlcmVmdW5kJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50JyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcidcIj5cbiAgICA8Y2NwYXktYWRkLXJlbWlzc2lvbiBcbiAgICBbaXNUdXJuT2ZmXT1cImlzVHVybk9mZlwiXG4gICAgW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcbiAgICBbcGF5bWVudF0gPSAncGF5bWVudEdyb3VwLnBheW1lbnRzWzBdJ1xuICAgIFt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG4gICAgW29yZGVyU3RhdHVzXSA9XCJwYXltZW50R3JvdXAucGF5bWVudHNbMF0uc3RhdHVzXCJcbiAgICBbcGFpZEFtb3VudF09IFwicGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLmFtb3VudFwiXG4gICAgW2lzUmVmdW5kUmVtaXNzaW9uXT1cImlzUmVmdW5kUmVtaXNzaW9uXCJcbiAgICBbY2FzZVR5cGVdPVwiY2FzZVR5cGVcIlxuICAgIFtpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VdPVwiaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXCJcbiAgICBbaXNGcm9tUGF5bWVudERldGFpbFBhZ2VdID0gXCJpc0Zyb21QYXltZW50RGV0YWlsUGFnZVwiXG4gICAgW3BheW1lbnRHcm91cFJlZl09XCJwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2VcIlxuICAgIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIlxuICAgIFtvcmRlckZlZXNUb3RhbF0gPSBcIm9yZGVyRmVlc1RvdGFsXCJcbiAgICBbb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbiAgICBbb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIlxuICAgIFtvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbiAgICBbb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbiAgICBbb3JkZXJQYXJ0eV0gPSBcIm9yZGVyUGFydHlcIlxuICAgIFtvcmRlckNDREV2ZW50XSA9IFwib3JkZXJDQ0RFdmVudFwiXG4gICAgW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuICAgIFtmZWVzXSA9XCJwYXltZW50RmVlc1wiXG4gICAgW2lzRnVsbHlSZWZ1bmRdID0gXCJpc0Z1bGx5UmVmdW5kXCJcbiAgICBbTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiPlxuICAgIFxuICA+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ29yZGVyLWZ1bGwtdmlldycgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gIDxjY3BheS1zZXJ2aWNlLXJlcXVlc3RcbiAgW3ZpZXdTdGF0dXNdID0gXCJ2aWV3U3RhdHVzXCJcbiAgW29yZGVyUmVmXSA9IFwib3JkZXJSZWZcIlxuICBbb3JkZXJTdGF0dXNdID0gXCJvcmRlclN0YXR1c1wiXG4gIFtvcmRlckNyZWF0ZWRdID0gXCJvcmRlckNyZWF0ZWRcIlxuICBbb3JkZXJQYXJ0eV0gPSBcIm9yZGVyUGFydHlcIlxuICBbb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuICBbb3JkZXJEZXRhaWxdID0gXCJvcmRlckRldGFpbFwiXG4gIFtMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCJcbiAgW3Rha2VQYXltZW50XSA9IFwiaXNUYWtlUGF5bWVudFwiXG4gIFtjY2RDYXNlTnVtYmVyXSA9IFwiY2NkQ2FzZU51bWJlclwiXG4gIFtvcmRlckZlZXNUb3RhbF0gPSBcIm9yZGVyRmVlc1RvdGFsXCJcbiAgW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG4gIFtvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiXG4gIFtpc1NlcnZpY2VSZXF1ZXN0XSA9IFwiaXNTZXJ2aWNlUmVxdWVzdFwiXG4gIChnb1RvU2VydmljZVJxdWVzdENvbXBvbmVudCkgPSBcImdvVG9TZXJ2aWNlUmVxdWVzdFBhZ2UoKVwiXG4+XG48L2NjcGF5LXNlcnZpY2UtcmVxdWVzdD5cblxuPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvdmVyLXBheW1lbnRcIj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJwYXltZW50J1wiPlxuICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBpZD0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J09WRVJQQVlNRU5UUEFHRSc+IFxuICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+e3sgXCJJc3N1ZSByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+e3sgXCJDYXNlIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlfX06IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gxPlxuICA8c3BhbiBpZD1cImhvdy1jb250YWN0ZWQtY29uZGl0aW9uYWwtaGludCBnb3Z1ay1mb250MTlweFwiIGNsYXNzPVwiZm9ybS1oaW50XCI+XG4gICAge3sgXCJQYXltZW50IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19OiB7e3BheW1lbnRHcm91cD8ucGF5bWVudHNbMF0/LnJlZmVyZW5jZX19XG4gIDwvc3Bhbj5cbjxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmQgZ292dWstZmllbGRzZXRfX2xlZ2VuZC0tbFwiPlxuICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj57eyBcIlNlbGVjdCBwYXltZW50IHRvIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICA8L2xlZ2VuZD5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwib3Zlci1wYXltZW50XCIgbmFtZT1cIm92ZXItcGF5bWVudFwiIHR5cGU9XCJyYWRpb1wiIChjbGljayk9XCJzZWxlY3RQeW1lbnRPcHRpb24oJ29wJylcIiB2YWx1ZT1cIm9wXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstZm9udDE5cHhcIiBmb3I9XCJ3aGVyZS1kby15b3UtbGl2ZVwiPlxuICAgICAgICAgIHt7IFwiT3ZlciBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX0gwqN7e2dldE92ZXJQYXltZW50VmFsdWUoKSB8IG51bWJlcjonLjInfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgaWQ9XCJmdWxsLXBheW1lbnRcIiBuYW1lPVwib3Zlci1wYXltZW50XCIgdHlwZT1cInJhZGlvXCIgKGNsaWNrKT1cInNlbGVjdFB5bWVudE9wdGlvbignZnAnKVwiIHZhbHVlPVwiZnBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1mb250MTlweFwiIGZvcj1cIndoZXJlLWRvLXlvdS1saXZlLTJcIj5cbiAgICAgICAgICB7eyBcIkZ1bGwgcGF5bWVudFwiIHwgcnB4VHJhbnNsYXRlIH19IMKje3twYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5hbW91bnQgfCBudW1iZXI6Jy4yJ319XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgb3Zlci1wYXltZW50LWFsaWdubWVudCBnb3Z1ay1mb250MTlweFwiXG4gICAgICAoY2xpY2spPVwiZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KClcIj4ge3sgXCJQcmV2aW91c1wiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICA8YnV0dG9uIFxuICAgICAgKGNsaWNrKT1cImNvbnRpbnVlUGF5bWVudChwYXltZW50R3JvdXApXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0NvbnRpbnVlQnRuRGlzYWJsZWRcIlxuICAgICAgW25nQ2xhc3NdPSdpc0NvbnRpbnVlQnRuRGlzYWJsZWQgPyBcImJ1dHRvbiBidXR0b24tLWRpc2FibGVkIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIiA6IFwiYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIidcbiAgICAgIGNsYXNzPVwiZ292dWstYnV0dG9uXCI+IHt7IFwiQ29udGludWVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDb21wU3RhdHVzID09PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSdcIj5cbiAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdPVkVSUEFZTUVOVEFERFJFU1NDQVBUVVJFUEFHRSc+ICAgICAgXG4gIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7IFwiSXNzdWUgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW0gZ292dWstZm9udDE5cHhcIj57eyBcIkNhc2UgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gyPlxuICA8c3BhbiBpZD1cImhvdy1jb250YWN0ZWQtY29uZGl0aW9uYWwtaGludFwiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1mb250MTlweFwiPlxuICAgIHt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fToge3twYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5yZWZlcmVuY2V9fVxuICA8L3NwYW4+XG48Y2NwYXktY29udGFjdC1kZXRhaWxzIFxuW2FkZHJlc3NPYmpdID0gbm90aWZpY2F0aW9uXG4oYXNzaWduQ29udGFjdERldGFpbHMpPVwiZ2V0Q29udGFjdERldGFpbHMoJGV2ZW50KVwiXG4ocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9QYXltZW50U2VsZWN0UGFnZSgkZXZlbnQpXCIgPjwvY2NwYXktY29udGFjdC1kZXRhaWxzPlxuPHA+XG4gICAgPGEgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstbGlua1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgIHt7IFwiQ2FuY2VsXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICA8L2E+XG48L3A+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDb21wU3RhdHVzID09PSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcidcIj5cbiAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdBRERSRUZVTkRGT1JSRU1JU1NJT04nPiBcbiAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgXG4gICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+IHt7IFwiQ2hlY2sgeW91ciBhbnN3ZXJzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cbiAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+IHt7cGF5bWVudEdyb3VwLnBheW1lbnRzWzBdLnJlZmVyZW5jZX19IDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUGF5bWVudCBhbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3BheW1lbnRHcm91cC5wYXltZW50c1swXS5hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJGZWUgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3twYXltZW50R3JvdXA/LmZlZXNbMF0/Lm5ldF9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJSZWZ1bmQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tnZXRPdmVyUGF5bWVudFZhbHVlKCkgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJSZWZ1bmQgcmVhc29uXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgXCJPdmVyIHBheW1lbnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlNlbmQgdG9cIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tvcmRlclBhcnR5fX08L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJTZW5kIHZpYVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdERldGFpbHNPYmo/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aFwiPlxuICAgICAgICAgIDxzdHJvbmc+e3sgXCJFbWFpbFwiIHwgcnB4VHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgPGJyLz5cbiAgICAgICAgICB7e2NvbnRhY3REZXRhaWxzT2JqPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0RGV0YWlsc09iaj8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdMRVRURVInXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aFwiPlxuICAgICAgICAgIDxzdHJvbmc+e3sgXCJQb3N0XCIgfCBycHhUcmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIHt7Y29udGFjdERldGFpbHNPYmo/LmFkZHJlc3NfbGluZT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jaXR5Py50cmltKCl9fSZuYnNwO3t7Y29udGFjdERldGFpbHNPYmo/LmNvdW50eT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jb3VudHJ5Py50cmltKCl9fSZuYnNwO3t7Y29udGFjdERldGFpbHNPYmo/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGEgKGNsaWNrKT1cImdvdG9BZGRyZXNzUGFnZShjb250YWN0RGV0YWlsc09iailcIiBjbGFzcz1cImdvdnVrLWxpbmsgcmlnaHRcIiA+e3sgXCJDaGFuZ2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cblxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiTm90aWZpY2F0aW9uXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3RlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlfX1cbiAgICAgICAgICA8YSAqbmdJZj1cIiFub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJzaG93Tm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICB7eyBcIlByZXZpZXdcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YSAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgIHt7IFwiSGlkZSBQcmV2aWV3XCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGFibGU+XG5cbiAgPGFwcC1ub3RpZmljYXRpb24tcHJldmlldyAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBcbiAgW3BheW1lbnRdPVwicGF5bWVudEdyb3VwLnBheW1lbnRzWzBdXCIgXG4gIFtjb250YWN0RGV0YWlsc109XCJjb250YWN0RGV0YWlsc09ialwiXG4gIFtyZWZ1bmRSZWFzb25dPVwiJ1JSMDM3J1wiXG4gIFtyZWZ1bmRBbW91bnRdPVwiZ2V0T3ZlclBheW1lbnRWYWx1ZSgpXCI+PC9hcHAtbm90aWZpY2F0aW9uLXByZXZpZXc+XG5cbiAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgb3Zlci1wYXltZW50LWFsaWdubWVudCBnb3Z1ay1mb250MTlweFwiIChjbGljayk9XCJnb3RvQWRkcmVzc1BhZ2UoY29udGFjdERldGFpbHNPYmopXCI+e3sgXCJQcmV2aW91c1wiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gIFtuZ0NsYXNzXT0naXNDb250aW51ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCInXG4gIChjbGljayk9XCJwcm9jZXNzUmVmdW5kKClcIj5cbiAgICB7eyBcIlN1Ym1pdCByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPHA+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstZm9udDE5cHhcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIHt7IFwiQ2FuY2VsXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgPC9wPlxuXG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAncmVmdW5kY29uZmlybWF0aW9ucGFnZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nUkVUUk9SRU1JU1NJT05SRUZVTkRDT05GSVJNQVRJT05QQUdFJz4gXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvdyBwYWdlc2l6ZVwiPlxuICAgIDxkaXYgPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfdmlld190aXRsZVwiPlxuICAgICAgICAgIHt7IFwiUmVmdW5kIHN1Ym1pdHRlZFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDE+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWxfX2JvZHlcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHkgd2hpdGVcIj48c3Ryb25nIGNsYXNzPVwid2hpdGVcIj57eyBcIlJlZnVuZCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZX19OiB7e3JlZnVuZFJlZmVyZW5jZX19PC9zdHJvbmc+PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgXG4gICAgICA8L2Rpdj5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7XCJXaGF0IGhhcHBlbnMgbmV4dFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgICB7e1wiQSByZWZ1bmQgcmVxdWVzdCBmb3JcIiB8IHJweFRyYW5zbGF0ZSB9fSB7e3JlZnVuZEFtb3VudCAgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fSB7eyBcImhhcyBiZWVuIGNyZWF0ZWQgYW5kIHdpbGwgYmUgcGFzc2VkIHRvIGEgdGVhbSBsZWFkZXIgdG8gYXBwcm92ZS5cIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub0Nhc2VUcmFuc2F0aW9uUGFnZSgkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXJcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAge3sgXCJSZXR1cm4gdG8gY2FzZVwiIHwgcnB4VHJhbnNsYXRlIH19XG4gIDwvYT5cbiAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ3BheW1lbnQtZmFpbHVyZSdcIj5cbiAgPGRpdiBjbGFzcz1cInBheW1lbnQtZmFpbHVyZS1hbGlnbm1lbnRcIj5cbiAgICA8ZGl2ICBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzXCI+XG4gICAgICA8b2wgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb0JhY2tUb1BheW1lbnRWaWV3KCRldmVudClcIiBjbGFzcz1cImdvdnVrLWJhY2stbGlua1wiPnt7IFwiQmFja1wiIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9vbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZSBnb3Z1ay0hLW1hcmdpbi10b3AtMFwiPnt7IFwiRmFpbHVyZSBldmVudCBkZXRhaWxzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHRhYmxlPlxuICAgICAgPHRib2R5PlxuXG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImJvbGRcIj57eyBcIkZhaWx1cmUgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8dGQ+XHR7e3NlbGVjdGVkUGF5bWVudHNTdGF0dXMuZmFpbHVyZV9yZWZlcmVuY2V9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJGYWlsdXJlIHJlYXNvblwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPHRkPlx0e3tzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmZhaWx1cmVfcmVhc29uIHwgcnB4VHJhbnNsYXRlfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJQYXltZW50IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQ+e3sgc2VsZWN0ZWRQYXltZW50c1N0YXR1cy5wYXltZW50X3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGRcIj57eyBcIlBheW1lbnQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZD4gwqN7eyBwYXltZW50R3JvdXA/LnBheW1lbnRzWzBdPy5hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZFwiPnt7IFwiRGlzcHV0ZWQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZD5cdMKje3tzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmRpc3B1dGVkX2Ftb3VudCAgfCBudW1iZXI6Jy4yJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImJvbGRcIj57eyBcIkFkZGl0aW9uYWwgaW5mb3JtYXRpb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7c2VsZWN0ZWRQYXltZW50c1N0YXR1cy5hZGRpdGlvbmFsX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJGYWlsdXJlIHR5cGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7IHNlbGVjdGVkUGF5bWVudHNTdGF0dXMuZmFpbHVyZV90eXBlIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImJvbGRcIj57eyBcIkZhaWx1cmUgZXZlbnQgZGF0ZSBhbmQgdGltZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPHRkPiB7eyBzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmZhaWx1cmVfZXZlbnRfZGF0ZV90aW1lIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJzZWxlY3RlZFBheW1lbnRzU3RhdHVzLmhhc19hbW91bnRfZGViaXRlZFwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJIYXMgZGlzcHV0ZWQgYW1vdW50IGRlYml0ZWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7c2VsZWN0ZWRQYXltZW50c1N0YXR1cy5oYXNfYW1vdW50X2RlYml0ZWR9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiICpuZ0lmPVwic2VsZWN0ZWRQYXltZW50c1N0YXR1cy5yZXByZXNlbnRtZW50X3N0YXR1c1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJTdGF0dXMgZm9sbG93aW5nIHJlcHJlc2VudGF0aW9uIG9mIHBheW1lbnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7KHNlbGVjdGVkUGF5bWVudHNTdGF0dXMucmVwcmVzZW50bWVudF9zdGF0dXMgPT09ICdZZXMnIHx8IHNlbGVjdGVkUGF5bWVudHNTdGF0dXMucmVwcmVzZW50bWVudF9zdGF0dXMgPT09ICd5ZXMnKSA/ICdTdWNjZXNzJyA6ICdGYWlsdXJlJ319PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCIgKm5nSWY9XCJzZWxlY3RlZFBheW1lbnRzU3RhdHVzLnJlcHJlc2VudG1lbnRfZGF0ZVwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkXCI+e3sgXCJEYXRlIHBheW1lbnQgcmVwcmVzZW50ZWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cdHt7c2VsZWN0ZWRQYXltZW50c1N0YXR1cy5yZXByZXNlbnRtZW50X2RhdGUgIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICAgIDxkaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component,
|
|
1
|
+
import { ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';
|
|
2
2
|
import { PaymentLibService } from './payment-lib.service';
|
|
3
3
|
import { OrderslistService } from './services/orderslist.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -125,6 +125,92 @@ export class PaymentLibComponent {
|
|
|
125
125
|
this.isFromPayBubble = true;
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Adds a remission to the payment group using data from the provided form group.
|
|
130
|
+
*
|
|
131
|
+
* This method checks if the `paymentGroup` is not null before attempting to add the remission.
|
|
132
|
+
* If the `paymentGroup` exists, a new remission is created using the values from the provided
|
|
133
|
+
* form group (`currentRemissionFormGroup`), and it is pushed into the `remissions` array of the payment group.
|
|
134
|
+
*
|
|
135
|
+
* @param {AddRetroRemissionRequest} currentRemissionFormGroup - The form group containing remission data
|
|
136
|
+
* (e.g., `hwf_amount`, `hwf_reference`).
|
|
137
|
+
*/
|
|
138
|
+
addRemission(currentRemissionFormGroup) {
|
|
139
|
+
if (this.paymentGroup != null) {
|
|
140
|
+
const remission = {
|
|
141
|
+
remission_reference: null,
|
|
142
|
+
hwf_reference: currentRemissionFormGroup.hwf_reference,
|
|
143
|
+
hwf_amount: currentRemissionFormGroup.hwf_amount,
|
|
144
|
+
beneficiary_name: null,
|
|
145
|
+
ccd_case_number: null,
|
|
146
|
+
fee_code: null,
|
|
147
|
+
date_created: null,
|
|
148
|
+
fee_id: null,
|
|
149
|
+
issue_refund_add_refund_add_remission: false,
|
|
150
|
+
add_refund: false,
|
|
151
|
+
overall_balance: currentRemissionFormGroup.hwf_amount,
|
|
152
|
+
acollection_of_fess: true
|
|
153
|
+
};
|
|
154
|
+
this.paymentGroup.remissions.push(remission);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* This method is used to set the paymentGroup for the add remission journey.
|
|
159
|
+
* @param updatedPaymentGroup this is an updated paymentGroup version.
|
|
160
|
+
*/
|
|
161
|
+
addPaymentGroup(updatedPaymentGroup) {
|
|
162
|
+
if (this.paymentGroup == null) {
|
|
163
|
+
this.paymentGroup = updatedPaymentGroup;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Calculates the total remission amount for the current payment group.
|
|
168
|
+
*
|
|
169
|
+
* This method checks if the payment group contains any remissions and, if so,
|
|
170
|
+
* sums up the `hwf_amount` of all remissions using the `reduce()` method.
|
|
171
|
+
* If no remissions are found, it returns a default value of 0.
|
|
172
|
+
*
|
|
173
|
+
* @returns {number} The total remission amount, or 0 if no remissions are present.
|
|
174
|
+
*/
|
|
175
|
+
getTotalRemission() {
|
|
176
|
+
let remissionTotal = 0;
|
|
177
|
+
if (this.paymentGroup.remissions) {
|
|
178
|
+
remissionTotal = this.paymentGroup.remissions.reduce((totalRemission, remission) => totalRemission + remission.hwf_amount, 0);
|
|
179
|
+
}
|
|
180
|
+
return remissionTotal;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Calculates the total fee amount for the current payment group.
|
|
184
|
+
*
|
|
185
|
+
* This method checks if the payment group contains any fees and, if so,
|
|
186
|
+
* sums up the `calculated_amount` of all fees using the `reduce()` method.
|
|
187
|
+
* If no fees are found, it returns a default value of 0.
|
|
188
|
+
*
|
|
189
|
+
* @returns {number} The total fee amount, or 0 if no fees are present.
|
|
190
|
+
*/
|
|
191
|
+
getTotalFees() {
|
|
192
|
+
let feesTotal = 0;
|
|
193
|
+
if (this.paymentGroup.fees) {
|
|
194
|
+
feesTotal = this.paymentGroup.fees.reduce((totalFees, fee) => totalFees + fee.calculated_amount, 0);
|
|
195
|
+
}
|
|
196
|
+
return feesTotal;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Calculates the total payment amount for the current payment group.
|
|
200
|
+
*
|
|
201
|
+
* This method checks if the payment group contains any payments and, if so,
|
|
202
|
+
* sums up the `amount` of all payments using the `reduce()` method.
|
|
203
|
+
* If no payments are found, it returns a default value of 0.
|
|
204
|
+
*
|
|
205
|
+
* @returns {number} The total payment amount, or 0 if no payments are present.
|
|
206
|
+
*/
|
|
207
|
+
getTotalPayments() {
|
|
208
|
+
let paymentsTotal = 0;
|
|
209
|
+
if (this.paymentGroup.payments) {
|
|
210
|
+
paymentsTotal = this.paymentGroup.payments.reduce((totalFees, payment) => totalFees + payment.amount, 0);
|
|
211
|
+
}
|
|
212
|
+
return paymentsTotal;
|
|
213
|
+
}
|
|
128
214
|
// Refunds libs section.
|
|
129
215
|
/**
|
|
130
216
|
* This function is used to find out if the current refunds list are in progress for the fee passed as parameter
|
|
@@ -314,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
314
400
|
type: Input,
|
|
315
401
|
args: ['isFromServiceRequestPage']
|
|
316
402
|
}] } });
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9wYXltZW50LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWtEbEUsTUFBTSxPQUFPLG1CQUFtQjtJQWtFVjtJQUNWO0lBQ0E7SUFuRVMsUUFBUSxDQUFTO0lBQ1IsaUJBQWlCLENBQVM7SUFDM0IsZ0JBQWdCLENBQVM7SUFDcEIscUJBQXFCLENBQVM7SUFDL0Isb0JBQW9CLENBQVM7SUFDbEMsZUFBZSxDQUFTO0lBQzFCLGFBQWEsQ0FBUztJQUNyQixjQUFjLENBQVM7SUFDakMsSUFBSSxDQUFTO0lBQ04sV0FBVyxDQUFTO0lBQ2QsaUJBQWlCLENBQVU7SUFDakMsV0FBVyxDQUFVO0lBQ2xCLGNBQWMsQ0FBUztJQUMzQixVQUFVLENBQVM7SUFDZCxlQUFlLENBQVM7SUFDN0IsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDcEIsUUFBUSxDQUFTO0lBQ0gsc0JBQXNCLENBQVU7SUFDL0MsT0FBTyxDQUFVO0lBQ2QsVUFBVSxDQUFTO0lBQ3ZCLE1BQU0sQ0FBUztJQUNKLGlCQUFpQixDQUFRO0lBQ3pCLGlCQUFpQixDQUFTO0lBQ25CLHdCQUF3QixDQUFVO0lBRXJFLGFBQWEsQ0FBUztJQUN0QixZQUFZLENBQVM7SUFDckIsMkJBQTJCLEdBQVcsSUFBSSxDQUFDO0lBQzNDLHFCQUFxQixDQUFTO0lBQzlCLGdCQUFn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S0FBSzt1QkFBQyxZQUFZO2dCQUNPLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNILFVBQVU7c0JBQTlCLEtBQUs7dUJBQUMsWUFBWTtnQkFDRSxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0MsU0FBUztzQkFBNUIsS0FBSzt1QkFBQyxXQUFXO2dCQUNDLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFDZ0Isc0JBQXNCO3NCQUF0RCxLQUFLO3VCQUFDLHdCQUF3QjtnQkFDYixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0ssVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNGLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFDYSxpQkFBaUI7c0JBQTVDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNFLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ1Msd0JBQXdCO3NCQUExRCxLQUFLO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBheW1lbnRMaWJTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50LWxpYi5zZXJ2aWNlJztcbmltcG9ydCB7IElCU1BheW1lbnRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL0lCU1BheW1lbnRzJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXBcIjtcbmltcG9ydCB7SVJlZnVuZExpc3R9IGZyb20gXCIuL2ludGVyZmFjZXMvSVJlZnVuZExpc3RcIjtcbmltcG9ydCB7SUZlZX0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JRmVlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXBheW1lbnQtbGliJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGNjcGF5LXJlZnVuZC1saXN0IFtVU0VSSURdPVwiVVNFUklEXCIgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCIgW0xPR0dFRElOVVNFUkVNQUlMXT1cIkxPR0dFRElOVVNFUkVNQUlMXCIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3JlZnVuZC1saXN0J1wiPjwvY2NwYXktcmVmdW5kLWxpc3Q+XG4gICAgPGNjcGF5LXBheW1lbnQtbGlzdCAqbmdJZj1cInZpZXdOYW1lID09PSAncGF5bWVudC1saXN0J1wiPjwvY2NwYXktcGF5bWVudC1saXN0PlxuICAgIDxjY3BheS1yZWZ1bmQtc3RhdHVzXG4gICAgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCJcbiAgICBbQVBJX1JPT1RdPVwiQVBJX1JPT1RcIlxuICAgICpuZ0lmPVwidmlld05hbWUgPT09ICdyZWZ1bmRzdGF0dXNsaXN0J1wiPiA8L2NjcGF5LXJlZnVuZC1zdGF0dXMgPlxuICAgIDxjY3BheS1wYXltZW50LXZpZXcgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3BheW1lbnQtdmlldydcIlxuICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCIgW2lzVGFrZVBheW1lbnRdPVwiVEFLRVBBWU1FTlRcIiAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICBbSVNQQVlNRU5UU1RBVFVTRU5BQkxFRF0gPSBcIklTUEFZTUVOVFNUQVRVU0VOQUJMRURcIlxuICAgID48L2NjcGF5LXBheW1lbnQtdmlldz5cblxuICAgIDxjY3BheS1wcm9jZXNzLXJlZnVuZCAqbmdJZj1cInZpZXdOYW1lID09PSAncHJvY2Vzcy1yZWZ1bmQnXCJcbiAgICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZFJlZmVyZW5jZVwiXG4gICAgW3JlZnVuZGxpc3Rzb3VyY2VdPVwicmVmdW5kbGlzdHNvdXJjZVwiXG4gICAgPjwvY2NwYXktcHJvY2Vzcy1yZWZ1bmQ+XG4gICAgPGNjcGF5LXBiYS1wYXltZW50ICpuZ0lmPVwidmlld05hbWUgPT09ICdwYmEtcGF5bWVudCdcIlxuICAgIFtwYmFQYXlPcmRlclJlZl09XCJwYmFQYXlPcmRlclJlZlwiXG4gICAgPjwvY2NwYXktcGJhLXBheW1lbnQ+XG4gICAgPGNjcGF5LWNhc2UtdHJhbnNhY3Rpb25zIFtpc1Rha2VQYXltZW50XT1cImlzVGFrZVBheW1lbnRcIiBbaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXT1cImlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZVwiIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiICpuZ0lmPVwidmlld05hbWUgPT09ICdjYXNlLXRyYW5zYWN0aW9ucydcIj48L2NjcGF5LWNhc2UtdHJhbnNhY3Rpb25zPlxuICAgIDxhcHAtbWFyay11bmlkZW50aWZpZWQtcGF5bWVudCAqbmdJZj1cInZpZXdOYW1lID09PSAndW5pZGVudGlmaWVkUGFnZSdcIlxuICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiPjwvYXBwLW1hcmstdW5pZGVudGlmaWVkLXBheW1lbnQ+XG4gICAgPGFwcC1tYXJrLXVuc29saWNpdGVkLXBheW1lbnQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Vuc29saWNpdGVkUGFnZSdcIlxuICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiPjwvYXBwLW1hcmstdW5zb2xpY2l0ZWQtcGF5bWVudD5cbiAgICA8YXBwLWFsbG9jYXRlLXBheW1lbnRzICpuZ0lmPVwidmlld05hbWUgPT09ICdhbGxvY2F0ZS1wYXltZW50cydcIlxuICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIlxuICAgID48L2FwcC1hbGxvY2F0ZS1wYXltZW50cz5cbiAgICA8Y2NwYXktZmVlLXN1bW1hcnkgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ2ZlZS1zdW1tYXJ5J1wiXG4gICAgICBbY2NkQ2FzZU51bWJlcl09XCJDQ0RfQ0FTRV9OVU1CRVJcIlxuICAgICAgW3BheW1lbnRHcm91cFJlZl09XCJwYXltZW50R3JvdXBSZWZlcmVuY2VcIlxuICAgICAgW2lzVHVybk9mZl09XCJJU1RVUk5PRkZcIlxuICAgICAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICAgID48L2NjcGF5LWZlZS1zdW1tYXJ5PlxuICAgIDxjY3BheS1yZXBvcnRzICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXBvcnRzJ1wiXG4gICAgW0lTUEFZTUVOVFNUQVRVU0VOQUJMRURdID0gXCJJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXCJcbiAgICA+PC9jY3BheS1yZXBvcnRzPlxuICAgIGAsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ1BBWU1FTlRfTElCJywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGF5bWVudExpYkNvbXBvbmVudCkgfV1cbn0pXG5cbmV4cG9ydCBjbGFzcyBQYXltZW50TGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdBUElfUk9PVCcpIEFQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnQlVMS1NDQU5fQVBJX1JPT1QnKSBCVUxLU0NBTl9BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ1JFRlVORFNfQVBJX1JPT1QnKSBSRUZVTkRTX0FQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnTk9USUZJQ0FUSU9OX0FQSV9ST09UJykgTk9USUZJQ0FUSU9OX0FQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnQ0FSRFBBWU1FTlRSRVRVUk5VUkwnKSBDQVJEUEFZTUVOVFJFVFVSTlVSTDogc3RyaW5nO1xuICBASW5wdXQoJ0NDRF9DQVNFX05VTUJFUicpIENDRF9DQVNFX05VTUJFUjogc3RyaW5nO1xuICBASW5wdXQoJ0VYQ19SRUZFUkVOQ0UnKSBFWENfUkVGRVJFTkNFOiBzdHJpbmc7XG4gIEBJbnB1dCgnUEFZTUVOVF9NRVRIT0QnKSBQQVlNRU5UX01FVEhPRDogc3RyaW5nO1xuICBASW5wdXQoJ1ZJRVcnKSBWSUVXOiBzdHJpbmc7XG4gIEBJbnB1dCgnVklFV1NFUlZJQ0UnKSBWSUVXU0VSVklDRTogc3RyaW5nO1xuICBASW5wdXQoJ1BBWU1FTlRfR1JPVVBfUkVGJykgUEFZTUVOVF9HUk9VUF9SRUY/OiBzdHJpbmc7XG4gIEBJbnB1dCgnVEFLRVBBWU1FTlQnKSBUQUtFUEFZTUVOVDogYm9vbGVhbjtcbiAgQElucHV0KCdTRVJWSUNFUkVRVUVTVCcpIFNFUlZJQ0VSRVFVRVNUOiBzdHJpbmc7XG4gIEBJbnB1dCgnRENOX05VTUJFUicpIERDTl9OVU1CRVI6IHN0cmluZztcbiAgQElucHV0KCdTRUxFQ1RFRF9PUFRJT04nKSBTRUxFQ1RFRF9PUFRJT046IHN0cmluZztcbiAgQElucHV0KCdJU0JTRU5BQkxFJykgSVNCU0VOQUJMRTogQm9vbGVhbjtcbiAgQElucHV0KCdJU1NGRU5BQkxFJykgSVNTRkVOQUJMRTogYm9vbGVhbjtcbiAgQElucHV0KCdJU1RVUk5PRkYnKSBJU1RVUk5PRkY6IGJvb2xlYW47XG4gIEBJbnB1dCgnQ0FTRVRZUEUnKSBDQVNFVFlQRTogc3RyaW5nO1xuICBASW5wdXQoJ0lTUEFZTUVOVFNUQVRVU0VOQUJMRUQnKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBib29sZWFuO1xuICBASW5wdXQoJ3Jvb3RVcmwnKSByb290VXJsOiBib29sZWFuO1xuICBASW5wdXQoJ1JFRlVORExJU1QnKSBSRUZVTkRMSVNUOiBzdHJpbmc7XG4gIEBJbnB1dCgnVVNFUklEJykgVVNFUklEOiBzdHJpbmc7XG4gIEBJbnB1dCgnTE9HR0VESU5VU0VSUk9MRVMnKSBMT0dHRURJTlVTRVJST0xFUzogYW55W107XG4gIEBJbnB1dCgnTE9HR0VESU5VU0VSRU1BSUwnKSBMT0dHRURJTlVTRVJFTUFJTDogc3RyaW5nO1xuICBASW5wdXQoJ2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZScpIGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTogYm9vbGVhbjtcblxuICBwYXltZW50TWV0aG9kOiBzdHJpbmc7XG4gIGJzcGF5bWVudGRjbjogc3RyaW5nO1xuICB1blByb2Nlc3NlZFBheW1lbnRTZXJ2aWNlSWQ6IHN0cmluZyA9IG51bGw7XG4gIHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nO1xuICBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmc7XG4gIHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0Zyb21QYXlCdWJibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVmdW5kbGlzdHNvdXJjZTogYW55O1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIGNhc2VUeXBlOiBzdHJpbmc7XG4gIHVuUHJvY2Vzc2VkUGF5bWVudDogSUJTUGF5bWVudHMgPSBudWxsO1xuICBpc1JlZnVuZFN0YXR1c1ZpZXc6IGJvb2xlYW47XG4gIGlzUmVkaXJlY3RGcm9tQ2FzZVRyYW5zYWN0aW9uUGFnZTogc3RyaW5nO1xuICBpc0NhbGxGcm9tUmVmdW5kTGlzdDogYm9vbGVhbjtcbiAgaXNGcm9tUmVmdW5kU3RhdHVzUGFnZTogYm9vbGVhbjtcbiAgaXNjYW5jZWxDbGlja2VkOiBib29sZWFuO1xuICBpc0Zyb21QYXltZW50RGV0YWlsUGFnZTogYm9vbGVhbjtcbiAgcGJhUGF5T3JkZXJSZWY6IElQYXltZW50O1xuICBpc1Rha2VQYXltZW50OiBib29sZWFuO1xuXG4gIG9yZGVyRGV0YWlsOiBhbnlbXTtcbiAgb3JkZXJSZWY6IHN0cmluZztcbiAgb3JkZXJTdGF0dXM6IHN0cmluZztcbiAgb3JkZXJQYXJ0eTogc3RyaW5nO1xuICBvcmRlckNyZWF0ZWQ6IERhdGU7XG4gIG9yZGVyQ0NERXZlbnQ6IHN0cmluZztcbiAgc2VydmljZVJlcXVlc3RWYWx1ZTogc3RyaW5nO1xuICBvcmRlckFkZEJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgb3JkZXJGZWVzVG90YWw6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyUmVtaXNzaW9uVG90YWw6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyVG90YWxQYXltZW50czogbnVtYmVyID0gMC4wMDtcbiAgb3JkZXJQZW5kaW5nUGF5bWVudHM6IG51bWJlciA9IDAuMDA7XG5cbiAgcGF5bWVudEdyb3VwOklQYXltZW50R3JvdXBcbiAgb3ZlclBheW1lbnRBbW91bnQ6IG51bWJlciA9IDAuMDA7XG4gIHJlZnVuZHM6IElSZWZ1bmRMaXN0W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXltZW50TGliU2VydmljZTogUGF5bWVudExpYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UpIHsgfVxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5wYXltZW50TGliU2VydmljZS5zZXRBcGlSb290VXJsKHRoaXMuQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0QnVsa1NjYW5BcGlSb290VXJsKHRoaXMuQlVMS1NDQU5fQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0UmVmdW5kbmRzQXBpUm9vdFVybCh0aGlzLlJFRlVORFNfQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0Tm90aWNhdGlvbkFwaVJvb3RVcmwodGhpcy5OT1RJRklDQVRJT05fQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0Q2FyZFBheW1lbnRSZXR1cm5VcmwodGhpcy5DQVJEUEFZTUVOVFJFVFVSTlVSTCk7XG5cbiAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldFVzZXJSb2xlc0xpc3QodGhpcy5MT0dHRURJTlVTRVJST0xFUyk7XG4gICAgfVxuICAgIGlmICh0aGlzLlBBWU1FTlRfR1JPVVBfUkVGKSB7XG4gICAgICB0aGlzLnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHRoaXMuUEFZTUVOVF9HUk9VUF9SRUY7XG4gICAgfVxuICAgIGlmICh0aGlzLkRDTl9OVU1CRVIpIHtcbiAgICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5EQ05fTlVNQkVSO1xuICAgIH1cbiAgICBpZiAodGhpcy5SRUZVTkRMSVNUID09PSBcInRydWVcIikge1xuICAgICAgdGhpcy5WSUVXID0gJ3JlZnVuZC1saXN0JztcbiAgICAgIHRoaXMudmlld05hbWUgPSB0aGlzLlZJRVc7XG4gICAgfVxuICAgIGlmICh0aGlzLlZJRVcgPT09ICdmZWUtc3VtbWFyeScpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xuICAgIH0gZWxzZSBpZiAodGhpcy5WSUVXICE9PSAncmVwb3J0cycgJiYgdGhpcy5WSUVXICE9PSAncmVmdW5kLWxpc3QnKSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9IHRoaXMuVklFVztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1Rha2VQYXltZW50KSB7XG4gICAgICB0aGlzLlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuQVBJX1JPT1QgPT0gJ2FwaS9wYXltZW50LWhpc3RvcnknKSB7XG4gICAgICB0aGlzLmlzRnJvbVBheUJ1YmJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVmdW5kcyBsaWJzIHNlY3Rpb24uXG5cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpbmQgb3V0IGlmIHRoZSBjdXJyZW50IHJlZnVuZHMgbGlzdCBhcmUgaW4gcHJvZ3Jlc3MgZm9yIHRoZSBmZWUgcGFzc2VkIGFzIHBhcmFtZXRlclxuICAgKiBAcGFyYW0gZmVlIHRoaXMgaXMgdGhlIGZlZSB1c2VkIHRvIGZpbmQgb3V0IGlmIHRoZSByZWZ1bmRzIGFyZSBpbiBwcm9ncmVzcy5cbiAgICovXG4gIGlzVGhlQ3VycmVudFJlZnVuZEluUHJvY2Vzc0ZvclRoaXNGZWUoZmVlOiBJRmVlKTogYm9vbGVhbntcbiAgICAvLyBObyByZWZ1bmRzXG4gICAgaWYgKHRoaXMucmVmdW5kcyA9PSBudWxsIHx8IHRoaXMucmVmdW5kcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmlzVGhlQ3VycmVudFJlZnVuZFJlamVjdGVkRm9yVGhlRmVlKGZlZS5pZC50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmluZCBvdXQgaWYgaW4gY3VycmVudCBsaXN0IG9mIHJlZnVuZHMgYWxsIHJlZnVuZHMgaGFzIGJlZW4gcmVqZWN0ZWRcbiAgICogZm9yIHRoZSBmZWUgcGFzc2VkIGFzIHBhcmFtZXRlci5cbiAgICogQHBhcmFtIGZlZUNvZGUgdGhpcyBpcyB0aGUgZmVlIGNvZGUgdXNlZCB0byBmaW5kIG91dCBhbGwgcmVmdW5kcyByZWplY3RlZCByZWZ1bmRzLlxuICAgKi9cbiAgaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUoZmVlQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgcmVmdW5kc0J5RmVlID0gdGhpcy5yZWZ1bmRzLmZpbHRlcihyZWZ1bmQgPT4gcmVmdW5kLmZlZV9pZHMgPT09IGZlZUNvZGUpO1xuICAgIGxldCByZWZ1bmRzQnlGZWVBbmRSZWplY3RlZCA9IHRoaXMucmVmdW5kcy5maWx0ZXIocmVmdW5kID0+IHJlZnVuZC5yZWZ1bmRfc3RhdHVzLm5hbWUgPT09ICdSZWplY3RlZCcpO1xuXG4gICAgLy8gUmVmdW5kcyA+IDAgIGFuZCBvdmVyUGF5bWVudCAtLT4gcmVmdW5kcyBpbiBwcm9jZXNzIG9yIFJlamVjdGVkLlxuICAgIGlmIChyZWZ1bmRzQnlGZWUubGVuZ3RoID09PSByZWZ1bmRzQnlGZWVBbmRSZWplY3RlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXG59XG4iXX0=
|
|
403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9wYXltZW50LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQW1EaEUsTUFBTSxPQUFPLG1CQUFtQjtJQWtFVjtJQUNWO0lBQ0E7SUFuRVMsUUFBUSxDQUFTO0lBQ1IsaUJBQWlCLENBQVM7SUFDM0IsZ0JBQWdCLENBQVM7SUFDcEIscUJBQXFCLENBQVM7SUFDL0Isb0JBQW9CLENBQVM7SUFDbEMsZUFBZSxDQUFTO0lBQzFCLGFBQWEsQ0FBUztJQUNyQixjQUFjLENBQVM7SUFDakMsSUFBSSxDQUFTO0lBQ04sV0FBVyxDQUFTO0lBQ2QsaUJBQWlCLENBQVU7SUFDakMsV0FBVyxDQUFVO0lBQ2xCLGNBQWMsQ0FBUztJQUMzQixVQUFVLENBQVM7SUFDZCxlQUFlLENBQVM7SUFDN0IsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDcEIsUUFBUSxDQUFTO0lBQ0gsc0JBQXNCLENBQVU7SUFDL0MsT0FBTyxDQUFVO0lBQ2QsVUFBVSxDQUFTO0lBQ3ZCLE1BQU0sQ0FBUztJQUNKLGlCQUFpQixDQUFRO0lBQ3pCLGlCQUFpQixDQUFTO0lBQ25CLHdCQUF3QixDQUFVO0lBRXJFLGFBQWEsQ0FBUztJQUN0QixZQUFZLENBQVM7SUFDckIsMkJBQTJCLEdBQVcsSUFBSSxDQUFDO0lBQzNDLHFCQUFxQixDQUFTO0lBQzlCLGdCQUFn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QkFBdEIsS0FBSzt1QkFBQyxRQUFRO2dCQUNhLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0UsaUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUyx3QkFBd0I7c0JBQTFELEtBQUs7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGF5bWVudExpYlNlcnZpY2V9IGZyb20gJy4vcGF5bWVudC1saWIuc2VydmljZSc7XG5pbXBvcnQge0lCU1BheW1lbnRzfSBmcm9tICcuL2ludGVyZmFjZXMvSUJTUGF5bWVudHMnO1xuaW1wb3J0IHtPcmRlcnNsaXN0U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwXCI7XG5pbXBvcnQge0lSZWZ1bmRMaXN0fSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0XCI7XG5pbXBvcnQge0lGZWV9IGZyb20gXCIuL2ludGVyZmFjZXMvSUZlZVwiO1xuaW1wb3J0IHtJUmVtaXNzaW9ufSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lSZW1pc3Npb25cIjtcbmltcG9ydCB7QWRkUmV0cm9SZW1pc3Npb25SZXF1ZXN0fSBmcm9tIFwiLi9pbnRlcmZhY2VzL0FkZFJldHJvUmVtaXNzaW9uUmVxdWVzdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1wYXltZW50LWxpYicsXG4gIHRlbXBsYXRlOiBgXG4gIDxjY3BheS1yZWZ1bmQtbGlzdCBbVVNFUklEXT1cIlVTRVJJRFwiIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiIFtMT0dHRURJTlVTRVJFTUFJTF09XCJMT0dHRURJTlVTRVJFTUFJTFwiICpuZ0lmPVwidmlld05hbWUgPT09ICdyZWZ1bmQtbGlzdCdcIj48L2NjcGF5LXJlZnVuZC1saXN0PlxuICAgIDxjY3BheS1wYXltZW50LWxpc3QgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3BheW1lbnQtbGlzdCdcIj48L2NjcGF5LXBheW1lbnQtbGlzdD5cbiAgICA8Y2NwYXktcmVmdW5kLXN0YXR1c1xuICAgIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiXG4gICAgW0FQSV9ST09UXT1cIkFQSV9ST09UXCJcbiAgICAqbmdJZj1cInZpZXdOYW1lID09PSAncmVmdW5kc3RhdHVzbGlzdCdcIj4gPC9jY3BheS1yZWZ1bmQtc3RhdHVzID5cbiAgICA8Y2NwYXktcGF5bWVudC12aWV3IFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiICpuZ0lmPVwidmlld05hbWUgPT09ICdwYXltZW50LXZpZXcnXCJcbiAgICBbaXNUdXJuT2ZmXT1cIklTVFVSTk9GRlwiIFtpc1Rha2VQYXltZW50XT1cIlRBS0VQQVlNRU5UXCIgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiXG4gICAgW0lTUEFZTUVOVFNUQVRVU0VOQUJMRURdID0gXCJJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXCJcbiAgICA+PC9jY3BheS1wYXltZW50LXZpZXc+XG5cbiAgICA8Y2NwYXktcHJvY2Vzcy1yZWZ1bmQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Byb2Nlc3MtcmVmdW5kJ1wiXG4gICAgW3JlZnVuZFJlZmVyZW5jZV09XCJyZWZ1bmRSZWZlcmVuY2VcIlxuICAgIFtyZWZ1bmRsaXN0c291cmNlXT1cInJlZnVuZGxpc3Rzb3VyY2VcIlxuICAgID48L2NjcGF5LXByb2Nlc3MtcmVmdW5kPlxuICAgIDxjY3BheS1wYmEtcGF5bWVudCAqbmdJZj1cInZpZXdOYW1lID09PSAncGJhLXBheW1lbnQnXCJcbiAgICBbcGJhUGF5T3JkZXJSZWZdPVwicGJhUGF5T3JkZXJSZWZcIlxuICAgID48L2NjcGF5LXBiYS1wYXltZW50PlxuICAgIDxjY3BheS1jYXNlLXRyYW5zYWN0aW9ucyBbaXNUYWtlUGF5bWVudF09XCJpc1Rha2VQYXltZW50XCIgW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VcIiBbTE9HR0VESU5VU0VSUk9MRVNdPVwiTE9HR0VESU5VU0VSUk9MRVNcIiAqbmdJZj1cInZpZXdOYW1lID09PSAnY2FzZS10cmFuc2FjdGlvbnMnXCI+PC9jY3BheS1jYXNlLXRyYW5zYWN0aW9ucz5cbiAgICA8YXBwLW1hcmstdW5pZGVudGlmaWVkLXBheW1lbnQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3VuaWRlbnRpZmllZFBhZ2UnXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIj48L2FwcC1tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50PlxuICAgIDxhcHAtbWFyay11bnNvbGljaXRlZC1wYXltZW50ICpuZ0lmPVwidmlld05hbWUgPT09ICd1bnNvbGljaXRlZFBhZ2UnXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIj48L2FwcC1tYXJrLXVuc29saWNpdGVkLXBheW1lbnQ+XG4gICAgPGFwcC1hbGxvY2F0ZS1wYXltZW50cyAqbmdJZj1cInZpZXdOYW1lID09PSAnYWxsb2NhdGUtcGF5bWVudHMnXCJcbiAgICBbaXNUdXJuT2ZmXT1cIklTVFVSTk9GRlwiXG4gICAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICA+PC9hcHAtYWxsb2NhdGUtcGF5bWVudHM+XG4gICAgPGNjcGF5LWZlZS1zdW1tYXJ5ICpuZ0lmPVwidmlld05hbWUgPT09ICdmZWUtc3VtbWFyeSdcIlxuICAgICAgW2NjZENhc2VOdW1iZXJdPVwiQ0NEX0NBU0VfTlVNQkVSXCJcbiAgICAgIFtwYXltZW50R3JvdXBSZWZdPVwicGF5bWVudEdyb3VwUmVmZXJlbmNlXCJcbiAgICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCJcbiAgICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiXG4gICAgICA+PC9jY3BheS1mZWUtc3VtbWFyeT5cbiAgICA8Y2NwYXktcmVwb3J0cyAqbmdJZj1cInZpZXdOYW1lID09PSAncmVwb3J0cydcIlxuICAgIFtJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXSA9IFwiSVNQQVlNRU5UU1RBVFVTRU5BQkxFRFwiXG4gICAgPjwvY2NwYXktcmVwb3J0cz5cbiAgICBgLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdQQVlNRU5UX0xJQicsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBheW1lbnRMaWJDb21wb25lbnQpIH1dXG59KVxuXG5leHBvcnQgY2xhc3MgUGF5bWVudExpYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnQVBJX1JPT1QnKSBBUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ0JVTEtTQ0FOX0FQSV9ST09UJykgQlVMS1NDQU5fQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCdSRUZVTkRTX0FQSV9ST09UJykgUkVGVU5EU19BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ05PVElGSUNBVElPTl9BUElfUk9PVCcpIE5PVElGSUNBVElPTl9BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ0NBUkRQQVlNRU5UUkVUVVJOVVJMJykgQ0FSRFBBWU1FTlRSRVRVUk5VUkw6IHN0cmluZztcbiAgQElucHV0KCdDQ0RfQ0FTRV9OVU1CRVInKSBDQ0RfQ0FTRV9OVU1CRVI6IHN0cmluZztcbiAgQElucHV0KCdFWENfUkVGRVJFTkNFJykgRVhDX1JFRkVSRU5DRTogc3RyaW5nO1xuICBASW5wdXQoJ1BBWU1FTlRfTUVUSE9EJykgUEFZTUVOVF9NRVRIT0Q6IHN0cmluZztcbiAgQElucHV0KCdWSUVXJykgVklFVzogc3RyaW5nO1xuICBASW5wdXQoJ1ZJRVdTRVJWSUNFJykgVklFV1NFUlZJQ0U6IHN0cmluZztcbiAgQElucHV0KCdQQVlNRU5UX0dST1VQX1JFRicpIFBBWU1FTlRfR1JPVVBfUkVGPzogc3RyaW5nO1xuICBASW5wdXQoJ1RBS0VQQVlNRU5UJykgVEFLRVBBWU1FTlQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnU0VSVklDRVJFUVVFU1QnKSBTRVJWSUNFUkVRVUVTVDogc3RyaW5nO1xuICBASW5wdXQoJ0RDTl9OVU1CRVInKSBEQ05fTlVNQkVSOiBzdHJpbmc7XG4gIEBJbnB1dCgnU0VMRUNURURfT1BUSU9OJykgU0VMRUNURURfT1BUSU9OOiBzdHJpbmc7XG4gIEBJbnB1dCgnSVNCU0VOQUJMRScpIElTQlNFTkFCTEU6IEJvb2xlYW47XG4gIEBJbnB1dCgnSVNTRkVOQUJMRScpIElTU0ZFTkFCTEU6IGJvb2xlYW47XG4gIEBJbnB1dCgnSVNUVVJOT0ZGJykgSVNUVVJOT0ZGOiBib29sZWFuO1xuICBASW5wdXQoJ0NBU0VUWVBFJykgQ0FTRVRZUEU6IHN0cmluZztcbiAgQElucHV0KCdJU1BBWU1FTlRTVEFUVVNFTkFCTEVEJykgSVNQQVlNRU5UU1RBVFVTRU5BQkxFRDogYm9vbGVhbjtcbiAgQElucHV0KCdyb290VXJsJykgcm9vdFVybDogYm9vbGVhbjtcbiAgQElucHV0KCdSRUZVTkRMSVNUJykgUkVGVU5ETElTVDogc3RyaW5nO1xuICBASW5wdXQoJ1VTRVJJRCcpIFVTRVJJRDogc3RyaW5nO1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUlJPTEVTJykgTE9HR0VESU5VU0VSUk9MRVM6IGFueVtdO1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUkVNQUlMJykgTE9HR0VESU5VU0VSRU1BSUw6IHN0cmluZztcbiAgQElucHV0KCdpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UnKSBpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U6IGJvb2xlYW47XG5cbiAgcGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICBic3BheW1lbnRkY246IHN0cmluZztcbiAgdW5Qcm9jZXNzZWRQYXltZW50U2VydmljZUlkOiBzdHJpbmcgPSBudWxsO1xuICBwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgaXNGcm9tUGF5QnViYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZGxpc3Rzb3VyY2U6IGFueTtcbiAgdmlld05hbWU6IHN0cmluZztcbiAgaXNUdXJuT2ZmOiBib29sZWFuO1xuICBjYXNlVHlwZTogc3RyaW5nO1xuICB1blByb2Nlc3NlZFBheW1lbnQ6IElCU1BheW1lbnRzID0gbnVsbDtcbiAgaXNSZWZ1bmRTdGF0dXNWaWV3OiBib29sZWFuO1xuICBpc1JlZGlyZWN0RnJvbUNhc2VUcmFuc2FjdGlvblBhZ2U6IHN0cmluZztcbiAgaXNDYWxsRnJvbVJlZnVuZExpc3Q6IGJvb2xlYW47XG4gIGlzRnJvbVJlZnVuZFN0YXR1c1BhZ2U6IGJvb2xlYW47XG4gIGlzY2FuY2VsQ2xpY2tlZDogYm9vbGVhbjtcbiAgaXNGcm9tUGF5bWVudERldGFpbFBhZ2U6IGJvb2xlYW47XG4gIHBiYVBheU9yZGVyUmVmOiBJUGF5bWVudDtcbiAgaXNUYWtlUGF5bWVudDogYm9vbGVhbjtcblxuICBvcmRlckRldGFpbDogYW55W107XG4gIG9yZGVyUmVmOiBzdHJpbmc7XG4gIG9yZGVyU3RhdHVzOiBzdHJpbmc7XG4gIG9yZGVyUGFydHk6IHN0cmluZztcbiAgb3JkZXJDcmVhdGVkOiBEYXRlO1xuICBvcmRlckNDREV2ZW50OiBzdHJpbmc7XG4gIHNlcnZpY2VSZXF1ZXN0VmFsdWU6IHN0cmluZztcbiAgb3JkZXJBZGRCdG5FbmFibGU6IGJvb2xlYW47XG4gIG9yZGVyRmVlc1RvdGFsOiBudW1iZXIgPSAwLjAwO1xuICBvcmRlclJlbWlzc2lvblRvdGFsOiBudW1iZXIgPSAwLjAwO1xuICBvcmRlclRvdGFsUGF5bWVudHM6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyUGVuZGluZ1BheW1lbnRzOiBudW1iZXIgPSAwLjAwO1xuXG4gIHBheW1lbnRHcm91cDpJUGF5bWVudEdyb3VwXG4gIG92ZXJQYXltZW50QW1vdW50OiBudW1iZXIgPSAwLjAwO1xuICByZWZ1bmRzOiBJUmVmdW5kTGlzdFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF5bWVudExpYlNlcnZpY2U6IFBheW1lbnRMaWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlKSB7IH1cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0QXBpUm9vdFVybCh0aGlzLkFQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldEJ1bGtTY2FuQXBpUm9vdFVybCh0aGlzLkJVTEtTQ0FOX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldFJlZnVuZG5kc0FwaVJvb3RVcmwodGhpcy5SRUZVTkRTX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldE5vdGljYXRpb25BcGlSb290VXJsKHRoaXMuTk9USUZJQ0FUSU9OX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldENhcmRQYXltZW50UmV0dXJuVXJsKHRoaXMuQ0FSRFBBWU1FTlRSRVRVUk5VUkwpO1xuXG4gICAgaWYgKHRoaXMuTE9HR0VESU5VU0VSUk9MRVMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRVc2VyUm9sZXNMaXN0KHRoaXMuTE9HR0VESU5VU0VSUk9MRVMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5QQVlNRU5UX0dST1VQX1JFRikge1xuICAgICAgdGhpcy5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSB0aGlzLlBBWU1FTlRfR1JPVVBfUkVGO1xuICAgIH1cbiAgICBpZiAodGhpcy5EQ05fTlVNQkVSKSB7XG4gICAgICB0aGlzLmJzcGF5bWVudGRjbiA9IHRoaXMuRENOX05VTUJFUjtcbiAgICB9XG4gICAgaWYgKHRoaXMuUkVGVU5ETElTVCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgIHRoaXMuVklFVyA9ICdyZWZ1bmQtbGlzdCc7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gdGhpcy5WSUVXO1xuICAgIH1cbiAgICBpZiAodGhpcy5WSUVXID09PSAnZmVlLXN1bW1hcnknKSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ2ZlZS1zdW1tYXJ5JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuVklFVyAhPT0gJ3JlcG9ydHMnICYmIHRoaXMuVklFVyAhPT0gJ3JlZnVuZC1saXN0Jykge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSB0aGlzLlZJRVc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNUYWtlUGF5bWVudCkge1xuICAgICAgdGhpcy5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLkFQSV9ST09UID09ICdhcGkvcGF5bWVudC1oaXN0b3J5Jykge1xuICAgICAgdGhpcy5pc0Zyb21QYXlCdWJibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW1pc3Npb24gdG8gdGhlIHBheW1lbnQgZ3JvdXAgdXNpbmcgZGF0YSBmcm9tIHRoZSBwcm92aWRlZCBmb3JtIGdyb3VwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGBwYXltZW50R3JvdXBgIGlzIG5vdCBudWxsIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFkZCB0aGUgcmVtaXNzaW9uLlxuICAgKiBJZiB0aGUgYHBheW1lbnRHcm91cGAgZXhpc3RzLCBhIG5ldyByZW1pc3Npb24gaXMgY3JlYXRlZCB1c2luZyB0aGUgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkXG4gICAqIGZvcm0gZ3JvdXAgKGBjdXJyZW50UmVtaXNzaW9uRm9ybUdyb3VwYCksIGFuZCBpdCBpcyBwdXNoZWQgaW50byB0aGUgYHJlbWlzc2lvbnNgIGFycmF5IG9mIHRoZSBwYXltZW50IGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0ge0FkZFJldHJvUmVtaXNzaW9uUmVxdWVzdH0gY3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cCAtIFRoZSBmb3JtIGdyb3VwIGNvbnRhaW5pbmcgcmVtaXNzaW9uIGRhdGFcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwgYGh3Zl9hbW91bnRgLCBgaHdmX3JlZmVyZW5jZWApLlxuICAgKi9cbiAgYWRkUmVtaXNzaW9uKGN1cnJlbnRSZW1pc3Npb25Gb3JtR3JvdXA6IEFkZFJldHJvUmVtaXNzaW9uUmVxdWVzdCkge1xuXG4gICAgaWYgKHRoaXMucGF5bWVudEdyb3VwICE9IG51bGwpIHtcblxuICAgICAgY29uc3QgcmVtaXNzaW9uOiBJUmVtaXNzaW9uID0ge1xuXG4gICAgICAgIHJlbWlzc2lvbl9yZWZlcmVuY2U6IG51bGwsXG4gICAgICAgIGh3Zl9yZWZlcmVuY2U6IGN1cnJlbnRSZW1pc3Npb25Gb3JtR3JvdXAuaHdmX3JlZmVyZW5jZSxcbiAgICAgICAgaHdmX2Ftb3VudDogY3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cC5od2ZfYW1vdW50LFxuICAgICAgICBiZW5lZmljaWFyeV9uYW1lOiBudWxsLFxuICAgICAgICBjY2RfY2FzZV9udW1iZXI6IG51bGwsXG4gICAgICAgIGZlZV9jb2RlOiBudWxsLFxuICAgICAgICBkYXRlX2NyZWF0ZWQ6IG51bGwsXG4gICAgICAgIGZlZV9pZDogbnVsbCxcbiAgICAgICAgaXNzdWVfcmVmdW5kX2FkZF9yZWZ1bmRfYWRkX3JlbWlzc2lvbjogZmFsc2UsXG4gICAgICAgIGFkZF9yZWZ1bmQ6IGZhbHNlLFxuICAgICAgICBvdmVyYWxsX2JhbGFuY2U6Y3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cC5od2ZfYW1vdW50LFxuICAgICAgICBhY29sbGVjdGlvbl9vZl9mZXNzOiB0cnVlXG4gICAgICB9O1xuICAgICAgdGhpcy5wYXltZW50R3JvdXAucmVtaXNzaW9ucy5wdXNoKHJlbWlzc2lvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSBwYXltZW50R3JvdXAgZm9yIHRoZSBhZGQgcmVtaXNzaW9uIGpvdXJuZXkuXG4gICAqIEBwYXJhbSB1cGRhdGVkUGF5bWVudEdyb3VwIHRoaXMgaXMgYW4gdXBkYXRlZCBwYXltZW50R3JvdXAgdmVyc2lvbi5cbiAgICovXG4gIGFkZFBheW1lbnRHcm91cCh1cGRhdGVkUGF5bWVudEdyb3VwOklQYXltZW50R3JvdXApe1xuICAgIGlmICh0aGlzLnBheW1lbnRHcm91cCA9PSBudWxsKXtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSB1cGRhdGVkUGF5bWVudEdyb3VwO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIHJlbWlzc2lvbiBhbW91bnQgZm9yIHRoZSBjdXJyZW50IHBheW1lbnQgZ3JvdXAuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcGF5bWVudCBncm91cCBjb250YWlucyBhbnkgcmVtaXNzaW9ucyBhbmQsIGlmIHNvLFxuICAgKiBzdW1zIHVwIHRoZSBgaHdmX2Ftb3VudGAgb2YgYWxsIHJlbWlzc2lvbnMgdXNpbmcgdGhlIGByZWR1Y2UoKWAgbWV0aG9kLlxuICAgKiBJZiBubyByZW1pc3Npb25zIGFyZSBmb3VuZCwgaXQgcmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgb2YgMC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRvdGFsIHJlbWlzc2lvbiBhbW91bnQsIG9yIDAgaWYgbm8gcmVtaXNzaW9ucyBhcmUgcHJlc2VudC5cbiAgICovXG5cbiAgZ2V0VG90YWxSZW1pc3Npb24oKTogbnVtYmVyIHtcbiAgICBsZXQgcmVtaXNzaW9uVG90YWwgPSAwO1xuICAgIGlmICh0aGlzLnBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICByZW1pc3Npb25Ub3RhbCA9IHRoaXMucGF5bWVudEdyb3VwLnJlbWlzc2lvbnMucmVkdWNlKCh0b3RhbFJlbWlzc2lvbiwgcmVtaXNzaW9uKSA9PiB0b3RhbFJlbWlzc2lvbiArIHJlbWlzc2lvbi5od2ZfYW1vdW50LCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbWlzc2lvblRvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIGZlZSBhbW91bnQgZm9yIHRoZSBjdXJyZW50IHBheW1lbnQgZ3JvdXAuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcGF5bWVudCBncm91cCBjb250YWlucyBhbnkgZmVlcyBhbmQsIGlmIHNvLFxuICAgKiBzdW1zIHVwIHRoZSBgY2FsY3VsYXRlZF9hbW91bnRgIG9mIGFsbCBmZWVzIHVzaW5nIHRoZSBgcmVkdWNlKClgIG1ldGhvZC5cbiAgICogSWYgbm8gZmVlcyBhcmUgZm91bmQsIGl0IHJldHVybnMgYSBkZWZhdWx0IHZhbHVlIG9mIDAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSB0b3RhbCBmZWUgYW1vdW50LCBvciAwIGlmIG5vIGZlZXMgYXJlIHByZXNlbnQuXG4gICAqL1xuICBnZXRUb3RhbEZlZXMoKTogbnVtYmVyIHtcbiAgICBsZXQgZmVlc1RvdGFsID0gMDtcbiAgICBpZiAodGhpcy5wYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgZmVlc1RvdGFsID0gdGhpcy5wYXltZW50R3JvdXAuZmVlcy5yZWR1Y2UoKHRvdGFsRmVlcywgZmVlKSA9PiB0b3RhbEZlZXMgKyBmZWUuY2FsY3VsYXRlZF9hbW91bnQsIDApO1xuICAgIH1cbiAgICByZXR1cm4gZmVlc1RvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IGZvciB0aGUgY3VycmVudCBwYXltZW50IGdyb3VwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHBheW1lbnQgZ3JvdXAgY29udGFpbnMgYW55IHBheW1lbnRzIGFuZCwgaWYgc28sXG4gICAqIHN1bXMgdXAgdGhlIGBhbW91bnRgIG9mIGFsbCBwYXltZW50cyB1c2luZyB0aGUgYHJlZHVjZSgpYCBtZXRob2QuXG4gICAqIElmIG5vIHBheW1lbnRzIGFyZSBmb3VuZCwgaXQgcmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgb2YgMC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50LCBvciAwIGlmIG5vIHBheW1lbnRzIGFyZSBwcmVzZW50LlxuICAgKi9cbiAgZ2V0VG90YWxQYXltZW50cygpOiBudW1iZXIge1xuICAgIGxldCBwYXltZW50c1RvdGFsID0gMDtcbiAgICBpZiAodGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMpIHtcbiAgICAgIHBheW1lbnRzVG90YWwgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5yZWR1Y2UoKHRvdGFsRmVlcywgcGF5bWVudCkgPT4gdG90YWxGZWVzICsgcGF5bWVudC5hbW91bnQsIDApO1xuICAgIH1cbiAgICByZXR1cm4gcGF5bWVudHNUb3RhbDtcbiAgfVxuXG5cbiAgLy8gUmVmdW5kcyBsaWJzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmaW5kIG91dCBpZiB0aGUgY3VycmVudCByZWZ1bmRzIGxpc3QgYXJlIGluIHByb2dyZXNzIGZvciB0aGUgZmVlIHBhc3NlZCBhcyBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIGZlZSB0aGlzIGlzIHRoZSBmZWUgdXNlZCB0byBmaW5kIG91dCBpZiB0aGUgcmVmdW5kcyBhcmUgaW4gcHJvZ3Jlc3MuXG4gICAqL1xuICBpc1RoZUN1cnJlbnRSZWZ1bmRJblByb2Nlc3NGb3JUaGlzRmVlKGZlZTogSUZlZSk6IGJvb2xlYW57XG4gICAgLy8gTm8gcmVmdW5kc1xuICAgIGlmICh0aGlzLnJlZnVuZHMgPT0gbnVsbCB8fCB0aGlzLnJlZnVuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5pc1RoZUN1cnJlbnRSZWZ1bmRSZWplY3RlZEZvclRoZUZlZShmZWUuaWQudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpbmQgb3V0IGlmIGluIGN1cnJlbnQgbGlzdCBvZiByZWZ1bmRzIGFsbCByZWZ1bmRzIGhhcyBiZWVuIHJlamVjdGVkXG4gICAqIGZvciB0aGUgZmVlIHBhc3NlZCBhcyBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSBmZWVDb2RlIHRoaXMgaXMgdGhlIGZlZSBjb2RlIHVzZWQgdG8gZmluZCBvdXQgYWxsIHJlZnVuZHMgcmVqZWN0ZWQgcmVmdW5kcy5cbiAgICovXG4gIGlzVGhlQ3VycmVudFJlZnVuZFJlamVjdGVkRm9yVGhlRmVlKGZlZUNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHJlZnVuZHNCeUZlZSA9IHRoaXMucmVmdW5kcy5maWx0ZXIocmVmdW5kID0+IHJlZnVuZC5mZWVfaWRzID09PSBmZWVDb2RlKTtcbiAgICBsZXQgcmVmdW5kc0J5RmVlQW5kUmVqZWN0ZWQgPSB0aGlzLnJlZnVuZHMuZmlsdGVyKHJlZnVuZCA9PiByZWZ1bmQucmVmdW5kX3N0YXR1cy5uYW1lID09PSAnUmVqZWN0ZWQnKTtcblxuICAgIC8vIFJlZnVuZHMgPiAwICBhbmQgb3ZlclBheW1lbnQgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICBpZiAocmVmdW5kc0J5RmVlLmxlbmd0aCA9PT0gcmVmdW5kc0J5RmVlQW5kUmVqZWN0ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbn1cblxuXG5cbiJdfQ==
|