@uiapplibct/ngx-reusa-app-lib 0.0.10 → 0.0.12
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/header/header.component.mjs +3 -4
- package/esm2022/lib/services/audit/audit.service.mjs +2 -2
- package/esm2022/lib/services/util/util.service.mjs +7 -1
- package/fesm2022/uiapplibct-ngx-reusa-app-lib.mjs +9 -4
- package/fesm2022/uiapplibct-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/services/audit/audit.service.d.ts.map +1 -1
- package/lib/services/util/util.service.d.ts +1 -0
- package/lib/services/util/util.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -503,7 +503,6 @@ export class HeaderComponent extends BasePage {
|
|
|
503
503
|
ngOnInit() {
|
|
504
504
|
//this.loadNotificationCount();
|
|
505
505
|
this.setMenuItems(localStorage.getItem("language"));
|
|
506
|
-
console.log("this l employers", this.ls.getUser().roles);
|
|
507
506
|
if (this.ls.isEmployer()) {
|
|
508
507
|
this.loadEmployerDetails();
|
|
509
508
|
}
|
|
@@ -533,10 +532,10 @@ export class HeaderComponent extends BasePage {
|
|
|
533
532
|
}
|
|
534
533
|
},
|
|
535
534
|
{
|
|
536
|
-
label: 'Espa
|
|
535
|
+
label: 'Espa�ol',
|
|
537
536
|
icon: this.getIcon(language, 'es'),
|
|
538
537
|
command: () => {
|
|
539
|
-
this.setLanguage('es', 'espa
|
|
538
|
+
this.setLanguage('es', 'espa�ol');
|
|
540
539
|
}
|
|
541
540
|
}]
|
|
542
541
|
}];
|
|
@@ -844,4 +843,4 @@ export class HeaderComponent extends BasePage {
|
|
|
844
843
|
args: ['context']
|
|
845
844
|
}] }); })();
|
|
846
845
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HeaderComponent, { className: "HeaderComponent", filePath: "lib\\components\\header\\header.component.ts", lineNumber: 26 }); })();
|
|
847
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUM0SDs7O0lBQWhHLHlHQUE2RTs7OztJQVF6RyxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFBOEM7SUFBQSxpQkFBYTs7O0lBQXRULG1GQUFrRDtJQUEwQixvR0FBOEU7SUFBaUcsZUFBOEM7SUFBOUMsd0VBQThDOzs7O0lBQzFVLHNDQUEyUjtJQUF6Qix3TEFBUyxlQUFBLHNCQUFjLENBQUEsSUFBQzs7SUFBQyxZQUFvRDtJQUFBLGlCQUFhOzs7SUFBM1QsbUZBQWtEO0lBQTBCLG9HQUE4RTtJQUFnRyxlQUFvRDtJQUFwRCw4RUFBb0Q7Ozs7SUFHL1Usc0NBQTBRO0lBQTVELHdMQUFTLGVBQUEsaUJBQVMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBLElBQUM7SUFBeUIsdUJBQU87SUFBQSxpQkFBYTs7O0lBQXRPLDRGQUFzRTs7O0lBQzFILHNDQUFrTjtJQUFBLCtCQUFlO0lBQUEsaUJBQWE7OztJQUE3SSw4R0FBd0Y7Ozs7SUFDN0wsc0NBQTBUO0lBQTlCLHdMQUFTLGVBQUEsMkJBQW1CLENBQUEsSUFBQztJQUFDLG1CQUFHO0lBQUEsaUJBQWE7OztJQUFyUSwrRkFBeUU7Ozs7SUFDOUksc0NBQXVSO0lBQS9CLHdMQUFTLGVBQUEsNEJBQW9CLENBQUEsSUFBQztJQUFDLHlCQUFTO0lBQUEsaUJBQWE7OztJQUE1TixxR0FBK0U7Ozs7SUFDaEssc0NBQStQO0lBQWhDLHdMQUFTLGVBQUEsNkJBQXFCLENBQUEsSUFBQztJQUFDLHlCQUFTO0lBQUEsaUJBQWE7OztJQUF0TSw2R0FBdUY7Ozs7SUFDdEssc0NBQXFWO0lBQWxDLHlMQUFTLGVBQUEsK0JBQXVCLENBQUEsSUFBQztJQUFDLHVCQUFPO0lBQUEsaUJBQWE7OztJQUE1UixtR0FBNkU7Ozs7SUFDMUosc0NBQXNRO0lBQWhDLHlMQUFTLGVBQUEsNkJBQXFCLENBQUEsSUFBQztJQUFDLGdDQUFnQjtJQUFBLGlCQUFhOzs7SUFBck0sNEdBQXNGOzs7O0lBQ3BMLHNDQUFnUztJQUE5Qix5TEFBUyxlQUFBLDJCQUFtQixDQUFBLElBQUM7SUFBQyw2QkFBYTtJQUFBLGlCQUFhOzs7SUFBak8saUhBQTJGOzs7O0lBQ3BMLHNDQUE2VjtJQUFwQyx5TEFBUyxlQUFBLGlDQUF5QixDQUFBLElBQUM7SUFBQyx5QkFBUztJQUFBLGlCQUFhOzs7SUFBbFMscUdBQStFOzs7O0lBQ2hLLHNDQUFvUDtJQUFqQyx5TEFBUyxlQUFBLDhCQUFzQixDQUFBLElBQUM7SUFBQyxzQkFBTTtJQUFBLGlCQUFhOzs7SUFBNUwsa0dBQTRFOzs7O0lBQ3ZKLHNDQUE0TztJQUEvQix5TEFBUyxlQUFBLDRCQUFvQixDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFhOzs7SUFBdEwsZ0dBQTBFOzs7O0lBQ2pKLHNDQUFpUjtJQUFqQyx5TEFBUyxlQUFBLDhCQUFzQixDQUFBLElBQUM7SUFBQyxzQkFBTTtJQUFBLGlCQUFhOzs7SUFBek4sa0dBQTRFOzs7O0lBQ3ZKLHNDQUF1VDtJQUFwQyx5TEFBUyxlQUFBLGlDQUF5QixDQUFBLElBQUM7SUFBQyx5QkFBUztJQUFBLGlCQUFhOzs7SUFBNVAscUdBQStFOzs7SUFwQnBLLHVDQUFrRDtJQUM5Qyw2RkFBME4sZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsZ0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUEsa0ZBQUE7SUFzQjlOLGlCQUFjOzs7SUF0QitJLGVBQThDO0lBQTlDLDBFQUE4QztJQUVWLGVBQThDO0lBQTlDLDZFQUE4QztJQUM5QyxlQUFvRTtJQUFwRSwwR0FBb0U7SUFDcEUsZUFBbUU7SUFBbkUseUdBQW1FO0lBR2hJLGVBQTRFO0lBQTVFLGtIQUE0RTtJQUNiLGVBQXFCO0lBQXJCLDZDQUFxQjtJQUNwRSxlQUEwSTtJQUExSSwyTEFBMEk7SUFDeEgsZUFBb0Y7SUFBcEYsd0hBQW9GO0lBQzlFLGVBQXFEO0lBQXJELGlGQUFxRDtJQUNqRSxlQUFxSjtJQUFySixxTUFBcUo7SUFDM0gsZUFBOEM7SUFBOUMsMEVBQThDO0lBQzlDLGVBQTBFO0lBQTFFLDZHQUEwRTtJQUM5RixlQUFxSjtJQUFySixxTUFBcUo7SUFDOUosZUFBd0Q7SUFBeEQsb0ZBQXdEO0lBQzlELGVBQXdEO0lBQXhELG9GQUF3RDtJQUNsRCxlQUFxRjtJQUFyRix3SEFBcUY7SUFDNUUsZUFBK0c7SUFBL0cseUpBQStHOzs7SUFXelEsbUNBQTRCLGtCQUFBLGVBQUE7SUFFVixZQUE4RDs7O0lBQUEsaUJBQVcsRUFBQTtJQUV2RixtQ0FBbUIsZUFBQTtJQUNMLFlBQWU7SUFBQSxpQkFBVyxFQUFBO0lBRXhDLG1DQUFtQixnQkFBQTtJQUNMLGFBQTBCO0lBQUEsaUJBQVcsRUFBQSxFQUFBOzs7O0lBTnJDLGVBQThEO0lBQTlELHFIQUE4RDtJQUc5RCxlQUFlO0lBQWYscUNBQWU7SUFHZixlQUEwQjtJQUExQix3REFBMEI7Ozs7SUFieEQsK0JBQTRILHlCQUFBO0lBQ3hGLDRPQUF3QixrTEFDbEMsZUFBQSxzQkFBYyxDQUFBLElBRG9CLHNLQUN5QixlQUFBLDhCQUFzQixDQUFBLElBRC9DO0lBR3BELHlGQVljO0lBQ2xCLGlCQUFpQixFQUFBOzs7SUFoQmUsZUFBd0I7SUFBeEIsMkNBQXdCLCtCQUFBOzs7O0lBdUJ4RCxzQ0FBMFE7SUFBOVAseUxBQVMsZUFBQSxpQkFBUyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUEsSUFBQztJQUM3Qyx3QkFBNkY7SUFDakcsaUJBQWE7OztJQUZxSiw2SEFBdUc7Ozs7SUFHelEsc0NBQTBJO0lBQTlILHlMQUFTLGVBQUEsaUJBQVMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBLElBQUM7SUFDN0MsK0JBQWtEO0lBQ3RELGlCQUFhOzs7SUFXVCxxQ0FBb0UsZ0JBQUE7SUFDckQsWUFBbUM7SUFBQSxpQkFBWSxFQUFBOzs7SUFBL0MsZUFBbUM7SUFBbkMsNkRBQW1DOzs7O0lBSnRELHNDQUM0STtJQURoSSwrTEFBUyxlQUFBLDRDQUFvQyxDQUFBLElBQUM7SUFFdEQsK0JBQWtEO0lBQ2xELHlHQUVZO0lBQ2hCLGlCQUFhOzs7SUFMaUQsMkdBQTZFO0lBRTlHLGVBQXlDO0lBQXpDLGtFQUF5Qzs7O0lBSXRFLGtDQUE2RTs7OztJQUU3RSxzQ0FBeUs7SUFBN0osMExBQVMsZUFBQSxpQkFBYyxDQUFBLElBQUM7SUFDaEMsK0JBQWdEO0lBQ3BELGlCQUFhOzs7O0lBN0JqQix1Q0FBaUQscUJBQUE7SUFDakMsaUxBQVMsZUFBQSx1Q0FBK0IsQ0FBQSxJQUFDO0lBQ2pELHFDQUFrRTtJQUFBLFlBQWlDOztJQUFBLGlCQUFZO0lBQy9HLCtCQUE2RDtJQUNqRSxpQkFBYTtJQUNiLDhGQUVhLGlGQUFBLGlGQUFBLG1GQUFBLG1GQUFBOztJQXVCakIsaUJBQWM7OztJQTdCd0YsZUFBZ0w7SUFBaEwsK05BQWdMO0lBQzVNLGVBQWlDO0lBQWpDLG1FQUFpQztJQUdSLGVBQWlFO0lBQWpFLHVHQUFpRTtJQUdqRSxlQUF5QztJQUF6Qyx3RUFBeUM7SUFXbkksZUFBdUQ7SUFBdkQsc0ZBQXVEO0lBTTlCLGVBQStCO0lBQS9CLHVEQUErQjtJQUVrQixlQUF3RjtJQUF4RiwySUFBd0Y7Ozs7SUFLM0ssdUNBQXVFLHFCQUFBO0lBQ3ZELDJLQUFTLGVBQUEsZ0JBQVEsQ0FBQSxJQUFDO0lBQzFCLCtCQUEwQztJQUM5QyxpQkFBYSxFQUFBOzs7O0lBR2pCLHVDQUEwRztJQUN0RyxpQ0FBc0U7SUFDdEUsc0NBQXVGO0lBQTNFLDZLQUFTLGVBQUEsbUJBQW1CLENBQUEsSUFBQztJQUN2QywrQkFBZ0Q7SUFDbEQsaUJBQWEsRUFBQTs7O0lBSEMsZUFBYztJQUFkLDRCQUFjLHVCQUFBOzs7SUFVNUIscUNBQWlFO0lBQUEsWUFBUztJQUFBLGlCQUFZOzs7SUFBckIsZUFBUztJQUFULG1DQUFTOzs7SUFJMUUscUNBQXlHO0lBQ3JHLFlBQVU7SUFBQSxpQkFBWTs7O0lBQXRCLGVBQVU7SUFBViw4Q0FBVTs7O0lBUnRCLHVDQUFvRSxzQkFBQTtJQUU1RCxzQ0FBd0k7SUFDeEksNEZBQXNGO0lBQzFGLGlCQUFjO0lBQ2QscUJBQXlCO0lBQ3pCLHVDQUF3QjtJQUNwQiw0RkFDMEI7SUFDOUIsaUJBQWMsRUFBQTs7O0lBUDJELGVBQWdEO0lBQWhELDRFQUFnRDtJQUN6RixlQUFXO0lBQVgsbUNBQVc7SUFJb0QsZUFBWTtJQUFaLG9DQUFZOzs7SUFNdkcsd0JBQW9IOzs7SUFDcEgsd0JBQXNIOzs7SUFDdEgsd0JBQXdIOzs7SUFDeEgsd0JBQWtIOzs7SUFIbEgsNEVBQW9ILCtEQUFBLCtEQUFBLCtEQUFBO0lBS3BILDBCQUVROzs7SUFQSix1REFBa0M7SUFDbEMsZUFBb0M7SUFBcEMseURBQW9DO0lBQ3BDLGVBQWlDO0lBQWpDLHNEQUFpQztJQUNqQyxlQUFpQztJQUFqQyxzREFBaUM7SUFFaEMsZUFDZ0U7SUFEaEUscU5BQ2dFOzs7O0lBTXpFLHVDQUF3RjtJQUFsRCwwUUFBaUQ7SUFBQyxpQkFBYzs7O0lBRDFHLDZCQUF1QztJQUNuQyxpR0FBc0c7SUFDMUcsMEJBQWU7OztJQURHLGVBQXNCO0lBQXRCLDhDQUFzQjs7OztJQUd4QyxzREFBK0g7SUFBbEUsd1NBQWlFO0lBQUMsaUJBQTZCOzs7QUQxRzVKLE1BQU0sT0FBTyxlQUFnQixTQUFRLFFBQVE7SUEwQzNDLFlBQW1CLEVBQWlCLEVBQVMsSUFBa0IsRUFBUyxDQUFVLEVBQVMsS0FBd0IsRUFDaEcsRUFBb0IsRUFBVSxHQUFtQixFQUFTLGVBQWdDLEVBQzFGLEVBQXdCLEVBQVMsRUFBZSxFQUFTLGdCQUFtQyxFQUFVLEVBQWdCO1FBQzNILEtBQUssRUFBRSxDQUFDO1FBSEgsT0FBRSxHQUFGLEVBQUUsQ0FBZTtRQUFTLFNBQUksR0FBSixJQUFJLENBQWM7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFTO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDaEcsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMxRixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQTlCakgsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFNNUMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBRS9CLGVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBRXJDLG9CQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUUvQyxxQkFBZ0IsR0FBYSxLQUFLLENBQUM7UUFFbkMsNkJBQXdCLEdBQWEsS0FBSyxDQUFDO1FBRTNDLHVCQUFrQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztJQVlqRCxDQUFDO0lBRWQsUUFBUTtRQUNOLCtCQUErQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUN2QjtZQUNNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7O01BT0U7SUFDRixjQUFjO1FBQ1osSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsWUFBWSxDQUFDLFFBQWlCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztnQkFDWixLQUFLLEVBQUcsaUJBQWlCO2dCQUN6QixLQUFLLEVBQUUsQ0FBQzt3QkFDTixLQUFLLEVBQUUsU0FBUzt3QkFDaEIsSUFBSSxFQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQzt3QkFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRTs0QkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEMsQ0FBQztxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsU0FBUzt3QkFDaEIsSUFBSSxFQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQzt3QkFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRTs0QkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEMsQ0FBQztxQkFDRixDQUFDO2FBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFxQixFQUFFLFFBQWlCO1FBQzlDLElBQUcsUUFBUSxJQUFJLFlBQVksRUFBQztZQUMxQixPQUFPLG1CQUFtQixDQUFDO1NBQzVCO2FBQUs7WUFDSixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFpQixFQUFFLElBQWE7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSztRQUVqQyxJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxlQUFlLElBQUksTUFBTSxDQUFDLENBQUMsRUFBQztZQUN6SixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEMsU0FBUyxFQUFFLGFBQWE7WUFDeEIsV0FBVyxFQUFFLElBQUk7WUFDakIsZUFBZSxFQUFFLElBQUk7WUFDckIsS0FBSyxFQUFFLEtBQUs7WUFDWixRQUFRLEVBQUUsZ0JBQWdCO1NBQzNCLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEMsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixXQUFXLEVBQUUsSUFBSTtZQUNqQixlQUFlLEVBQUUsSUFBSTtZQUNyQixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxnQkFBZ0I7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBRyxJQUFJLENBQUMsVUFBVSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxPQUFPLEVBQUM7WUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUE7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1NBQ25DO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFHLElBQUksQ0FBQyxPQUFPLElBQUUsT0FBTyxFQUFDO1lBQ3ZCLElBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBQztnQkFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUM7YUFDckM7aUJBQU0sSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUM7Z0JBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9CO2lCQUFNLElBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpREFBaUQ7YUFDOUU7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsbUJBQW1CO1FBRWpCLElBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUN0QztZQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFO2dCQUM1QyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFO2FBQ3RELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEVBQUM7WUFDL0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBRSxPQUFPLEVBQUM7WUFDeEIsSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUM7Z0JBQ3hHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25DO2lCQUFNLElBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFDO2dCQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7UUFDRCxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEVBQUM7WUFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7YUFBTSxJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsRUFBQyxnREFBZ0Q7WUFDbEosSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsZUFBZSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFDO1lBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBQztZQUNsRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQ2pEO2FBQU0sSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFDO1lBQzdCLElBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUMvQjtnQkFDRSxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO2FBQy9EO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRTtnQkFDcEQsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRTthQUMvQyxDQUFDLENBQUMsQ0FBQSwrQ0FBK0M7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBRWpCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxTQUFTLENBQUMsUUFBUSxDQUFDO2FBQy9ELFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxHQUFHLENBQUM7YUFDcEM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7YUFDckQsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxHQUFHLEVBQ1A7Z0JBQ0UsSUFBSSxDQUFDLDhCQUE4QixHQUFHLEdBQUcsQ0FBQzthQUMzQztRQUNILENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFDRCxRQUFRO1FBQ04sb0NBQW9DO1FBQ3BDLElBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdGO2FBQU0sSUFBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUY7YUFBTSxJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSwrQ0FBK0M7WUFDMUUsNkJBQTZCO1NBQzlCO2FBQ0k7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksY0FBYyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ3JCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxjQUFjLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNqQyxjQUFjLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNoQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFDO1lBQ3hELGNBQWMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQzNCLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDakI7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBQztZQUMxQyxjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUM5QixRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBRyxRQUFRLEVBQUM7WUFDVixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQUc7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQStCO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xHLDhDQUE4QztRQUNoRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFFVCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLG1CQUFtQix3Q0FBd0MsU0FBUyxDQUFDLFlBQVksTUFBTSxTQUFTLENBQUMsYUFBYSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEssQ0FBQztJQUVELFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQXlCO1FBQ2xELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwRCxJQUFJLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRS9CLElBQUcsa0JBQWtCLElBQUksTUFBTSxFQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDMUM7YUFBSTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1gsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU8sWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLO0lBRTFCLENBQUM7Z0ZBaldVLGVBQWU7b0VBQWYsZUFBZTs7WUN6QjVCLDBGQUNtQjs7WUFDbkIsbUNBQWEscUJBQUE7WUFFTCx3RkFDNEg7WUFDaEksaUJBQWM7WUFDZCxzQ0FBMkk7WUFBL0IsaUdBQVMsd0JBQW9CLElBQUM7WUFDdEkseUJBQzRIOztZQUNoSSxpQkFBYztZQUNkLGtCQUF5QjtZQUN6QixrRkF1QmMscURBQUEsdUVBQUEscUVBQUEscUVBQUE7WUFtRWxCLGlCQUFjO1lBQ2Qsa0ZBVWM7WUFDZCxnQ0FBUztZQUNMLG1GQVNjO1lBQ2hCLGlCQUFVO1lBRVoscUZBRWUsb0dBQUE7O1lBakk0RCx5RUFBdUM7WUFLckcsZUFBcUI7WUFBckIsMENBQXFCO1lBRUosZUFBaUY7WUFBakYsbUdBQWlGO1lBQ3ZGLGVBQTRDO1lBQTVDLDhFQUE0QztZQUMzRCx1R0FBaUQ7WUFBQyx5RkFBdUU7WUFHbkcsZUFBcUI7WUFBckIsMENBQXFCO1lBMEJWLGVBQW9GO1lBQXBGLGtIQUFvRjtZQW1CakcsZUFBcUI7WUFBckIsMENBQXFCO1lBZ0NmLGVBQXNDO1lBQXRDLCtEQUFzQztZQU01QyxlQUErRTtZQUEvRSw0R0FBK0U7WUFRN0QsZUFBbUI7WUFBbkIsd0NBQW1CO1lBd0JuRCxlQUFzQjtZQUF0QiwyQ0FBc0I7WUFJUixlQUE4QjtZQUE5QixtREFBOEI7OztpRkQxRzlDLGVBQWU7Y0FMM0IsU0FBUzsyQkFDRSxZQUFZOzBVQWNOLEtBQUs7a0JBQXBCLEtBQUs7bUJBQUMsT0FBTztZQUVHLE1BQU07a0JBQXRCLEtBQUs7bUJBQUMsUUFBUTtZQUVTLGFBQWE7a0JBQXBDLEtBQUs7bUJBQUMsZUFBZTtZQUVBLFdBQVc7a0JBQWhDLEtBQUs7bUJBQUMsYUFBYTtZQUVFLFdBQVc7a0JBQWhDLEtBQUs7bUJBQUMsYUFBYTtZQUVELFFBQVE7a0JBQTFCLEtBQUs7bUJBQUMsVUFBVTtZQUVDLE9BQU87a0JBQXhCLEtBQUs7bUJBQUMsU0FBUzs7a0ZBdEJMLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIsIFBvcG92ZXJDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XG5pbXBvcnQgeyBDbGFpbWFudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYWltYW50L0NsYWltYW50TW9kZWwnO1xuaW1wb3J0IHsgTXlOb3RpZmljYXRpb25zUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3BvcG92ZXJzL215LW5vdGlmaWNhdGlvbnMvbXktbm90aWZpY2F0aW9ucy5wYWdlJztcbmltcG9ydCB7IE15UHJvZmlsZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9wb3BvdmVycy9teS1wcm9maWxlL215LXByb2ZpbGUucGFnZSc7XG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC9jbGFpbWFudC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscC9oZWxwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgU2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlRm9ybSc7XG5pbXBvcnQgeyBBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpdC9hdWRpdC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0ICB7XG5cbiAgaXRlbXM6IE1lbnVJdGVtW107XG5cbiAgc2VhcmNoVGV4dDtcblxuICByZXN1bHRzOiBDbGFpbWFudE1vZGVsW107XG5cbiAgY29udGV4dFJvb3Q6c3RyaW5nO1xuXG4gIEBJbnB1dCgndGl0bGUnKSB0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgncGFnZUlkJykgcGFnZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KCdzZWNvbmRUb29sYmFyJykgc2Vjb25kVG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGlzcGxheUxvZ28nKSBkaXNwbGF5TG9nbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnc2hvd0hpc3RvcnknKSBzaG93SGlzdG9yeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnYmFja1BhZ2UnKSBiYWNrUGFnZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgnY29udGV4dCcpIGNvbnRleHQ6IHN0cmluZztcblxuICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbkxvYWRlciA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsZWdhY3lNZW51ID0gTGliQ29uc3RhbnRzLmxlZ2FjeU1lbnU7XG5cbiAgcHVibGljIGludGVyaW1Ib21lUGFnZSA9IExpYkNvbnN0YW50cy5pbnRlcmltSG9tZVBhZ2U7XG5cbiAgcHVibGljIHNob3dQcm9maWxlUG9wdXAgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd0xhbmd1YWdlT3B0aW9uID0gTGliQ29uc3RhbnRzLmVuYWJsZUxhbmd1YWdlQ2hhbmdlO1xuXG4gIHNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhOlNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhW107XG4gIHNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGE6IFNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhW107XG4gIGF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbDogQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsO1xuXG5cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbHMgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsIHB1YmxpYyByIDogUm91dGVyLCBwdWJsaWMgcG9wdXA6IFBvcG92ZXJDb250cm9sbGVyLCBcbiAgICAgICAgICAgICAgcHVibGljIGNzIDogQ2xhaW1hbnRTZXJ2aWNlLCBwcml2YXRlIG5hdiA6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBtb2RhbENvbnRyb2xsZXI6IE1vZGFsQ29udHJvbGxlcixcbiAgICAgICAgICAgICAgcHVibGljIG5zIDogTm90aWZpY2F0aW9uU2VydmljZSwgcHVibGljIGhzOiBIZWxwU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHFzOiBBdWRpdFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vdGhpcy5sb2FkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICB0aGlzLnNldE1lbnVJdGVtcyhsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpKTtcbiAgICBjb25zb2xlLmxvZyhcInRoaXMgbCBlbXBsb3llcnNcIiwgdGhpcy5scy5nZXRVc2VyKCkucm9sZXMpO1xuXG4gICAgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpXG4gICAge1xuICAgICAgICAgIHRoaXMubG9hZEVtcGxveWVyRGV0YWlscygpXG4gICAgfVxuICAgIHRoaXMuY29udGV4dFJvb3QgPSB0aGlzLmdldENvbnRleHRSb290KCk7XG4gIH1cbiAgXG4gIC8qSm9iIFNlYXJjaCBSZXN1bHQgSWNvbiBQb3B1cFxuICAgcHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKCkge1xuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMuc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgKi9cbiAgZ2V0Q29udGV4dFJvb3QoKXtcbiAgICBsZXQgcGFydHMgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKTtcbiAgICBsZXQgY29udGV4dFJvb3QgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0gOiAnJztcbiAgICByZXR1cm4gY29udGV4dFJvb3Q7XG4gIH1cbiAgc2V0TWVudUl0ZW1zKGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICB0aGlzLml0ZW1zID0gW3tcbiAgICAgIGxhYmVsIDogJ0Nob29zZSBsYW5ndWFnZScsXG4gICAgICBpdGVtczogW3tcbiAgICAgICAgbGFiZWw6ICdFbmdsaXNoJyxcbiAgICAgICAgaWNvbiA6IHRoaXMuZ2V0SWNvbihsYW5ndWFnZSwnZW4nKSxcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSgnZW4nLCAnRW5nbGlzaCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ0VzcGHvv71vbCcsXG4gICAgICAgIGljb24gOiB0aGlzLmdldEljb24obGFuZ3VhZ2UsJ2VzJyksXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoJ2VzJywgJ2VzcGHvv71vbCcpO1xuICAgICAgICB9XG4gICAgICB9XVxuICAgIH1dO1xuICB9XG5cbiAgZ2V0SWNvbihzZWxlY3RlZExhbmcgOiBzdHJpbmcsIGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICBpZihsYW5ndWFnZSA9PSBzZWxlY3RlZExhbmcpe1xuICAgICAgcmV0dXJuIFwicGkgcGktZncgcGktY2hlY2tcIjtcbiAgICB9ZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXRMYW5ndWFnZShsYW5ndWFnZSA6IHN0cmluZywgbmFtZSA6IHN0cmluZyl7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5ndWFnZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgbGFuZ3VhZ2UpO1xuICAgIHRoaXMudXRpbC50b2FzdCgnTGFuZ3VhZ2UgcHJlZmVyZW5jZSBjaGFuZ2VkIHRvICcgKyBuYW1lKTtcbiAgICB0aGlzLnNldE1lbnVJdGVtcyhsYW5ndWFnZSk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlQcm9maWxlUG9wb3ZlcihldmVudCkge1xuXG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkgJiYgICh0aGlzLmxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyB8fCB0aGlzLnV0aWwuaXNTdGF0ZSgnTUUnKSB8fCAodGhpcy51dGlsLmlzU3RhdGUoJ01TJykgJiYgTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZSA9PSAndHJ1ZScpKSl7XG4gICAgICB0aGlzLnNob3dQcm9maWxlUG9wdXAgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcHVwLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IE15UHJvZmlsZVBhZ2UsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNzc0NsYXNzOiAnaGVhZGVyLXBvcG92ZXInXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlOb3RpZmljYXRpb25Qb3BvdmVyKGV2ZW50KSB7XG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wdXAuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogTXlOb3RpZmljYXRpb25zUGFnZSxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY3NzQ2xhc3M6ICdoZWFkZXItcG9wb3ZlcidcbiAgICB9KTtcblxuICAgIHBvcG92ZXIub25EaWREaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5zLnVwZGF0ZVJlYWRGbGFnKCk7XG4gICAgfSlcblxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGxvZ291dCgpe1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xhbmRpbmcnKTtcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xuICB9XG5cbiAgb3BlbldlZWtsaWVzKCl7XG4gICAgaWYodGhpcy5sZWdhY3lNZW51ID09ICd0cnVlJyAmJiB0aGlzLmlzTVMoKSAmJiB0aGlzLmludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2NwJywgJ3YyL3dlZWtsaWVzJylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnY3AnLCAndjMvd2Vla2xpZXMnKVxuICAgIH1cbiAgfVxuXG4gIG9wZW5BdWRpdERhc2hib2FyZCgpe1xuICAgIGlmKHRoaXMuY29udGV4dD09J2F1ZGl0Jyl7XG4gICAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2Rhc2hib2FyZCcpO1xuICAgICAgfSBlbHNlIGlmKHRoaXMubHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL215cScpO1xuICAgICAgfSBlbHNlIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvJyk7IC8vQWRkIHRoZSBhY3R1YWwgdXJsIGZvciBlbXBsb3llciBhdWRpdCBkYXNoYm9hcmRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuQXVkaXRvcldvcmtMaXN0KCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci13b3JrLWxpc3QnKTtcbiAgfVxuXG4gIG9wZW5VcGxvYWREb2N1bWVudHMoKXtcblxuICAgIGlmKHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsKVxuICAgIHtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywgJy9lbXBsb3llci1kb2N1bWVudHMnLCB7XG4gICAgICAgIHN0YXRlOiB7IGF1ZGl0OiB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvck15USgpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9teXEnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvcklucXVpcnkoKXtcbiAgICAgaWYodGhpcy5jb250ZXh0PT0nYXVkaXQnKXtcbiAgICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpfHx0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2lucXVpcnknKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWlucXVpcnknKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy90aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclJlZmVycmFscygpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL3JlZmVycmFscycpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgdGhpcy5scy5pc1RwYSgpIHx8IHRoaXMubHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpKXsvL0FnZW5jeSBFbXBsb3llZSBEZWZhdWx0IC0gY2hlY2sgcm9sZSB3aXRoIGNpanVcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL25ldy1yZWZlcnJhbCcpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQ29uZmlnKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvY29uZmlnJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckFuYWx5dGljcygpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2FuYWx5dGljcycpO1xuICAgIH1cbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgJiYgISh0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkpeyBcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItYW5hbHl0aWNzJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBc3NpZ24oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hc3NpZ24nKTtcbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yVGVhbSgpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL3RlYW0nKTtcbiAgfVxuXG4gIG9wZW5RdWVzdGlvbm5haXJlKCl7XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICBpZih0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhKVxuICAgICAge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEgPSB0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhO1xuICAgICAgfVxuICAgICAgdGhpcy5xcy5zZXRRdWVzdGlvbm5haXJlRGF0YSh0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEpO1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZS1mb3JtJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9XG4gICAgICB9KTsvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgcXVlc3Rpb25uYWlyZVxuICAgIH1cbiAgfVxuXG4gIGxvYWRFbXBsb3llckRldGFpbHMoKVxuICB7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpXG5cbiAgICB0aGlzLnFzLnNlYXJjaFF1ZXN0aW9ubmFpcmUobnVsbCwgbnVsbCwgbnVsbCx1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSA9IHJlcztcbiAgICAgIH0gXG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGVtcGxveWVyIGRhdGEgZm91bmRcIik7XG4gICAgfSk7XG5cbiAgICB0aGlzLnFzLmZpbmRFbXBsb3llckRhdGFXaXRoVXNlcklEKHVzZXJNb2RlbC51c2VybmFtZSlcbiAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpXG4gICAgICB7XG4gICAgICAgIHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsID0gcmVzO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoXCJObyBlbXBsb3llciBkYXRhIGZvdW5kXCIpO1xuICAgIH0pXG5cbiAgfVxuICBvcGVuSG9tZSgpe1xuICAgIC8vdGhpcy5uYXYubmF2aWdhdGVSb290KFwiL3dlbGNvbWVcIik7XG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkpe1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0aGlzLnV0aWwuZ2V0Q2xhaW1hbnRBcHBDb250ZXh0Um9vdCgpLCBcIndlbGNvbWVcIiwgdGhpcy5uYXYpOyBcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc0NzcigpKXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSxcIndlbGNvbWVcIiwgdGhpcy5uYXYpOyBcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvJyk7Ly9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIHF1ZXN0aW9ubmFpcmVcbiAgICAgIC8vdGhpcy5sb2FkRW1wbG95ZXJEZXRhaWxzKCk7XG4gICAgfSBcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIi93ZWxjb21lXCIpO1xuICAgIH1cbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICB9XG5cbiAgc2VhcmNoKGV2ZW50KSB7XG4gICAgbGV0IGRvU2VhcmNoID0gZmFsc2U7XG4gICAgbGV0IGNsYWltYW50U2VhcmNoID0gbmV3IENsYWltYW50TW9kZWwoKTtcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeSArICcnO1xuICAgIGlmKHF1ZXJ5LmluY2x1ZGVzKFwiIFwiKSl7XG4gICAgICBsZXQgZk5hbWUgPSBxdWVyeS5zcGxpdChcIiBcIilbMF07XG4gICAgICBsZXQgbE5hbWUgPSBxdWVyeS5zcGxpdChcIiBcIilbMV07XG4gICAgICBjbGFpbWFudFNlYXJjaC5maXJzdE5hbWUgPSBmTmFtZTtcbiAgICAgIGNsYWltYW50U2VhcmNoLmxhc3ROYW1lID0gbE5hbWU7XG4gICAgICBkb1NlYXJjaCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYocXVlcnkubGVuZ3RoID09IDkgJiYgdGhpcy5pc051bWJlcihxdWVyeSkgJiYgIWRvU2VhcmNoKXtcbiAgICAgIGNsYWltYW50U2VhcmNoLnNzbiA9IHF1ZXJ5O1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1lbHNlIGlmKCF0aGlzLmlzTnVtYmVyKHF1ZXJ5KSAmJiAhZG9TZWFyY2gpe1xuICAgICAgY2xhaW1hbnRTZWFyY2gudXNlcklkID0gcXVlcnk7XG4gICAgICBkb1NlYXJjaCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmKGRvU2VhcmNoKXtcbiAgICAgIHRoaXMuY3Muc2VhcmNoKGNsYWltYW50U2VhcmNoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzID0gZGF0YTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOdW1iZXIobnVtKXtcbiAgICByZXR1cm4gIWlzTmFOKG51bSk7XG4gIH1cblxuICBvblNlbGVjdEFjdGlvbihldmVudCA6IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50KXtcbiAgICB0aGlzLnJlc3VsdHMgPSBudWxsO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XG4gICAgdGhpcy5jcy5nZXRDbGFpbWFudCgpLm5leHQoZXZlbnQudmFsdWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0aGlzLnV0aWwuZ2V0U2VjdXJpdHlBcHBDb250ZXh0Um9vdCgpLFwicmVzZXQtcGFzc3dvcmRcIiwgdGhpcy5uYXYpO1xuICAgICAgLy90aGlzLm5hdi5uYXZpZ2F0ZUZvcndhcmQoJy9yZXNldC1wYXNzd29yZCcpO1xuICAgIH0sIDUwMClcbiAgICBcbiAgfVxuXG4gIG9wZW5CZW5lZml0c0FwcCgpe1xuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxzLmdldFVzZXIoKVxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsRXh0ZXJuYWx9L2ZhY2VzL3ZpcnR1YWwvY29udGV4dHN3aXRjaC54aHRtbD9hPSR7dXNlck1vZGVsLmFjY2Vzc190b2tlbn0mcj0ke3VzZXJNb2RlbC5yZWZyZXNoX3Rva2VufSZ2PTIyOTlgLCAnX3NlbGYnKTtcbiAgfVxuXG4gIG9wZW5QYWdlKGNvbnRleHRSb290LCB1cmksIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpe1xuICAgIGxldCBjdXJyZW50Q29udGV4dFJvb3QgPSB0aGlzLnV0aWwuZ2V0Q29udGV4dFJvb3QoKTtcbiAgICBsZXQgdGFyZ2V0ID0gYC8ke2NvbnRleHRSb290fWA7XG5cbiAgICBpZihjdXJyZW50Q29udGV4dFJvb3QgPT0gdGFyZ2V0KXtcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChgLyR7dXJpfWAsIGV4dHJhcyk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRhcmdldCwgdXJpKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGFzcyhuYW1lKXtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yLnVybC5yZXBsYWNlKCcvJywgJycpO1xuICAgIGNvbnNvbGUubG9nKGN1cnJlbnRSb3V0ZSwgbmFtZSwgY3VycmVudFJvdXRlID09IG5hbWUpO1xuICAgIHJldHVybiBjdXJyZW50Um91dGUgPT0gbmFtZSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnO1xuICB9XG5cbiAgb3BlbkNvbnRleHRIZWxwKCl7XG5cbiAgfVxuXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XG4gICAgXG4gIH1cbn1cbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJkZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJ1dGlsLmxvYWRlci52YWx1ZSQgfCBhc3luY1wiICpuZ0lmPVwiKHV0aWwubG9hZGVyLnZhbHVlJCB8IGFzeW5jKSAhPSAwXCI+XHJcbjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC01cHg7XCI+XHJcbiAgICAgICAgPGlvbi1tZW51LWJ1dHRvbiBhdXRvSGlkZT1cImZhbHNlXCIgcFRvb2x0aXA9XCJNZW51XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJscy5pc0xvZ2dlZEluKClcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteGwgaGlkZS1sZycgOiAnJ1wiPjwvaW9uLW1lbnUtYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfYnV0dG9uX3doaXRlJyA6ICdoZWFkZXJfYnV0dG9uIGhpZGUteHMgaGlkZS1tZCdcIiAoY2xpY2spPVwib3BlbkF1ZGl0RGFzaGJvYXJkKClcIj5cclxuICAgICAgICA8aW1nIGFsdD1cImxvZ29cIiBwVG9vbHRpcD1cInt7J1JlRW1wbG95TVMgTG9nbycgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfbG9nbycgOiAnaGVhZGVyX2xvZ28gaGlkZS14cyBoaWRlLW1kJ1wiLz5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKClcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkhvbWUoKVwiIHBUb29sdGlwPVwiSG9tZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlbGNvbWUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQhPSdhdWRpdCcgfHwgbHMuaXNFbXBsb3llcigpXCI+SG9tZTwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJ1wiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiIGNsYXNzPVwiaGlkZS14cyBoaWRlLW1kXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHknIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5JyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmIHV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5IENsYWltJyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiBwVG9vbHRpcD1cIkhpc3RvcnlcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpID09ICdoaXN0b3J5JyA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnXCIgKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdoaXN0b3J5JylcIiBjbGFzcz1cImhpZGUteHMgaGlkZS1tZFwiPkhpc3Rvcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRFbXBsb3llckRhc2hib2FyZFwiIHBUb29sdGlwPVwiRW1wbG95ZXJEYXNoYm9hcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdlbXBsb3llci1kYXNoYm9hcmQnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0VtcGxveWVyKClcIj5BdWRpdCBEYXNoYm9hcmQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdE15UVwiIHBUb29sdGlwPVwiTXlRXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnbXlxJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yTXlRKClcIj5NeVE8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdERhc2hib2FyZFwiIHBUb29sdGlwPVwiRGFzaGJvYXJkXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnZGFzaGJvYXJkJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdERhc2hib2FyZCgpXCI+RGFzaGJvYXJkPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRXb3JrTGlzdFwiIHBUb29sdGlwPVwiV29ya0xpc3RcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXdvcmstbGlzdCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0QXVkaXRvcigpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdG9yV29ya0xpc3QoKVwiPldvcmsgTGlzdDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0SW5xdWlyeVwiIHBUb29sdGlwPVwiSW5xdWlyeVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2lucXVpcnknKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkgfHwgIGxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvcklucXVpcnkoKVwiPklucXVpcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFVwbG9hZERvY3VtZW50c1wiIHBUb29sdGlwPVwiVXBsb2FkIERvY3VtZW50c1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3VwbG9hZC1kb2N1bWVudHMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNFbXBsb3llcigpXCIgKGNsaWNrKT1cIm9wZW5VcGxvYWREb2N1bWVudHMoKVwiPlVwbG9hZCBEb2N1bWVudHM8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFF1ZXN0aW9ubmFpcmVcIiBwVG9vbHRpcD1cIlF1ZXN0aW9ubmFpcmVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNFbXBsb3llcigpKVwiIChjbGljayk9XCJvcGVuUXVlc3Rpb25uYWlyZSgpXCI+UXVlc3Rpb25uYWlyZTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0UmVmZXJyYWxzXCIgcFRvb2x0aXA9XCJSZWZlcnJhbHNcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdyZWZlcnJhbHMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkgfHwgIGxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvclJlZmVycmFscygpXCI+UmVmZXJyYWxzPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRBc3NpZ25cIiBwVG9vbHRpcD1cIkFzc2lnblwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2Fzc2lnbicpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQXNzaWduKClcIj5Bc3NpZ248L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFRlYW1cIiBwVG9vbHRpcD1cIlRlYW1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd0ZWFtJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKClcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JUZWFtKClcIj5UZWFtPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRDb25maWdcIiBwVG9vbHRpcD1cIkNvbmZpZ1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2NvbmZpZycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JDb25maWcoKVwiPkNvbmZpZzwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0QW5hbHl0aWNzXCIgcFRvb2x0aXA9XCJBbmFseXRpY3NcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhbmFseXRpY3MnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JBbmFseXRpY3MoKVwiPkFuYWx5dGljczwvaW9uLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWNvbnRlbnQgaGlkZS14c1wiICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpICYmIGxzLmlzQ3NyKCkgJiYgdGhpcy5jb250ZXh0ICE9J2F1ZGl0JyAmJiBjb250ZXh0Um9vdCA9PT0nc3MnXCI+XHJcbiAgICAgICAgPHAtYXV0b0NvbXBsZXRlIGFwcGVuZFRvPVwiYm9keVwiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIFtzdWdnZXN0aW9uc109XCJyZXN1bHRzXCJcclxuICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggQ2xhaW1hbnRzXCIgKG9uU2VsZWN0KT1cIm9uU2VsZWN0QWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICBlbXB0eU1lc3NhZ2U9XCJObyBSZXN1bHRzIEZvdW5kLlwiIHNpemU9XCIyNVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXVzZXIgcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCIuaW9uLXdyYXBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1c2VyLmZpcnN0TmFtZSB8IHByb3BlckNhc2V9fSB7e3VzZXIubGFzdE5hbWUgfCBwcm9wZXJDYXNlfX08L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplLWF1dG8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD57e3VzZXIudXNlcklkfX08L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplLWF1dG8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD57e3V0aWwubWFza1Nzbih1c2VyLnNzbil9fTwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKClcIiA+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXNlbnRNeVByb2ZpbGVQb3BvdmVyKCRldmVudClcIiBwVG9vbHRpcD1cIkFjY291bnRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpICYmIHNob3dQcm9maWxlUG9wdXAgPyAnaGlkZS14cyBoaWRlLW1kIGhlYWRlci1idXR0b24nIDogKGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgPyAnaGlkZS14cyBoaWRlLW1kJyA6ICcnKVwiPlxyXG4gICAgICAgICAgICA8aW9uLXRpdGxlIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4OyBwYWRkaW5nOiAwcHg7XCIgY2xhc3M9XCJoaWRlLXhzXCI+e3tscy5nZXRGdWxsTmFtZSgpIHwgcHJvcGVyQ2FzZX19PC9pb24tdGl0bGU+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cInBlcnNvbi1jaXJjbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUGFnZSgnY3AnLCAnZG9jdW1lbnRzJylcIiBwVG9vbHRpcD1cIk5vdGljZXNcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAqbmdJZj1cIiFscy5pc0NzcigpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiAhdXRpbC5pc1N0YXRlKCdNRScpXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKSA9PSAnZG9jdW1lbnRzJyA/ICdoZWFkZXItYnV0dG9uIGhpZGUteHMgaGlkZS1tZCcgOiAnaGlkZS14cyBoaWRlLW1kJ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz0ncGkgcGktZmlsZSBmb250LWJvbGQnIHN0eWxlPVwiZm9udC1zaXplOiAxLjNyZW07ICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XCI+PC9pPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2RvY3VtZW50cycpXCIgcFRvb2x0aXA9XCJOb3RpY2VzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKm5nSWY9XCIhbHMuaXNDc3IoKSAmJiBsZWdhY3lNZW51ID09ICd0cnVlJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50LXRleHQtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICBcclxuICAgICAgICA8IS0tIDxpb24tYnV0dG9uIChjbGljayk9XCJwcmVzZW50Sm9iU2VhcmNoUmVzdWx0UG9wdXAoKVwiIHBUb29sdGlwPVwiU2hvdyBqb2Igc2VhcmNoIHJlc3VsdFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgPyAnaGlkZS14cyBoaWRlLW1kJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIHV0aWwuaXNTdGF0ZSgnTVMnKVwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImJyaWVmY2FzZVwiIGZpbGw9XCJvdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+IC0tPlxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJwcmVzZW50TXlOb3RpZmljYXRpb25Qb3BvdmVyKCRldmVudClcIiBwVG9vbHRpcD1cIk5vdGlmaWNhdGlvblwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIW5zLnNob3dOb3RpZmljYXRpb25Mb2FkZXIgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgPyAnaGlkZS14cyBoaWRlLW1kJyA6ICcnXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibm90aWZpY2F0aW9ucy1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPGlvbi1iYWRnZSBjb2xvcj1cImRhcmtcIiAqbmdJZj1cIm5zLm5vdGlmaWNhdGlvbkNvdW50LmdldFZhbHVlKCkgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7bnMubm90aWZpY2F0aW9uQ291bnQuZ2V0VmFsdWUoKX19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgIDwvaW9uLWJhZGdlPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgKm5nSWY9XCJucy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyXCI+PC9pb24tc3Bpbm5lcj5cclxuXHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRoaXMuaHMuc2hvdygpXCIgcFRvb2x0aXA9XCJIZWxwXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIChocy5zaG91bGREaXNwbGF5SGVscEJ1dHRvbigpIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGVscC1jaXJjbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInNlY29uZGFyeVwiICpuZ0lmPVwiIWxzLmlzTG9nZ2VkSW4oKSAmJiBscy5nZXRVc2VyKClcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibG9nb3V0KClcIiBwVG9vbHRpcD1cIkxvZ291dFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvZy1vdXQtc2hhcnBcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIiAqbmdJZj1cInNob3dMYW5ndWFnZU9wdGlvbiA9PT0gJ3RydWUnICYmICghbHMuZ2V0VXNlcigpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJylcIj5cclxuICAgICAgICA8cC1tZW51ICNtZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIml0ZW1zXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIiBwVG9vbHRpcD1cIkxhbmd1YWdlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxhbmd1YWdlXCIgc2xvdD1cImVuZFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuPC9pb24tdG9vbGJhcj5cclxuPGlvbi10b29sYmFyIGNvbG9yPVwibGlnaHRcIiBpZD1cInNlY29uZFRvb2xiYXJcIiAqbmdJZj1cInNlY29uZFRvb2xiYXJcIj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cclxuICAgICAgICA8aW9uLWJhY2stYnV0dG9uIHBUb29sdGlwPVwiQmFja1wiIGFsdD1cIkJhY2tcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbZGVmYXVsdEhyZWZdPVwiYmFja1BhZ2UgPyBiYWNrUGFnZSA6ICcvd2VsY29tZSdcIj48L2lvbi1iYWNrLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiICpuZ0lmPVwidGl0bGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiPnt7dGl0bGV9fTwvaW9uLXRpdGxlPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XHJcbiAgICAgICAgPGlvbi10aXRsZSBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZTogeHgtc21hbGw7IGZsb2F0OiByaWdodDsgcGFkZGluZy1yaWdodDogOHB4O1wiICpuZ0lmPVwicGFnZUlkXCI+XHJcbiAgICAgICAgICAgIHt7cGFnZUlkfX08L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbjwvaW9uLXRvb2xiYXI+XHJcbjxwLXRvYXN0PlxyXG4gICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICdlcnJvcidcIiBjbGFzcz1cInBpIHBpLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnXCIgY2xhc3M9XCJwaSBwaS1jaGVjay1jaXJjbGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICd3YXJuJ1wiIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlXCJzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICdpbmZvJ1wiIGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuXHJcbiAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIic8c3Ryb25nIHN0eWxlPVxcJ2ZvbnQtc2l6ZTogMjJweDtmb250LXdlaWdodDogYm9sZDtcXCc+JyArIG1lc3NhZ2Uuc3VtbWFyeSArICc8L3N0cm9uZz48YnI+PGJyPicgKyBcclxuICAgICAgICAgICAgJzxzcGFuIHN0eWxlPVxcJ2ZvbnQtc2l6ZTogMThweDtcXCc+JyArIG1lc3NhZ2UuZGV0YWlsICsgJzwvc3Bhbj4nXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRvYXN0PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQcm9maWxlUG9wdXBcIj5cclxuICAgIDxhcHAtcHJvZmlsZSAqbmdJZj1cInNob3dQcm9maWxlUG9wdXBcIiAob25DYW5jZWwpPVwic2hvd1Byb2ZpbGVQb3B1cCA9ICFzaG93UHJvZmlsZVBvcHVwXCI+PC9hcHAtcHJvZmlsZT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48YXBwLWpvYi1zZWFyY2gtcmVzdWx0LXBhZ2UgKm5nSWY9XCJzaG93am9iU2VhcmNoUmVzdWx0UG9wdXBcIiAob25DYW5jZWwpPVwic2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwID0gIXNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cFwiPjwvYXBwLWpvYi1zZWFyY2gtcmVzdWx0LXBhZ2U+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
846
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUM0SDs7O0lBQWhHLHlHQUE2RTs7OztJQVF6RyxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFB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cmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IENsYWltYW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhaW1hbnQvQ2xhaW1hbnRNb2RlbCc7XG5pbXBvcnQgeyBNeU5vdGlmaWNhdGlvbnNQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvcG9wb3ZlcnMvbXktbm90aWZpY2F0aW9ucy9teS1ub3RpZmljYXRpb25zLnBhZ2UnO1xuaW1wb3J0IHsgTXlQcm9maWxlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3BvcG92ZXJzL215LXByb2ZpbGUvbXktcHJvZmlsZS5wYWdlJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50L2NsYWltYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwL2hlbHAuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBTZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1F1ZXN0aW9ubmFpcmVGb3JtJztcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGl0L2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0F1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQgIHtcblxuICBpdGVtczogTWVudUl0ZW1bXTtcblxuICBzZWFyY2hUZXh0O1xuXG4gIHJlc3VsdHM6IENsYWltYW50TW9kZWxbXTtcblxuICBjb250ZXh0Um9vdDpzdHJpbmc7XG5cbiAgQElucHV0KCd0aXRsZScpIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwYWdlSWQnKSBwYWdlSWQ6IHN0cmluZztcblxuICBASW5wdXQoJ3NlY29uZFRvb2xiYXInKSBzZWNvbmRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdkaXNwbGF5TG9nbycpIGRpc3BsYXlMb2dvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdzaG93SGlzdG9yeScpIHNob3dIaXN0b3J5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdiYWNrUGFnZScpIGJhY2tQYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdjb250ZXh0JykgY29udGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGxlZ2FjeU1lbnUgPSBMaWJDb25zdGFudHMubGVnYWN5TWVudTtcblxuICBwdWJsaWMgaW50ZXJpbUhvbWVQYWdlID0gTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZTtcblxuICBwdWJsaWMgc2hvd1Byb2ZpbGVQb3B1cCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93TGFuZ3VhZ2VPcHRpb24gPSBMaWJDb25zdGFudHMuZW5hYmxlTGFuZ3VhZ2VDaGFuZ2U7XG5cbiAgc2VhcmNoUXVlc3Rpb25uYWlyZURhdGE6U2VhcmNoUXVlc3Rpb25uYWlyZURhdGFbXTtcbiAgc2VsZWN0ZWRRdWVzdGlvbm5haXJlRGF0YTogU2VhcmNoUXVlc3Rpb25uYWlyZURhdGFbXTtcbiAgYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsOiBBdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWw7XG5cblxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBscyA6IExvZ2luU2VydmljZSwgcHVibGljIHV0aWwgOiBVdGlsU2VydmljZSwgcHVibGljIHIgOiBSb3V0ZXIsIHB1YmxpYyBwb3B1cDogUG9wb3ZlckNvbnRyb2xsZXIsIFxuICAgICAgICAgICAgICBwdWJsaWMgY3MgOiBDbGFpbWFudFNlcnZpY2UsIHByaXZhdGUgbmF2IDogTmF2Q29udHJvbGxlciwgcHVibGljIG1vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgICAgICAgICAgICBwdWJsaWMgbnMgOiBOb3RpZmljYXRpb25TZXJ2aWNlLCBwdWJsaWMgaHM6IEhlbHBTZXJ2aWNlLCBwdWJsaWMgdHJhbnNsYXRlU2VydmljZSA6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcXM6IEF1ZGl0U2VydmljZSkge1xuICAgICAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy90aGlzLmxvYWROb3RpZmljYXRpb25Db3VudCgpO1xuICAgIHRoaXMuc2V0TWVudUl0ZW1zKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpO1xuICAgIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKVxuICAgIHtcbiAgICAgICAgICB0aGlzLmxvYWRFbXBsb3llckRldGFpbHMoKVxuICAgIH1cbiAgICB0aGlzLmNvbnRleHRSb290ID0gdGhpcy5nZXRDb250ZXh0Um9vdCgpO1xuICB9XG4gIFxuICAvKkpvYiBTZWFyY2ggUmVzdWx0IEljb24gUG9wdXBcbiAgIHByZXNlbnRKb2JTZWFyY2hSZXN1bHRQb3B1cCgpIHtcbiAgICBpZih0aGlzLmxzLmlzQ2xhaW1hbnQoKSl7XG4gICAgICB0aGlzLnNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gICovXG4gIGdldENvbnRleHRSb290KCl7XG4gICAgbGV0IHBhcnRzID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG4gICAgbGV0IGNvbnRleHRSb290ID0gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzWzFdIDogJyc7XG4gICAgcmV0dXJuIGNvbnRleHRSb290O1xuICB9XG4gIHNldE1lbnVJdGVtcyhsYW5ndWFnZSA6IHN0cmluZyl7XG4gICAgdGhpcy5pdGVtcyA9IFt7XG4gICAgICBsYWJlbCA6ICdDaG9vc2UgbGFuZ3VhZ2UnLFxuICAgICAgaXRlbXM6IFt7XG4gICAgICAgIGxhYmVsOiAnRW5nbGlzaCcsXG4gICAgICAgIGljb24gOiB0aGlzLmdldEljb24obGFuZ3VhZ2UsJ2VuJyksXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoJ2VuJywgJ0VuZ2xpc2gnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdFc3Bhw6/Cv8K9b2wnLFxuICAgICAgICBpY29uIDogdGhpcy5nZXRJY29uKGxhbmd1YWdlLCdlcycpLFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmd1YWdlKCdlcycsICdlc3Bhw6/Cv8K9b2wnKTtcbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9XTtcbiAgfVxuXG4gIGdldEljb24oc2VsZWN0ZWRMYW5nIDogc3RyaW5nLCBsYW5ndWFnZSA6IHN0cmluZyl7XG4gICAgaWYobGFuZ3VhZ2UgPT0gc2VsZWN0ZWRMYW5nKXtcbiAgICAgIHJldHVybiBcInBpIHBpLWZ3IHBpLWNoZWNrXCI7XG4gICAgfWVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2UgOiBzdHJpbmcsIG5hbWUgOiBzdHJpbmcpe1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZ3VhZ2UpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcbiAgICB0aGlzLnV0aWwudG9hc3QoJ0xhbmd1YWdlIHByZWZlcmVuY2UgY2hhbmdlZCB0byAnICsgbmFtZSk7XG4gICAgdGhpcy5zZXRNZW51SXRlbXMobGFuZ3VhZ2UpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudE15UHJvZmlsZVBvcG92ZXIoZXZlbnQpIHtcblxuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpICYmICAodGhpcy5sZWdhY3lNZW51ID09ICdmYWxzZScgfHwgdGhpcy51dGlsLmlzU3RhdGUoJ01FJykgfHwgKHRoaXMudXRpbC5pc1N0YXRlKCdNUycpICYmIExpYkNvbnN0YW50cy5pbnRlcmltSG9tZVBhZ2UgPT0gJ3RydWUnKSkpe1xuICAgICAgdGhpcy5zaG93UHJvZmlsZVBvcHVwID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBNeVByb2ZpbGVQYWdlLFxuICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjc3NDbGFzczogJ2hlYWRlci1wb3BvdmVyJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHBvcG92ZXIucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudE15Tm90aWZpY2F0aW9uUG9wb3ZlcihldmVudCkge1xuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcHVwLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IE15Tm90aWZpY2F0aW9uc1BhZ2UsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNzc0NsYXNzOiAnaGVhZGVyLXBvcG92ZXInXG4gICAgfSk7XG5cbiAgICBwb3BvdmVyLm9uRGlkRGlzbWlzcygpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5ucy51cGRhdGVSZWFkRmxhZygpO1xuICAgIH0pXG5cbiAgICByZXR1cm4gYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBsb2dvdXQoKXtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJy9sYW5kaW5nJyk7XG4gICAgdGhpcy5scy5sb2dvdXQoKTtcbiAgfVxuXG4gIG9wZW5XZWVrbGllcygpe1xuICAgIGlmKHRoaXMubGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgdGhpcy5pc01TKCkgJiYgdGhpcy5pbnRlcmltSG9tZVBhZ2UgPT0gJ2ZhbHNlJyl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdjcCcsICd2Mi93ZWVrbGllcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2NwJywgJ3YzL3dlZWtsaWVzJylcbiAgICB9XG4gIH1cblxuICBvcGVuQXVkaXREYXNoYm9hcmQoKXtcbiAgICBpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuICAgICAgaWYodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9kYXNoYm9hcmQnKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9teXEnKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnLycpOyAvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgYXVkaXQgZGFzaGJvYXJkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3BlbkF1ZGl0b3JXb3JrTGlzdCgpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3Itd29yay1saXN0Jyk7XG4gIH1cblxuICBvcGVuVXBsb2FkRG9jdW1lbnRzKCl7XG5cbiAgICBpZih0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbClcbiAgICB7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsICcvZW1wbG95ZXItZG9jdW1lbnRzJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5hdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JNeVEoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JJbnF1aXJ5KCl7XG4gICAgIGlmKHRoaXMuY29udGV4dD09J2F1ZGl0Jyl7XG4gICAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKXx8dGhpcy5scy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJykpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci1pbnF1aXJ5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvaW5xdWlyeScpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9yZWZlcnJhbHMnKTtcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUcGEoKSB8fCB0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7Ly9BZ2VuY3kgRW1wbG95ZWUgRGVmYXVsdCAtIGNoZWNrIHJvbGUgd2l0aCBjaWp1XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9uZXctcmVmZXJyYWwnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckNvbmZpZygpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2NvbmZpZycpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBbmFseXRpY3MoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hbmFseXRpY3MnKTtcbiAgICB9XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpICYmICEodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpKXsgXG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWFuYWx5dGljcycpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQXNzaWduKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXNzaWduJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclRlYW0oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy90ZWFtJyk7XG4gIH1cblxuICBvcGVuUXVlc3Rpb25uYWlyZSgpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKTtcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgaWYodGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSlcbiAgICAgIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhID0gdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YTtcbiAgICAgIH1cbiAgICAgIHRoaXMucXMuc2V0UXVlc3Rpb25uYWlyZURhdGEodGhpcy5zZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhKTtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywgJy9hdWRpdG9yLXF1ZXN0aW9ubmFpcmUtZm9ybScsIHtcbiAgICAgICAgc3RhdGU6IHsgYXVkaXQ6IHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgfVxuICAgICAgfSk7Ly9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIHF1ZXN0aW9ubmFpcmVcbiAgICB9XG4gIH1cblxuICBsb2FkRW1wbG95ZXJEZXRhaWxzKClcbiAge1xuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxzLmdldFVzZXIoKVxuXG4gICAgdGhpcy5xcy5zZWFyY2hRdWVzdGlvbm5haXJlKG51bGwsIG51bGwsIG51bGwsdXNlck1vZGVsLnVzZXJuYW1lKVxuICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgPSByZXM7XG4gICAgICB9IFxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoXCJObyBlbXBsb3llciBkYXRhIGZvdW5kXCIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5xcy5maW5kRW1wbG95ZXJEYXRhV2l0aFVzZXJJRCh1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKVxuICAgICAge1xuICAgICAgICB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCA9IHJlcztcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKFwiTm8gZW1wbG95ZXIgZGF0YSBmb3VuZFwiKTtcbiAgICB9KVxuXG4gIH1cbiAgb3BlbkhvbWUoKXtcbiAgICAvL3RoaXMubmF2Lm5hdmlnYXRlUm9vdChcIi93ZWxjb21lXCIpO1xuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSwgXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNDc3IoKSl7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRoaXMudXRpbC5nZXRTZWN1cml0eUFwcENvbnRleHRSb290KCksXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnLycpOy8vQWRkIHRoZSBhY3R1YWwgdXJsIGZvciBlbXBsb3llciBxdWVzdGlvbm5haXJlXG4gICAgICAvL3RoaXMubG9hZEVtcGxveWVyRGV0YWlscygpO1xuICAgIH0gXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCIvd2VsY29tZVwiKTtcbiAgICB9XG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudCkge1xuICAgIGxldCBkb1NlYXJjaCA9IGZhbHNlO1xuICAgIGxldCBjbGFpbWFudFNlYXJjaCA9IG5ldyBDbGFpbWFudE1vZGVsKCk7XG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnkgKyAnJztcbiAgICBpZihxdWVyeS5pbmNsdWRlcyhcIiBcIikpe1xuICAgICAgbGV0IGZOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzBdO1xuICAgICAgbGV0IGxOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzFdO1xuICAgICAgY2xhaW1hbnRTZWFyY2guZmlyc3ROYW1lID0gZk5hbWU7XG4gICAgICBjbGFpbWFudFNlYXJjaC5sYXN0TmFtZSA9IGxOYW1lO1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cblxuICAgIGlmKHF1ZXJ5Lmxlbmd0aCA9PSA5ICYmIHRoaXMuaXNOdW1iZXIocXVlcnkpICYmICFkb1NlYXJjaCl7XG4gICAgICBjbGFpbWFudFNlYXJjaC5zc24gPSBxdWVyeTtcbiAgICAgIGRvU2VhcmNoID0gdHJ1ZTtcbiAgICB9ZWxzZSBpZighdGhpcy5pc051bWJlcihxdWVyeSkgJiYgIWRvU2VhcmNoKXtcbiAgICAgIGNsYWltYW50U2VhcmNoLnVzZXJJZCA9IHF1ZXJ5O1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZihkb1NlYXJjaCl7XG4gICAgICB0aGlzLmNzLnNlYXJjaChjbGFpbWFudFNlYXJjaCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMucmVzdWx0cyA9IGRhdGE7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVtYmVyKG51bSl7XG4gICAgcmV0dXJuICFpc05hTihudW0pO1xuICB9XG5cbiAgb25TZWxlY3RBY3Rpb24oZXZlbnQgOiBBdXRvQ29tcGxldGVTZWxlY3RFdmVudCl7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xuICAgIHRoaXMuY3MuZ2V0Q2xhaW1hbnQoKS5uZXh0KGV2ZW50LnZhbHVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSxcInJlc2V0LXBhc3N3b3JkXCIsIHRoaXMubmF2KTtcbiAgICAgIC8vdGhpcy5uYXYubmF2aWdhdGVGb3J3YXJkKCcvcmVzZXQtcGFzc3dvcmQnKTtcbiAgICB9LCA1MDApXG4gICAgXG4gIH1cblxuICBvcGVuQmVuZWZpdHNBcHAoKXtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xuICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy5iZW5lZml0c1VybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gIH1cblxuICBvcGVuUGFnZShjb250ZXh0Um9vdCwgdXJpLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKXtcbiAgICBsZXQgY3VycmVudENvbnRleHRSb290ID0gdGhpcy51dGlsLmdldENvbnRleHRSb290KCk7XG4gICAgbGV0IHRhcmdldCA9IGAvJHtjb250ZXh0Um9vdH1gO1xuXG4gICAgaWYoY3VycmVudENvbnRleHRSb290ID09IHRhcmdldCl7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoYC8ke3VyaX1gLCBleHRyYXMpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0YXJnZXQsIHVyaSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3MobmFtZSl7XG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuci51cmwucmVwbGFjZSgnLycsICcnKTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50Um91dGUsIG5hbWUsIGN1cnJlbnRSb3V0ZSA9PSBuYW1lKTtcbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09IG5hbWUgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJztcbiAgfVxuXG4gIG9wZW5Db250ZXh0SGVscCgpe1xuXG4gIH1cblxuICBhc3luYyBjaGFuZ2VMYW5ndWFnZShldmVudCkge1xuICAgIFxuICB9XG59XG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwidXRpbC5sb2FkZXIudmFsdWUkIHwgYXN5bmNcIiAqbmdJZj1cIih1dGlsLmxvYWRlci52YWx1ZSQgfCBhc3luYykgIT0gMFwiPlxyXG48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjxpb24tdG9vbGJhcj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNXB4O1wiPlxyXG4gICAgICAgIDxpb24tbWVudS1idXR0b24gYXV0b0hpZGU9XCJmYWxzZVwiIHBUb29sdGlwPVwiTWVudVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhsIGhpZGUtbGcnIDogJydcIj48L2lvbi1tZW51LWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgW25nQ2xhc3NdPVwiZGlzcGxheUxvZ28gPyAnaGVhZGVyX2J1dHRvbl93aGl0ZScgOiAnaGVhZGVyX2J1dHRvbiBoaWRlLXhzIGhpZGUtbWQnXCIgKGNsaWNrKT1cIm9wZW5BdWRpdERhc2hib2FyZCgpXCI+XHJcbiAgICAgICAgPGltZyBhbHQ9XCJsb2dvXCIgcFRvb2x0aXA9XCJ7eydSZUVtcGxveU1TIExvZ28nIHwgdHJhbnNsYXRlfX1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICBzcmM9XCJhc3NldHMvaWNvbi9SZUVtcGxveXt7dXRpbC5nZXRTdGF0ZSgpfX0uc3ZnXCIgW25nQ2xhc3NdPVwiZGlzcGxheUxvZ28gPyAnaGVhZGVyX2xvZ28nIDogJ2hlYWRlcl9sb2dvIGhpZGUteHMgaGlkZS1tZCdcIi8+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5Ib21lKClcIiBwVG9vbHRpcD1cIkhvbWVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd3ZWxjb21lJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0IT0nYXVkaXQnIHx8IGxzLmlzRW1wbG95ZXIoKVwiPkhvbWU8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuRmlsZVdlZWtsaWVzXCIgcFRvb2x0aXA9XCJ7eydoZWFkZXIud2Vla2x5LnRvb2x0aXAnIHwgdHJhbnNsYXRlfX1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd3ZWVrbGllcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZSdcIiAoY2xpY2spPVwib3BlbldlZWtsaWVzKClcIiBjbGFzcz1cImhpZGUteHMgaGlkZS1tZFwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5JyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiAoY2xpY2spPVwib3BlbldlZWtsaWVzKClcIj57e2xlZ2FjeU1lbnUgPT0gJ3RydWUnID8gJ1dlZWtseScgOiAnV2Vla2x5J319PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuRmlsZVdlZWtsaWVzXCIgcFRvb2x0aXA9XCJ7eydoZWFkZXIud2Vla2x5LnRvb2x0aXAnIHwgdHJhbnNsYXRlfX1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd3ZWVrbGllcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICd0cnVlJyAmJiB1dGlsLmlzU3RhdGUoJ01FJylcIiAoY2xpY2spPVwib3BlbldlZWtsaWVzKClcIj57e2xlZ2FjeU1lbnUgPT0gJ3RydWUnID8gJ1dlZWtseSBDbGFpbScgOiAnV2Vla2x5J319PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgPGlvbi1idXR0b24gcFRvb2x0aXA9XCJIaXN0b3J5XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKSA9PSAnaGlzdG9yeScgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBpbnRlcmltSG9tZVBhZ2UgPT0gJ2ZhbHNlJ1wiIChjbGljayk9XCJvcGVuUGFnZSgnY3AnLCAnaGlzdG9yeScpXCIgY2xhc3M9XCJoaWRlLXhzIGhpZGUtbWRcIj5IaXN0b3J5PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0RW1wbG95ZXJEYXNoYm9hcmRcIiBwVG9vbHRpcD1cIkVtcGxveWVyRGFzaGJvYXJkXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnZW1wbG95ZXItZGFzaGJvYXJkJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNFbXBsb3llcigpXCI+QXVkaXQgRGFzaGJvYXJkPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRNeVFcIiBwVG9vbHRpcD1cIk15UVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ215cScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvck15USgpXCI+TXlRPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXREYXNoYm9hcmRcIiBwVG9vbHRpcD1cIkRhc2hib2FyZFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2Rhc2hib2FyZCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKXx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuQXVkaXREYXNoYm9hcmQoKVwiPkRhc2hib2FyZDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0V29ya0xpc3RcIiBwVG9vbHRpcD1cIldvcmtMaXN0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXVkaXRvci13b3JrLWxpc3QnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKVwiIChjbGljayk9XCJvcGVuQXVkaXRvcldvcmtMaXN0KClcIj5Xb3JrIExpc3Q8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdElucXVpcnlcIiBwVG9vbHRpcD1cIklucXVpcnlcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdpbnF1aXJ5JykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpIHx8ICBscy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJylcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JJbnF1aXJ5KClcIj5JbnF1aXJ5PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRVcGxvYWREb2N1bWVudHNcIiBwVG9vbHRpcD1cIlVwbG9hZCBEb2N1bWVudHNcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd1cGxvYWQtZG9jdW1lbnRzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzRW1wbG95ZXIoKVwiIChjbGljayk9XCJvcGVuVXBsb2FkRG9jdW1lbnRzKClcIj5VcGxvYWQgRG9jdW1lbnRzPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRRdWVzdGlvbm5haXJlXCIgcFRvb2x0aXA9XCJRdWVzdGlvbm5haXJlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXVkaXRvci1xdWVzdGlvbm5haXJlJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzRW1wbG95ZXIoKSlcIiAoY2xpY2spPVwib3BlblF1ZXN0aW9ubmFpcmUoKVwiPlF1ZXN0aW9ubmFpcmU8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFJlZmVycmFsc1wiIHBUb29sdGlwPVwiUmVmZXJyYWxzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygncmVmZXJyYWxzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpIHx8ICBscy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJylcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKVwiPlJlZmVycmFsczwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0QXNzaWduXCIgcFRvb2x0aXA9XCJBc3NpZ25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhc3NpZ24nKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckFzc2lnbigpXCI+QXNzaWduPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRUZWFtXCIgcFRvb2x0aXA9XCJUZWFtXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygndGVhbScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yVGVhbSgpXCI+VGVhbTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0Q29uZmlnXCIgcFRvb2x0aXA9XCJDb25maWdcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdjb25maWcnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQ29uZmlnKClcIj5Db25maWc8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEFuYWx5dGljc1wiIHBUb29sdGlwPVwiQW5hbHl0aWNzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYW5hbHl0aWNzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQW5hbHl0aWNzKClcIj5BbmFseXRpY3M8L2lvbi1idXR0b24+XHJcblxyXG5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci1jb250ZW50IGhpZGUteHNcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKSAmJiBscy5pc0NzcigpICYmIHRoaXMuY29udGV4dCAhPSdhdWRpdCcgJiYgY29udGV4dFJvb3QgPT09J3NzJ1wiPlxyXG4gICAgICAgIDxwLWF1dG9Db21wbGV0ZSBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBbc3VnZ2VzdGlvbnNdPVwicmVzdWx0c1wiXHJcbiAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENsYWltYW50c1wiIChvblNlbGVjdCk9XCJvblNlbGVjdEFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiTm8gUmVzdWx0cyBGb3VuZC5cIiBzaXplPVwiMjVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC11c2VyIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwiLmlvbi13cmFwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXNlci5maXJzdE5hbWUgfCBwcm9wZXJDYXNlfX0ge3t1c2VyLmxhc3ROYW1lIHwgcHJvcGVyQ2FzZX19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1c2VyLnVzZXJJZH19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1dGlsLm1hc2tTc24odXNlci5zc24pfX08L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpXCIgPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJwcmVzZW50TXlQcm9maWxlUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJBY2NvdW50XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSAmJiBzaG93UHJvZmlsZVBvcHVwID8gJ2hpZGUteHMgaGlkZS1tZCBoZWFkZXItYnV0dG9uJyA6IChsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgPGlvbi10aXRsZSBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMHB4O1wiIGNsYXNzPVwiaGlkZS14c1wiPnt7bHMuZ2V0RnVsbE5hbWUoKSB8IHByb3BlckNhc2V9fTwvaW9uLXRpdGxlPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb24tY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2RvY3VtZW50cycpXCIgcFRvb2x0aXA9XCJOb3RpY2VzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKm5nSWY9XCIhbHMuaXNDc3IoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykgPT0gJ2RvY3VtZW50cycgPyAnaGVhZGVyLWJ1dHRvbiBoaWRlLXhzIGhpZGUtbWQnIDogJ2hpZGUteHMgaGlkZS1tZCdcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9J3BpIHBpLWZpbGUgZm9udC1ib2xkJyBzdHlsZT1cImZvbnQtc2l6ZTogMS4zcmVtOyAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1wiPjwvaT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdkb2N1bWVudHMnKVwiIHBUb29sdGlwPVwiTm90aWNlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwiIWxzLmlzQ3NyKCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC10ZXh0LW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKClcIiBwVG9vbHRpcD1cIlNob3cgam9iIHNlYXJjaCByZXN1bHRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiB1dGlsLmlzU3RhdGUoJ01TJylcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJicmllZmNhc2VcIiBmaWxsPVwib3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudE15Tm90aWZpY2F0aW9uUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJOb3RpZmljYXRpb25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFucy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm5vdGlmaWNhdGlvbnMtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYXJrXCIgKm5nSWY9XCJucy5ub3RpZmljYXRpb25Db3VudC5nZXRWYWx1ZSgpID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57e25zLm5vdGlmaWNhdGlvbkNvdW50LmdldFZhbHVlKCl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICA8L2lvbi1iYWRnZT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiICpuZ0lmPVwibnMuc2hvd05vdGlmaWNhdGlvbkxvYWRlclwiPjwvaW9uLXNwaW5uZXI+XHJcblxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0aGlzLmhzLnNob3coKVwiIHBUb29sdGlwPVwiSGVscFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiAoaHMuc2hvdWxkRGlzcGxheUhlbHBCdXR0b24oKSB8IGFzeW5jKVwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzZWNvbmRhcnlcIiAqbmdJZj1cIiFscy5pc0xvZ2dlZEluKCkgJiYgbHMuZ2V0VXNlcigpXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgcFRvb2x0aXA9XCJMb2dvdXRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2ctb3V0LXNoYXJwXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJzaG93TGFuZ3VhZ2VPcHRpb24gPT09ICd0cnVlJyAmJiAoIWxzLmdldFVzZXIoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgPHAtbWVudSAjbWVudSBbcG9wdXBdPVwidHJ1ZVwiIFttb2RlbF09XCJpdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCIgcFRvb2x0aXA9XCJMYW5ndWFnZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsYW5ndWFnZVwiIHNsb3Q9XCJlbmRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbjwvaW9uLXRvb2xiYXI+XHJcbjxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCIgaWQ9XCJzZWNvbmRUb29sYmFyXCIgKm5nSWY9XCJzZWNvbmRUb29sYmFyXCI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgICAgPGlvbi1iYWNrLWJ1dHRvbiBwVG9vbHRpcD1cIkJhY2tcIiBhbHQ9XCJCYWNrXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW2RlZmF1bHRIcmVmXT1cImJhY2tQYWdlID8gYmFja1BhZ2UgOiAnL3dlbGNvbWUnXCI+PC9pb24tYmFjay1idXR0b24+XHJcbiAgICAgICAgPGlvbi10aXRsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cInRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHhcIj57e3RpdGxlfX08L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgIDxpb24tdGl0bGUgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IHh4LXNtYWxsOyBmbG9hdDogcmlnaHQ7IHBhZGRpbmctcmlnaHQ6IDhweDtcIiAqbmdJZj1cInBhZ2VJZFwiPlxyXG4gICAgICAgICAgICB7e3BhZ2VJZH19PC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG48L2lvbi10b29sYmFyPlxyXG48cC10b2FzdD5cclxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnZXJyb3InXCIgY2xhc3M9XCJwaSBwaS10aW1lcy1jaXJjbGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICdzdWNjZXNzJ1wiIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnd2FybidcIiBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwic3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnaW5mbydcIiBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcblxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCInPHN0cm9uZyBzdHlsZT1cXCdmb250LXNpemU6IDIycHg7Zm9udC13ZWlnaHQ6IGJvbGQ7XFwnPicgKyBtZXNzYWdlLnN1bW1hcnkgKyAnPC9zdHJvbmc+PGJyPjxicj4nICsgXHJcbiAgICAgICAgICAgICc8c3BhbiBzdHlsZT1cXCdmb250LXNpemU6IDE4cHg7XFwnPicgKyBtZXNzYWdlLmRldGFpbCArICc8L3NwYW4+J1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b2FzdD5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCI+XHJcbiAgICA8YXBwLXByb2ZpbGUgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dQcm9maWxlUG9wdXAgPSAhc2hvd1Byb2ZpbGVQb3B1cFwiPjwvYXBwLXByb2ZpbGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlICpuZ0lmPVwic2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA9ICFzaG93am9iU2VhcmNoUmVzdWx0UG9wdXBcIj48L2FwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlPlxyXG5cclxuXHJcblxyXG4iXX0=
|
|
@@ -36,7 +36,7 @@ export class AuditService extends BaseService {
|
|
|
36
36
|
return this.get(`questionnaire/search?` + eanQueryString + feinQueryString + employerNameQueryString + userIdQueryString);
|
|
37
37
|
}
|
|
38
38
|
findEmployerDataWithUserID(employerName) {
|
|
39
|
-
return this.get(`
|
|
39
|
+
return this.get(`employer/employer-ean?username=${employerName}`);
|
|
40
40
|
}
|
|
41
41
|
static { this.ɵfac = function AuditService_Factory(t) { return new (t || AuditService)(i0.ɵɵinject(i1.HttpClient)); }; }
|
|
42
42
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuditService, factory: AuditService.ɵfac, providedIn: 'root' }); }
|
|
@@ -47,4 +47,4 @@ export class AuditService extends BaseService {
|
|
|
47
47
|
providedIn: 'root'
|
|
48
48
|
}]
|
|
49
49
|
}], () => [{ type: i1.HttpClient }], null); })();
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvYXVkaXQvYXVkaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQU85QyxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUFDeEMsWUFBb0IsSUFBZ0I7UUFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRFMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUV2QyxDQUFDO0lBSUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO0lBQy9ELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUMsQ0FBQywwQkFBMEI7SUFHNUIsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsaUJBQWlCO0lBRWpCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxFQUE0QjtRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFvQixFQUFDLElBQXNCLEVBQUMsWUFBb0IsRUFBRSxNQUFjO1FBQ2xHLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQSxDQUFDLENBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDO1FBQzFDLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQSxDQUFDLENBQUEsUUFBUSxJQUFJLEdBQUcsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDO1FBQzlDLElBQUksdUJBQXVCLEdBQUcsWUFBWSxDQUFBLENBQUMsQ0FBQSxnQkFBZ0IsWUFBWSxHQUFHLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQztRQUM5RSxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUEsVUFBVSxNQUFNLEdBQUcsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBNEIsdUJBQXVCLEdBQUMsY0FBYyxHQUFDLGVBQWUsR0FBQyx1QkFBdUIsR0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9JLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxZQUFvQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQWlDLGtDQUFrQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRXRHLENBQUM7NkVBL0NVLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTs7aUZBRVAsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFkZHJlc3NDb21wb25lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BZGRyZXNzQ29tcG9uZW50TW9kZWwnO1xyXG5pbXBvcnQgeyBCYW5rRGV0YWlsc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0JhbmtEZXRhaWxzTW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvRmlsZU1vZGVsJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlRm9ybSc7XHJcbmltcG9ydCB7IEF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2V7XHJcbiAgICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICBzdXBlcihodHRwKTtcclxuICB9XHJcblxyXG4gICAgcXVlc3Rpb25uYWlyZURhdGE6U2VhcmNoUXVlc3Rpb25uYWlyZURhdGFbXTtcclxuXHJcbiAgc2V0U2VydmljZUNvbnRleHQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VDb250ZXh0ID0gTGliQ29uc3RhbnRzLnRheF9hdWRpdF9zZXJ2aWNlLmNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBzZXRTZXJ2aWNlSG9zdCgpIHtcclxuICAgIHRoaXMuaG9zdCA9IExpYkNvbnN0YW50cy50YXhfYXVkaXRfc2VydmljZS5ob3N0O1xyXG4gIH1cclxuXHJcbiAgc2V0U2VydmljZVBvcnQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VQb3J0ID0gTGliQ29uc3RhbnRzLnRheF9hdWRpdF9zZXJ2aWNlLnBvcnQ7XHJcbiAgfVxyXG5cclxuICBzZXRTZXJ2aWNlUHJvdG9jb2woKSB7XHJcbiAgICB0aGlzLnByb3RvY29sID0gTGliQ29uc3RhbnRzLnRheF9hdWRpdF9zZXJ2aWNlLnByb3RvY29sO1xyXG4gIH0gLy9wcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuXHJcbiAgXHJcbiAgZ2V0Q29ycklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbW1vbi9jb3JyaWQnKVxyXG4gIH1cclxuXHJcbiAgc2F2ZVF1ZXN0aW9ubmFpcmUoKXtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRRdWVzdGlvbm5haXJlRGF0YShxZDpTZWFyY2hRdWVzdGlvbm5haXJlRGF0YVtdKXtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZURhdGEgPSBxZDtcclxuICB9XHJcblxyXG4gIHNlYXJjaFF1ZXN0aW9ubmFpcmUoZWFuPzpzdHJpbmcgfCBudW1iZXIsZmVpbj8gOnN0cmluZyB8IG51bWJlcixlbXBsb3llck5hbWU/OnN0cmluZywgdXNlcklkPzpzdHJpbmcpe1xyXG4gICAgbGV0IGVhblF1ZXJ5U3RyaW5nID0gZWFuP2BlYW49JHtlYW59JmA6YGA7XHJcbiAgICBsZXQgZmVpblF1ZXJ5U3RyaW5nID0gZmVpbj9gZmVpbj0ke2ZlaW59JmA6YGA7XHJcbiAgICBsZXQgZW1wbG95ZXJOYW1lUXVlcnlTdHJpbmcgPSBlbXBsb3llck5hbWU/YGVtcGxveWVyTmFtZT0ke2VtcGxveWVyTmFtZX0mYDpgYDtcclxuICAgIGxldCB1c2VySWRRdWVyeVN0cmluZyA9IHVzZXJJZD9gdXNlcklkPSR7dXNlcklkfSZgOmBgO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0PFNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhW10+KGBxdWVzdGlvbm5haXJlL3NlYXJjaD9gK2VhblF1ZXJ5U3RyaW5nK2ZlaW5RdWVyeVN0cmluZytlbXBsb3llck5hbWVRdWVyeVN0cmluZyt1c2VySWRRdWVyeVN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBmaW5kRW1wbG95ZXJEYXRhV2l0aFVzZXJJRChlbXBsb3llck5hbWU/OnN0cmluZyl7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldDxBdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWw+KGBlbXBsb3llci9lbXBsb3llci1lYW4/dXNlcm5hbWU9JHtlbXBsb3llck5hbWV9YCk7XHJcbiAgICAgXHJcbiAgfVxyXG5cclxufSJdfQ==
|
|
@@ -105,6 +105,12 @@ export class UtilService {
|
|
|
105
105
|
this.msgService.add({ severity: 'error', summary: 'Error', detail: errDtl.msg, life: LibConstants.errorMessagePopupLife, id: errDtl.errorId });
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
+
customPopupMessage(severity, summary, message, duration, id) {
|
|
109
|
+
console.log("this is called");
|
|
110
|
+
this.msgs.push({ severity: severity, summary: summary, detail: message });
|
|
111
|
+
this.msgService.clear();
|
|
112
|
+
this.msgService.add({ severity: severity, summary: summary, detail: message, life: duration || LibConstants.errorMessagePopupLife, id: id });
|
|
113
|
+
}
|
|
108
114
|
async success(msg) {
|
|
109
115
|
this.msgs = [];
|
|
110
116
|
this.msgs.push({ severity: 'success', summary: 'Success', detail: msg });
|
|
@@ -511,4 +517,4 @@ export class UtilService {
|
|
|
511
517
|
providedIn: 'root'
|
|
512
518
|
}]
|
|
513
519
|
}], () => [{ type: i1.AlertController }, { type: i2.HttpClient }, { type: i1.LoadingController }, { type: i1.ToastController }, { type: i3.MessageService }, { type: i4.NgxSpinnerService }, { type: i5.LoadingBarService }, { type: i6.LoggerService }, { type: i7.Router }, { type: i8.Title }, { type: i7.ActivatedRoute }, { type: i9.TourService }, { type: i1.Platform }], null); })();
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBYyxXQUFXLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQWdDLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUs1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQWtCLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxXQUFXO0lBV3RCLFlBQW1CLGVBQWdDLEVBQVMsVUFBc0IsRUFBUyxFQUFzQixFQUM5RixlQUFnQyxFQUFTLFVBQTBCLEVBQVUsT0FBMEIsRUFDdkcsTUFBeUIsRUFBVSxNQUFxQixFQUFVLE1BQWMsRUFDL0UsWUFBbUIsRUFBVSxFQUFrQixFQUFVLFdBQXdCLEVBQ2pGLFFBQWtCO1FBSm5CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUM5RixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQ3ZHLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDL0UsaUJBQVksR0FBWixZQUFZLENBQU87UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2pGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFidEMsZUFBVSxHQUFHLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFak0sK0JBQStCO1FBQ3hCLFNBQUksR0FBYyxFQUFFLENBQUM7UUFFNUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLFlBQU8sR0FBSSxJQUFJLENBQUM7UUFPZCxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFFBQVEsRUFBRSxrQkFBa0I7U0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFZO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDOUMsT0FBTyxFQUFFLEdBQUc7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNkLENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFZO1FBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDOUMsT0FBTyxFQUFFLEdBQUc7WUFDWixLQUFLLEVBQUUsUUFBUTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ2QsQ0FBQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVk7UUFDcEIsSUFBSSxNQUFNLEdBQWdCLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQW1CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQztZQUNoQixvSkFBb0o7WUFDcEosSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEVBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7U0FDN0k7YUFBSTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxFQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1NBQzdJO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRyxTQUFTLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBQyxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsdUJBQXVCLEVBQUMsQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRztRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsR0FBRyxDQUFJLFFBQWlCLEVBQUUsT0FXekIsRUFBRSxXQUFxQjtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxJQUFJLENBQUksR0FBVyxFQUFFLElBQWdCLEVBQUUsT0FXcEMsRUFBRSxXQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEksQ0FBQztJQUVELFlBQVksQ0FBSSxHQUFXLEVBQUUsSUFBZ0IsRUFBRSxPQVc5QyxFQUFFLFdBQXFCO1FBQ3ZCLCtCQUErQjtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsTUFBTSxDQUFJLEdBQVcsRUFBRSxPQVd0QixFQUFFLFdBQXFCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELEtBQUssQ0FBSSxHQUFXLEVBQUUsSUFBZ0IsRUFBRSxPQVd6QyxFQUFFLFdBQXFCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBaUIsRUFBRSxXQUFvQjtRQUM1QyxJQUFHLFdBQVcsRUFBQztZQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLFdBQVcsR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztTQUNqRzthQUFJO1lBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLEVBQUU7Z0JBQzNCLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWTtnQkFDM0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ3BIO0lBQ0gsQ0FBQztJQUVILEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUMsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7UUFRSTtJQUNKLG9CQUFvQixDQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsUUFBUTtRQUMzQyxJQUFJLE1BQU0sR0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFDLE1BQU0sR0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFDLE1BQU0sR0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFDLElBQUksR0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFDLEdBQUcsR0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUVqQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFFYixRQUFRLFFBQVEsRUFBRTtZQUNkLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25FLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxDQUNsQixDQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFFOztvQkFFakQsQ0FBRSxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBRSxDQUN4RCxDQUFDO1lBQ0YsS0FBSyxPQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25ELEtBQUssTUFBUyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNsRCxLQUFLLE9BQVMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbkQsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRDs7Ozs7UUFLSTtJQUNKLHVCQUF1QixDQUFDLElBQVc7UUFDakMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTlCLElBQUksWUFBWSxHQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDL0MsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7UUFNSTtJQUNKLGNBQWMsQ0FBQyxLQUFLO1FBQ2xCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztRQU1JO0lBQ0osaUJBQWlCLENBQUMsS0FBSztRQUNyQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQUs7UUFDNUIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFNO1FBQzVCLE1BQU0sR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxJQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ25CLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztNQUtFO0lBQ0YsY0FBYyxDQUFDLE1BQU07UUFDbkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7TUFLRTtJQUNGLGFBQWEsQ0FBQyxLQUFLO1FBQ2pCLElBQUksR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLDBKQUEwSixDQUFDLENBQUM7UUFDakwsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBeUIsRUFBRSxZQUFrRDtRQUN6RixPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBeUI7UUFDdkMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUF5QjtRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVc7SUFDWCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLEtBQXVCO1FBQzVELE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDbEIsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsNERBQTREO1lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhDLHdGQUF3RjtZQUN4RixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQXdCO1FBQ3BELE1BQU0sUUFBUSxHQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsOENBQThDO1FBQ3RHLE1BQU0sZUFBZSxHQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7UUFDM0gsK0JBQStCO1FBQy9CLElBQUksUUFBUSxLQUFLLGVBQWUsRUFBRTtZQUNoQyx3RUFBd0U7WUFDeEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVk7UUFDcEIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUVwQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBWTtRQUNsQixPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWMsRUFBRSxVQUFtQjtRQUN0QyxJQUFHLENBQUMsS0FBSyxFQUFDO1lBQ1IsT0FBTztTQUNSO1FBQ0QsSUFBRyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBQztZQUMzQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixLQUFJLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRyxLQUFLLElBQUksVUFBVSxFQUFHLEtBQUssRUFBRSxFQUFDO2dCQUNoRCxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUNqQjtZQUNELE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQ3JFO2FBQUk7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRU0sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDMUIsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLEdBQUcsWUFBWSxlQUFlLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyw4QkFBOEI7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlO2FBQzNEO1lBQ0QsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjthQUNyRztZQUNELElBQUksR0FBRyxZQUFZLGFBQWEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFRO1FBQzNCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsTUFBTSxzRUFBc0UsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1NBQ2hIO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7UUFNSTtJQUNKLGNBQWM7UUFDWixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUdELHFCQUFxQixDQUFDLE9BQWUsRUFBRSxHQUFXLEVBQUUsR0FBbUI7UUFDckUsSUFBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDMUIsT0FBTyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7U0FDekI7UUFDRCxJQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFDO1lBQ2hELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxHQUFHLEVBQUUsRUFBRyxPQUFPLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRCxxQ0FBcUMsQ0FBQyxPQUFlLEVBQUUsR0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBbUI7UUFDMUcsSUFBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDMUIsT0FBTyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7U0FDekI7UUFDRCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDcEIsU0FBUyxHQUFHLEdBQUcsQ0FBQztTQUNqQjtRQUNELElBQUcsSUFBSSxFQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlCLElBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUM7Z0JBQ2hELEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxRztpQkFBTTtnQkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksR0FBRyxHQUFHLFNBQVMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZJO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUNuQyxJQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFDO2dCQUNoRCxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsU0FBUyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxHQUFHLEdBQUcsU0FBUyxTQUFTLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3BHO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsNkJBQTZCLENBQUMsT0FBZSxFQUFFLEdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBbUI7UUFDbkYsSUFBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDMUIsT0FBTyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7U0FDekI7UUFDRCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDcEIsU0FBUyxHQUFHLEdBQUcsQ0FBQztTQUNqQjtRQUNELElBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUM7WUFDaEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDN0U7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxHQUFHLEdBQUcsU0FBUyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBQyxPQUFPLENBQUMsQ0FBQztTQUMxRztJQUNILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxLQUFjO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFjO1FBQ3RCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUNuQixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BHO1FBQ0QsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxZQUFZLENBQUMsMEJBQTBCLElBQUksTUFBTSxDQUFDO0lBQzNELENBQUM7SUFFRCxzQ0FBc0M7UUFDcEMsT0FBTyxZQUFZLENBQUMsc0NBQXNDLElBQUksTUFBTSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBYztRQUMxQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUN0RCxDQUFDO1FBRUYsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDdkQsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3BCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNqQjtZQUVELDhCQUE4QjtZQUM5QixJQUFJLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNwRSxJQUFJLGlCQUFpQixFQUFFO2dCQUNyQixJQUFJLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLGlCQUFpQixFQUFFO29CQUNyQixpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDM0I7YUFDRjtZQUNELDRCQUE0QjtTQUM3QjtJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDZixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzthQUNuQixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzthQUNuQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVc7UUFDckMsTUFBTSxLQUFLLEdBQUcsS0FBSzthQUNoQixLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxLQUFLLElBQUksR0FBRyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZSxFQUFFLEdBQVc7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLE9BQU87YUFDWCxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7NEVBN2xCWSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBMb2FkaW5nQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciwgUGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgTmd4U3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcbmltcG9ydCB7IExvYWRpbmdCYXJTZXJ2aWNlIH0gZnJvbSAnQG5neC1sb2FkaW5nLWJhci9jb3JlJztcbmltcG9ydCB7IEVycm9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JNb2RlbCc7XG5pbXBvcnQgeyBnZXRCYXNlVXJsLCBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRpb25FbmQsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBUb3VyU2VydmljZSB9IGZyb20gJy4uL3RvdXIvdG91ci5zZXJ2aWNlJztcblxuZGVjbGFyZSBsZXQgZ3RhZzogYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsU2VydmljZSB7XG5cbiAgZm9jdXNhYmxlcyA9IFtcInBpbnB1dHRleHRcIiwgXCJwLWlucHV0bWFza1wiLCBcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIiwgXCJwLWNhbGVuZGFyXCIsIFwicmFkaW9cIiwgXCJwLWRyb3Bkb3duXCIsIFwicC1zZWxlY3RCdXR0b25cIiwgXCJwLWF1dG9jb21wbGV0ZVwiLCBcInAtcGFzc3dvcmRcIixcInAtY2hlY2tib3hcIiwgXCJwLWlucHV0dGV4dGFyZWFcIl07XG5cbiAgLypUbyBkaXNwbGF5IHZhcmlvdXMgbWVzc2FnZXMqL1xuICBwdWJsaWMgbXNnczogTWVzc2FnZVtdID0gW107XG5cbiAgb3B0aW9ucyA9IHt9O1xuXG4gIGxvYWRpbmcgID0gbnVsbDtcbiAgXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhbGVydENvbnRyb2xsZXI6IEFsZXJ0Q29udHJvbGxlciwgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyBsYyA6IExvYWRpbmdDb250cm9sbGVyLCBcbiAgICAgICAgICAgICAgcHVibGljIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLCBwdWJsaWMgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgc3Bpbm5lcjogTmd4U3Bpbm5lclNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyBsb2FkZXI6IExvYWRpbmdCYXJTZXJ2aWNlLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgXG4gICAgICAgICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSwgcHJpdmF0ZSBhcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgdG91clNlcnZpY2U6IFRvdXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSkgeyBcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgXCJBY2NlcHRcIjogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gICAgdGhpcy5vcHRpb25zID0geyBoZWFkZXJzOiBoZWFkZXJzIH07XG4gIH1cblxuICBhc3luYyB0b2FzdChtc2cgOiBzdHJpbmcpe1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAga2V5Ym9hcmRDbG9zZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEb25lJyxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudFRvYXN0KG1zZyA6IHN0cmluZykge1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAga2V5Ym9hcmRDbG9zZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEb25lJyxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG5cbiAgYmFzZVVybCgpIDogc3RyaW5ne1xuICAgIHJldHVybiBnZXRCYXNlVXJsKCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50QWxlcnQoaGVhZGVyLCBzdWJNc2csIGVyckR0bCkge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogaGVhZGVyLFxuICAgICAgc3ViSGVhZGVyOiBzdWJNc2csXG4gICAgICBtZXNzYWdlOiBlcnJEdGwsXG4gICAgICBidXR0b25zOiBbJ09LJ11cbiAgICB9KTtcblxuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG4gIGVycm9yKGhlYWRlciwgc3ViTXNnLCBlcnJEdGwpe1xuICAgIHRoaXMucHJlc2VudEFsZXJ0KGhlYWRlciwgc3ViTXNnLCBlcnJEdGwpO1xuICB9XG5cbiAgc2hvd0Vycm9yKG1zZyA6IHN0cmluZyl7XG4gICAgbGV0IGVyckR0bCA6IEVycm9yTW9kZWwgPSBuZXcgRXJyb3JNb2RlbCgpO1xuICAgIGVyckR0bC5tc2cgPSBtc2c7XG4gICAgdGhpcy5lcnJvck1zZyhlcnJEdGwpO1xuICB9XG5cbiAgZXJyb3JNc2coZXJyRHRsIDogRXJyb3JNb2RlbCl7XG4gICAgdGhpcy5tc2dzLnB1c2goe3NldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5IDogJ0Vycm9yJywgZGV0YWlsIDogZXJyRHRsLm1zZ30pO1xuICAgIHRoaXMubXNnU2VydmljZS5jbGVhcigpO1xuICAgIGlmKGVyckR0bC5lcnJvcklkKXtcbiAgICAgIC8vdGhpcy5tc2dTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6J2Vycm9yJywgc3VtbWFyeTonRXJyb3InLCBkZXRhaWw6IGVyckR0bC5tc2cgKyBgKCBlcnJvciBpZCA6ICR7ZXJyRHRsLmVycm9ySWR9KWAsIGxpZmU6IDcwMDAsIGlkIDogZXJyRHRsLmVycm9ySWR9KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS5hZGQoe3NldmVyaXR5OidlcnJvcicsIHN1bW1hcnk6J0Vycm9yJywgZGV0YWlsOiBlcnJEdGwubXNnLCBsaWZlOiBMaWJDb25zdGFudHMuZXJyb3JNZXNzYWdlUG9wdXBMaWZlLCBpZCA6IGVyckR0bC5lcnJvcklkfSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonZXJyb3InLCBzdW1tYXJ5OidFcnJvcicsIGRldGFpbDogZXJyRHRsLm1zZywgbGlmZTogTGliQ29uc3RhbnRzLmVycm9yTWVzc2FnZVBvcHVwTGlmZSwgaWQgOiBlcnJEdGwuZXJyb3JJZH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN1Y2Nlc3MobXNnKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICB0aGlzLm1zZ3MucHVzaCh7c2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeSA6ICdTdWNjZXNzJywgZGV0YWlsIDogbXNnfSk7XG5cbiAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonc3VjY2VzcycsIHN1bW1hcnk6J1N1Y2Nlc3MnLCBkZXRhaWw6IG1zZywgbGlmZTogTGliQ29uc3RhbnRzLnN1Y2Nlc3NNZXNzYWdlUG9wdXBMaWZlfSk7XG4gIH1cblxuICBpbmZvKG1zZyl7XG4gICAgdGhpcy5wcmVzZW50QWxlcnQoJ0luZm8nLCAnJywgbXNnKTtcbiAgfVxuXG4gIGdldDxUPihlbmRQb2ludCA6IHN0cmluZywgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD57XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4odGhpcy5nZXRVcmwoZW5kUG9pbnQsIHNlcnZpY2VOYW1lKSwgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwb3N0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICB9O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIEpTT04uc3RyaW5naWZ5KGJvZHkpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBvc3RGb3JtRGF0YTxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgIC8vIGFsZXJ0KHRoaXMuZ2V0RnVsbFVybCh1cmwpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBhdGNoPFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59LCBzZXJ2aWNlTmFtZSA/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBib2R5LCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIGVycm9ySGFuZGxlcihlcnJvcil7XG4gICAgdGhpcy5tc2dzID0gW107XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IoJ2Vycm9yIC0tLS0+JywgZXJyb3IpO1xuICAgIHRoaXMuZXJyb3JNc2coZXJyb3IpO1xuICB9XG5cbiAgZ2V0RnVsbFVybChlbmRQb2ludCA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybCgpICsgZW5kUG9pbnQ7XG4gIH1cblxuICBnZXRVcmwoZW5kUG9pbnQgOiBzdHJpbmcsIHNlcnZpY2VOYW1lIDogc3RyaW5nKXtcbiAgICBpZihzZXJ2aWNlTmFtZSl7XG4gICAgICB0aGlzLmJhc2VVcmwoKSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBzZXJ2aWNlTmFtZSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBlbmRQb2ludDtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLmJhc2VVcmwoKSArIChMaWJDb25zdGFudHMuY29udGV4dCA9PSAnJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCArIExpYkNvbnN0YW50cy5jb250ZXh0ICsgTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCkgKyBlbmRQb2ludDtcbiAgICB9XG4gIH1cblxuYXN5bmMgc2hvd0xvYWRlcigpIHtcbiAgdGhpcy5zcGlubmVyLnNob3coKVxufVxuXG4gIGFzeW5jIGhpZGVMb2FkZXIoKXtcbiAgICB0aGlzLnNwaW5uZXIuaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZWNyaXB0aW9uIFRoaXMgbWV0aG9kIHdpbGwgZmluZCBkaWZmZXJlbmNlIG9mIGRhdGVzIGJ5IHNwZWNpZmllZCBpbnRlcnZhbFxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSBmcm9tRGF0ZSBpbiBtaWxpc2Vjb25kc1xuICAgKiBAcGFyYW0gdG9kYXRlIGluIG1pbGlzZWNvbmRzXG4gICAqIEBwYXJhbSBpbnRlcnZhbCA6IHZhbGlkIHZhbHVlcyBhcmUgLS0+IFwieWVhcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJcbiAgICogQHJldHVybnMgZGlmZmVyZW5jZSBvZiBkYXRlIGFzIHBlciBpbnRlcnZhbCBzcGVjaWZpZWQuXG4gICAqKi9cbiAgZmluZERpZmZlcmVuY2VJbmRhdGUoZnJvbURhdGUsdG9kYXRlLGludGVydmFsKXtcbiAgICBsZXQgc2Vjb25kPTEwMDAsIG1pbnV0ZT1zZWNvbmQqNjAsIGhvdXI9bWludXRlKjYwLCBkYXk9aG91cioyNCwgd2Vlaz1kYXkqNztcbiAgICBsZXQgdGltZWRpZmYgPSB0b2RhdGUgLSBmcm9tRGF0ZTtcbiAgICBcbiAgICBpZiAoaXNOYU4odGltZWRpZmYpKSBcbiAgICAgIHJldHVybiBOYU47XG4gICAgXG4gICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICBjYXNlIFwieWVhcnNcIjogcmV0dXJuIHRvZGF0ZS5nZXRGdWxsWWVhcigpIC0gZnJvbURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY2FzZSBcIm1vbnRoc1wiOiByZXR1cm4gKFxuICAgICAgICAgICAgKCB0b2RhdGUuZ2V0RnVsbFllYXIoKSAqIDEyICsgdG9kYXRlLmdldE1vbnRoKCkgKVxuICAgICAgICAgICAgLVxuICAgICAgICAgICAgKCBmcm9tRGF0ZS5nZXRGdWxsWWVhcigpICogMTIgKyBmcm9tRGF0ZS5nZXRNb250aCgpIClcbiAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIndlZWtzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyB3ZWVrKTtcbiAgICAgICAgY2FzZSBcImRheXNcIiAgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBkYXkpOyBcbiAgICAgICAgY2FzZSBcImhvdXJzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBob3VyKTsgXG4gICAgICAgIGNhc2UgXCJtaW51dGVzXCI6IHJldHVybiBNYXRoLnJvdW5kKHRpbWVkaWZmIC8gbWludXRlKTtcbiAgICAgICAgY2FzZSBcInNlY29uZHNcIjogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBzZWNvbmQpO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkYXRlIGluIGRkTU15eXl5IGZvcm1hdC5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICoqL1xuICBnZXREYXRlSW5NTUREWVlZWUZvcm1hdChkYXRlIDogRGF0ZSl7XG4gICAgbGV0IGRkID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgbGV0IE1NID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBsZXQgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBcbiAgICBsZXQgZGF0ZVRvUmV0dXJuID0gIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICAgIHJldHVybiBkYXRlVG9SZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciB5eXl5L01NL2RkKVxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSB2YWx1ZSA6IGRhdGUgc2VwYXJhdGVkIHdpdGggJy0nXG4gICAqIEByZXR1cm5zIERhdGVcbiAgICoqL1xuICBnZXRFbnRlcmVkRGF0ZSh2YWx1ZSl7XG4gICAgdmFyIGRhdGVBcnJheSA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcbiAgICB2YXIgZGQgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSkgLSAxO1xuICAgIHZhciB5eXl5ID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMF0pKTtcbiAgICByZXR1cm4gbmV3IERhdGUoeXl5eSxNTSxkZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciBNTS9kZC95eXl5KS5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcGFyYW0gdmFsdWUgOiBkYXRlIHNlcGFyYXRlZCB3aXRoICctJ1xuICAgKiBAcmV0dXJucyBEYXRlXG4gICAqKi9cbiAgZ2V0RGF0ZUZyb21TdHJpbmcodmFsdWUpe1xuICAgIHZhciBkYXRlQXJyYXkgPSB2YWx1ZS5zcGxpdChcIi1cIik7XG4gICAgdmFyIGRkID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMl0pKTtcbiAgICB2YXIgTU0gPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsxXSkpIC0gMTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHl5eXksTU0sZGQpO1xuICB9XG5cbiAgZ2V0RW50ZXJlZERhdGVGcm9tU3RyaW5nKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCIvXCIpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSkgLSAxO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSk7XG4gICAgdmFyIHl5eXkgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5eXl5LE1NLGRkKTtcbiAgfVxuXG4gIGdldERhdGVJbk1NRERZWVlZKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCItXCIpO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzJdKSk7XG4gICAgdmFyIE1NID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMV0pKTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICB9XG5cbiAgcHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQobnVtYmVyKXtcbiAgICBudW1iZXIgPSBudW1iZXIgKyBMaWJDb25zdGFudHMuYmxhbmtTdHJpbmc7XG4gICAgaWYobnVtYmVyLmxlbmd0aCA8IDIpe1xuICAgICAgbnVtYmVyID0gXCIwXCIgKyBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiBudW1iZXI7XG4gIH1cblxuICAvKipcbiAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCBjaGVjayBpZiBlbnRlcmVkIG51bWJlciBpcyB2YWxpZCBvciBub3QuXG4gICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICogQHZlcnNpb24gMS4wXG4gICogQHJldHVybnMgdHJ1ZSA6IG51bWJlciBpcyB2YWxpZCA8L2JyPiBmYWxzZSA6IG51bWJlciBpcyBpbnZhbGlkXG4gICovXG4gIHZhbGlkYXRlTnVtYmVyKG51bWJlcikge1xuICAgIHZhciByZWcgPSBuZXcgUmVnRXhwKFwiXlswLTldKiRcIik7IFxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2QgY2hlY2sgaWYgZW50ZXJlZCBudW1iZXIgaXMgdmFsaWQgb3Igbm90LlxuICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAqIEB2ZXJzaW9uIDEuMFxuICAqIEByZXR1cm5zIHRydWUgOiBudW1iZXIgaXMgdmFsaWQgPC9icj4gZmFsc2UgOiBudW1iZXIgaXMgaW52YWxpZFxuICAqL1xuICB2YWxpZGF0ZUVtYWlsKGVtYWlsKSB7XG4gICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoJy9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvJyk7IFxuICAgIHJldHVybiByZWcudGVzdChlbWFpbCk7XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uKGNvbnRyb2wgOiBBYnN0cmFjdENvbnRyb2wsIG5ld1ZhbGlkYXRvciA6IFZhbGlkYXRvckZuICB8IFZhbGlkYXRvckZuW10gfCBudWxsKXtcbiAgICBjb250cm9sLnNldFZhbGlkYXRvcnMobmV3VmFsaWRhdG9yKTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIGNsZWFyVmFsaWRhdGlvbihjb250cm9sIDogQWJzdHJhY3RDb250cm9sKXtcbiAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgc2V0UmVxdWlyZWRWYWxpZGF0b3IoY29udHJvbCA6IEFic3RyYWN0Q29udHJvbCl7XG4gICAgdGhpcy5zZXRWYWxpZGF0aW9uKGNvbnRyb2wsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICB9XG5cbiAgLy8gQGR5bmFtaWNcbiAgc3RhdGljIHBhdHRlcm5WYWxpZGF0b3IocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgcmVzID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIC8vIGlmIGNvbnRyb2wgaXMgZW1wdHkgcmV0dXJuIG5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICBcbiAgICAgIC8vIHRlc3QgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGFnYWluc3QgdGhlIHJlZ2V4cCBzdXBwbGllZFxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xuICBcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcbiAgICB9O1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBjb25zdCBwYXNzd29yZDogc3RyaW5nID0gY29udHJvbC5nZXQoJ3Bhc3N3b3JkJykudmFsdWU7IC8vIGdldCBwYXNzd29yZCBmcm9tIG91ciBwYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQ6IHN0cmluZyA9IGNvbnRyb2wuZ2V0KCdjb25maXJtUGFzc3dvcmQnKS52YWx1ZTsgLy8gZ2V0IHBhc3N3b3JkIGZyb20gb3VyIGNvbmZpcm1QYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICAvLyBjb21wYXJlIGlzIHRoZSBwYXNzd29yZCBtYXRoXG4gICAgaWYgKHBhc3N3b3JkICE9PSBjb25maXJtUGFzc3dvcmQpIHtcbiAgICAgIC8vIGlmIHRoZXkgZG9uJ3QgbWF0Y2gsIHNldCBhbiBlcnJvciBpbiBvdXIgY29uZmlybVBhc3N3b3JkIGZvcm0gY29udHJvbFxuICAgICAgY29udHJvbC5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnNldEVycm9ycyh7IE5vUGFzc3N3b3JkTWF0Y2g6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0U3NuKHNzbiA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHNzbi5zdWJzdHIoMCwgMykgKyAnLScgKyBzc24uc3Vic3RyKDMsIDIpICsgJy0nICsgc3NuLnN1YnN0cig1LCA0KVxuICB9XG5cbiAgZm9ybWF0UmV0cmlldmVkU1NOKHNzbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXNzbikgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZGlnaXRzID0gc3NuLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgICBpZiAoZGlnaXRzLmxlbmd0aCAhPT0gOSkgcmV0dXJuIHNzbjtcblxuICAgIHJldHVybiBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDUpfS0ke2RpZ2l0cy5zbGljZSg1KX1gO1xuICB9XG5cbiAgbWFza1Nzbihzc24gOiBzdHJpbmcpe1xuICAgIHJldHVybiAnWFhYLVhYLScgKyBzc24uc3Vic3RyKDUsIDQpXG4gIH1cblxuICBtYXNrKHZhbHVlIDogc3RyaW5nLCBjaGFyVG9IaWRlIDogbnVtYmVyKXtcbiAgICBpZighdmFsdWUpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZih2YWx1ZS5sZW5ndGggPiBjaGFyVG9IaWRlKXtcbiAgICAgIHZhciB4eHggPSAnJztcbiAgICAgIGZvcih2YXIgY291bnQgPSAxIDsgY291bnQgPD0gY2hhclRvSGlkZSA7IGNvdW50Kyspe1xuICAgICAgICB4eHggPSAnWCcgKyB4eHg7XG4gICAgICB9XG4gICAgICByZXR1cm4geHh4ICsgdmFsdWUuc3Vic3RyKHZhbHVlLmxlbmd0aCAtIGNoYXJUb0hpZGUgKyAxLCBjaGFyVG9IaWRlKVxuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTWVzc2FnZXMoKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgfVxuXG4gIGlzU3RhdGUoc3RhdGUgOiBzdHJpbmcpIDogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZUxvd2VyY2FzZSgpID09IHN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBnZXRTdGF0ZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuU1RBVEU7XG4gIH1cblxuICBnZXRTdGF0ZUxvd2VyY2FzZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2V0dXBOYXZpZ2F0aW9uQmFzZWRFdmVudHMoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTsgLy9DbGVhciBFcnJvci9TdWNjZXNzIE1lc3NhZ2VzXG4gICAgICAgICAgdGhpcy50b3VyU2VydmljZS5zZXRDdXJyZW50U3RlcHNDb3VudCgyMCk7IC8vSm95cmlkZSBTZXR1cFxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgZ3RhZygnY29uZmlnJywgTGliQ29uc3RhbnRzLmdhSWQsIHsgJ3BhZ2VfcGF0aCc6IHZhbC51cmxBZnRlclJlZGlyZWN0cyB9KTsgLy9TZW5kIHRvIEdvb2xlIEFuYWx5dGljc1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSB7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodmFsLnNuYXBzaG90KTsgLy9TZXQgUGFnZSBUaXRsZVxuICAgICAgICAgIHRoaXMudG91clNlcnZpY2Uuc2V0U2V0cHNDb3VudCh2YWwuc25hcHNob3QuZGF0YVsncGFnZUlkJ10pO1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlVGl0bGUoc25hcHNob3QpIHtcbiAgICBsZXQgdGl0bGUgPSBzbmFwc2hvdC5kYXRhWyd0aXRsZSddO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBcIlBsZWFzZSBzcGVjaWZ5IHBhZ2UgdGl0bGUgaW4gYXBwLXJvdXRpbmcubW9kdWxlLnRzIGZpbGUgZm9yIHBhZ2UgOjogXCIgKyB0aGlzLmFyLmZpcnN0Q2hpbGQuc25hcHNob3QudXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBjb250ZXh0IHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAgKiBAdmVyc2lvbiAxLjBcbiAgICogQHBhcmFtIHZhbHVlIDogY29udGV4dCByb290IG9mIGFwcGxpY2F0aW9uLiBlLmcgaWYgYXBwbGljYXRpb24gaXMgcnVubmluZyBvbiAnaHR0cDovL2xvY2FsaG9zdDo5MDgwL2NwL3BhZ2UnIHRoZW4gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gJ2NwJ1xuICAgKiBAcmV0dXJucyBTdHJpbmdcbiAgICoqL1xuICBnZXRDb250ZXh0Um9vdCgpIDogc3RyaW5ne1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKFwiL1wiLDIpKTtcbiAgfVxuXG4gIGdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvY3BcIjtcbiAgfVxuXG4gIGdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvc3NcIjtcbiAgfVxuXG5cbiAgb3BlblBhZ2VCeUNvbnRleHRSb290KGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICBuYXYubmF2aWdhdGVSb290KHVyaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfWAgLCAnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YUFuZFR4bklkKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIHRyYW5zYWN0aW9uSWQsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKGRhdGEpe1xuICAgICAgY29uc29sZS5sb2coJ2hlcmUgd2l0aCBkYXRhJyk7XG4gICAgICBpZihuYXYgJiYgY29udGV4dC5pbmNsdWRlcyh0aGlzLmdldENvbnRleHRSb290KCkpKXtcbiAgICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfSZ0eG5pZD0ke2J0b2EodHJhbnNhY3Rpb25JZCl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9JnR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnb3IgaGVyZSB3aXRoIG5vIGRhdGEnKVxuICAgICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICAgIG5hdi5uYXZpZ2F0ZUZvcndhcmQoYCR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKG5hdiAmJiBjb250ZXh0LmluY2x1ZGVzKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSkpe1xuICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9YCwnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBtYXNrRXhjZXB0Rmlyc3RBbmRMYXN0Q2hhcih2YWx1ZSA6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdICsgXCIqXCIucmVwZWF0KHZhbHVlLmxlbmd0aCAtIDIpICsgdmFsdWUuc2xpY2UoLTEpO1xuICB9XG5cbiAgbWFza0VtYWlsKGVtYWlsIDogc3RyaW5nKXtcbiAgICB2YXIgcGFydHMgPSBlbWFpbC5zcGxpdChcIkBcIik7XG4gICAgaWYocGFydHMubGVuZ3RoID09IDIpe1xuICAgICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pICsgXCJAXCIgKyB0aGlzLm1hc2tFeGNlcHRGaXJzdEFuZExhc3RDaGFyKHBhcnRzWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pO1xuICB9XG5cbiAgaXNQbGF5Zm9ybUNhcGFjaXRvcigpe1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKCdjYXBhY2l0b3InKTtcbiAgfVxuXG4gIGlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkKCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkID09ICd0cnVlJztcbiAgfVxuXG4gIGlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5KCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5ID09ICd0cnVlJztcbiAgfVxuXG4gIGZvY3VzT25TdWJtaXQoZWw6IEVsZW1lbnRSZWYpe1xuICAgIHZhciBlbGVtZW50ID0gZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgdGhpcy5mb2N1c2FibGVzLm1hcCh4ID0+IGAke3h9Lm5nLWludmFsaWRgKS5qb2luKFwiLFwiKVxuICAgICk7XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIHByaW1lTmdDb21wb25lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIHRoaXMuZm9jdXNhYmxlcy5tYXAoeCA9PiBgJHt4fS5wLWNvbXBvbmVudGApLmpvaW4oXCIsXCIpXG4gICAgICApO1xuICAgICAgaWYgKHByaW1lTmdDb21wb25lbnQpIHtcbiAgICAgICAgcHJpbWVOZ0NvbXBvbmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gU3RhcnRcbiAgICAgIHZhciBwcmltZU5nQ29tcG9uZW50MSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdi5wLXNlbGVjdGJ1dHRvblwiKTtcbiAgICAgIGlmIChwcmltZU5nQ29tcG9uZW50MSkge1xuICAgICAgICB2YXIgcHJpbWVOZ0NvbXBvbmVudDIgPSBwcmltZU5nQ29tcG9uZW50MS5xdWVyeVNlbGVjdG9yKFwiZGl2LnAtY29tcG9uZW50XCIpO1xuICAgICAgICBpZiAocHJpbWVOZ0NvbXBvbmVudDIpIHtcbiAgICAgICAgICBwcmltZU5nQ29tcG9uZW50Mi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gRW5kXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVSYW5kb21LZXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTtcbiAgfVxuXG4gIGJhc2U2NFVybEVuY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnRvYShpbnB1dClcbiAgICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gICAgICAucmVwbGFjZSgvPSskLywgJycpO1xuICB9XG5cbiAgeG9yRW5jcnlwdChpbnB1dDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJzID0gaW5wdXRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG4gIHJldHVybiB0aGlzLmJhc2U2NFVybEVuY29kZShjaGFycyk7XG59XG5cbmJhc2U2NFVybERlY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICB3aGlsZSAoaW5wdXQubGVuZ3RoICUgNCkgaW5wdXQgKz0gJz0nO1xuICByZXR1cm4gYXRvYihpbnB1dCk7XG59XG5cbnhvckRlY3J5cHQoZW5jb2RlZDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGRlY29kZWQgPSB0aGlzLmJhc2U2NFVybERlY29kZShlbmNvZGVkKTtcbiAgcmV0dXJuIGRlY29kZWRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG59XG5cbn1cbiJdfQ==
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBYyxXQUFXLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQWdDLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUs1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQWtCLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxXQUFXO0lBV3RCLFlBQW1CLGVBQWdDLEVBQVMsVUFBc0IsRUFBUyxFQUFzQixFQUM5RixlQUFnQyxFQUFTLFVBQTBCLEVBQVUsT0FBMEIsRUFDdkcsTUFBeUIsRUFBVSxNQUFxQixFQUFVLE1BQWMsRUFDL0UsWUFBbUIsRUFBVSxFQUFrQixFQUFVLFdBQXdCLEVBQ2pGLFFBQWtCO1FBSm5CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUM5RixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQ3ZHLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDL0UsaUJBQVksR0FBWixZQUFZLENBQU87UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2pGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFidEMsZUFBVSxHQUFHLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFak0sK0JBQStCO1FBQ3hCLFNBQUksR0FBYyxFQUFFLENBQUM7UUFFNUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLFlBQU8sR0FBSSxJQUFJLENBQUM7UUFPZCxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFFBQVEsRUFBRSxrQkFBa0I7U0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFZO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDOUMsT0FBTyxFQUFFLEdBQUc7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNkLENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFZO1FBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDOUMsT0FBTyxFQUFFLEdBQUc7WUFDWixLQUFLLEVBQUUsUUFBUTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ2QsQ0FBQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVk7UUFDcEIsSUFBSSxNQUFNLEdBQWdCLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQW1CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQztZQUNoQixvSkFBb0o7WUFDcEosSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEVBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7U0FDN0k7YUFBSTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxFQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1NBQzdJO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQTBCLEVBQUUsT0FBYyxFQUFFLE9BQWMsRUFBRSxRQUFnQixFQUFFLEVBQVc7UUFDMUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsUUFBUSxJQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEVBQUcsRUFBRSxFQUFDLENBQUMsQ0FBQTtJQUV6SSxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFHLFNBQVMsRUFBRSxNQUFNLEVBQUcsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyx1QkFBdUIsRUFBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxHQUFHLENBQUksUUFBaUIsRUFBRSxPQVd6QixFQUFFLFdBQXFCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBZ0IsRUFBRSxPQVdwQyxFQUFFLFdBQXFCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRUQsWUFBWSxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BVzlDLEVBQUUsV0FBcUI7UUFDdkIsK0JBQStCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUksR0FBVyxFQUFFLE9BV3RCLEVBQUUsV0FBcUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsS0FBSyxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BV3pDLEVBQUUsV0FBcUI7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFpQixFQUFFLFdBQW9CO1FBQzVDLElBQUcsV0FBVyxFQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFlBQVksQ0FBQyxZQUFZLEdBQUcsV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1NBQ2pHO2FBQUk7WUFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDM0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZO2dCQUMzQixDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDcEg7SUFDSCxDQUFDO0lBRUgsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFFQyxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7OztRQVFJO0lBQ0osb0JBQW9CLENBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxRQUFRO1FBQzNDLElBQUksTUFBTSxHQUFDLElBQUksRUFBRSxNQUFNLEdBQUMsTUFBTSxHQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUMsTUFBTSxHQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUMsSUFBSSxHQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLFFBQVEsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNqQixPQUFPLEdBQUcsQ0FBQztRQUViLFFBQVEsUUFBUSxFQUFFO1lBQ2QsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQ2xCLENBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUU7O29CQUVqRCxDQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFFLENBQ3hELENBQUM7WUFDRixLQUFLLE9BQVMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbkQsS0FBSyxNQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELEtBQUssT0FBUyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNuRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDckQsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVEOzs7OztRQUtJO0lBQ0osdUJBQXVCLENBQUMsSUFBVztRQUNqQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFOUIsSUFBSSxZQUFZLEdBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztRQUMvQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztRQU1JO0lBQ0osY0FBYyxDQUFDLEtBQUs7UUFDbEIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7O1FBTUk7SUFDSixpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBSztRQUM1QixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQUs7UUFDckIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVELHVCQUF1QixDQUFDLE1BQU07UUFDNUIsTUFBTSxHQUFHLE1BQU0sR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQzNDLElBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDbkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O01BS0U7SUFDRixjQUFjLENBQUMsTUFBTTtRQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7OztNQUtFO0lBQ0YsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsMEpBQTBKLENBQUMsQ0FBQztRQUNqTCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUF5QixFQUFFLFlBQWtEO1FBQ3pGLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUF5QjtRQUN2QyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQXlCO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsS0FBdUI7UUFDNUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUF3QixFQUEwQixFQUFFO1lBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNsQixzQ0FBc0M7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCw0REFBNEQ7WUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEMsd0ZBQXdGO1lBQ3hGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7UUFDRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsT0FBd0I7UUFDcEQsTUFBTSxRQUFRLEdBQVcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyw4Q0FBOEM7UUFDdEcsTUFBTSxlQUFlLEdBQVcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLHFEQUFxRDtRQUMzSCwrQkFBK0I7UUFDL0IsSUFBSSxRQUFRLEtBQUssZUFBZSxFQUFFO1lBQ2hDLHdFQUF3RTtZQUN4RSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBWTtRQUNwQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRXBDLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBYyxFQUFFLFVBQW1CO1FBQ3RDLElBQUcsQ0FBQyxLQUFLLEVBQUM7WUFDUixPQUFPO1NBQ1I7UUFDRCxJQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFDO1lBQzNCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNiLEtBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFHLEtBQUssSUFBSSxVQUFVLEVBQUcsS0FBSyxFQUFFLEVBQUM7Z0JBQ2hELEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQ2pCO1lBQ0QsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7U0FDckU7YUFBSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYztRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUMxQixHQUFHLENBQUMsRUFBRTtZQUNKLElBQUksR0FBRyxZQUFZLGVBQWUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDhCQUE4QjtnQkFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWU7YUFDM0Q7WUFDRCxJQUFJLEdBQUcsWUFBWSxhQUFhLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCO2FBQ3JHO1lBQ0QsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtnQkFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQVE7UUFDM0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxNQUFNLHNFQUFzRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDaEg7SUFDSCxDQUFDO0lBRUQ7Ozs7OztRQU1JO0lBQ0osY0FBYztRQUNaLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QscUJBQXFCLENBQUMsT0FBZSxFQUFFLEdBQVcsRUFBRSxHQUFtQjtRQUNyRSxJQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUMxQixPQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUM7WUFDaEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLEdBQUcsRUFBRSxFQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQztJQUVELHFDQUFxQyxDQUFDLE9BQWUsRUFBRSxHQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFtQjtRQUMxRyxJQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUMxQixPQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNwQixTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsSUFBRyxJQUFJLEVBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUIsSUFBRyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBQztnQkFDaEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzFHO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxHQUFHLEdBQUcsU0FBUyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkk7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1lBQ25DLElBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUM7Z0JBQ2hELEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxTQUFTLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkU7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLEdBQUcsR0FBRyxTQUFTLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUMsT0FBTyxDQUFDLENBQUM7YUFDcEc7U0FDRjtJQUNILENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxPQUFlLEVBQUUsR0FBVyxFQUFFLElBQUksRUFBRSxHQUFtQjtRQUNuRixJQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUMxQixPQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNwQixTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsSUFBRyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBQztZQUNoRCxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLEdBQUcsR0FBRyxTQUFTLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFHO0lBQ0gsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQWM7UUFDckMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEc7UUFDRCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLFlBQVksQ0FBQywwQkFBMEIsSUFBSSxNQUFNLENBQUM7SUFDM0QsQ0FBQztJQUVELHNDQUFzQztRQUNwQyxPQUFPLFlBQVksQ0FBQyxzQ0FBc0MsSUFBSSxNQUFNLENBQUM7SUFDdkUsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFjO1FBQzFCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3RELENBQUM7UUFFRixJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFDO1lBQ0YsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDcEIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2pCO1lBRUQsOEJBQThCO1lBQzlCLElBQUksaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3BFLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLElBQUksaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzNFLElBQUksaUJBQWlCLEVBQUU7b0JBQ3JCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUMzQjthQUNGO1lBQ0QsNEJBQTRCO1NBQzdCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNmLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQ25CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQ25CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLO2FBQ2hCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEtBQUssSUFBSSxHQUFHLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlLEVBQUUsR0FBVztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sT0FBTzthQUNYLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQzs0RUFwbUJZLFdBQVc7dUVBQVgsV0FBVyxXQUFYLFdBQVcsbUJBRlYsTUFBTTs7aUZBRVAsV0FBVztjQUh2QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIExvYWRpbmdDb250cm9sbGVyLCBOYXZDb250cm9sbGVyLCBQbGF0Zm9ybSwgVG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge01lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xuaW1wb3J0IHsgTG9hZGluZ0JhclNlcnZpY2UgfSBmcm9tICdAbmd4LWxvYWRpbmctYmFyL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9FcnJvck1vZGVsJztcbmltcG9ydCB7IGdldEJhc2VVcmwsIExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGlvbkVuZCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRvdXJTZXJ2aWNlIH0gZnJvbSAnLi4vdG91ci90b3VyLnNlcnZpY2UnO1xuXG5kZWNsYXJlIGxldCBndGFnOiBhbnk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFV0aWxTZXJ2aWNlIHtcblxuICBmb2N1c2FibGVzID0gW1wicGlucHV0dGV4dFwiLCBcInAtaW5wdXRtYXNrXCIsIFwiaW5wdXRcIiwgXCJzZWxlY3RcIiwgXCJ0ZXh0YXJlYVwiLCBcInAtY2FsZW5kYXJcIiwgXCJyYWRpb1wiLCBcInAtZHJvcGRvd25cIiwgXCJwLXNlbGVjdEJ1dHRvblwiLCBcInAtYXV0b2NvbXBsZXRlXCIsIFwicC1wYXNzd29yZFwiLFwicC1jaGVja2JveFwiLCBcInAtaW5wdXR0ZXh0YXJlYVwiXTtcblxuICAvKlRvIGRpc3BsYXkgdmFyaW91cyBtZXNzYWdlcyovXG4gIHB1YmxpYyBtc2dzOiBNZXNzYWdlW10gPSBbXTtcblxuICBvcHRpb25zID0ge307XG5cbiAgbG9hZGluZyAgPSBudWxsO1xuICBcbiAgY29uc3RydWN0b3IocHVibGljIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLCBwdWJsaWMgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHVibGljIGxjIDogTG9hZGluZ0NvbnRyb2xsZXIsIFxuICAgICAgICAgICAgICBwdWJsaWMgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsIHB1YmxpYyBtc2dTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBzcGlubmVyOiBOZ3hTcGlubmVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGxvYWRlcjogTG9hZGluZ0JhclNlcnZpY2UsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLCBwcml2YXRlIGFyOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSB0b3VyU2VydmljZTogVG91clNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtKSB7IFxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBcIkFjY2VwdFwiOiAnYXBwbGljYXRpb24vanNvbid9KTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcbiAgfVxuXG4gIGFzeW5jIHRvYXN0KG1zZyA6IHN0cmluZyl7XG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgZHVyYXRpb246IDIwMDAsXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RvbmUnLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgICB0b2FzdC5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50VG9hc3QobXNnIDogc3RyaW5nKSB7XG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RvbmUnLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgICB0b2FzdC5wcmVzZW50KCk7XG4gIH1cblxuICBiYXNlVXJsKCkgOiBzdHJpbmd7XG4gICAgcmV0dXJuIGdldEJhc2VVcmwoKTtcbiAgfVxuXG4gIGFzeW5jIHByZXNlbnRBbGVydChoZWFkZXIsIHN1Yk1zZywgZXJyRHRsKSB7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiBoZWFkZXIsXG4gICAgICBzdWJIZWFkZXI6IHN1Yk1zZyxcbiAgICAgIG1lc3NhZ2U6IGVyckR0bCxcbiAgICAgIGJ1dHRvbnM6IFsnT0snXVxuICAgIH0pO1xuXG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICB9XG5cbiAgZXJyb3IoaGVhZGVyLCBzdWJNc2csIGVyckR0bCl7XG4gICAgdGhpcy5wcmVzZW50QWxlcnQoaGVhZGVyLCBzdWJNc2csIGVyckR0bCk7XG4gIH1cblxuICBzaG93RXJyb3IobXNnIDogc3RyaW5nKXtcbiAgICBsZXQgZXJyRHRsIDogRXJyb3JNb2RlbCA9IG5ldyBFcnJvck1vZGVsKCk7XG4gICAgZXJyRHRsLm1zZyA9IG1zZztcbiAgICB0aGlzLmVycm9yTXNnKGVyckR0bCk7XG4gIH1cblxuICBlcnJvck1zZyhlcnJEdGwgOiBFcnJvck1vZGVsKXtcbiAgICB0aGlzLm1zZ3MucHVzaCh7c2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnkgOiAnRXJyb3InLCBkZXRhaWwgOiBlcnJEdGwubXNnfSk7XG4gICAgdGhpcy5tc2dTZXJ2aWNlLmNsZWFyKCk7XG4gICAgaWYoZXJyRHRsLmVycm9ySWQpe1xuICAgICAgLy90aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonZXJyb3InLCBzdW1tYXJ5OidFcnJvcicsIGRldGFpbDogZXJyRHRsLm1zZyArIGAoIGVycm9yIGlkIDogJHtlcnJEdGwuZXJyb3JJZH0pYCwgbGlmZTogNzAwMCwgaWQgOiBlcnJEdGwuZXJyb3JJZH0pO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6J2Vycm9yJywgc3VtbWFyeTonRXJyb3InLCBkZXRhaWw6IGVyckR0bC5tc2csIGxpZmU6IExpYkNvbnN0YW50cy5lcnJvck1lc3NhZ2VQb3B1cExpZmUsIGlkIDogZXJyRHRsLmVycm9ySWR9KTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubXNnU2VydmljZS5hZGQoe3NldmVyaXR5OidlcnJvcicsIHN1bW1hcnk6J0Vycm9yJywgZGV0YWlsOiBlcnJEdGwubXNnLCBsaWZlOiBMaWJDb25zdGFudHMuZXJyb3JNZXNzYWdlUG9wdXBMaWZlLCBpZCA6IGVyckR0bC5lcnJvcklkfSk7XG4gICAgfVxuICB9XG5cbiAgY3VzdG9tUG9wdXBNZXNzYWdlKHNldmVyaXR5OidzdWNjZXNzJ3wnZXJyb3InLCBzdW1tYXJ5OnN0cmluZywgbWVzc2FnZTpzdHJpbmcsIGR1cmF0aW9uPzpudW1iZXIsIGlkPzogc3RyaW5nKXtcbiAgICBjb25zb2xlLmxvZyhcInRoaXMgaXMgY2FsbGVkXCIpXG4gICAgdGhpcy5tc2dzLnB1c2goe3NldmVyaXR5OiBzZXZlcml0eSwgc3VtbWFyeSA6IHN1bW1hcnksIGRldGFpbCA6IG1lc3NhZ2V9KTtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTpzZXZlcml0eSwgc3VtbWFyeTpzdW1tYXJ5LCBkZXRhaWw6IG1lc3NhZ2UsIGxpZmU6ZHVyYXRpb258fCBMaWJDb25zdGFudHMuZXJyb3JNZXNzYWdlUG9wdXBMaWZlLCBpZCA6IGlkfSlcblxuICB9XG4gIGFzeW5jIHN1Y2Nlc3MobXNnKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICB0aGlzLm1zZ3MucHVzaCh7c2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeSA6ICdTdWNjZXNzJywgZGV0YWlsIDogbXNnfSk7XG5cbiAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonc3VjY2VzcycsIHN1bW1hcnk6J1N1Y2Nlc3MnLCBkZXRhaWw6IG1zZywgbGlmZTogTGliQ29uc3RhbnRzLnN1Y2Nlc3NNZXNzYWdlUG9wdXBMaWZlfSk7XG4gIH1cblxuICBpbmZvKG1zZyl7XG4gICAgdGhpcy5wcmVzZW50QWxlcnQoJ0luZm8nLCAnJywgbXNnKTtcbiAgfVxuXG4gIGdldDxUPihlbmRQb2ludCA6IHN0cmluZywgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD57XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4odGhpcy5nZXRVcmwoZW5kUG9pbnQsIHNlcnZpY2VOYW1lKSwgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwb3N0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICB9O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIEpTT04uc3RyaW5naWZ5KGJvZHkpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBvc3RGb3JtRGF0YTxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgIC8vIGFsZXJ0KHRoaXMuZ2V0RnVsbFVybCh1cmwpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBhdGNoPFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59LCBzZXJ2aWNlTmFtZSA/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBib2R5LCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIGVycm9ySGFuZGxlcihlcnJvcil7XG4gICAgdGhpcy5tc2dzID0gW107XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IoJ2Vycm9yIC0tLS0+JywgZXJyb3IpO1xuICAgIHRoaXMuZXJyb3JNc2coZXJyb3IpO1xuICB9XG5cbiAgZ2V0RnVsbFVybChlbmRQb2ludCA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybCgpICsgZW5kUG9pbnQ7XG4gIH1cblxuICBnZXRVcmwoZW5kUG9pbnQgOiBzdHJpbmcsIHNlcnZpY2VOYW1lIDogc3RyaW5nKXtcbiAgICBpZihzZXJ2aWNlTmFtZSl7XG4gICAgICB0aGlzLmJhc2VVcmwoKSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBzZXJ2aWNlTmFtZSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBlbmRQb2ludDtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLmJhc2VVcmwoKSArIChMaWJDb25zdGFudHMuY29udGV4dCA9PSAnJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCArIExpYkNvbnN0YW50cy5jb250ZXh0ICsgTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCkgKyBlbmRQb2ludDtcbiAgICB9XG4gIH1cblxuYXN5bmMgc2hvd0xvYWRlcigpIHtcbiAgdGhpcy5zcGlubmVyLnNob3coKVxufVxuXG4gIGFzeW5jIGhpZGVMb2FkZXIoKXtcbiAgICB0aGlzLnNwaW5uZXIuaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZWNyaXB0aW9uIFRoaXMgbWV0aG9kIHdpbGwgZmluZCBkaWZmZXJlbmNlIG9mIGRhdGVzIGJ5IHNwZWNpZmllZCBpbnRlcnZhbFxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSBmcm9tRGF0ZSBpbiBtaWxpc2Vjb25kc1xuICAgKiBAcGFyYW0gdG9kYXRlIGluIG1pbGlzZWNvbmRzXG4gICAqIEBwYXJhbSBpbnRlcnZhbCA6IHZhbGlkIHZhbHVlcyBhcmUgLS0+IFwieWVhcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJcbiAgICogQHJldHVybnMgZGlmZmVyZW5jZSBvZiBkYXRlIGFzIHBlciBpbnRlcnZhbCBzcGVjaWZpZWQuXG4gICAqKi9cbiAgZmluZERpZmZlcmVuY2VJbmRhdGUoZnJvbURhdGUsdG9kYXRlLGludGVydmFsKXtcbiAgICBsZXQgc2Vjb25kPTEwMDAsIG1pbnV0ZT1zZWNvbmQqNjAsIGhvdXI9bWludXRlKjYwLCBkYXk9aG91cioyNCwgd2Vlaz1kYXkqNztcbiAgICBsZXQgdGltZWRpZmYgPSB0b2RhdGUgLSBmcm9tRGF0ZTtcbiAgICBcbiAgICBpZiAoaXNOYU4odGltZWRpZmYpKSBcbiAgICAgIHJldHVybiBOYU47XG4gICAgXG4gICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICBjYXNlIFwieWVhcnNcIjogcmV0dXJuIHRvZGF0ZS5nZXRGdWxsWWVhcigpIC0gZnJvbURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY2FzZSBcIm1vbnRoc1wiOiByZXR1cm4gKFxuICAgICAgICAgICAgKCB0b2RhdGUuZ2V0RnVsbFllYXIoKSAqIDEyICsgdG9kYXRlLmdldE1vbnRoKCkgKVxuICAgICAgICAgICAgLVxuICAgICAgICAgICAgKCBmcm9tRGF0ZS5nZXRGdWxsWWVhcigpICogMTIgKyBmcm9tRGF0ZS5nZXRNb250aCgpIClcbiAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIndlZWtzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyB3ZWVrKTtcbiAgICAgICAgY2FzZSBcImRheXNcIiAgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBkYXkpOyBcbiAgICAgICAgY2FzZSBcImhvdXJzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBob3VyKTsgXG4gICAgICAgIGNhc2UgXCJtaW51dGVzXCI6IHJldHVybiBNYXRoLnJvdW5kKHRpbWVkaWZmIC8gbWludXRlKTtcbiAgICAgICAgY2FzZSBcInNlY29uZHNcIjogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBzZWNvbmQpO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkYXRlIGluIGRkTU15eXl5IGZvcm1hdC5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICoqL1xuICBnZXREYXRlSW5NTUREWVlZWUZvcm1hdChkYXRlIDogRGF0ZSl7XG4gICAgbGV0IGRkID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgbGV0IE1NID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBsZXQgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBcbiAgICBsZXQgZGF0ZVRvUmV0dXJuID0gIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICAgIHJldHVybiBkYXRlVG9SZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciB5eXl5L01NL2RkKVxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSB2YWx1ZSA6IGRhdGUgc2VwYXJhdGVkIHdpdGggJy0nXG4gICAqIEByZXR1cm5zIERhdGVcbiAgICoqL1xuICBnZXRFbnRlcmVkRGF0ZSh2YWx1ZSl7XG4gICAgdmFyIGRhdGVBcnJheSA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcbiAgICB2YXIgZGQgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSkgLSAxO1xuICAgIHZhciB5eXl5ID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMF0pKTtcbiAgICByZXR1cm4gbmV3IERhdGUoeXl5eSxNTSxkZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciBNTS9kZC95eXl5KS5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcGFyYW0gdmFsdWUgOiBkYXRlIHNlcGFyYXRlZCB3aXRoICctJ1xuICAgKiBAcmV0dXJucyBEYXRlXG4gICAqKi9cbiAgZ2V0RGF0ZUZyb21TdHJpbmcodmFsdWUpe1xuICAgIHZhciBkYXRlQXJyYXkgPSB2YWx1ZS5zcGxpdChcIi1cIik7XG4gICAgdmFyIGRkID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMl0pKTtcbiAgICB2YXIgTU0gPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsxXSkpIC0gMTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHl5eXksTU0sZGQpO1xuICB9XG5cbiAgZ2V0RW50ZXJlZERhdGVGcm9tU3RyaW5nKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCIvXCIpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSkgLSAxO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSk7XG4gICAgdmFyIHl5eXkgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5eXl5LE1NLGRkKTtcbiAgfVxuXG4gIGdldERhdGVJbk1NRERZWVlZKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCItXCIpO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzJdKSk7XG4gICAgdmFyIE1NID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMV0pKTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICB9XG5cbiAgcHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQobnVtYmVyKXtcbiAgICBudW1iZXIgPSBudW1iZXIgKyBMaWJDb25zdGFudHMuYmxhbmtTdHJpbmc7XG4gICAgaWYobnVtYmVyLmxlbmd0aCA8IDIpe1xuICAgICAgbnVtYmVyID0gXCIwXCIgKyBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiBudW1iZXI7XG4gIH1cblxuICAvKipcbiAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCBjaGVjayBpZiBlbnRlcmVkIG51bWJlciBpcyB2YWxpZCBvciBub3QuXG4gICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICogQHZlcnNpb24gMS4wXG4gICogQHJldHVybnMgdHJ1ZSA6IG51bWJlciBpcyB2YWxpZCA8L2JyPiBmYWxzZSA6IG51bWJlciBpcyBpbnZhbGlkXG4gICovXG4gIHZhbGlkYXRlTnVtYmVyKG51bWJlcikge1xuICAgIHZhciByZWcgPSBuZXcgUmVnRXhwKFwiXlswLTldKiRcIik7IFxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2QgY2hlY2sgaWYgZW50ZXJlZCBudW1iZXIgaXMgdmFsaWQgb3Igbm90LlxuICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAqIEB2ZXJzaW9uIDEuMFxuICAqIEByZXR1cm5zIHRydWUgOiBudW1iZXIgaXMgdmFsaWQgPC9icj4gZmFsc2UgOiBudW1iZXIgaXMgaW52YWxpZFxuICAqL1xuICB2YWxpZGF0ZUVtYWlsKGVtYWlsKSB7XG4gICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoJy9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvJyk7IFxuICAgIHJldHVybiByZWcudGVzdChlbWFpbCk7XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uKGNvbnRyb2wgOiBBYnN0cmFjdENvbnRyb2wsIG5ld1ZhbGlkYXRvciA6IFZhbGlkYXRvckZuICB8IFZhbGlkYXRvckZuW10gfCBudWxsKXtcbiAgICBjb250cm9sLnNldFZhbGlkYXRvcnMobmV3VmFsaWRhdG9yKTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIGNsZWFyVmFsaWRhdGlvbihjb250cm9sIDogQWJzdHJhY3RDb250cm9sKXtcbiAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgc2V0UmVxdWlyZWRWYWxpZGF0b3IoY29udHJvbCA6IEFic3RyYWN0Q29udHJvbCl7XG4gICAgdGhpcy5zZXRWYWxpZGF0aW9uKGNvbnRyb2wsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICB9XG5cbiAgLy8gQGR5bmFtaWNcbiAgc3RhdGljIHBhdHRlcm5WYWxpZGF0b3IocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgcmVzID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIC8vIGlmIGNvbnRyb2wgaXMgZW1wdHkgcmV0dXJuIG5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICBcbiAgICAgIC8vIHRlc3QgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGFnYWluc3QgdGhlIHJlZ2V4cCBzdXBwbGllZFxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xuICBcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcbiAgICB9O1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBjb25zdCBwYXNzd29yZDogc3RyaW5nID0gY29udHJvbC5nZXQoJ3Bhc3N3b3JkJykudmFsdWU7IC8vIGdldCBwYXNzd29yZCBmcm9tIG91ciBwYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQ6IHN0cmluZyA9IGNvbnRyb2wuZ2V0KCdjb25maXJtUGFzc3dvcmQnKS52YWx1ZTsgLy8gZ2V0IHBhc3N3b3JkIGZyb20gb3VyIGNvbmZpcm1QYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICAvLyBjb21wYXJlIGlzIHRoZSBwYXNzd29yZCBtYXRoXG4gICAgaWYgKHBhc3N3b3JkICE9PSBjb25maXJtUGFzc3dvcmQpIHtcbiAgICAgIC8vIGlmIHRoZXkgZG9uJ3QgbWF0Y2gsIHNldCBhbiBlcnJvciBpbiBvdXIgY29uZmlybVBhc3N3b3JkIGZvcm0gY29udHJvbFxuICAgICAgY29udHJvbC5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnNldEVycm9ycyh7IE5vUGFzc3N3b3JkTWF0Y2g6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0U3NuKHNzbiA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHNzbi5zdWJzdHIoMCwgMykgKyAnLScgKyBzc24uc3Vic3RyKDMsIDIpICsgJy0nICsgc3NuLnN1YnN0cig1LCA0KVxuICB9XG5cbiAgZm9ybWF0UmV0cmlldmVkU1NOKHNzbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXNzbikgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZGlnaXRzID0gc3NuLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgICBpZiAoZGlnaXRzLmxlbmd0aCAhPT0gOSkgcmV0dXJuIHNzbjtcblxuICAgIHJldHVybiBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDUpfS0ke2RpZ2l0cy5zbGljZSg1KX1gO1xuICB9XG5cbiAgbWFza1Nzbihzc24gOiBzdHJpbmcpe1xuICAgIHJldHVybiAnWFhYLVhYLScgKyBzc24uc3Vic3RyKDUsIDQpXG4gIH1cblxuICBtYXNrKHZhbHVlIDogc3RyaW5nLCBjaGFyVG9IaWRlIDogbnVtYmVyKXtcbiAgICBpZighdmFsdWUpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZih2YWx1ZS5sZW5ndGggPiBjaGFyVG9IaWRlKXtcbiAgICAgIHZhciB4eHggPSAnJztcbiAgICAgIGZvcih2YXIgY291bnQgPSAxIDsgY291bnQgPD0gY2hhclRvSGlkZSA7IGNvdW50Kyspe1xuICAgICAgICB4eHggPSAnWCcgKyB4eHg7XG4gICAgICB9XG4gICAgICByZXR1cm4geHh4ICsgdmFsdWUuc3Vic3RyKHZhbHVlLmxlbmd0aCAtIGNoYXJUb0hpZGUgKyAxLCBjaGFyVG9IaWRlKVxuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTWVzc2FnZXMoKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgfVxuXG4gIGlzU3RhdGUoc3RhdGUgOiBzdHJpbmcpIDogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZUxvd2VyY2FzZSgpID09IHN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBnZXRTdGF0ZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuU1RBVEU7XG4gIH1cblxuICBnZXRTdGF0ZUxvd2VyY2FzZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2V0dXBOYXZpZ2F0aW9uQmFzZWRFdmVudHMoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTsgLy9DbGVhciBFcnJvci9TdWNjZXNzIE1lc3NhZ2VzXG4gICAgICAgICAgdGhpcy50b3VyU2VydmljZS5zZXRDdXJyZW50U3RlcHNDb3VudCgyMCk7IC8vSm95cmlkZSBTZXR1cFxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgZ3RhZygnY29uZmlnJywgTGliQ29uc3RhbnRzLmdhSWQsIHsgJ3BhZ2VfcGF0aCc6IHZhbC51cmxBZnRlclJlZGlyZWN0cyB9KTsgLy9TZW5kIHRvIEdvb2xlIEFuYWx5dGljc1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSB7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodmFsLnNuYXBzaG90KTsgLy9TZXQgUGFnZSBUaXRsZVxuICAgICAgICAgIHRoaXMudG91clNlcnZpY2Uuc2V0U2V0cHNDb3VudCh2YWwuc25hcHNob3QuZGF0YVsncGFnZUlkJ10pO1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlVGl0bGUoc25hcHNob3QpIHtcbiAgICBsZXQgdGl0bGUgPSBzbmFwc2hvdC5kYXRhWyd0aXRsZSddO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBcIlBsZWFzZSBzcGVjaWZ5IHBhZ2UgdGl0bGUgaW4gYXBwLXJvdXRpbmcubW9kdWxlLnRzIGZpbGUgZm9yIHBhZ2UgOjogXCIgKyB0aGlzLmFyLmZpcnN0Q2hpbGQuc25hcHNob3QudXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBjb250ZXh0IHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAgKiBAdmVyc2lvbiAxLjBcbiAgICogQHBhcmFtIHZhbHVlIDogY29udGV4dCByb290IG9mIGFwcGxpY2F0aW9uLiBlLmcgaWYgYXBwbGljYXRpb24gaXMgcnVubmluZyBvbiAnaHR0cDovL2xvY2FsaG9zdDo5MDgwL2NwL3BhZ2UnIHRoZW4gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gJ2NwJ1xuICAgKiBAcmV0dXJucyBTdHJpbmdcbiAgICoqL1xuICBnZXRDb250ZXh0Um9vdCgpIDogc3RyaW5ne1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKFwiL1wiLDIpKTtcbiAgfVxuXG4gIGdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvY3BcIjtcbiAgfVxuXG4gIGdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvc3NcIjtcbiAgfVxuXG5cbiAgb3BlblBhZ2VCeUNvbnRleHRSb290KGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICBuYXYubmF2aWdhdGVSb290KHVyaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfWAgLCAnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YUFuZFR4bklkKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIHRyYW5zYWN0aW9uSWQsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKGRhdGEpe1xuICAgICAgY29uc29sZS5sb2coJ2hlcmUgd2l0aCBkYXRhJyk7XG4gICAgICBpZihuYXYgJiYgY29udGV4dC5pbmNsdWRlcyh0aGlzLmdldENvbnRleHRSb290KCkpKXtcbiAgICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfSZ0eG5pZD0ke2J0b2EodHJhbnNhY3Rpb25JZCl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9JnR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnb3IgaGVyZSB3aXRoIG5vIGRhdGEnKVxuICAgICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICAgIG5hdi5uYXZpZ2F0ZUZvcndhcmQoYCR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKG5hdiAmJiBjb250ZXh0LmluY2x1ZGVzKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSkpe1xuICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9YCwnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBtYXNrRXhjZXB0Rmlyc3RBbmRMYXN0Q2hhcih2YWx1ZSA6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdICsgXCIqXCIucmVwZWF0KHZhbHVlLmxlbmd0aCAtIDIpICsgdmFsdWUuc2xpY2UoLTEpO1xuICB9XG5cbiAgbWFza0VtYWlsKGVtYWlsIDogc3RyaW5nKXtcbiAgICB2YXIgcGFydHMgPSBlbWFpbC5zcGxpdChcIkBcIik7XG4gICAgaWYocGFydHMubGVuZ3RoID09IDIpe1xuICAgICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pICsgXCJAXCIgKyB0aGlzLm1hc2tFeGNlcHRGaXJzdEFuZExhc3RDaGFyKHBhcnRzWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pO1xuICB9XG5cbiAgaXNQbGF5Zm9ybUNhcGFjaXRvcigpe1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKCdjYXBhY2l0b3InKTtcbiAgfVxuXG4gIGlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkKCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkID09ICd0cnVlJztcbiAgfVxuXG4gIGlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5KCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5ID09ICd0cnVlJztcbiAgfVxuXG4gIGZvY3VzT25TdWJtaXQoZWw6IEVsZW1lbnRSZWYpe1xuICAgIHZhciBlbGVtZW50ID0gZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgdGhpcy5mb2N1c2FibGVzLm1hcCh4ID0+IGAke3h9Lm5nLWludmFsaWRgKS5qb2luKFwiLFwiKVxuICAgICk7XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIHByaW1lTmdDb21wb25lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIHRoaXMuZm9jdXNhYmxlcy5tYXAoeCA9PiBgJHt4fS5wLWNvbXBvbmVudGApLmpvaW4oXCIsXCIpXG4gICAgICApO1xuICAgICAgaWYgKHByaW1lTmdDb21wb25lbnQpIHtcbiAgICAgICAgcHJpbWVOZ0NvbXBvbmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gU3RhcnRcbiAgICAgIHZhciBwcmltZU5nQ29tcG9uZW50MSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdi5wLXNlbGVjdGJ1dHRvblwiKTtcbiAgICAgIGlmIChwcmltZU5nQ29tcG9uZW50MSkge1xuICAgICAgICB2YXIgcHJpbWVOZ0NvbXBvbmVudDIgPSBwcmltZU5nQ29tcG9uZW50MS5xdWVyeVNlbGVjdG9yKFwiZGl2LnAtY29tcG9uZW50XCIpO1xuICAgICAgICBpZiAocHJpbWVOZ0NvbXBvbmVudDIpIHtcbiAgICAgICAgICBwcmltZU5nQ29tcG9uZW50Mi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gRW5kXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVSYW5kb21LZXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTtcbiAgfVxuXG4gIGJhc2U2NFVybEVuY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnRvYShpbnB1dClcbiAgICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gICAgICAucmVwbGFjZSgvPSskLywgJycpO1xuICB9XG5cbiAgeG9yRW5jcnlwdChpbnB1dDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJzID0gaW5wdXRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG4gIHJldHVybiB0aGlzLmJhc2U2NFVybEVuY29kZShjaGFycyk7XG59XG5cbmJhc2U2NFVybERlY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICB3aGlsZSAoaW5wdXQubGVuZ3RoICUgNCkgaW5wdXQgKz0gJz0nO1xuICByZXR1cm4gYXRvYihpbnB1dCk7XG59XG5cbnhvckRlY3J5cHQoZW5jb2RlZDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGRlY29kZWQgPSB0aGlzLmJhc2U2NFVybERlY29kZShlbmNvZGVkKTtcbiAgcmV0dXJuIGRlY29kZWRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG59XG5cbn1cbiJdfQ==
|