@ardium-ui/ui 4.2.3 → 4.4.0
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/_internal/form-field-component.mjs +1 -1
- package/esm2022/lib/_internal/selectable-list-component.mjs +1 -1
- package/esm2022/lib/calendar/calendar.component.mjs +20 -7
- package/esm2022/lib/calendar/calendar.defaults.mjs +3 -3
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +4 -4
- package/esm2022/lib/form-field/form-field-base.mjs +53 -0
- package/esm2022/lib/form-field/form-field-child.token.mjs +3 -0
- package/esm2022/lib/form-field/form-field-native-inputs.mjs +80 -0
- package/esm2022/lib/form-field/form-field.component.mjs +7 -28
- package/esm2022/lib/form-field/form-field.defaults.mjs +3 -1
- package/esm2022/lib/form-field/form-field.module.mjs +6 -1
- package/esm2022/lib/form-field/horizontal-form-field.component.mjs +7 -28
- package/esm2022/lib/form-field/index.mjs +2 -1
- package/esm2022/lib/form-field/label/label.component.mjs +10 -4
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +4 -3
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +4 -3
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +4 -3
- package/esm2022/lib/inputs/input/input.component.mjs +4 -4
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +4 -3
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +4 -3
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +4 -4
- package/esm2022/lib/radio/radio-group.component.mjs +4 -3
- package/esm2022/lib/segment/segment.component.mjs +4 -4
- package/esm2022/lib/select/select.component.mjs +4 -3
- package/fesm2022/ardium-ui-ui.mjs +163 -53
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/form-field-component.d.ts +2 -1
- package/lib/_internal/selectable-list-component.d.ts +2 -1
- package/lib/calendar/calendar.component.d.ts +2 -2
- package/lib/calendar/calendar.defaults.d.ts +2 -2
- package/lib/form-field/form-field-base.d.ts +22 -0
- package/lib/form-field/form-field-child.token.d.ts +8 -0
- package/lib/form-field/form-field-native-inputs.d.ts +22 -0
- package/lib/form-field/form-field.component.d.ts +3 -15
- package/lib/form-field/form-field.defaults.d.ts +2 -0
- package/lib/form-field/form-field.module.d.ts +8 -7
- package/lib/form-field/horizontal-form-field.component.d.ts +3 -15
- package/lib/form-field/index.d.ts +1 -0
- package/lib/form-field/label/label.component.d.ts +4 -1
- package/package.json +1 -1
- package/prebuilt-themes/default/buttons/button.css +2 -2
- package/prebuilt-themes/default/form-field.css +13 -0
- package/prebuilt-themes/default/form-field.css.map +1 -1
- package/themes/default/buttons/button.scss +2 -2
- package/themes/default/form-field.scss +16 -0
|
@@ -30,4 +30,4 @@ export class _FormFieldComponentBase extends _NgModelComponentBase {
|
|
|
30
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldComponentBase, decorators: [{
|
|
31
31
|
type: Directive
|
|
32
32
|
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXdCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBNkIseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNbEgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQWdDO0lBQ3RFLEdBQUcseUJBQXlCO0lBQzVCLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUM7QUFFRjs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSxxQkFBcUI7SUFEM0U7O1FBSVcsY0FBUyxHQUFHLEtBQUssQ0FBMkIsU0FBUyxFQUFFO1lBQzlELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUN4QyxLQUFLLEVBQUUsVUFBVTtTQUNsQixDQUFDLENBQUM7UUFLTSxjQUFTLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUMvRjtJQUxDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNGLENBQUM7K0dBVG1CLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUQ1QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBBcmRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNoaWxkLnRva2VuJztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlLCBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzLCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIHJlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzOiBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMgPSB7XHJcbiAgLi4uX25nTW9kZWxDb21wb25lbnREZWZhdWx0cyxcclxuICByZXF1aXJlZDogdW5kZWZpbmVkLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIENvbW1vbiBjb2RlIGZvciBjb21wb25lbnRzIHdoaWNoIGltcGxlbWVudCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAqXHJcbiAqICoqV2FybmluZyoqOiBgd3JpdGVWYWx1ZWAgZnVuY3Rpb24gc2hvdWxkIGJlIGltcGxlbWVudGVkIG9uIHRoZSBjaGlsZCBjb21wb25lbnQhXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFyZEZvcm1GaWVsZENvbnRyb2wge1xyXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHM7XHJcblxyXG4gIHJlYWRvbmx5IF9yZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQsIGFueT4odW5kZWZpbmVkLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpLFxyXG4gICAgYWxpYXM6ICdyZXF1aXJlZCcsXHJcbiAgfSk7XHJcbiAgZ2V0IHJlcXVpcmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkKCkgPz8gISF0aGlzLl9uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGlzU3VjY2VzcyA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxufVxyXG4iXX0=
|
|
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
268
268
|
type: HostListener,
|
|
269
269
|
args: ['keydown', ['$event']]
|
|
270
270
|
}] } });
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL3NlbGVjdGFibGUtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQStCLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLGlCQUFpQixFQUF5QixNQUFNLHFDQUFxQyxDQUFDOztBQVkvRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBcUM7SUFDaEYsR0FBRywyQkFBMkI7SUFDOUIsU0FBUyxFQUFFLE9BQU87SUFDbEIsU0FBUyxFQUFFLE9BQU87SUFDbEIsWUFBWSxFQUFFLFVBQVU7SUFDeEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsY0FBYyxFQUFFLEtBQUs7SUFDckIsZ0JBQWdCLEVBQUUsU0FBUztDQUM1QixDQUFDO0FBR0YsTUFBTSxPQUFnQiw0QkFDcEIsU0FBUSx1QkFBdUI7SUFGakM7O1FBT0Usb0JBQW9CO1FBQ1gsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBS2xCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztR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Qyx1QkFBdUI7Z0JBYWhDLDBCQUEwQjtzQkFEN0IsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBMEJsQyxxQkFBcUI7c0JBRHhCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQW1ENUIsS0FBSztzQkFEUixLQUFLO2dCQTRDTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVztnQkF1QnpCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBBcmRPcHRpb25TaW1wbGUsIENvbXBhcmVXaXRoRm4sIE9wdGlvbkNvbnRleHQgfSBmcm9tICcuLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSwgX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLCBfZm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2ltcGxlSXRlbVN0b3JhZ2UsIFNpbXBsZUl0ZW1TdG9yYWdlSG9zdCB9IGZyb20gJy4vaXRlbS1zdG9yYWdlcy9zaW1wbGUtaXRlbS1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgX1NlbGVjdGFibGVMaXN0Q29tcG9uZW50RGVmYXVsdHMgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIHZhbHVlRnJvbTogc3RyaW5nO1xyXG4gIGxhYmVsRnJvbTogc3RyaW5nO1xyXG4gIGRpc2FibGVkRnJvbTogc3RyaW5nO1xyXG4gIGNvbXBhcmVXaXRoOiBOdWxsYWJsZTxDb21wYXJlV2l0aEZuPjtcclxuICBtdWx0aXNlbGVjdGFibGU6IGJvb2xlYW47XHJcbiAgcmVxdWlyZVZhbHVlOiBib29sZWFuO1xyXG4gIGludmVydERpc2FibGVkOiBib29sZWFuO1xyXG4gIG1heFNlbGVjdGVkSXRlbXM6IE51bGxhYmxlPG51bWJlcj47XHJcbn1cclxuZXhwb3J0IGNvbnN0IF9zZWxlY3RhYmxlTGlzdENvbXBvbmVudERlZmF1bHRzOiBfU2VsZWN0YWJsZUxpc3RDb21wb25lbnREZWZhdWx0cyA9IHtcclxuICAuLi5fZm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMsXHJcbiAgdmFsdWVGcm9tOiAndmFsdWUnLFxyXG4gIGxhYmVsRnJvbTogJ2xhYmVsJyxcclxuICBkaXNhYmxlZEZyb206ICdkaXNhYmxlZCcsXHJcbiAgY29tcGFyZVdpdGg6IHVuZGVmaW5lZCxcclxuICBtdWx0aXNlbGVjdGFibGU6IGZhbHNlLFxyXG4gIHJlcXVpcmVWYWx1ZTogZmFsc2UsXHJcbiAgaW52ZXJ0RGlzYWJsZWQ6IGZhbHNlLFxyXG4gIG1heFNlbGVjdGVkSXRlbXM6IHVuZGVmaW5lZCxcclxufTtcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1NlbGVjdGFibGVMaXN0Q29tcG9uZW50QmFzZVxyXG4gIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2VcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBTaW1wbGVJdGVtU3RvcmFnZUhvc3Rcclxue1xyXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBfU2VsZWN0YWJsZUxpc3RDb21wb25lbnREZWZhdWx0cztcclxuXHJcbiAgLy8hIHB1YmxpYyBjb25zdGFudHNcclxuICByZWFkb25seSBpdGVtU3RvcmFnZSA9IG5ldyBTaW1wbGVJdGVtU3RvcmFnZSh0aGlzKTtcclxuICByZWFkb25seSBlbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcbiAgcmVhZG9ubHkgREVGQVVMVFMgPSB0aGlzLl9ERUZBVUxUUztcclxuXHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgX2NvbXBvbmVudElkOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgX2NvbXBvbmVudE5hbWU6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAvLyEgYmluZGluZy1yZWxhdGVkIGlucHV0c1xyXG4gIHJlYWRvbmx5IHZhbHVlRnJvbSA9IGlucHV0PHN0cmluZz4odGhpcy5fREVGQVVMVFMudmFsdWVGcm9tKTtcclxuICByZWFkb25seSBsYWJlbEZyb20gPSBpbnB1dDxzdHJpbmc+KHRoaXMuX0RFRkFVTFRTLmxhYmVsRnJvbSk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWRGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5kaXNhYmxlZEZyb20pO1xyXG4gIHJlYWRvbmx5IGNvbXBhcmVXaXRoID0gaW5wdXQ8TnVsbGFibGU8Q29tcGFyZVdpdGhGbj4+KHRoaXMuX0RFRkFVTFRTLmNvbXBhcmVXaXRoKTtcclxuXHJcbiAgLy8hIGl0ZW1zIHNldHRlci9nZXR0ZXJcclxuICBASW5wdXQoKVxyXG4gIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtU3RvcmFnZS5pdGVtcygpO1xyXG4gIH1cclxuICBzZXQgaXRlbXModmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgdmFsdWUgPSBjb2VyY2VBcnJheVByb3BlcnR5KHZhbHVlKTtcclxuXHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLnNldEl0ZW1zKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vISBtdWx0aXNlbGVjdGFibGVcclxuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGUgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm11bHRpc2VsZWN0YWJsZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIubXVsdGlwbGUnKVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXJkLW11bHRpc2VsZWN0JylcclxuICBnZXQgX211bHRpc2VsZWN0YWJsZUhvc3RBdHRyaWJ1dGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdGFibGUoKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNpbmdsZXNlbGVjdGFibGUgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5tdWx0aXNlbGVjdGFibGUoKSk7XHJcblxyXG4gIC8vISByZXF1aXJlIHZhbHVlXHJcbiAgcmVhZG9ubHkgcmVxdWlyZVZhbHVlID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5yZXF1aXJlVmFsdWUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgaXNWYWx1ZVJlcXVpcmVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXF1aXJlVmFsdWUoKSB8fCAhdGhpcy5tdWx0aXNlbGVjdGFibGUoKSk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXJkLXJlcXVpcmUtdmFsdWUnKVxyXG4gIGdldCBfcmVxdWlyZVZhbHVlSG9zdEF0dHJpYnV0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVpcmVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvZXJjZWQgcHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IGludmVydERpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5pbnZlcnREaXNhYmxlZCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IG1heFNlbGVjdGVkSXRlbXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heFNlbGVjdGVkSXRlbXMsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB1bmRlZmluZWQpLFxyXG4gIH0pO1xyXG5cclxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvclxyXG4gIC8vb3ZlcnJpZGUgdGhlIHdyaXRlVmFsdWUgYW5kIHNldERpc2FibGVkU3RhdGUgZGVmaW5lZCBpbiBfTmdNb2RlbENvbXBvbmVudFxyXG4gIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQuc2V0KHN0YXRlKTtcclxuICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICB3cml0ZVZhbHVlKG5nTW9kZWw6IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLndyaXRlVmFsdWUobmdNb2RlbCk7XHJcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8vISBjaGFuZ2UgJiB0b3VjaCBldmVudCBlbWl0dGVyc1xyXG4gIHJlYWRvbmx5IHRvdWNoZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC10b3VjaGVkJylcclxuICBnZXQgX3RvdWNoZWRIb3N0QXR0cmlidXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNpbmdsZXNlbGVjdGFibGUoKSA/IHRoaXMuaXRlbVN0b3JhZ2UudmFsdWUoKVswXSA6IHRoaXMuaXRlbVN0b3JhZ2UudmFsdWUoKTtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHZhbHVlKTtcclxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX29uVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRvdWNoZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQ/LigpO1xyXG4gICAgdGhpcy50b3VjaGVkLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vISBmb2N1cyAmIGJsdXIgaGFuZGxlcnNcclxuICBwcml2YXRlIHJlYWRvbmx5IGxhc3RCbHVyVGltZXN0YW1wID0gc2lnbmFsPE51bGxhYmxlPG51bWJlcj4+KHVuZGVmaW5lZCk7XHJcbiAgb3ZlcnJpZGUgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25Gb2N1cyhldmVudCk7XHJcblxyXG4gICAgY29uc3QgbGJ0ID0gdGhpcy5sYXN0Qmx1clRpbWVzdGFtcCgpO1xyXG4gICAgaWYgKHRoaXMudG91Y2hlZCgpIHx8ICFsYnQgfHwgbGJ0ICsgMSA8IERhdGUubm93KCkpIHJldHVybjtcclxuICAgIHRoaXMubGFzdEJsdXJUaW1lc3RhbXAuc2V0KG51bGwpO1xyXG5cclxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gIH1cclxuICBvdmVycmlkZSBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uQmx1cihldmVudCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnRvdWNoZWQoKSkgdGhpcy5sYXN0Qmx1clRpbWVzdGFtcC5zZXQoRGF0ZS5ub3coKSk7XHJcbiAgfVxyXG5cclxuICAvLyEgZ2V0dGVyc1xyXG4gIHJlYWRvbmx5IGhpZ2hsaWdodGVkSXRlbXMgPSBjb21wdXRlZDxBcmRPcHRpb25TaW1wbGVbXT4oKCkgPT4gdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHRlZEl0ZW1zKCkpO1xyXG4gIHJlYWRvbmx5IGZpcnN0SGlnaGxpZ2h0ZWRJdGVtID0gY29tcHV0ZWQ8TnVsbGFibGU8QXJkT3B0aW9uU2ltcGxlPj4oKCkgPT4gdGhpcy5oaWdobGlnaHRlZEl0ZW1zKCk/LmZpcnN0KCkpO1xyXG4gIHJlYWRvbmx5IGlzSXRlbUxpbWl0UmVhY2hlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXRlbVN0b3JhZ2UuaXNJdGVtTGltaXRSZWFjaGVkKCkpO1xyXG5cclxuICAvLyEgY29udGV4dCBwcm92aWRlcnNcclxuICBnZXRPcHRpb25Db250ZXh0KGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IE9wdGlvbkNvbnRleHQ8QXJkT3B0aW9uU2ltcGxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAkaW1wbGljaXQ6IGl0ZW0sXHJcbiAgICAgIGl0ZW0sXHJcbiAgICAgIGl0ZW1EYXRhOiBpdGVtLml0ZW1EYXRhKCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8hIHZhbHVlIGlucHV0ICYgb3V0cHV0XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkgbmV3VmFsdWUgPSBjb2VyY2VBcnJheVByb3BlcnR5KG5ld1ZhbHVlKTtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PGFueVtdPigpO1xyXG5cclxuICAvLyEgb3V0cHV0IGV2ZW50c1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PGFueVtdPih7IGFsaWFzOiAnY2hhbmdlJyB9KTtcclxuICByZWFkb25seSBhZGRFdmVudCA9IG91dHB1dDxhbnlbXT4oeyBhbGlhczogJ2FkZCcgfSk7XHJcbiAgcmVhZG9ubHkgcmVtb3ZlRXZlbnQgPSBvdXRwdXQ8YW55W10+KHsgYWxpYXM6ICdyZW1vdmUnIH0pO1xyXG5cclxuICAvLyEgaXRlbSBzZWxlY3Rpb24gaGFuZGxlcnNcclxuICB0b2dnbGVJdGVtKGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IHZvaWQge1xyXG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWQoKSkge1xyXG4gICAgICBpZiAodGhpcy5zaW5nbGVzZWxlY3RhYmxlKCkpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMudW5zZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgfVxyXG4gIHNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWQsIHVuc2VsZWN0ZWRdID0gdGhpcy5pdGVtU3RvcmFnZS5zZWxlY3RJdGVtKC4uLml0ZW1zKTtcclxuXHJcbiAgICBpZiAodW5zZWxlY3RlZC5sZW5ndGggPiAwKSB0aGlzLnJlbW92ZUV2ZW50LmVtaXQodW5zZWxlY3RlZCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hZGRFdmVudC5lbWl0KHNlbGVjdGVkKTtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB1bnNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCB1bnNlbGVjdGVkID0gdGhpcy5pdGVtU3RvcmFnZS51bnNlbGVjdEl0ZW0oLi4uaXRlbXMpO1xyXG5cclxuICAgIGlmICh1bnNlbGVjdGVkLmxlbmd0aCA+IDApIHRoaXMucmVtb3ZlRXZlbnQuZW1pdCh1bnNlbGVjdGVkKTtcclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgaGlnaGxpZ2gtcmVsYXRlZFxyXG5cclxuICByZWFkb25seSBpc01vdXNlQmVpbmdVc2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnKVxyXG4gIG9uTW91c2VNb3ZlKCkge1xyXG4gICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkLnNldCh0cnVlKTtcclxuICB9XHJcbiAgb25JdGVtTW91c2VFbnRlcihvcHRpb246IEFyZE9wdGlvblNpbXBsZSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodFNpbmdsZUl0ZW0ob3B0aW9uKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBvbkl0ZW1Nb3VzZUxlYXZlKG9wdGlvbjogQXJkT3B0aW9uU2ltcGxlLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTW91c2VCZWluZ1VzZWQpIHJldHVybjtcclxuICAgIHRoaXMuaXRlbVN0b3JhZ2UudW5oaWdobGlnaHRJdGVtKG9wdGlvbik7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8vISBjbGljayBoYW5kbGVyc1xyXG4gIG9uSXRlbUNsaWNrKG9wdGlvbjogQXJkT3B0aW9uU2ltcGxlLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnRvZ2dsZUl0ZW0ob3B0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vISBrZXkgcHJlc3MgaGFuZGxlcnNcclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnU3BhY2UnOlxyXG4gICAgICBjYXNlICdFbnRlcic6IHtcclxuICAgICAgICB0aGlzLl90b2dnbGVIaWdobGlnaHRlZEl0ZW1zKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHROZXh0KGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xyXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFByZXZpb3VzKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSG9tZSc6IHtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHRGaXJzdChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0VuZCc6IHtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHRMYXN0KGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnS2V5QSc6IHtcclxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xyXG4gICAgICAgICAgdGhpcy5faGlnaGxpZ2h0QWxsKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RvZ2dsZUhpZ2hsaWdodGVkSXRlbXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ZvY3VzZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgY29uc3QgaGlnaGxpZ2h0ZWRJdGVtcyA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpO1xyXG5cclxuICAgIGlmIChoaWdobGlnaHRlZEl0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCkpIHtcclxuICAgICAgdGhpcy51bnNlbGVjdEl0ZW0oLi4uaGlnaGxpZ2h0ZWRJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdEl0ZW0oLi4uaGlnaGxpZ2h0ZWRJdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodFByZXZpb3VzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHROZXh0SXRlbSgtMSwgZXZlbnQuc2hpZnRLZXkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHROZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHROZXh0SXRlbSgrMSwgZXZlbnQuc2hpZnRLZXkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHRGaXJzdChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNlZCgpKSByZXR1cm47XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodExhc3QoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ZvY3VzZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQuc2V0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodExhc3RJdGVtKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodEFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0QWxsSXRlbXMoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL3NlbGVjdGFibGUtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUlyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQStCLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLGlCQUFpQixFQUF5QixNQUFNLHFDQUFxQyxDQUFDOztBQVkvRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBcUM7SUFDaEYsR0FBRywyQkFBMkI7SUFDOUIsU0FBUyxFQUFFLE9BQU87SUFDbEIsU0FBUyxFQUFFLE9BQU87SUFDbEIsWUFBWSxFQUFFLFVBQVU7SUFDeEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsY0FBYyxFQUFFLEtBQUs7SUFDckIsZ0JBQWdCLEVBQUUsU0FBUztDQUM1QixDQUFDO0FBR0YsTUFBTSxPQUFnQiw0QkFDcEIsU0FBUSx1QkFBdUI7SUFGakM7O1FBT0Usb0JBQW9CO1FBQ1gsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBS2xCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztR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Qyx1QkFBdUI7Z0JBYWhDLDBCQUEwQjtzQkFEN0IsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBMEJsQyxxQkFBcUI7c0JBRHhCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQW1ENUIsS0FBSztzQkFEUixLQUFLO2dCQTRDTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVztnQkF1QnpCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBBcmRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNoaWxkLnRva2VuJztcclxuaW1wb3J0IHsgQXJkT3B0aW9uU2ltcGxlLCBDb21wYXJlV2l0aEZuLCBPcHRpb25Db250ZXh0IH0gZnJvbSAnLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UsIF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbXBsZUl0ZW1TdG9yYWdlLCBTaW1wbGVJdGVtU3RvcmFnZUhvc3QgfSBmcm9tICcuL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIF9TZWxlY3RhYmxlTGlzdENvbXBvbmVudERlZmF1bHRzIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIHtcclxuICB2YWx1ZUZyb206IHN0cmluZztcclxuICBsYWJlbEZyb206IHN0cmluZztcclxuICBkaXNhYmxlZEZyb206IHN0cmluZztcclxuICBjb21wYXJlV2l0aDogTnVsbGFibGU8Q29tcGFyZVdpdGhGbj47XHJcbiAgbXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIHJlcXVpcmVWYWx1ZTogYm9vbGVhbjtcclxuICBpbnZlcnREaXNhYmxlZDogYm9vbGVhbjtcclxuICBtYXhTZWxlY3RlZEl0ZW1zOiBOdWxsYWJsZTxudW1iZXI+O1xyXG59XHJcbmV4cG9ydCBjb25zdCBfc2VsZWN0YWJsZUxpc3RDb21wb25lbnREZWZhdWx0czogX1NlbGVjdGFibGVMaXN0Q29tcG9uZW50RGVmYXVsdHMgPSB7XHJcbiAgLi4uX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLFxyXG4gIHZhbHVlRnJvbTogJ3ZhbHVlJyxcclxuICBsYWJlbEZyb206ICdsYWJlbCcsXHJcbiAgZGlzYWJsZWRGcm9tOiAnZGlzYWJsZWQnLFxyXG4gIGNvbXBhcmVXaXRoOiB1bmRlZmluZWQsXHJcbiAgbXVsdGlzZWxlY3RhYmxlOiBmYWxzZSxcclxuICByZXF1aXJlVmFsdWU6IGZhbHNlLFxyXG4gIGludmVydERpc2FibGVkOiBmYWxzZSxcclxuICBtYXhTZWxlY3RlZEl0ZW1zOiB1bmRlZmluZWQsXHJcbn07XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9TZWxlY3RhYmxlTGlzdENvbXBvbmVudEJhc2VcclxuICBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlXHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0LCBBcmRGb3JtRmllbGRDb250cm9sXHJcbntcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX1NlbGVjdGFibGVMaXN0Q29tcG9uZW50RGVmYXVsdHM7XHJcblxyXG4gIC8vISBwdWJsaWMgY29uc3RhbnRzXHJcbiAgcmVhZG9ubHkgaXRlbVN0b3JhZ2UgPSBuZXcgU2ltcGxlSXRlbVN0b3JhZ2UodGhpcyk7XHJcbiAgcmVhZG9ubHkgZWxlbWVudCE6IEhUTUxFbGVtZW50O1xyXG4gIHJlYWRvbmx5IERFRkFVTFRTID0gdGhpcy5fREVGQVVMVFM7XHJcblxyXG4gIGFic3RyYWN0IHJlYWRvbmx5IF9jb21wb25lbnRJZDogc3RyaW5nO1xyXG4gIGFic3RyYWN0IHJlYWRvbmx5IF9jb21wb25lbnROYW1lOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgLy8hIGJpbmRpbmctcmVsYXRlZCBpbnB1dHNcclxuICByZWFkb25seSB2YWx1ZUZyb20gPSBpbnB1dDxzdHJpbmc+KHRoaXMuX0RFRkFVTFRTLnZhbHVlRnJvbSk7XHJcbiAgcmVhZG9ubHkgbGFiZWxGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5sYWJlbEZyb20pO1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkRnJvbSA9IGlucHV0PHN0cmluZz4odGhpcy5fREVGQVVMVFMuZGlzYWJsZWRGcm9tKTtcclxuICByZWFkb25seSBjb21wYXJlV2l0aCA9IGlucHV0PE51bGxhYmxlPENvbXBhcmVXaXRoRm4+Pih0aGlzLl9ERUZBVUxUUy5jb21wYXJlV2l0aCk7XHJcblxyXG4gIC8vISBpdGVtcyBzZXR0ZXIvZ2V0dGVyXHJcbiAgQElucHV0KClcclxuICBnZXQgaXRlbXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbVN0b3JhZ2UuaXRlbXMoKTtcclxuICB9XHJcbiAgc2V0IGl0ZW1zKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gY29lcmNlQXJyYXlQcm9wZXJ0eSh2YWx1ZSk7XHJcblxyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS5zZXRJdGVtcyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyEgbXVsdGlzZWxlY3RhYmxlXHJcbiAgcmVhZG9ubHkgbXVsdGlzZWxlY3RhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXNlbGVjdGFibGUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm11bHRpcGxlJylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC1tdWx0aXNlbGVjdCcpXHJcbiAgZ2V0IF9tdWx0aXNlbGVjdGFibGVIb3N0QXR0cmlidXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXVsdGlzZWxlY3RhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzaW5nbGVzZWxlY3RhYmxlID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMubXVsdGlzZWxlY3RhYmxlKCkpO1xyXG5cclxuICAvLyEgcmVxdWlyZSB2YWx1ZVxyXG4gIHJlYWRvbmx5IHJlcXVpcmVWYWx1ZSA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMucmVxdWlyZVZhbHVlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGlzVmFsdWVSZXF1aXJlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVxdWlyZVZhbHVlKCkgfHwgIXRoaXMubXVsdGlzZWxlY3RhYmxlKCkpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC1yZXF1aXJlLXZhbHVlJylcclxuICBnZXQgX3JlcXVpcmVWYWx1ZUhvc3RBdHRyaWJ1dGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8vISBjb2VyY2VkIHByb3BlcnRpZXNcclxuICByZWFkb25seSBpbnZlcnREaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuaW52ZXJ0RGlzYWJsZWQsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zID0gaW5wdXQ8TnVsbGFibGU8bnVtYmVyPiwgYW55Pih0aGlzLl9ERUZBVUxUUy5tYXhTZWxlY3RlZEl0ZW1zLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdW5kZWZpbmVkKSxcclxuICB9KTtcclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcclxuICAvL292ZXJyaWRlIHRoZSB3cml0ZVZhbHVlIGFuZCBzZXREaXNhYmxlZFN0YXRlIGRlZmluZWQgaW4gX05nTW9kZWxDb21wb25lbnRcclxuICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkLnNldChzdGF0ZSk7XHJcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgd3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS53cml0ZVZhbHVlKG5nTW9kZWwpO1xyXG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgY2hhbmdlICYgdG91Y2ggZXZlbnQgZW1pdHRlcnNcclxuICByZWFkb25seSB0b3VjaGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hcmQtdG91Y2hlZCcpXHJcbiAgZ2V0IF90b3VjaGVkSG9zdEF0dHJpYnV0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zaW5nbGVzZWxlY3RhYmxlKCkgPyB0aGlzLml0ZW1TdG9yYWdlLnZhbHVlKClbMF0gOiB0aGlzLml0ZW1TdG9yYWdlLnZhbHVlKCk7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2YWx1ZSk7XHJcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9vblRvdWNoZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50b3VjaGVkKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9vblRvdWNoZWRSZWdpc3RlcmVkPy4oKTtcclxuICAgIHRoaXMudG91Y2hlZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyEgZm9jdXMgJiBibHVyIGhhbmRsZXJzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsYXN0Qmx1clRpbWVzdGFtcCA9IHNpZ25hbDxOdWxsYWJsZTxudW1iZXI+Pih1bmRlZmluZWQpO1xyXG4gIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uRm9jdXMoZXZlbnQpO1xyXG5cclxuICAgIGNvbnN0IGxidCA9IHRoaXMubGFzdEJsdXJUaW1lc3RhbXAoKTtcclxuICAgIGlmICh0aGlzLnRvdWNoZWQoKSB8fCAhbGJ0IHx8IGxidCArIDEgPCBEYXRlLm5vdygpKSByZXR1cm47XHJcbiAgICB0aGlzLmxhc3RCbHVyVGltZXN0YW1wLnNldChudWxsKTtcclxuXHJcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICBzdXBlci5vbkJsdXIoZXZlbnQpO1xyXG5cclxuICAgIGlmICghdGhpcy50b3VjaGVkKCkpIHRoaXMubGFzdEJsdXJUaW1lc3RhbXAuc2V0KERhdGUubm93KCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGdldHRlcnNcclxuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW1zID0gY29tcHV0ZWQ8QXJkT3B0aW9uU2ltcGxlW10+KCgpID0+IHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0ZWRJdGVtcygpKTtcclxuICByZWFkb25seSBmaXJzdEhpZ2hsaWdodGVkSXRlbSA9IGNvbXB1dGVkPE51bGxhYmxlPEFyZE9wdGlvblNpbXBsZT4+KCgpID0+IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpPy5maXJzdCgpKTtcclxuICByZWFkb25seSBpc0l0ZW1MaW1pdFJlYWNoZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLml0ZW1TdG9yYWdlLmlzSXRlbUxpbWl0UmVhY2hlZCgpKTtcclxuXHJcbiAgLy8hIGNvbnRleHQgcHJvdmlkZXJzXHJcbiAgZ2V0T3B0aW9uQ29udGV4dChpdGVtOiBBcmRPcHRpb25TaW1wbGUpOiBPcHRpb25Db250ZXh0PEFyZE9wdGlvblNpbXBsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJGltcGxpY2l0OiBpdGVtLFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBpdGVtRGF0YTogaXRlbS5pdGVtRGF0YSgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vISB2YWx1ZSBpbnB1dCAmIG91dHB1dFxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIG5ld1ZhbHVlID0gY29lcmNlQXJyYXlQcm9wZXJ0eShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxhbnlbXT4oKTtcclxuXHJcbiAgLy8hIG91dHB1dCBldmVudHNcclxuICByZWFkb25seSBjaGFuZ2VFdmVudCA9IG91dHB1dDxhbnlbXT4oeyBhbGlhczogJ2NoYW5nZScgfSk7XHJcbiAgcmVhZG9ubHkgYWRkRXZlbnQgPSBvdXRwdXQ8YW55W10+KHsgYWxpYXM6ICdhZGQnIH0pO1xyXG4gIHJlYWRvbmx5IHJlbW92ZUV2ZW50ID0gb3V0cHV0PGFueVtdPih7IGFsaWFzOiAncmVtb3ZlJyB9KTtcclxuXHJcbiAgLy8hIGl0ZW0gc2VsZWN0aW9uIGhhbmRsZXJzXHJcbiAgdG9nZ2xlSXRlbShpdGVtOiBBcmRPcHRpb25TaW1wbGUpOiB2b2lkIHtcclxuICAgIGlmIChpdGVtLnNlbGVjdGVkKCkpIHtcclxuICAgICAgaWYgKHRoaXMuc2luZ2xlc2VsZWN0YWJsZSgpKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLnVuc2VsZWN0SXRlbShpdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgW3NlbGVjdGVkLCB1bnNlbGVjdGVkXSA9IHRoaXMuaXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbSguLi5pdGVtcyk7XHJcblxyXG4gICAgaWYgKHVuc2VsZWN0ZWQubGVuZ3RoID4gMCkgdGhpcy5yZW1vdmVFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYWRkRXZlbnQuZW1pdChzZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgdW5zZWxlY3RlZCA9IHRoaXMuaXRlbVN0b3JhZ2UudW5zZWxlY3RJdGVtKC4uLml0ZW1zKTtcclxuXHJcbiAgICBpZiAodW5zZWxlY3RlZC5sZW5ndGggPiAwKSB0aGlzLnJlbW92ZUV2ZW50LmVtaXQodW5zZWxlY3RlZCk7XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGhpZ2hsaWdoLXJlbGF0ZWRcclxuXHJcbiAgcmVhZG9ubHkgaXNNb3VzZUJlaW5nVXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJylcclxuICBvbk1vdXNlTW92ZSgpIHtcclxuICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG4gIG9uSXRlbU1vdXNlRW50ZXIob3B0aW9uOiBBcmRPcHRpb25TaW1wbGUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNNb3VzZUJlaW5nVXNlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHRTaW5nbGVJdGVtKG9wdGlvbik7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgb25JdGVtTW91c2VMZWF2ZShvcHRpb246IEFyZE9wdGlvblNpbXBsZSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLnVuaGlnaGxpZ2h0SXRlbShvcHRpb24pO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgY2xpY2sgaGFuZGxlcnNcclxuICBvbkl0ZW1DbGljayhvcHRpb246IEFyZE9wdGlvblNpbXBsZSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy50b2dnbGVJdGVtKG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICAvLyEga2V5IHByZXNzIGhhbmRsZXJzXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnRW50ZXInOiB7XHJcbiAgICAgICAgdGhpcy5fdG9nZ2xlSGlnaGxpZ2h0ZWRJdGVtcyhldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XHJcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0TmV4dChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHRQcmV2aW91cyhldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0hvbWUnOiB7XHJcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0Rmlyc3QoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdFbmQnOiB7XHJcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0TGFzdChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0tleUEnOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEFsbCgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF90b2dnbGVIaWdobGlnaHRlZEl0ZW1zKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IGhpZ2hsaWdodGVkSXRlbXMgPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKTtcclxuXHJcbiAgICBpZiAoaGlnaGxpZ2h0ZWRJdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpKSB7XHJcbiAgICAgIHRoaXMudW5zZWxlY3RJdGVtKC4uLmhpZ2hsaWdodGVkSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RJdGVtKC4uLmhpZ2hsaWdodGVkSXRlbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHRQcmV2aW91cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNlZCgpKSByZXR1cm47XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0TmV4dEl0ZW0oLTEsIGV2ZW50LnNoaWZ0S2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TmV4dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNlZCgpKSByZXR1cm47XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0TmV4dEl0ZW0oKzEsIGV2ZW50LnNoaWZ0S2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0Rmlyc3QoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ZvY3VzZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQuc2V0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHRMYXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHRMYXN0SXRlbSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHRBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEFsbEl0ZW1zKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, contentChild, effect, forwardRef, HostListener, Inject, input, model, output, signal, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, effect, forwardRef, HostListener, Inject, input, model, output, signal, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
3
|
import { coerceBooleanProperty, coerceDateProperty, coerceNumberProperty } from '@ardium-ui/devkit';
|
|
4
4
|
import { roundFromZero } from 'more-rounding';
|
|
5
5
|
import { isDefined, isNull } from 'simple-bool';
|
|
6
|
-
import {
|
|
6
|
+
import { _FormFieldComponentBase } from '../_internal/form-field-component';
|
|
7
|
+
import { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';
|
|
7
8
|
import { ARD_CALENDAR_DEFAULTS } from './calendar.defaults';
|
|
8
|
-
import { ArdCalendarDaysViewHeaderTemplateDirective, ArdCalendarDayTemplateDirective, ArdCalendarFloatingMonthTemplateDirective, ArdCalendarMonthsViewHeaderTemplateDirective, ArdCalendarMonthTemplateDirective, ArdCalendarWeekdayTemplateDirective, ArdCalendarYearsViewHeaderTemplateDirective, ArdCalendarYearTemplateDirective } from './calendar.directives';
|
|
9
|
+
import { ArdCalendarDaysViewHeaderTemplateDirective, ArdCalendarDayTemplateDirective, ArdCalendarFloatingMonthTemplateDirective, ArdCalendarMonthsViewHeaderTemplateDirective, ArdCalendarMonthTemplateDirective, ArdCalendarWeekdayTemplateDirective, ArdCalendarYearsViewHeaderTemplateDirective, ArdCalendarYearTemplateDirective, } from './calendar.directives';
|
|
9
10
|
import { _CalendarTemplateRepositoryDirective } from './calendar.internal-directives';
|
|
10
11
|
import { ArdCalendarView } from './calendar.types';
|
|
11
12
|
import { isDayOutOfRange } from './views/days-view/days-view.helpers';
|
|
@@ -17,7 +18,7 @@ import * as i2 from "./views/days-view/days-view.component";
|
|
|
17
18
|
import * as i3 from "./views/months-view/months-view.component";
|
|
18
19
|
import * as i4 from "./views/years-view/years-view.component";
|
|
19
20
|
const TODAY = new Date();
|
|
20
|
-
export class ArdiumCalendarComponent extends
|
|
21
|
+
export class ArdiumCalendarComponent extends _FormFieldComponentBase {
|
|
21
22
|
constructor(defaults) {
|
|
22
23
|
super(defaults);
|
|
23
24
|
//! appearance
|
|
@@ -55,8 +56,12 @@ export class ArdiumCalendarComponent extends _NgModelComponentBase {
|
|
|
55
56
|
this.selectedDate = model(null, { alias: 'selected' });
|
|
56
57
|
this.yearSelect = output();
|
|
57
58
|
this.monthSelect = output();
|
|
58
|
-
this.min = input(this._DEFAULTS.min, {
|
|
59
|
-
|
|
59
|
+
this.min = input(this._DEFAULTS.min, {
|
|
60
|
+
transform: v => (v === null ? null : coerceDateProperty(v, this._DEFAULTS.min)),
|
|
61
|
+
});
|
|
62
|
+
this.max = input(this._DEFAULTS.max, {
|
|
63
|
+
transform: v => (v === null ? null : coerceDateProperty(v, this._DEFAULTS.max)),
|
|
64
|
+
});
|
|
60
65
|
this.filter = input(this._DEFAULTS.filter);
|
|
61
66
|
this.isDayFilteredOut = computed(() => {
|
|
62
67
|
return (day, month = this.activeMonth(), year = this.activeYear()) => {
|
|
@@ -429,6 +434,10 @@ export class ArdiumCalendarComponent extends _NgModelComponentBase {
|
|
|
429
434
|
useExisting: forwardRef(() => ArdiumCalendarComponent),
|
|
430
435
|
multi: true,
|
|
431
436
|
},
|
|
437
|
+
{
|
|
438
|
+
provide: ARD_FORM_FIELD_CONTROL,
|
|
439
|
+
useExisting: ArdiumCalendarComponent,
|
|
440
|
+
},
|
|
432
441
|
], queries: [{ propertyName: "templateRepository", first: true, predicate: _CalendarTemplateRepositoryDirective, descendants: true, isSignal: true }, { propertyName: "yearsViewHeaderTemplate", first: true, predicate: ArdCalendarYearsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "monthsViewHeaderTemplate", first: true, predicate: ArdCalendarMonthsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "daysViewHeaderTemplate", first: true, predicate: ArdCalendarDaysViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "floatingMonthTemplate", first: true, predicate: ArdCalendarFloatingMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "yearTemplate", first: true, predicate: ArdCalendarYearTemplateDirective, descendants: true, isSignal: true }, { propertyName: "monthTemplate", first: true, predicate: ArdCalendarMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dayTemplate", first: true, predicate: ArdCalendarDayTemplateDirective, descendants: true, isSignal: true }, { propertyName: "weekdayTemplate", first: true, predicate: ArdCalendarWeekdayTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-calendar\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @switch (activeView()) {\r\n @case ('days') {\r\n <ard-days-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [highlightedDay]=\"highlightedDay()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [isDayFilteredOut]=\"isDayFilteredOut()\"\r\n [daysViewHeaderTemplate]=\"daysViewHeaderTemplate()?.template ?? templateRepository()?.daysViewHeaderTmp()?.template\"\r\n [floatingMonthTemplate]=\"floatingMonthTemplate()?.template ?? templateRepository()?.floatingMonthTmp()?.template\"\r\n [weekdayTemplate]=\"weekdayTemplate()?.template ?? templateRepository()?.weekdayTmp()?.template\"\r\n [dayTemplate]=\"dayTemplate()?.template ?? templateRepository()?.dayTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenMonthsView)=\"onTriggerOpenMonthsView()\"\r\n (triggerOpenYearsView)=\"onTriggerOpenYearsView()\"\r\n (triggerChangeMonth)=\"changeMonth($event)\"\r\n (triggerChangeYear)=\"changeYear($event)\"\r\n (triggerHighlightDay)=\"setHighlightedDay($event)\"\r\n (triggerHighlightFirstDay)=\"highlightFirstDay()\"\r\n (triggerHighlightLastDay)=\"highlightLastDay()\"\r\n (triggerHighlightNextDay)=\"highlightNextDay($event)\"\r\n (triggerHighlightPreviousDay)=\"highlightPreviousDay($event)\"\r\n (triggerHighlightSameDayNextPage)=\"$event ? highlightSameDayNextYear() : highlightSameDayNextMonth()\"\r\n (triggerHighlightSameDayPreviousPage)=\"$event ? highlightSameDayPreviousYear() : highlightSameDayPreviousMonth()\"\r\n (triggerSelectDay)=\"selectDay($event)\"\r\n />\r\n }\r\n @case ('months') {\r\n <ard-months-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [color]=\"color()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [highlightedMonth]=\"highlightedMonth()\"\r\n [monthsViewHeaderTemplate]=\"monthsViewHeaderTemplate()?.template ?? templateRepository()?.monthsViewHeaderTmp()?.template\"\r\n [monthTemplate]=\"monthTemplate()?.template ?? templateRepository()?.monthTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"onTriggerOpenDaysView()\"\r\n (triggerOpenYearsView)=\"onTriggerOpenYearsView()\"\r\n (triggeChangeYear)=\"changeYear($event)\"\r\n (triggerSelectMonth)=\"selectMonth($event)\"\r\n (triggerHighlightMonth)=\"setHighlightedMonth($event)\"\r\n (triggerHighlightFirstMonth)=\"highlightFirstMonth()\"\r\n (triggerHighlightLastMonth)=\"highlightLastMonth()\"\r\n (triggerHighlightNextMonth)=\"highlightNextMonth($event)\"\r\n (triggerHighlightPreviousMonth)=\"highlightPreviousMonth($event)\"\r\n (triggerHighlightSameMonthNextPage)=\"highlightSameMonthNextYear($event)\"\r\n (triggerHighlightSameMonthPreviousPage)=\"highlightSameMonthPreviousYear($event)\"\r\n />\r\n }\r\n @case ('years') {\r\n <ard-years-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [highlightedYear]=\"highlightedYear()\"\r\n [currentYearRangeStart]=\"currentYearRangeStart()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [yearsViewHeaderTemplate]=\"yearsViewHeaderTemplate()?.template ?? templateRepository()?.yearsViewHeaderTmp()?.template\"\r\n [yearTemplate]=\"yearTemplate()?.template ?? templateRepository()?.yearTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"onTriggerOpenDaysView()\"\r\n (triggerOpenMonthsView)=\"onTriggerOpenMonthsView()\"\r\n (triggerSelectYear)=\"selectYear($event)\"\r\n (triggerChangeYearsViewPage)=\"changeYearsViewPage($event)\"\r\n (triggerHighlightYear)=\"setHighlightedYear($event)\"\r\n (triggerHighlightFirstYear)=\"highlightFirstYear()\"\r\n (triggerHighlightLastYear)=\"highlightLastYear()\"\r\n (triggerHighlightNextYear)=\"highlightNextYear($event)\"\r\n (triggerHighlightPreviousYear)=\"highlightPreviousYear($event)\"\r\n (triggerHighlightSameYearNextPage)=\"highlightSameYearNextPage($event)\"\r\n (triggerHighlightSameYearPreviousPage)=\"highlightSameYearPreviousPage($event)\"\r\n />\r\n }\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DaysViewComponent, selector: "ard-days-view", inputs: ["tabIndex", "readOnly", "disabled", "autoFocus", "_isUsingKeyboard", "activeYear", "activeMonth", "selectedDate", "min", "max", "isDayFilteredOut", "highlightedDay", "firstWeekday", "daysViewHeaderTemplate", "floatingMonthTemplate", "weekdayTemplate", "dayTemplate"], outputs: ["triggerOpenYearsView", "triggerOpenMonthsView", "triggerSelectDay", "triggerChangeMonth", "triggerChangeYear", "triggerHighlightDay", "triggerHighlightNextDay", "triggerHighlightPreviousDay", "triggerHighlightFirstDay", "triggerHighlightLastDay", "triggerHighlightSameDayPreviousPage", "triggerHighlightSameDayNextPage", "focus", "blur"] }, { kind: "component", type: i3.MonthsViewComponent, selector: "ard-months-view", inputs: ["tabIndex", "readOnly", "disabled", "autoFocus", "_isUsingKeyboard", "color", "activeYear", "activeMonth", "selectedDate", "min", "max", "highlightedMonth", "monthsViewHeaderTemplate", "monthTemplate"], outputs: ["triggerOpenYearsView", "triggerOpenDaysView", "focus", "blur", "triggerSelectMonth", "triggeChangeYear", "triggerHighlightMonth", "triggerHighlightNextMonth", "triggerHighlightPreviousMonth", "triggerHighlightFirstMonth", "triggerHighlightLastMonth", "triggerHighlightSameMonthPreviousPage", "triggerHighlightSameMonthNextPage"] }, { kind: "component", type: i4.YearsViewComponent, selector: "ard-years-view", inputs: ["tabIndex", "readOnly", "disabled", "autoFocus", "_isUsingKeyboard", "activeYear", "selectedDate", "min", "max", "currentYearRangeStart", "highlightedYear", "yearsViewHeaderTemplate", "yearTemplate"], outputs: ["triggerOpenMonthsView", "triggerOpenDaysView", "focus", "blur", "triggerSelectYear", "triggerChangeYearsViewPage", "triggerHighlightYear", "triggerHighlightNextYear", "triggerHighlightPreviousYear", "triggerHighlightFirstYear", "triggerHighlightLastYear", "triggerHighlightSameYearPreviousPage", "triggerHighlightSameYearNextPage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
433
442
|
}
|
|
434
443
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCalendarComponent, decorators: [{
|
|
@@ -439,6 +448,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
439
448
|
useExisting: forwardRef(() => ArdiumCalendarComponent),
|
|
440
449
|
multi: true,
|
|
441
450
|
},
|
|
451
|
+
{
|
|
452
|
+
provide: ARD_FORM_FIELD_CONTROL,
|
|
453
|
+
useExisting: ArdiumCalendarComponent,
|
|
454
|
+
},
|
|
442
455
|
], template: "<div\r\n class=\"ard-calendar\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @switch (activeView()) {\r\n @case ('days') {\r\n <ard-days-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [highlightedDay]=\"highlightedDay()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [isDayFilteredOut]=\"isDayFilteredOut()\"\r\n [daysViewHeaderTemplate]=\"daysViewHeaderTemplate()?.template ?? templateRepository()?.daysViewHeaderTmp()?.template\"\r\n [floatingMonthTemplate]=\"floatingMonthTemplate()?.template ?? templateRepository()?.floatingMonthTmp()?.template\"\r\n [weekdayTemplate]=\"weekdayTemplate()?.template ?? templateRepository()?.weekdayTmp()?.template\"\r\n [dayTemplate]=\"dayTemplate()?.template ?? templateRepository()?.dayTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenMonthsView)=\"onTriggerOpenMonthsView()\"\r\n (triggerOpenYearsView)=\"onTriggerOpenYearsView()\"\r\n (triggerChangeMonth)=\"changeMonth($event)\"\r\n (triggerChangeYear)=\"changeYear($event)\"\r\n (triggerHighlightDay)=\"setHighlightedDay($event)\"\r\n (triggerHighlightFirstDay)=\"highlightFirstDay()\"\r\n (triggerHighlightLastDay)=\"highlightLastDay()\"\r\n (triggerHighlightNextDay)=\"highlightNextDay($event)\"\r\n (triggerHighlightPreviousDay)=\"highlightPreviousDay($event)\"\r\n (triggerHighlightSameDayNextPage)=\"$event ? highlightSameDayNextYear() : highlightSameDayNextMonth()\"\r\n (triggerHighlightSameDayPreviousPage)=\"$event ? highlightSameDayPreviousYear() : highlightSameDayPreviousMonth()\"\r\n (triggerSelectDay)=\"selectDay($event)\"\r\n />\r\n }\r\n @case ('months') {\r\n <ard-months-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [color]=\"color()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [highlightedMonth]=\"highlightedMonth()\"\r\n [monthsViewHeaderTemplate]=\"monthsViewHeaderTemplate()?.template ?? templateRepository()?.monthsViewHeaderTmp()?.template\"\r\n [monthTemplate]=\"monthTemplate()?.template ?? templateRepository()?.monthTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"onTriggerOpenDaysView()\"\r\n (triggerOpenYearsView)=\"onTriggerOpenYearsView()\"\r\n (triggeChangeYear)=\"changeYear($event)\"\r\n (triggerSelectMonth)=\"selectMonth($event)\"\r\n (triggerHighlightMonth)=\"setHighlightedMonth($event)\"\r\n (triggerHighlightFirstMonth)=\"highlightFirstMonth()\"\r\n (triggerHighlightLastMonth)=\"highlightLastMonth()\"\r\n (triggerHighlightNextMonth)=\"highlightNextMonth($event)\"\r\n (triggerHighlightPreviousMonth)=\"highlightPreviousMonth($event)\"\r\n (triggerHighlightSameMonthNextPage)=\"highlightSameMonthNextYear($event)\"\r\n (triggerHighlightSameMonthPreviousPage)=\"highlightSameMonthPreviousYear($event)\"\r\n />\r\n }\r\n @case ('years') {\r\n <ard-years-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [highlightedYear]=\"highlightedYear()\"\r\n [currentYearRangeStart]=\"currentYearRangeStart()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectedDate()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [yearsViewHeaderTemplate]=\"yearsViewHeaderTemplate()?.template ?? templateRepository()?.yearsViewHeaderTmp()?.template\"\r\n [yearTemplate]=\"yearTemplate()?.template ?? templateRepository()?.yearTmp()?.template\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"onTriggerOpenDaysView()\"\r\n (triggerOpenMonthsView)=\"onTriggerOpenMonthsView()\"\r\n (triggerSelectYear)=\"selectYear($event)\"\r\n (triggerChangeYearsViewPage)=\"changeYearsViewPage($event)\"\r\n (triggerHighlightYear)=\"setHighlightedYear($event)\"\r\n (triggerHighlightFirstYear)=\"highlightFirstYear()\"\r\n (triggerHighlightLastYear)=\"highlightLastYear()\"\r\n (triggerHighlightNextYear)=\"highlightNextYear($event)\"\r\n (triggerHighlightPreviousYear)=\"highlightPreviousYear($event)\"\r\n (triggerHighlightSameYearNextPage)=\"highlightSameYearNextPage($event)\"\r\n (triggerHighlightSameYearPreviousPage)=\"highlightSameYearPreviousPage($event)\"\r\n />\r\n }\r\n }\r\n</div>\r\n" }]
|
|
443
456
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
444
457
|
type: Inject,
|
|
@@ -450,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
450
463
|
type: HostListener,
|
|
451
464
|
args: ['document:keydown']
|
|
452
465
|
}] } });
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLCtCQUErQixFQUFFLHlDQUF5QyxFQUFFLDRDQUE0QyxFQUFFLGlDQUFpQyxFQUFFLG1DQUFtQyxFQUFFLDJDQUEyQyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcFcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUVMLGVBQWUsRUFDaEIsTUFB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L0IsMkNBQTJDLDJHQUMxQyw0Q0FBNEMseUdBQzlDLDBDQUEwQyx3R0FDM0MseUNBQXlDLCtGQUNsRCxnQ0FBZ0MsZ0dBQy9CLGlDQUFpQyw4RkFDbkMsK0JBQStCLGtHQUMzQixtQ0FBbUMsdUZDM2Y3RSx1dEtBdUdBOzs0RkR2RGEsdUJBQXVCO2tCQWRuQyxTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OzBCQUlZLE1BQU07MkJBQUMscUJBQXFCO3lDQXViekMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLG9CQUFvQjtnQkFLbEMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZCxcclxuICBlZmZlY3QsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlRGF0ZVByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgcm91bmRGcm9tWmVybyB9IGZyb20gJ21vcmUtcm91bmRpbmcnO1xyXG5pbXBvcnQgeyBpc0RlZmluZWQsIGlzTnVsbCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vX2ludGVybmFsL25nbW9kZWwtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xyXG5pbXBvcnQgeyBBUkRfQ0FMRU5EQVJfREVGQVVMVFMsIEFyZENhbGVuZGFyRGVmYXVsdHMgfSBmcm9tICcuL2NhbGVuZGFyLmRlZmF1bHRzJztcclxuaW1wb3J0IHsgQXJkQ2FsZW5kYXJEYXlzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLCBBcmRDYWxlbmRhckRheVRlbXBsYXRlRGlyZWN0aXZlLCBBcmRDYWxlbmRhckZsb2F0aW5nTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSwgQXJkQ2FsZW5kYXJNb250aHNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIEFyZENhbGVuZGFyTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSwgQXJkQ2FsZW5kYXJXZWVrZGF5VGVtcGxhdGVEaXJlY3RpdmUsIEFyZENhbGVuZGFyWWVhcnNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIEFyZENhbGVuZGFyWWVhclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jYWxlbmRhci5kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgX0NhbGVuZGFyVGVtcGxhdGVSZXBvc2l0b3J5RGlyZWN0aXZlIH0gZnJvbSAnLi9jYWxlbmRhci5pbnRlcm5hbC1kaXJlY3RpdmVzJztcclxuaW1wb3J0IHtcclxuICBBcmRDYWxlbmRhckZpbHRlckZuLFxyXG4gIEFyZENhbGVuZGFyVmlld1xyXG59IGZyb20gJy4vY2FsZW5kYXIudHlwZXMnO1xyXG5pbXBvcnQgeyBpc0RheU91dE9mUmFuZ2UgfSBmcm9tICcuL3ZpZXdzL2RheXMtdmlldy9kYXlzLXZpZXcuaGVscGVycyc7XHJcbmltcG9ydCB7IGlzTW9udGhPdXRPZlJhbmdlIH0gZnJvbSAnLi92aWV3cy9tb250aHMtdmlldy9tb250aHMtdmlldy5oZWxwZXJzJztcclxuaW1wb3J0IHsgaXNZZWFyT3V0T2ZSYW5nZSB9IGZyb20gJy4vdmlld3MveWVhcnMtdmlldy95ZWFycy12aWV3LmhlbHBlcnMnO1xyXG5cclxuY29uc3QgVE9EQVkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtQ2FsZW5kYXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUNhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlIHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkQ2FsZW5kYXJEZWZhdWx0cztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFSRF9DQUxFTkRBUl9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZENhbGVuZGFyRGVmYXVsdHMpIHtcclxuICAgIHN1cGVyKGRlZmF1bHRzKTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSgpOyAvLyB0cmlnZ2VyIGVmZmVjdFxyXG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb21wb25lbnRDb2xvcj4odGhpcy5fREVGQVVMVFMuY29sb3IpO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+IFtgYXJkLWNvbG9yLSR7dGhpcy5jb2xvcigpfWBdLmpvaW4oJyAnKSk7XHJcblxyXG4gIC8vISBhY3RpdmUgdmlld1xyXG4gIHJlYWRvbmx5IGFjdGl2ZVZpZXcgPSBtb2RlbDxBcmRDYWxlbmRhclZpZXc+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZVZpZXcpO1xyXG4gIHJlYWRvbmx5IGFjdGl2ZVllYXIgPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZVllYXIpO1xyXG4gIHJlYWRvbmx5IGFjdGl2ZU1vbnRoID0gbW9kZWw8bnVtYmVyPih0aGlzLl9ERUZBVUxUUy5hY3RpdmVNb250aCk7XHJcblxyXG4gIHJlYWRvbmx5IGZpcnN0V2Vla2RheSA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXksIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMuZmlyc3RXZWVrZGF5KTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICBuZXcgRXJyb3IoYEFSRC1ORjIwMDFBOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLmApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fREVGQVVMVFMuZmlyc3RXZWVrZGF5O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1ORjIwMDFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMjAwMjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGF1dG9Gb2N1cyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuYXV0b0ZvY3VzLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIG9uVHJpZ2dlck9wZW5EYXlzVmlldygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3LkRheXMpO1xyXG4gIH1cclxuICBvblRyaWdnZXJPcGVuTW9udGhzVmlldygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3Lk1vbnRocyk7XHJcbiAgfVxyXG4gIG9uVHJpZ2dlck9wZW5ZZWFyc1ZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVZpZXcuc2V0KEFyZENhbGVuZGFyVmlldy5ZZWFycyk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWVcclxuICByZWFkb25seSBzZWxlY3RlZERhdGUgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ3NlbGVjdGVkJyB9KTtcclxuXHJcbiAgcmVhZG9ubHkgeWVhclNlbGVjdCA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgbW9udGhTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHsgdHJhbnNmb3JtOiB2ID0+IHYgPT09IG51bGwgPyBudWxsIDogY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1pbikgfSk7XHJcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8RGF0ZSB8IG51bGwsIGFueT4odGhpcy5fREVGQVVMVFMubWF4LCB7IHRyYW5zZm9ybTogdiA9PiB2ID09PSBudWxsID8gbnVsbCA6IGNvZXJjZURhdGVQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5tYXgpIH0pO1xyXG5cclxuICByZWFkb25seSBmaWx0ZXIgPSBpbnB1dDxBcmRDYWxlbmRhckZpbHRlckZuIHwgbnVsbD4odGhpcy5fREVGQVVMVFMuZmlsdGVyKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXQodik7XHJcbiAgICB9IGVsc2UgaWYgKCFpc0RlZmluZWQodikpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoYEFSRC1ORjIwMDM6IDxhcmQtY2FsZW5kYXI+IFt3cml0ZVZhbHVlXSBleHBlY3RlZCBhIERhdGUgb3IgbnVsbCwgZ290IFwiJHt2fVwiLmApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMuc2VsZWN0ZWREYXRlKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyBkYXlzXHJcbiAgaXNEYXlTZWxlY3RlZChkYXk6IG51bWJlciB8IERhdGUgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGF5IGluc3RhbmNlb2YgRGF0ZSkgZGF5ID0gZGF5LmdldERhdGUoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgdGhpcy5hY3RpdmVNb250aCgpID09PSB0aGlzLnNlbGVjdGVkRGF0ZSgpPy5nZXRNb250aCgpICYmXHJcbiAgICAgIGRheSA9PT0gdGhpcy5zZWxlY3RlZERhdGUoKT8uZ2V0RGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuICBpc0RheU91dE9mUmFuZ2UoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIgPSB0aGlzLmFjdGl2ZU1vbnRoKCksIHllYXI6IG51bWJlciA9IHRoaXMuYWN0aXZlWWVhcigpKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc0RheU91dE9mUmFuZ2UoZGF5LCBtb250aCwgeWVhciwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGlzRGF5RmlsdGVyZWRPdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gKGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyID0gdGhpcy5hY3RpdmVNb250aCgpLCB5ZWFyOiBudW1iZXIgPSB0aGlzLmFjdGl2ZVllYXIoKSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcigpO1xyXG4gICAgICByZXR1cm4gZmlsdGVyPy4obmV3IERhdGUoeWVhciwgbW9udGgsIGRheSkpID8/IGZhbHNlO1xyXG4gICAgfTtcclxuICB9KTtcclxuICBzZWxlY3REYXkoZGF5OiBudW1iZXIgfCBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEYXlTZWxlY3RlZChkYXkpKSByZXR1cm47XHJcbiAgICBpZiAoaXNOdWxsKGRheSkpIHtcclxuICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5zZWxlY3RlZERhdGUoKSkpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldChudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXkgaW5zdGFuY2VvZiBEYXRlKSBkYXkgPSBkYXkuZ2V0RGF0ZSgpO1xyXG4gICAgaWYgKChkYXkgJiYgdGhpcy5pc0RheU91dE9mUmFuZ2UoZGF5KSkgfHwgdGhpcy5pc0RheUZpbHRlcmVkT3V0KCkoZGF5KSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldChuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpLCBkYXksIDAsIDAsIDAsIDApKTtcclxuICB9XHJcbiAgc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWREYXkoKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLmhpZ2hsaWdodGVkRGF5KCkpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZWxlY3REYXkodGhpcy5oaWdobGlnaHRlZERheSgpKTtcclxuICB9XHJcblxyXG4gIC8vISBoaWdobGlnaHRpbmcgZGF5c1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX19oaWdobGlnaHRlZERheSA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSBoaWdobGlnaHRlZERheSA9IHRoaXMuX19oaWdobGlnaHRlZERheS5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIHNldEhpZ2hsaWdodGVkRGF5KGRheTogbnVtYmVyIHwgbnVsbCwgbW9udGg6IG51bWJlciA9IHRoaXMuYWN0aXZlTW9udGgoKSwgeWVhcjogbnVtYmVyID0gdGhpcy5hY3RpdmVZZWFyKCkpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwoZGF5KSkge1xyXG4gICAgICB0aGlzLl9faGlnaGxpZ2h0ZWREYXkudXBkYXRlKCgpID0+IGRheSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuICAgIGNvbnN0IG91dE9mUmFuZ2UgPSB0aGlzLmlzRGF5T3V0T2ZSYW5nZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuXHJcbiAgICBpZiAob3V0T2ZSYW5nZSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5faGlnaGxpZ2h0TWluRGF5KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE1heERheSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkRGF5LnVwZGF0ZSgoKSA9PiBkYXRlLmdldERhdGUoKSk7XHJcblxyXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gdGhpcy5hY3RpdmVZZWFyKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChkYXRlLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGUuZ2V0TW9udGgoKSAhPT0gdGhpcy5hY3RpdmVNb250aCgpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTW9udGguc2V0KGRhdGUuZ2V0TW9udGgoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oaWdobGlnaHRNaW5EYXkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWluLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5hY3RpdmVNb250aC5zZXQobWluLmdldE1vbnRoKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkRGF5LnNldChtaW4uZ2V0RGF0ZSgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4RGF5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcclxuICAgIGlmICghaXNEZWZpbmVkKG1heCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZVllYXIuc2V0KG1heC5nZXRGdWxsWWVhcigpKTtcclxuICAgIHRoaXMuYWN0aXZlTW9udGguc2V0KG1heC5nZXRNb250aCgpKTtcclxuICAgIHRoaXMuX19oaWdobGlnaHRlZERheS5zZXQobWF4LmdldERhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHROZXh0RGF5KG9mZnNldCA9IDEpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0aGlzLmhpZ2hsaWdodGVkRGF5KCk7XHJcbiAgICBjb25zdCBuZXdEYXkgPSBpc0RlZmluZWQoY3VycmVudERheSkgPyBjdXJyZW50RGF5ICsgb2Zmc2V0IDogMTtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWREYXkobmV3RGF5KTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNEYXkob2Zmc2V0ID0gMSk6IHZvaWQge1xyXG4gICAgdGhpcy5oaWdobGlnaHROZXh0RGF5KG9mZnNldCAqIC0xKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0Rmlyc3REYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KDEpO1xyXG4gIH1cclxuICBoaWdobGlnaHRMYXN0RGF5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZERheShkYXlzSW5Nb250aCk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlOZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMuYWN0aXZlTW9udGgoKTtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmFjdGl2ZVllYXIoKTtcclxuICAgIGNvbnN0IG5ld01vbnRoID0gbW9udGggKyAxO1xyXG4gICAgY29uc3QgbmV3WWVhciA9IHllYXIgKyBNYXRoLmZsb29yKG5ld01vbnRoIC8gMTIpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZERheSh0aGlzLmhpZ2hsaWdodGVkRGF5KCksIG5ld01vbnRoICUgMTIsIG5ld1llYXIpO1xyXG4gIH1cclxuICBoaWdobGlnaHRTYW1lRGF5UHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5hY3RpdmVNb250aCgpO1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuYWN0aXZlWWVhcigpO1xyXG4gICAgY29uc3QgbmV3TW9udGggPSBtb250aCAtIDE7XHJcbiAgICBjb25zdCBuZXdZZWFyID0geWVhciArIE1hdGguZmxvb3IobmV3TW9udGggLyAxMik7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSwgbmV3TW9udGggJSAxMiwgbmV3WWVhcik7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlOZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWREYXkodGhpcy5oaWdobGlnaHRlZERheSgpLCB0aGlzLmFjdGl2ZU1vbnRoKCksIHRoaXMuYWN0aXZlWWVhcigpICsgMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlQcmV2aW91c1llYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSwgdGhpcy5hY3RpdmVNb250aCgpLCB0aGlzLmFjdGl2ZVllYXIoKSAtIDEpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyBtb250aHNcclxuICBpc01vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlciB8IERhdGUpOiBib29sZWFuIHtcclxuICAgIGlmIChtb250aCBpbnN0YW5jZW9mIERhdGUpIG1vbnRoID0gbW9udGguZ2V0TW9udGgoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgbW9udGggPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldE1vbnRoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIGlzTW9udGhPdXRPZlJhbmdlKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciA9IHRoaXMuYWN0aXZlWWVhcigpKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc01vbnRoT3V0T2ZSYW5nZShtb250aCwgeWVhciwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XHJcbiAgfVxyXG4gIGNoYW5nZU1vbnRoKG5ld01vbnRoOiBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaXNOdWxsKG5ld01vbnRoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldChUT0RBWS5nZXRNb250aCgpKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNb250aE91dE9mUmFuZ2UobmV3TW9udGgpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKG5ld01vbnRoID4gMTEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVNb250aC5zZXQoMCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlWWVhci51cGRhdGUodiA9PiB2ICsgMSk7XHJcbiAgICB9IGVsc2UgaWYgKG5ld01vbnRoIDwgMCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldCgxMSk7XHJcbiAgICAgIHRoaXMuYWN0aXZlWWVhci51cGRhdGUodiA9PiB2IC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldChuZXdNb250aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHNlbGVjdE1vbnRoKG5ld01vbnRoOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoaXNOdWxsKG5ld01vbnRoKSB8fCB0aGlzLmlzTW9udGhPdXRPZlJhbmdlKG5ld01vbnRoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHdhc1N1Y2Nlc3NmdWwgPSB0aGlzLmNoYW5nZU1vbnRoKG5ld01vbnRoKTtcclxuICAgIGlmICghd2FzU3VjY2Vzc2Z1bCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3LkRheXMpO1xyXG4gICAgdGhpcy5tb250aFNlbGVjdC5lbWl0KG5ld01vbnRoKTtcclxuICB9XHJcbiAgc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICghaXNEZWZpbmVkKHRoaXMuaGlnaGxpZ2h0ZWRNb250aCgpKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0TW9udGgodGhpcy5oaWdobGlnaHRlZE1vbnRoKCkhKTtcclxuICB9XHJcblxyXG4gIC8vISBoaWdobGlnaHRpbmcgbW9udGhzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfX2hpZ2hsaWdodGVkTW9udGggPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRNb250aCA9IHRoaXMuX19oaWdobGlnaHRlZE1vbnRoLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgc2V0SGlnaGxpZ2h0ZWRNb250aChtb250aDogbnVtYmVyIHwgbnVsbCwgeWVhcjogbnVtYmVyID0gdGhpcy5hY3RpdmVZZWFyKCkpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwobW9udGgpKSB7XHJcbiAgICAgIHRoaXMuX19oaWdobGlnaHRlZE1vbnRoLnVwZGF0ZSgoKSA9PiBtb250aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMTUpO1xyXG4gICAgY29uc3Qgb3V0T2ZSYW5nZSA9IHRoaXMuaXNNb250aE91dE9mUmFuZ2UobW9udGgsIHllYXIpO1xyXG5cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAtMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNaW5Nb250aCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob3V0T2ZSYW5nZSA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNYXhNb250aCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGgudXBkYXRlKCgpID0+IGRhdGUuZ2V0TW9udGgoKSk7XHJcblxyXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gdGhpcy5hY3RpdmVZZWFyKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChkYXRlLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWluTW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWluLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGguc2V0KG1pbi5nZXRNb250aCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4TW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heCgpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWF4KSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWF4LmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGguc2V0KG1heC5nZXRNb250aCgpKTtcclxuICB9XHJcblxyXG4gIGhpZ2hsaWdodE5leHRNb250aChvZmZzZXQgPSAxKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLmhpZ2hsaWdodGVkTW9udGgoKTtcclxuICAgIGNvbnN0IG5ld01vbnRoID0gaXNEZWZpbmVkKGN1cnJlbnRNb250aCkgPyBjdXJyZW50TW9udGggKyBvZmZzZXQgOiAwO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZE1vbnRoKG5ld01vbnRoKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNNb250aChvZmZzZXQgPSAxKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodE5leHRNb250aChvZmZzZXQgKiAtMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEZpcnN0TW9udGgoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkTW9udGgoMCk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodExhc3RNb250aCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWRNb250aCgxMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVNb250aE5leHRZZWFyKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkTW9udGgodGhpcy5oaWdobGlnaHRlZE1vbnRoKCksIHRoaXMuYWN0aXZlWWVhcigpICsgKG11bHRpcGxlID8gMTAgOiAxKSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVNb250aFByZXZpb3VzWWVhcihtdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZE1vbnRoKHRoaXMuaGlnaGxpZ2h0ZWRNb250aCgpLCB0aGlzLmFjdGl2ZVllYXIoKSAtIChtdWx0aXBsZSA/IDEwIDogMSkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyB5ZWFyc1xyXG4gIGlzWWVhclNlbGVjdGVkKHllYXI6IG51bWJlciB8IERhdGUpOiBib29sZWFuIHtcclxuICAgIGlmICh5ZWFyIGluc3RhbmNlb2YgRGF0ZSkgeWVhciA9IHllYXIuZ2V0RnVsbFllYXIoKTtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZSgpICE9PSBudWxsICYmIHllYXIgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG4gIGlzWWVhck91dE9mUmFuZ2UoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc1llYXJPdXRPZlJhbmdlKHllYXIsIHRoaXMubWluKCksIHRoaXMubWF4KCkpO1xyXG4gIH1cclxuICBjaGFuZ2VZZWFyKHllYXI6IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGlmIChpc051bGwoeWVhcikpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChUT0RBWS5nZXRGdWxsWWVhcigpKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNZZWFyT3V0T2ZSYW5nZSh5ZWFyKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQoeWVhcik7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyIHwgRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwoeWVhcikpIHJldHVybjtcclxuICAgIGlmICh5ZWFyIGluc3RhbmNlb2YgRGF0ZSkgeWVhciA9IHllYXIuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICBjb25zdCB3YXNTdWNjZXNzZnVsID0gdGhpcy5jaGFuZ2VZZWFyKHllYXIpO1xyXG4gICAgaWYgKCF3YXNTdWNjZXNzZnVsKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5hY3RpdmVWaWV3LnNldChBcmRDYWxlbmRhclZpZXcuTW9udGhzKTtcclxuICAgIHRoaXMueWVhclNlbGVjdC5lbWl0KHllYXIpO1xyXG4gIH1cclxuICBzZWxlY3RDdXJyZW50bHlIaWdobGlnaHRlZFllYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLmhpZ2hsaWdodGVkWWVhcigpKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0WWVhcih0aGlzLmhpZ2hsaWdodGVkWWVhcigpISk7XHJcbiAgfVxyXG5cclxuICAvLyEgaGlnaGxpZ2h0aW5nIHllYXJzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfX2hpZ2hsaWdodGVkWWVhciA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSBoaWdobGlnaHRlZFllYXIgPSB0aGlzLl9faGlnaGxpZ2h0ZWRZZWFyLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcmVhZG9ubHkgY3VycmVudFllYXJSYW5nZVN0YXJ0ID0gc2lnbmFsPG51bWJlcj4oVE9EQVkuZ2V0RnVsbFllYXIoKSAtIChUT0RBWS5nZXRGdWxsWWVhcigpICUgNCkgLSA4KTsgLy8gY3VycmVudCB5ZWFyIGFsd2F5cyBpbiAzcmQgcm93XHJcblxyXG4gIHNldEhpZ2hsaWdodGVkWWVhcih5ZWFyOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoaXNOdWxsKHllYXIpKSB7XHJcbiAgICAgIHRoaXMuX19oaWdobGlnaHRlZFllYXIudXBkYXRlKCgpID0+IHllYXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgMCk7XHJcbiAgICBjb25zdCBvdXRPZlJhbmdlID0gdGhpcy5pc1llYXJPdXRPZlJhbmdlKHllYXIpO1xyXG5cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAtMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNaW5ZZWFyKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE1heFllYXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld1llYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLl9faGlnaGxpZ2h0ZWRZZWFyLnVwZGF0ZSgoKSA9PiBuZXdZZWFyKTtcclxuXHJcbiAgICBpZiAobmV3WWVhciA8IHRoaXMuY3VycmVudFllYXJSYW5nZVN0YXJ0KCkgfHwgbmV3WWVhciA+PSB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpICsgMjQpIHtcclxuICAgICAgLy8gcm91bmQgdGhlIG9mZnNldCBhd2F5IGZyb20gemVybzogMC4xIC0+IDEsIC0wLjEgLT4gLTFcclxuICAgICAgLy8gdGhpcyBpcyB0byBlbnN1cmUgdGhlIHJhbmdlIHN0YXJ0IGlzIGFsd2F5cyBzaGlmdGVkIGJ5IDI0IHllYXJzXHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IHJvdW5kRnJvbVplcm8oKG5ld1llYXIgLSB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpKSAvIDI0KTtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQudXBkYXRlKHYgPT4gdiArIG9mZnNldCAqIDI0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVllYXJzVmlld1BhZ2Uob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1llYXJSYW5nZVN0YXJ0ID0gdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQoKSArIG9mZnNldCAqIDI0O1xyXG4gICAgdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQuc2V0KG5ld1llYXJSYW5nZVN0YXJ0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodE1pblllYXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX19oaWdobGlnaHRlZFllYXIuc2V0KG1pbi5nZXRGdWxsWWVhcigpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4WWVhcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XHJcbiAgICBpZiAoIWlzRGVmaW5lZChtYXgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkWWVhci5zZXQobWF4LmdldEZ1bGxZZWFyKCkpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0TmV4dFllYXIob2Zmc2V0ID0gMSk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0aGlzLmhpZ2hsaWdodGVkWWVhcigpO1xyXG4gICAgY29uc3QgbmV3WWVhciA9IGlzRGVmaW5lZChjdXJyZW50WWVhcikgPyBjdXJyZW50WWVhciArIG9mZnNldCA6IG51bGw7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcihuZXdZZWFyKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNZZWFyKG9mZnNldCA9IDEpOiB2b2lkIHtcclxuICAgIHRoaXMuaGlnaGxpZ2h0TmV4dFllYXIob2Zmc2V0ICogLTEpO1xyXG4gIH1cclxuICBoaWdobGlnaHRGaXJzdFllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0TGFzdFllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpICsgMjMpOyAvLyAyNCB5ZWFycyBwZXIgcGFnZVxyXG4gIH1cclxuICBoaWdobGlnaHRTYW1lWWVhck5leHRQYWdlKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5oaWdobGlnaHRlZFllYXIoKSA/PyB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZFllYXIoeWVhciArIChtdWx0aXBsZSA/IDYwIDogMjQpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0U2FtZVllYXJQcmV2aW91c1BhZ2UobXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmhpZ2hsaWdodGVkWWVhcigpID8/IHRoaXMuY3VycmVudFllYXJSYW5nZVN0YXJ0KCk7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih5ZWFyIC0gKG11bHRpcGxlID8gNjAgOiAyNCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGludGVybmFsc1xyXG4gIHJlYWRvbmx5IF9pc1VzaW5nS2V5Ym9hcmQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScpXHJcbiAgb25Eb2N1bWVudE1vdXNlbW92ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVXNpbmdLZXlib2FyZC5zZXQoZmFsc2UpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJylcclxuICBvbkRvY3VtZW50S2V5ZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVXNpbmdLZXlib2FyZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdGVtcGxhdGVzXHJcbiAgcmVhZG9ubHkgdGVtcGxhdGVSZXBvc2l0b3J5ID0gY29udGVudENoaWxkKF9DYWxlbmRhclRlbXBsYXRlUmVwb3NpdG9yeURpcmVjdGl2ZSk7XHJcblxyXG4gIHJlYWRvbmx5IHllYXJzVmlld0hlYWRlclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyWWVhcnNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IG1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhck1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhckRheXNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGZsb2F0aW5nTW9udGhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhckZsb2F0aW5nTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgeWVhclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyWWVhclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBtb250aFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgZGF5VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkQ2FsZW5kYXJEYXlUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgd2Vla2RheVRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyV2Vla2RheVRlbXBsYXRlRGlyZWN0aXZlKTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtY2FsZW5kYXJcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuPlxyXG4gIEBzd2l0Y2ggKGFjdGl2ZVZpZXcoKSkge1xyXG4gICAgQGNhc2UgKCdkYXlzJykge1xyXG4gICAgICA8YXJkLWRheXMtdmlld1xyXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgIFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzKClcIlxyXG4gICAgICAgIFtfaXNVc2luZ0tleWJvYXJkXT1cIl9pc1VzaW5nS2V5Ym9hcmQoKVwiXHJcbiAgICAgICAgW2FjdGl2ZU1vbnRoXT1cImFjdGl2ZU1vbnRoKClcIlxyXG4gICAgICAgIFthY3RpdmVZZWFyXT1cImFjdGl2ZVllYXIoKVwiXHJcbiAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGUoKVwiXHJcbiAgICAgICAgW2ZpcnN0V2Vla2RheV09XCJmaXJzdFdlZWtkYXkoKVwiXHJcbiAgICAgICAgW2hpZ2hsaWdodGVkRGF5XT1cImhpZ2hsaWdodGVkRGF5KClcIlxyXG4gICAgICAgIFttaW5dPVwibWluKClcIlxyXG4gICAgICAgIFttYXhdPVwibWF4KClcIlxyXG4gICAgICAgIFtpc0RheUZpbHRlcmVkT3V0XT1cImlzRGF5RmlsdGVyZWRPdXQoKVwiXHJcbiAgICAgICAgW2RheXNWaWV3SGVhZGVyVGVtcGxhdGVdPVwiZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyB0ZW1wbGF0ZVJlcG9zaXRvcnkoKT8uZGF5c1ZpZXdIZWFkZXJUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIFtmbG9hdGluZ01vbnRoVGVtcGxhdGVdPVwiZmxvYXRpbmdNb250aFRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5mbG9hdGluZ01vbnRoVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICBbd2Vla2RheVRlbXBsYXRlXT1cIndlZWtkYXlUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyB0ZW1wbGF0ZVJlcG9zaXRvcnkoKT8ud2Vla2RheVRtcCgpPy50ZW1wbGF0ZVwiXHJcbiAgICAgICAgW2RheVRlbXBsYXRlXT1cImRheVRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5kYXlUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlck9wZW5Nb250aHNWaWV3KT1cIm9uVHJpZ2dlck9wZW5Nb250aHNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3BlblllYXJzVmlldyk9XCJvblRyaWdnZXJPcGVuWWVhcnNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyQ2hhbmdlTW9udGgpPVwiY2hhbmdlTW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJDaGFuZ2VZZWFyKT1cImNoYW5nZVllYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHREYXkpPVwic2V0SGlnaGxpZ2h0ZWREYXkoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRGaXJzdERheSk9XCJoaWdobGlnaHRGaXJzdERheSgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodExhc3REYXkpPVwiaGlnaGxpZ2h0TGFzdERheSgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHREYXkpPVwiaGlnaGxpZ2h0TmV4dERheSgkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzRGF5KT1cImhpZ2hsaWdodFByZXZpb3VzRGF5KCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0U2FtZURheU5leHRQYWdlKT1cIiRldmVudCA/IGhpZ2hsaWdodFNhbWVEYXlOZXh0WWVhcigpIDogaGlnaGxpZ2h0U2FtZURheU5leHRNb250aCgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVEYXlQcmV2aW91c1BhZ2UpPVwiJGV2ZW50ID8gaGlnaGxpZ2h0U2FtZURheVByZXZpb3VzWWVhcigpIDogaGlnaGxpZ2h0U2FtZURheVByZXZpb3VzTW9udGgoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJTZWxlY3REYXkpPVwic2VsZWN0RGF5KCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGNhc2UgKCdtb250aHMnKSB7XHJcbiAgICAgIDxhcmQtbW9udGhzLXZpZXdcclxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9Gb2N1cygpXCJcclxuICAgICAgICBbX2lzVXNpbmdLZXlib2FyZF09XCJfaXNVc2luZ0tleWJvYXJkKClcIlxyXG4gICAgICAgIFtjb2xvcl09XCJjb2xvcigpXCJcclxuICAgICAgICBbYWN0aXZlTW9udGhdPVwiYWN0aXZlTW9udGgoKVwiXHJcbiAgICAgICAgW2FjdGl2ZVllYXJdPVwiYWN0aXZlWWVhcigpXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNlbGVjdGVkRGF0ZSgpXCJcclxuICAgICAgICBbbWluXT1cIm1pbigpXCJcclxuICAgICAgICBbbWF4XT1cIm1heCgpXCJcclxuICAgICAgICBbaGlnaGxpZ2h0ZWRNb250aF09XCJoaWdobGlnaHRlZE1vbnRoKClcIlxyXG4gICAgICAgIFttb250aHNWaWV3SGVhZGVyVGVtcGxhdGVdPVwibW9udGhzVmlld0hlYWRlclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5tb250aHNWaWV3SGVhZGVyVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICBbbW9udGhUZW1wbGF0ZV09XCJtb250aFRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5tb250aFRtcCgpPy50ZW1wbGF0ZVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3BlbkRheXNWaWV3KT1cIm9uVHJpZ2dlck9wZW5EYXlzVmlldygpXCJcclxuICAgICAgICAodHJpZ2dlck9wZW5ZZWFyc1ZpZXcpPVwib25UcmlnZ2VyT3BlblllYXJzVmlldygpXCJcclxuICAgICAgICAodHJpZ2dlQ2hhbmdlWWVhcik9XCJjaGFuZ2VZZWFyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VyU2VsZWN0TW9udGgpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRNb250aCk9XCJzZXRIaWdobGlnaHRlZE1vbnRoKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0Rmlyc3RNb250aCk9XCJoaWdobGlnaHRGaXJzdE1vbnRoKClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0TGFzdE1vbnRoKT1cImhpZ2hsaWdodExhc3RNb250aCgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHRNb250aCk9XCJoaWdobGlnaHROZXh0TW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRQcmV2aW91c01vbnRoKT1cImhpZ2hsaWdodFByZXZpb3VzTW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRTYW1lTW9udGhOZXh0UGFnZSk9XCJoaWdobGlnaHRTYW1lTW9udGhOZXh0WWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVNb250aFByZXZpb3VzUGFnZSk9XCJoaWdobGlnaHRTYW1lTW9udGhQcmV2aW91c1llYXIoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoJ3llYXJzJykge1xyXG4gICAgICA8YXJkLXllYXJzLXZpZXdcclxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9Gb2N1cygpXCJcclxuICAgICAgICBbX2lzVXNpbmdLZXlib2FyZF09XCJfaXNVc2luZ0tleWJvYXJkKClcIlxyXG4gICAgICAgIFtoaWdobGlnaHRlZFllYXJdPVwiaGlnaGxpZ2h0ZWRZZWFyKClcIlxyXG4gICAgICAgIFtjdXJyZW50WWVhclJhbmdlU3RhcnRdPVwiY3VycmVudFllYXJSYW5nZVN0YXJ0KClcIlxyXG4gICAgICAgIFthY3RpdmVZZWFyXT1cImFjdGl2ZVllYXIoKVwiXHJcbiAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGUoKVwiXHJcbiAgICAgICAgW21pbl09XCJtaW4oKVwiXHJcbiAgICAgICAgW21heF09XCJtYXgoKVwiXHJcbiAgICAgICAgW3llYXJzVmlld0hlYWRlclRlbXBsYXRlXT1cInllYXJzVmlld0hlYWRlclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy55ZWFyc1ZpZXdIZWFkZXJUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIFt5ZWFyVGVtcGxhdGVdPVwieWVhclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy55ZWFyVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJPcGVuRGF5c1ZpZXcpPVwib25UcmlnZ2VyT3BlbkRheXNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3Blbk1vbnRoc1ZpZXcpPVwib25UcmlnZ2VyT3Blbk1vbnRoc1ZpZXcoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJTZWxlY3RZZWFyKT1cInNlbGVjdFllYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJDaGFuZ2VZZWFyc1ZpZXdQYWdlKT1cImNoYW5nZVllYXJzVmlld1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRZZWFyKT1cInNldEhpZ2hsaWdodGVkWWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodEZpcnN0WWVhcik9XCJoaWdobGlnaHRGaXJzdFllYXIoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRMYXN0WWVhcik9XCJoaWdobGlnaHRMYXN0WWVhcigpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHRZZWFyKT1cImhpZ2hsaWdodE5leHRZZWFyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0UHJldmlvdXNZZWFyKT1cImhpZ2hsaWdodFByZXZpb3VzWWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVZZWFyTmV4dFBhZ2UpPVwiaGlnaGxpZ2h0U2FtZVllYXJOZXh0UGFnZSgkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVZZWFyUHJldmlvdXNQYWdlKT1cImhpZ2hsaWdodFNhbWVZZWFyUHJldmlvdXNQYWdlKCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUNMLDBDQUEwQyxFQUMxQywrQkFBK0IsRUFDL0IseUNBQXlDLEVBQ3pDLDRDQUE0QyxFQUM1QyxpQ0FBaUMsRUFDakMsbUNBQW1DLEVBQ25DLDJDQUEyQyxFQUMzQyxnQ0FBZ0MsR0FDakMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsb0NBQW9D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QUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUU1QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDTyxrQkFBa0I7UUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUU1QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUMzQixNQUFNLFlBQVks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QUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsV0FBVyxFQUFFLHVCQUF1QjthQUNyQztTQUNGLDBFQXdjMEMsb0NBQW9DLDBHQUUvQiwyQ0FBMkMsMkdBQzFDLDRDQUE0Qyx5R0FDOUMsMENBQTBDLHdHQUMzQyx5Q0FBeUMsK0ZBQ2xELGdDQUFnQyxnR0FDL0IsaUNBQWlDLDhGQUNuQywrQkFBK0Isa0dBQzNCLG1DQUFtQyx1RkMxZ0I3RSx1dEtBdUdBOzs0RkQ1Q2EsdUJBQXVCO2tCQWxCbkMsU0FBUzsrQkFDRSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcseUJBQXlCO3lCQUNyQztxQkFDRjs7MEJBSVksTUFBTTsyQkFBQyxxQkFBcUI7eUNBMmJ6QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUtsQyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgY29udGVudENoaWxkLFxyXG4gIGVmZmVjdCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgbW9kZWwsXHJcbiAgb3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlRGF0ZVByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgcm91bmRGcm9tWmVybyB9IGZyb20gJ21vcmUtcm91bmRpbmcnO1xyXG5pbXBvcnQgeyBpc0RlZmluZWQsIGlzTnVsbCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9ybS1maWVsZC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNoaWxkLnRva2VuJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xyXG5pbXBvcnQgeyBBUkRfQ0FMRU5EQVJfREVGQVVMVFMsIEFyZENhbGVuZGFyRGVmYXVsdHMgfSBmcm9tICcuL2NhbGVuZGFyLmRlZmF1bHRzJztcclxuaW1wb3J0IHtcclxuICBBcmRDYWxlbmRhckRheXNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkQ2FsZW5kYXJEYXlUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRDYWxlbmRhckZsb2F0aW5nTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRDYWxlbmRhck1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRDYWxlbmRhck1vbnRoVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkQ2FsZW5kYXJXZWVrZGF5VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkQ2FsZW5kYXJZZWFyc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRDYWxlbmRhclllYXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxufSBmcm9tICcuL2NhbGVuZGFyLmRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBfQ2FsZW5kYXJUZW1wbGF0ZVJlcG9zaXRvcnlEaXJlY3RpdmUgfSBmcm9tICcuL2NhbGVuZGFyLmludGVybmFsLWRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBBcmRDYWxlbmRhckZpbHRlckZuLCBBcmRDYWxlbmRhclZpZXcgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcclxuaW1wb3J0IHsgaXNEYXlPdXRPZlJhbmdlIH0gZnJvbSAnLi92aWV3cy9kYXlzLXZpZXcvZGF5cy12aWV3LmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBpc01vbnRoT3V0T2ZSYW5nZSB9IGZyb20gJy4vdmlld3MvbW9udGhzLXZpZXcvbW9udGhzLXZpZXcuaGVscGVycyc7XHJcbmltcG9ydCB7IGlzWWVhck91dE9mUmFuZ2UgfSBmcm9tICcuL3ZpZXdzL3llYXJzLXZpZXcveWVhcnMtdmlldy5oZWxwZXJzJztcclxuXHJcbmNvbnN0IFRPREFZID0gbmV3IERhdGUoKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bUNhbGVuZGFyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBUkRfRk9STV9GSUVMRF9DT05UUk9MLFxyXG4gICAgICB1c2VFeGlzdGluZzogQXJkaXVtQ2FsZW5kYXJDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1DYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkQ2FsZW5kYXJEZWZhdWx0cztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFSRF9DQUxFTkRBUl9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZENhbGVuZGFyRGVmYXVsdHMpIHtcclxuICAgIHN1cGVyKGRlZmF1bHRzKTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSgpOyAvLyB0cmlnZ2VyIGVmZmVjdFxyXG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb21wb25lbnRDb2xvcj4odGhpcy5fREVGQVVMVFMuY29sb3IpO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+IFtgYXJkLWNvbG9yLSR7dGhpcy5jb2xvcigpfWBdLmpvaW4oJyAnKSk7XHJcblxyXG4gIC8vISBhY3RpdmUgdmlld1xyXG4gIHJlYWRvbmx5IGFjdGl2ZVZpZXcgPSBtb2RlbDxBcmRDYWxlbmRhclZpZXc+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZVZpZXcpO1xyXG4gIHJlYWRvbmx5IGFjdGl2ZVllYXIgPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZVllYXIpO1xyXG4gIHJlYWRvbmx5IGFjdGl2ZU1vbnRoID0gbW9kZWw8bnVtYmVyPih0aGlzLl9ERUZBVUxUUy5hY3RpdmVNb250aCk7XHJcblxyXG4gIHJlYWRvbmx5IGZpcnN0V2Vla2RheSA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXksIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMuZmlyc3RXZWVrZGF5KTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICBuZXcgRXJyb3IoYEFSRC1ORjIwMDFBOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLmApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fREVGQVVMVFMuZmlyc3RXZWVrZGF5O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1ORjIwMDFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMjAwMjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGF1dG9Gb2N1cyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuYXV0b0ZvY3VzLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIG9uVHJpZ2dlck9wZW5EYXlzVmlldygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3LkRheXMpO1xyXG4gIH1cclxuICBvblRyaWdnZXJPcGVuTW9udGhzVmlldygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3Lk1vbnRocyk7XHJcbiAgfVxyXG4gIG9uVHJpZ2dlck9wZW5ZZWFyc1ZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVZpZXcuc2V0KEFyZENhbGVuZGFyVmlldy5ZZWFycyk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWVcclxuICByZWFkb25seSBzZWxlY3RlZERhdGUgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ3NlbGVjdGVkJyB9KTtcclxuXHJcbiAgcmVhZG9ubHkgeWVhclNlbGVjdCA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgbW9udGhTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiAodiA9PT0gbnVsbCA/IG51bGwgOiBjb2VyY2VEYXRlUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubWluKSksXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8RGF0ZSB8IG51bGwsIGFueT4odGhpcy5fREVGQVVMVFMubWF4LCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gKHYgPT09IG51bGwgPyBudWxsIDogY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heCkpLFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBmaWx0ZXIgPSBpbnB1dDxBcmRDYWxlbmRhckZpbHRlckZuIHwgbnVsbD4odGhpcy5fREVGQVVMVFMuZmlsdGVyKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXQodik7XHJcbiAgICB9IGVsc2UgaWYgKCFpc0RlZmluZWQodikpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoYEFSRC1ORjIwMDM6IDxhcmQtY2FsZW5kYXI+IFt3cml0ZVZhbHVlXSBleHBlY3RlZCBhIERhdGUgb3IgbnVsbCwgZ290IFwiJHt2fVwiLmApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMuc2VsZWN0ZWREYXRlKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyBkYXlzXHJcbiAgaXNEYXlTZWxlY3RlZChkYXk6IG51bWJlciB8IERhdGUgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGF5IGluc3RhbmNlb2YgRGF0ZSkgZGF5ID0gZGF5LmdldERhdGUoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgdGhpcy5hY3RpdmVNb250aCgpID09PSB0aGlzLnNlbGVjdGVkRGF0ZSgpPy5nZXRNb250aCgpICYmXHJcbiAgICAgIGRheSA9PT0gdGhpcy5zZWxlY3RlZERhdGUoKT8uZ2V0RGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuICBpc0RheU91dE9mUmFuZ2UoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIgPSB0aGlzLmFjdGl2ZU1vbnRoKCksIHllYXI6IG51bWJlciA9IHRoaXMuYWN0aXZlWWVhcigpKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc0RheU91dE9mUmFuZ2UoZGF5LCBtb250aCwgeWVhciwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGlzRGF5RmlsdGVyZWRPdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gKGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyID0gdGhpcy5hY3RpdmVNb250aCgpLCB5ZWFyOiBudW1iZXIgPSB0aGlzLmFjdGl2ZVllYXIoKSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcigpO1xyXG4gICAgICByZXR1cm4gZmlsdGVyPy4obmV3IERhdGUoeWVhciwgbW9udGgsIGRheSkpID8/IGZhbHNlO1xyXG4gICAgfTtcclxuICB9KTtcclxuICBzZWxlY3REYXkoZGF5OiBudW1iZXIgfCBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEYXlTZWxlY3RlZChkYXkpKSByZXR1cm47XHJcbiAgICBpZiAoaXNOdWxsKGRheSkpIHtcclxuICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5zZWxlY3RlZERhdGUoKSkpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldChudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXkgaW5zdGFuY2VvZiBEYXRlKSBkYXkgPSBkYXkuZ2V0RGF0ZSgpO1xyXG4gICAgaWYgKChkYXkgJiYgdGhpcy5pc0RheU91dE9mUmFuZ2UoZGF5KSkgfHwgdGhpcy5pc0RheUZpbHRlcmVkT3V0KCkoZGF5KSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldChuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpLCBkYXksIDAsIDAsIDAsIDApKTtcclxuICB9XHJcbiAgc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWREYXkoKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLmhpZ2hsaWdodGVkRGF5KCkpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZWxlY3REYXkodGhpcy5oaWdobGlnaHRlZERheSgpKTtcclxuICB9XHJcblxyXG4gIC8vISBoaWdobGlnaHRpbmcgZGF5c1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX19oaWdobGlnaHRlZERheSA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSBoaWdobGlnaHRlZERheSA9IHRoaXMuX19oaWdobGlnaHRlZERheS5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIHNldEhpZ2hsaWdodGVkRGF5KGRheTogbnVtYmVyIHwgbnVsbCwgbW9udGg6IG51bWJlciA9IHRoaXMuYWN0aXZlTW9udGgoKSwgeWVhcjogbnVtYmVyID0gdGhpcy5hY3RpdmVZZWFyKCkpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwoZGF5KSkge1xyXG4gICAgICB0aGlzLl9faGlnaGxpZ2h0ZWREYXkudXBkYXRlKCgpID0+IGRheSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuICAgIGNvbnN0IG91dE9mUmFuZ2UgPSB0aGlzLmlzRGF5T3V0T2ZSYW5nZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuXHJcbiAgICBpZiAob3V0T2ZSYW5nZSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5faGlnaGxpZ2h0TWluRGF5KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE1heERheSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkRGF5LnVwZGF0ZSgoKSA9PiBkYXRlLmdldERhdGUoKSk7XHJcblxyXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gdGhpcy5hY3RpdmVZZWFyKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChkYXRlLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGUuZ2V0TW9udGgoKSAhPT0gdGhpcy5hY3RpdmVNb250aCgpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTW9udGguc2V0KGRhdGUuZ2V0TW9udGgoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oaWdobGlnaHRNaW5EYXkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWluLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5hY3RpdmVNb250aC5zZXQobWluLmdldE1vbnRoKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkRGF5LnNldChtaW4uZ2V0RGF0ZSgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4RGF5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcclxuICAgIGlmICghaXNEZWZpbmVkKG1heCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZVllYXIuc2V0KG1heC5nZXRGdWxsWWVhcigpKTtcclxuICAgIHRoaXMuYWN0aXZlTW9udGguc2V0KG1heC5nZXRNb250aCgpKTtcclxuICAgIHRoaXMuX19oaWdobGlnaHRlZERheS5zZXQobWF4LmdldERhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHROZXh0RGF5KG9mZnNldCA9IDEpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0aGlzLmhpZ2hsaWdodGVkRGF5KCk7XHJcbiAgICBjb25zdCBuZXdEYXkgPSBpc0RlZmluZWQoY3VycmVudERheSkgPyBjdXJyZW50RGF5ICsgb2Zmc2V0IDogMTtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWREYXkobmV3RGF5KTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNEYXkob2Zmc2V0ID0gMSk6IHZvaWQge1xyXG4gICAgdGhpcy5oaWdobGlnaHROZXh0RGF5KG9mZnNldCAqIC0xKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0Rmlyc3REYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KDEpO1xyXG4gIH1cclxuICBoaWdobGlnaHRMYXN0RGF5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZERheShkYXlzSW5Nb250aCk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlOZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMuYWN0aXZlTW9udGgoKTtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmFjdGl2ZVllYXIoKTtcclxuICAgIGNvbnN0IG5ld01vbnRoID0gbW9udGggKyAxO1xyXG4gICAgY29uc3QgbmV3WWVhciA9IHllYXIgKyBNYXRoLmZsb29yKG5ld01vbnRoIC8gMTIpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZERheSh0aGlzLmhpZ2hsaWdodGVkRGF5KCksIG5ld01vbnRoICUgMTIsIG5ld1llYXIpO1xyXG4gIH1cclxuICBoaWdobGlnaHRTYW1lRGF5UHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5hY3RpdmVNb250aCgpO1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuYWN0aXZlWWVhcigpO1xyXG4gICAgY29uc3QgbmV3TW9udGggPSBtb250aCAtIDE7XHJcbiAgICBjb25zdCBuZXdZZWFyID0geWVhciArIE1hdGguZmxvb3IobmV3TW9udGggLyAxMik7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSwgbmV3TW9udGggJSAxMiwgbmV3WWVhcik7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlOZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWREYXkodGhpcy5oaWdobGlnaHRlZERheSgpLCB0aGlzLmFjdGl2ZU1vbnRoKCksIHRoaXMuYWN0aXZlWWVhcigpICsgMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVEYXlQcmV2aW91c1llYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkRGF5KHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSwgdGhpcy5hY3RpdmVNb250aCgpLCB0aGlzLmFjdGl2ZVllYXIoKSAtIDEpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyBtb250aHNcclxuICBpc01vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlciB8IERhdGUpOiBib29sZWFuIHtcclxuICAgIGlmIChtb250aCBpbnN0YW5jZW9mIERhdGUpIG1vbnRoID0gbW9udGguZ2V0TW9udGgoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgbW9udGggPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldE1vbnRoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIGlzTW9udGhPdXRPZlJhbmdlKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciA9IHRoaXMuYWN0aXZlWWVhcigpKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc01vbnRoT3V0T2ZSYW5nZShtb250aCwgeWVhciwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XHJcbiAgfVxyXG4gIGNoYW5nZU1vbnRoKG5ld01vbnRoOiBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaXNOdWxsKG5ld01vbnRoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldChUT0RBWS5nZXRNb250aCgpKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNb250aE91dE9mUmFuZ2UobmV3TW9udGgpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKG5ld01vbnRoID4gMTEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVNb250aC5zZXQoMCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlWWVhci51cGRhdGUodiA9PiB2ICsgMSk7XHJcbiAgICB9IGVsc2UgaWYgKG5ld01vbnRoIDwgMCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldCgxMSk7XHJcbiAgICAgIHRoaXMuYWN0aXZlWWVhci51cGRhdGUodiA9PiB2IC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoLnNldChuZXdNb250aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHNlbGVjdE1vbnRoKG5ld01vbnRoOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoaXNOdWxsKG5ld01vbnRoKSB8fCB0aGlzLmlzTW9udGhPdXRPZlJhbmdlKG5ld01vbnRoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHdhc1N1Y2Nlc3NmdWwgPSB0aGlzLmNoYW5nZU1vbnRoKG5ld01vbnRoKTtcclxuICAgIGlmICghd2FzU3VjY2Vzc2Z1bCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlVmlldy5zZXQoQXJkQ2FsZW5kYXJWaWV3LkRheXMpO1xyXG4gICAgdGhpcy5tb250aFNlbGVjdC5lbWl0KG5ld01vbnRoKTtcclxuICB9XHJcbiAgc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICghaXNEZWZpbmVkKHRoaXMuaGlnaGxpZ2h0ZWRNb250aCgpKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0TW9udGgodGhpcy5oaWdobGlnaHRlZE1vbnRoKCkhKTtcclxuICB9XHJcblxyXG4gIC8vISBoaWdobGlnaHRpbmcgbW9udGhzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfX2hpZ2hsaWdodGVkTW9udGggPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRNb250aCA9IHRoaXMuX19oaWdobGlnaHRlZE1vbnRoLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgc2V0SGlnaGxpZ2h0ZWRNb250aChtb250aDogbnVtYmVyIHwgbnVsbCwgeWVhcjogbnVtYmVyID0gdGhpcy5hY3RpdmVZZWFyKCkpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwobW9udGgpKSB7XHJcbiAgICAgIHRoaXMuX19oaWdobGlnaHRlZE1vbnRoLnVwZGF0ZSgoKSA9PiBtb250aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMTUpO1xyXG4gICAgY29uc3Qgb3V0T2ZSYW5nZSA9IHRoaXMuaXNNb250aE91dE9mUmFuZ2UobW9udGgsIHllYXIpO1xyXG5cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAtMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNaW5Nb250aCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob3V0T2ZSYW5nZSA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNYXhNb250aCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGgudXBkYXRlKCgpID0+IGRhdGUuZ2V0TW9udGgoKSk7XHJcblxyXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gdGhpcy5hY3RpdmVZZWFyKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChkYXRlLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWluTW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWluLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGguc2V0KG1pbi5nZXRNb250aCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4TW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heCgpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWF4KSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQobWF4LmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkTW9udGguc2V0KG1heC5nZXRNb250aCgpKTtcclxuICB9XHJcblxyXG4gIGhpZ2hsaWdodE5leHRNb250aChvZmZzZXQgPSAxKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLmhpZ2hsaWdodGVkTW9udGgoKTtcclxuICAgIGNvbnN0IG5ld01vbnRoID0gaXNEZWZpbmVkKGN1cnJlbnRNb250aCkgPyBjdXJyZW50TW9udGggKyBvZmZzZXQgOiAwO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZE1vbnRoKG5ld01vbnRoKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNNb250aChvZmZzZXQgPSAxKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodE5leHRNb250aChvZmZzZXQgKiAtMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEZpcnN0TW9udGgoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkTW9udGgoMCk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodExhc3RNb250aCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWRNb250aCgxMSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVNb250aE5leHRZZWFyKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkTW9udGgodGhpcy5oaWdobGlnaHRlZE1vbnRoKCksIHRoaXMuYWN0aXZlWWVhcigpICsgKG11bHRpcGxlID8gMTAgOiAxKSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodFNhbWVNb250aFByZXZpb3VzWWVhcihtdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZE1vbnRoKHRoaXMuaGlnaGxpZ2h0ZWRNb250aCgpLCB0aGlzLmFjdGl2ZVllYXIoKSAtIChtdWx0aXBsZSA/IDEwIDogMSkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyB5ZWFyc1xyXG4gIGlzWWVhclNlbGVjdGVkKHllYXI6IG51bWJlciB8IERhdGUpOiBib29sZWFuIHtcclxuICAgIGlmICh5ZWFyIGluc3RhbmNlb2YgRGF0ZSkgeWVhciA9IHllYXIuZ2V0RnVsbFllYXIoKTtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZSgpICE9PSBudWxsICYmIHllYXIgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG4gIGlzWWVhck91dE9mUmFuZ2UoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc1llYXJPdXRPZlJhbmdlKHllYXIsIHRoaXMubWluKCksIHRoaXMubWF4KCkpO1xyXG4gIH1cclxuICBjaGFuZ2VZZWFyKHllYXI6IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGlmIChpc051bGwoeWVhcikpIHtcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyLnNldChUT0RBWS5nZXRGdWxsWWVhcigpKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNZZWFyT3V0T2ZSYW5nZSh5ZWFyKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlWWVhci5zZXQoeWVhcik7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyIHwgRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmIChpc051bGwoeWVhcikpIHJldHVybjtcclxuICAgIGlmICh5ZWFyIGluc3RhbmNlb2YgRGF0ZSkgeWVhciA9IHllYXIuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICBjb25zdCB3YXNTdWNjZXNzZnVsID0gdGhpcy5jaGFuZ2VZZWFyKHllYXIpO1xyXG4gICAgaWYgKCF3YXNTdWNjZXNzZnVsKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5hY3RpdmVWaWV3LnNldChBcmRDYWxlbmRhclZpZXcuTW9udGhzKTtcclxuICAgIHRoaXMueWVhclNlbGVjdC5lbWl0KHllYXIpO1xyXG4gIH1cclxuICBzZWxlY3RDdXJyZW50bHlIaWdobGlnaHRlZFllYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLmhpZ2hsaWdodGVkWWVhcigpKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0WWVhcih0aGlzLmhpZ2hsaWdodGVkWWVhcigpISk7XHJcbiAgfVxyXG5cclxuICAvLyEgaGlnaGxpZ2h0aW5nIHllYXJzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfX2hpZ2hsaWdodGVkWWVhciA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSBoaWdobGlnaHRlZFllYXIgPSB0aGlzLl9faGlnaGxpZ2h0ZWRZZWFyLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcmVhZG9ubHkgY3VycmVudFllYXJSYW5nZVN0YXJ0ID0gc2lnbmFsPG51bWJlcj4oVE9EQVkuZ2V0RnVsbFllYXIoKSAtIChUT0RBWS5nZXRGdWxsWWVhcigpICUgNCkgLSA4KTsgLy8gY3VycmVudCB5ZWFyIGFsd2F5cyBpbiAzcmQgcm93XHJcblxyXG4gIHNldEhpZ2hsaWdodGVkWWVhcih5ZWFyOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoaXNOdWxsKHllYXIpKSB7XHJcbiAgICAgIHRoaXMuX19oaWdobGlnaHRlZFllYXIudXBkYXRlKCgpID0+IHllYXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgMCk7XHJcbiAgICBjb25zdCBvdXRPZlJhbmdlID0gdGhpcy5pc1llYXJPdXRPZlJhbmdlKHllYXIpO1xyXG5cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAtMSkge1xyXG4gICAgICB0aGlzLl9oaWdobGlnaHRNaW5ZZWFyKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvdXRPZlJhbmdlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE1heFllYXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld1llYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLl9faGlnaGxpZ2h0ZWRZZWFyLnVwZGF0ZSgoKSA9PiBuZXdZZWFyKTtcclxuXHJcbiAgICBpZiAobmV3WWVhciA8IHRoaXMuY3VycmVudFllYXJSYW5nZVN0YXJ0KCkgfHwgbmV3WWVhciA+PSB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpICsgMjQpIHtcclxuICAgICAgLy8gcm91bmQgdGhlIG9mZnNldCBhd2F5IGZyb20gemVybzogMC4xIC0+IDEsIC0wLjEgLT4gLTFcclxuICAgICAgLy8gdGhpcyBpcyB0byBlbnN1cmUgdGhlIHJhbmdlIHN0YXJ0IGlzIGFsd2F5cyBzaGlmdGVkIGJ5IDI0IHllYXJzXHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IHJvdW5kRnJvbVplcm8oKG5ld1llYXIgLSB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpKSAvIDI0KTtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQudXBkYXRlKHYgPT4gdiArIG9mZnNldCAqIDI0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVllYXJzVmlld1BhZ2Uob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1llYXJSYW5nZVN0YXJ0ID0gdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQoKSArIG9mZnNldCAqIDI0O1xyXG4gICAgdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQuc2V0KG5ld1llYXJSYW5nZVN0YXJ0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodE1pblllYXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgaWYgKCFpc0RlZmluZWQobWluKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX19oaWdobGlnaHRlZFllYXIuc2V0KG1pbi5nZXRGdWxsWWVhcigpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0TWF4WWVhcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XHJcbiAgICBpZiAoIWlzRGVmaW5lZChtYXgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fX2hpZ2hsaWdodGVkWWVhci5zZXQobWF4LmdldEZ1bGxZZWFyKCkpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0TmV4dFllYXIob2Zmc2V0ID0gMSk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0aGlzLmhpZ2hsaWdodGVkWWVhcigpO1xyXG4gICAgY29uc3QgbmV3WWVhciA9IGlzRGVmaW5lZChjdXJyZW50WWVhcikgPyBjdXJyZW50WWVhciArIG9mZnNldCA6IG51bGw7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcihuZXdZZWFyKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0UHJldmlvdXNZZWFyKG9mZnNldCA9IDEpOiB2b2lkIHtcclxuICAgIHRoaXMuaGlnaGxpZ2h0TmV4dFllYXIob2Zmc2V0ICogLTEpO1xyXG4gIH1cclxuICBoaWdobGlnaHRGaXJzdFllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0TGFzdFllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpICsgMjMpOyAvLyAyNCB5ZWFycyBwZXIgcGFnZVxyXG4gIH1cclxuICBoaWdobGlnaHRTYW1lWWVhck5leHRQYWdlKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5oaWdobGlnaHRlZFllYXIoKSA/PyB0aGlzLmN1cnJlbnRZZWFyUmFuZ2VTdGFydCgpO1xyXG4gICAgdGhpcy5zZXRIaWdobGlnaHRlZFllYXIoeWVhciArIChtdWx0aXBsZSA/IDYwIDogMjQpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0U2FtZVllYXJQcmV2aW91c1BhZ2UobXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmhpZ2hsaWdodGVkWWVhcigpID8/IHRoaXMuY3VycmVudFllYXJSYW5nZVN0YXJ0KCk7XHJcbiAgICB0aGlzLnNldEhpZ2hsaWdodGVkWWVhcih5ZWFyIC0gKG11bHRpcGxlID8gNjAgOiAyNCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGludGVybmFsc1xyXG4gIHJlYWRvbmx5IF9pc1VzaW5nS2V5Ym9hcmQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScpXHJcbiAgb25Eb2N1bWVudE1vdXNlbW92ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVXNpbmdLZXlib2FyZC5zZXQoZmFsc2UpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJylcclxuICBvbkRvY3VtZW50S2V5ZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVXNpbmdLZXlib2FyZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdGVtcGxhdGVzXHJcbiAgcmVhZG9ubHkgdGVtcGxhdGVSZXBvc2l0b3J5ID0gY29udGVudENoaWxkKF9DYWxlbmRhclRlbXBsYXRlUmVwb3NpdG9yeURpcmVjdGl2ZSk7XHJcblxyXG4gIHJlYWRvbmx5IHllYXJzVmlld0hlYWRlclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyWWVhcnNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IG1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhck1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhckRheXNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGZsb2F0aW5nTW9udGhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDYWxlbmRhckZsb2F0aW5nTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgeWVhclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyWWVhclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBtb250aFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgZGF5VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkQ2FsZW5kYXJEYXlUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgd2Vla2RheVRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZENhbGVuZGFyV2Vla2RheVRlbXBsYXRlRGlyZWN0aXZlKTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtY2FsZW5kYXJcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuPlxyXG4gIEBzd2l0Y2ggKGFjdGl2ZVZpZXcoKSkge1xyXG4gICAgQGNhc2UgKCdkYXlzJykge1xyXG4gICAgICA8YXJkLWRheXMtdmlld1xyXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgIFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzKClcIlxyXG4gICAgICAgIFtfaXNVc2luZ0tleWJvYXJkXT1cIl9pc1VzaW5nS2V5Ym9hcmQoKVwiXHJcbiAgICAgICAgW2FjdGl2ZU1vbnRoXT1cImFjdGl2ZU1vbnRoKClcIlxyXG4gICAgICAgIFthY3RpdmVZZWFyXT1cImFjdGl2ZVllYXIoKVwiXHJcbiAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGUoKVwiXHJcbiAgICAgICAgW2ZpcnN0V2Vla2RheV09XCJmaXJzdFdlZWtkYXkoKVwiXHJcbiAgICAgICAgW2hpZ2hsaWdodGVkRGF5XT1cImhpZ2hsaWdodGVkRGF5KClcIlxyXG4gICAgICAgIFttaW5dPVwibWluKClcIlxyXG4gICAgICAgIFttYXhdPVwibWF4KClcIlxyXG4gICAgICAgIFtpc0RheUZpbHRlcmVkT3V0XT1cImlzRGF5RmlsdGVyZWRPdXQoKVwiXHJcbiAgICAgICAgW2RheXNWaWV3SGVhZGVyVGVtcGxhdGVdPVwiZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyB0ZW1wbGF0ZVJlcG9zaXRvcnkoKT8uZGF5c1ZpZXdIZWFkZXJUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIFtmbG9hdGluZ01vbnRoVGVtcGxhdGVdPVwiZmxvYXRpbmdNb250aFRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5mbG9hdGluZ01vbnRoVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICBbd2Vla2RheVRlbXBsYXRlXT1cIndlZWtkYXlUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyB0ZW1wbGF0ZVJlcG9zaXRvcnkoKT8ud2Vla2RheVRtcCgpPy50ZW1wbGF0ZVwiXHJcbiAgICAgICAgW2RheVRlbXBsYXRlXT1cImRheVRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5kYXlUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlck9wZW5Nb250aHNWaWV3KT1cIm9uVHJpZ2dlck9wZW5Nb250aHNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3BlblllYXJzVmlldyk9XCJvblRyaWdnZXJPcGVuWWVhcnNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyQ2hhbmdlTW9udGgpPVwiY2hhbmdlTW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJDaGFuZ2VZZWFyKT1cImNoYW5nZVllYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHREYXkpPVwic2V0SGlnaGxpZ2h0ZWREYXkoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRGaXJzdERheSk9XCJoaWdobGlnaHRGaXJzdERheSgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodExhc3REYXkpPVwiaGlnaGxpZ2h0TGFzdERheSgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHREYXkpPVwiaGlnaGxpZ2h0TmV4dERheSgkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzRGF5KT1cImhpZ2hsaWdodFByZXZpb3VzRGF5KCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0U2FtZURheU5leHRQYWdlKT1cIiRldmVudCA/IGhpZ2hsaWdodFNhbWVEYXlOZXh0WWVhcigpIDogaGlnaGxpZ2h0U2FtZURheU5leHRNb250aCgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVEYXlQcmV2aW91c1BhZ2UpPVwiJGV2ZW50ID8gaGlnaGxpZ2h0U2FtZURheVByZXZpb3VzWWVhcigpIDogaGlnaGxpZ2h0U2FtZURheVByZXZpb3VzTW9udGgoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJTZWxlY3REYXkpPVwic2VsZWN0RGF5KCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGNhc2UgKCdtb250aHMnKSB7XHJcbiAgICAgIDxhcmQtbW9udGhzLXZpZXdcclxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9Gb2N1cygpXCJcclxuICAgICAgICBbX2lzVXNpbmdLZXlib2FyZF09XCJfaXNVc2luZ0tleWJvYXJkKClcIlxyXG4gICAgICAgIFtjb2xvcl09XCJjb2xvcigpXCJcclxuICAgICAgICBbYWN0aXZlTW9udGhdPVwiYWN0aXZlTW9udGgoKVwiXHJcbiAgICAgICAgW2FjdGl2ZVllYXJdPVwiYWN0aXZlWWVhcigpXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNlbGVjdGVkRGF0ZSgpXCJcclxuICAgICAgICBbbWluXT1cIm1pbigpXCJcclxuICAgICAgICBbbWF4XT1cIm1heCgpXCJcclxuICAgICAgICBbaGlnaGxpZ2h0ZWRNb250aF09XCJoaWdobGlnaHRlZE1vbnRoKClcIlxyXG4gICAgICAgIFttb250aHNWaWV3SGVhZGVyVGVtcGxhdGVdPVwibW9udGhzVmlld0hlYWRlclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5tb250aHNWaWV3SGVhZGVyVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICBbbW9udGhUZW1wbGF0ZV09XCJtb250aFRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy5tb250aFRtcCgpPy50ZW1wbGF0ZVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3BlbkRheXNWaWV3KT1cIm9uVHJpZ2dlck9wZW5EYXlzVmlldygpXCJcclxuICAgICAgICAodHJpZ2dlck9wZW5ZZWFyc1ZpZXcpPVwib25UcmlnZ2VyT3BlblllYXJzVmlldygpXCJcclxuICAgICAgICAodHJpZ2dlQ2hhbmdlWWVhcik9XCJjaGFuZ2VZZWFyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VyU2VsZWN0TW9udGgpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRNb250aCk9XCJzZXRIaWdobGlnaHRlZE1vbnRoKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0Rmlyc3RNb250aCk9XCJoaWdobGlnaHRGaXJzdE1vbnRoKClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0TGFzdE1vbnRoKT1cImhpZ2hsaWdodExhc3RNb250aCgpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHRNb250aCk9XCJoaWdobGlnaHROZXh0TW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRQcmV2aW91c01vbnRoKT1cImhpZ2hsaWdodFByZXZpb3VzTW9udGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRTYW1lTW9udGhOZXh0UGFnZSk9XCJoaWdobGlnaHRTYW1lTW9udGhOZXh0WWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVNb250aFByZXZpb3VzUGFnZSk9XCJoaWdobGlnaHRTYW1lTW9udGhQcmV2aW91c1llYXIoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoJ3llYXJzJykge1xyXG4gICAgICA8YXJkLXllYXJzLXZpZXdcclxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9Gb2N1cygpXCJcclxuICAgICAgICBbX2lzVXNpbmdLZXlib2FyZF09XCJfaXNVc2luZ0tleWJvYXJkKClcIlxyXG4gICAgICAgIFtoaWdobGlnaHRlZFllYXJdPVwiaGlnaGxpZ2h0ZWRZZWFyKClcIlxyXG4gICAgICAgIFtjdXJyZW50WWVhclJhbmdlU3RhcnRdPVwiY3VycmVudFllYXJSYW5nZVN0YXJ0KClcIlxyXG4gICAgICAgIFthY3RpdmVZZWFyXT1cImFjdGl2ZVllYXIoKVwiXHJcbiAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGUoKVwiXHJcbiAgICAgICAgW21pbl09XCJtaW4oKVwiXHJcbiAgICAgICAgW21heF09XCJtYXgoKVwiXHJcbiAgICAgICAgW3llYXJzVmlld0hlYWRlclRlbXBsYXRlXT1cInllYXJzVmlld0hlYWRlclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy55ZWFyc1ZpZXdIZWFkZXJUbXAoKT8udGVtcGxhdGVcIlxyXG4gICAgICAgIFt5ZWFyVGVtcGxhdGVdPVwieWVhclRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IHRlbXBsYXRlUmVwb3NpdG9yeSgpPy55ZWFyVG1wKCk/LnRlbXBsYXRlXCJcclxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJPcGVuRGF5c1ZpZXcpPVwib25UcmlnZ2VyT3BlbkRheXNWaWV3KClcIlxyXG4gICAgICAgICh0cmlnZ2VyT3Blbk1vbnRoc1ZpZXcpPVwib25UcmlnZ2VyT3Blbk1vbnRoc1ZpZXcoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJTZWxlY3RZZWFyKT1cInNlbGVjdFllYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJDaGFuZ2VZZWFyc1ZpZXdQYWdlKT1cImNoYW5nZVllYXJzVmlld1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRZZWFyKT1cInNldEhpZ2hsaWdodGVkWWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodEZpcnN0WWVhcik9XCJoaWdobGlnaHRGaXJzdFllYXIoKVwiXHJcbiAgICAgICAgKHRyaWdnZXJIaWdobGlnaHRMYXN0WWVhcik9XCJoaWdobGlnaHRMYXN0WWVhcigpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodE5leHRZZWFyKT1cImhpZ2hsaWdodE5leHRZZWFyKCRldmVudClcIlxyXG4gICAgICAgICh0cmlnZ2VySGlnaGxpZ2h0UHJldmlvdXNZZWFyKT1cImhpZ2hsaWdodFByZXZpb3VzWWVhcigkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVZZWFyTmV4dFBhZ2UpPVwiaGlnaGxpZ2h0U2FtZVllYXJOZXh0UGFnZSgkZXZlbnQpXCJcclxuICAgICAgICAodHJpZ2dlckhpZ2hsaWdodFNhbWVZZWFyUHJldmlvdXNQYWdlKT1cImhpZ2hsaWdodFNhbWVZZWFyUHJldmlvdXNQYWdlKCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { _formFieldComponentDefaults } from '../_internal/form-field-component';
|
|
3
3
|
import { ComponentColor } from '../types/colors.types';
|
|
4
4
|
import { ArdCalendarView } from './calendar.types';
|
|
5
5
|
const _calendarDefaults = {
|
|
6
|
-
...
|
|
6
|
+
..._formFieldComponentDefaults,
|
|
7
7
|
color: ComponentColor.Primary,
|
|
8
8
|
activeView: ArdCalendarView.Days,
|
|
9
9
|
activeYear: new Date().getFullYear(),
|
|
@@ -23,4 +23,4 @@ export const ARD_CALENDAR_DEFAULTS = new InjectionToken('ard-calendar-defaults',
|
|
|
23
23
|
export function provideCalendarDefaults(config) {
|
|
24
24
|
return { provide: ARD_CALENDAR_DEFAULTS, useValue: { ..._calendarDefaults, ...config } };
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLmRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUErQiwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBZXhFLE1BQU0saUJBQWlCLEdBQXdCO0lBQzdDLEdBQUcsMkJBQTJCO0lBQzlCLEtBQUssRUFBRSxjQUFjLENBQUMsT0FBTztJQUM3QixVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7SUFDaEMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3BDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxZQUFZLEVBQUUsQ0FBQztJQUNmLDhCQUE4QixFQUFFLENBQUM7SUFDakMsU0FBUyxFQUFFLEtBQUs7SUFDaEIsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsRUFBRTtJQUNwRyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNkLEdBQUcsaUJBQWlCO0tBQ3JCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBb0M7SUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUMzRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRDYWxlbmRhckZpbHRlckZuLCBBcmRDYWxlbmRhclZpZXcgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJkQ2FsZW5kYXJEZWZhdWx0cyBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyB7XHJcbiAgY29sb3I6IENvbXBvbmVudENvbG9yO1xyXG4gIGFjdGl2ZVZpZXc6IEFyZENhbGVuZGFyVmlldztcclxuICBhY3RpdmVZZWFyOiBudW1iZXI7XHJcbiAgYWN0aXZlTW9udGg6IG51bWJlcjtcclxuICBmaXJzdFdlZWtkYXk6IG51bWJlcjtcclxuICBtdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXI6IG51bWJlcjtcclxuICBhdXRvRm9jdXM6IGJvb2xlYW47XHJcbiAgbWluOiBEYXRlIHwgbnVsbDtcclxuICBtYXg6IERhdGUgfCBudWxsO1xyXG4gIGZpbHRlcjogQXJkQ2FsZW5kYXJGaWx0ZXJGbiB8IG51bGw7XHJcbn1cclxuXHJcbmNvbnN0IF9jYWxlbmRhckRlZmF1bHRzOiBBcmRDYWxlbmRhckRlZmF1bHRzID0ge1xyXG4gIC4uLl9mb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyxcclxuICBjb2xvcjogQ29tcG9uZW50Q29sb3IuUHJpbWFyeSxcclxuICBhY3RpdmVWaWV3OiBBcmRDYWxlbmRhclZpZXcuRGF5cyxcclxuICBhY3RpdmVZZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXHJcbiAgYWN0aXZlTW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSxcclxuICBmaXJzdFdlZWtkYXk6IDEsXHJcbiAgbXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyOiA1LFxyXG4gIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgbWluOiBudWxsLFxyXG4gIG1heDogbnVsbCxcclxuICBmaWx0ZXI6IG51bGwsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQVJEX0NBTEVOREFSX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPEFyZENhbGVuZGFyRGVmYXVsdHM+KCdhcmQtY2FsZW5kYXItZGVmYXVsdHMnLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4gKHtcclxuICAgIC4uLl9jYWxlbmRhckRlZmF1bHRzLFxyXG4gIH0pLFxyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ2FsZW5kYXJEZWZhdWx0cyhjb25maWc6IFBhcnRpYWw8QXJkQ2FsZW5kYXJEZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0NBTEVOREFSX0RFRkFVTFRTLCB1c2VWYWx1ZTogeyAuLi5fY2FsZW5kYXJEZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=
|