@po-ui/ng-components 17.26.17 → 17.26.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +4 -3
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +8 -6
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +26 -5
- package/fesm2022/po-ui-ng-components.mjs +36 -12
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/package.json +4 -4
- package/po-ui-ng-components-17.26.19.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.26.17.tgz +0 -0
package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs
CHANGED
|
@@ -200,7 +200,7 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
200
200
|
}
|
|
201
201
|
else {
|
|
202
202
|
this.service = this.multiselectFilterService;
|
|
203
|
-
this.service.configProperties(field.optionsService, field.fieldLabel, field.fieldValue);
|
|
203
|
+
this.service.configProperties(field.optionsService, field.fieldLabel || 'label', field.fieldValue || 'value');
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
else {
|
|
@@ -209,7 +209,7 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
209
209
|
}
|
|
210
210
|
else {
|
|
211
211
|
this.service = this.comboFilterService;
|
|
212
|
-
this.service.configProperties(field.optionsService, field.fieldLabel, field.fieldValue);
|
|
212
|
+
this.service.configProperties(field.optionsService, field.fieldLabel || 'label', field.fieldValue || 'value');
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
}
|
|
@@ -258,6 +258,7 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
258
258
|
const oldFieldIndex = newFields.indexOf(newFields.find(field => field === oldField));
|
|
259
259
|
newFields.splice(oldFieldIndex, 1, allValues);
|
|
260
260
|
sortFields(newFields);
|
|
261
|
+
this.setContainerFields();
|
|
261
262
|
});
|
|
262
263
|
}
|
|
263
264
|
returnValues(field, value) {
|
|
@@ -407,4 +408,4 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
407
408
|
type: Input,
|
|
408
409
|
args: ['p-value']
|
|
409
410
|
}] }); })();
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFFdkU7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO0lBaUl2RDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0U7SUFDQTtJQUNBO0lBdklaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWdDRztJQUNjLElBQUksQ0FBb0I7SUFFekMsT0FBTyxDQUFNO0lBRUwsT0FBTyxHQUE4QixFQUFFLENBQUM7SUFDeEMsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBRXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSCxJQUF1QixNQUFNLENBQUMsTUFBaUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFD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NUMsSUFBSSxjQUFjLENBQUM7UUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFO2dCQUNqQyxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxjQUFjLEVBQUU7d0JBQ25CLGNBQWMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzNDO3lCQUFNO3dCQUNMLGNBQWMsSUFBSSxLQUFLLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNwRDtpQkFDRjthQUNGO1NBQ0Y7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO29GQWpaVSwwQkFBMEI7NkRBQTFCLDBCQUEwQjs7aUZBQTFCLDBCQUEwQjtjQUR0QyxTQUFTO2tRQW1DUyxJQUFJO2tCQUFwQixLQUFLO21CQUFDLFFBQVE7WUE4QlEsTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBaUJjLFlBQVk7a0JBQTFDLEtBQUs7bUJBQUMsa0JBQWtCO1lBNkJILFFBQVE7a0JBQTdCLEtBQUs7bUJBQUMsYUFBYTtZQVVFLEtBQUs7a0JBQTFCLEtBQUs7bUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9UaW1lUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3BvLXRpbWUvcG8tdGltZS5waXBlJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mLCBzb3J0RmllbGRzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldEdyaWRDb2x1bW5zQ2xhc3NlcywgaXNWaXNpYmxlRmllbGQgfSBmcm9tICcuLi9wby1keW5hbWljLnV0aWwnO1xuaW1wb3J0IHsgUG9EeW5hbWljVmlld0ZpZWxkIH0gZnJvbSAnLi9wby1keW5hbWljLXZpZXctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1keW5hbWljLXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BvLWZpZWxkL3BvLWNvbWJvL3BvLWNvbWJvLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9EeW5hbWljU2hhcmVkQmFzZSB9IGZyb20gJy4uL3NoYXJlZC9wby1keW5hbWljLXNoYXJlZC1iYXNlJztcblxuLyoqXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBwYXJhIGxpc3RhciBkYWRvcyBkaW5hbWljYW1lbnRlIGEgcGFydGlyIGRlIHVtYSBsaXN0YSBkZSBvYmpldG9zLlxuICpcbiAqID4gUG9yIHBhZHLDo28gZXNzZSBjb21wb25lbnRlIGNyaWEgYHBvLWluZm9gIHBhcmEgZXhpYmnDp8Ojbywgw6kgcG9zc8OtdmVsIGNyaWFyIGBwby10YWdgIHBhc3NhbmRvIGEgcHJvcHJpZWRhZGUgeyB0YWc6IHRydWUgfS5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljU2hhcmVkQmFzZSB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBvc3NpYmlsaXRhIGV4ZWN1dGFyIHVtYSBmdW7Dp8OjbyBxdWFuZG8gbyBjb21wb25lbnRlIMOpIGluaWNpYWxpemFkby5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtICoqU3RyaW5nKio6IEVuZHBvaW50IHVzYWRvIHBlbG8gY29tcG9uZW50ZSBwYXJhIHJlcXVpc2nDp8OjbyB2aWEgYFBPU1RgLlxuICAgKiAtICoqRnVuY3Rpb24qKjogTcOpdG9kbyBxdWUgc2Vyw6EgZXhlY3V0YWRvIG5hIGluaWNpYWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIG9zIGRvaXMgdGlwb3MgZGUgdXRpbGl6YcOnw6NvIGRhIHByb3ByaWVkYWRlIGVzcGVyYS1zZSBvIHNlZ3VpbnRlIHJldG9ybm86XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgdmFsdWU6IHtcbiAgICogICAgIGNucGo6ICcqKioqKioqKioqKioqKicsIC8vIGFsdGVyYSB2YWxvciBkbyBjYW1wb1xuICAgKiAgICAgdXBkYXRlZDogKG5ldyBEYXRlKCkpLnRvU3RyaW5nKCkgLy8gYXRyaWJ1aSB2YWxvciBhbyBjYW1wbyBub3ZvXG4gICAqICAgfSxcbiAgICogICBmaWVsZHM6IFtcbiAgICogICAgIHsgcHJvcGVydHk6ICdjbnBqJywgdGFnOiB0cnVlLCBpbnZlcnNlOiB0cnVlIH0sIC8vIGF0cmlidWkgbm92YXMgcHJvcHJpZWRhZGVzIGFvIGZpZWxkXG4gICAqICAgICB7IHByb3BlcnR5OiAndXBkYXRlZCcsIHRhZzogdHJ1ZSB9IC8vIGluY2x1aSBjYW1wbyBub3ZvXG4gICAqICAgXVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+ICoqdmFsdWUqKjogYW55ID0gYXRyaWJ1aSBub3ZvIHZhbG9yIGRvIG1vZGVsLlxuICAgKlxuICAgKiA+ICoqZmllbGRzKio6IGBBcnJheTxQb0R5bmFtaWNWaWV3RmllbGQ+YCA9IExpc3RhIGRlIGNhbXBvcyBxdWUgZGVzZWphIGFsdGVyYXIgYXMgcHJvcHJpZWRhZGVzLFxuICAgKiBjYXNvIGVudmlhciB1bSBjYW1wbyBhIG1haXMgc2Vyw6EgY3JpYWRvIHVtIG5vdm8gY2FtcG8uXG4gICAqXG4gICAqIC0gUGFyYSBlc2NvbmRlci9yZW1vdmVyIGNhbXBvcyBwcmVjaXNhIGluZm9ybWFyIG5vIGZpZWxkIGEgcHJvcHJpZWRhZGUgYHZpc2libGUgPSBmYWxzZWAuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZCcpIGxvYWQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcml2YXRlIF9maWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gPSBbXTtcbiAgcHJpdmF0ZSBfc2hvd0FsbFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlID0ge307XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvRHluYW1pY1ZpZXdgLlxuICAgKlxuICAgKiA+IEV4OiBgWyB7IHByb3BlcnR5OiAnYWdlJyB9IF1gXG4gICAqXG4gICAqIFJlZ3JhcyBkZSB0aXBhZ2VtIGUgZm9ybWF0YcOnw6NvIGRvcyB2YWxvcmVzIGV4aWJpZG9zOlxuICAgKlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmN1cnJlbmN5KiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSBcIidCUkwnLCAnc3ltYm9sJywgJzEuMi0yJ1wiXG4gICAqIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmRhdGUqIGUgbsOjbyBzZWphIGluZm9ybWFkbyBvICpmb3JtYXQqIG8gbWVzbW8gcmVjZWJlICdkZC9NTS95eXl5JyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpkYXRlVGltZSogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyByZWNlYmUgJ2RkL01NL3l5eXkgSEg6bW06c3MnIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKm51bWJlciogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyBuw6NvIHNlcsOhIGZvcm1hdGFkby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICp0aW1lKiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSAnSEg6bW06c3MuZmZmZmZmJyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICpcbiAgICogPiBBcyBwcm9wcmllZGFkZXMgaW5mb3JtYWRhcyBzZXLDo28gZXhpYmlkYXMgbWVzbW8gbsOjbyBjb250ZW5kbyB2YWxvciBkZSByZWZlcsOqbmNpYSBubyBvYmpldG8gZGEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyhmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KGZpZWxkcykgPyBbLi4uZmllbGRzXSA6IFtdO1xuICB9XG5cbiAgZ2V0IGZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHNlIGV4aWJpcsOhIHRvZGFzIGFzIGluZm9ybWHDp8O1ZXMgY29udGlkYXMgZGVudHJvIGRvIG9iamV0byBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvdy1hbGwtdmFsdWUnKSBzZXQgc2hvd0FsbFZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0FsbFZhbHVlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd0FsbFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93QWxsVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgcXVlYnJhIGRlIGxpbmhhIG5vIHRleHRvIGRvIGBwLXZhbHVlYCwgYXBsaWNhbmRvLWEgb25kZSBow6EgYFxcbmAuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tZHluYW1pYy12aWV3XG4gICAqICAgW3AtdmFsdWVdPVwieyBkZXNjcmlwdGlvbjogJ1ByaW1laXJhIGxpbmhhXFxuU2VndW5kYSBsaW5oYScgfVwiXG4gICAqICAgW3AtdGV4dC13cmFwXT1cInRydWVcIlxuICAgKiA+PC9wby1keW5hbWljLXZpZXc+XG4gICAqIGBgYFxuICAgKlxuICAgKiBTYcOtZGE6XG4gICAqIGBgYFxuICAgKiBQcmltZWlyYSBsaW5oYVxuICAgKiBTZWd1bmRhIGxpbmhhXG4gICAqIGBgYFxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtdGV4dC13cmFwJykgdGV4dFdyYXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgZXhpYmlyIGFzIGluZm9ybWHDp8O1ZXMgZGluw6JtaWNhcywgbyB2YWxvciBzZXLDoSByZWN1cGVyYWRvIGF0cmF2w6lzIGRvIGF0cmlidXRvICpwcm9wZXJ0eSpcbiAgICogZG9zIG9iamV0b3MgY29udGlkb3MgbmEgcHJvcHJpZGFkZSBgcC1maWVsZHNgLlxuICAgKlxuICAgKiA+IEV4OiBgeyBhZ2U6ICczNScgfWBcbiAgICovXG4gIEBJbnB1dCgncC12YWx1ZScpIHNldCB2YWx1ZSh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSAmJiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpID8gdmFsdWUgOiB7fTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgdGltZVBpcGU6IFBvVGltZVBpcGUsXG4gICAgcHJpdmF0ZSB0aXRsZUNhc2VQaXBlOiBUaXRsZUNhc2VQaXBlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljVmlld1NlcnZpY2U6IFBvRHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uOiBudW1iZXIsIGluZGV4OiBudW1iZXIgPSAxKTogbnVtYmVyIHtcbiAgICBpZiAocG9zaXRpb24gPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQub3JkZXIgPT09IGluZGV4KSA+IC0xXG4gICAgICA/IHRoaXMuZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uLCBpbmRleCArIDEpXG4gICAgICA6IGluZGV4O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkT3JkZXIoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEZpZWxkT3JkZXJSZXRyb2FjdGl2ZShpbmRleCArIDEpO1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZSA9PiBlLm9yZGVyID09PSBwb3NpdGlvbikgPiAtMSA/IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgcG9zaXRpb24pIDogcG9zaXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29uZmlndXJlZEZpZWxkcyh1c2VTZWFyY2hTZXJ2aWNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG5ld0ZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICBmaWVsZC5vcmRlciA9IGZpZWxkLm9yZGVyIHx8IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgaW5kZXgpO1xuXG4gICAgICBpZiAoIWlzVmlzaWJsZUZpZWxkKGZpZWxkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghZmllbGQuc2VhcmNoU2VydmljZSAmJiAhZmllbGQub3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgbmV3RmllbGRzLnB1c2godGhpcy5jcmVhdGVGaWVsZChmaWVsZCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc1ZhbHVlID1cbiAgICAgICAgdGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0/Lmxlbmd0aCB8fFxuICAgICAgICAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0pICYmIHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldICYmIHVzZVNlYXJjaFNlcnZpY2UpIHx8XG4gICAgICAgIGZpZWxkLmNvbnRhaW5lcjtcblxuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IF9maWVsZCA9IHRoaXMucmV0dXJuVmFsdWVzKHsgLi4uZmllbGQgfSwgJycpO1xuICAgICAgICBuZXdGaWVsZHMucHVzaChfZmllbGQpO1xuXG4gICAgICAgIGlmIChmaWVsZC5zZWFyY2hTZXJ2aWNlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQuc2VhcmNoU2VydmljZSBhcyBQb0R5bmFtaWNWaWV3U2VydmljZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5keW5hbWljVmlld1NlcnZpY2U7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKGZpZWxkLnNlYXJjaFNlcnZpY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5vcHRpb25zU2VydmljZSkge1xuICAgICAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQub3B0aW9uc1NlcnZpY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IGZpZWxkLm9wdGlvbnNTZXJ2aWNlIGFzIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5tdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKGZpZWxkLm9wdGlvbnNTZXJ2aWNlLCBmaWVsZC5maWVsZExhYmVsLCBmaWVsZC5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5vcHRpb25zU2VydmljZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQub3B0aW9uc1NlcnZpY2UgYXMgUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmNvbWJvRmlsdGVyU2VydmljZTtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoZmllbGQub3B0aW9uc1NlcnZpY2UsIGZpZWxkLmZpZWxkTGFiZWwsIGZpZWxkLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZCwgbmV3RmllbGRzLCBfZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgX3NvcnRlZEZpZWxkID0gc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIHRoaXMuZW5zdXJlRmllbGRIYXNDb250YWluZXIoX3NvcnRlZEZpZWxkKTtcblxuICAgIHJldHVybiBfc29ydGVkRmllbGQ7XG4gIH1cblxuICAvLyByZXRvcm5hIGZpZWxkcyBsaWdhZG8gYW8gdmFsdWUgbWFpcyBvcyBhdHJpYnV0b3MgZG8gdmFsdWUgcXVlIG7Do28gcG9zc3VpYW0gZmllbGRzLlxuICBwcm90ZWN0ZWQgZ2V0TWVyZ2VkRmllbGRzKCkge1xuICAgIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi50aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKV07XG5cbiAgICB0aGlzLmdldFZhbHVlRmllbGRzKCkuZm9yRWFjaCh2YWx1ZUZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBtZXJnZWRGaWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSB2YWx1ZUZpZWxkLnByb3BlcnR5KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmFsdWVGaWVsZC5wcm9wZXJ0eTtcblxuICAgICAgaWYgKGZpZWxkSW5kZXggPT09IC0xKSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKHRoaXMuY3JlYXRlRmllbGQoeyBwcm9wZXJ0eSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkRmllbGRzO1xuICB9XG5cbiAgLy8gcmV0b3JuYSBvIG9iamV0byB2YWx1ZSBjb21vIGZpZWxkcy5cbiAgcHJvdGVjdGVkIGdldFZhbHVlRmllbGRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlKS5tYXAocHJvcGVydHkgPT4gdGhpcy5jcmVhdGVGaWVsZCh7IHByb3BlcnR5IH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGQoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmIChmaWVsZC5pc0FycmF5T3JPYmplY3QgJiYgdGhpcy52YWx1ZVtwcm9wZXJ0eV0pIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1BcnJheVZhbHVlKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCk7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZExhYmVsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eSwgZmllbGQpO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCB0aGlzLnZhbHVlW3Byb3BlcnR5XSwgZmllbGQuZm9ybWF0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXR1cm5WYWx1ZXMoZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkLCBuZXdGaWVsZHM/LCBvbGRGaWVsZD8pIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGZpZWxkLnByb3BlcnR5O1xuXG4gICAgdGhpcy5zZWFyY2hCeUlkKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2U7XG4gICAgICBjb25zdCBhbGxWYWx1ZXMgPSB0aGlzLnJldHVyblZhbHVlcyhmaWVsZCwgdmFsdWUpO1xuICAgICAgY29uc3Qgb2xkRmllbGRJbmRleCA9IG5ld0ZpZWxkcy5pbmRleE9mKG5ld0ZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkID09PSBvbGRGaWVsZCkpO1xuICAgICAgbmV3RmllbGRzLnNwbGljZShvbGRGaWVsZEluZGV4LCAxLCBhbGxWYWx1ZXMpO1xuICAgICAgc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXR1cm5WYWx1ZXMoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgY29uc3QgY2xhc3Nlc0dyaWRDb2x1bW5zID0gZ2V0R3JpZENvbHVtbnNDbGFzc2VzKFxuICAgICAgZmllbGQuZ3JpZENvbHVtbnMsXG4gICAgICBmaWVsZC5vZmZzZXRDb2x1bW5zLFxuICAgICAge1xuICAgICAgICBzbUdyaWQ6IGZpZWxkLmdyaWRTbUNvbHVtbnMsXG4gICAgICAgIG1kR3JpZDogZmllbGQuZ3JpZE1kQ29sdW1ucyxcbiAgICAgICAgbGdHcmlkOiBmaWVsZC5ncmlkTGdDb2x1bW5zLFxuICAgICAgICB4bEdyaWQ6IGZpZWxkLmdyaWRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtT2Zmc2V0OiBmaWVsZC5vZmZzZXRTbUNvbHVtbnMsXG4gICAgICAgIG1kT2Zmc2V0OiBmaWVsZC5vZmZzZXRNZENvbHVtbnMsXG4gICAgICAgIGxnT2Zmc2V0OiBmaWVsZC5vZmZzZXRMZ0NvbHVtbnMsXG4gICAgICAgIHhsT2Zmc2V0OiBmaWVsZC5vZmZzZXRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtUHVsbDogZmllbGQuZ3JpZFNtUHVsbCxcbiAgICAgICAgbWRQdWxsOiBmaWVsZC5ncmlkTWRQdWxsLFxuICAgICAgICBsZ1B1bGw6IGZpZWxkLmdyaWRMZ1B1bGwsXG4gICAgICAgIHhsUHVsbDogZmllbGQuZ3JpZFhsUHVsbFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHksXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhYmVsOiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHByb3BlcnR5KSxcbiAgICAgIGNzc0NsYXNzOiBjbGFzc2VzR3JpZENvbHVtbnMsXG4gICAgICAuLi5maWVsZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaEJ5SWQodmFsdWU6IGFueSwgZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RzQnlWYWx1ZXModmFsdWUsIGZpZWxkLnBhcmFtcylcbiAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMudHJhbnNmb3JtQXJyYXlWYWx1ZShyZXMsIGZpZWxkKSkpXG4gICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCBmaWVsZC5wYXJhbXMpXG4gICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybUFycmF5VmFsdWUocmVzLCBmaWVsZCkpKVxuICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQXJyYXlWYWx1ZSh2YWx1ZVByb3BlcnR5OiBhbnksIGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQpIHtcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZVByb3BlcnR5KSA/IHZhbHVlUHJvcGVydHkgOiBbdmFsdWVQcm9wZXJ0eV07XG4gICAgbGV0IGxhYmVsczogQXJyYXk8c3RyaW5nPjtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmZvcm1hdCkpIHtcbiAgICAgIGxhYmVscyA9IHZhbHVlQXJyYXkubWFwKG9iamVjdERhdGEgPT4gdGhpcy5mb3JtYXRGaWVsZChvYmplY3REYXRhLCBmaWVsZC5mb3JtYXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYXJyYXlXaXRoTGFiZWwgPSB2YWx1ZUFycmF5Lm1hcChpdGVtID0+ICh7XG4gICAgICAgIHZhbHVlOiBpdGVtW2ZpZWxkLmZpZWxkVmFsdWVdIHx8IGl0ZW0udmFsdWUsXG4gICAgICAgIGxhYmVsOiBpdGVtW2ZpZWxkLmZpZWxkTGFiZWxdIHx8IGl0ZW0ubGFiZWxcbiAgICAgIH0pKTtcblxuICAgICAgbGFiZWxzID0gYXJyYXlXaXRoTGFiZWwubWFwKG9wdGlvblZhbHVlID0+IHtcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlLmxhYmVsKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWxUcmFuZm9ybWVkID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCBvcHRpb25WYWx1ZS5sYWJlbCwgZmllbGQuZm9ybWF0KTtcbiAgICAgICAgICBpZiAoZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiBvcHRpb25WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2xhYmVsVHJhbmZvcm1lZH0gLSAke29wdGlvblZhbHVlLnZhbHVlfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsYWJlbFRyYW5mb3JtZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxzWzBdICE9PSB1bmRlZmluZWQgJiYgbGFiZWxzLmpvaW4oKSkge1xuICAgICAgcmV0dXJuIGxhYmVscy5qb2luKCcsICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZVByb3BlcnR5ID0gJyc7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eTogc3RyaW5nLCBmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkKSB7XG4gICAgaWYgKGZpZWxkLmNvbmNhdExhYmVsVmFsdWUgJiYgZmllbGQuZmllbGRMYWJlbCAmJiBmaWVsZC5maWVsZFZhbHVlICYmICFmaWVsZC5pc0FycmF5T3JPYmplY3QpIHtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLnRyYW5zZm9ybVZhbHVlKGZpZWxkLnR5cGUsIHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF0sIGZpZWxkLmZvcm1hdCk7XG4gICAgICByZXR1cm4gYCR7dHJhbnNmb3JtZWRWYWx1ZX0gLSAke3RoaXMudmFsdWVbZmllbGQuZmllbGRWYWx1ZV19YDtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZmllbGRMYWJlbCAmJiAhZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiAhZmllbGQuaXNBcnJheU9yT2JqZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlW3Byb3BlcnR5XSA9IHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKHR5cGU6IHN0cmluZywgdmFsdWUsIGZvcm1hdCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZFZhbHVlID0gdmFsdWU7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdCUkwnLCAnc3ltYm9sJywgJzEuMi0yJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMudGltZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RmllbGQob2JqZWN0U2VsZWN0ZWQsIHByb3BlcnRpZXMpIHtcbiAgICBsZXQgZm9ybWF0dGVkRmllbGQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydGllcykpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICBpZiAob2JqZWN0U2VsZWN0ZWQgJiYgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldKSB7XG4gICAgICAgICAgaWYgKCFmb3JtYXR0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFtwcm9wZXJ0eV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZEZpZWxkICs9ICcgLSAnICsgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkRmllbGQ7XG4gIH1cbn1cbiJdfQ==
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFFdkU7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO0lBaUl2RDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0U7SUFDQTtJQUNBO0lBdklaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWdDRztJQUNjLElBQUksQ0FBb0I7SUFFekMsT0FBTyxDQUFNO0lBRUwsT0FBTyxHQUE4QixFQUFFLENBQUM7SUFDeEMsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBRXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSCxJQUF1QixNQUFNLENBQUMsTUFBaUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILElBQStCLFlBQVksQ0FBQyxLQUFjO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ21CLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFaEQ7Ozs7Ozs7T0FPRztJQUNILElBQXNCLEtBQUssQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsUUFBb0IsRUFDcEIsYUFBNEIsRUFDMUIsa0JBQXdDLEVBQ3hDLGtCQUF3QyxFQUN4Qyx3QkFBb0Q7UUFFOUQsS0FBSyxFQUFFLENBQUM7UUFUQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBQ3hDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBNEI7SUFHaEUsQ0FBQztJQUVTLHdCQUF3QixDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsQ0FBQztRQUNwRSxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDdEIsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQztJQUVTLGFBQWEsQ0FBQyxLQUF5QixFQUFFLEtBQWE7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoSCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsZ0JBQWdCLEdBQUcsSUFBSTtRQUNuRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbkMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTlELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzFCLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDakQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU87YUFDUjtZQUVELE1BQU0sUUFBUSxHQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU07Z0JBQ2xDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUM7Z0JBQzlGLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFFbEIsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXZCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtvQkFDdkIsSUFBSSxPQUFPLEtBQUssQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO3dCQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFxQyxDQUFDO3FCQUM1RDt5QkFBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7d0JBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO3dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7cUJBQzdDO2lCQUNGO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtvQkFDL0IsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO3dCQUN0QixJQUFJLE9BQU8sS0FBSyxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7NEJBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLGNBQTRDLENBQUM7eUJBQ25FOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDOzRCQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUMzQixLQUFLLENBQUMsY0FBYyxFQUNwQixLQUFLLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFDM0IsS0FBSyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQzVCLENBQUM7eUJBQ0g7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFOzRCQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFzQyxDQUFDO3lCQUM3RDs2QkFBTTs0QkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzs0QkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDM0IsS0FBSyxDQUFDLGNBQWMsRUFDcEIsS0FBSyxDQUFDLFVBQVUsSUFBSSxPQUFPLEVBQzNCLEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUM1QixDQUFDO3lCQUNIO3FCQUNGO2lCQUNGO2dCQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxxRkFBcUY7SUFDM0UsZUFBZTtRQUN2QixNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBRXJDLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQ0FBc0M7SUFDNUIsY0FBYztRQUN0QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUF5QjtRQUMzQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakQsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQy9EO2FBQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQzNCLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0U7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUF5QixFQUFFLFNBQVUsRUFBRSxRQUFTO1FBQzdFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDckYsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBeUIsRUFBRSxLQUFVO1FBQ3hELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FDOUMsS0FBSyxDQUFDLFdBQVcsRUFDakIsS0FBSyxDQUFDLGFBQWEsRUFDbkI7WUFDRSxNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDM0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQzNCLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBYTtZQUMzQixNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDNUIsRUFDRDtZQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUMvQixRQUFRLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDL0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQy9CLFFBQVEsRUFBRSxLQUFLLENBQUMsZUFBZTtTQUNoQyxFQUNEO1lBQ0UsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVTtZQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQ3pCLENBQ0YsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRO1lBQ1IsS0FBSztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDN0MsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixHQUFHLEtBQUs7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFVLEVBQUUsS0FBeUI7UUFDdEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUNoQixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU87cUJBQ2hCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO3FCQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTztxQkFDaEIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7cUJBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQztTQUNGO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxhQUFrQixFQUFFLEtBQXlCO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRixJQUFJLE1BQXFCLENBQUM7UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixNQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ25GO2FBQU07WUFDTCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO2FBQzVDLENBQUMsQ0FBQyxDQUFDO1lBRUosTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTtvQkFDckIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6RixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO3dCQUMvQyxPQUFPLEdBQUcsZUFBZSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDcEQ7eUJBQU07d0JBQ0wsT0FBTyxlQUFlLENBQUM7cUJBQ3hCO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO2FBQU07WUFDTCxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ25CLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsS0FBeUI7UUFDckUsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM1RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckcsT0FBTyxHQUFHLGdCQUFnQixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDaEU7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVksRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUNoRCxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU3QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssVUFBVTtnQkFDYixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzFGLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxZQUFZLENBQUMsQ0FBQztnQkFDMUUsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLHFCQUFxQixDQUFDLENBQUM7Z0JBQ25GLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM3RCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksaUJBQWlCLENBQUMsQ0FBQztnQkFDL0UsTUFBTTtTQUNUO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRU8sV0FBVyxDQUFDLGNBQWMsRUFBRSxVQUFVO1FBQzVDLElBQUksY0FBYyxDQUFDO1FBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFO3dCQUNuQixjQUFjLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUMzQzt5QkFBTTt3QkFDTCxjQUFjLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDcEQ7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztvRkExWlUsMEJBQTBCOzZEQUExQiwwQkFBMEI7O2lGQUExQiwwQkFBMEI7Y0FEdEMsU0FBUztrUUFtQ1MsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBOEJRLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQWlCYyxZQUFZO2tCQUExQyxLQUFLO21CQUFDLGtCQUFrQjtZQTZCSCxRQUFRO2tCQUE3QixLQUFLO21CQUFDLGFBQWE7WUFVRSxLQUFLO2tCQUExQixLQUFLO21CQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9wby10aW1lL3BvLXRpbWUucGlwZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgc29ydEZpZWxkcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRHcmlkQ29sdW1uc0NsYXNzZXMsIGlzVmlzaWJsZUZpZWxkIH0gZnJvbSAnLi4vcG8tZHluYW1pYy51dGlsJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdGaWVsZCB9IGZyb20gJy4vcG8tZHluYW1pYy12aWV3LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tZHluYW1pYy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1jb21iby9wby1jb21iby1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1NoYXJlZEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvcG8tZHluYW1pYy1zaGFyZWQtYmFzZSc7XG5cbi8qKlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgcGFyYSBsaXN0YXIgZGFkb3MgZGluYW1pY2FtZW50ZSBhIHBhcnRpciBkZSB1bWEgbGlzdGEgZGUgb2JqZXRvcy5cbiAqXG4gKiA+IFBvciBwYWRyw6NvIGVzc2UgY29tcG9uZW50ZSBjcmlhIGBwby1pbmZvYCBwYXJhIGV4aWJpw6fDo28sIMOpIHBvc3PDrXZlbCBjcmlhciBgcG8tdGFnYCBwYXNzYW5kbyBhIHByb3ByaWVkYWRlIHsgdGFnOiB0cnVlIH0uXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3QmFzZUNvbXBvbmVudCBleHRlbmRzIFBvRHluYW1pY1NoYXJlZEJhc2Uge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb3NzaWJpbGl0YSBleGVjdXRhciB1bWEgZnVuw6fDo28gcXVhbmRvIG8gY29tcG9uZW50ZSDDqSBpbmljaWFsaXphZG8uXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICogLSAqKlN0cmluZyoqOiBFbmRwb2ludCB1c2FkbyBwZWxvIGNvbXBvbmVudGUgcGFyYSByZXF1aXNpw6fDo28gdmlhIGBQT1NUYC5cbiAgICogLSAqKkZ1bmN0aW9uKio6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSBvcyBkb2lzIHRpcG9zIGRlIHV0aWxpemHDp8OjbyBkYSBwcm9wcmllZGFkZSBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHZhbHVlOiB7XG4gICAqICAgICBjbnBqOiAnKioqKioqKioqKioqKionLCAvLyBhbHRlcmEgdmFsb3IgZG8gY2FtcG9cbiAgICogICAgIHVwZGF0ZWQ6IChuZXcgRGF0ZSgpKS50b1N0cmluZygpIC8vIGF0cmlidWkgdmFsb3IgYW8gY2FtcG8gbm92b1xuICAgKiAgIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnY25waicsIHRhZzogdHJ1ZSwgaW52ZXJzZTogdHJ1ZSB9LCAvLyBhdHJpYnVpIG5vdmFzIHByb3ByaWVkYWRlcyBhbyBmaWVsZFxuICAgKiAgICAgeyBwcm9wZXJ0eTogJ3VwZGF0ZWQnLCB0YWc6IHRydWUgfSAvLyBpbmNsdWkgY2FtcG8gbm92b1xuICAgKiAgIF1cbiAgICogfVxuICAgKiBgYGBcbiAgICogPiAqKnZhbHVlKio6IGFueSA9IGF0cmlidWkgbm92byB2YWxvciBkbyBtb2RlbC5cbiAgICpcbiAgICogPiAqKmZpZWxkcyoqOiBgQXJyYXk8UG9EeW5hbWljVmlld0ZpZWxkPmAgPSBMaXN0YSBkZSBjYW1wb3MgcXVlIGRlc2VqYSBhbHRlcmFyIGFzIHByb3ByaWVkYWRlcyxcbiAgICogY2FzbyBlbnZpYXIgdW0gY2FtcG8gYSBtYWlzIHNlcsOhIGNyaWFkbyB1bSBub3ZvIGNhbXBvLlxuICAgKlxuICAgKiAtIFBhcmEgZXNjb25kZXIvcmVtb3ZlciBjYW1wb3MgcHJlY2lzYSBpbmZvcm1hciBubyBmaWVsZCBhIHByb3ByaWVkYWRlIGB2aXNpYmxlID0gZmFsc2VgLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBsb2FkOiBzdHJpbmcgfCBGdW5jdGlvbjtcblxuICBzZXJ2aWNlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxQb0R5bmFtaWNWaWV3RmllbGQ+ID0gW107XG4gIHByaXZhdGUgX3Nob3dBbGxWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb0R5bmFtaWNWaWV3YC5cbiAgICpcbiAgICogPiBFeDogYFsgeyBwcm9wZXJ0eTogJ2FnZScgfSBdYFxuICAgKlxuICAgKiBSZWdyYXMgZGUgdGlwYWdlbSBlIGZvcm1hdGHDp8OjbyBkb3MgdmFsb3JlcyBleGliaWRvczpcbiAgICpcbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpjdXJyZW5jeSogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyByZWNlYmUgXCInQlJMJywgJ3N5bWJvbCcsICcxLjItMidcIlxuICAgKiBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpkYXRlKiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSAnZGQvTU0veXl5eScgY29tbyBmb3JtYXRvIHBhZHLDo28uXG4gICAqIC0gQ2FzbyBvICp0eXBlKiBpbmZvcm1hZG8gc2VqYSAqZGF0ZVRpbWUqIGUgbsOjbyBzZWphIGluZm9ybWFkbyBvICpmb3JtYXQqIG8gbWVzbW8gcmVjZWJlICdkZC9NTS95eXl5IEhIOm1tOnNzJyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpudW1iZXIqIGUgbsOjbyBzZWphIGluZm9ybWFkbyBvICpmb3JtYXQqIG8gbWVzbW8gbsOjbyBzZXLDoSBmb3JtYXRhZG8uXG4gICAqIC0gQ2FzbyBvICp0eXBlKiBpbmZvcm1hZG8gc2VqYSAqdGltZSogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyByZWNlYmUgJ0hIOm1tOnNzLmZmZmZmZicgY29tbyBmb3JtYXRvIHBhZHLDo28uXG4gICAqXG4gICAqID4gQXMgcHJvcHJpZWRhZGVzIGluZm9ybWFkYXMgc2Vyw6NvIGV4aWJpZGFzIG1lc21vIG7Do28gY29udGVuZG8gdmFsb3IgZGUgcmVmZXLDqm5jaWEgbm8gb2JqZXRvIGRhIHByb3ByaWVkYWRlIGBwLXZhbHVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYFtdYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkcycpIHNldCBmaWVsZHMoZmllbGRzOiBBcnJheTxQb0R5bmFtaWNWaWV3RmllbGQ+KSB7XG4gICAgdGhpcy5fZmllbGRzID0gQXJyYXkuaXNBcnJheShmaWVsZHMpID8gWy4uLmZpZWxkc10gOiBbXTtcbiAgfVxuXG4gIGdldCBmaWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBleGliaXLDoSB0b2RhcyBhcyBpbmZvcm1hw6fDtWVzIGNvbnRpZGFzIGRlbnRybyBkbyBvYmpldG8gaW5mb3JtYWRvIG5hIHByb3ByaWVkYWRlIGBwLXZhbHVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctYWxsLXZhbHVlJykgc2V0IHNob3dBbGxWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dBbGxWYWx1ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dBbGxWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0FsbFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHF1ZWJyYSBkZSBsaW5oYSBubyB0ZXh0byBkbyBgcC12YWx1ZWAsIGFwbGljYW5kby1hIG9uZGUgaMOhIGBcXG5gLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLWR5bmFtaWMtdmlld1xuICAgKiAgIFtwLXZhbHVlXT1cInsgZGVzY3JpcHRpb246ICdQcmltZWlyYSBsaW5oYVxcblNlZ3VuZGEgbGluaGEnIH1cIlxuICAgKiAgIFtwLXRleHQtd3JhcF09XCJ0cnVlXCJcbiAgICogPjwvcG8tZHluYW1pYy12aWV3PlxuICAgKiBgYGBcbiAgICpcbiAgICogU2HDrWRhOlxuICAgKiBgYGBcbiAgICogUHJpbWVpcmEgbGluaGFcbiAgICogU2VndW5kYSBsaW5oYVxuICAgKiBgYGBcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXRleHQtd3JhcCcpIHRleHRXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGV4aWJpciBhcyBpbmZvcm1hw6fDtWVzIGRpbsOibWljYXMsIG8gdmFsb3Igc2Vyw6EgcmVjdXBlcmFkbyBhdHJhdsOpcyBkbyBhdHJpYnV0byAqcHJvcGVydHkqXG4gICAqIGRvcyBvYmpldG9zIGNvbnRpZG9zIG5hIHByb3ByaWRhZGUgYHAtZmllbGRzYC5cbiAgICpcbiAgICogPiBFeDogYHsgYWdlOiAnMzUnIH1gXG4gICAqL1xuICBASW5wdXQoJ3AtdmFsdWUnKSBzZXQgdmFsdWUodmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWUgJiYgaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSA/IHZhbHVlIDoge307XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSxcbiAgICBwcml2YXRlIHRpbWVQaXBlOiBQb1RpbWVQaXBlLFxuICAgIHByaXZhdGUgdGl0bGVDYXNlUGlwZTogVGl0bGVDYXNlUGlwZSxcbiAgICBwcm90ZWN0ZWQgZHluYW1pY1ZpZXdTZXJ2aWNlOiBQb0R5bmFtaWNWaWV3U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29tYm9GaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkT3JkZXJSZXRyb2FjdGl2ZShwb3NpdGlvbjogbnVtYmVyLCBpbmRleDogbnVtYmVyID0gMSk6IG51bWJlciB7XG4gICAgaWYgKHBvc2l0aW9uID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLm9yZGVyID09PSBpbmRleCkgPiAtMVxuICAgICAgPyB0aGlzLmdldEZpZWxkT3JkZXJSZXRyb2FjdGl2ZShwb3NpdGlvbiwgaW5kZXggKyAxKVxuICAgICAgOiBpbmRleDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWVsZE9yZGVyKGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRGaWVsZE9yZGVyUmV0cm9hY3RpdmUoaW5kZXggKyAxKTtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmluZEluZGV4KGUgPT4gZS5vcmRlciA9PT0gcG9zaXRpb24pID4gLTEgPyB0aGlzLmdldEZpZWxkT3JkZXIoZmllbGQsIHBvc2l0aW9uKSA6IHBvc2l0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbmZpZ3VyZWRGaWVsZHModXNlU2VhcmNoU2VydmljZSA9IHRydWUpIHtcbiAgICBjb25zdCBuZXdGaWVsZHMgPSBbXTtcblxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgZmllbGQub3JkZXIgPSBmaWVsZC5vcmRlciB8fCB0aGlzLmdldEZpZWxkT3JkZXIoZmllbGQsIGluZGV4KTtcblxuICAgICAgaWYgKCFpc1Zpc2libGVGaWVsZChmaWVsZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZpZWxkLnNlYXJjaFNlcnZpY2UgJiYgIWZpZWxkLm9wdGlvbnNTZXJ2aWNlKSB7XG4gICAgICAgIG5ld0ZpZWxkcy5wdXNoKHRoaXMuY3JlYXRlRmllbGQoZmllbGQpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNWYWx1ZSA9XG4gICAgICAgIHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldPy5sZW5ndGggfHxcbiAgICAgICAgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldKSAmJiB0aGlzLnZhbHVlW2ZpZWxkLnByb3BlcnR5XSAmJiB1c2VTZWFyY2hTZXJ2aWNlKSB8fFxuICAgICAgICBmaWVsZC5jb250YWluZXI7XG5cbiAgICAgIGlmIChoYXNWYWx1ZSkge1xuICAgICAgICBjb25zdCBfZmllbGQgPSB0aGlzLnJldHVyblZhbHVlcyh7IC4uLmZpZWxkIH0sICcnKTtcbiAgICAgICAgbmV3RmllbGRzLnB1c2goX2ZpZWxkKTtcblxuICAgICAgICBpZiAoZmllbGQuc2VhcmNoU2VydmljZSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQuc2VhcmNoU2VydmljZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IGZpZWxkLnNlYXJjaFNlcnZpY2UgYXMgUG9EeW5hbWljVmlld1NlcnZpY2U7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQuc2VhcmNoU2VydmljZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZHluYW1pY1ZpZXdTZXJ2aWNlO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhmaWVsZC5zZWFyY2hTZXJ2aWNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQub3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgICBpZiAoZmllbGQub3B0aW9uc011bHRpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkLm9wdGlvbnNTZXJ2aWNlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSBmaWVsZC5vcHRpb25zU2VydmljZSBhcyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMubXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuY29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zU2VydmljZSxcbiAgICAgICAgICAgICAgICBmaWVsZC5maWVsZExhYmVsIHx8ICdsYWJlbCcsXG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWx1ZSB8fCAndmFsdWUnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQub3B0aW9uc1NlcnZpY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IGZpZWxkLm9wdGlvbnNTZXJ2aWNlIGFzIFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5jb21ib0ZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgIGZpZWxkLm9wdGlvbnNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkTGFiZWwgfHwgJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlIHx8ICd2YWx1ZSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkV2l0aFNlcnZpY2UoZmllbGQsIG5ld0ZpZWxkcywgX2ZpZWxkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IF9zb3J0ZWRGaWVsZCA9IHNvcnRGaWVsZHMobmV3RmllbGRzKTtcbiAgICB0aGlzLmVuc3VyZUZpZWxkSGFzQ29udGFpbmVyKF9zb3J0ZWRGaWVsZCk7XG5cbiAgICByZXR1cm4gX3NvcnRlZEZpZWxkO1xuICB9XG5cbiAgLy8gcmV0b3JuYSBmaWVsZHMgbGlnYWRvIGFvIHZhbHVlIG1haXMgb3MgYXRyaWJ1dG9zIGRvIHZhbHVlIHF1ZSBuw6NvIHBvc3N1aWFtIGZpZWxkcy5cbiAgcHJvdGVjdGVkIGdldE1lcmdlZEZpZWxkcygpIHtcbiAgICBjb25zdCBtZXJnZWRGaWVsZHMgPSBbLi4udGhpcy5nZXRDb25maWd1cmVkRmllbGRzKCldO1xuXG4gICAgdGhpcy5nZXRWYWx1ZUZpZWxkcygpLmZvckVhY2godmFsdWVGaWVsZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZEluZGV4ID0gbWVyZ2VkRmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSA9PT0gdmFsdWVGaWVsZC5wcm9wZXJ0eSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHZhbHVlRmllbGQucHJvcGVydHk7XG5cbiAgICAgIGlmIChmaWVsZEluZGV4ID09PSAtMSkge1xuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaCh0aGlzLmNyZWF0ZUZpZWxkKHsgcHJvcGVydHkgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEZpZWxkcztcbiAgfVxuXG4gIC8vIHJldG9ybmEgbyBvYmpldG8gdmFsdWUgY29tbyBmaWVsZHMuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZUZpZWxkcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy52YWx1ZSkubWFwKHByb3BlcnR5ID0+IHRoaXMuY3JlYXRlRmllbGQoeyBwcm9wZXJ0eSB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpZWxkKGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGZpZWxkLnByb3BlcnR5O1xuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAoZmllbGQuaXNBcnJheU9yT2JqZWN0ICYmIHRoaXMudmFsdWVbcHJvcGVydHldKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtQXJyYXlWYWx1ZSh0aGlzLnZhbHVlW3Byb3BlcnR5XSwgZmllbGQpO1xuICAgIH0gZWxzZSBpZiAoZmllbGQuZmllbGRMYWJlbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLnRyYW5zZm9ybUZpZWxkTGFiZWwocHJvcGVydHksIGZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtVmFsdWUoZmllbGQudHlwZSwgdGhpcy52YWx1ZVtwcm9wZXJ0eV0sIGZpZWxkLmZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmV0dXJuVmFsdWVzKGZpZWxkLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpZWxkV2l0aFNlcnZpY2UoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgbmV3RmllbGRzPywgb2xkRmllbGQ/KSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBmaWVsZC5wcm9wZXJ0eTtcblxuICAgIHRoaXMuc2VhcmNoQnlJZCh0aGlzLnZhbHVlW3Byb3BlcnR5XSwgZmllbGQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlO1xuICAgICAgY29uc3QgYWxsVmFsdWVzID0gdGhpcy5yZXR1cm5WYWx1ZXMoZmllbGQsIHZhbHVlKTtcbiAgICAgIGNvbnN0IG9sZEZpZWxkSW5kZXggPSBuZXdGaWVsZHMuaW5kZXhPZihuZXdGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZCA9PT0gb2xkRmllbGQpKTtcbiAgICAgIG5ld0ZpZWxkcy5zcGxpY2Uob2xkRmllbGRJbmRleCwgMSwgYWxsVmFsdWVzKTtcbiAgICAgIHNvcnRGaWVsZHMobmV3RmllbGRzKTtcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldHVyblZhbHVlcyhmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkLCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBmaWVsZC5wcm9wZXJ0eTtcbiAgICBjb25zdCBjbGFzc2VzR3JpZENvbHVtbnMgPSBnZXRHcmlkQ29sdW1uc0NsYXNzZXMoXG4gICAgICBmaWVsZC5ncmlkQ29sdW1ucyxcbiAgICAgIGZpZWxkLm9mZnNldENvbHVtbnMsXG4gICAgICB7XG4gICAgICAgIHNtR3JpZDogZmllbGQuZ3JpZFNtQ29sdW1ucyxcbiAgICAgICAgbWRHcmlkOiBmaWVsZC5ncmlkTWRDb2x1bW5zLFxuICAgICAgICBsZ0dyaWQ6IGZpZWxkLmdyaWRMZ0NvbHVtbnMsXG4gICAgICAgIHhsR3JpZDogZmllbGQuZ3JpZFhsQ29sdW1uc1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc21PZmZzZXQ6IGZpZWxkLm9mZnNldFNtQ29sdW1ucyxcbiAgICAgICAgbWRPZmZzZXQ6IGZpZWxkLm9mZnNldE1kQ29sdW1ucyxcbiAgICAgICAgbGdPZmZzZXQ6IGZpZWxkLm9mZnNldExnQ29sdW1ucyxcbiAgICAgICAgeGxPZmZzZXQ6IGZpZWxkLm9mZnNldFhsQ29sdW1uc1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc21QdWxsOiBmaWVsZC5ncmlkU21QdWxsLFxuICAgICAgICBtZFB1bGw6IGZpZWxkLmdyaWRNZFB1bGwsXG4gICAgICAgIGxnUHVsbDogZmllbGQuZ3JpZExnUHVsbCxcbiAgICAgICAgeGxQdWxsOiBmaWVsZC5ncmlkWGxQdWxsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHZhbHVlLFxuICAgICAgbGFiZWw6IHRoaXMudGl0bGVDYXNlUGlwZS50cmFuc2Zvcm0ocHJvcGVydHkpLFxuICAgICAgY3NzQ2xhc3M6IGNsYXNzZXNHcmlkQ29sdW1ucyxcbiAgICAgIC4uLmZpZWxkXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoQnlJZCh2YWx1ZTogYW55LCBmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgaWYgKGZpZWxkLm9wdGlvbnNNdWx0aSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgLmdldE9iamVjdHNCeVZhbHVlcyh2YWx1ZSwgZmllbGQucGFyYW1zKVxuICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy50cmFuc2Zvcm1BcnJheVZhbHVlKHJlcywgZmllbGQpKSlcbiAgICAgICAgICAucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgLmdldE9iamVjdEJ5VmFsdWUodmFsdWUsIGZpZWxkLnBhcmFtcylcbiAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMudHJhbnNmb3JtQXJyYXlWYWx1ZShyZXMsIGZpZWxkKSkpXG4gICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BcnJheVZhbHVlKHZhbHVlUHJvcGVydHk6IGFueSwgZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IHZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlUHJvcGVydHkpID8gdmFsdWVQcm9wZXJ0eSA6IFt2YWx1ZVByb3BlcnR5XTtcbiAgICBsZXQgbGFiZWxzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQuZm9ybWF0KSkge1xuICAgICAgbGFiZWxzID0gdmFsdWVBcnJheS5tYXAob2JqZWN0RGF0YSA9PiB0aGlzLmZvcm1hdEZpZWxkKG9iamVjdERhdGEsIGZpZWxkLmZvcm1hdCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhcnJheVdpdGhMYWJlbCA9IHZhbHVlQXJyYXkubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgdmFsdWU6IGl0ZW1bZmllbGQuZmllbGRWYWx1ZV0gfHwgaXRlbS52YWx1ZSxcbiAgICAgICAgbGFiZWw6IGl0ZW1bZmllbGQuZmllbGRMYWJlbF0gfHwgaXRlbS5sYWJlbFxuICAgICAgfSkpO1xuXG4gICAgICBsYWJlbHMgPSBhcnJheVdpdGhMYWJlbC5tYXAob3B0aW9uVmFsdWUgPT4ge1xuICAgICAgICBpZiAob3B0aW9uVmFsdWUubGFiZWwpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbFRyYW5mb3JtZWQgPSB0aGlzLnRyYW5zZm9ybVZhbHVlKGZpZWxkLnR5cGUsIG9wdGlvblZhbHVlLmxhYmVsLCBmaWVsZC5mb3JtYXQpO1xuICAgICAgICAgIGlmIChmaWVsZC5jb25jYXRMYWJlbFZhbHVlICYmIG9wdGlvblZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bGFiZWxUcmFuZm9ybWVkfSAtICR7b3B0aW9uVmFsdWUudmFsdWV9YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxhYmVsVHJhbmZvcm1lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChsYWJlbHNbMF0gIT09IHVuZGVmaW5lZCAmJiBsYWJlbHMuam9pbigpKSB7XG4gICAgICByZXR1cm4gbGFiZWxzLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlUHJvcGVydHkgPSAnJztcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1GaWVsZExhYmVsKHByb3BlcnR5OiBzdHJpbmcsIGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQpIHtcbiAgICBpZiAoZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiBmaWVsZC5maWVsZExhYmVsICYmIGZpZWxkLmZpZWxkVmFsdWUgJiYgIWZpZWxkLmlzQXJyYXlPck9iamVjdCkge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMudHJhbnNmb3JtVmFsdWUoZmllbGQudHlwZSwgdGhpcy52YWx1ZVtmaWVsZC5maWVsZExhYmVsXSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBgJHt0cmFuc2Zvcm1lZFZhbHVlfSAtICR7dGhpcy52YWx1ZVtmaWVsZC5maWVsZFZhbHVlXX1gO1xuICAgIH1cblxuICAgIGlmIChmaWVsZC5maWVsZExhYmVsICYmICFmaWVsZC5jb25jYXRMYWJlbFZhbHVlICYmICFmaWVsZC5pc0FycmF5T3JPYmplY3QpIHtcbiAgICAgIHRoaXMudmFsdWVbcHJvcGVydHldID0gdGhpcy52YWx1ZVtmaWVsZC5maWVsZExhYmVsXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtVmFsdWUodHlwZTogc3RyaW5nLCB2YWx1ZSwgZm9ybWF0KSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkVmFsdWUgPSB2YWx1ZTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQgfHwgJ0JSTCcsICdzeW1ib2wnLCAnMS4yLTInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQgfHwgJ2RkL01NL3l5eXknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy50aW1lUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRGaWVsZChvYmplY3RTZWxlY3RlZCwgcHJvcGVydGllcykge1xuICAgIGxldCBmb3JtYXR0ZWRGaWVsZDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSkge1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmIChvYmplY3RTZWxlY3RlZCAmJiBvYmplY3RTZWxlY3RlZFtwcm9wZXJ0eV0pIHtcbiAgICAgICAgICBpZiAoIWZvcm1hdHRlZEZpZWxkKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRGaWVsZCA9IG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0dGVkRmllbGQgKz0gJyAtICcgKyBvYmplY3RTZWxlY3RlZFtwcm9wZXJ0eV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWRGaWVsZDtcbiAgfVxufVxuIl19
|
|
@@ -153,7 +153,7 @@ export class PoDatepickerComponent extends PoDatepickerBaseComponent {
|
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
155
|
onKeyup($event) {
|
|
156
|
-
if (this.readonly) {
|
|
156
|
+
if (this.readonly || $event?.target !== this.inputEl?.nativeElement) {
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
this.objMask.keyup($event);
|
|
@@ -516,4 +516,4 @@ export class PoDatepickerComponent extends PoDatepickerBaseComponent {
|
|
|
516
516
|
args: ['keydown', ['$event']]
|
|
517
517
|
}] }); })();
|
|
518
518
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoDatepickerComponent, { className: "PoDatepickerComponent", filePath: "lib/components/po-field/po-datepicker/po-datepicker.component.ts", lineNumber: 80 }); })();
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGF0ZXBpY2tlci9wby1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUNMLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsSUFBSSxFQUNKLHNCQUFzQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBRy9HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNHdEQsb0NBS0M7SUFEQyw2TEFBa0IsZUFBQSxlQUFPLENBQUEsSUFBQztJQUU1QixpQkFBVzs7O0lBSFQsOENBQXlCOzs7SUFrQmpDLHdCQUF3Rjs7O0lBSXBGLDBCQUF5RTs7OztJQUQzRSxxQ0FBMEU7SUFDeEUsc0ZBQXlFO0lBQ3pFLDJDQVFDO0lBTEMsZ1RBQWtCO0lBSWxCLHdMQUFZLGVBQUEs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U0FBUztrQkFEUixZQUFZO21CQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBNUV4QixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIGZvcm1hdFllYXIsXG4gIGlzS2V5Q29kZUVudGVyLFxuICBpc0tleUNvZGVTcGFjZSxcbiAgaXNNb2JpbGUsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB1dWlkLFxuICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5cbmltcG9ydCB7IFBvQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wby1jYWxlbmRhci9wby1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VyTGl0ZXJhbHMgfSBmcm9tICcuL3BvLWRhdGVwaWNrZXIubGl0ZXJhbHMnO1xuaW1wb3J0IHsgUG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wby1idXR0b24vcG8tYnV0dG9uLmNvbXBvbmVudCc7XG5cbmNvbnN0IHBvQ2FsZW5kYXJDb250ZW50T2Zmc2V0ID0gODtcbmNvbnN0IHBvQ2FsZW5kYXJQb3NpdGlvbkRlZmF1bHQgPSAnYm90dG9tLWxlZnQnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0RhdGVwaWNrZXJCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGF0ZXBpY2tlci1iYXNpY1wiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1iYXNpYy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItbGFic1wiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWxhYnMvc2FtcGxlLXBvLWRhdGVwaWNrZXItbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWxhYnMvc2FtcGxlLXBvLWRhdGVwaWNrZXItbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kYXRlcGlja2VyLWFpcmZhcmVcIiB0aXRsZT1cIlBPIERhdGVwaWNrZXIgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWFpcmZhcmUvc2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWFpcmZhcmUvc2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kYXRlcGlja2VyLWFpcmZhcmUtcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciAtIEFpcmZhcmUgUmVhY3RpdmUgRm9ybVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1haXJmYXJlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1kYXRlcGlja2VyLWFpcmZhcmUtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRGF0ZXBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRGF0ZXBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvRGF0ZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIFBvRGF0ZXBpY2tlckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiB0cnVlIH0pIGNhbGVuZGFyOiBQb0NhbGVuZGFyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkaWFsb2dQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgZGlhbG9nUGlja2VyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpY29uRGF0ZXBpY2tlcicpIGljb25EYXRlcGlja2VyOiBQb0J1dHRvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICAvKiogUsOzdHVsbyBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgZWw6IEVsZW1lbnRSZWY7XG4gIGRlY2xhcmUgaG91cjogc3RyaW5nO1xuICBpZCA9IGBwby1kYXRlcGlja2VyWyR7dXVpZCgpfV1gO1xuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGxpdGVyYWxzOiBhbnk7XG5cbiAgZXZlbnRMaXN0ZW5lckZ1bmN0aW9uOiAoKSA9PiB2b2lkO1xuICBldmVudFJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgY2xpY2tMaXN0ZW5lcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlUmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICdeKD86WzAtOV0pXFxcXGR7MX0oPzpbMC05XSlcXFxcZHsxfS0nICsgJyg/OjBbMS05XXwxWzAtMl0pLScgKyAnKD86MFsxLTldfFsxMl1cXFxcZHwzWzAxXSkkJ1xuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzb1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAnXig/OlswLTldKVxcXFxkezF9KD86WzAtOV0pXFxcXGR7MX0tJyArXG4gICAgICAnKD86MFsxLTldfDFbMC0yXSktJyArXG4gICAgICAnKD86MFsxLTldfFsxMl1cXFxcZHwzWzAxXSknICtcbiAgICAgICdUKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZDpbMC01XVxcXFxkKD86WnwtMFsxLTldfC0xXFxcXGR8LTJbMC0zXXwnICtcbiAgICAgICctMDA6Pyg/OjBbMS05XXxbMC01XVxcXFxkKXxcXFxcK1swMV1cXFxcZHxcXFxcKzJbMC0zXSknICtcbiAgICAgICcoPzp8Oj9bMC01XVxcXFxkKSQnXG4gICk7XG4gIHByaXZhdGUgdGltZW91dENoYW5nZTogYW55O1xuICBwcml2YXRlIHZhbHVlQmVmb3JlQ2hhbmdlOiBzdHJpbmc7XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udHJvbFBvc2l0aW9uOiBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gICAgdGhpcy5zaG9ydExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICAgIHRoaXMuZWwgPSBlbDtcbiAgICBjb25zdCBsYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gICAgdGhpcy5saXRlcmFscyA9IHtcbiAgICAgIC4uLlBvRGF0ZXBpY2tlckxpdGVyYWxzW2xhbmd1YWdlXVxuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uS2V5dXAoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub2JqTWFzay5rZXl1cCgkZXZlbnQpO1xuICAgIC8vIENvbnRyb2xhIGEgYXR1YWxpemHDp8OjbyBkbyBtb2RlbCwgdmVyaWZpY2FuZG8gc2UgYSBkYXRhIMOpIHZhbGlkYVxuICAgIGlmICh0aGlzLm9iak1hc2sudmFsdWVUb01vZGVsIHx8IHRoaXMub2JqTWFzay52YWx1ZVRvTW9kZWwgPT09ICcnKSB7XG4gICAgICBpZiAodGhpcy5vYmpNYXNrLnZhbHVlVG9Nb2RlbC5sZW5ndGggPj0gMTApIHtcbiAgICAgICAgdGhpcy5jb250cm9sTW9kZWwodGhpcy5nZXREYXRlRnJvbVN0cmluZyh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSkpO1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb250cm9sTW9kZWwodGhpcy5kYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleWRvd24oJGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9iak1hc2sua2V5ZG93bigkZXZlbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0RGlhbG9nUGlja2VyU3R5bGVEaXNwbGF5KCdub25lJyk7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaWNvbkRhdGVwaWNrZXIuYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYXJpYS1sYWJlbCcsIHRoaXMubGl0ZXJhbHMub3Blbik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb0RhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvRGF0ZXBpY2tlckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZXBpY2tlcjogUG9EYXRlcGlja2VyQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0RhdGVwaWNrZXIoKSB7XG4gICAqICAgdGhpcy5kYXRlcGlja2VyLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUGlja2VyKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgdGhpcy5zZXRDYWxlbmRhclBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcbiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICB9XG4gIH1cblxuICBkYXRlU2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbD8uKCk7XG4gICAgaWYgKCF0aGlzLnZlcmlmeU1vYmlsZSgpKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRUb0RhdGUodGhpcy5kYXRlKTtcbiAgICB0aGlzLmNvbnRyb2xNb2RlbCh0aGlzLmRhdGUpO1xuICAgIHRoaXMuY29udHJvbENoYW5nZUVtaXR0ZXIoKTtcbiAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIC8vIEVzY29uZGUgUGlja2VyIHF1YW5kbyBmb3IgY2xpY2FkbyBmb3JhXG4gIHdhc0NsaWNrZWRPblBpY2tlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1BpY2tlciB8fCAhdGhpcy5pY29uRGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIXRoaXMuZGlhbG9nUGlja2VyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmhhc092ZXJsYXlDbGFzcyhldmVudC50YXJnZXQpKSAmJlxuICAgICAgIXRoaXMuaWNvbkRhdGVwaWNrZXIuYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmhhc0F0dHJDYWxlbmRhcihldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICB9XG4gIH1cblxuICBoYXNJbnZhbGlkQ2xhc3MoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWludmFsaWQnKSAmJlxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctZGlydHknKSAmJlxuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09ICcnXG4gICAgKTtcbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclBhdHRlcm4gIT09ICcnICYmIHRoaXMuaGFzSW52YWxpZENsYXNzKCkgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSA9IHRoaXMuZm9ybWF0VG9EYXRlKHRoaXMuZGF0ZSk7XG4gICAgdGhpcy5kYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY29udHJvbE1vZGVsKHRoaXMuZGF0ZSk7XG5cbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VFbWl0dGVyKCk7XG4gIH1cblxuICBldmVudE9uQmx1cigkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkTW9kZWw/LigpO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICBjb25zdCBuZXdEYXRlID0gZGF0ZSA/IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmcoZGF0ZSkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vYmpNYXNrLmJsdXIoJGV2ZW50KTtcbiAgICB0aGlzLm9uYmx1ci5lbWl0KCk7XG5cbiAgICBpZiAodGhpcy5vYmpNYXNrLnZhbHVlVG9Nb2RlbCkge1xuICAgICAgaWYgKHRoaXMub2JqTWFzay52YWx1ZVRvTW9kZWwubGVuZ3RoID49IDEwKSB7XG4gICAgICAgIHRoaXMuY29udHJvbE1vZGVsKG5ld0RhdGUpO1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXdEYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb250cm9sTW9kZWwodGhpcy5kYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VFbWl0dGVyKCk7XG4gIH1cblxuICBldmVudE9uQ2xpY2soJGV2ZW50KSB7XG4gICAgaWYgKHRoaXMudmVyaWZ5TW9iaWxlKCkpIHtcbiAgICAgICRldmVudC50YXJnZXQuYmx1cigpO1xuXG4gICAgICAvLyBhYnJlIG8gY2FsZW5kYXIgcXVhbmRvIGNsaWNhciBubyBpbnB1dCBzb21lbnRlIG5vIG1vYmlsZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRvZ2dsZVBpY2tlcigpLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXR1YWxpemEgYSBwb3Npw6fDo28gZG8gY3Vyc29yIGFvIGNsaWNhclxuICAgICAgdGhpcy5vYmpNYXNrLmNsaWNrKCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgb25LZXlQcmVzcyhldmVudDogYW55KSB7XG4gICAgaWYgKGlzS2V5Q29kZUVudGVyKGV2ZW50KSB8fCBpc0tleUNvZGVTcGFjZShldmVudCkpIHtcbiAgICAgIHRoaXMudG9nZ2xlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0VG9EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZUZvcm1hdHRlZCA9IHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKTtcblxuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ2RkJywgKCcwJyArIHZhbHVlLmdldERhdGUoKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdtbScsICgnMCcgKyAodmFsdWUuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ3l5eXknLCBmb3JtYXRZZWFyKHZhbHVlLmdldEZ1bGxZZWFyKCkpKTtcblxuICAgIHJldHVybiBkYXRlRm9ybWF0dGVkO1xuICB9XG5cbiAgcmVmcmVzaFZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VG9EYXRlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbCAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5ob3VyID1cbiAgICAgICAgICAnVCcgKyBkYXRlU3RyaW5nLnN1YnN0cmluZygxNiwgMjQpICsgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMjgsIDMxKSArICc6JyArIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDMxLCAzMyk7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VG9EYXRlKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1ZhbGlkRGF0ZUlzbyh2YWx1ZSkgfHwgdGhpcy5pc1ZhbGlkRXh0ZW5kZWRJc28odmFsdWUpKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRFeHRlbmRlZElzbyh2YWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmhvdXIgPSB2YWx1ZS5zdWJzdHJpbmcoMTAsIDI1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzb0Zvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pc0V4dGVuZGVkSVNPID0gdGhpcy5pc1ZhbGlkRXh0ZW5kZWRJc28odmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDgsIDEwKSwgMTApO1xuICAgICAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg1LCA3KSwgMTApIC0gMTtcbiAgICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZygwLCA0KSwgMTApO1xuXG4gICAgICAgIGNvbnN0IGRhdGVUZW1wID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG5cbiAgICAgICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZVRlbXAsIHllYXIpO1xuXG4gICAgICAgIHRoaXMuZGF0ZSA9IGRhdGVUZW1wO1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VG9EYXRlKGRhdGVUZW1wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udHJvbE1vZGVsKHRoaXMuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLmRhdGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlID0gdGhpcy5mb3JtYXRUb0RhdGUodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGlzVmFsaWREYXRlSXNvKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUmVnZXgudGVzdCh2YWx1ZSk7XG4gIH1cblxuICBpc1ZhbGlkRXh0ZW5kZWRJc28odmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5pc29SZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIGhhc092ZXJsYXlDbGFzcyhlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3BvLWRhdGVwaWNrZXItY2FsZW5kYXItb3ZlcmxheScpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdmVyaWZ5TW9iaWxlKCkge1xuICAgIHJldHVybiBpc01vYmlsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUNhbGVuZGFyKCkge1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zZXREaWFsb2dQaWNrZXJTdHlsZURpc3BsYXkoJ25vbmUnKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udHJvbENoYW5nZUVtaXR0ZXIoKSB7XG4gICAgY29uc3QgZGF0ZU1vZGVsRm9ybWF0dGVkID0gdGhpcy5mb3JtYXRUb0RhdGUodGhpcy5kYXRlKTtcblxuICAgIGlmIChkYXRlTW9kZWxGb3JtYXR0ZWQgIT09IHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UgPSBkYXRlTW9kZWxGb3JtYXR0ZWQ7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRDaGFuZ2UpO1xuICAgICAgdGhpcy50aW1lb3V0Q2hhbmdlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25jaGFuZ2UuZW1pdChkYXRlTW9kZWxGb3JtYXR0ZWQpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc0F0dHJDYWxlbmRhcihlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBhdHRyQ2FsZW5kYXIgPSAnYXR0ci1jYWxlbmRhcic7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGVsZW1lbnQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ckNhbGVuZGFyKSkgfHxcbiAgICAgIChlbGVtZW50LnBhcmVudEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyQ2FsZW5kYXIpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblBpY2tlcihldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NhbGVuZGFyUG9zaXRpb25EZWZhdWx0KTtcbiAgfTtcblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpYWxvZ1BpY2tlclN0eWxlRGlzcGxheSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlhbG9nUGlja2VyICYmIHRoaXMuZGlhbG9nUGlja2VyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZGlhbG9nUGlja2VyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FsZW5kYXJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNldERpYWxvZ1BpY2tlclN0eWxlRGlzcGxheSgnYmxvY2snKTtcbiAgICBpZiAodGhpcy5kaWFsb2dQaWNrZXIgJiYgdGhpcy5kaWFsb2dQaWNrZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICAgIHRoaXMuZGlhbG9nUGlja2VyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHBvQ2FsZW5kYXJDb250ZW50T2Zmc2V0LFxuICAgICAgICB0aGlzLmlucHV0RWwsXG4gICAgICAgIFsndG9wLWxlZnQnLCAndG9wLXJpZ2h0JywgJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCddLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLmFkanVzdFBvc2l0aW9uKHBvQ2FsZW5kYXJQb3NpdGlvbkRlZmF1bHQpO1xuICAgIH1cbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lclxuICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtwLWlkXT1cImlkXCJcbiAgW3AtbGFiZWxdPVwibGFiZWxcIlxuICBbcC1vcHRpb25hbF09XCJvcHRpb25hbFwiXG4gIFtwLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3Atc2hvdy1yZXF1aXJlZF09XCJzaG93UmVxdWlyZWRcIlxuPlxuICA8ZGl2ICNvdXRlckNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudCBwby1maWVsZC1jb250YWluZXItY29udGVudC1kYXRlcGlja2VyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWlucHV0XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnBcbiAgICAgICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWRhdGVwaWNrZXJcIlxuICAgICAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLXJpZ2h0XT1cImNsZWFuICYmIGlucC52YWx1ZVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgKGJsdXIpPVwiZXZlbnRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsaWNrKT1cImV2ZW50T25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICAgICAgPHBvLWNsZWFuXG4gICAgICAgICAgICBjbGFzcz1cInBvLWljb24taW5wdXRcIlxuICAgICAgICAgICAgKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAgICAgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLWNsZWFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHBvLWJ1dHRvblxuICAgICAgICAjaWNvbkRhdGVwaWNrZXJcbiAgICAgICAgY2xhc3M9XCJwby1kYXRlcGlja2VyLWJ1dHRvblwiXG4gICAgICAgIHAtaWNvbj1cIklDT05fQ0FMRU5EQVJcIlxuICAgICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgKHAtY2xpY2spPVwidG9nZ2xlUGlja2VyKClcIlxuICAgICAgPlxuICAgICAgPC9wby1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kQm94OyB0aGVuIGRyb3Bkb3duQ0RLOyBlbHNlIGRyb3Bkb3duRGVmYXVsdFwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2hhcmVkQ2FsZW5kYXJDb250ZW50PlxuICAgICAgPGRpdiAjZGlhbG9nUGlja2VyIFtjbGFzcy5wby1kYXRlcGlja2VyLXBvcHVwLWNhbGVuZGFyXT1cIiF2ZXJpZnlNb2JpbGUoKVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmVyaWZ5TW9iaWxlKClcIiBjbGFzcz1cInBvLWRhdGVwaWNrZXItY2FsZW5kYXItb3ZlcmxheVwiPjwvZGl2PlxuICAgICAgICA8cG8tY2FsZW5kYXJcbiAgICAgICAgICBbY2xhc3MucG8tZGF0ZXBpY2tlci1jYWxlbmRhci1tb2JpbGVdPVwidmVyaWZ5TW9iaWxlKClcIlxuICAgICAgICAgICNjYWxlbmRhclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVwiXG4gICAgICAgICAgW3AtbWF4LWRhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgW3AtbWluLWRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgW3AtbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgKHAtY2hhbmdlKT1cImRhdGVTZWxlY3RlZCgpXCJcbiAgICAgICAgPjwvcG8tY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkRlZmF1bHQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hhcmVkQ2FsZW5kYXJDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25DREs+XG4gICAgICA8bmctdGVtcGxhdGUgY2RrQ29ubmVjdGVkT3ZlcmxheSBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cInRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNoYXJlZENhbGVuZGFyQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVxuICAgIFtwLWhlbHBdPVwiaGVscFwiXG4gICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuKClcIlxuICA+PC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGF0ZXBpY2tlci9wby1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUNMLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsSUFBSSxFQUNKLHNCQUFzQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBRy9HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNHdEQsb0NBS0M7SUFEQyw2TEFBa0IsZUFBQSxlQUFPLENBQUEsSUFBQztJQUU1QixpQkFBVzs7O0lBSFQsOENBQXlCOzs7SUFrQmpDLHdCQUF3Rjs7O0lBSXBGLDBCQUF5RTs7OztJQUQzRSxxQ0FBMEU7SUFDeEUsc0ZBQXlFO0lBQ3pFLDJDQVFDO0lBTEMsZ1RBQWtCO0lBSWxCLHdMQUFZLGVBQUEsc0JBQWMsQ0FBQSxJQUFDO0lBQzVCLGlCQUFjLEVBQUE7OztJQVZFLHNFQUFzRDtJQUNqRSxlQUFvQjtJQUFwQiw0Q0FBb0I7SUFFeEIsY0FBc0Q7SUFBdEQsc0VBQXNEO0lBRXRELDJDQUFrQjtJQUNsQiwyQ0FBc0IsOEJBQUEsMkJBQUE7OztJQVMxQix3QkFBdUU7OztJQUF2RSx3R0FBdUU7Ozs7SUFBeEQsc0NBQXVDOzs7SUFLcEQsd0JBQXVFOzs7SUFBdkUsc0hBQXVFOzs7O0lBQXhELHNDQUF1Qzs7O0lBRHhELHNHQUVjOzs7O0lBRm1CLCtDQUFxQyxpQ0FBQTs7QUQzQzVFLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0seUJBQXlCLEdBQUcsYUFBYSxDQUFDO0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQW1CSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEseUJBQXlCO0lBeUN0RDtJQUNGO0lBQ0E7SUExQytCLFFBQVEsQ0FBc0I7SUFDUCxZQUFZLENBQWE7SUFDNUQsY0FBYyxDQUFvQjtJQUNULE9BQU8sQ0FBYTtJQUUxRSx1QkFBdUI7SUFDTCxLQUFLLENBQVU7SUFFakMsK0JBQStCO0lBQ2QsSUFBSSxDQUFVO0lBRS9CLEVBQUUsQ0FBYTtJQUNQLElBQUksQ0FBUztJQUNyQixFQUFFLEdBQUcsaUJBQWlCLElBQUksRUFBRSxHQUFHLENBQUM7SUFDaEMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixRQUFRLENBQU07SUFFZCxxQkFBcUIsQ0FBYTtJQUNsQyxtQkFBbUIsQ0FBYTtJQUV4QixhQUFhLENBQUM7SUFDTCxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQ3JDLGtDQUFrQyxHQUFHLG9CQUFvQixHQUFHLDJCQUEyQixDQUN4RixDQUFDO0lBQ2UsUUFBUSxHQUFHLElBQUksTUFBTSxDQUNwQyxrQ0FBa0M7UUFDaEMsb0JBQW9CO1FBQ3BCLDBCQUEwQjtRQUMxQixrRUFBa0U7UUFDbEUsZ0RBQWdEO1FBQ2hELGtCQUFrQixDQUNyQixDQUFDO0lBQ00sYUFBYSxDQUFNO0lBQ25CLGlCQUFpQixDQUFTO0lBRWxDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1ksZUFBa0MsRUFDcEMsZUFBeUMsRUFDekMsUUFBbUIsRUFDM0IsRUFBYztRQUVkLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUxiLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDekMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUkzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztTQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUdELE9BQU8sQ0FBQyxNQUFXO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFO1lBQ25FLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLGtFQUFrRTtRQUNsRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTtZQUNqRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFHRCxTQUFTLENBQUMsTUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLGtCQUFrQixDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzlDLE9BQU87U0FDUjtRQUNELElBQ0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0YsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdkUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDbkM7WUFDQSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sQ0FDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN0RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBVztRQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQzthQUNyQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQU07UUFDakIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVyQiwyREFBMkQ7WUFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVc7UUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTVHLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVztRQUN0QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3pCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtnQkFDekIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsSUFBSTtvQkFDUCxHQUFHLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0Q7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3JDO2dCQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNyRDtnQkFFRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFNUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUVsQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBSztRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixZQUFZO1FBQ1YsT0FBTyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RCxJQUFJLGtCQUFrQixLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7WUFFNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQVk7UUFDbEMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDO1FBRXJDLE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUM1RSxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sUUFBUSxHQUFHLEdBQVMsRUFBRTtRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQztJQUVNLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTywyQkFBMkIsQ0FBQyxLQUFhO1FBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQy9CLHVCQUF1QixFQUN2QixJQUFJLENBQUMsT0FBTyxFQUNaLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLEVBQ3hELEtBQUssRUFDTCxJQUFJLENBQ0wsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDOytFQXhYVSxxQkFBcUI7NkRBQXJCLHFCQUFxQjs7bUNBRUcsVUFBVTs7bUNBRW5CLFVBQVU7Ozs7Ozs7OzRHQUp6QixtQkFBZSwyRkFBZixxQkFBaUI7NkpBZmpCO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3BELEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxhQUFhO29CQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNwRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRCx3QkFBd0I7YUFDekI7WUM1RUgsNkNBT0MsbUJBQUEsZ0JBQUEsYUFBQSxrQkFBQTtZQW9CUyxxR0FBUSx1QkFBbUIsSUFBQywwRkFDbkIsd0JBQW9CLElBREQ7WUFaOUIsaUJBY0U7WUFDRiw4QkFBMkM7WUFDekMsZ0ZBTVc7WUFDYixpQkFBTSxFQUFBO1lBRVIseUNBUUM7WUFGQyxnSEFBVyxzQkFBa0IsSUFBQyw2RkFDbkIsa0JBQWMsSUFESztZQUdoQyxpQkFBWSxFQUFBO1lBR2QsMkZBQXdGLDZHQUFBLDZHQUFBLDZHQUFBO1lBMEIxRixpQkFBTTtZQUVOLGlEQUk2QjtZQUMvQixpQkFBcUI7Ozs7O1lBcEZuQix5Q0FBdUIsZ0JBQUEsc0JBQUEsNEJBQUEsNEJBQUEscUNBQUE7WUFpQmYsZUFBZ0Q7WUFBaEQsNkRBQWdEO1lBR2hELCtDQUE2QiwwQkFBQSxjQUFBLG9EQUFBLDBCQUFBLDBCQUFBO1lBRDdCLGdDQUFrQjtZQWFmLGVBQXFDO1lBQXJDLGtFQUFxQztZQVkxQyxjQUFtQztZQUFuQyx5REFBbUM7WUFPeEIsZUFBaUI7WUFBakIsb0NBQWlCLGtCQUFBLGlCQUFBO1lBNkJoQyxlQUFlO1lBQWYsaUNBQWUsNEJBQUEsMENBQUE7OztpRkRGTixxQkFBcUI7Y0FsQmpDLFNBQVM7MkJBQ0UsZUFBZSxhQUVkO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDO3dCQUNwRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7d0JBQ3BELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNELHdCQUF3QjtpQkFDekIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07MElBR04sUUFBUTtrQkFBaEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ3lCLFlBQVk7a0JBQTNFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ2pDLGNBQWM7a0JBQTFDLFNBQVM7bUJBQUMsZ0JBQWdCO1lBQzJCLE9BQU87a0JBQTVELFNBQVM7bUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBR2xDLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUdDLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQThDZixPQUFPO2tCQUROLFlBQVk7bUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBc0JqQyxTQUFTO2tCQURSLFlBQVk7bUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztrRkE1RXhCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgZm9ybWF0WWVhcixcbiAgaXNLZXlDb2RlRW50ZXIsXG4gIGlzS2V5Q29kZVNwYWNlLFxuICBpc01vYmlsZSxcbiAgc2V0WWVhckZyb20wVG8xMDAsXG4gIHV1aWQsXG4gIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3Jcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9DYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvLWNhbGVuZGFyL3BvLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1kYXRlcGlja2VyLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJMaXRlcmFscyB9IGZyb20gJy4vcG8tZGF0ZXBpY2tlci5saXRlcmFscyc7XG5pbXBvcnQgeyBQb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvLWJ1dHRvbi9wby1idXR0b24uY29tcG9uZW50JztcblxuY29uc3QgcG9DYWxlbmRhckNvbnRlbnRPZmZzZXQgPSA4O1xuY29uc3QgcG9DYWxlbmRhclBvc2l0aW9uRGVmYXVsdCA9ICdib3R0b20tbGVmdCc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRGF0ZXBpY2tlckJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kYXRlcGlja2VyLWJhc2ljXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMvc2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMvc2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMuY29tcG9uZW50LnBvLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMvc2FtcGxlLXBvLWRhdGVwaWNrZXItYmFzaWMuY29tcG9uZW50LmUyZS1zcGVjLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGF0ZXBpY2tlci1sYWJzXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItbGFicy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItbGFicy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItYWlyZmFyZVwiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciAtIEFpcmZhcmVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS9zYW1wbGUtcG8tZGF0ZXBpY2tlci1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS9zYW1wbGUtcG8tZGF0ZXBpY2tlci1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItYWlyZmFyZS1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIC0gQWlyZmFyZSBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLWFpcmZhcmUtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tZGF0ZXBpY2tlci1haXJmYXJlLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1haXJmYXJlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRhdGVwaWNrZXItYWlyZmFyZS1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9EYXRlcGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9EYXRlcGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2VcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9EYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgUG9EYXRlcGlja2VyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywgeyBzdGF0aWM6IHRydWUgfSkgY2FsZW5kYXI6IFBvQ2FsZW5kYXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1BpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBkaWFsb2dQaWNrZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2ljb25EYXRlcGlja2VyJykgaWNvbkRhdGVwaWNrZXI6IFBvQnV0dG9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdpbnAnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuXG4gIC8qKiBSw7N0dWxvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICBlbDogRWxlbWVudFJlZjtcbiAgZGVjbGFyZSBob3VyOiBzdHJpbmc7XG4gIGlkID0gYHBvLWRhdGVwaWNrZXJbJHt1dWlkKCl9XWA7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbGl0ZXJhbHM6IGFueTtcblxuICBldmVudExpc3RlbmVyRnVuY3Rpb246ICgpID0+IHZvaWQ7XG4gIGV2ZW50UmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGVSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgJ14oPzpbMC05XSlcXFxcZHsxfSg/OlswLTldKVxcXFxkezF9LScgKyAnKD86MFsxLTldfDFbMC0yXSktJyArICcoPzowWzEtOV18WzEyXVxcXFxkfDNbMDFdKSQnXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNvUmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICdeKD86WzAtOV0pXFxcXGR7MX0oPzpbMC05XSlcXFxcZHsxfS0nICtcbiAgICAgICcoPzowWzEtOV18MVswLTJdKS0nICtcbiAgICAgICcoPzowWzEtOV18WzEyXVxcXFxkfDNbMDFdKScgK1xuICAgICAgJ1QoPzpbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkOlswLTVdXFxcXGQoPzpafC0wWzEtOV18LTFcXFxcZHwtMlswLTNdfCcgK1xuICAgICAgJy0wMDo/KD86MFsxLTldfFswLTVdXFxcXGQpfFxcXFwrWzAxXVxcXFxkfFxcXFwrMlswLTNdKScgK1xuICAgICAgJyg/Onw6P1swLTVdXFxcXGQpJCdcbiAgKTtcbiAgcHJpdmF0ZSB0aW1lb3V0Q2hhbmdlOiBhbnk7XG4gIHByaXZhdGUgdmFsdWVCZWZvcmVDaGFuZ2U6IHN0cmluZztcblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLm5vQXV0b2NvbXBsZXRlID8gJ29mZicgOiAnb24nO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sUG9zaXRpb246IFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgZWw6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICB0aGlzLnNob3J0TGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gICAgdGhpcy5lbCA9IGVsO1xuICAgIGNvbnN0IGxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmxpdGVyYWxzID0ge1xuICAgICAgLi4uUG9EYXRlcGlja2VyTGl0ZXJhbHNbbGFuZ3VhZ2VdXG4gICAgfTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25LZXl1cCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8ICRldmVudD8udGFyZ2V0ICE9PSB0aGlzLmlucHV0RWw/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9iak1hc2sua2V5dXAoJGV2ZW50KTtcbiAgICAvLyBDb250cm9sYSBhIGF0dWFsaXphw6fDo28gZG8gbW9kZWwsIHZlcmlmaWNhbmRvIHNlIGEgZGF0YSDDqSB2YWxpZGFcbiAgICBpZiAodGhpcy5vYmpNYXNrLnZhbHVlVG9Nb2RlbCB8fCB0aGlzLm9iak1hc2sudmFsdWVUb01vZGVsID09PSAnJykge1xuICAgICAgaWYgKHRoaXMub2JqTWFzay52YWx1ZVRvTW9kZWwubGVuZ3RoID49IDEwKSB7XG4gICAgICAgIHRoaXMuY29udHJvbE1vZGVsKHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmcodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUpKTtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZyh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY29udHJvbE1vZGVsKHRoaXMuZGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duKCRldmVudD86IGFueSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vYmpNYXNrLmtleWRvd24oJGV2ZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnNldERpYWxvZ1BpY2tlclN0eWxlRGlzcGxheSgnbm9uZScpO1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmljb25EYXRlcGlja2VyLmJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2FyaWEtbGFiZWwnLCB0aGlzLmxpdGVyYWxzLm9wZW4pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9EYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb0RhdGVwaWNrZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGVwaWNrZXI6IFBvRGF0ZXBpY2tlckNvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNEYXRlcGlja2VyKCkge1xuICAgKiAgIHRoaXMuZGF0ZXBpY2tlci5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVBpY2tlcigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgfVxuICB9XG5cbiAgZGF0ZVNlbGVjdGVkKCkge1xuICAgIHRoaXMub25Ub3VjaGVkTW9kZWw/LigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlNb2JpbGUoKSkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VG9EYXRlKHRoaXMuZGF0ZSk7XG4gICAgdGhpcy5jb250cm9sTW9kZWwodGhpcy5kYXRlKTtcbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VFbWl0dGVyKCk7XG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gIH1cblxuICAvLyBFc2NvbmRlIFBpY2tlciBxdWFuZG8gZm9yIGNsaWNhZG8gZm9yYVxuICB3YXNDbGlja2VkT25QaWNrZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dQaWNrZXIgfHwgIXRoaXMuaWNvbkRhdGVwaWNrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCF0aGlzLmRpYWxvZ1BpY2tlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5oYXNPdmVybGF5Q2xhc3MoZXZlbnQudGFyZ2V0KSkgJiZcbiAgICAgICF0aGlzLmljb25EYXRlcGlja2VyLmJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5oYXNBdHRyQ2FsZW5kYXIoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgfVxuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJ1xuICAgICk7XG4gIH1cblxuICBnZXRFcnJvclBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnJyAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5lcnJvclBhdHRlcm4gOiAnJztcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UgPSB0aGlzLmZvcm1hdFRvRGF0ZSh0aGlzLmRhdGUpO1xuICAgIHRoaXMuZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNvbnRyb2xNb2RlbCh0aGlzLmRhdGUpO1xuXG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgZXZlbnRPbkJsdXIoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZE1vZGVsPy4oKTtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgY29uc3QgbmV3RGF0ZSA9IGRhdGUgPyB0aGlzLmdldERhdGVGcm9tU3RyaW5nKGRhdGUpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMub2JqTWFzay5ibHVyKCRldmVudCk7XG4gICAgdGhpcy5vbmJsdXIuZW1pdCgpO1xuXG4gICAgaWYgKHRoaXMub2JqTWFzay52YWx1ZVRvTW9kZWwpIHtcbiAgICAgIGlmICh0aGlzLm9iak1hc2sudmFsdWVUb01vZGVsLmxlbmd0aCA+PSAxMCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xNb2RlbChuZXdEYXRlKTtcbiAgICAgICAgdGhpcy5kYXRlID0gbmV3RGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udHJvbE1vZGVsKHRoaXMuZGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgZXZlbnRPbkNsaWNrKCRldmVudCkge1xuICAgIGlmICh0aGlzLnZlcmlmeU1vYmlsZSgpKSB7XG4gICAgICAkZXZlbnQudGFyZ2V0LmJsdXIoKTtcblxuICAgICAgLy8gYWJyZSBvIGNhbGVuZGFyIHF1YW5kbyBjbGljYXIgbm8gaW5wdXQgc29tZW50ZSBubyBtb2JpbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50b2dnbGVQaWNrZXIoKSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEF0dWFsaXphIGEgcG9zacOnw6NvIGRvIGN1cnNvciBhbyBjbGljYXJcbiAgICAgIHRoaXMub2JqTWFzay5jbGljaygkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xuICAgIGlmIChpc0tleUNvZGVFbnRlcihldmVudCkgfHwgaXNLZXlDb2RlU3BhY2UoZXZlbnQpKSB7XG4gICAgICB0aGlzLnRvZ2dsZVBpY2tlcigpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFRvRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IGRhdGVGb3JtYXR0ZWQgPSByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSk7XG5cbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdkZCcsICgnMCcgKyB2YWx1ZS5nZXREYXRlKCkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnbW0nLCAoJzAnICsgKHZhbHVlLmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCd5eXl5JywgZm9ybWF0WWVhcih2YWx1ZS5nZXRGdWxsWWVhcigpKSk7XG5cbiAgICByZXR1cm4gZGF0ZUZvcm1hdHRlZDtcbiAgfVxuXG4gIHJlZnJlc2hWYWx1ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFRvRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmlucHV0RWwgJiYgdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuaG91ciA9XG4gICAgICAgICAgJ1QnICsgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMTYsIDI0KSArIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDI4LCAzMSkgKyAnOicgKyBkYXRlU3RyaW5nLnN1YnN0cmluZygzMSwgMzMpO1xuICAgICAgICB0aGlzLmRhdGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFRvRGF0ZSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNWYWxpZERhdGVJc28odmFsdWUpIHx8IHRoaXMuaXNWYWxpZEV4dGVuZGVkSXNvKHZhbHVlKSkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkRXh0ZW5kZWRJc28odmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5ob3VyID0gdmFsdWUuc3Vic3RyaW5nKDEwLCAyNSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc29Gb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaXNFeHRlbmRlZElTTyA9IHRoaXMuaXNWYWxpZEV4dGVuZGVkSXNvKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg4LCAxMCksIDEwKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoNSwgNyksIDEwKSAtIDE7XG4gICAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoMCwgNCksIDEwKTtcblxuICAgICAgICBjb25zdCBkYXRlVGVtcCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGVUZW1wLCB5ZWFyKTtcblxuICAgICAgICB0aGlzLmRhdGUgPSBkYXRlVGVtcDtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFRvRGF0ZShkYXRlVGVtcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRyb2xNb2RlbCh0aGlzLmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5kYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5kYXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSA9IHRoaXMuZm9ybWF0VG9EYXRlKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBpc1ZhbGlkRGF0ZUlzbyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgaXNWYWxpZEV4dGVuZGVkSXNvKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNvUmVnZXgudGVzdCh2YWx1ZSk7XG4gIH1cblxuICBoYXNPdmVybGF5Q2xhc3MoZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwby1kYXRlcGlja2VyLWNhbGVuZGFyLW92ZXJsYXknKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHZlcmlmeU1vYmlsZSgpIHtcbiAgICByZXR1cm4gaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VDYWxlbmRhcigpIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc2V0RGlhbG9nUGlja2VyU3R5bGVEaXNwbGF5KCdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2xDaGFuZ2VFbWl0dGVyKCkge1xuICAgIGNvbnN0IGRhdGVNb2RlbEZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0VG9EYXRlKHRoaXMuZGF0ZSk7XG5cbiAgICBpZiAoZGF0ZU1vZGVsRm9ybWF0dGVkICE9PSB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlID0gZGF0ZU1vZGVsRm9ybWF0dGVkO1xuXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0Q2hhbmdlKTtcbiAgICAgIHRoaXMudGltZW91dENoYW5nZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uY2hhbmdlLmVtaXQoZGF0ZU1vZGVsRm9ybWF0dGVkKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNBdHRyQ2FsZW5kYXIoZWxlbWVudDogYW55KSB7XG4gICAgY29uc3QgYXR0ckNhbGVuZGFyID0gJ2F0dHItY2FsZW5kYXInO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIChlbGVtZW50ICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJDYWxlbmRhcikpIHx8XG4gICAgICAoZWxlbWVudC5wYXJlbnRFbGVtZW50ICYmIGVsZW1lbnQucGFyZW50RWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ckNhbGVuZGFyKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCkge1xuICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy53YXNDbGlja2VkT25QaWNrZXIoZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uYWRqdXN0UG9zaXRpb24ocG9DYWxlbmRhclBvc2l0aW9uRGVmYXVsdCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaWFsb2dQaWNrZXJTdHlsZURpc3BsYXkodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpYWxvZ1BpY2tlciAmJiB0aGlzLmRpYWxvZ1BpY2tlci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmRpYWxvZ1BpY2tlci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENhbGVuZGFyUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZXREaWFsb2dQaWNrZXJTdHlsZURpc3BsYXkoJ2Jsb2NrJyk7XG4gICAgaWYgKHRoaXMuZGlhbG9nUGlja2VyICYmIHRoaXMuZGlhbG9nUGlja2VyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgICB0aGlzLmRpYWxvZ1BpY2tlci5uYXRpdmVFbGVtZW50LFxuICAgICAgICBwb0NhbGVuZGFyQ29udGVudE9mZnNldCxcbiAgICAgICAgdGhpcy5pbnB1dEVsLFxuICAgICAgICBbJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCcsICdib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NhbGVuZGFyUG9zaXRpb25EZWZhdWx0KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiAjb3V0ZXJDb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnQgcG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnQtZGF0ZXBpY2tlclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wXG4gICAgICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1kYXRlcGlja2VyXCJcbiAgICAgICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1yaWdodF09XCJjbGVhbiAmJiBpbnAudmFsdWVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRpc2FibGVkID8gJycgOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgIChibHVyKT1cImV2ZW50T25CbHVyKCRldmVudClcIlxuICAgICAgICAgIChjbGljayk9XCJldmVudE9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1yaWdodFwiPlxuICAgICAgICAgIDxwby1jbGVhblxuICAgICAgICAgICAgY2xhc3M9XCJwby1pY29uLWlucHV0XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY2xlYW4gJiYgIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICAgICAgICBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCJcbiAgICAgICAgICAgIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1jbGVhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgI2ljb25EYXRlcGlja2VyXG4gICAgICAgIGNsYXNzPVwicG8tZGF0ZXBpY2tlci1idXR0b25cIlxuICAgICAgICBwLWljb249XCJJQ09OX0NBTEVOREFSXCJcbiAgICAgICAgcC1raW5kPVwidGVydGlhcnlcIlxuICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIChwLWNsaWNrKT1cInRvZ2dsZVBpY2tlcigpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGVuZEJveDsgdGhlbiBkcm9wZG93bkNESzsgZWxzZSBkcm9wZG93bkRlZmF1bHRcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3NoYXJlZENhbGVuZGFyQ29udGVudD5cbiAgICAgIDxkaXYgI2RpYWxvZ1BpY2tlciBbY2xhc3MucG8tZGF0ZXBpY2tlci1wb3B1cC1jYWxlbmRhcl09XCIhdmVyaWZ5TW9iaWxlKClcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInZlcmlmeU1vYmlsZSgpXCIgY2xhc3M9XCJwby1kYXRlcGlja2VyLWNhbGVuZGFyLW92ZXJsYXlcIj48L2Rpdj5cbiAgICAgICAgPHBvLWNhbGVuZGFyXG4gICAgICAgICAgW2NsYXNzLnBvLWRhdGVwaWNrZXItY2FsZW5kYXItbW9iaWxlXT1cInZlcmlmeU1vYmlsZSgpXCJcbiAgICAgICAgICAjY2FsZW5kYXJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVcIlxuICAgICAgICAgIFtwLW1heC1kYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgIFtwLW1pbi1kYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIFtwLWxvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIChwLWNoYW5nZSk9XCJkYXRlU2VsZWN0ZWQoKVwiXG4gICAgICAgID48L3BvLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25EZWZhdWx0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNoYXJlZENhbGVuZGFyQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ0RLPlxuICAgICAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJ0cnVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaGFyZWRDYWxlbmRhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b21cbiAgICBbcC1oZWxwXT1cImhlbHBcIlxuICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImdldEVycm9yUGF0dGVybigpXCJcbiAgPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|