@adins/ucsearch 2.0.16 → 2.0.18
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/README.md +32 -6
- package/bundles/ucsearch.umd.js +36 -2
- package/bundles/ucsearch.umd.js.map +1 -1
- package/bundles/ucsearch.umd.min.js +1 -1
- package/bundles/ucsearch.umd.min.js.map +1 -1
- package/esm2015/lib/ucsearch.component.js +41 -3
- package/esm5/lib/ucsearch.component.js +41 -3
- package/fesm2015/ucsearch.js +36 -2
- package/fesm2015/ucsearch.js.map +1 -1
- package/fesm5/ucsearch.js +36 -2
- package/fesm5/ucsearch.js.map +1 -1
- package/lib/ucsearch.component.d.ts +2 -0
- package/package.json +1 -1
- package/ucsearch.metadata.json +1 -1
|
@@ -95,9 +95,26 @@ export class UCSearchComponent {
|
|
|
95
95
|
arrayCrit.push(criteriaObject);
|
|
96
96
|
request.criteria = arrayCrit;
|
|
97
97
|
request[data.component[i].criteriaPropName] = data.component[i].criteriaPropValue;
|
|
98
|
+
// Pengecekan penggunaan url atau path
|
|
99
|
+
if (data.component[i].path != undefined && data.component[i].path != "") {
|
|
100
|
+
if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {
|
|
101
|
+
for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {
|
|
102
|
+
if (data.component[i].name == this.searchInput.ddlEnvironments[y].name) {
|
|
103
|
+
data.component[i].fullpath = this.searchInput.ddlEnvironments[y].environment + data.component[i].path;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
data.component[i].fullpath = data.component[i].url;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
data.component[i].fullpath = data.component[i].url;
|
|
114
|
+
}
|
|
98
115
|
//lempar objectnya sekalian sama urlnya, nnti di bind di dalem karena masalah di asyncnya
|
|
99
116
|
//biar tiap function ada state2nya sendiri
|
|
100
|
-
this.resolveObject(data.component[i], data.component[i].
|
|
117
|
+
this.resolveObject(data.component[i], data.component[i].fullpath, request);
|
|
101
118
|
}
|
|
102
119
|
if (data.component[i].type == "numeric") {
|
|
103
120
|
data.component[i].value = parseFloat(data.component[i].value).toLocaleString('en');
|
|
@@ -301,6 +318,7 @@ export class UCSearchComponent {
|
|
|
301
318
|
* @return {?}
|
|
302
319
|
*/
|
|
303
320
|
tempData => {
|
|
321
|
+
obj.itemsUrl = new Array();
|
|
304
322
|
obj.itemsUrl = tempData.ReturnObject;
|
|
305
323
|
}));
|
|
306
324
|
}
|
|
@@ -371,6 +389,22 @@ export class UCSearchComponent {
|
|
|
371
389
|
arrayCrit.push(critObj);
|
|
372
390
|
}
|
|
373
391
|
request.criteria = arrayCrit;
|
|
392
|
+
if (jsonComp[j].path != undefined && jsonComp[j].path != "") {
|
|
393
|
+
if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {
|
|
394
|
+
for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {
|
|
395
|
+
if (jsonComp[j].name == this.searchInput.ddlEnvironments[y].name) {
|
|
396
|
+
jsonComp[j].fullpath = this.searchInput.ddlEnvironments[y].environment + jsonComp[j].path;
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
jsonComp[j].fullpath = jsonComp[j].url;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
jsonComp[j].fullpath = jsonComp[j].url;
|
|
407
|
+
}
|
|
374
408
|
this.resolveObject(jsonComp[j], jsonComp[j].url, request);
|
|
375
409
|
}
|
|
376
410
|
}
|
|
@@ -380,7 +414,7 @@ export class UCSearchComponent {
|
|
|
380
414
|
UCSearchComponent.decorators = [
|
|
381
415
|
{ type: Component, args: [{
|
|
382
416
|
selector: 'lib-UCSearch',
|
|
383
|
-
template: "<!-- Basic form layout section start -->\r\n<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"px-3\">\r\n <form class=\"form form-horizontal\" id=\"formSearch\" #formIdSearch>\r\n <div class=\"form-body\">\r\n <h4 class=\"form-section font-weight-bold\">\r\n <div (click)=\"changeState()\" class=\"btn no-padding cursor-pointer flip\">\r\n <i class=\"fa\" style=\"font-size: 15px; margin: 0px 0px 5px -15px;\"
|
|
417
|
+
template: "<!-- Basic form layout section start -->\r\n<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"px-3\">\r\n <form class=\"form form-horizontal\" id=\"formSearch\" #formIdSearch>\r\n <div class=\"form-body\">\r\n <h4 class=\"form-section font-weight-bold\">\r\n <div (click)=\"changeState()\" class=\"btn no-padding cursor-pointer flip\">\r\n <i class=\"fa\" style=\"font-size: 15px; margin: 0px 0px 5px -15px;\" [ngClass]=\"isHidden ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\r\n </div>\r\n {{configuration?.title}} \r\n </h4>\r\n <!-- Ini Digunakan untuk Generate Dynamic Component -->\r\n <!-- [hidden]=\"isHidden\" -->\r\n <div class=\"panel-active\" [@changeDivSize]=currentState>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 form-group\"\r\n *ngFor=\"let question of configuration?.component\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <label class=\"col-md-5 no-padding\" for=\"{{question.id}}\"\r\n translate>{{question.label}}</label>\r\n <div class=\"col-md-7 no-padding\">\r\n <div *ngIf=\"question.type=='textbox'\">\r\n <input type=\"text\" id=\"{{question.id}}\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\"\r\n attr.data-type=\"{{question.datatype}}\" attr.data-restriction=\"{{question.restriction}}\" >\r\n </div>\r\n <div *ngIf=\"question.type=='textarea'\">\r\n <textarea type=\"text\" id=\"{{question.id}}\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" attr.data-type=\"{{question.datatype}}\"\r\n value=\"{{question.value}}\"></textarea>\r\n </div>\r\n <div *ngIf=\"question.type=='numeric'\">\r\n <input type=\"text\" id=\"{{question.id}}\" (focus)=\"transformToDecimal($event)\"\r\n (blur)=\"transformAmount($event)\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\"\r\n attr.data-restriction=\"{{question.restriction}}\" attr.data-type=\"{{question.datatype}}\">\r\n </div>\r\n \r\n <!-- End Hardcode Lookup didalem-->\r\n <div *ngIf=\"question.type=='datepicker'\">\r\n <input type=\"date\" id=\"{{question.id}}\" class=\"form-control search-form-control btn-lookup\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\" attr.data-type=\"{{question.datatype}}\"\r\n attr.data-restriction=\"{{question.restriction}}\">\r\n </div>\r\n <div *ngIf=\"question.type=='dropdown'\">\r\n <!-- Ini kalau datanya tidak di load dari URL -->\r\n <div *ngIf=\"!question.isFromURL\">\r\n <select name=\"{{question.name}}\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.items\" value=\"{{item.key}}\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n </div>\r\n <!-- Ini kalau datanya di load dari URL -->\r\n <div *ngIf=\"question.isFromURL\">\r\n <div *ngIf=\"question.isEvent\">\r\n <select name=\"{{question.name}}\" (change)=\"onChangeEvent($event.target.value, question)\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.itemsUrl\" value=\"{{item.Key}}\">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"!question.isEvent\">\r\n <select name=\"{{question.name}}\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.itemsUrl\" value=\"{{item.Key}}\">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 no-padding\">\r\n <form>\r\n <div class=\"form-actions right\">\r\n <button *ngIf=\"exportData == true\" type=\"button\" (click)=\"exportAsXLSX()\"\r\n class=\"btn btn-raised btn-success mr-1\" translate>\r\n <i class=\"fa ft-download\"></i> Export Excel\r\n </button>\r\n <button type=\"button\" (click)=\"reset()\" class=\"btn btn-raised btn-warning mr-1\" translate>\r\n <i class=\"fa fa-times\"></i> Reset\r\n </button>\r\n <button type=\"button\" (click)=\"searchClick()\" class=\"btn btn-raised btn-primary\" #UCSearchClick translate>\r\n <i class=\"fa fa-search\"></i> Search\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n<br>\r\n<!-- // Basic form layout section end -->",
|
|
384
418
|
providers: [ExcelService],
|
|
385
419
|
animations: [
|
|
386
420
|
trigger('changeDivSize', [
|
|
@@ -427,8 +461,12 @@ if (false) {
|
|
|
427
461
|
/** @type {?} */
|
|
428
462
|
UCSearchComponent.prototype.orderByValue;
|
|
429
463
|
/** @type {?} */
|
|
464
|
+
UCSearchComponent.prototype.tempUrl;
|
|
465
|
+
/** @type {?} */
|
|
430
466
|
UCSearchComponent.prototype.urlGet;
|
|
431
467
|
/** @type {?} */
|
|
468
|
+
UCSearchComponent.prototype.server;
|
|
469
|
+
/** @type {?} */
|
|
432
470
|
UCSearchComponent.prototype.configuration;
|
|
433
471
|
/** @type {?} */
|
|
434
472
|
UCSearchComponent.prototype.itemUrl;
|
|
@@ -477,4 +515,4 @@ if (false) {
|
|
|
477
515
|
*/
|
|
478
516
|
UCSearchComponent.prototype._document;
|
|
479
517
|
}
|
|
480
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdWNzZWFyY2gvIiwic291cmNlcyI6WyJsaWIvdWNzZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXVCakYsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7OztJQTBCNUIsWUFBb0IsSUFBZ0IsRUFBVSxZQUEwQixFQUFVLFVBQXFCLEVBQTRCLFNBQVM7UUFBeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFBO1FBdEJsSSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdB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O2lCQUNIO2FBQ0Y7Ozs7WUE5QlEsVUFBVTtZQU9WLFlBQVk7WUFUNkMsU0FBUzs0Q0EyRGlDLE1BQU0sU0FBQyxRQUFROzs7cUJBeEJ4SCxTQUFTLFNBQUMsY0FBYzswQkFDeEIsS0FBSztxQkFDTCxNQUFNOzs7O0lBRlAsbUNBQThDOztJQUM5Qyx3Q0FBMEI7O0lBQzFCLG1DQUF5RDs7SUFDekQscUNBQW1COztJQUNuQixvQ0FBaUI7O0lBQ2pCLHVDQUFnQjs7SUFDaEIseUNBQWtCOztJQUNsQixtQ0FBZTs7SUFDZiwwQ0FBbUI7O0lBQ25CLG9DQUFhOztJQUNiLHVDQUFnQjs7SUFDaEIsc0NBQWU7O0lBQ2YseUNBQThCOztJQUM5QixxQ0FBMEI7O0lBRTFCLHlDQUF5Qjs7SUFFekIsaUNBQWdCOztJQUNoQixvQ0FBYTs7SUFDYixzQ0FBYzs7SUFDZCw0Q0FBcUI7O0lBQ3JCLG1DQUFXOztJQUNYLG1DQUFlOztJQUNmLG9DQUFhOzs7OztJQUNELGlDQUF3Qjs7Ozs7SUFBRSx5Q0FBa0M7Ozs7O0lBQUUsdUNBQTZCOzs7OztJQUFFLHNDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbmplY3QsIFJlbmRlcmVyMiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFPYmogfSBmcm9tICcuL21vZGVsL0NyaXRlcmlhT2JqLk1vZGVsJztcclxuaW1wb3J0IHsgUmVxdWVzdENyaXRlcmlhT2JqIH0gZnJvbSAnLi9tb2RlbC9SZXF1ZXN0Q3JpdGVyaWFPYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBBZEluc0NvbnN0YW50IH0gZnJvbSAnLi9tb2RlbC9BZEluc3RDb25zdGFudCc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXhjZWwtc2VydmljZS9leGNlbC1zZXJ2aWNlJztcclxuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1VQ1NlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Vjc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG4gIHByb3ZpZGVyczogW0V4Y2VsU2VydmljZV0sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignY2hhbmdlRGl2U2l6ZScsIFtcclxuICAgICAgc3RhdGUoJ2luaXRpYWwnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgb3BhY2l0eTogJzEnLFxyXG4gICAgICB9KSksXHJcbiAgICAgIHN0YXRlKCdmaW5hbCcsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcwcHgnLFxyXG4gICAgICAgIG9wYWNpdHk6ICcwJyxcclxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignaW5pdGlhbD0+ZmluYWwnLCBhbmltYXRlKCczMDBtcycpKSxcclxuICAgICAgdHJhbnNpdGlvbignZmluYWw9PmluaXRpYWwnLCBhbmltYXRlKCczMDBtcycpKVxyXG4gICAgXSksXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVUNTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtSWRTZWFyY2gnKSBteUZvcm06IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgc2VhcmNoSW5wdXQ6IGFueTtcclxuICBAT3V0cHV0KCkgcmVzdWx0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwYWdlU2l6ZTogYW55ID0gMTA7XHJcbiAgcGFnZU5vdzogYW55ID0gMTtcclxuICBvcmRlckJ5S2V5OiBhbnk7XHJcbiAgb3JkZXJCeVZhbHVlOiBhbnk7XHJcbiAgdXJsR2V0OiBzdHJpbmc7XHJcbiAgY29uZmlndXJhdGlvbjogYW55O1xyXG4gIGl0ZW1Vcmw6IGFueTtcclxuICBleHBvcnREYXRhOiBhbnk7XHJcbiAgRXhjZWxEYXRhOiBhbnk7XHJcbiAgaXNEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudFN0YXRlID0gJ2luaXRpYWwnO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5TG9hZCA9ICcnO1xyXG4gIGNvdW50Rm9ybSA9IDA7XHJcbiAgZm9ybWF0dGVkQW1vdW50ID0gJyc7XHJcbiAgYW1vdW50ID0gMDtcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcnJDcml0OiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlLCBwcml2YXRlIF9yZW5kZXJlcjI6IFJlbmRlcmVyMiwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQpIHtcclxuICB9XHJcblxyXG4gIC8vIGhpZGUob2JqOmFueSl7XHJcbiAgLy8gICB2YXIgdGFyZ2V0ID1ldmVudC5zcmNFbGVtZW50O1xyXG4gIC8vICAgLy8gdmFyIGlkQXR0ciA9IHRhcmdldC5hdHRyaWJ1dGVzLmlkO1xyXG4gIC8vICAgLy8gdmFyIHZhbHVlID0gaWRBdHRyLm5vZGVWYWx1ZTtcclxuICAvLyB9XHJcblxyXG4gIGNoYW5nZVN0YXRlKCkge1xyXG4gICAgdGhpcy5jdXJyZW50U3RhdGUgPSB0aGlzLmN1cnJlbnRTdGF0ZSA9PT0gJ2luaXRpYWwnID8gJ2ZpbmFsJyA6ICdpbml0aWFsJztcclxuICAgIHRoaXMuaXNIaWRkZW4gPSB0aGlzLmlzSGlkZGVuID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLnNlYXJjaElucHV0LmVudmlyb21lbnRVcmwgKyB0aGlzLnNlYXJjaElucHV0LmFwaVFyeVBhZ2luZztcclxuICAgIHRoaXMuYXJyQ3JpdCA9IHRoaXMuc2VhcmNoSW5wdXQuYXJyQ3JpdE9iajtcclxuICAgIGxldCBqcyA9IHRoaXMuX3JlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIGpzLnRleHQgPSBgXHJcbiAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAkKFwiI2ZsaXBcIikuY2xpY2soZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAkKFwiI3BhbmVsXCIpLnNsaWRlVG9nZ2xlKFwic2xvd1wiKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBgO1xyXG4gICAgdGhpcy5fcmVuZGVyZXIyLmFwcGVuZENoaWxkKHRoaXMuX2RvY3VtZW50LmJvZHksIGpzKTtcclxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmdldEpTT04odGhpcy5zZWFyY2hJbnB1dC5fdXJsKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBkYXRhO1xyXG4gICAgICB0aGlzLnVybEdldCA9IGRhdGEudXJsO1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGEgPSBkYXRhLmV4cG9ydEV4Y2VsO1xyXG4gICAgICB0aGlzLmNvdW50Rm9ybSA9IGRhdGEuY29tcG9uZW50Lmxlbmd0aDtcclxuICAgICAgdGhpcy5pc0RhdGFMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvdW50Rm9ybTsgaSsrKSB7XHJcbiAgICAgICAgLy9pbmkga2FsYXUgZGF0YW55YSBkaSBsb2FkIGRhcmkgVVJMXHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLmlzRnJvbVVSTCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgIHZhciBhcnJheUNyaXQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgIHZhciBjcml0ZXJpYU9iamVjdCA9IG5ldyBDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QuRGF0YVR5cGUgPSBcInRleHRcIjtcclxuICAgICAgICAgIGNyaXRlcmlhT2JqZWN0LnByb3BOYW1lID0gZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wTmFtZTtcclxuICAgICAgICAgIGNyaXRlcmlhT2JqZWN0LnZhbHVlID0gZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wVmFsdWU7XHJcbiAgICAgICAgICBjcml0ZXJpYU9iamVjdC5yZXN0cmljdGlvbiA9IFwiZXFcIjtcclxuICAgICAgICAgIGFycmF5Q3JpdC5wdXNoKGNyaXRlcmlhT2JqZWN0KTtcclxuICAgICAgICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBhcnJheUNyaXQ7XHJcbiAgICAgICAgICByZXF1ZXN0W2RhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcE5hbWVdID0gZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wVmFsdWU7XHJcblxyXG4gICAgICAgICAgLy9sZW1wYXIgb2JqZWN0bnlhIHNla2FsaWFuIHNhbWEgdXJsbnlhLCBubnRpIGRpIGJpbmQgZGkgZGFsZW0ga2FyZW5hIG1hc2FsYWggZGkgYXN5bmNueWFcclxuICAgICAgICAgIC8vYmlhciB0aWFwIGZ1bmN0aW9uIGFkYSBzdGF0ZTJueWEgc2VuZGlyaVxyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlT2JqZWN0KGRhdGEuY29tcG9uZW50W2ldLCBkYXRhLmNvbXBvbmVudFtpXS51cmwsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJudW1lcmljXCIpIHtcclxuICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gcGFyc2VGbG9hdChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2VuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3BlbmdlY2VrYW4gdGFuZ2dhbFxyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwiZGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udmFsdWUuaW5jbHVkZXMoXCJCRFwiKSkge1xyXG4gICAgICAgICAgICBsZXQgYnVzaW5lc3NEYXRlID0gbmV3IERhdGUoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJDb250ZXh0XCIpKS5CdXNpbmVzc0RhdGUpO1xyXG4gICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5jaGFyQXQoMik7XHJcbiAgICAgICAgICAgIHZhciBkYXRlU2hvdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgIHZhciB0ZW1wTWludXMgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5zcGxpdChcIi1cIiwgMik7XHJcbiAgICAgICAgICAgICAgdmFyIG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgICAgZGF0ZVNob3cuc2V0RGF0ZShidXNpbmVzc0RhdGUuZ2V0RGF0ZSgpIC0gbnVtRGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChvcGVyYXRvciA9PSBcIitcIikge1xyXG4gICAgICAgICAgICAgIHZhciB0ZW1wTWludXMgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5zcGxpdChcIitcIiwgMik7XHJcbiAgICAgICAgICAgICAgdmFyIG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgICAgZGF0ZVNob3cuc2V0RGF0ZShidXNpbmVzc0RhdGUuZ2V0RGF0ZSgpICsgbnVtRGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZGF0ZVRleHQgPSBmb3JtYXREYXRlKGRhdGVTaG93LCAneXl5eS1NTS1kZCcsICdlbi1VUycpXHJcbiAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gZGF0ZVRleHQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRKU09OKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zdEpTT04odXJsOiBzdHJpbmcsIGNyaXRlcmlhOiBhbnkgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWNrKCkge1xyXG4gICAgdGhpcy5vcmRlckJ5S2V5ID0gbnVsbFxyXG4gICAgdGhpcy5vcmRlckJ5VmFsdWUgPSB0cnVlXHJcbiAgICB0aGlzLnBhZ2VOb3cgPSAxO1xyXG4gICAgdGhpcy5zZWFyY2godGhpcy5hcGlVcmwsIHRoaXMucGFnZU5vdywgdGhpcy5wYWdlU2l6ZSwgbnVsbCwgdGhpcy5hcnJDcml0KTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChhcGlVcmw6IHN0cmluZywgcGFnZU5vOiBudW1iZXIsIHJvd1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogYW55LCBhZGRDcml0OiBDcml0ZXJpYU9ialtdID0gbmV3IEFycmF5KCkpIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgdmFyIGFyckNyaXQgPSBuZXcgQXJyYXkoKTtcclxuICAgIHZhciBJc1F1ZXJ5SW4gPSBmYWxzZTtcclxuXHJcbiAgICByZXF1ZXN0LnBhZ2VObyA9IHBhZ2VObztcclxuICAgIHJlcXVlc3Qucm93UGVyUGFnZSA9IHJvd1BlclBhZ2U7XHJcbiAgICByZXF1ZXN0Lm9yZGVyQnkgPSBvcmRlckJ5O1xyXG4gICAgcmVxdWVzdC5xdWVyeVN0cmluZyA9IHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgdmFyIGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbaV07XHJcbiAgICAgIGNyaXRPYmouRGF0YVR5cGUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKTtcclxuICAgICAgLy9Jbmkga2h1c3VzIGthbGF1IGRhcmkgRHJvcCBEb3duXHJcbiAgICAgIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdxdWVyeS1pbicpICE9IG51bGwgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgncXVlcnktaW4nKSA9PSBcInRydWVcIikge1xyXG4gICAgICAgIElzUXVlcnlJbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgSXNRdWVyeUluID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5ub2RlTmFtZSA9PSAnU0VMRUNUJykge1xyXG4gICAgICAgICAgdmFyIGRkbCA9IGNvbXBvbmVudC5vcHRpb25zO1xyXG4gICAgICAgICAgdmFyIHRleHQgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKHRleHQgIT0gXCJBbGxcIikge1xyXG4gICAgICAgICAgICAvL0thbGF1IERhcmkgRHJvcGRvd24gdWRhaCBwYXN0aSBwYWtlIEVxXHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXE7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGV4dCA9PSBcIkFsbFwiICYmIElzUXVlcnlJbiA9PSB0cnVlICYmIGNvbXBvbmVudC5vcHRpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBkZGxMaXN0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgY29tcG9uZW50Lm9wdGlvbnMubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAgICAgICBpZiAoeCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBkZGxMaXN0LnB1c2goY29tcG9uZW50Lm9wdGlvbnNbeF0udmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkluO1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoubGlzdFZhbHVlID0gZGRsTGlzdDtcclxuICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vS2FsYXUgYWRhIFBlcmNlbnQgbWFrYSB5YW5nIGRpcGFrZSBubnRpIGFkYWxhaCBSZXN0cmljdGlvbnMgTGlrZVxyXG4gICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5uYW1lO1xyXG4gICAgICAgICAgY3JpdE9iai52YWx1ZSA9IGNvbXBvbmVudC52YWx1ZTtcclxuICAgICAgICAgIGlmIChjb21wb25lbnQudmFsdWUuaW5jbHVkZXMoXCIlXCIpKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uTGlrZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8va2FsYXUgY29tcG9uZW50bnlhIERhdGUsIHJlc3RyaWN0aW9uc255YSBsZ3NnIGFtYmlsIGRhcmkgcHJvcGVydHkgSlNPTm55YVxyXG4gICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IFwiXCIgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdHJpY3Rpb24nKTtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpID09ICdudW1lcmljJykge1xyXG4gICAgICAgICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHBhcnNlRmxvYXQoY29tcG9uZW50LnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXFcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWRkQ3JpdCAhPSBudWxsICYmIGFkZENyaXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChhZGRDcml0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRDcml0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2goYWRkQ3JpdFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYXJyQ3JpdC5wdXNoKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJDcml0LnB1c2godGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXRbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFyckNyaXQ7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGlVcmwsIHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdmFyIHFyeVBhZ2luZyA9IHtcclxuICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXHJcbiAgICAgICAgcGFnZU5vdzogcGFnZU5vXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocXJ5UGFnaW5nKTtcclxuICAgICAgdGhpcy5yZXN1bHQuZW1pdChxcnlQYWdpbmcpO1xyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxlc3NUaGFuRm91cigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvdW50Rm9ybSA+IDMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZU9iamVjdChvYmo6IGFueSwgdXJsOiBzdHJpbmcsIGNyaXQ6IFJlcXVlc3RDcml0ZXJpYU9iaiA9IG51bGwpIHtcclxuICAgIGNvbnN0IHZhbCA9IHRoaXMucG9zdEpTT04odXJsLCBjcml0KTtcclxuICAgIHZhbC5zdWJzY3JpYmUodGVtcERhdGEgPT4ge1xyXG4gICAgICBvYmouaXRlbXNVcmwgPSB0ZW1wRGF0YS5SZXR1cm5PYmplY3Q7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybUFtb3VudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkQW1vdW50ID0gcGFyc2VGbG9hdChlbGVtZW50LnRhcmdldC52YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2VuJyk7XHJcbiAgICAvLyB0byBzaG93IHRoZSBmb3JtYXR0ZWQgYW1vdW50IGluIHRoZSB0ZXh0Ym94LlxyXG4gICAgZWxlbWVudC50YXJnZXQudmFsdWUgPSB0aGlzLmZvcm1hdHRlZEFtb3VudDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybVRvRGVjaW1hbChlbGVtZW50OiBhbnkpIHtcclxuICAgIGVsZW1lbnQudGFyZ2V0LnZhbHVlID0gcGFyc2VGbG9hdChlbGVtZW50LnRhcmdldC52YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEFzWExTWCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgcmVxdWVzdC5wYWdlTm8gPSAxO1xyXG4gICAgcmVxdWVzdC5yb3dQZXJQYWdlID0gOTk5OTtcclxuICAgIHJlcXVlc3Qub3JkZXJCeSA9IG51bGw7XHJcbiAgICByZXF1ZXN0LmNyaXRlcmlhID0gW107XHJcbiAgICByZXF1ZXN0LnF1ZXJ5U3RyaW5nID0gdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nO1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpVXJsLCByZXF1ZXN0KS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICB0aGlzLkV4Y2VsRGF0YSA9IHJlc3BvbnNlW1wiRGF0YVwiXTtcclxuICAgICAgICB0aGlzLmV4Y2VsU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZSh0aGlzLkV4Y2VsRGF0YSwgJ3NhbXBsZScpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VFdmVudChvcHRWYWx1ZSwgYWZGaWx0ZXIpIHtcclxuICAgIHZhciBqc29uQ29tcCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQ7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZkZpbHRlci5hZmZlY3RlZEZpbHRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGpzb25Db21wLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGpzb25Db21wW2pdLm5hbWUgPT0gYWZGaWx0ZXIuYWZmZWN0ZWRGaWx0ZXJbaV0pIHtcclxuICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgdmFyIGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSAhPSBcIkFsbFwiKSB7XHJcbiAgICAgICAgICAgIHZhciBjcml0T2JqID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICAgIGNyaXRPYmouRGF0YVR5cGUgPSBhZkZpbHRlci5kYXRhdHlwZTtcclxuICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGFmRmlsdGVyLm5hbWU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSBvcHRWYWx1ZTtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25FcTtcclxuICAgICAgICAgICAgYXJyYXlDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyYXlDcml0O1xyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlT2JqZWN0KGpzb25Db21wW2pdLCBqc29uQ29tcFtqXS51cmwsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
518
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdWNzZWFyY2gvIiwic291cmNlcyI6WyJsaWIvdWNzZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXVCakYsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7OztJQTRCNUIsWUFBb0IsSUFBZ0IsRUFBVSxZQUEwQixFQUFVLFVBQXFCLEVBQTRCLFNBQVM7UUFBeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFBO1FBeEJsSSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdB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MEI7O0lBQzFCLG1DQUF5RDs7SUFDekQscUNBQW1COztJQUNuQixvQ0FBaUI7O0lBQ2pCLHVDQUFnQjs7SUFDaEIseUNBQWtCOztJQUNsQixvQ0FBZ0I7O0lBQ2hCLG1DQUFlOztJQUNmLG1DQUFZOztJQUNaLDBDQUFtQjs7SUFDbkIsb0NBQWE7O0lBQ2IsdUNBQWdCOztJQUNoQixzQ0FBZTs7SUFDZix5Q0FBOEI7O0lBQzlCLHFDQUEwQjs7SUFFMUIseUNBQXlCOztJQUV6QixpQ0FBZ0I7O0lBQ2hCLG9DQUFhOztJQUNiLHNDQUFjOztJQUNkLDRDQUFxQjs7SUFDckIsbUNBQVc7O0lBQ1gsbUNBQWU7O0lBQ2Ysb0NBQWE7Ozs7O0lBQ0QsaUNBQXdCOzs7OztJQUFFLHlDQUFrQzs7Ozs7SUFBRSx1Q0FBNkI7Ozs7O0lBQUUsc0NBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEluamVjdCwgUmVuZGVyZXIyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU9iaiB9IGZyb20gJy4vbW9kZWwvQ3JpdGVyaWFPYmouTW9kZWwnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0Q3JpdGVyaWFPYmogfSBmcm9tICcuL21vZGVsL1JlcXVlc3RDcml0ZXJpYU9iai5tb2RlbCc7XHJcbmltcG9ydCB7IEFkSW5zQ29uc3RhbnQgfSBmcm9tICcuL21vZGVsL0FkSW5zdENvbnN0YW50JztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRXhjZWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9leGNlbC1zZXJ2aWNlL2V4Y2VsLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSwgc3RhdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLVVDU2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWNzZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbiAgcHJvdmlkZXJzOiBbRXhjZWxTZXJ2aWNlXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdjaGFuZ2VEaXZTaXplJywgW1xyXG4gICAgICBzdGF0ZSgnaW5pdGlhbCcsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcqJyxcclxuICAgICAgICBvcGFjaXR5OiAnMScsXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2ZpbmFsJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogJzBweCcsXHJcbiAgICAgICAgb3BhY2l0eTogJzAnLFxyXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcclxuICAgICAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbml0aWFsPT5maW5hbCcsIGFuaW1hdGUoJzMwMG1zJykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmaW5hbD0+aW5pdGlhbCcsIGFuaW1hdGUoJzMwMG1zJykpXHJcbiAgICBdKSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVQ1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1JZFNlYXJjaCcpIG15Rm9ybTogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzZWFyY2hJbnB1dDogYW55O1xyXG4gIEBPdXRwdXQoKSByZXN1bHQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHBhZ2VTaXplOiBhbnkgPSAxMDtcclxuICBwYWdlTm93OiBhbnkgPSAxO1xyXG4gIG9yZGVyQnlLZXk6IGFueTtcclxuICBvcmRlckJ5VmFsdWU6IGFueTtcclxuICB0ZW1wVXJsOiBzdHJpbmc7XHJcbiAgdXJsR2V0OiBzdHJpbmc7XHJcbiAgc2VydmVyOiBhbnk7XHJcbiAgY29uZmlndXJhdGlvbjogYW55O1xyXG4gIGl0ZW1Vcmw6IGFueTtcclxuICBleHBvcnREYXRhOiBhbnk7XHJcbiAgRXhjZWxEYXRhOiBhbnk7XHJcbiAgaXNEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudFN0YXRlID0gJ2luaXRpYWwnO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5TG9hZCA9ICcnO1xyXG4gIGNvdW50Rm9ybSA9IDA7XHJcbiAgZm9ybWF0dGVkQW1vdW50ID0gJyc7XHJcbiAgYW1vdW50ID0gMDtcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcnJDcml0OiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlLCBwcml2YXRlIF9yZW5kZXJlcjI6IFJlbmRlcmVyMiwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQpIHtcclxuICB9XHJcbiAgLy8gaGlkZShvYmo6YW55KXtcclxuICAvLyAgIHZhciB0YXJnZXQgPWV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgLy8gICAvLyB2YXIgaWRBdHRyID0gdGFyZ2V0LmF0dHJpYnV0ZXMuaWQ7XHJcbiAgLy8gICAvLyB2YXIgdmFsdWUgPSBpZEF0dHIubm9kZVZhbHVlO1xyXG4gIC8vIH1cclxuXHJcbiAgY2hhbmdlU3RhdGUoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9IHRoaXMuY3VycmVudFN0YXRlID09PSAnaW5pdGlhbCcgPyAnZmluYWwnIDogJ2luaXRpYWwnO1xyXG4gICAgdGhpcy5pc0hpZGRlbiA9IHRoaXMuaXNIaWRkZW4gPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuc2VhcmNoSW5wdXQuZW52aXJvbWVudFVybCArIHRoaXMuc2VhcmNoSW5wdXQuYXBpUXJ5UGFnaW5nO1xyXG4gICAgdGhpcy5hcnJDcml0ID0gdGhpcy5zZWFyY2hJbnB1dC5hcnJDcml0T2JqO1xyXG4gICAgbGV0IGpzID0gdGhpcy5fcmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAganMudGV4dCA9IGBcclxuICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoXCIjZmxpcFwiKS5jbGljayhmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICQoXCIjcGFuZWxcIikuc2xpZGVUb2dnbGUoXCJzbG93XCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGA7XHJcbiAgICB0aGlzLl9yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwganMpO1xyXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZ2V0SlNPTih0aGlzLnNlYXJjaElucHV0Ll91cmwpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGRhdGE7XHJcbiAgICAgIHRoaXMudXJsR2V0ID0gZGF0YS51cmw7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YSA9IGRhdGEuZXhwb3J0RXhjZWw7XHJcbiAgICAgIHRoaXMuY291bnRGb3JtID0gZGF0YS5jb21wb25lbnQubGVuZ3RoO1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgICAvL2luaSBrYWxhdSBkYXRhbnlhIGRpIGxvYWQgZGFyaSBVUkxcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uaXNGcm9tVVJMID09IHRydWUpIHtcclxuICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgdmFyIGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgdmFyIGNyaXRlcmlhT2JqZWN0ID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICBjcml0ZXJpYU9iamVjdC5EYXRhVHlwZSA9IFwidGV4dFwiO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QucHJvcE5hbWUgPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QudmFsdWUgPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BWYWx1ZTtcclxuICAgICAgICAgIGNyaXRlcmlhT2JqZWN0LnJlc3RyaWN0aW9uID0gXCJlcVwiO1xyXG4gICAgICAgICAgYXJyYXlDcml0LnB1c2goY3JpdGVyaWFPYmplY3QpO1xyXG4gICAgICAgICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFycmF5Q3JpdDtcclxuICAgICAgICAgIHJlcXVlc3RbZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wTmFtZV0gPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BWYWx1ZTtcclxuXHJcbiAgICAgICAgICAvLyBQZW5nZWNla2FuIHBlbmdndW5hYW4gdXJsIGF0YXUgcGF0aFxyXG4gICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnBhdGggIT0gdW5kZWZpbmVkICYmIGRhdGEuY29tcG9uZW50W2ldLnBhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHMgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50cy5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLm5hbWUgPT0gdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHNbeV0ubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5mdWxscGF0aCA9IHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzW3ldLmVudmlyb25tZW50ICsgZGF0YS5jb21wb25lbnRbaV0ucGF0aDtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoID0gZGF0YS5jb21wb25lbnRbaV0udXJsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0uZnVsbHBhdGggPSBkYXRhLmNvbXBvbmVudFtpXS51cmw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvL2xlbXBhciBvYmplY3RueWEgc2VrYWxpYW4gc2FtYSB1cmxueWEsIG5udGkgZGkgYmluZCBkaSBkYWxlbSBrYXJlbmEgbWFzYWxhaCBkaSBhc3luY255YVxyXG4gICAgICAgICAgLy9iaWFyIHRpYXAgZnVuY3Rpb24gYWRhIHN0YXRlMm55YSBzZW5kaXJpXHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVPYmplY3QoZGF0YS5jb21wb25lbnRbaV0sIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoLCByZXF1ZXN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwibnVtZXJpY1wiKSB7XHJcbiAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IHBhcnNlRmxvYXQoZGF0YS5jb21wb25lbnRbaV0udmFsdWUpLnRvTG9jYWxlU3RyaW5nKCdlbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9wZW5nZWNla2FuIHRhbmdnYWxcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcImRhdGVwaWNrZXJcIikge1xyXG4gICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLmluY2x1ZGVzKFwiQkRcIikpIHtcclxuICAgICAgICAgICAgbGV0IGJ1c2luZXNzRGF0ZSA9IG5ldyBEYXRlKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJVc2VyQ29udGV4dFwiKSkuQnVzaW5lc3NEYXRlKTtcclxuICAgICAgICAgICAgdmFyIG9wZXJhdG9yID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuY2hhckF0KDIpO1xyXG4gICAgICAgICAgICB2YXIgZGF0ZVNob3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAob3BlcmF0b3IgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICB2YXIgdGVtcE1pbnVzID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuc3BsaXQoXCItXCIsIDIpO1xyXG4gICAgICAgICAgICAgIHZhciBudW1EYXkgPSBwYXJzZUludCh0ZW1wTWludXNbMV0pO1xyXG4gICAgICAgICAgICAgIGRhdGVTaG93LnNldERhdGUoYnVzaW5lc3NEYXRlLmdldERhdGUoKSAtIG51bURheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3BlcmF0b3IgPT0gXCIrXCIpIHtcclxuICAgICAgICAgICAgICB2YXIgdGVtcE1pbnVzID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuc3BsaXQoXCIrXCIsIDIpO1xyXG4gICAgICAgICAgICAgIHZhciBudW1EYXkgPSBwYXJzZUludCh0ZW1wTWludXNbMV0pO1xyXG4gICAgICAgICAgICAgIGRhdGVTaG93LnNldERhdGUoYnVzaW5lc3NEYXRlLmdldERhdGUoKSArIG51bURheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGRhdGVUZXh0ID0gZm9ybWF0RGF0ZShkYXRlU2hvdywgJ3l5eXktTU0tZGQnLCAnZW4tVVMnKVxyXG4gICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IGRhdGVUZXh0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SlNPTih1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3RKU09OKHVybDogc3RyaW5nLCBjcml0ZXJpYTogYW55ID0gbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBjcml0ZXJpYSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDbGljaygpIHtcclxuICAgIHRoaXMub3JkZXJCeUtleSA9IG51bGxcclxuICAgIHRoaXMub3JkZXJCeVZhbHVlID0gdHJ1ZVxyXG4gICAgdGhpcy5wYWdlTm93ID0gMTtcclxuICAgIHRoaXMuc2VhcmNoKHRoaXMuYXBpVXJsLCB0aGlzLnBhZ2VOb3csIHRoaXMucGFnZVNpemUsIG51bGwsIHRoaXMuYXJyQ3JpdCk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goYXBpVXJsOiBzdHJpbmcsIHBhZ2VObzogbnVtYmVyLCByb3dQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IGFueSwgYWRkQ3JpdDogQ3JpdGVyaWFPYmpbXSA9IG5ldyBBcnJheSgpKSB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q3JpdGVyaWFPYmooKTtcclxuICAgIHZhciBhcnJDcml0ID0gbmV3IEFycmF5KCk7XHJcbiAgICB2YXIgSXNRdWVyeUluID0gZmFsc2U7XHJcblxyXG4gICAgcmVxdWVzdC5wYWdlTm8gPSBwYWdlTm87XHJcbiAgICByZXF1ZXN0LnJvd1BlclBhZ2UgPSByb3dQZXJQYWdlO1xyXG4gICAgcmVxdWVzdC5vcmRlckJ5ID0gb3JkZXJCeTtcclxuICAgIHJlcXVlc3QucXVlcnlTdHJpbmcgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvdW50Rm9ybTsgaSsrKSB7XHJcbiAgICAgIHZhciBjcml0T2JqID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W2ldO1xyXG4gICAgICBjcml0T2JqLkRhdGFUeXBlID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyk7XHJcbiAgICAgIC8vSW5pIGtodXN1cyBrYWxhdSBkYXJpIERyb3AgRG93blxyXG4gICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgncXVlcnktaW4nKSAhPSBudWxsICYmIGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ3F1ZXJ5LWluJykgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICBJc1F1ZXJ5SW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIElzUXVlcnlJbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb21wb25lbnQudmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQubm9kZU5hbWUgPT0gJ1NFTEVDVCcpIHtcclxuICAgICAgICAgIHZhciBkZGwgPSBjb21wb25lbnQub3B0aW9ucztcclxuICAgICAgICAgIHZhciB0ZXh0ID0gZGRsW2RkbC5zZWxlY3RlZEluZGV4XS52YWx1ZTtcclxuICAgICAgICAgIGlmICh0ZXh0ICE9IFwiQWxsXCIpIHtcclxuICAgICAgICAgICAgLy9LYWxhdSBEYXJpIERyb3Bkb3duIHVkYWggcGFzdGkgcGFrZSBFcVxyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRleHQgPT0gXCJBbGxcIiAmJiBJc1F1ZXJ5SW4gPT0gdHJ1ZSAmJiBjb21wb25lbnQub3B0aW9ucy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICB2YXIgZGRsTGlzdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGNvbXBvbmVudC5vcHRpb25zLmxlbmd0aDsgeCsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZGRsTGlzdC5wdXNoKGNvbXBvbmVudC5vcHRpb25zW3hdLnZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25JbjtcclxuICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5uYW1lO1xyXG4gICAgICAgICAgICBjcml0T2JqLmxpc3RWYWx1ZSA9IGRkbExpc3Q7XHJcbiAgICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvL0thbGF1IGFkYSBQZXJjZW50IG1ha2EgeWFuZyBkaXBha2Ugbm50aSBhZGFsYWggUmVzdHJpY3Rpb25zIExpa2VcclxuICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSBjb21wb25lbnQudmFsdWU7XHJcbiAgICAgICAgICBpZiAoY29tcG9uZW50LnZhbHVlLmluY2x1ZGVzKFwiJVwiKSkge1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkxpa2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvL2thbGF1IGNvbXBvbmVudG55YSBEYXRlLCByZXN0cmljdGlvbnNueWEgbGdzZyBhbWJpbCBkYXJpIHByb3BlcnR5IEpTT05ueWFcclxuICAgICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdHJpY3Rpb24nKSAhPSBcIlwiICYmIGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdHJpY3Rpb24nKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3RyaWN0aW9uJyk7XHJcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSA9PSAnbnVtZXJpYycpIHtcclxuICAgICAgICAgICAgICBjb21wb25lbnQudmFsdWUgPSBwYXJzZUZsb2F0KGNvbXBvbmVudC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFkZENyaXQgIT0gbnVsbCAmJiBhZGRDcml0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoYWRkQ3JpdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkQ3JpdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYXJyQ3JpdC5wdXNoKGFkZENyaXRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSBudWxsIHx8IHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGFyckNyaXQucHVzaCh0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSBudWxsIHx8IHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyQ3JpdC5wdXNoKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0W2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBhcnJDcml0O1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpVXJsLCByZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHZhciBxcnlQYWdpbmcgPSB7XHJcbiAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLFxyXG4gICAgICAgIHBhZ2VOb3c6IHBhZ2VOb1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHFyeVBhZ2luZyk7XHJcbiAgICAgIHRoaXMucmVzdWx0LmVtaXQocXJ5UGFnaW5nKTtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsZXNzVGhhbkZvdXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb3VudEZvcm0gPiAzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc29sdmVPYmplY3Qob2JqOiBhbnksIHVybDogc3RyaW5nLCBjcml0OiBSZXF1ZXN0Q3JpdGVyaWFPYmogPSBudWxsKSB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLnBvc3RKU09OKHVybCwgY3JpdCk7XHJcbiAgICB2YWwuc3Vic2NyaWJlKHRlbXBEYXRhID0+IHtcclxuICAgICAgb2JqLml0ZW1zVXJsID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIG9iai5pdGVtc1VybCA9IHRlbXBEYXRhLlJldHVybk9iamVjdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtQW1vdW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWRBbW91bnQgPSBwYXJzZUZsb2F0KGVsZW1lbnQudGFyZ2V0LnZhbHVlKS50b0xvY2FsZVN0cmluZygnZW4nKTtcclxuICAgIC8vIHRvIHNob3cgdGhlIGZvcm1hdHRlZCBhbW91bnQgaW4gdGhlIHRleHRib3guXHJcbiAgICBlbGVtZW50LnRhcmdldC52YWx1ZSA9IHRoaXMuZm9ybWF0dGVkQW1vdW50O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtVG9EZWNpbWFsKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgZWxlbWVudC50YXJnZXQudmFsdWUgPSBwYXJzZUZsb2F0KGVsZW1lbnQudGFyZ2V0LnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QXNYTFNYKCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICByZXF1ZXN0LnBhZ2VObyA9IDE7XHJcbiAgICByZXF1ZXN0LnJvd1BlclBhZ2UgPSA5OTk5O1xyXG4gICAgcmVxdWVzdC5vcmRlckJ5ID0gbnVsbDtcclxuICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBbXTtcclxuICAgIHJlcXVlc3QucXVlcnlTdHJpbmcgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmc7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGlVcmwsIHJlcXVlc3QpLnN1YnNjcmliZShcclxuICAgICAgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuRXhjZWxEYXRhID0gcmVzcG9uc2VbXCJEYXRhXCJdO1xyXG4gICAgICAgIHRoaXMuZXhjZWxTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHRoaXMuRXhjZWxEYXRhLCAnc2FtcGxlJyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUV2ZW50KG9wdFZhbHVlLCBhZkZpbHRlcikge1xyXG4gICAgdmFyIGpzb25Db21wID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudDtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmRmlsdGVyLmFmZmVjdGVkRmlsdGVyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwganNvbkNvbXAubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAoanNvbkNvbXBbal0ubmFtZSA9PSBhZkZpbHRlci5hZmZlY3RlZEZpbHRlcltpXSkge1xyXG4gICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICB2YXIgYXJyYXlDcml0ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdFZhbHVlICE9IFwiQWxsXCIpIHtcclxuICAgICAgICAgICAgdmFyIGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgICAgY3JpdE9iai5EYXRhVHlwZSA9IGFmRmlsdGVyLmRhdGF0eXBlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gYWZGaWx0ZXIubmFtZTtcclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICBhcnJheUNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBhcnJheUNyaXQ7XHJcbiAgICAgICAgICBpZiAoanNvbkNvbXBbal0ucGF0aCAhPSB1bmRlZmluZWQgJiYganNvbkNvbXBbal0ucGF0aCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50cyAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzLmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoanNvbkNvbXBbal0ubmFtZSA9PSB0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50c1t5XS5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIGpzb25Db21wW2pdLmZ1bGxwYXRoID0gdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHNbeV0uZW52aXJvbm1lbnQgKyBqc29uQ29tcFtqXS5wYXRoO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAganNvbkNvbXBbal0uZnVsbHBhdGggPSBqc29uQ29tcFtqXS51cmw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IGpzb25Db21wW2pdLnVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVzb2x2ZU9iamVjdChqc29uQ29tcFtqXSwganNvbkNvbXBbal0udXJsLCByZXF1ZXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -104,9 +104,26 @@ var UCSearchComponent = /** @class */ (function () {
|
|
|
104
104
|
arrayCrit.push(criteriaObject);
|
|
105
105
|
request.criteria = arrayCrit;
|
|
106
106
|
request[data.component[i].criteriaPropName] = data.component[i].criteriaPropValue;
|
|
107
|
+
// Pengecekan penggunaan url atau path
|
|
108
|
+
if (data.component[i].path != undefined && data.component[i].path != "") {
|
|
109
|
+
if (_this.searchInput.ddlEnvironments != undefined && _this.searchInput.ddlEnvironments.length != 0) {
|
|
110
|
+
for (var y = 0; y < _this.searchInput.ddlEnvironments.length; y++) {
|
|
111
|
+
if (data.component[i].name == _this.searchInput.ddlEnvironments[y].name) {
|
|
112
|
+
data.component[i].fullpath = _this.searchInput.ddlEnvironments[y].environment + data.component[i].path;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
data.component[i].fullpath = data.component[i].url;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
data.component[i].fullpath = data.component[i].url;
|
|
123
|
+
}
|
|
107
124
|
//lempar objectnya sekalian sama urlnya, nnti di bind di dalem karena masalah di asyncnya
|
|
108
125
|
//biar tiap function ada state2nya sendiri
|
|
109
|
-
_this.resolveObject(data.component[i], data.component[i].
|
|
126
|
+
_this.resolveObject(data.component[i], data.component[i].fullpath, request);
|
|
110
127
|
}
|
|
111
128
|
if (data.component[i].type == "numeric") {
|
|
112
129
|
data.component[i].value = parseFloat(data.component[i].value).toLocaleString('en');
|
|
@@ -346,6 +363,7 @@ var UCSearchComponent = /** @class */ (function () {
|
|
|
346
363
|
* @return {?}
|
|
347
364
|
*/
|
|
348
365
|
function (tempData) {
|
|
366
|
+
obj.itemsUrl = new Array();
|
|
349
367
|
obj.itemsUrl = tempData.ReturnObject;
|
|
350
368
|
}));
|
|
351
369
|
};
|
|
@@ -433,6 +451,22 @@ var UCSearchComponent = /** @class */ (function () {
|
|
|
433
451
|
arrayCrit.push(critObj);
|
|
434
452
|
}
|
|
435
453
|
request.criteria = arrayCrit;
|
|
454
|
+
if (jsonComp[j].path != undefined && jsonComp[j].path != "") {
|
|
455
|
+
if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {
|
|
456
|
+
for (var y = 0; y < this.searchInput.ddlEnvironments.length; y++) {
|
|
457
|
+
if (jsonComp[j].name == this.searchInput.ddlEnvironments[y].name) {
|
|
458
|
+
jsonComp[j].fullpath = this.searchInput.ddlEnvironments[y].environment + jsonComp[j].path;
|
|
459
|
+
break;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
jsonComp[j].fullpath = jsonComp[j].url;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
jsonComp[j].fullpath = jsonComp[j].url;
|
|
469
|
+
}
|
|
436
470
|
this.resolveObject(jsonComp[j], jsonComp[j].url, request);
|
|
437
471
|
}
|
|
438
472
|
}
|
|
@@ -441,7 +475,7 @@ var UCSearchComponent = /** @class */ (function () {
|
|
|
441
475
|
UCSearchComponent.decorators = [
|
|
442
476
|
{ type: Component, args: [{
|
|
443
477
|
selector: 'lib-UCSearch',
|
|
444
|
-
template: "<!-- Basic form layout section start -->\r\n<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"px-3\">\r\n <form class=\"form form-horizontal\" id=\"formSearch\" #formIdSearch>\r\n <div class=\"form-body\">\r\n <h4 class=\"form-section font-weight-bold\">\r\n <div (click)=\"changeState()\" class=\"btn no-padding cursor-pointer flip\">\r\n <i class=\"fa\" style=\"font-size: 15px; margin: 0px 0px 5px -15px;\"
|
|
478
|
+
template: "<!-- Basic form layout section start -->\r\n<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"px-3\">\r\n <form class=\"form form-horizontal\" id=\"formSearch\" #formIdSearch>\r\n <div class=\"form-body\">\r\n <h4 class=\"form-section font-weight-bold\">\r\n <div (click)=\"changeState()\" class=\"btn no-padding cursor-pointer flip\">\r\n <i class=\"fa\" style=\"font-size: 15px; margin: 0px 0px 5px -15px;\" [ngClass]=\"isHidden ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\r\n </div>\r\n {{configuration?.title}} \r\n </h4>\r\n <!-- Ini Digunakan untuk Generate Dynamic Component -->\r\n <!-- [hidden]=\"isHidden\" -->\r\n <div class=\"panel-active\" [@changeDivSize]=currentState>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 form-group\"\r\n *ngFor=\"let question of configuration?.component\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <label class=\"col-md-5 no-padding\" for=\"{{question.id}}\"\r\n translate>{{question.label}}</label>\r\n <div class=\"col-md-7 no-padding\">\r\n <div *ngIf=\"question.type=='textbox'\">\r\n <input type=\"text\" id=\"{{question.id}}\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\"\r\n attr.data-type=\"{{question.datatype}}\" attr.data-restriction=\"{{question.restriction}}\" >\r\n </div>\r\n <div *ngIf=\"question.type=='textarea'\">\r\n <textarea type=\"text\" id=\"{{question.id}}\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" attr.data-type=\"{{question.datatype}}\"\r\n value=\"{{question.value}}\"></textarea>\r\n </div>\r\n <div *ngIf=\"question.type=='numeric'\">\r\n <input type=\"text\" id=\"{{question.id}}\" (focus)=\"transformToDecimal($event)\"\r\n (blur)=\"transformAmount($event)\" class=\"form-control search-form-control\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\"\r\n attr.data-restriction=\"{{question.restriction}}\" attr.data-type=\"{{question.datatype}}\">\r\n </div>\r\n \r\n <!-- End Hardcode Lookup didalem-->\r\n <div *ngIf=\"question.type=='datepicker'\">\r\n <input type=\"date\" id=\"{{question.id}}\" class=\"form-control search-form-control btn-lookup\"\r\n name=\"{{question.name}}\" value=\"{{question.value}}\" attr.data-type=\"{{question.datatype}}\"\r\n attr.data-restriction=\"{{question.restriction}}\">\r\n </div>\r\n <div *ngIf=\"question.type=='dropdown'\">\r\n <!-- Ini kalau datanya tidak di load dari URL -->\r\n <div *ngIf=\"!question.isFromURL\">\r\n <select name=\"{{question.name}}\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.items\" value=\"{{item.key}}\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n </div>\r\n <!-- Ini kalau datanya di load dari URL -->\r\n <div *ngIf=\"question.isFromURL\">\r\n <div *ngIf=\"question.isEvent\">\r\n <select name=\"{{question.name}}\" (change)=\"onChangeEvent($event.target.value, question)\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.itemsUrl\" value=\"{{item.Key}}\">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"!question.isEvent\">\r\n <select name=\"{{question.name}}\"\r\n class=\"form-control search-form-control\" attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\">\r\n <option *ngIf=\"!question.isSelectOne\" value=\"All\">\r\n All\r\n </option>\r\n <option *ngFor=\"let item of question?.itemsUrl\" value=\"{{item.Key}}\">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 no-padding\">\r\n <form>\r\n <div class=\"form-actions right\">\r\n <button *ngIf=\"exportData == true\" type=\"button\" (click)=\"exportAsXLSX()\"\r\n class=\"btn btn-raised btn-success mr-1\" translate>\r\n <i class=\"fa ft-download\"></i> Export Excel\r\n </button>\r\n <button type=\"button\" (click)=\"reset()\" class=\"btn btn-raised btn-warning mr-1\" translate>\r\n <i class=\"fa fa-times\"></i> Reset\r\n </button>\r\n <button type=\"button\" (click)=\"searchClick()\" class=\"btn btn-raised btn-primary\" #UCSearchClick translate>\r\n <i class=\"fa fa-search\"></i> Search\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n<br>\r\n<!-- // Basic form layout section end -->",
|
|
445
479
|
providers: [ExcelService],
|
|
446
480
|
animations: [
|
|
447
481
|
trigger('changeDivSize', [
|
|
@@ -491,8 +525,12 @@ if (false) {
|
|
|
491
525
|
/** @type {?} */
|
|
492
526
|
UCSearchComponent.prototype.orderByValue;
|
|
493
527
|
/** @type {?} */
|
|
528
|
+
UCSearchComponent.prototype.tempUrl;
|
|
529
|
+
/** @type {?} */
|
|
494
530
|
UCSearchComponent.prototype.urlGet;
|
|
495
531
|
/** @type {?} */
|
|
532
|
+
UCSearchComponent.prototype.server;
|
|
533
|
+
/** @type {?} */
|
|
496
534
|
UCSearchComponent.prototype.configuration;
|
|
497
535
|
/** @type {?} */
|
|
498
536
|
UCSearchComponent.prototype.itemUrl;
|
|
@@ -541,4 +579,4 @@ if (false) {
|
|
|
541
579
|
*/
|
|
542
580
|
UCSearchComponent.prototype._document;
|
|
543
581
|
}
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdWNzZWFyY2gvIiwic291cmNlcyI6WyJsaWIvdWNzZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRjtJQStDRSwyQkFBb0IsSUFBZ0IsRUFBVSxZQUEwQixFQUFVLFVBQXFCLEVBQTRCLFNBQVM7UUFBeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFBO1FBdEJsSSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQVEsQ0FBQyxDQUFDO1FBUWpCLGlCQUFZ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QUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztnQ0FDbkIsTUFBTSxFQUFFLEtBQUs7Z0NBQ2IsT0FBTyxFQUFFLEdBQUc7Z0NBQ1osUUFBUSxFQUFFLFFBQVE7NkJBQ25CLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUM5QyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUMvQyxDQUFDO3FCQUNIO2lCQUNGOzs7O2dCQTlCUSxVQUFVO2dCQU9WLFlBQVk7Z0JBVDZDLFNBQVM7Z0RBMkRpQyxNQUFNLFNBQUMsUUFBUTs7O3lCQXhCeEgsU0FBUyxTQUFDLGNBQWM7OEJBQ3hCLEtBQUs7eUJBQ0wsTUFBTTs7SUFnU1Qsd0JBQUM7Q0FBQSxBQXpURCxJQXlUQztTQXBTWSxpQkFBaUI7OztJQUU1QixtQ0FBOEM7O0lBQzlDLHdDQUEwQjs7SUFDMUIsbUNBQXlEOztJQUN6RCxxQ0FBbUI7O0lBQ25CLG9DQUFpQjs7SUFDakIsdUNBQWdCOztJQUNoQix5Q0FBa0I7O0lBQ2xCLG1DQUFlOztJQUNmLDBDQUFtQjs7SUFDbkIsb0NBQWE7O0lBQ2IsdUNBQWdCOztJQUNoQixzQ0FBZTs7SUFDZix5Q0FBOEI7O0lBQzlCLHFDQUEwQjs7SUFFMUIseUNBQXlCOztJQUV6QixpQ0FBZ0I7O0lBQ2hCLG9DQUFhOztJQUNiLHNDQUFjOztJQUNkLDRDQUFxQjs7SUFDckIsbUNBQVc7O0lBQ1gsbUNBQWU7O0lBQ2Ysb0NBQWE7Ozs7O0lBQ0QsaUNBQXdCOzs7OztJQUFFLHlDQUFrQzs7Ozs7SUFBRSx1Q0FBNkI7Ozs7O0lBQUUsc0NBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEluamVjdCwgUmVuZGVyZXIyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU9iaiB9IGZyb20gJy4vbW9kZWwvQ3JpdGVyaWFPYmouTW9kZWwnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0Q3JpdGVyaWFPYmogfSBmcm9tICcuL21vZGVsL1JlcXVlc3RDcml0ZXJpYU9iai5tb2RlbCc7XHJcbmltcG9ydCB7IEFkSW5zQ29uc3RhbnQgfSBmcm9tICcuL21vZGVsL0FkSW5zdENvbnN0YW50JztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRXhjZWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9leGNlbC1zZXJ2aWNlL2V4Y2VsLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSwgc3RhdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLVVDU2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWNzZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbiAgcHJvdmlkZXJzOiBbRXhjZWxTZXJ2aWNlXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdjaGFuZ2VEaXZTaXplJywgW1xyXG4gICAgICBzdGF0ZSgnaW5pdGlhbCcsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcqJyxcclxuICAgICAgICBvcGFjaXR5OiAnMScsXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2ZpbmFsJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogJzBweCcsXHJcbiAgICAgICAgb3BhY2l0eTogJzAnLFxyXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcclxuICAgICAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbml0aWFsPT5maW5hbCcsIGFuaW1hdGUoJzMwMG1zJykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmaW5hbD0+aW5pdGlhbCcsIGFuaW1hdGUoJzMwMG1zJykpXHJcbiAgICBdKSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVQ1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1JZFNlYXJjaCcpIG15Rm9ybTogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzZWFyY2hJbnB1dDogYW55O1xyXG4gIEBPdXRwdXQoKSByZXN1bHQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHBhZ2VTaXplOiBhbnkgPSAxMDtcclxuICBwYWdlTm93OiBhbnkgPSAxO1xyXG4gIG9yZGVyQnlLZXk6IGFueTtcclxuICBvcmRlckJ5VmFsdWU6IGFueTtcclxuICB1cmxHZXQ6IHN0cmluZztcclxuICBjb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgaXRlbVVybDogYW55O1xyXG4gIGV4cG9ydERhdGE6IGFueTtcclxuICBFeGNlbERhdGE6IGFueTtcclxuICBpc0RhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjdXJyZW50U3RhdGUgPSAnaW5pdGlhbCc7XHJcblxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBwYXlMb2FkID0gJyc7XHJcbiAgY291bnRGb3JtID0gMDtcclxuICBmb3JtYXR0ZWRBbW91bnQgPSAnJztcclxuICBhbW91bnQgPSAwO1xyXG4gIGFwaVVybDogc3RyaW5nO1xyXG4gIGFyckNyaXQ6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudCkge1xyXG4gIH1cclxuXHJcbiAgLy8gaGlkZShvYmo6YW55KXtcclxuICAvLyAgIHZhciB0YXJnZXQgPWV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgLy8gICAvLyB2YXIgaWRBdHRyID0gdGFyZ2V0LmF0dHJpYnV0ZXMuaWQ7XHJcbiAgLy8gICAvLyB2YXIgdmFsdWUgPSBpZEF0dHIubm9kZVZhbHVlO1xyXG4gIC8vIH1cclxuXHJcbiAgY2hhbmdlU3RhdGUoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9IHRoaXMuY3VycmVudFN0YXRlID09PSAnaW5pdGlhbCcgPyAnZmluYWwnIDogJ2luaXRpYWwnO1xyXG4gICAgdGhpcy5pc0hpZGRlbiA9IHRoaXMuaXNIaWRkZW4gPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuc2VhcmNoSW5wdXQuZW52aXJvbWVudFVybCArIHRoaXMuc2VhcmNoSW5wdXQuYXBpUXJ5UGFnaW5nO1xyXG4gICAgdGhpcy5hcnJDcml0ID0gdGhpcy5zZWFyY2hJbnB1dC5hcnJDcml0T2JqO1xyXG4gICAgbGV0IGpzID0gdGhpcy5fcmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAganMudGV4dCA9IGBcclxuICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoXCIjZmxpcFwiKS5jbGljayhmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICQoXCIjcGFuZWxcIikuc2xpZGVUb2dnbGUoXCJzbG93XCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGA7XHJcbiAgICB0aGlzLl9yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwganMpO1xyXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZ2V0SlNPTih0aGlzLnNlYXJjaElucHV0Ll91cmwpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGRhdGE7XHJcbiAgICAgIHRoaXMudXJsR2V0ID0gZGF0YS51cmw7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YSA9IGRhdGEuZXhwb3J0RXhjZWw7XHJcbiAgICAgIHRoaXMuY291bnRGb3JtID0gZGF0YS5jb21wb25lbnQubGVuZ3RoO1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgICAvL2luaSBrYWxhdSBkYXRhbnlhIGRpIGxvYWQgZGFyaSBVUkxcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uaXNGcm9tVVJMID09IHRydWUpIHtcclxuICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgdmFyIGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgdmFyIGNyaXRlcmlhT2JqZWN0ID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICBjcml0ZXJpYU9iamVjdC5EYXRhVHlwZSA9IFwidGV4dFwiO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QucHJvcE5hbWUgPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QudmFsdWUgPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BWYWx1ZTtcclxuICAgICAgICAgIGNyaXRlcmlhT2JqZWN0LnJlc3RyaWN0aW9uID0gXCJlcVwiO1xyXG4gICAgICAgICAgYXJyYXlDcml0LnB1c2goY3JpdGVyaWFPYmplY3QpO1xyXG4gICAgICAgICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFycmF5Q3JpdDtcclxuICAgICAgICAgIHJlcXVlc3RbZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wTmFtZV0gPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BWYWx1ZTtcclxuXHJcbiAgICAgICAgICAvL2xlbXBhciBvYmplY3RueWEgc2VrYWxpYW4gc2FtYSB1cmxueWEsIG5udGkgZGkgYmluZCBkaSBkYWxlbSBrYXJlbmEgbWFzYWxhaCBkaSBhc3luY255YVxyXG4gICAgICAgICAgLy9iaWFyIHRpYXAgZnVuY3Rpb24gYWRhIHN0YXRlMm55YSBzZW5kaXJpXHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVPYmplY3QoZGF0YS5jb21wb25lbnRbaV0sIGRhdGEuY29tcG9uZW50W2ldLnVybCwgcmVxdWVzdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcIm51bWVyaWNcIikge1xyXG4gICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBwYXJzZUZsb2F0KGRhdGEuY29tcG9uZW50W2ldLnZhbHVlKS50b0xvY2FsZVN0cmluZygnZW4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcGVuZ2VjZWthbiB0YW5nZ2FsXHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJkYXRlcGlja2VyXCIpIHtcclxuICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5pbmNsdWRlcyhcIkJEXCIpKSB7XHJcbiAgICAgICAgICAgIGxldCBidXNpbmVzc0RhdGUgPSBuZXcgRGF0ZShKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlckNvbnRleHRcIikpLkJ1c2luZXNzRGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciBvcGVyYXRvciA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLmNoYXJBdCgyKTtcclxuICAgICAgICAgICAgdmFyIGRhdGVTaG93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHRlbXBNaW51cyA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLnNwbGl0KFwiLVwiLCAyKTtcclxuICAgICAgICAgICAgICB2YXIgbnVtRGF5ID0gcGFyc2VJbnQodGVtcE1pbnVzWzFdKTtcclxuICAgICAgICAgICAgICBkYXRlU2hvdy5zZXREYXRlKGJ1c2luZXNzRGF0ZS5nZXREYXRlKCkgLSBudW1EYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdG9yID09IFwiK1wiKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHRlbXBNaW51cyA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLnNwbGl0KFwiK1wiLCAyKTtcclxuICAgICAgICAgICAgICB2YXIgbnVtRGF5ID0gcGFyc2VJbnQodGVtcE1pbnVzWzFdKTtcclxuICAgICAgICAgICAgICBkYXRlU2hvdy5zZXREYXRlKGJ1c2luZXNzRGF0ZS5nZXREYXRlKCkgKyBudW1EYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBkYXRlVGV4dCA9IGZvcm1hdERhdGUoZGF0ZVNob3csICd5eXl5LU1NLWRkJywgJ2VuLVVTJylcclxuICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBkYXRlVGV4dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpTT04odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0SlNPTih1cmw6IHN0cmluZywgY3JpdGVyaWE6IGFueSA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgY3JpdGVyaWEpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ2xpY2soKSB7XHJcbiAgICB0aGlzLm9yZGVyQnlLZXkgPSBudWxsXHJcbiAgICB0aGlzLm9yZGVyQnlWYWx1ZSA9IHRydWVcclxuICAgIHRoaXMucGFnZU5vdyA9IDE7XHJcbiAgICB0aGlzLnNlYXJjaCh0aGlzLmFwaVVybCwgdGhpcy5wYWdlTm93LCB0aGlzLnBhZ2VTaXplLCBudWxsLCB0aGlzLmFyckNyaXQpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGFwaVVybDogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgcm93UGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBhbnksIGFkZENyaXQ6IENyaXRlcmlhT2JqW10gPSBuZXcgQXJyYXkoKSkge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICB2YXIgYXJyQ3JpdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgdmFyIElzUXVlcnlJbiA9IGZhbHNlO1xyXG5cclxuICAgIHJlcXVlc3QucGFnZU5vID0gcGFnZU5vO1xyXG4gICAgcmVxdWVzdC5yb3dQZXJQYWdlID0gcm93UGVyUGFnZTtcclxuICAgIHJlcXVlc3Qub3JkZXJCeSA9IG9yZGVyQnk7XHJcbiAgICByZXF1ZXN0LnF1ZXJ5U3RyaW5nID0gdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb3VudEZvcm07IGkrKykge1xyXG4gICAgICB2YXIgY3JpdE9iaiA9IG5ldyBDcml0ZXJpYU9iaigpO1xyXG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5teUZvcm0ubmF0aXZlRWxlbWVudFtpXTtcclxuICAgICAgY3JpdE9iai5EYXRhVHlwZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpO1xyXG4gICAgICAvL0luaSBraHVzdXMga2FsYXUgZGFyaSBEcm9wIERvd25cclxuICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ3F1ZXJ5LWluJykgIT0gbnVsbCAmJiBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdxdWVyeS1pbicpID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgICAgSXNRdWVyeUluID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBJc1F1ZXJ5SW4gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29tcG9uZW50LnZhbHVlICE9IFwiXCIpIHtcclxuICAgICAgICBpZiAoY29tcG9uZW50Lm5vZGVOYW1lID09ICdTRUxFQ1QnKSB7XHJcbiAgICAgICAgICB2YXIgZGRsID0gY29tcG9uZW50Lm9wdGlvbnM7XHJcbiAgICAgICAgICB2YXIgdGV4dCA9IGRkbFtkZGwuc2VsZWN0ZWRJbmRleF0udmFsdWU7XHJcbiAgICAgICAgICBpZiAodGV4dCAhPSBcIkFsbFwiKSB7XHJcbiAgICAgICAgICAgIC8vS2FsYXUgRGFyaSBEcm9wZG93biB1ZGFoIHBhc3RpIHBha2UgRXFcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25FcTtcclxuICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5uYW1lO1xyXG4gICAgICAgICAgICBjcml0T2JqLnZhbHVlID0gdGV4dDtcclxuICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0ZXh0ID09IFwiQWxsXCIgJiYgSXNRdWVyeUluID09IHRydWUgJiYgY29tcG9uZW50Lm9wdGlvbnMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdmFyIGRkbExpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCBjb21wb25lbnQub3B0aW9ucy5sZW5ndGg7IHgrKykge1xyXG4gICAgICAgICAgICAgIGlmICh4ICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGRkbExpc3QucHVzaChjb21wb25lbnQub3B0aW9uc1t4XS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uSW47XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgICAgY3JpdE9iai5saXN0VmFsdWUgPSBkZGxMaXN0O1xyXG4gICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy9LYWxhdSBhZGEgUGVyY2VudCBtYWthIHlhbmcgZGlwYWtlIG5udGkgYWRhbGFoIFJlc3RyaWN0aW9ucyBMaWtlXHJcbiAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICBjcml0T2JqLnZhbHVlID0gY29tcG9uZW50LnZhbHVlO1xyXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZS5pbmNsdWRlcyhcIiVcIikpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25MaWtlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9rYWxhdSBjb21wb25lbnRueWEgRGF0ZSwgcmVzdHJpY3Rpb25zbnlhIGxnc2cgYW1iaWwgZGFyaSBwcm9wZXJ0eSBKU09ObnlhXHJcbiAgICAgICAgICBlbHNlIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3RyaWN0aW9uJykgIT0gXCJcIiAmJiBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3RyaWN0aW9uJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpO1xyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT0gJ251bWVyaWMnKSB7XHJcbiAgICAgICAgICAgICAgY29tcG9uZW50LnZhbHVlID0gcGFyc2VGbG9hdChjb21wb25lbnQudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25FcVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhZGRDcml0ICE9IG51bGwgJiYgYWRkQ3JpdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKGFkZENyaXQubGVuZ3RoICE9IDApIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZENyaXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGFyckNyaXQucHVzaChhZGRDcml0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gbnVsbCB8fCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2godGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gbnVsbCB8fCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGFyckNyaXQucHVzaCh0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyQ3JpdDtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaVVybCwgcmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB2YXIgcXJ5UGFnaW5nID0ge1xyXG4gICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcclxuICAgICAgICBwYWdlTm93OiBwYWdlTm9cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhxcnlQYWdpbmcpO1xyXG4gICAgICB0aGlzLnJlc3VsdC5lbWl0KHFyeVBhZ2luZyk7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbGVzc1RoYW5Gb3VyKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY291bnRGb3JtID4gMykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNvbHZlT2JqZWN0KG9iajogYW55LCB1cmw6IHN0cmluZywgY3JpdDogUmVxdWVzdENyaXRlcmlhT2JqID0gbnVsbCkge1xyXG4gICAgY29uc3QgdmFsID0gdGhpcy5wb3N0SlNPTih1cmwsIGNyaXQpO1xyXG4gICAgdmFsLnN1YnNjcmliZSh0ZW1wRGF0YSA9PiB7XHJcbiAgICAgIG9iai5pdGVtc1VybCA9IHRlbXBEYXRhLlJldHVybk9iamVjdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtQW1vdW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWRBbW91bnQgPSBwYXJzZUZsb2F0KGVsZW1lbnQudGFyZ2V0LnZhbHVlKS50b0xvY2FsZVN0cmluZygnZW4nKTtcclxuICAgIC8vIHRvIHNob3cgdGhlIGZvcm1hdHRlZCBhbW91bnQgaW4gdGhlIHRleHRib3guXHJcbiAgICBlbGVtZW50LnRhcmdldC52YWx1ZSA9IHRoaXMuZm9ybWF0dGVkQW1vdW50O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtVG9EZWNpbWFsKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgZWxlbWVudC50YXJnZXQudmFsdWUgPSBwYXJzZUZsb2F0KGVsZW1lbnQudGFyZ2V0LnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QXNYTFNYKCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICByZXF1ZXN0LnBhZ2VObyA9IDE7XHJcbiAgICByZXF1ZXN0LnJvd1BlclBhZ2UgPSA5OTk5O1xyXG4gICAgcmVxdWVzdC5vcmRlckJ5ID0gbnVsbDtcclxuICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBbXTtcclxuICAgIHJlcXVlc3QucXVlcnlTdHJpbmcgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmc7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGlVcmwsIHJlcXVlc3QpLnN1YnNjcmliZShcclxuICAgICAgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuRXhjZWxEYXRhID0gcmVzcG9uc2VbXCJEYXRhXCJdO1xyXG4gICAgICAgIHRoaXMuZXhjZWxTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHRoaXMuRXhjZWxEYXRhLCAnc2FtcGxlJyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUV2ZW50KG9wdFZhbHVlLCBhZkZpbHRlcikge1xyXG4gICAgdmFyIGpzb25Db21wID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudDtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmRmlsdGVyLmFmZmVjdGVkRmlsdGVyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwganNvbkNvbXAubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAoanNvbkNvbXBbal0ubmFtZSA9PSBhZkZpbHRlci5hZmZlY3RlZEZpbHRlcltpXSkge1xyXG4gICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICB2YXIgYXJyYXlDcml0ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdFZhbHVlICE9IFwiQWxsXCIpIHtcclxuICAgICAgICAgICAgdmFyIGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgICAgY3JpdE9iai5EYXRhVHlwZSA9IGFmRmlsdGVyLmRhdGF0eXBlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gYWZGaWx0ZXIubmFtZTtcclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICBhcnJheUNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlcXVlc3QuY3JpdGVyaWEgPSBhcnJheUNyaXQ7XHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVPYmplY3QoanNvbkNvbXBbal0sIGpzb25Db21wW2pdLnVybCwgcmVxdWVzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
582
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdWNzZWFyY2gvIiwic291cmNlcyI6WyJsaWIvdWNzZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRjtJQWlERSwyQkFBb0IsSUFBZ0IsRUFBVSxZQUEwQixFQUFVLFVBQXFCLEVBQTRCLFNBQVM7UUFBeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFBO1FBeEJsSSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQVEsQ0FBQyxDQUFDO1FBVWpCLGlCQUFZ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QUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUM5QyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUMvQyxDQUFDO3FCQUNIO2lCQUNGOzs7O2dCQTlCUSxVQUFVO2dCQU9WLFlBQVk7Z0JBVDZDLFNBQVM7Z0RBNkRpQyxNQUFNLFNBQUMsUUFBUTs7O3lCQTFCeEgsU0FBUyxTQUFDLGNBQWM7OEJBQ3hCLEtBQUs7eUJBQ0wsTUFBTTs7SUFpVVQsd0JBQUM7Q0FBQSxBQTFWRCxJQTBWQztTQXJVWSxpQkFBaUI7OztJQUU1QixtQ0FBOEM7O0lBQzlDLHdDQUEwQjs7SUFDMUIsbUNBQXlEOztJQUN6RCxxQ0FBbUI7O0lBQ25CLG9DQUFpQjs7SUFDakIsdUNBQWdCOztJQUNoQix5Q0FBa0I7O0lBQ2xCLG9DQUFnQjs7SUFDaEIsbUNBQWU7O0lBQ2YsbUNBQVk7O0lBQ1osMENBQW1COztJQUNuQixvQ0FBYTs7SUFDYix1Q0FBZ0I7O0lBQ2hCLHNDQUFlOztJQUNmLHlDQUE4Qjs7SUFDOUIscUNBQTBCOztJQUUxQix5Q0FBeUI7O0lBRXpCLGlDQUFnQjs7SUFDaEIsb0NBQWE7O0lBQ2Isc0NBQWM7O0lBQ2QsNENBQXFCOztJQUNyQixtQ0FBVzs7SUFDWCxtQ0FBZTs7SUFDZixvQ0FBYTs7Ozs7SUFDRCxpQ0FBd0I7Ozs7O0lBQUUseUNBQWtDOzs7OztJQUFFLHVDQUE2Qjs7Ozs7SUFBRSxzQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5qZWN0LCBSZW5kZXJlcjIsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENyaXRlcmlhT2JqIH0gZnJvbSAnLi9tb2RlbC9Dcml0ZXJpYU9iai5Nb2RlbCc7XHJcbmltcG9ydCB7IFJlcXVlc3RDcml0ZXJpYU9iaiB9IGZyb20gJy4vbW9kZWwvUmVxdWVzdENyaXRlcmlhT2JqLm1vZGVsJztcclxuaW1wb3J0IHsgQWRJbnNDb25zdGFudCB9IGZyb20gJy4vbW9kZWwvQWRJbnN0Q29uc3RhbnQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V4Y2VsLXNlcnZpY2UvZXhjZWwtc2VydmljZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBzdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItVUNTZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91Y3NlYXJjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxuICBwcm92aWRlcnM6IFtFeGNlbFNlcnZpY2VdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2NoYW5nZURpdlNpemUnLCBbXHJcbiAgICAgIHN0YXRlKCdpbml0aWFsJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogJyonLFxyXG4gICAgICAgIG9wYWNpdHk6ICcxJyxcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnZmluYWwnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBvcGFjaXR5OiAnMCcsXHJcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luaXRpYWw9PmZpbmFsJywgYW5pbWF0ZSgnMzAwbXMnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2ZpbmFsPT5pbml0aWFsJywgYW5pbWF0ZSgnMzAwbXMnKSlcclxuICAgIF0pLFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVDU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybUlkU2VhcmNoJykgbXlGb3JtOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHNlYXJjaElucHV0OiBhbnk7XHJcbiAgQE91dHB1dCgpIHJlc3VsdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcGFnZVNpemU6IGFueSA9IDEwO1xyXG4gIHBhZ2VOb3c6IGFueSA9IDE7XHJcbiAgb3JkZXJCeUtleTogYW55O1xyXG4gIG9yZGVyQnlWYWx1ZTogYW55O1xyXG4gIHRlbXBVcmw6IHN0cmluZztcclxuICB1cmxHZXQ6IHN0cmluZztcclxuICBzZXJ2ZXI6IGFueTtcclxuICBjb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgaXRlbVVybDogYW55O1xyXG4gIGV4cG9ydERhdGE6IGFueTtcclxuICBFeGNlbERhdGE6IGFueTtcclxuICBpc0RhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjdXJyZW50U3RhdGUgPSAnaW5pdGlhbCc7XHJcblxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBwYXlMb2FkID0gJyc7XHJcbiAgY291bnRGb3JtID0gMDtcclxuICBmb3JtYXR0ZWRBbW91bnQgPSAnJztcclxuICBhbW91bnQgPSAwO1xyXG4gIGFwaVVybDogc3RyaW5nO1xyXG4gIGFyckNyaXQ6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudCkge1xyXG4gIH1cclxuICAvLyBoaWRlKG9iajphbnkpe1xyXG4gIC8vICAgdmFyIHRhcmdldCA9ZXZlbnQuc3JjRWxlbWVudDtcclxuICAvLyAgIC8vIHZhciBpZEF0dHIgPSB0YXJnZXQuYXR0cmlidXRlcy5pZDtcclxuICAvLyAgIC8vIHZhciB2YWx1ZSA9IGlkQXR0ci5ub2RlVmFsdWU7XHJcbiAgLy8gfVxyXG5cclxuICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFN0YXRlID0gdGhpcy5jdXJyZW50U3RhdGUgPT09ICdpbml0aWFsJyA/ICdmaW5hbCcgOiAnaW5pdGlhbCc7XHJcbiAgICB0aGlzLmlzSGlkZGVuID0gdGhpcy5pc0hpZGRlbiA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBpVXJsID0gdGhpcy5zZWFyY2hJbnB1dC5lbnZpcm9tZW50VXJsICsgdGhpcy5zZWFyY2hJbnB1dC5hcGlRcnlQYWdpbmc7XHJcbiAgICB0aGlzLmFyckNyaXQgPSB0aGlzLnNlYXJjaElucHV0LmFyckNyaXRPYmo7XHJcbiAgICBsZXQganMgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBqcy50ZXh0ID0gYFxyXG4gICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgJChcIiNmbGlwXCIpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgJChcIiNwYW5lbFwiKS5zbGlkZVRvZ2dsZShcInNsb3dcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgYDtcclxuICAgIHRoaXMuX3JlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLl9kb2N1bWVudC5ib2R5LCBqcyk7XHJcbiAgICB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5nZXRKU09OKHRoaXMuc2VhcmNoSW5wdXQuX3VybCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gZGF0YTtcclxuICAgICAgdGhpcy51cmxHZXQgPSBkYXRhLnVybDtcclxuICAgICAgdGhpcy5leHBvcnREYXRhID0gZGF0YS5leHBvcnRFeGNlbDtcclxuICAgICAgdGhpcy5jb3VudEZvcm0gPSBkYXRhLmNvbXBvbmVudC5sZW5ndGg7XHJcbiAgICAgIHRoaXMuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb3VudEZvcm07IGkrKykge1xyXG4gICAgICAgIC8vaW5pIGthbGF1IGRhdGFueWEgZGkgbG9hZCBkYXJpIFVSTFxyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5pc0Zyb21VUkwgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICB2YXIgYXJyYXlDcml0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICB2YXIgY3JpdGVyaWFPYmplY3QgPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgIGNyaXRlcmlhT2JqZWN0LkRhdGFUeXBlID0gXCJ0ZXh0XCI7XHJcbiAgICAgICAgICBjcml0ZXJpYU9iamVjdC5wcm9wTmFtZSA9IGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcE5hbWU7XHJcbiAgICAgICAgICBjcml0ZXJpYU9iamVjdC52YWx1ZSA9IGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcFZhbHVlO1xyXG4gICAgICAgICAgY3JpdGVyaWFPYmplY3QucmVzdHJpY3Rpb24gPSBcImVxXCI7XHJcbiAgICAgICAgICBhcnJheUNyaXQucHVzaChjcml0ZXJpYU9iamVjdCk7XHJcbiAgICAgICAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyYXlDcml0O1xyXG4gICAgICAgICAgcmVxdWVzdFtkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lXSA9IGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcFZhbHVlO1xyXG5cclxuICAgICAgICAgIC8vIFBlbmdlY2VrYW4gcGVuZ2d1bmFhbiB1cmwgYXRhdSBwYXRoXHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0ucGF0aCAhPSB1bmRlZmluZWQgJiYgZGF0YS5jb21wb25lbnRbaV0ucGF0aCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50cyAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzLmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0ubmFtZSA9PSB0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50c1t5XS5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoID0gdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHNbeV0uZW52aXJvbm1lbnQgKyBkYXRhLmNvbXBvbmVudFtpXS5wYXRoO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0uZnVsbHBhdGggPSBkYXRhLmNvbXBvbmVudFtpXS51cmw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5mdWxscGF0aCA9IGRhdGEuY29tcG9uZW50W2ldLnVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vbGVtcGFyIG9iamVjdG55YSBzZWthbGlhbiBzYW1hIHVybG55YSwgbm50aSBkaSBiaW5kIGRpIGRhbGVtIGthcmVuYSBtYXNhbGFoIGRpIGFzeW5jbnlhXHJcbiAgICAgICAgICAvL2JpYXIgdGlhcCBmdW5jdGlvbiBhZGEgc3RhdGUybnlhIHNlbmRpcmlcclxuICAgICAgICAgIHRoaXMucmVzb2x2ZU9iamVjdChkYXRhLmNvbXBvbmVudFtpXSwgZGF0YS5jb21wb25lbnRbaV0uZnVsbHBhdGgsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJudW1lcmljXCIpIHtcclxuICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gcGFyc2VGbG9hdChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2VuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3BlbmdlY2VrYW4gdGFuZ2dhbFxyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwiZGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udmFsdWUuaW5jbHVkZXMoXCJCRFwiKSkge1xyXG4gICAgICAgICAgICBsZXQgYnVzaW5lc3NEYXRlID0gbmV3IERhdGUoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJDb250ZXh0XCIpKS5CdXNpbmVzc0RhdGUpO1xyXG4gICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5jaGFyQXQoMik7XHJcbiAgICAgICAgICAgIHZhciBkYXRlU2hvdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgIHZhciB0ZW1wTWludXMgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5zcGxpdChcIi1cIiwgMik7XHJcbiAgICAgICAgICAgICAgdmFyIG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgICAgZGF0ZVNob3cuc2V0RGF0ZShidXNpbmVzc0RhdGUuZ2V0RGF0ZSgpIC0gbnVtRGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChvcGVyYXRvciA9PSBcIitcIikge1xyXG4gICAgICAgICAgICAgIHZhciB0ZW1wTWludXMgPSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5zcGxpdChcIitcIiwgMik7XHJcbiAgICAgICAgICAgICAgdmFyIG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgICAgZGF0ZVNob3cuc2V0RGF0ZShidXNpbmVzc0RhdGUuZ2V0RGF0ZSgpICsgbnVtRGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZGF0ZVRleHQgPSBmb3JtYXREYXRlKGRhdGVTaG93LCAneXl5eS1NTS1kZCcsICdlbi1VUycpXHJcbiAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gZGF0ZVRleHQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRKU09OKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zdEpTT04odXJsOiBzdHJpbmcsIGNyaXRlcmlhOiBhbnkgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWNrKCkge1xyXG4gICAgdGhpcy5vcmRlckJ5S2V5ID0gbnVsbFxyXG4gICAgdGhpcy5vcmRlckJ5VmFsdWUgPSB0cnVlXHJcbiAgICB0aGlzLnBhZ2VOb3cgPSAxO1xyXG4gICAgdGhpcy5zZWFyY2godGhpcy5hcGlVcmwsIHRoaXMucGFnZU5vdywgdGhpcy5wYWdlU2l6ZSwgbnVsbCwgdGhpcy5hcnJDcml0KTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChhcGlVcmw6IHN0cmluZywgcGFnZU5vOiBudW1iZXIsIHJvd1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogYW55LCBhZGRDcml0OiBDcml0ZXJpYU9ialtdID0gbmV3IEFycmF5KCkpIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgdmFyIGFyckNyaXQgPSBuZXcgQXJyYXkoKTtcclxuICAgIHZhciBJc1F1ZXJ5SW4gPSBmYWxzZTtcclxuXHJcbiAgICByZXF1ZXN0LnBhZ2VObyA9IHBhZ2VObztcclxuICAgIHJlcXVlc3Qucm93UGVyUGFnZSA9IHJvd1BlclBhZ2U7XHJcbiAgICByZXF1ZXN0Lm9yZGVyQnkgPSBvcmRlckJ5O1xyXG4gICAgcmVxdWVzdC5xdWVyeVN0cmluZyA9IHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgdmFyIGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbaV07XHJcbiAgICAgIGNyaXRPYmouRGF0YVR5cGUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKTtcclxuICAgICAgLy9Jbmkga2h1c3VzIGthbGF1IGRhcmkgRHJvcCBEb3duXHJcbiAgICAgIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdxdWVyeS1pbicpICE9IG51bGwgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgncXVlcnktaW4nKSA9PSBcInRydWVcIikge1xyXG4gICAgICAgIElzUXVlcnlJbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgSXNRdWVyeUluID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5ub2RlTmFtZSA9PSAnU0VMRUNUJykge1xyXG4gICAgICAgICAgdmFyIGRkbCA9IGNvbXBvbmVudC5vcHRpb25zO1xyXG4gICAgICAgICAgdmFyIHRleHQgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKHRleHQgIT0gXCJBbGxcIikge1xyXG4gICAgICAgICAgICAvL0thbGF1IERhcmkgRHJvcGRvd24gdWRhaCBwYXN0aSBwYWtlIEVxXHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXE7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGV4dCA9PSBcIkFsbFwiICYmIElzUXVlcnlJbiA9PSB0cnVlICYmIGNvbXBvbmVudC5vcHRpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBkZGxMaXN0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgY29tcG9uZW50Lm9wdGlvbnMubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAgICAgICBpZiAoeCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBkZGxMaXN0LnB1c2goY29tcG9uZW50Lm9wdGlvbnNbeF0udmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkluO1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoubGlzdFZhbHVlID0gZGRsTGlzdDtcclxuICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vS2FsYXUgYWRhIFBlcmNlbnQgbWFrYSB5YW5nIGRpcGFrZSBubnRpIGFkYWxhaCBSZXN0cmljdGlvbnMgTGlrZVxyXG4gICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5uYW1lO1xyXG4gICAgICAgICAgY3JpdE9iai52YWx1ZSA9IGNvbXBvbmVudC52YWx1ZTtcclxuICAgICAgICAgIGlmIChjb21wb25lbnQudmFsdWUuaW5jbHVkZXMoXCIlXCIpKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uTGlrZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8va2FsYXUgY29tcG9uZW50bnlhIERhdGUsIHJlc3RyaWN0aW9uc255YSBsZ3NnIGFtYmlsIGRhcmkgcHJvcGVydHkgSlNPTm55YVxyXG4gICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IFwiXCIgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdHJpY3Rpb24nKTtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpID09ICdudW1lcmljJykge1xyXG4gICAgICAgICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHBhcnNlRmxvYXQoY29tcG9uZW50LnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXFcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWRkQ3JpdCAhPSBudWxsICYmIGFkZENyaXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChhZGRDcml0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRDcml0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2goYWRkQ3JpdFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYXJyQ3JpdC5wdXNoKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJDcml0LnB1c2godGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXRbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFyckNyaXQ7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGlVcmwsIHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdmFyIHFyeVBhZ2luZyA9IHtcclxuICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXHJcbiAgICAgICAgcGFnZU5vdzogcGFnZU5vXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocXJ5UGFnaW5nKTtcclxuICAgICAgdGhpcy5yZXN1bHQuZW1pdChxcnlQYWdpbmcpO1xyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxlc3NUaGFuRm91cigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvdW50Rm9ybSA+IDMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZU9iamVjdChvYmo6IGFueSwgdXJsOiBzdHJpbmcsIGNyaXQ6IFJlcXVlc3RDcml0ZXJpYU9iaiA9IG51bGwpIHtcclxuICAgIGNvbnN0IHZhbCA9IHRoaXMucG9zdEpTT04odXJsLCBjcml0KTtcclxuICAgIHZhbC5zdWJzY3JpYmUodGVtcERhdGEgPT4ge1xyXG4gICAgICBvYmouaXRlbXNVcmwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgb2JqLml0ZW1zVXJsID0gdGVtcERhdGEuUmV0dXJuT2JqZWN0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1BbW91bnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZEFtb3VudCA9IHBhcnNlRmxvYXQoZWxlbWVudC50YXJnZXQudmFsdWUpLnRvTG9jYWxlU3RyaW5nKCdlbicpO1xyXG4gICAgLy8gdG8gc2hvdyB0aGUgZm9ybWF0dGVkIGFtb3VudCBpbiB0aGUgdGV4dGJveC5cclxuICAgIGVsZW1lbnQudGFyZ2V0LnZhbHVlID0gdGhpcy5mb3JtYXR0ZWRBbW91bnQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Ub0RlY2ltYWwoZWxlbWVudDogYW55KSB7XHJcbiAgICBlbGVtZW50LnRhcmdldC52YWx1ZSA9IHBhcnNlRmxvYXQoZWxlbWVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRBc1hMU1goKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q3JpdGVyaWFPYmooKTtcclxuICAgIHJlcXVlc3QucGFnZU5vID0gMTtcclxuICAgIHJlcXVlc3Qucm93UGVyUGFnZSA9IDk5OTk7XHJcbiAgICByZXF1ZXN0Lm9yZGVyQnkgPSBudWxsO1xyXG4gICAgcmVxdWVzdC5jcml0ZXJpYSA9IFtdO1xyXG4gICAgcmVxdWVzdC5xdWVyeVN0cmluZyA9IHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZztcclxuXHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaVVybCwgcmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5FeGNlbERhdGEgPSByZXNwb25zZVtcIkRhdGFcIl07XHJcbiAgICAgICAgdGhpcy5leGNlbFNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUodGhpcy5FeGNlbERhdGEsICdzYW1wbGUnKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRXZlbnQob3B0VmFsdWUsIGFmRmlsdGVyKSB7XHJcbiAgICB2YXIganNvbkNvbXAgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50O1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWZGaWx0ZXIuYWZmZWN0ZWRGaWx0ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBqc29uQ29tcC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChqc29uQ29tcFtqXS5uYW1lID09IGFmRmlsdGVyLmFmZmVjdGVkRmlsdGVyW2ldKSB7XHJcbiAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgIHZhciBhcnJheUNyaXQgPSBuZXcgQXJyYXkoKTtcclxuXHJcbiAgICAgICAgICBpZiAob3B0VmFsdWUgIT0gXCJBbGxcIikge1xyXG4gICAgICAgICAgICB2YXIgY3JpdE9iaiA9IG5ldyBDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgICBjcml0T2JqLkRhdGFUeXBlID0gYWZGaWx0ZXIuZGF0YXR5cGU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBhZkZpbHRlci5uYW1lO1xyXG4gICAgICAgICAgICBjcml0T2JqLnZhbHVlID0gb3B0VmFsdWU7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXE7XHJcbiAgICAgICAgICAgIGFycmF5Q3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFycmF5Q3JpdDtcclxuICAgICAgICAgIGlmIChqc29uQ29tcFtqXS5wYXRoICE9IHVuZGVmaW5lZCAmJiBqc29uQ29tcFtqXS5wYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgdGhpcy5zZWFyY2hJbnB1dC5kZGxFbnZpcm9ubWVudHMubGVuZ3RoOyB5KyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChqc29uQ29tcFtqXS5uYW1lID09IHRoaXMuc2VhcmNoSW5wdXQuZGRsRW52aXJvbm1lbnRzW3ldLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAganNvbkNvbXBbal0uZnVsbHBhdGggPSB0aGlzLnNlYXJjaElucHV0LmRkbEVudmlyb25tZW50c1t5XS5lbnZpcm9ubWVudCArIGpzb25Db21wW2pdLnBhdGg7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IGpzb25Db21wW2pdLnVybDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGpzb25Db21wW2pdLmZ1bGxwYXRoID0ganNvbkNvbXBbal0udXJsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlT2JqZWN0KGpzb25Db21wW2pdLCBqc29uQ29tcFtqXS51cmwsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|