ets-fe-ng-sdk 18.0.110 → 18.0.112

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.
@@ -252,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
252
252
  type: Input,
253
253
  args: ['isShow']
254
254
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVEsU0FBUyxFQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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RkFHQSxzQkFBc0I7a0JBdkJsQyxTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FFUDt3QkFDUCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFNBQVM7cUJBQ1Y7d0RBTVEsUUFBUTtzQkFBaEIsS0FBSztnQkFPSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNO2dCQUNFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBcUM4QixXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFHWSxpQkFBaUI7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7Z0JBYWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbGFzdCwgc3dpdGNoTWFwLCB0YXAsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCwgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dFN1YlR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCB9IGZyb20gJy4uL3JpY2gtdGV4dC1lZGl0b3ItcmYvcmljaC10ZXh0LWVkaXRvci1yZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUZvcm1HZW5lcmF0b3IsIElCYXNlRm9ybVNjaGVtYSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3IuYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogRm9ybSBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgdGhlIGZvcm1TY2hlbWFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIFJpY2hUZXh0RWRpdG9yUkZDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSxcbiAgVEZvcm1TY2hlbWEgZXh0ZW5kcyBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPiA9IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+LFxuPiBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXAsIFRGb3JtU2NoZW1hPiB7XG4gIEBJbnB1dCgpIGtleUZpZWxkOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIHJlYWRvbmx5IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBpc0NyZWF0ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdE9uRW50ZXJLZXkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1UYWdSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+PignZm9ybVRhZycpO1xuXG4gIC8qKkVtaXR0ZWQganVzdCBiZWZvcmUgY2FsbGluZyB0aGUgc2F2ZSBmdW5jdGlvbiAqL1xuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLyoqRW1pdHRlZCBhZnRlciByZWNlaXZpbmcgZmVlZGJhY2sgZnJvbSB0aGUgc3VibWl0IGZ1bmN0aW9uICovXG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICByZWFkb25seSBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICByZWFkb25seSBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICByZWFkb25seSBzaG93U3VibWl0QnRuID0gaW5wdXQodHJ1ZSk7XG5cbiAgcmVhZG9ubHkgZ3JpZFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkTURTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZExHU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRYWExTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcblxuICByZWFkb25seSBmb3JtR3JpZENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VMb2FkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUxvYWRlcigpID8gdGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5fbG9hZGluZygpIDogZmFsc2UsXG4gICk7XG5cbiAgcmVhZG9ubHkgc3VibWl0QnRuUmVmID0gdmlld0NoaWxkPEJ0bkNvbXBvbmVudD4oJ3N1Ym1pdEJ0bicpO1xuICByZWFkb25seSBmb3JtID0gbW9kZWw8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+PigpO1xuXG4gIHJlYWRvbmx5IGZvcm1WYWx1ZSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZvcm0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmZvcm0oKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtKClcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9KSlcbiAgICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICAvLyB7IGluaXRpYWxWYWx1ZTogdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30gfSxcbiAgKTtcblxuICBzdWJtaXNzaW9uUmVzcG9uc2U6IGFueTtcbiAgQElucHV0KHsgYWxpYXM6ICdmb3JtU2NoZW1hJyB9KSBzZXQgX2Zvcm1TY2hlbWEodjogVEZvcm1TY2hlbWFbXSB8IElGb3JtU2NoZW1hPGFueT5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodi5maWx0ZXIoKHgpID0+IHgpKSBhcyBURm9ybVNjaGVtYVtdKTtcbiAgfVxuICBASW5wdXQoeyBhbGlhczogJ2Zvcm1TY2hlbWFOb0Zvcm0nIH0pIHNldCBfZm9ybVNjaGVtYU5vRm9ybSh2OiBURm9ybVNjaGVtYVtdKSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2KSB7XG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBpdGVtLmZpZWxkPy50b1N0cmluZygpLFxuICAgICAgICAgIG5ldyBGb3JtQ29udHJvbChpdGVtLnZhbHVlLCBbXS5jb25jYXQoaXRlbS5pc1JlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybS5zZXQoZm9ybSBhcyBhbnkgYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+KTtcbiAgICAgIHRoaXMuX2Zvcm1TY2hlbWEgPSB2O1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ2lzU2hvdycpIHNldCBfaXNTaG93KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICByZWFkb25seSBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICAvLyBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcblxuICByZWFkb25seSBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSB0aGlzLnByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uKCksXG4gICAgICBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIHJldDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSA9IFtdO1xuICAgIGZvcm1TY2hlbWEuZm9yRWFjaCgoc2NoZW1lKSA9PiB7XG4gICAgICBpZiAoIXNjaGVtZS5oaWRkZW4pIHtcbiAgICAgICAgaWYgKGlzQ3JlYXRlKVxuICAgICAgICAgIHNjaGVtZS5wcmVzZXRWYWx1ZSA9XG4gICAgICAgICAgICBzY2hlbWUucHJlc2V0VmFsdWUgPT0gbnVsbCA/IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uIDogc2NoZW1lLnByZXNldFZhbHVlO1xuICAgICAgICByZXQucHVzaChzY2hlbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZXQuc29tZSgoeCkgPT4gIXguZmllbGQpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuICBwdWJsaWMgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybUdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgbGlzdGVuVG9LZXk6IFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmZvcm1TY2hlbWEoKSk7XG4gICAgLy8gfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZ0ciA9IHRoaXMuZm9ybVRhZ1JlZigpLFxuICAgICAgICBzdWJtaXRPbkVudGVyS2V5ID0gdGhpcy5zdWJtaXRPbkVudGVyS2V5KCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcblxuICAgICAgbGlzdGVuVG9LZXk/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAoZnRyPy5uYXRpdmVFbGVtZW50ICYmIHN1Ym1pdE9uRW50ZXJLZXkpXG4gICAgICAgIGxpc3RlblRvS2V5ID0gZnJvbUV2ZW50KGZ0ci5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgKHI6IEtleWJvYXJkRXZlbnQpID0+IChyLmNvZGUgPT09ICdFbnRlcicgfHwgci5rZXlDb2RlID09PSAxMykgJiYgdGhpcy5mb3JtKCkudmFsaWQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCh0aGlzLnN1Ym1pdEJ0blJlZigpKTtcbiAgICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoc2NoZW1hOiBURm9ybVNjaGVtYVtdKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEgfHwgW10pO1xuICAgIGlmIChzY2hlbWEpIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgaWYgKHNjaGVtYSlcbiAgICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSlcbiAgICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgICBzY2hlbWUub25DaGFuZ2VGdW5jKGZvcm1WYWx1ZSwgZm9ybVZhbHVlW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0sIHRoaXMpO1xuICAgICAgICB9XG4gIH1cblxuICBoYW5kbGVGb3JtU2NoZW1lKHNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIGlmIChzY2hlbWUuc3RhY2tlZCA9PSBudWxsKSBzY2hlbWUuc3RhY2tlZCA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9PSBudWxsKSBzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPSB0cnVlO1xuICAgIGlmICh0aGlzLmZvcm1TZXJ2aWNlLmNvbmZpZy5zaG93VmFsaWRhdGlvbk1lc3NhZ2VzQnlEZWZhdWx0KVxuICAgICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpXG4gICAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuICAgIC8vIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW3NjaGVtZS5maWVsZCBhcyBhbnldKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jKTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpKTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICB0aGlzLnN1YnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSA9IHRoaXMuZm9ybSgpXG4gICAgICAgID8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDApKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm1WYWx1ZSgpLCByLCB0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZTogVEZvcm1TY2hlbWEsIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueVtdPikge1xuICAgIG9wdGlvbnMkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0gYXMgVEZvcm1TY2hlbWEpO1xuICAgIH0pO1xuICB9XG5cbiAgZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWU/OiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5zdWJzW2ZpZWxkTmFtZSBhcyBzdHJpbmddPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1jaGFuZ2VFbWl0dGVyKCkge1xuICAgIHRoaXMubWNoYW5nZS5lbWl0KHRoaXMuZm9ybVZhbHVlKCkpO1xuICB9XG5cbiAgZ2V0Rm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ107XG4gIH07XG5cbiAgYWRkVG9Gb3JtU2NoZW1hKGZvcm1TY2hlbWU6IFRGb3JtU2NoZW1hKSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tRm9ybVNjaGVtYShmb3JtU2NoZW1lLmZpZWxkKTtcbiAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoZm9ybVNjaGVtZSk7XG4gIH1cblxuICB1cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCwgc2NoZW1lOiBQYXJ0aWFsPFRGb3JtU2NoZW1hPikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nLCBzY2hlbWUpO1xuICB9XG4gIHVwZGF0ZUFsbEZvcm1TY2hlbWEobWFwOiAoZm9ybUZpZWxkOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikgPT4gVEZvcm1TY2hlbWEpIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwKTtcbiAgfVxuXG4gIHJlbW92ZUZyb21Gb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWUpO1xuICAgIGNvbnN0IG9uUmVtb3ZlID0gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ10/Lm9uUmVtb3ZlRnVuYztcbiAgICBpZiAob25SZW1vdmUpIG9uUmVtb3ZlKHRoaXMuZm9ybVZhbHVlKCkgYXMgYW55LCB0aGlzLmZvcm1WYWx1ZSgpW2ZpZWxkTmFtZSBhcyBhbnldLCB0aGlzKTtcbiAgICB0aGlzLl9yZW1vdmVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE9wdGlvbkxhYmVsKCRldmVudDogYW55LCBzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSAkZXZlbnQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoYnRuPzogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgYnRuPy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWx1ZSgpO1xuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KGZvcm1WYWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmMoZm9ybVZhbCk7XG4gICAgICAgIGlmICh0aGlzLnN1Ym1pdFN1Y2Nlc3NUZXh0KCkpIHRoaXMudXRpbGl0eVNlcnZpY2UuaW5mbyh0aGlzLnN1Ym1pdFN1Y2Nlc3NUZXh0KCksIDEpO1xuICAgICAgICB0aGlzLnNhdmVkLmVtaXQodGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKGVycm9yLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKGZhbHNlKTtcbiAgICB9IGVsc2UgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybVZhbHVlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWE8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFRGb3JtR3JvdXAsIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4+IHtcbiAgY2hpbGRyZW4/OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdO1xuICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBzdWJUeXBlPzogSW5wdXRTdWJUeXBlO1xuICBwcmVzZXRWYWx1ZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2NoZW1hMjxUU3RydWN0ID0gYW55PlxuICBleHRlbmRzIElGb3JtU2NoZW1hPHtcbiAgICBbSyBpbiBrZXlvZiBUU3RydWN0XT86IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8IS0tIHt7Zm9ybVZhbHVlKCl8anNvbn19XG57e2Zvcm1WYWxpZCgpfGpzb259fSAtLT5cbjxsb2FkZXIgW2xvYWRpbmddPVwiY29tcHV0ZWRMb2FkaW5nKClcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtKClcIiAjZm9ybVRhZz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17eyBncmlkU3R5bGUoKSB9fSByb3ctY29scy1tZC17eyBncmlkTURTdHlsZSgpIH19IHJvdy1jb2xzLWxnLXt7XG4gICAgICAgIGdyaWRMR1N0eWxlKClcbiAgICAgIH19IHJvdy1jb2xzLXh4bC17eyBncmlkWFhMU3R5bGUoKSB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3sgZm9ybUdyaWRDbGFzcygpIH19XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRGb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZS5maWVsZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHNjaGVtZS5jbHMgfX0gXCI+XG4gICAgICAgICAgQHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCIgXG4gICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgPGFwcC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xuICAgICAgICAgICAgICA8cmljaC10ZXh0LWVkaXRvci1yZlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbCFcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGUhXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnIVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZyFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlciFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuYyFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50IVwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmISB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0bigpKSB7XG4gICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiXG4gICAgICAgICAgICBncm91cD1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiXG4gICAgICAgICAgICAjc3VibWl0QnRuIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbG9hZGVyPlxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVEsU0FBUyxFQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFFcEU7O0dBRUc7QUF3QkgsTUFBTSxPQUFPLHNCQUdYLFNBQVEsaUJBQTBDO0lBaURsRCxJQUFvQyxXQUFXLENBQUMsQ0FBcUM7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWtCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBMEMsaUJBQWlCLENBQUMsQ0FBZ0I7UUFDMUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFDdEIsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyRixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQW9DLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQXFCLE9BQU8sQ0FBQyxDQUFVO1FBQ3JDLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs7WUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUM7Z0JBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOztnQkFDN0MsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUF1QkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQWhHRCxhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUN0QywrQkFBMEIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6QyxlQUFVLEdBQUcsU0FBUyxDQUE4QixTQUFTLENBQUMsQ0FBQztRQUV4RSxtREFBbUQ7UUFDekMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsK0RBQStEO1FBQ3JELFVBQUssR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWpDLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLHNCQUFpQixHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUM5QyxzQkFBaUIsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixjQUFTLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBRXhDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsY0FBUyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzdCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUUzQixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWxDLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDN0QsQ0FBQztRQUVPLGlCQUFZLEdBQUcsU0FBUyxDQUFlLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELFNBQUksR0FBRyxLQUFLLEVBQXlCLENBQUM7UUFFdEMsY0FBUyxHQUFHLFFBQVEsQ0FDM0IsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzFCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixJQUFJLENBQUMsSUFBSSxFQUFFO2FBQ1IsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3JELENBQ0YsQ0FFRixDQUFDO1FBNEJPLGVBQVUsR0FBRyxNQUFNLENBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0Msc0RBQXNEO1FBRTdDLHVCQUFrQixHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFO1lBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQ3hDLDBCQUEwQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUM5RCxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUMxQixHQUFHLEdBQThCLEVBQUUsQ0FBQztZQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25CLElBQUksUUFBUTt3QkFDVixNQUFNLENBQUMsV0FBVzs0QkFDaEIsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO29CQUNqRixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxRQUFRLENBQUM7WUFDeEMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUNILHlCQUF5QjtRQUNsQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBa0ZsRCxrQkFBYSxHQUFHLENBQUMsU0FBMkIsRUFBRSxFQUFFO1lBQzlDLFlBQVk7WUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFtQixDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBaEZBLElBQUksV0FBeUIsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCO1FBQ2pCLG9DQUFvQztRQUNwQyxNQUFNO1FBQ04sTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDM0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0MsWUFBWTtZQUVaLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMzQixJQUFJLEdBQUcsRUFBRSxhQUFhLElBQUksZ0JBQWdCO2dCQUN4QyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDO3FCQUNsRCxJQUFJLENBQ0gsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixNQUFNLENBQ0osQ0FBQyxDQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FDcEYsQ0FDRjtxQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFnQixFQUFFLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQXFCO1FBQ3hCLFlBQVk7UUFDWixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTTtZQUFFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTTtnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNO1lBQ1IsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUM7b0JBQzdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVFLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBbUI7UUFDbEMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9DLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSTtZQUFFLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQywrQkFBK0I7WUFDekQsSUFBSSxNQUFNLENBQUMsa0JBQWtCLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNyQywwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLENBQUMsZUFBZTtZQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksTUFBTSxDQUFDLGdCQUFnQjtZQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLE1BQU0sQ0FBQyxLQUFLO2dCQUFFLFFBQVEsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRVMsb0JBQW9CLENBQUMsTUFBbUIsRUFBRSxRQUEyQjtRQUM3RSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFpQixDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBNEI7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFtQixDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU9ELGVBQWUsQ0FBQyxVQUF1QjtRQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxNQUE0QjtRQUN4RSxPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxHQUF3RDtRQUMxRSxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBMkI7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFtQixDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQ3pFLElBQUksUUFBUTtZQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBbUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyxjQUFjLENBQUMsTUFBVyxFQUFFLE1BQStCO1FBQ25FLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBa0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQzs7WUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQS9OVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4cUdDcEVuQyxvOE9BMkpBLDBERHZHSSxlQUFlLHNIQUNmLFdBQVcsbVNBQ1gsWUFBWSxzTUFDWixvQkFBb0IsNElBRXBCLHFCQUFxQiw4SEFHckIsbUJBQW1CLGdUQUNuQix5QkFBeUIsZ0VBQ3pCLFlBQVksd2lCQUNaLG1CQUFtQiwyS0FDbkIsZUFBZSxtREFDZixTQUFTOzsyRkFHQSxzQkFBc0I7a0JBdkJsQyxTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FFUDt3QkFDUCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFNBQVM7cUJBQ1Y7d0RBTVEsUUFBUTtzQkFBaEIsS0FBSztnQkFPSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNO2dCQUNFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBcUM4QixXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFHWSxpQkFBaUI7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7Z0JBYWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbGFzdCwgc3dpdGNoTWFwLCB0YXAsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCwgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dFN1YlR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCB9IGZyb20gJy4uL3JpY2gtdGV4dC1lZGl0b3ItcmYvcmljaC10ZXh0LWVkaXRvci1yZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUZvcm1HZW5lcmF0b3IsIElCYXNlRm9ybVNjaGVtYSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3IuYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogRm9ybSBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgdGhlIGZvcm1TY2hlbWFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIFJpY2hUZXh0RWRpdG9yUkZDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSxcbiAgVEZvcm1TY2hlbWEgZXh0ZW5kcyBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPiA9IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+LFxuPiBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXAsIFRGb3JtU2NoZW1hPiB7XG4gIEBJbnB1dCgpIGtleUZpZWxkOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIHJlYWRvbmx5IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBpc0NyZWF0ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdE9uRW50ZXJLZXkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1UYWdSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+PignZm9ybVRhZycpO1xuXG4gIC8qKkVtaXR0ZWQganVzdCBiZWZvcmUgY2FsbGluZyB0aGUgc2F2ZSBmdW5jdGlvbiAqL1xuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLyoqRW1pdHRlZCBhZnRlciByZWNlaXZpbmcgZmVlZGJhY2sgZnJvbSB0aGUgc3VibWl0IGZ1bmN0aW9uICovXG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICByZWFkb25seSBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICByZWFkb25seSBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICByZWFkb25seSBzaG93U3VibWl0QnRuID0gaW5wdXQodHJ1ZSk7XG5cbiAgcmVhZG9ubHkgZ3JpZFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkTURTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZExHU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRYWExTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcblxuICByZWFkb25seSBmb3JtR3JpZENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VMb2FkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUxvYWRlcigpID8gdGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5fbG9hZGluZygpIDogZmFsc2UsXG4gICk7XG5cbiAgcmVhZG9ubHkgc3VibWl0QnRuUmVmID0gdmlld0NoaWxkPEJ0bkNvbXBvbmVudD4oJ3N1Ym1pdEJ0bicpO1xuICByZWFkb25seSBmb3JtID0gbW9kZWw8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+PigpO1xuXG4gIHJlYWRvbmx5IGZvcm1WYWx1ZSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZvcm0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmZvcm0oKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtKClcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9KSlcbiAgICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICAvLyB7IGluaXRpYWxWYWx1ZTogdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30gfSxcbiAgKTtcblxuICBzdWJtaXNzaW9uUmVzcG9uc2U6IGFueTtcbiAgQElucHV0KHsgYWxpYXM6ICdmb3JtU2NoZW1hJyB9KSBzZXQgX2Zvcm1TY2hlbWEodjogVEZvcm1TY2hlbWFbXSB8IElGb3JtU2NoZW1hPGFueT5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodi5maWx0ZXIoKHgpID0+IHgpKSBhcyBURm9ybVNjaGVtYVtdKTtcbiAgfVxuICBASW5wdXQoeyBhbGlhczogJ2Zvcm1TY2hlbWFOb0Zvcm0nIH0pIHNldCBfZm9ybVNjaGVtYU5vRm9ybSh2OiBURm9ybVNjaGVtYVtdKSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2KSB7XG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBpdGVtLmZpZWxkPy50b1N0cmluZygpLFxuICAgICAgICAgIG5ldyBGb3JtQ29udHJvbChpdGVtLnZhbHVlLCBbXS5jb25jYXQoaXRlbS5pc1JlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybS5zZXQoZm9ybSBhcyBhbnkgYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+KTtcbiAgICAgIHRoaXMuX2Zvcm1TY2hlbWEgPSB2O1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ2lzU2hvdycpIHNldCBfaXNTaG93KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICByZWFkb25seSBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICAvLyBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcblxuICByZWFkb25seSBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSB0aGlzLnByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uKCksXG4gICAgICBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIHJldDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSA9IFtdO1xuICAgIGZvcm1TY2hlbWEuZm9yRWFjaCgoc2NoZW1lKSA9PiB7XG4gICAgICBpZiAoIXNjaGVtZS5oaWRkZW4pIHtcbiAgICAgICAgaWYgKGlzQ3JlYXRlKVxuICAgICAgICAgIHNjaGVtZS5wcmVzZXRWYWx1ZSA9XG4gICAgICAgICAgICBzY2hlbWUucHJlc2V0VmFsdWUgPT0gbnVsbCA/IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uIDogc2NoZW1lLnByZXNldFZhbHVlO1xuICAgICAgICByZXQucHVzaChzY2hlbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZXQuc29tZSgoeCkgPT4gIXguZmllbGQpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuICBwdWJsaWMgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybUdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgbGlzdGVuVG9LZXk6IFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmZvcm1TY2hlbWEoKSk7XG4gICAgLy8gfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZ0ciA9IHRoaXMuZm9ybVRhZ1JlZigpLFxuICAgICAgICBzdWJtaXRPbkVudGVyS2V5ID0gdGhpcy5zdWJtaXRPbkVudGVyS2V5KCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcblxuICAgICAgbGlzdGVuVG9LZXk/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAoZnRyPy5uYXRpdmVFbGVtZW50ICYmIHN1Ym1pdE9uRW50ZXJLZXkpXG4gICAgICAgIGxpc3RlblRvS2V5ID0gZnJvbUV2ZW50KGZ0ci5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgKHI6IEtleWJvYXJkRXZlbnQpID0+IChyLmNvZGUgPT09ICdFbnRlcicgfHwgci5rZXlDb2RlID09PSAxMykgJiYgdGhpcy5mb3JtKCkudmFsaWQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCh0aGlzLnN1Ym1pdEJ0blJlZigpKTtcbiAgICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoc2NoZW1hOiBURm9ybVNjaGVtYVtdKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEgfHwgW10pO1xuICAgIGlmIChzY2hlbWEpIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgaWYgKHNjaGVtYSlcbiAgICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSlcbiAgICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgICBzY2hlbWUub25DaGFuZ2VGdW5jKGZvcm1WYWx1ZSwgZm9ybVZhbHVlW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0sIHRoaXMpO1xuICAgICAgICB9XG4gIH1cblxuICBoYW5kbGVGb3JtU2NoZW1lKHNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIGlmIChzY2hlbWUuc3RhY2tlZCA9PSBudWxsKSBzY2hlbWUuc3RhY2tlZCA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9PSBudWxsKSBzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPSB0cnVlO1xuICAgIGlmICh0aGlzLmZvcm1TZXJ2aWNlLmNvbmZpZy5zaG93VmFsaWRhdGlvbk1lc3NhZ2VzQnlEZWZhdWx0KVxuICAgICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpXG4gICAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuICAgIC8vIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW3NjaGVtZS5maWVsZCBhcyBhbnldKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jKTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpKTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICB0aGlzLnN1YnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSA9IHRoaXMuZm9ybSgpXG4gICAgICAgID8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDApKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm1WYWx1ZSgpLCByLCB0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZTogVEZvcm1TY2hlbWEsIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueVtdPikge1xuICAgIG9wdGlvbnMkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0gYXMgVEZvcm1TY2hlbWEpO1xuICAgIH0pO1xuICB9XG5cbiAgZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWU/OiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5zdWJzW2ZpZWxkTmFtZSBhcyBzdHJpbmddPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1jaGFuZ2VFbWl0dGVyKCkge1xuICAgIHRoaXMubWNoYW5nZS5lbWl0KHRoaXMuZm9ybVZhbHVlKCkpO1xuICB9XG5cbiAgZ2V0Rm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ107XG4gIH07XG5cbiAgYWRkVG9Gb3JtU2NoZW1hKGZvcm1TY2hlbWU6IFRGb3JtU2NoZW1hKSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tRm9ybVNjaGVtYShmb3JtU2NoZW1lLmZpZWxkKTtcbiAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoZm9ybVNjaGVtZSk7XG4gIH1cblxuICB1cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCwgc2NoZW1lOiBQYXJ0aWFsPFRGb3JtU2NoZW1hPikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nLCBzY2hlbWUpO1xuICB9XG4gIHVwZGF0ZUFsbEZvcm1TY2hlbWEobWFwOiAoZm9ybUZpZWxkOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikgPT4gVEZvcm1TY2hlbWEpIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwKTtcbiAgfVxuXG4gIHJlbW92ZUZyb21Gb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWUpO1xuICAgIGNvbnN0IG9uUmVtb3ZlID0gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ10/Lm9uUmVtb3ZlRnVuYztcbiAgICBpZiAob25SZW1vdmUpIG9uUmVtb3ZlKHRoaXMuZm9ybVZhbHVlKCkgYXMgYW55LCB0aGlzLmZvcm1WYWx1ZSgpW2ZpZWxkTmFtZSBhcyBhbnldLCB0aGlzKTtcbiAgICB0aGlzLl9yZW1vdmVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE9wdGlvbkxhYmVsKCRldmVudDogYW55LCBzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSAkZXZlbnQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoYnRuPzogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgYnRuPy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm1WYWx1ZSgpO1xuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KGZvcm1WYWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmMoZm9ybVZhbCk7XG4gICAgICAgIGlmICh0aGlzLnN1Ym1pdFN1Y2Nlc3NUZXh0KCkpIHRoaXMudXRpbGl0eVNlcnZpY2UuaW5mbyh0aGlzLnN1Ym1pdFN1Y2Nlc3NUZXh0KCksIDEpO1xuICAgICAgICB0aGlzLnNhdmVkLmVtaXQodGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKGVycm9yLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKGZhbHNlKTtcbiAgICB9IGVsc2UgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybVZhbHVlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWE8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFRGb3JtR3JvdXAsIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4+IHtcbiAgY2hpbGRyZW4/OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdO1xuICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBzdWJUeXBlPzogSW5wdXRTdWJUeXBlO1xuICBwcmVzZXRWYWx1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB2YXJpYWJsZSBtb2RlbDpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICAgcm93OiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gICAqICAgIHNjaGVtZTogSUZvcm1TY2hlbWE7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICB0ZW1wbGF0ZVJlZj86IFRlbXBsYXRlUmVmPGFueT47XG59XG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2NoZW1hMjxUU3RydWN0ID0gYW55PlxuICBleHRlbmRzIElGb3JtU2NoZW1hPHtcbiAgICBbSyBpbiBrZXlvZiBUU3RydWN0XT86IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8IS0tIHt7Zm9ybVZhbHVlKCl8anNvbn19XG57e2Zvcm1WYWxpZCgpfGpzb259fSAtLT5cbjxsb2FkZXIgW2xvYWRpbmddPVwiY29tcHV0ZWRMb2FkaW5nKClcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtKClcIiAjZm9ybVRhZz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17eyBncmlkU3R5bGUoKSB9fSByb3ctY29scy1tZC17eyBncmlkTURTdHlsZSgpIH19IHJvdy1jb2xzLWxnLXt7XG4gICAgICAgIGdyaWRMR1N0eWxlKClcbiAgICAgIH19IHJvdy1jb2xzLXh4bC17eyBncmlkWFhMU3R5bGUoKSB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3sgZm9ybUdyaWRDbGFzcygpIH19XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRGb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZS5maWVsZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHNjaGVtZS5jbHMgfX0gXCI+XG4gICAgICAgICAgQHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCIgXG4gICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgPGFwcC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xuICAgICAgICAgICAgICA8cmljaC10ZXh0LWVkaXRvci1yZlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbCFcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGUhXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnIVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZyFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlciFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuYyFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50IVwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmISB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0bigpKSB7XG4gICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiXG4gICAgICAgICAgICBncm91cD1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiXG4gICAgICAgICAgICAjc3VibWl0QnRuIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbG9hZGVyPlxuIl19
@@ -30,6 +30,7 @@ export class TableBaseComponent {
30
30
  this.orderDirection = input('asc');
31
31
  this.orderField = input();
32
32
  this.pageSize = input(10);
33
+ this.customTemplates = input();
33
34
  this.startSectionTemplate = input();
34
35
  this.computedPageSizeOptions = computed(() => {
35
36
  const defaultPageSizeOptions = this.defaultPageSizeOptions(), pageSizeOptions = this.pageSizeOptions(), resultsLength = this.resultsLength();
@@ -107,10 +108,12 @@ export class TableBaseComponent {
107
108
  debugger;
108
109
  if (!columns?.length)
109
110
  return;
111
+ const customTemplates = this.customTemplates();
110
112
  const cellsToCheckFor = {};
111
113
  // const dateFields = { createdOn: 1, updatedOn: 1 };
112
114
  for (let index = 0; index < columns.length; index++) {
113
115
  const item = columns[index];
116
+ item.customTemplate = customTemplates[item.f];
114
117
  if (!(item.previewOnHover === false ||
115
118
  (!item.onHoverHandler && !this.tS.generalColumnPropMap[item.f]?.onHoverHandler))) {
116
119
  item._onHoverFunction = (event, row) => (item.onHoverHandler || this.tS.generalColumnPropMap[item.f]?.onHoverHandler).action(row, event);
@@ -253,7 +256,7 @@ export class TableBaseComponent {
253
256
  this.cdr.detectChanges();
254
257
  }
255
258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: TableBaseComponent, isStandalone: true, selector: "ng-component", inputs: { _rowOptions: { classPropertyName: "_rowOptions", publicName: "rowOptions", isSignal: true, isRequired: false, transformFunction: null }, rowOptionsMap: { classPropertyName: "rowOptionsMap", publicName: "rowOptionsMap", isSignal: true, isRequired: false, transformFunction: null }, centerCells: { classPropertyName: "centerCells", publicName: "centerCells", isSignal: true, isRequired: false, transformFunction: null }, curvy: { classPropertyName: "curvy", publicName: "curvy", isSignal: true, isRequired: false, transformFunction: null }, distinct: { classPropertyName: "distinct", publicName: "distinct", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, isExpandable: { classPropertyName: "isExpandable", publicName: "isExpandable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isDisabledFunc: { classPropertyName: "isDisabledFunc", publicName: "isDisabledFunc", isSignal: true, isRequired: false, transformFunction: null }, noItemTxt: { classPropertyName: "noItemTxt", publicName: "noItemTxt", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, expandedRowTemplate: { classPropertyName: "expandedRowTemplate", publicName: "expandedRowTemplate", isSignal: true, isRequired: false, transformFunction: null }, orderDirection: { classPropertyName: "orderDirection", publicName: "orderDirection", isSignal: true, isRequired: false, transformFunction: null }, orderField: { classPropertyName: "orderField", publicName: "orderField", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startSectionTemplate: { classPropertyName: "startSectionTemplate", publicName: "startSectionTemplate", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, placeSelectionAtRight: { classPropertyName: "placeSelectionAtRight", publicName: "placeSelectionAtRight", isSignal: true, isRequired: false, transformFunction: null }, showAdditionalColumns: { classPropertyName: "showAdditionalColumns", publicName: "showAdditionalColumns", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, showRowPointer: { classPropertyName: "showRowPointer", publicName: "showRowPointer", isSignal: true, isRequired: false, transformFunction: null }, smallerFonts: { classPropertyName: "smallerFonts", publicName: "smallerFonts", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, tableContainerClass: { classPropertyName: "tableContainerClass", publicName: "tableContainerClass", isSignal: true, isRequired: false, transformFunction: null }, useSelection: { classPropertyName: "useSelection", publicName: "useSelection", isSignal: true, isRequired: false, transformFunction: null }, formSchemaToColumns: { classPropertyName: "formSchemaToColumns", publicName: "formSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, uploadSchemaToColumns: { classPropertyName: "uploadSchemaToColumns", publicName: "uploadSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, _displayedColumns: { classPropertyName: "_displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, useCustomLabels: { classPropertyName: "useCustomLabels", publicName: "useCustomLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { _rowClick: "rowClick", emitCheckbox: "emitCheckbox", selectionChanged: "selectionChanged", useCustomLabels: "useCustomLabelsChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
259
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: TableBaseComponent, isStandalone: true, selector: "ng-component", inputs: { _rowOptions: { classPropertyName: "_rowOptions", publicName: "rowOptions", isSignal: true, isRequired: false, transformFunction: null }, rowOptionsMap: { classPropertyName: "rowOptionsMap", publicName: "rowOptionsMap", isSignal: true, isRequired: false, transformFunction: null }, centerCells: { classPropertyName: "centerCells", publicName: "centerCells", isSignal: true, isRequired: false, transformFunction: null }, curvy: { classPropertyName: "curvy", publicName: "curvy", isSignal: true, isRequired: false, transformFunction: null }, distinct: { classPropertyName: "distinct", publicName: "distinct", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, isExpandable: { classPropertyName: "isExpandable", publicName: "isExpandable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isDisabledFunc: { classPropertyName: "isDisabledFunc", publicName: "isDisabledFunc", isSignal: true, isRequired: false, transformFunction: null }, noItemTxt: { classPropertyName: "noItemTxt", publicName: "noItemTxt", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, expandedRowTemplate: { classPropertyName: "expandedRowTemplate", publicName: "expandedRowTemplate", isSignal: true, isRequired: false, transformFunction: null }, orderDirection: { classPropertyName: "orderDirection", publicName: "orderDirection", isSignal: true, isRequired: false, transformFunction: null }, orderField: { classPropertyName: "orderField", publicName: "orderField", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, customTemplates: { classPropertyName: "customTemplates", publicName: "customTemplates", isSignal: true, isRequired: false, transformFunction: null }, startSectionTemplate: { classPropertyName: "startSectionTemplate", publicName: "startSectionTemplate", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, placeSelectionAtRight: { classPropertyName: "placeSelectionAtRight", publicName: "placeSelectionAtRight", isSignal: true, isRequired: false, transformFunction: null }, showAdditionalColumns: { classPropertyName: "showAdditionalColumns", publicName: "showAdditionalColumns", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, showRowPointer: { classPropertyName: "showRowPointer", publicName: "showRowPointer", isSignal: true, isRequired: false, transformFunction: null }, smallerFonts: { classPropertyName: "smallerFonts", publicName: "smallerFonts", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, tableContainerClass: { classPropertyName: "tableContainerClass", publicName: "tableContainerClass", isSignal: true, isRequired: false, transformFunction: null }, useSelection: { classPropertyName: "useSelection", publicName: "useSelection", isSignal: true, isRequired: false, transformFunction: null }, formSchemaToColumns: { classPropertyName: "formSchemaToColumns", publicName: "formSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, uploadSchemaToColumns: { classPropertyName: "uploadSchemaToColumns", publicName: "uploadSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, _displayedColumns: { classPropertyName: "_displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, useCustomLabels: { classPropertyName: "useCustomLabels", publicName: "useCustomLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { _rowClick: "rowClick", emitCheckbox: "emitCheckbox", selectionChanged: "selectionChanged", useCustomLabels: "useCustomLabelsChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
257
260
  }
258
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableBaseComponent, decorators: [{
259
262
  type: Component,
@@ -283,4 +286,4 @@ class TableColFormatted extends TableCol {
283
286
  this._onHoverDelay = 0;
284
287
  }
285
288
  }
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUtMLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQVMzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxLQUFLLENBQXNCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hF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IFNlbGVjdGlvbkNoYW5nZSwgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciBhcyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGUgYXMgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHtcbiAgSU9iamVjdExpdGVyYWwsXG4gIElSb3dPcHRpb24sXG4gIElTdHJpY3RGb3JtR3JvdXAsXG4gIFNvcnRUeXBlLFxuICBUYWJsZUNvbCxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4vdGFibGUtcGxhaW4uc2VydmljZSc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBORUxFdmVudCwgTkVMTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25hdGl2ZS1ldmVudC1saXN0ZW5lcnMuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbSBleHRlbmRzIElPYmplY3RMaXRlcmFsPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSBfcm93T3B0aW9ucyA9IGlucHV0PElSb3dPcHRpb248VEl0ZW0+W10+KG51bGwsIHsgYWxpYXM6ICdyb3dPcHRpb25zJyB9KTtcbiAgcmVhZG9ubHkgcm93T3B0aW9uc01hcCA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiAoSVJvd09wdGlvbjxUSXRlbT4gfCBudWxsKVtdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkUm93VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBvcmRlckRpcmVjdGlvbiA9IGlucHV0PFNvcnRUeXBlPignYXNjJyk7XG4gIHJlYWRvbmx5IG9yZGVyRmllbGQgPSBpbnB1dDxrZXlvZiBUSXRlbT4oKTtcbiAgcmVhZG9ubHkgcGFnZVNpemUgPSBpbnB1dCgxMCk7XG4gIHJlYWRvbmx5IHN0YXJ0U2VjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+PigpO1xuICByZWFkb25seSBjb21wdXRlZFBhZ2VTaXplT3B0aW9ucyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFBhZ2VTaXplT3B0aW9ucyA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucygpLFxuICAgICAgcGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHJlc3VsdHNMZW5ndGggPSB0aGlzLnJlc3VsdHNMZW5ndGgoKTtcbiAgICBjb25zdCBvcHRpb25zID0gcGFnZVNpemVPcHRpb25zPy5sZW5ndGggPyBwYWdlU2l6ZU9wdGlvbnMgOiBkZWZhdWx0UGFnZVNpemVPcHRpb25zO1xuICAgIHJldHVybiBvcHRpb25zLmNvbmNhdChvcHRpb25zPy5sYXN0SXRlbSgpID4gcmVzdWx0c0xlbmd0aCA/IFtdIDogW3Jlc3VsdHNMZW5ndGhdKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSBzaWduYWwoWzUsIDEwLCAyMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwXSk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPigpO1xuICByZWFkb25seSBwbGFjZVNlbGVjdGlvbkF0UmlnaHQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIHN1cHBvcnQgY3VzdG9taXppbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3QgY2hlY2tib3hlcy5cbiAgcmVhZG9ubHkgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93RXhwb3J0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93Um93UG9pbnRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc21hbGxlckZvbnRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzdHJpcGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHRhYmxlQ29udGFpbmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHVzZVNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBmb3JtU2NoZW1hVG9Db2x1bW5zID0gaW5wdXQ8SUZvcm1TY2hlbWE8SVN0cmljdEZvcm1Hcm91cDxUSXRlbT4+W10+KCk7XG4gIHJlYWRvbmx5IHVwbG9hZFNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PHsgZmllbGQ/OiBrZXlvZiBUSXRlbTsgbGFiZWw/OiBzdHJpbmcgfVtdPigpO1xuXG4gIHJlYWRvbmx5IF9kaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2w8VEl0ZW0+W10+KFtdLCB7IGFsaWFzOiAnZGlzcGxheWVkQ29sdW1ucycgfSk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKT8uZmlsdGVyKCh4KSA9PiAheC5pZ25vcmUpO1xuICAgIHJldHVybiB0aGlzLnVzZUN1c3RvbUxhYmVscygpID8gdGhpcy50Uy5nbG9iYWxDb2x1bW5zRm9ybWF0dGVyKGNvbHVtbnMpIDogY29sdW1ucztcbiAgfSk7XG4gIC8qKlVzZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5ZWQgY29sdW1ucyB0aHJvdWdoIGludGVybmFsIGFjdGl2aXRpZXMgbGlrZSBtb2RpZmljYXRpb24gZnJvbSBBZGRpdGlvbmFsIGNvbHVtbnMgKi9cbiAgLy8gcHJvdGVjdGVkXG4gIHJlYWRvbmx5IG92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucyA9IHNpZ25hbDxUYWJsZUNvbDxUSXRlbT5bXT4obnVsbCk7XG5cbiAgLyoqQ29sdW1ucyB0aGF0IGFyZSBub3QgbWFya2VkIGFzIEFkZGl0aW9uYWwgQ29sdW1ucyBhbmQgYXJlIG5vdCBkaXNhYmxlZCovXG4gIHJlYWRvbmx5IHByZXNlbnRhYmxlQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4gJiYgIXguZGlzYWJsZWQpKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMge1xuICAgICAgICBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sRm9ybWF0dGVkPFRJdGVtPjtcbiAgICAgIH0sXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRjID1cbiAgICAgICAgdGhpcy5wcmVzZW50YWJsZUNvbHVtbnMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1uc1xuICAgICAgICAgID8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKVxuICAgICAgICAgIC5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sIHQ6IHgubGFiZWwgfSkpIHx8IFtdLFxuICAgICAgKTtcbiAgICBjb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHgpID0+IHguZik7XG4gICAgdGhpcy5oYW5kbGVDb2x1bW5zKGNvbHVtbnMpO1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9KTtcblxuICBAT3V0cHV0KCdyb3dDbGljaycpIF9yb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VEl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBlbWl0Q2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBmaWVsZDoga2V5b2YgVEl0ZW07XG4gICAgaXRlbTogVEl0ZW07XG4gICAgdmFsdWU6IGJvb2xlYW47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGU6IE1hdFRhYmxlPGFueT47XG4gIHJlYWRvbmx5IHJlc3VsdHNMZW5ndGg6IFNpZ25hbDxudW1iZXI+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhcnRlclNlY3Rpb25DbGFzcyA9IHNpZ25hbCgncm93IHJvdy1jb2xzLWxnLWF1dG8gZy0zIGFsaWduLWl0ZW1zLWNlbnRlcicpO1xuICByZWFkb25seSByYXdDb2x1bW5zID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+XG4gICAgdGhpcy50Uy5nZXRSYXdGaWVsZHMoXG4gICAgICB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgdGhpcy5oYXNSb3dPcHRpb25zKCksXG4gICAgICB0aGlzLnVzZVNlbGVjdGlvbigpLFxuICAgICAgdGhpcy5wbGFjZVNlbGVjdGlvbkF0UmlnaHQoKSxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRFbGVtZW50ID0gc2lnbmFsPFRJdGVtPihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRJdGVtPih0cnVlLCBbXSk7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uQ2hhbmdlZCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zU2lnbmFsID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKCBcbiAgICAgIG1hcCgocikgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpLFxuICAgICAgc3RhcnRXaXRoKFtdKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2VkID1vdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkKVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjZWxsRm9ybWF0dGVyTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEl0ZW1dPzogUGFydGlhbDxUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT4+O1xuICB9ID0ge307XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyB0UyA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuICByZWFkb25seSB1c2VDdXN0b21MYWJlbHMgPSBtb2RlbCh0cnVlKTtcblxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1zU2lnbmFsKCkubGVuZ3RoID09IHRoaXMuZGF0YSgpPy5sZW5ndGgpO1xuICByZWFkb25seSBpc0FueVNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1zU2lnbmFsKCkubGVuZ3RoID4gMCk7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBjb21wdXRlZDxJUm93T3B0aW9uPFRJdGVtPltdPigoKSA9PlxuICAgIHRoaXMuX3Jvd09wdGlvbnMoKT8uZmlsdGVyKCh4KSA9PiAhIXggJiYgIXguaWdub3JlKSxcbiAgKTtcbiAgcmVhZG9ubHkgaGFzUm93T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5yb3dPcHRpb25zKCk/Lmxlbmd0aCB8fCAhIXRoaXMucm93T3B0aW9uc01hcCgpKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgYDtcbiAgfVxuXG4gIGZpZWxkc0NoYW5nZWQoJGV2ZW50OiB7IG5GaWVsZHM6IFRhYmxlQ29sW107IGFsbEZpZWxkczogVGFibGVDb2xbXSB9KSB7XG4gICAgY29uc3QgY29scyA9ICRldmVudC5uRmllbGRzO1xuICAgIHRoaXMub3ZlcnJpZGVEaXNwbGF5ZWRDb2x1bW5zLnNldChcbiAgICAgIGNvbHNcbiAgICAgICAgLmZpbHRlcigoeCkgPT4gISh4LnR5cGUgPT0gJ2J0bnMnICYmIHguc3RpY2t5KSlcbiAgICAgICAgLmNvbmNhdChjb2xzLmZpbHRlcigoeCkgPT4geC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5tYXAoKHgpID0+IHtcbiAgICAgICAgICBpZiAoeC50eXBlID09PSAnbnVtYmVyJykgeC5mb3JtYXR0ZXIgPSB0aGlzLnVTLm1vbmV5UGFyc2VyO1xuICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSB7XG4gICAgcmV0dXJuIChzdGF0ZTogYm9vbGVhbikgPT4gKGNvbC5idG4ubG9hZGluZyA9IHN0YXRlKTtcbiAgfVxuICByZWFkb25seSBkYXRhOiBXcml0YWJsZVNpZ25hbDxUSXRlbVtdPjtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29sdW1ucyA9IChjb2x1bW5zOiBUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGlmICghY29sdW1ucz8ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgY2VsbHNUb0NoZWNrRm9yOiB7IFtrIGluIGtleW9mIFRJdGVtXT86IG51bWJlciB9ID0ge307XG4gICAgLy8gY29uc3QgZGF0ZUZpZWxkcyA9IHsgY3JlYXRlZE9uOiAxLCB1cGRhdGVkT246IDEgfTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29sdW1ucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBjb2x1bW5zW2luZGV4XTtcbiAgICAgIGlmIChcbiAgICAgICAgIShcbiAgICAgICAgICBpdGVtLnByZXZpZXdPbkhvdmVyID09PSBmYWxzZSB8fFxuICAgICAgICAgICghaXRlbS5vbkhvdmVySGFuZGxlciAmJiAhdGhpcy50Uy5nZW5lcmFsQ29sdW1uUHJvcE1hcFtpdGVtLmZdPy5vbkhvdmVySGFuZGxlcilcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJGdW5jdGlvbiA9IChldmVudCwgcm93KSA9PlxuICAgICAgICAgIChpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXIpLmFjdGlvbihcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICk7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJEZWxheSA9IChcbiAgICAgICAgICBpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXJcbiAgICAgICAgKS5kZWxheTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLm5vRm9ybWF0IHx8IGl0ZW0uZm9ybWF0dGVyIHx8IGl0ZW0uZm9ybWF0dGVyUm93KSB7XG4gICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtpdGVtLmZdID0ge1xuICAgICAgICAgIG5vRm9ybWF0OiBpdGVtLm5vRm9ybWF0LFxuICAgICAgICAgIGZvcm1hdHRlcjogaXRlbS5mb3JtYXR0ZXIsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2F2ZWRDb25maWcgPSB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXTtcbiAgICAgIGlmIChzYXZlZENvbmZpZykge1xuICAgICAgICBpdGVtLm5vRm9ybWF0ID0gc2F2ZWRDb25maWcubm9Gb3JtYXQ7XG4gICAgICAgIGl0ZW0uZm9ybWF0dGVyID0gc2F2ZWRDb25maWcuZm9ybWF0dGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGl0ZW1GaWVsZExvd2VyID0gaXRlbS5mPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtRmllbGRMb3dlciA9PSAnaWQnIHx8XG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIuaW5jbHVkZXMoJ3llYXInKSB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCdhZ2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICBpdGVtLm5vRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IGl0ZW07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2VsbHNUb0NoZWNrRm9yW2l0ZW0uZl0gPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGEoKSkgcmV0dXJuO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjZWxsc1RvQ2hlY2tGb3InLCBKU09OLnN0cmluZ2lmeShjZWxsc1RvQ2hlY2tGb3IpKTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLmRhdGEoKSkge1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhjZWxsc1RvQ2hlY2tGb3IpLmxlbmd0aCkgYnJlYWs7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNvbHVtbnNbY2VsbHNUb0NoZWNrRm9yW2tleV1dO1xuICAgICAgICBjb25zdCB0eXBlbyA9IHR5cGVvZiByb3dba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvID09ICdib29sZWFuJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy55ZXNOb0NlbGxGb3JtYXR0ZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlbyA9PSAnbnVtYmVyJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRUaW1lVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmZ1bGxEYXRlVGltZTtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRlVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmRhdGVGb3JtYXQ7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0geyBub0Zvcm1hdDogdHJ1ZSB9O1xuICB9O1xuXG4gIG91dHB1dENoZWNrYm94KGZpZWxkOiBrZXlvZiBUSXRlbSwgaXRlbTogVEl0ZW0sIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmVtaXRDaGVja2JveC5lbWl0KHsgZmllbGQsIGl0ZW0sIHZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgYWxsVGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5kYXRhKCk/LlswXSB8fCB7fSksXG4gICAgICBkaXNwbGF5ZWRDb2x1bW5zTWFwID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zTWFwKCksXG4gICAgICBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCgpO1xuXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgZSA9IGRpc3BsYXllZENvbHVtbnNNYXBba107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZSxcbiAgICAgICAgICBmOiBrIGFzIGFueSxcbiAgICAgICAgICB0OiBlPy50IHx8IHRoaXMudVMuZm9ybWF0RmllbGQoayksXG4gICAgICAgICAgYWN0aXZlOiAhIWNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcFtrXSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICAheC5kaXNhYmxlZCAmJlxuICAgICAgICAgICEoeD8uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdpZCcpICYmIHg/LmY/LnRvU3RyaW5nKCkubGVuZ3RoID09PSAyKSxcbiAgICAgIClcbiAgICAgIC5zb3J0MigndCcsIHRydWUpO1xuICB9KTtcblxuICByb3dDbGljayhlOiBUSXRlbSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQ7XG4gIH1cbiAgcmVhZG9ubHkgZm9ybU9wdGlvbnNNYXAgPSBzaWduYWwoKHJvdzogVEl0ZW0pID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5yb3dPcHRpb25zTWFwKCk/Lihyb3cpPy5maWx0ZXIoKHgpID0+ICEheCAmJiAheC5pZ25vcmUpO1xuICAgIHJldHVybiBvcHRpb25zPy5sZW5ndGggPyBvcHRpb25zIDogbnVsbDtcbiAgfSk7XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG5cbmNsYXNzIFRhYmxlQ29sRm9ybWF0dGVkPFRSb3c+IGV4dGVuZHMgVGFibGVDb2w8VFJvdz4ge1xuICBfb25Ib3ZlckZ1bmN0aW9uPzogTkVMTW91c2VFdmVudEhhbmRsZXI8VFJvdz5bJ2FjdGlvbiddO1xuICBfb25Ib3ZlckRlbGF5PzogbnVtYmVyID0gMDtcbn1cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUtMLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQVMzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxLQUFLLENBQXNCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hF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Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPOztBQXdOcEIsTUFBTSxpQkFBd0IsU0FBUSxRQUFjO0lBQXBEOztRQUVFLGtCQUFhLEdBQVksQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbkNoYW5nZSwgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciBhcyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGUgYXMgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHtcbiAgSU9iamVjdExpdGVyYWwsXG4gIElSb3dPcHRpb24sXG4gIElTdHJpY3RGb3JtR3JvdXAsXG4gIFNvcnRUeXBlLFxuICBUYWJsZUNvbCxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4vdGFibGUtcGxhaW4uc2VydmljZSc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBORUxFdmVudCwgTkVMTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25hdGl2ZS1ldmVudC1saXN0ZW5lcnMuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbSBleHRlbmRzIElPYmplY3RMaXRlcmFsPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSBfcm93T3B0aW9ucyA9IGlucHV0PElSb3dPcHRpb248VEl0ZW0+W10+KG51bGwsIHsgYWxpYXM6ICdyb3dPcHRpb25zJyB9KTtcbiAgcmVhZG9ubHkgcm93T3B0aW9uc01hcCA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiAoSVJvd09wdGlvbjxUSXRlbT4gfCBudWxsKVtdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkUm93VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBvcmRlckRpcmVjdGlvbiA9IGlucHV0PFNvcnRUeXBlPignYXNjJyk7XG4gIHJlYWRvbmx5IG9yZGVyRmllbGQgPSBpbnB1dDxrZXlvZiBUSXRlbT4oKTtcbiAgcmVhZG9ubHkgcGFnZVNpemUgPSBpbnB1dCgxMCk7XG4gIHJlYWRvbmx5IGN1c3RvbVRlbXBsYXRlcyA9IGlucHV0PHsgW3ggaW4ga2V5b2YgVEl0ZW1dPzogVGVtcGxhdGVSZWY8YW55PiB9PigpO1xuICByZWFkb25seSBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zKCksXG4gICAgICByZXN1bHRzTGVuZ3RoID0gdGhpcy5yZXN1bHRzTGVuZ3RoKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhZ2VTaXplT3B0aW9ucz8ubGVuZ3RoID8gcGFnZVNpemVPcHRpb25zIDogZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQob3B0aW9ucz8ubGFzdEl0ZW0oKSA+IHJlc3VsdHNMZW5ndGggPyBbXSA6IFtyZXN1bHRzTGVuZ3RoXSk7XG4gIH0pO1xuICByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gc2lnbmFsKFs1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMF0pO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oKTtcbiAgcmVhZG9ubHkgcGxhY2VTZWxlY3Rpb25BdFJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBzdXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0IGNoZWNrYm94ZXMuXG4gIHJlYWRvbmx5IHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0V4cG9ydCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1Jvd1BvaW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNtYWxsZXJGb250cyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RyaXBlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0YWJsZUNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PElGb3JtU2NoZW1hPElTdHJpY3RGb3JtR3JvdXA8VEl0ZW0+PltdPigpO1xuICByZWFkb25seSB1cGxvYWRTY2hlbWFUb0NvbHVtbnMgPSBpbnB1dDx7IGZpZWxkPzoga2V5b2YgVEl0ZW07IGxhYmVsPzogc3RyaW5nIH1bXT4oKTtcblxuICByZWFkb25seSBfZGlzcGxheWVkQ29sdW1ucyA9IGlucHV0PFRhYmxlQ29sPFRJdGVtPltdPihbXSwgeyBhbGlhczogJ2Rpc3BsYXllZENvbHVtbnMnIH0pO1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zKCk/LmZpbHRlcigoeCkgPT4gIXguaWdub3JlKTtcbiAgICByZXR1cm4gdGhpcy51c2VDdXN0b21MYWJlbHMoKSA/IHRoaXMudFMuZ2xvYmFsQ29sdW1uc0Zvcm1hdHRlcihjb2x1bW5zKSA6IGNvbHVtbnM7XG4gIH0pO1xuICAvKipVc2VkIHRvIHVwZGF0ZSB0aGUgZGlzcGxheWVkIGNvbHVtbnMgdGhyb3VnaCBpbnRlcm5hbCBhY3Rpdml0aWVzIGxpa2UgbW9kaWZpY2F0aW9uIGZyb20gQWRkaXRpb25hbCBjb2x1bW5zICovXG4gIC8vIHByb3RlY3RlZFxuICByZWFkb25seSBvdmVycmlkZURpc3BsYXllZENvbHVtbnMgPSBzaWduYWw8VGFibGVDb2w8VEl0ZW0+W10+KG51bGwpO1xuXG4gIC8qKkNvbHVtbnMgdGhhdCBhcmUgbm90IG1hcmtlZCBhcyBBZGRpdGlvbmFsIENvbHVtbnMgYW5kIGFyZSBub3QgZGlzYWJsZWQqL1xuICByZWFkb25seSBwcmVzZW50YWJsZUNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8uZmlsdGVyKCh4KSA9PiAheC5hZGRpdGlvbmFsQ29sdW1uICYmICF4LmRpc2FibGVkKSksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykpKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwID0gY29tcHV0ZWQoKCkgPT5cbiAgICBjbG9uZURlZXAoXG4gICAgICB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpPy50b01hcCgnZicpIGFzIHtcbiAgICAgICAgW2sgaW4ga2V5b2YgVEl0ZW1dOiBUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT47XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2xGb3JtYXR0ZWQ8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBkYyA9XG4gICAgICAgIHRoaXMucHJlc2VudGFibGVDb2x1bW5zKCk/Lm1hcCgoYykgPT4ge1xuICAgICAgICAgIGlmICghYy50KSB7XG4gICAgICAgICAgICBpZiAoYy50eXBlID09ICdidXR0b24nKSBjLnQgPSAnQWN0aW9uJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMudHlwZSA9PSAnYnRucycpIGMudCA9ICdBY3Rpb25zJztcbiAgICAgICAgICAgIGMuc3RpY2t5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pIHx8IFtdLFxuICAgICAgb3ZlcnJpZGVDb2x1bW5zID0gdGhpcy5vdmVycmlkZURpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIGZvcm1TY2hlbWFUb0NvbHVtbnMgPSB0aGlzLmZvcm1TY2hlbWFUb0NvbHVtbnMoKSxcbiAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1ucyA9IHRoaXMudXBsb2FkU2NoZW1hVG9Db2x1bW5zKCk7XG4gICAgbGV0IGNvbHVtbnMgPSAob3ZlcnJpZGVDb2x1bW5zPy5sZW5ndGggPyBvdmVycmlkZUNvbHVtbnMgOiBkYylcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIGZvcm1TY2hlbWFUb0NvbHVtbnM/Lm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICBmOiB4LmZpZWxkIGFzIFRhYmxlQ29sPFRJdGVtPlsnZiddLFxuICAgICAgICAgIHQ6IHgubGFiZWwsXG4gICAgICAgICAgZm9ybWF0dGVyOiB4LnRhYmxlRm9ybWF0dGVyLFxuICAgICAgICB9KSkgfHwgW10sXG4gICAgICApXG4gICAgICAuY29uY2F0KFxuICAgICAgICB1cGxvYWRTY2hlbWFUb0NvbHVtbnNcbiAgICAgICAgICA/LmZpbHRlcigoeCkgPT4geC5maWVsZClcbiAgICAgICAgICAubWFwKCh4KSA9PiAoeyBmOiB4LmZpZWxkIGFzIFRhYmxlQ29sPFRJdGVtPlsnZiddLCB0OiB4LmxhYmVsIH0pKSB8fCBbXSxcbiAgICAgICk7XG4gICAgY29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKCh4KSA9PiB4LmYpO1xuICAgIHRoaXMuaGFuZGxlQ29sdW1ucyhjb2x1bW5zKTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfSk7XG5cbiAgQE91dHB1dCgncm93Q2xpY2snKSBfcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuICBAT3V0cHV0KCkgZW1pdENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmllbGQ6IGtleW9mIFRJdGVtO1xuICAgIGl0ZW06IFRJdGVtO1xuICAgIHZhbHVlOiBib29sZWFuO1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xuICByZWFkb25seSByZXN1bHRzTGVuZ3RoOiBTaWduYWw8bnVtYmVyPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0ZXJTZWN0aW9uQ2xhc3MgPSBzaWduYWwoJ3JvdyByb3ctY29scy1sZy1hdXRvIGctMyBhbGlnbi1pdGVtcy1jZW50ZXInKTtcbiAgcmVhZG9ubHkgcmF3Q29sdW1ucyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PlxuICAgIHRoaXMudFMuZ2V0UmF3RmllbGRzKFxuICAgICAgdGhpcy5jb21wdXRlZERpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIHRoaXMuaGFzUm93T3B0aW9ucygpLFxuICAgICAgdGhpcy51c2VTZWxlY3Rpb24oKSxcbiAgICAgIHRoaXMucGxhY2VTZWxlY3Rpb25BdFJpZ2h0KCksXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSgpLFxuICAgICksXG4gICk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkRWxlbWVudCA9IHNpZ25hbDxUSXRlbT4obnVsbCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUSXRlbT4odHJ1ZSwgW10pO1xuICBwcm90ZWN0ZWQgX3NlbGVjdGlvbkNoYW5nZWQgPSB0b1NpZ25hbCh0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtc1NpZ25hbCA9IHRvU2lnbmFsKFxuICAgIHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQucGlwZShcbiAgICAgIG1hcCgocikgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpLFxuICAgICAgc3RhcnRXaXRoKFtdKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2VkID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zZWxlY3Rpb24uY2hhbmdlZCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNlbGxGb3JtYXR0ZXJNYXA6IHtcbiAgICBbayBpbiBrZXlvZiBUSXRlbV0/OiBQYXJ0aWFsPFRhYmxlQ29sRm9ybWF0dGVkPFRJdGVtPj47XG4gIH0gPSB7fTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHRTID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUxhYmVscyA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIHJlYWRvbmx5IGlzQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPT0gdGhpcy5kYXRhKCk/Lmxlbmd0aCk7XG4gIHJlYWRvbmx5IGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPiAwKTtcbiAgcmVhZG9ubHkgcm93T3B0aW9ucyA9IGNvbXB1dGVkPElSb3dPcHRpb248VEl0ZW0+W10+KCgpID0+XG4gICAgdGhpcy5fcm93T3B0aW9ucygpPy5maWx0ZXIoKHgpID0+ICEheCAmJiAheC5pZ25vcmUpLFxuICApO1xuICByZWFkb25seSBoYXNSb3dPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLnJvd09wdGlvbnMoKT8ubGVuZ3RoIHx8ICEhdGhpcy5yb3dPcHRpb25zTWFwKCkpO1xuXG4gIC8qKiBUaGUgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBvbiB0aGUgcGFzc2VkIHJvdyAqL1xuICBjaGVja2JveExhYmVsKHJvdz86IFRJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAoIXJvdykgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdykgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IHJvdyBgO1xuICB9XG5cbiAgZmllbGRzQ2hhbmdlZCgkZXZlbnQ6IHsgbkZpZWxkczogVGFibGVDb2xbXTsgYWxsRmllbGRzOiBUYWJsZUNvbFtdIH0pIHtcbiAgICBjb25zdCBjb2xzID0gJGV2ZW50Lm5GaWVsZHM7XG4gICAgdGhpcy5vdmVycmlkZURpc3BsYXllZENvbHVtbnMuc2V0KFxuICAgICAgY29sc1xuICAgICAgICAuZmlsdGVyKCh4KSA9PiAhKHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAuY29uY2F0KGNvbHMuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2J0bnMnICYmIHguc3RpY2t5KSlcbiAgICAgICAgLm1hcCgoeCkgPT4ge1xuICAgICAgICAgIGlmICh4LnR5cGUgPT09ICdudW1iZXInKSB4LmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXRBY3Rpb25TdGF0dXNDYWxsYmFjayhjb2wpIHtcbiAgICByZXR1cm4gKHN0YXRlOiBib29sZWFuKSA9PiAoY29sLmJ0bi5sb2FkaW5nID0gc3RhdGUpO1xuICB9XG4gIHJlYWRvbmx5IGRhdGE6IFdyaXRhYmxlU2lnbmFsPFRJdGVtW10+O1xuXG4gIHByb3RlY3RlZCBoYW5kbGVDb2x1bW5zID0gKGNvbHVtbnM6IFRhYmxlQ29sRm9ybWF0dGVkPFRJdGVtPltdKSA9PiB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgaWYgKCFjb2x1bW5zPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGN1c3RvbVRlbXBsYXRlcyA9IHRoaXMuY3VzdG9tVGVtcGxhdGVzKCk7XG4gICAgY29uc3QgY2VsbHNUb0NoZWNrRm9yOiB7IFtrIGluIGtleW9mIFRJdGVtXT86IG51bWJlciB9ID0ge307XG4gICAgLy8gY29uc3QgZGF0ZUZpZWxkcyA9IHsgY3JlYXRlZE9uOiAxLCB1cGRhdGVkT246IDEgfTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29sdW1ucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBjb2x1bW5zW2luZGV4XTtcbiAgICAgIGl0ZW0uY3VzdG9tVGVtcGxhdGUgPSBjdXN0b21UZW1wbGF0ZXNbaXRlbS5mXTtcbiAgICAgIGlmIChcbiAgICAgICAgIShcbiAgICAgICAgICBpdGVtLnByZXZpZXdPbkhvdmVyID09PSBmYWxzZSB8fFxuICAgICAgICAgICghaXRlbS5vbkhvdmVySGFuZGxlciAmJiAhdGhpcy50Uy5nZW5lcmFsQ29sdW1uUHJvcE1hcFtpdGVtLmZdPy5vbkhvdmVySGFuZGxlcilcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJGdW5jdGlvbiA9IChldmVudCwgcm93KSA9PlxuICAgICAgICAgIChpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXIpLmFjdGlvbihcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICk7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJEZWxheSA9IChcbiAgICAgICAgICBpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXJcbiAgICAgICAgKS5kZWxheTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLm5vRm9ybWF0IHx8IGl0ZW0uZm9ybWF0dGVyIHx8IGl0ZW0uZm9ybWF0dGVyUm93KSB7XG4gICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtpdGVtLmZdID0ge1xuICAgICAgICAgIG5vRm9ybWF0OiBpdGVtLm5vRm9ybWF0LFxuICAgICAgICAgIGZvcm1hdHRlcjogaXRlbS5mb3JtYXR0ZXIsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2F2ZWRDb25maWcgPSB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXTtcbiAgICAgIGlmIChzYXZlZENvbmZpZykge1xuICAgICAgICBpdGVtLm5vRm9ybWF0ID0gc2F2ZWRDb25maWcubm9Gb3JtYXQ7XG4gICAgICAgIGl0ZW0uZm9ybWF0dGVyID0gc2F2ZWRDb25maWcuZm9ybWF0dGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGl0ZW1GaWVsZExvd2VyID0gaXRlbS5mPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtRmllbGRMb3dlciA9PSAnaWQnIHx8XG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIuaW5jbHVkZXMoJ3llYXInKSB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCdhZ2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICBpdGVtLm5vRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IGl0ZW07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2VsbHNUb0NoZWNrRm9yW2l0ZW0uZl0gPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGEoKSkgcmV0dXJuO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjZWxsc1RvQ2hlY2tGb3InLCBKU09OLnN0cmluZ2lmeShjZWxsc1RvQ2hlY2tGb3IpKTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLmRhdGEoKSkge1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhjZWxsc1RvQ2hlY2tGb3IpLmxlbmd0aCkgYnJlYWs7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNvbHVtbnNbY2VsbHNUb0NoZWNrRm9yW2tleV1dO1xuICAgICAgICBjb25zdCB0eXBlbyA9IHR5cGVvZiByb3dba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvID09ICdib29sZWFuJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy55ZXNOb0NlbGxGb3JtYXR0ZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlbyA9PSAnbnVtYmVyJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRUaW1lVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmZ1bGxEYXRlVGltZTtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRlVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmRhdGVGb3JtYXQ7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0geyBub0Zvcm1hdDogdHJ1ZSB9O1xuICB9O1xuXG4gIG91dHB1dENoZWNrYm94KGZpZWxkOiBrZXlvZiBUSXRlbSwgaXRlbTogVEl0ZW0sIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmVtaXRDaGVja2JveC5lbWl0KHsgZmllbGQsIGl0ZW0sIHZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgYWxsVGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5kYXRhKCk/LlswXSB8fCB7fSksXG4gICAgICBkaXNwbGF5ZWRDb2x1bW5zTWFwID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zTWFwKCksXG4gICAgICBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCgpO1xuXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgZSA9IGRpc3BsYXllZENvbHVtbnNNYXBba107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZSxcbiAgICAgICAgICBmOiBrIGFzIGFueSxcbiAgICAgICAgICB0OiBlPy50IHx8IHRoaXMudVMuZm9ybWF0RmllbGQoayksXG4gICAgICAgICAgYWN0aXZlOiAhIWNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcFtrXSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICAheC5kaXNhYmxlZCAmJlxuICAgICAgICAgICEoeD8uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdpZCcpICYmIHg/LmY/LnRvU3RyaW5nKCkubGVuZ3RoID09PSAyKSxcbiAgICAgIClcbiAgICAgIC5zb3J0MigndCcsIHRydWUpO1xuICB9KTtcblxuICByb3dDbGljayhlOiBUSXRlbSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQ7XG4gIH1cbiAgcmVhZG9ubHkgZm9ybU9wdGlvbnNNYXAgPSBzaWduYWwoKHJvdzogVEl0ZW0pID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5yb3dPcHRpb25zTWFwKCk/Lihyb3cpPy5maWx0ZXIoKHgpID0+ICEheCAmJiAheC5pZ25vcmUpO1xuICAgIHJldHVybiBvcHRpb25zPy5sZW5ndGggPyBvcHRpb25zIDogbnVsbDtcbiAgfSk7XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG5cbmNsYXNzIFRhYmxlQ29sRm9ybWF0dGVkPFRSb3c+IGV4dGVuZHMgVGFibGVDb2w8VFJvdz4ge1xuICBfb25Ib3ZlckZ1bmN0aW9uPzogTkVMTW91c2VFdmVudEhhbmRsZXI8VFJvdz5bJ2FjdGlvbiddO1xuICBfb25Ib3ZlckRlbGF5PzogbnVtYmVyID0gMDtcbn1cbiJdfQ==