@ng-nest/ui 18.0.12 → 18.0.13

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.
@@ -491,6 +491,7 @@ export interface XTableConfig {
491
491
  loading?: boolean;
492
492
  showHeader?: boolean;
493
493
  headerPosition?: 'top' | 'bottom' | 'top-bottom';
494
+ bodyInnerHTML?: boolean;
494
495
  virtualScroll?: boolean;
495
496
  rowHeight?: number;
496
497
  itemSize?: number;
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const X_CONFIG = new InjectionToken('x-config');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvY29yZS9jb25maWcvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2Qy9DLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVSxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgWFRoZW1lIH0gZnJvbSAnLi4vdGhlbWUnO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgWFNpemUsXHJcbiAgWFR5cGUsXHJcbiAgWEVmZmVjdCxcclxuICBYTnVtYmVyLFxyXG4gIFhQb3NpdGlvbkxlZnRSaWdodCxcclxuICBYSnVzdGlmeSxcclxuICBYU2hhcGUsXHJcbiAgWEZpdCxcclxuICBYU2hhZG93LFxyXG4gIFhUcmlnZ2VyLFxyXG4gIFhEaXNwbGF5RGlyZWN0aW9uLFxyXG4gIFhDb3JuZXIsXHJcbiAgWERpcmVjdGlvbixcclxuICBYUGxhY2UsXHJcbiAgWFBvc2l0aW9uLFxyXG4gIFhQbGFjZW1lbnQsXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhTdGF0dXMsXHJcbiAgWEFsaWduLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYU3R5bGVNYXBcclxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g57uE5Lu25ZKM5Li76aKY5YWo5bGA6YWN572u5L+h5oGvXHJcbiAqIEBlbl9VUyBDb21wb25lbnQgYW5kIHRoZW1lIGdsb2JhbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnu4Tku7bphY3nva7kv6Hmga9cclxuICAgKiBAZW5fVVMgQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb25cclxuICAgKi9cclxuICBjb21wb25lbnRzPzogWENvbXBvbmVudENvbmZpZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5Li76aKY5YWo6YWN572u5L+h5oGvXHJcbiAgICogQGVuX1VTIHRoZW1lIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb25cclxuICAgKi9cclxuICB0aGVtZT86IFhUaGVtZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgWENvbmZpZ0tleSA9IGtleW9mIFhDb25maWc7XHJcbmV4cG9ydCB0eXBlIFhDb21wb25lbnRDb25maWdLZXkgPSBrZXlvZiBYQ29tcG9uZW50Q29uZmlnO1xyXG5leHBvcnQgY29uc3QgWF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48WENvbmZpZz4oJ3gtY29uZmlnJyk7XHJcblxyXG4vKipcclxuICogQHpoX0NOIOe7hOS7tuWFqOWxgOmFjee9rlxyXG4gKiBAZW5fVVMgR2xvYmFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYQ29tcG9uZW50Q29uZmlnIHtcclxuICBhZmZpeD86IFhBZmZpeENvbmZpZztcclxuICBhbGVydD86IFhBbGVydENvbmZpZztcclxuICBhbmNob3I/OiBYQW5jaG9yQ29uZmlnO1xyXG4gIGF2YXRhcj86IFhBdmF0YXJDb25maWc7XHJcbiAgYXV0b0NvbXBsZXRlPzogWEF1dG9Db21wbGV0ZUNvbmZpZztcclxuICBiYWNrVG9wPzogWEJhY2tUb3BDb25maWc7XHJcbiAgYmFkZ2U/OiBYQmFkZ2VDb25mZ2lnO1xyXG4gIGJ1dHRvbj86IFhCdXR0b25Db25maWc7XHJcbiAgYnV0dG9ucz86IFhCdXR0b25zQ29uZmlnO1xyXG4gIGNhbGVuZGFyPzogWENhbGVuZGFyQ29uZmlnO1xyXG4gIGNhcmQ/OiBYQ2FyZENvbmZpZztcclxuICBjYXJvdXNlbD86IFhDYXJvdXNlbENvbmZpZztcclxuICBjYXNjYWRlPzogWENhc2NhZGVDb25maWc7XHJcbiAgY2hlY2tib3g/OiBYQ2hlY2tib3hDb25maWc7XHJcbiAgY29sbGFwc2U/OiBYQ29sbGFwc2VDb25maWc7XHJcbiAgY29sb3I/OiBYQ29sb3JDb25maWc7XHJcbiAgY29sb3JQaWNrZXI/OiBYQ29sb3JQaWNrZXJDb25maWc7XHJcbiAgY29tbWVudD86IFhDb21tZW50Q29uZmlnO1xyXG4gIGNvbnRhaW5lcj86IFhDb250YWluZXJDb25maWc7XHJcbiAgaGVhZGVyPzogWEhlYWRlckNvbmZpZztcclxuICBhc2lkZT86IFhBc2lkZUNvbmZpZztcclxuICBmb290ZXI/OiBYRm9vdGVyQ29uZmlnO1xyXG4gIGNydW1iPzogWENydW1iQ29tZmlnO1xyXG4gIGRhdGVQaWNrZXI/OiBYRGF0ZVBpY2tlckNvbmZpZztcclxuICBkYXRlUmFuZ2U/OiBYRGF0ZVJhbmdlQ29uZmlnO1xyXG4gIGRpYWxvZz86IFhEaWFsb2dDb25maWc7XHJcbiAgZHJhd2VyPzogWERyYXdlckNvbmZpZztcclxuICBkcm9wZG93bj86IFhEcm9wZG93bkNvbmZpZztcclxuICBkZXNjcmlwdGlvbj86IFhEZXNjcmlwdGlvbkNvbmZpZztcclxuICBlbXB0eT86IFhFbXB0eUNvbmZpZztcclxuICBmaW5kPzogWEZpbmRDb25maWc7XHJcbiAgZm9ybT86IFhGb3JtQ29uZmlnO1xyXG4gIGhpZ2hsaWdodD86IFhIaWdobGlnaHRDb25maWc7XHJcbiAgaWNvbj86IFhJY29uQ29uZmlnO1xyXG4gIGlubmVyPzogWElubmVyQ29uZmlnO1xyXG4gIGlucHV0PzogWElucHV0Q29uZmlnO1xyXG4gIGlucHV0R3JvdXA/OiBYSW5wdXRHcm91cENvbmZpZztcclxuICBpbnB1dE51bWJlcj86IFhJbnB1dE51bWJlckNvbmZpZztcclxuICBpbWFnZT86IFhJbWFnZUNvbmZpZztcclxuICBjb2w/OiBYQ29sQ29uZmlnO1xyXG4gIHJvdz86IFhSb3dDb25maWc7XHJcbiAgcmlwcGxlPzogWFJpcHBsZUNvbmZpZztcclxuICBsaW5rPzogWExpbmtDb25maWc7XHJcbiAgbGlzdD86IFhMaXN0Q29uZmlnO1xyXG4gIGxpc3RPcHRpb24/OiBYTGlzdE9wdGlvbkNvbmZpZztcclxuICBsb2FkaW5nPzogWExvYWRpbmdDb25maWc7XHJcbiAgbWVudT86IFhNZW51Q29uZmlnO1xyXG4gIG1lc3NhZ2U/OiBYTWVzc2FnZUNvbmZpZztcclxuICBtZXNzYWdlQm94PzogWE1lc3NhZ2VCb3hDb25maWc7XHJcbiAgbm90aWZpY2F0aW9uPzogWE5vdGlmaWNhdGlvbkNvbmZpZztcclxuICBvdXRsZXQ/OiBYT3V0bGV0Q29uZmlnO1xyXG4gIHBhZ2VIZWFkZXI/OiBYUGFnZUhlYWRlckNvbmZpZztcclxuICBwYWdpbmF0aW9uPzogWFBhZ2luYXRpb25Db25maWc7XHJcbiAgcGF0dGVybj86IFhQYXR0ZXJuQ29uZmlnO1xyXG4gIHBvcGNvbmZpcm0/OiBYUG9wY29uZmlybUNvbmZpZztcclxuICBwb3BvdmVyPzogWFBvcG92ZXJDb25maWc7XHJcbiAgcG9ydGFsPzogWFBvcnRhbENvbmZpZztcclxuICBwcm9ncmVzcz86IFhQcm9ncmVzc0NvbmZpbmc7XHJcbiAgcmFkaW8/OiBYUmFkaW9Db25maWc7XHJcbiAgcmF0ZT86IFhSYXRlQ29uZmlnO1xyXG4gIHJlc3VsdD86IFhSZXN1bHRDb25maWc7XHJcbiAgc2VsZWN0PzogWFNlbGVjdENvbmZpZztcclxuICBza2VsZXRvbj86IFhTa2VsZXRvbkNvbmZpZztcclxuICBzbGlkZXI/OiBYU2xpZGVyQ29uZmlnO1xyXG4gIHNsaWRlclNlbGVjdD86IFhTbGlkZXJTZWxlY3RDb25maWc7XHJcbiAgc3RhdGlzdGljPzogWFN0YXRpc3RpY0NvbmZpZztcclxuICBjb3VudGRvd24/OiBYQ291bnRkb3duQ29uZmlnO1xyXG4gIHN0ZXBzPzogWFN0ZXBzQ29uZmlnO1xyXG4gIHN3aXRjaD86IFhTd2l0Y2hDb25maWc7XHJcbiAgdGFibGU/OiBYVGFibGVDb25maWc7XHJcbiAgdGFicz86IFhUYWJzQ29uZmlnO1xyXG4gIHRhZz86IFhUYWdDb25maWc7XHJcbiAgdGV4dFJldHJhY3Q/OiBYVGV4dFJldHJhY3RDb25maWc7XHJcbiAgdGhlbWU/OiBYVGhlbWVDb25maWc7XHJcbiAgdGltZUFnbz86IFhUaW1lQWdvQ29uZmlnO1xyXG4gIHRpbWVQaWNrZXI/OiBYVGltZVBpY2tlckNvbmZpZztcclxuICB0aW1lUmFuZ2U/OiBYVGltZVJhbmdlQ29uZmlnO1xyXG4gIHRpbWVsaW5lPzogWFRpbWVsaW5lQ29uZmlnO1xyXG4gIHRvb2x0aXA/OiBYVG9vbHRpcENvbmZpZztcclxuICB0cmFuc2Zlcj86IFhUcmFuc2ZlckNvbmZpZztcclxuICB0cmVlPzogWFRyZWVDb25maWc7XHJcbiAgdHJlZUZpbGU/OiBYVHJlZUZpbGVDb25maWc7XHJcbiAgdHJlZVNlbGVjdD86IFhUcmVlU2VsZWN0Q29uZmlnO1xyXG4gIHRleHRhcmVhPzogWFRleHRhcmVhQ29uZmlnO1xyXG4gIHVwbG9hZD86IFhVcGxvYWRDb25maWc7XHJcbiAga2V5d29yZD86IFhLZXl3b3JkQ29uZmlnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhBZmZpeENvbmZpZyB7XHJcbiAgdG9wPzogc3RyaW5nO1xyXG4gIGxlZnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEFsZXJ0Q29uZmlnIHtcclxuICBlZmZlY3Q/OiBYRWZmZWN0O1xyXG4gIGhpZGVDbG9zZT86IGJvb2xlYW47XHJcbiAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gIGRpc2FibGVkQW5pbWF0aW9uPzogYm9vbGVhbjtcclxuICBkcmFnZ2FibGU/OiBib29sZWFuO1xyXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XHJcbiAgZHJhZ0hhbmRsZVRpdGxlPzogYm9vbGVhbjtcclxuICBkdXJhdGlvbj86IG51bWJlcjtcclxuICBtaW5XaWR0aD86IHN0cmluZztcclxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEFuY2hvckNvbmZpZyB7XHJcbiAgYWZmaXhUb3A/OiBzdHJpbmc7XHJcbiAgYWZmaXhCb3R0b20/OiBzdHJpbmc7XHJcbiAgYWZmaXhXaWR0aD86IHN0cmluZztcclxuICBsYXlvdXQ/OiBYUG9zaXRpb25MZWZ0UmlnaHQ7XHJcbiAganVzdGlmeT86IFhKdXN0aWZ5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhBdmF0YXJDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBzaGFwZT86IFhTaGFwZTtcclxuICBmaXQ/OiBYRml0O1xyXG4gIGdhcD86IHN0cmluZztcclxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEF1dG9Db21wbGV0ZUNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIG9ubHlTZWxlY3Q/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhCYWNrVG9wQ29uZmlnIHtcclxuICByaWdodD86IHN0cmluZztcclxuICBib3R0b20/OiBzdHJpbmc7XHJcbiAgdmlzaWJpbGl0eUhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQmFkZ2VDb25mZ2lnIHtcclxuICB0eXBlPzogWFR5cGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEJ1dHRvbkNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIHR5cGU/OiBYVHlwZTtcclxuICBwbGFpbj86IGJvb2xlYW47XHJcbiAgcm91bmQ/OiBib29sZWFuO1xyXG4gIGNpcmNsZT86IGJvb2xlYW47XHJcbiAgZmxhdD86IGJvb2xlYW47XHJcbiAgdGV4dD86IGJvb2xlYW47XHJcbiAgYXR0clR5cGU/OiAnc3VibWl0JyB8ICdidXR0b24nIHwgJ3Jlc2V0JztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQnV0dG9uc0NvbmZpZyB7XHJcbiAgc3BhY2U/OiBzdHJpbmc7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBib3hTaGFkb3c/OiBib29sZWFuO1xyXG4gIHJvdW5kPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ2FsZW5kYXJDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENhcmRDb25maWcge1xyXG4gIHNoYWRvdz86IFhTaGFkb3c7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENhcm91c2VsQ29uZmlnIHtcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIGFycm93PzogWFNoYWRvdztcclxuICBkaXJlY3Rpb24/OiBYRGlzcGxheURpcmVjdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ2FzY2FkZUNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIG5vZGVUcmlnZ2VyPzogWFRyaWdnZXI7XHJcbiAgbm9kZUhvdmVyRGVsYXk/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENoZWNrYm94Q29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENvbGxhcHNlQ29uZmlnIHtcclxuICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgZ2hvc3Q/OiBib29sZWFuO1xyXG4gIGljb25Qb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvckNvbmZpZyB7XHJcbiAgbWVyZ2U/OiBzdHJpbmc7XHJcbiAgYW1vdW50cz86IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvclBpY2tlckNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb21tZW50Q29uZmlnIHtcclxuICBjb250ZW50TWF4PzogbnVtYmVyO1xyXG4gIG1heGxlbmd0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ29udGFpbmVyQ29uZmlnIHtcclxuICBkaXJlY3Rpb24/OiBYRGlyZWN0aW9uO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhIZWFkZXJDb25maWcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQXNpZGVDb25maWcge1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhGb290ZXJDb25maWcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ3J1bWJDb21maWcge1xyXG4gIHNlcGFyYXRvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVBpY2tlckNvbmZpZyB7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhEYXRlUmFuZ2VDb25maWcge1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIHBsYWNlbWVudD86IFhDb3JuZXI7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGlhbG9nQ29uZmlnIHtcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2U7XHJcbiAgb2Zmc2V0Pzogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogc3RyaW5nO1xyXG4gIG1pbkhlaWdodD86IHN0cmluZztcclxuICBtYXhXaWR0aD86IHN0cmluZztcclxuICBtYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgZWZmZWN0PzogWEVmZmVjdDtcclxuICBzaG93Q2FuY2VsPzogYm9vbGVhbjtcclxuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xyXG4gIHNob3dDb25maXJtPzogYm9vbGVhbjtcclxuICBjb25maXJtVGV4dD86IHN0cmluZztcclxuICBiYWNrZHJvcENsb3NlPzogYm9vbGVhbjtcclxuICBkcmFnZ2FibGU/OiBib29sZWFuO1xyXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XHJcbiAgbWF4aW1pemU/OiBib29sZWFuO1xyXG4gIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgYnV0dG9uc0NlbnRlcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWERyYXdlckNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uO1xyXG4gIHNpemU/OiBzdHJpbmc7XHJcbiAgYmFja2Ryb3BDbG9zZT86IGJvb2xlYW47XHJcbiAgaGFzQmFja2Ryb3A/OiBib29sZWFuO1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRHJvcGRvd25Db25maWcge1xyXG4gIHRyaWdnZXI/OiBYVHJpZ2dlcjtcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2VtZW50O1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGVzY3JpcHRpb25Db25maWcge1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBzaXplPzogWFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEVtcHR5Q29uZmlnIHtcclxuICBpbWc/OiBYVGVtcGxhdGU7XHJcbiAgY29udGVudD86IFhUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRmluZENvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBjb2x1bW5MYWJlbD86IHN0cmluZztcclxuICBkaWFsb2dUaXRsZT86IHN0cmluZztcclxuICBkaWFsb2dDaGVja2JveExhYmVsPzogc3RyaW5nO1xyXG4gIGRpYWxvZ0NoZWNrYm94V2lkdGg/OiBzdHJpbmc7XHJcbiAgZGlhbG9nRW1wdHlDb250ZW50Pzogc3RyaW5nO1xyXG4gIGRpYWxvZ0J1dHRvbnNDZW50ZXI/OiBib29sZWFuO1xyXG4gIHRhYmxlSW5kZXg/OiBudW1iZXI7XHJcbiAgdGFibGVTaXplPzogbnVtYmVyO1xyXG4gIHRhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcbiAgdGFibGVWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICB0YWJsZVJvd0hlaWdodD86IG51bWJlcjtcclxuICB0cmVlRXhwYW5kZWRMZXZlbD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRm9ybUNvbmZpZyB7XHJcbiAgc3BhY2U/OiBzdHJpbmc7XHJcbiAgbGFiZWxTdWZmaXg/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEhpZ2hsaWdodENvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYSWNvbkNvbmZpZyB7XHJcbiAgaHJlZj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYSW5uZXJDb25maWcge1xyXG4gIHBhZGRpbmc/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0Q29uZmlnIHtcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIGljb25MYXlvdXQ/OiBYUG9zaXRpb25MZWZ0UmlnaHQ7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBpbnB1dFBhZGRpbmc/OiBzdHJpbmc7XHJcbiAgaW5wdXRJY29uUGFkZGluZz86IFhOdW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0R3JvdXBDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgY29tcGFjdD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0TnVtYmVyQ29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIGhpZGRlbkJ1dHRvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEltYWdlQ29uZmlnIHtcclxuICBwcmV2aWV3VGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ29sQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhSb3dDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFJpcHBsZUNvbmZpZyB7XHJcbiAgdHlwZT86IFhUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMaW5rQ29uZmlnIHtcclxuICB1bmRlcmxpbmU/OiBib29sZWFuO1xyXG4gIGljb25SaWdodD86IGJvb2xlYW47XHJcbiAgcHJldmVudERlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMaXN0Q29uZmlnIHtcclxuICBzZWxlY3RBbGxUZXh0Pzogc3RyaW5nO1xyXG4gIGxvYWRNb3JlVGV4dD86IHN0cmluZztcclxuICBsb2FkaW5nTW9yZVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgc2Nyb2xsSGVpZ2h0PzogbnVtYmVyO1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYTGlzdE9wdGlvbkNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMb2FkaW5nQ29uZmlnIHtcclxuICBzaXplPzogWFNpemUgfCBudW1iZXI7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XHJcbiAgekluZGV4PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhNZW51Q29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhNZXNzYWdlQ29uZmlnIHtcclxuICB0eXBlPzogWFN0YXR1cztcclxuICB3aWR0aD86IHN0cmluZztcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2U7XHJcbiAgZGlzcGxheVR5cGU/OiBzdHJpbmc7XHJcbiAgb2Zmc2V0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgaGlkZUNsb3NlPzogYm9vbGVhbjtcclxuICBzaG93SWNvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWE1lc3NhZ2VCb3hDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWE5vdGlmaWNhdGlvbkNvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYT3V0bGV0Q29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhQYWdlSGVhZGVyQ29uZmlnIHtcclxuICBiYWNrSWNvbj86IHN0cmluZztcclxuICBiYWNrVGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBzcGFjZT86IHN0cmluZztcclxuICBwYWdlTGlua1NpemU/OiBudW1iZXI7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBzaG93RWxsaXBzaXM/OiBib29sZWFuO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47XHJcbiAgc2hvd1NpemU/OiBib29sZWFuO1xyXG4gIHNob3dCYWNrZ3JvdW5kPzogYm9vbGVhbjtcclxuICBzaXplV2lkdGg/OiBzdHJpbmc7XHJcbiAgc2l6ZURhdGE/OiBudW1iZXJbXTtcclxuICBzaG93SW5wdXRTaXplPzogYm9vbGVhbjtcclxuICBpbnB1dFNpemVUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBpbnB1dFNpemVXaWR0aD86IG51bWJlcjtcclxuICBzaG93SnVtcD86IGJvb2xlYW47XHJcbiAganVtcFdpZHRoPzogc3RyaW5nO1xyXG4gIGp1bXBUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBzaW1wbGU/OiBib29sZWFuO1xyXG4gIHNpbXBsZUluZGV4V2lkdGg/OiBzdHJpbmc7XHJcbiAgaW5wdXRJbmRleFNpemVTdXJlVHlwZT86ICdlbnRlcicgfCAnYmx1cicgfCAnYm90aCc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBhdHRlcm5Db25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBvcGNvbmZpcm1Db25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBvcG92ZXJDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogc3RyaW5nO1xyXG4gIG1heFdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhQb3J0YWxDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFByb2dyZXNzQ29uZmluZyB7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHN0ZXBXaWR0aD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUmFkaW9Db25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUmF0ZUNvbmZpZyB7XHJcbiAgY29sb3I/OiBzdHJpbmcgfCB7IFtjb2xvcjogc3RyaW5nXTogKHJhdGU6IG51bWJlcikgPT4gYm9vbGVhbiB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhSZXN1bHRDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFNlbGVjdENvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBwb3J0YWxNYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgc2VsZWN0QWxsVGV4dD86IHN0cmluZztcclxuICBzZWFyY2g/OiBib29sZWFuO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcclxuICBtYXhUYWdDb3VudD86IG51bWJlcjtcclxuICBtYXhUYWdDb250ZW50PzogWFRlbXBsYXRlO1xyXG4gIHZpcnR1YWxTY3JvbGw/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhTa2VsZXRvbkNvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU2xpZGVyQ29uZmlnIHtcclxuICBhbmltYXRlZD86IGJvb2xlYW47XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIHNob3dFeHBhbmQ/OiBib29sZWFuO1xyXG4gIGF1dG9TaG93QXJyb3c/OiBib29sZWFuO1xyXG4gIHRyaWdnZXI/OiBYVHJpZ2dlcjtcclxuICBleHBhbmRNYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFNsaWRlclNlbGVjdENvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU3RhdGlzdGljQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb3VudGRvd25Db25maWcge1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU3RlcHNDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFN3aXRjaENvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUYWJsZUNvbmZpZyB7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICBzaG93SGVhZGVyPzogYm9vbGVhbjtcclxuICBoZWFkZXJQb3NpdGlvbj86ICd0b3AnIHwgJ2JvdHRvbScgfCAndG9wLWJvdHRvbSc7XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgcm93SGVpZ2h0PzogbnVtYmVyO1xyXG4gIGl0ZW1TaXplPzogbnVtYmVyO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBhbGxvd1NlbGVjdFJvdz86IGJvb2xlYW47XHJcbiAgYWxsb3dDaGVja1Jvdz86IGJvb2xlYW47XHJcbiAgcm93U2l6ZT86IFhTaXplO1xyXG4gIHNob3dQYWdpbmF0aW9uPzogYm9vbGVhbjtcclxuICB0cmVlVGFibGU/OiBib29sZWFuO1xyXG4gIGV4cGFuZGVkQWxsPzogYm9vbGVhbjtcclxuICBleHBhbmRlZExldmVsPzogbnVtYmVyO1xyXG4gIGhpZGRlblBhZ2luYXRpb25Cb3JkZXI/OiBib29sZWFuO1xyXG4gIGhpZGRlbldyYXBCb3JkZXI/OiBib29sZWFuO1xyXG4gIHNob3dFbXB0eT86IGJvb2xlYW47XHJcbiAgZW1wdHlJbWc/OiBYVGVtcGxhdGU7XHJcbiAgZW1wdHlDb250ZW50PzogWFRlbXBsYXRlO1xyXG5cclxuICBzcGFjZT86IHN0cmluZztcclxuICBwYWdlTGlua1NpemU/OiBudW1iZXI7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBzaG93RWxsaXBzaXM/OiBib29sZWFuO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47XHJcbiAgc2hvd1NpemU/OiBib29sZWFuO1xyXG4gIHNob3dCYWNrZ3JvdW5kPzogYm9vbGVhbjtcclxuICBzaXplV2lkdGg/OiBzdHJpbmc7XHJcbiAgc2l6ZURhdGE/OiBudW1iZXJbXTtcclxuICBzaG93SW5wdXRTaXplPzogYm9vbGVhbjtcclxuICBpbnB1dFNpemVUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBpbnB1dFNpemVXaWR0aD86IG51bWJlcjtcclxuICBzaG93SnVtcD86IGJvb2xlYW47XHJcbiAganVtcFdpZHRoPzogc3RyaW5nO1xyXG4gIGp1bXBUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBzaW1wbGU/OiBib29sZWFuO1xyXG4gIHNpbXBsZUluZGV4V2lkdGg/OiBzdHJpbmc7XHJcbiAgaW5wdXRJbmRleFNpemVTdXJlVHlwZT86ICdlbnRlcicgfCAnYmx1cicgfCAnYm90aCc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRhYnNDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICB0cmlnZ2VyPzogWFRyaWdnZXI7XHJcbiAgZXhwYW5kTWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUYWdDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgY2xvc2FibGU/OiBib29sZWFuO1xyXG4gIGRhcms/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUZXh0UmV0cmFjdENvbmZpZyB7XHJcbiAgbWF4PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaGVtZUNvbmZpZyB7XHJcbiAgYW1vdW50cz86IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lQWdvQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lUGlja2VyQ29uZmlnIHtcclxuICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIHVzZTEySG91cnM/OiBib29sZWFuO1xyXG4gIGRlZmF1bHROb3c/OiBib29sZWFuO1xyXG4gIGhvdXJTdGVwPzogbnVtYmVyO1xyXG4gIG1pbnV0ZVN0ZXA/OiBudW1iZXI7XHJcbiAgc2Vjb25kU3RlcD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYVGltZVJhbmdlQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lbGluZUNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIG1vZGU/OiAnbGVmdCcgfCAncmlnaHQnIHwgJ2FsdGVybmF0ZSc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRvb2x0aXBDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyYW5zZmVyQ29uZmlnIHtcclxuICB0aXRsZXM/OiBzdHJpbmdbXTtcclxuICBkcmFnPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICB0eXBlPzogJ2xpc3QnIHwgJ3RhYmxlJyB8ICd0cmVlJztcclxuICBsaXN0U3R5bGU6IFhTdHlsZU1hcCB8IFhTdHlsZU1hcFtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlQ29uZmlnIHtcclxuICBzcGFjaW5nPzogc3RyaW5nO1xyXG4gIG5vZGVIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgbm9kZUFsaWduSXRlbXM/OiBYQWxpZ247XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgb25seUxlYWY/OiBib29sZWFuO1xyXG4gIHNob3dMaW5lPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsU2Nyb2xsSGVpZ2h0Pzogc3RyaW5nO1xyXG4gIGl0ZW1TaXplPzogbnVtYmVyO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUZXh0YXJlYUNvbmZpZyB7XHJcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcclxuICBpY29uTGF5b3V0PzogWFBvc2l0aW9uTGVmdFJpZ2h0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlRmlsZUNvbmZpZyB7XHJcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHNwYWNpbmc/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVTZWxlY3RDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQb3NpdGlvblRvcEJvdHRvbTtcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgcG9ydGFsTWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHNlbGVjdEFsbFRleHQ/OiBzdHJpbmc7XHJcbiAgc2VhcmNoPzogYm9vbGVhbjtcclxuICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcclxuICBkZWJvdW5jZVRpbWU/OiBudW1iZXI7XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXI7XHJcbiAgbWF4VGFnQ29udGVudD86IFhUZW1wbGF0ZTtcclxuICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICBzaG93UGF0aD86IGJvb2xlYW47XHJcbiAgc2VwYXJhdG9yPzogc3RyaW5nO1xyXG4gIG9ubHlMZWFmPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYVXBsb2FkQ29uZmlnIHtcclxuICBkb3dubG9hZD86IGJvb2xlYW47XHJcbiAgbXVsdGlwbGVNb2RlbD86ICdjb3ZlcicgfCAnYWRkJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYS2V5d29yZENvbmZpZyB7XHJcbiAgdHlwZT86IFhUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvY29yZS9jb25maWcvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2Qy9DLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVSxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgWFRoZW1lIH0gZnJvbSAnLi4vdGhlbWUnO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgWFNpemUsXHJcbiAgWFR5cGUsXHJcbiAgWEVmZmVjdCxcclxuICBYTnVtYmVyLFxyXG4gIFhQb3NpdGlvbkxlZnRSaWdodCxcclxuICBYSnVzdGlmeSxcclxuICBYU2hhcGUsXHJcbiAgWEZpdCxcclxuICBYU2hhZG93LFxyXG4gIFhUcmlnZ2VyLFxyXG4gIFhEaXNwbGF5RGlyZWN0aW9uLFxyXG4gIFhDb3JuZXIsXHJcbiAgWERpcmVjdGlvbixcclxuICBYUGxhY2UsXHJcbiAgWFBvc2l0aW9uLFxyXG4gIFhQbGFjZW1lbnQsXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhTdGF0dXMsXHJcbiAgWEFsaWduLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYU3R5bGVNYXBcclxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g57uE5Lu25ZKM5Li76aKY5YWo5bGA6YWN572u5L+h5oGvXHJcbiAqIEBlbl9VUyBDb21wb25lbnQgYW5kIHRoZW1lIGdsb2JhbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnu4Tku7bphY3nva7kv6Hmga9cclxuICAgKiBAZW5fVVMgQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb25cclxuICAgKi9cclxuICBjb21wb25lbnRzPzogWENvbXBvbmVudENvbmZpZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5Li76aKY5YWo6YWN572u5L+h5oGvXHJcbiAgICogQGVuX1VTIHRoZW1lIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb25cclxuICAgKi9cclxuICB0aGVtZT86IFhUaGVtZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgWENvbmZpZ0tleSA9IGtleW9mIFhDb25maWc7XHJcbmV4cG9ydCB0eXBlIFhDb21wb25lbnRDb25maWdLZXkgPSBrZXlvZiBYQ29tcG9uZW50Q29uZmlnO1xyXG5leHBvcnQgY29uc3QgWF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48WENvbmZpZz4oJ3gtY29uZmlnJyk7XHJcblxyXG4vKipcclxuICogQHpoX0NOIOe7hOS7tuWFqOWxgOmFjee9rlxyXG4gKiBAZW5fVVMgR2xvYmFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYQ29tcG9uZW50Q29uZmlnIHtcclxuICBhZmZpeD86IFhBZmZpeENvbmZpZztcclxuICBhbGVydD86IFhBbGVydENvbmZpZztcclxuICBhbmNob3I/OiBYQW5jaG9yQ29uZmlnO1xyXG4gIGF2YXRhcj86IFhBdmF0YXJDb25maWc7XHJcbiAgYXV0b0NvbXBsZXRlPzogWEF1dG9Db21wbGV0ZUNvbmZpZztcclxuICBiYWNrVG9wPzogWEJhY2tUb3BDb25maWc7XHJcbiAgYmFkZ2U/OiBYQmFkZ2VDb25mZ2lnO1xyXG4gIGJ1dHRvbj86IFhCdXR0b25Db25maWc7XHJcbiAgYnV0dG9ucz86IFhCdXR0b25zQ29uZmlnO1xyXG4gIGNhbGVuZGFyPzogWENhbGVuZGFyQ29uZmlnO1xyXG4gIGNhcmQ/OiBYQ2FyZENvbmZpZztcclxuICBjYXJvdXNlbD86IFhDYXJvdXNlbENvbmZpZztcclxuICBjYXNjYWRlPzogWENhc2NhZGVDb25maWc7XHJcbiAgY2hlY2tib3g/OiBYQ2hlY2tib3hDb25maWc7XHJcbiAgY29sbGFwc2U/OiBYQ29sbGFwc2VDb25maWc7XHJcbiAgY29sb3I/OiBYQ29sb3JDb25maWc7XHJcbiAgY29sb3JQaWNrZXI/OiBYQ29sb3JQaWNrZXJDb25maWc7XHJcbiAgY29tbWVudD86IFhDb21tZW50Q29uZmlnO1xyXG4gIGNvbnRhaW5lcj86IFhDb250YWluZXJDb25maWc7XHJcbiAgaGVhZGVyPzogWEhlYWRlckNvbmZpZztcclxuICBhc2lkZT86IFhBc2lkZUNvbmZpZztcclxuICBmb290ZXI/OiBYRm9vdGVyQ29uZmlnO1xyXG4gIGNydW1iPzogWENydW1iQ29tZmlnO1xyXG4gIGRhdGVQaWNrZXI/OiBYRGF0ZVBpY2tlckNvbmZpZztcclxuICBkYXRlUmFuZ2U/OiBYRGF0ZVJhbmdlQ29uZmlnO1xyXG4gIGRpYWxvZz86IFhEaWFsb2dDb25maWc7XHJcbiAgZHJhd2VyPzogWERyYXdlckNvbmZpZztcclxuICBkcm9wZG93bj86IFhEcm9wZG93bkNvbmZpZztcclxuICBkZXNjcmlwdGlvbj86IFhEZXNjcmlwdGlvbkNvbmZpZztcclxuICBlbXB0eT86IFhFbXB0eUNvbmZpZztcclxuICBmaW5kPzogWEZpbmRDb25maWc7XHJcbiAgZm9ybT86IFhGb3JtQ29uZmlnO1xyXG4gIGhpZ2hsaWdodD86IFhIaWdobGlnaHRDb25maWc7XHJcbiAgaWNvbj86IFhJY29uQ29uZmlnO1xyXG4gIGlubmVyPzogWElubmVyQ29uZmlnO1xyXG4gIGlucHV0PzogWElucHV0Q29uZmlnO1xyXG4gIGlucHV0R3JvdXA/OiBYSW5wdXRHcm91cENvbmZpZztcclxuICBpbnB1dE51bWJlcj86IFhJbnB1dE51bWJlckNvbmZpZztcclxuICBpbWFnZT86IFhJbWFnZUNvbmZpZztcclxuICBjb2w/OiBYQ29sQ29uZmlnO1xyXG4gIHJvdz86IFhSb3dDb25maWc7XHJcbiAgcmlwcGxlPzogWFJpcHBsZUNvbmZpZztcclxuICBsaW5rPzogWExpbmtDb25maWc7XHJcbiAgbGlzdD86IFhMaXN0Q29uZmlnO1xyXG4gIGxpc3RPcHRpb24/OiBYTGlzdE9wdGlvbkNvbmZpZztcclxuICBsb2FkaW5nPzogWExvYWRpbmdDb25maWc7XHJcbiAgbWVudT86IFhNZW51Q29uZmlnO1xyXG4gIG1lc3NhZ2U/OiBYTWVzc2FnZUNvbmZpZztcclxuICBtZXNzYWdlQm94PzogWE1lc3NhZ2VCb3hDb25maWc7XHJcbiAgbm90aWZpY2F0aW9uPzogWE5vdGlmaWNhdGlvbkNvbmZpZztcclxuICBvdXRsZXQ/OiBYT3V0bGV0Q29uZmlnO1xyXG4gIHBhZ2VIZWFkZXI/OiBYUGFnZUhlYWRlckNvbmZpZztcclxuICBwYWdpbmF0aW9uPzogWFBhZ2luYXRpb25Db25maWc7XHJcbiAgcGF0dGVybj86IFhQYXR0ZXJuQ29uZmlnO1xyXG4gIHBvcGNvbmZpcm0/OiBYUG9wY29uZmlybUNvbmZpZztcclxuICBwb3BvdmVyPzogWFBvcG92ZXJDb25maWc7XHJcbiAgcG9ydGFsPzogWFBvcnRhbENvbmZpZztcclxuICBwcm9ncmVzcz86IFhQcm9ncmVzc0NvbmZpbmc7XHJcbiAgcmFkaW8/OiBYUmFkaW9Db25maWc7XHJcbiAgcmF0ZT86IFhSYXRlQ29uZmlnO1xyXG4gIHJlc3VsdD86IFhSZXN1bHRDb25maWc7XHJcbiAgc2VsZWN0PzogWFNlbGVjdENvbmZpZztcclxuICBza2VsZXRvbj86IFhTa2VsZXRvbkNvbmZpZztcclxuICBzbGlkZXI/OiBYU2xpZGVyQ29uZmlnO1xyXG4gIHNsaWRlclNlbGVjdD86IFhTbGlkZXJTZWxlY3RDb25maWc7XHJcbiAgc3RhdGlzdGljPzogWFN0YXRpc3RpY0NvbmZpZztcclxuICBjb3VudGRvd24/OiBYQ291bnRkb3duQ29uZmlnO1xyXG4gIHN0ZXBzPzogWFN0ZXBzQ29uZmlnO1xyXG4gIHN3aXRjaD86IFhTd2l0Y2hDb25maWc7XHJcbiAgdGFibGU/OiBYVGFibGVDb25maWc7XHJcbiAgdGFicz86IFhUYWJzQ29uZmlnO1xyXG4gIHRhZz86IFhUYWdDb25maWc7XHJcbiAgdGV4dFJldHJhY3Q/OiBYVGV4dFJldHJhY3RDb25maWc7XHJcbiAgdGhlbWU/OiBYVGhlbWVDb25maWc7XHJcbiAgdGltZUFnbz86IFhUaW1lQWdvQ29uZmlnO1xyXG4gIHRpbWVQaWNrZXI/OiBYVGltZVBpY2tlckNvbmZpZztcclxuICB0aW1lUmFuZ2U/OiBYVGltZVJhbmdlQ29uZmlnO1xyXG4gIHRpbWVsaW5lPzogWFRpbWVsaW5lQ29uZmlnO1xyXG4gIHRvb2x0aXA/OiBYVG9vbHRpcENvbmZpZztcclxuICB0cmFuc2Zlcj86IFhUcmFuc2ZlckNvbmZpZztcclxuICB0cmVlPzogWFRyZWVDb25maWc7XHJcbiAgdHJlZUZpbGU/OiBYVHJlZUZpbGVDb25maWc7XHJcbiAgdHJlZVNlbGVjdD86IFhUcmVlU2VsZWN0Q29uZmlnO1xyXG4gIHRleHRhcmVhPzogWFRleHRhcmVhQ29uZmlnO1xyXG4gIHVwbG9hZD86IFhVcGxvYWRDb25maWc7XHJcbiAga2V5d29yZD86IFhLZXl3b3JkQ29uZmlnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhBZmZpeENvbmZpZyB7XHJcbiAgdG9wPzogc3RyaW5nO1xyXG4gIGxlZnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEFsZXJ0Q29uZmlnIHtcclxuICBlZmZlY3Q/OiBYRWZmZWN0O1xyXG4gIGhpZGVDbG9zZT86IGJvb2xlYW47XHJcbiAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gIGRpc2FibGVkQW5pbWF0aW9uPzogYm9vbGVhbjtcclxuICBkcmFnZ2FibGU/OiBib29sZWFuO1xyXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XHJcbiAgZHJhZ0hhbmRsZVRpdGxlPzogYm9vbGVhbjtcclxuICBkdXJhdGlvbj86IG51bWJlcjtcclxuICBtaW5XaWR0aD86IHN0cmluZztcclxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEFuY2hvckNvbmZpZyB7XHJcbiAgYWZmaXhUb3A/OiBzdHJpbmc7XHJcbiAgYWZmaXhCb3R0b20/OiBzdHJpbmc7XHJcbiAgYWZmaXhXaWR0aD86IHN0cmluZztcclxuICBsYXlvdXQ/OiBYUG9zaXRpb25MZWZ0UmlnaHQ7XHJcbiAganVzdGlmeT86IFhKdXN0aWZ5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhBdmF0YXJDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBzaGFwZT86IFhTaGFwZTtcclxuICBmaXQ/OiBYRml0O1xyXG4gIGdhcD86IHN0cmluZztcclxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEF1dG9Db21wbGV0ZUNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIG9ubHlTZWxlY3Q/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhCYWNrVG9wQ29uZmlnIHtcclxuICByaWdodD86IHN0cmluZztcclxuICBib3R0b20/OiBzdHJpbmc7XHJcbiAgdmlzaWJpbGl0eUhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQmFkZ2VDb25mZ2lnIHtcclxuICB0eXBlPzogWFR5cGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEJ1dHRvbkNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIHR5cGU/OiBYVHlwZTtcclxuICBwbGFpbj86IGJvb2xlYW47XHJcbiAgcm91bmQ/OiBib29sZWFuO1xyXG4gIGNpcmNsZT86IGJvb2xlYW47XHJcbiAgZmxhdD86IGJvb2xlYW47XHJcbiAgdGV4dD86IGJvb2xlYW47XHJcbiAgYXR0clR5cGU/OiAnc3VibWl0JyB8ICdidXR0b24nIHwgJ3Jlc2V0JztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQnV0dG9uc0NvbmZpZyB7XHJcbiAgc3BhY2U/OiBzdHJpbmc7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBib3hTaGFkb3c/OiBib29sZWFuO1xyXG4gIHJvdW5kPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ2FsZW5kYXJDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENhcmRDb25maWcge1xyXG4gIHNoYWRvdz86IFhTaGFkb3c7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENhcm91c2VsQ29uZmlnIHtcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIGFycm93PzogWFNoYWRvdztcclxuICBkaXJlY3Rpb24/OiBYRGlzcGxheURpcmVjdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ2FzY2FkZUNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIG5vZGVUcmlnZ2VyPzogWFRyaWdnZXI7XHJcbiAgbm9kZUhvdmVyRGVsYXk/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENoZWNrYm94Q29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWENvbGxhcHNlQ29uZmlnIHtcclxuICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgZ2hvc3Q/OiBib29sZWFuO1xyXG4gIGljb25Qb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvckNvbmZpZyB7XHJcbiAgbWVyZ2U/OiBzdHJpbmc7XHJcbiAgYW1vdW50cz86IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvclBpY2tlckNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb21tZW50Q29uZmlnIHtcclxuICBjb250ZW50TWF4PzogbnVtYmVyO1xyXG4gIG1heGxlbmd0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ29udGFpbmVyQ29uZmlnIHtcclxuICBkaXJlY3Rpb24/OiBYRGlyZWN0aW9uO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhIZWFkZXJDb25maWcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQXNpZGVDb25maWcge1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhGb290ZXJDb25maWcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ3J1bWJDb21maWcge1xyXG4gIHNlcGFyYXRvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVBpY2tlckNvbmZpZyB7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhEYXRlUmFuZ2VDb25maWcge1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIHBsYWNlbWVudD86IFhDb3JuZXI7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGlhbG9nQ29uZmlnIHtcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2U7XHJcbiAgb2Zmc2V0Pzogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogc3RyaW5nO1xyXG4gIG1pbkhlaWdodD86IHN0cmluZztcclxuICBtYXhXaWR0aD86IHN0cmluZztcclxuICBtYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgZWZmZWN0PzogWEVmZmVjdDtcclxuICBzaG93Q2FuY2VsPzogYm9vbGVhbjtcclxuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xyXG4gIHNob3dDb25maXJtPzogYm9vbGVhbjtcclxuICBjb25maXJtVGV4dD86IHN0cmluZztcclxuICBiYWNrZHJvcENsb3NlPzogYm9vbGVhbjtcclxuICBkcmFnZ2FibGU/OiBib29sZWFuO1xyXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XHJcbiAgbWF4aW1pemU/OiBib29sZWFuO1xyXG4gIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgYnV0dG9uc0NlbnRlcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWERyYXdlckNvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uO1xyXG4gIHNpemU/OiBzdHJpbmc7XHJcbiAgYmFja2Ryb3BDbG9zZT86IGJvb2xlYW47XHJcbiAgaGFzQmFja2Ryb3A/OiBib29sZWFuO1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRHJvcGRvd25Db25maWcge1xyXG4gIHRyaWdnZXI/OiBYVHJpZ2dlcjtcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2VtZW50O1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRGVzY3JpcHRpb25Db25maWcge1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBzaXplPzogWFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEVtcHR5Q29uZmlnIHtcclxuICBpbWc/OiBYVGVtcGxhdGU7XHJcbiAgY29udGVudD86IFhUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRmluZENvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBjb2x1bW5MYWJlbD86IHN0cmluZztcclxuICBkaWFsb2dUaXRsZT86IHN0cmluZztcclxuICBkaWFsb2dDaGVja2JveExhYmVsPzogc3RyaW5nO1xyXG4gIGRpYWxvZ0NoZWNrYm94V2lkdGg/OiBzdHJpbmc7XHJcbiAgZGlhbG9nRW1wdHlDb250ZW50Pzogc3RyaW5nO1xyXG4gIGRpYWxvZ0J1dHRvbnNDZW50ZXI/OiBib29sZWFuO1xyXG4gIHRhYmxlSW5kZXg/OiBudW1iZXI7XHJcbiAgdGFibGVTaXplPzogbnVtYmVyO1xyXG4gIHRhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcbiAgdGFibGVWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICB0YWJsZVJvd0hlaWdodD86IG51bWJlcjtcclxuICB0cmVlRXhwYW5kZWRMZXZlbD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYRm9ybUNvbmZpZyB7XHJcbiAgc3BhY2U/OiBzdHJpbmc7XHJcbiAgbGFiZWxTdWZmaXg/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEhpZ2hsaWdodENvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYSWNvbkNvbmZpZyB7XHJcbiAgaHJlZj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYSW5uZXJDb25maWcge1xyXG4gIHBhZGRpbmc/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0Q29uZmlnIHtcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIGljb25MYXlvdXQ/OiBYUG9zaXRpb25MZWZ0UmlnaHQ7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBpbnB1dFBhZGRpbmc/OiBzdHJpbmc7XHJcbiAgaW5wdXRJY29uUGFkZGluZz86IFhOdW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0R3JvdXBDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgY29tcGFjdD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0TnVtYmVyQ29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIGhpZGRlbkJ1dHRvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEltYWdlQ29uZmlnIHtcclxuICBwcmV2aWV3VGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYQ29sQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhSb3dDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFJpcHBsZUNvbmZpZyB7XHJcbiAgdHlwZT86IFhUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMaW5rQ29uZmlnIHtcclxuICB1bmRlcmxpbmU/OiBib29sZWFuO1xyXG4gIGljb25SaWdodD86IGJvb2xlYW47XHJcbiAgcHJldmVudERlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMaXN0Q29uZmlnIHtcclxuICBzZWxlY3RBbGxUZXh0Pzogc3RyaW5nO1xyXG4gIGxvYWRNb3JlVGV4dD86IHN0cmluZztcclxuICBsb2FkaW5nTW9yZVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgc2Nyb2xsSGVpZ2h0PzogbnVtYmVyO1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYTGlzdE9wdGlvbkNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhMb2FkaW5nQ29uZmlnIHtcclxuICBzaXplPzogWFNpemUgfCBudW1iZXI7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XHJcbiAgekluZGV4PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhNZW51Q29uZmlnIHtcclxuICBzaXplPzogWFNpemU7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhNZXNzYWdlQ29uZmlnIHtcclxuICB0eXBlPzogWFN0YXR1cztcclxuICB3aWR0aD86IHN0cmluZztcclxuICBwbGFjZW1lbnQ/OiBYUGxhY2U7XHJcbiAgZGlzcGxheVR5cGU/OiBzdHJpbmc7XHJcbiAgb2Zmc2V0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgaGlkZUNsb3NlPzogYm9vbGVhbjtcclxuICBzaG93SWNvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWE1lc3NhZ2VCb3hDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWE5vdGlmaWNhdGlvbkNvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYT3V0bGV0Q29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhQYWdlSGVhZGVyQ29uZmlnIHtcclxuICBiYWNrSWNvbj86IHN0cmluZztcclxuICBiYWNrVGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBzcGFjZT86IHN0cmluZztcclxuICBwYWdlTGlua1NpemU/OiBudW1iZXI7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBzaG93RWxsaXBzaXM/OiBib29sZWFuO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47XHJcbiAgc2hvd1NpemU/OiBib29sZWFuO1xyXG4gIHNob3dCYWNrZ3JvdW5kPzogYm9vbGVhbjtcclxuICBzaXplV2lkdGg/OiBzdHJpbmc7XHJcbiAgc2l6ZURhdGE/OiBudW1iZXJbXTtcclxuICBzaG93SW5wdXRTaXplPzogYm9vbGVhbjtcclxuICBpbnB1dFNpemVUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBpbnB1dFNpemVXaWR0aD86IG51bWJlcjtcclxuICBzaG93SnVtcD86IGJvb2xlYW47XHJcbiAganVtcFdpZHRoPzogc3RyaW5nO1xyXG4gIGp1bXBUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBzaW1wbGU/OiBib29sZWFuO1xyXG4gIHNpbXBsZUluZGV4V2lkdGg/OiBzdHJpbmc7XHJcbiAgaW5wdXRJbmRleFNpemVTdXJlVHlwZT86ICdlbnRlcicgfCAnYmx1cicgfCAnYm90aCc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBhdHRlcm5Db25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBvcGNvbmZpcm1Db25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFBvcG92ZXJDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbiAgdHJpZ2dlcj86IFhUcmlnZ2VyO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogc3RyaW5nO1xyXG4gIG1heFdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhQb3J0YWxDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFByb2dyZXNzQ29uZmluZyB7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHN0ZXBXaWR0aD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUmFkaW9Db25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYUmF0ZUNvbmZpZyB7XHJcbiAgY29sb3I/OiBzdHJpbmcgfCB7IFtjb2xvcjogc3RyaW5nXTogKHJhdGU6IG51bWJlcikgPT4gYm9vbGVhbiB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhSZXN1bHRDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFNlbGVjdENvbmZpZyB7XHJcbiAgcGxhY2VtZW50PzogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBwb3J0YWxNYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgc2VsZWN0QWxsVGV4dD86IHN0cmluZztcclxuICBzZWFyY2g/OiBib29sZWFuO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcclxuICBtYXhUYWdDb3VudD86IG51bWJlcjtcclxuICBtYXhUYWdDb250ZW50PzogWFRlbXBsYXRlO1xyXG4gIHZpcnR1YWxTY3JvbGw/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhTa2VsZXRvbkNvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU2xpZGVyQ29uZmlnIHtcclxuICBhbmltYXRlZD86IGJvb2xlYW47XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIHNob3dFeHBhbmQ/OiBib29sZWFuO1xyXG4gIGF1dG9TaG93QXJyb3c/OiBib29sZWFuO1xyXG4gIHRyaWdnZXI/OiBYVHJpZ2dlcjtcclxuICBleHBhbmRNYXhIZWlnaHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFNsaWRlclNlbGVjdENvbmZpZyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU3RhdGlzdGljQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhDb3VudGRvd25Db25maWcge1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYU3RlcHNDb25maWcge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFN3aXRjaENvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUYWJsZUNvbmZpZyB7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICBzaG93SGVhZGVyPzogYm9vbGVhbjtcclxuICBoZWFkZXJQb3NpdGlvbj86ICd0b3AnIHwgJ2JvdHRvbScgfCAndG9wLWJvdHRvbSc7XHJcbiAgYm9keUlubmVySFRNTD86IGJvb2xlYW47XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgcm93SGVpZ2h0PzogbnVtYmVyO1xyXG4gIGl0ZW1TaXplPzogbnVtYmVyO1xyXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcclxuICBhbGxvd1NlbGVjdFJvdz86IGJvb2xlYW47XHJcbiAgYWxsb3dDaGVja1Jvdz86IGJvb2xlYW47XHJcbiAgcm93U2l6ZT86IFhTaXplO1xyXG4gIHNob3dQYWdpbmF0aW9uPzogYm9vbGVhbjtcclxuICB0cmVlVGFibGU/OiBib29sZWFuO1xyXG4gIGV4cGFuZGVkQWxsPzogYm9vbGVhbjtcclxuICBleHBhbmRlZExldmVsPzogbnVtYmVyO1xyXG4gIGhpZGRlblBhZ2luYXRpb25Cb3JkZXI/OiBib29sZWFuO1xyXG4gIGhpZGRlbldyYXBCb3JkZXI/OiBib29sZWFuO1xyXG4gIHNob3dFbXB0eT86IGJvb2xlYW47XHJcbiAgZW1wdHlJbWc/OiBYVGVtcGxhdGU7XHJcbiAgZW1wdHlDb250ZW50PzogWFRlbXBsYXRlO1xyXG5cclxuICBzcGFjZT86IHN0cmluZztcclxuICBwYWdlTGlua1NpemU/OiBudW1iZXI7XHJcbiAgaGlkZGVuQm9yZGVyPzogYm9vbGVhbjtcclxuICBzaG93RWxsaXBzaXM/OiBib29sZWFuO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47XHJcbiAgc2hvd1NpemU/OiBib29sZWFuO1xyXG4gIHNob3dCYWNrZ3JvdW5kPzogYm9vbGVhbjtcclxuICBzaXplV2lkdGg/OiBzdHJpbmc7XHJcbiAgc2l6ZURhdGE/OiBudW1iZXJbXTtcclxuICBzaG93SW5wdXRTaXplPzogYm9vbGVhbjtcclxuICBpbnB1dFNpemVUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBpbnB1dFNpemVXaWR0aD86IG51bWJlcjtcclxuICBzaG93SnVtcD86IGJvb2xlYW47XHJcbiAganVtcFdpZHRoPzogc3RyaW5nO1xyXG4gIGp1bXBUb29sdGlwVGV4dD86IHN0cmluZztcclxuICBzaW1wbGU/OiBib29sZWFuO1xyXG4gIHNpbXBsZUluZGV4V2lkdGg/OiBzdHJpbmc7XHJcbiAgaW5wdXRJbmRleFNpemVTdXJlVHlwZT86ICdlbnRlcicgfCAnYmx1cicgfCAnYm90aCc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRhYnNDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICB0cmlnZ2VyPzogWFRyaWdnZXI7XHJcbiAgZXhwYW5kTWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUYWdDb25maWcge1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgY2xvc2FibGU/OiBib29sZWFuO1xyXG4gIGRhcms/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUZXh0UmV0cmFjdENvbmZpZyB7XHJcbiAgbWF4PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaGVtZUNvbmZpZyB7XHJcbiAgYW1vdW50cz86IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lQWdvQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lUGlja2VyQ29uZmlnIHtcclxuICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICBzaXplPzogWFNpemU7XHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIHVzZTEySG91cnM/OiBib29sZWFuO1xyXG4gIGRlZmF1bHROb3c/OiBib29sZWFuO1xyXG4gIGhvdXJTdGVwPzogbnVtYmVyO1xyXG4gIG1pbnV0ZVN0ZXA/OiBudW1iZXI7XHJcbiAgc2Vjb25kU3RlcD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYVGltZVJhbmdlQ29uZmlnIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUaW1lbGluZUNvbmZpZyB7XHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIG1vZGU/OiAnbGVmdCcgfCAncmlnaHQnIHwgJ2FsdGVybmF0ZSc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRvb2x0aXBDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQbGFjZW1lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyYW5zZmVyQ29uZmlnIHtcclxuICB0aXRsZXM/OiBzdHJpbmdbXTtcclxuICBkcmFnPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICB0eXBlPzogJ2xpc3QnIHwgJ3RhYmxlJyB8ICd0cmVlJztcclxuICBsaXN0U3R5bGU6IFhTdHlsZU1hcCB8IFhTdHlsZU1hcFtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlQ29uZmlnIHtcclxuICBzcGFjaW5nPzogc3RyaW5nO1xyXG4gIG5vZGVIZWlnaHQ/OiBzdHJpbmc7XHJcbiAgbm9kZUFsaWduSXRlbXM/OiBYQWxpZ247XHJcbiAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW47XHJcbiAgb25seUxlYWY/OiBib29sZWFuO1xyXG4gIHNob3dMaW5lPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsU2Nyb2xsSGVpZ2h0Pzogc3RyaW5nO1xyXG4gIGl0ZW1TaXplPzogbnVtYmVyO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUZXh0YXJlYUNvbmZpZyB7XHJcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcclxuICBpY29uTGF5b3V0PzogWFBvc2l0aW9uTGVmdFJpZ2h0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlRmlsZUNvbmZpZyB7XHJcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHNwYWNpbmc/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVTZWxlY3RDb25maWcge1xyXG4gIHBsYWNlbWVudD86IFhQb3NpdGlvblRvcEJvdHRvbTtcclxuICBjbGVhcmFibGU/OiBib29sZWFuO1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgcG9ydGFsTWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHNlbGVjdEFsbFRleHQ/OiBzdHJpbmc7XHJcbiAgc2VhcmNoPzogYm9vbGVhbjtcclxuICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcclxuICBkZWJvdW5jZVRpbWU/OiBudW1iZXI7XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXI7XHJcbiAgbWF4VGFnQ29udGVudD86IFhUZW1wbGF0ZTtcclxuICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcclxuICBzaG93UGF0aD86IGJvb2xlYW47XHJcbiAgc2VwYXJhdG9yPzogc3RyaW5nO1xyXG4gIG9ubHlMZWFmPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYVXBsb2FkQ29uZmlnIHtcclxuICBkb3dubG9hZD86IGJvb2xlYW47XHJcbiAgbXVsdGlwbGVNb2RlbD86ICdjb3ZlcicgfCAnYWRkJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBYS2V5d29yZENvbmZpZyB7XHJcbiAgdHlwZT86IFhUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -11,6 +11,7 @@ import { XCheckboxComponent } from '@ng-nest/ui/checkbox';
11
11
  import { FormsModule } from '@angular/forms';
12
12
  import { XButtonComponent } from '@ng-nest/ui/button';
13
13
  import { XTableComponent } from './table.component';
14
+ import { DomSanitizer } from '@angular/platform-browser';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "@angular/forms";
16
17
  import * as i2 from "@angular/cdk/scrolling";
@@ -25,6 +26,7 @@ export class XTableBodyComponent extends XTableBodyProperty {
25
26
  this.table = inject(XTableComponent, { optional: true });
26
27
  this.doc = inject(DOCUMENT);
27
28
  this.unSubject = new Subject();
29
+ this.domSanitizer = inject(DomSanitizer);
28
30
  this.tbodyStyle = signal({});
29
31
  this.isEmpty = computed(() => this.data().length === 0);
30
32
  this.getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));
@@ -182,6 +184,9 @@ export class XTableBodyComponent extends XTableBodyProperty {
182
184
  height: `${height}px`
183
185
  });
184
186
  }
187
+ setDomSanitizer(str) {
188
+ return this.domSanitizer.bypassSecurityTrustHtml(str);
189
+ }
185
190
  getIndex(index, item) {
186
191
  if (!isNaN(index))
187
192
  return index;
@@ -218,7 +223,7 @@ export class XTableBodyComponent extends XTableBodyProperty {
218
223
  return item.id;
219
224
  }
220
225
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
221
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XTableBodyComponent, isStandalone: true, selector: "x-table-body", viewQueries: [{ propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true, isSignal: true }, { propertyName: "virtualBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: XTableBodyComponent, selector: "x-table-body" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
226
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XTableBodyComponent, isStandalone: true, selector: "x-table-body", viewQueries: [{ propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true, isSignal: true }, { propertyName: "virtualBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n @if ((table.bodyInnerHTML() && column.innerHTML !== false) || column.innerHTML) {\r\n <div [innerHTML]=\"setDomSanitizer(row[column.id])\" [style.text-align]=\"column.textAlign\"></div>\r\n } @else {\r\n <div [style.text-align]=\"column.textAlign\">{{ row[column.id] }}</div>\r\n }\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: XTableBodyComponent, selector: "x-table-body" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
222
227
  }
223
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTableBodyComponent, decorators: [{
224
229
  type: Component,
@@ -231,6 +236,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
231
236
  XOutletDirective,
232
237
  XCheckboxComponent,
233
238
  XButtonComponent
234
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n" }]
239
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n @if ((table.bodyInnerHTML() && column.innerHTML !== false) || column.innerHTML) {\r\n <div [innerHTML]=\"setDomSanitizer(row[column.id])\" [style.text-align]=\"column.textAlign\"></div>\r\n } @else {\r\n <div [style.text-align]=\"column.textAlign\">{{ row[column.id] }}</div>\r\n }\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n" }]
235
240
  }], ctorParameters: () => [] });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90YWJsZS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RhYmxlL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFXLFVBQVUsRUFBRSxXQUFXLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixD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QUFDLFFBQVEsQ0FBQztRQUMvQiw0QkFBNEI7SUFDOUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBOEI7UUFDeEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7aUlBOU5VLG1CQUFtQjtxSEFBbkIsbUJBQW1CLHNOQUtOLHdCQUF3Qix1RkNuRGxELDY0TUFrSkEsNENEcEdhLG1CQUFtQix5REFiNUIsT0FBTyxvRkFDUCxnQkFBZ0IsbUpBQ2hCLFdBQVcsK1ZBQ1gsZUFBZSxtREFDZixlQUFlLDRqQkFDZixnQkFBZ0IsNkZBQ2hCLGtCQUFrQix1REFDbEIsZ0JBQWdCOzsyRkFNUCxtQkFBbUI7a0JBakIvQixTQUFTOytCQUNFLEdBQUcsZ0JBQWdCLEVBQUUsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3FCQUNqQixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIGluamVjdCxcclxuICBjb21wdXRlZCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgc2lnbmFsLFxyXG4gIGVmZmVjdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEFmdGVyVmlld0NoZWNrZWRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlQm9keVByZWZpeCwgWFRhYmxlQm9keVByb3BlcnR5LCBYVGFibGVSb3csIFhUYWJsZUNvbHVtbiwgWFRhYmxlQ2VsbCB9IGZyb20gJy4vdGFibGUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYUmVtb3ZlTmdUYWcsIFhSZXNpemUsIFhOdW1iZXIsIFhTdHJpcFRhZ3MsIFhQYXJlbnRQYXRoLCBYUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhFbXB0eUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2VtcHR5JztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NoZWNrYm94JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBYVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRhYmxlQm9keVByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFhFbXB0eUNvbXBvbmVudCxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIFhPdXRsZXREaXJlY3RpdmUsXHJcbiAgICBYQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBYQnV0dG9uQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRhYmxlQm9keUNvbXBvbmVudCBleHRlbmRzIFhUYWJsZUJvZHlQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcclxuICBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHRib2R5ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PigndGJvZHknKTtcclxuICB2aXJ0dWFsQm9keSA9IHZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpO1xyXG4gIHRhYmxlID0gaW5qZWN0KFhUYWJsZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KSE7XHJcbiAgcHJpdmF0ZSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG4gIHRib2R5U3R5bGUgPSBzaWduYWw8eyBbcHJvcGVydHk6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcblxyXG4gIGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGEoKS5sZW5ndGggPT09IDApO1xyXG4gIGdldFJvd0hlaWdodCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnJvd0hlaWdodCgpID09IDAgPyAnJyA6IHRoaXMucm93SGVpZ2h0KCkpKTtcclxuICBnZXRJdGVtU2l6ZSA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICB0aGlzLnJvd0hlaWdodCgpICE9PSAwICYmIHRoaXMuaXRlbVNpemUoKSA+IHRoaXMucm93SGVpZ2h0KCkgPyB0aGlzLnJvd0hlaWdodCgpIDogdGhpcy5pdGVtU2l6ZSgpXHJcbiAgKTtcclxuICBkb2NDbGllbnRIZWlnaHQgPSBzaWduYWwodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgaGVhZEhlaWdodCA9IHNpZ25hbCgwKTtcclxuICBjYXB0aW9uSGVpZ2h0ID0gc2lnbmFsKDApO1xyXG4gIGZvb3RIZWlnaHQgPSBzaWduYWwoMCk7XHJcbiAgcGFnaW5hdGlvbkhlaWdodCA9IHNpZ25hbCgwKTtcclxuXHJcbiAgYm9keUhlaWdodFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICBsZXQgYm9keUhlaWdodCA9XHJcbiAgICAgICAgdGhpcy5kb2NQZXJjZW50KCkgKiB0aGlzLmRvY0NsaWVudEhlaWdodCgpIC1cclxuICAgICAgICB0aGlzLmNhcHRpb25IZWlnaHQoKSAtXHJcbiAgICAgICAgdGhpcy5oZWFkSGVpZ2h0KCkgLVxyXG4gICAgICAgIHRoaXMuZm9vdEhlaWdodCgpIC1cclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25IZWlnaHQoKSAtXHJcbiAgICAgICAgYWRhcHRpb25IZWlnaHQ7XHJcbiAgICAgIGlmIChib2R5SGVpZ2h0IDwgMCkgYm9keUhlaWdodCA9IDA7XHJcbiAgICAgIHJldHVybiBib2R5SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsKCk/LnkgJiYgIXRoaXMuYm9keUhlaWdodCgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNjcm9sbCgpIS55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYm9keUhlaWdodCgpO1xyXG4gIH0pO1xyXG5cclxuICBtaW5CdWZmZXJQeFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5taW5CdWZmZXJQeCgpO1xyXG4gIH0pO1xyXG5cclxuICBtYXhCdWZmZXJQeFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCkhICogMS4yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWF4QnVmZmVyUHgoKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudmlydHVhbEJvZHkoKSkge1xyXG4gICAgICAgIHRoaXMudmlydHVhbEJvZHkoKSFbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHhTaWduYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsQm9keSgpKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsQm9keSgpIVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19tYXhCdWZmZXJQeCddID0gdGhpcy5tYXhCdWZmZXJQeFNpZ25hbCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWFJlbW92ZU5nVGFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIGlmICh0aGlzLmxldmVsKCkgPiAwKSBYUmVtb3ZlTmdUYWcodGhpcy50Ym9keSgpLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmRvYy5kZWZhdWx0VmlldyEsICdyZXNpemUnKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRvY0NsaWVudEhlaWdodC5zZXQodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy50YWJsZS52aXJ0dWFsQm9keS5zZXQodGhpcy52aXJ0dWFsQm9keSgpISk7XHJcbiAgICB0aGlzLmRvY0NsaWVudEhlaWdodC5zZXQodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBsZXQgaGVhZEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCB0aGVhZCBvZiB0aGlzLnRhYmxlLnRoZWFkcygpKSB7XHJcbiAgICAgIGhlYWRIZWlnaHQgKz0gdGhlYWQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRIZWlnaHQuc2V0KGhlYWRIZWlnaHQpO1xyXG4gICAgY29uc3QgY2FwdGlvbkhlaWdodCA9IHRoaXMudGFibGUuY2FwdGlvbigpPy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwO1xyXG4gICAgdGhpcy5jYXB0aW9uSGVpZ2h0LnNldChjYXB0aW9uSGVpZ2h0KTtcclxuICAgIGNvbnN0IGZvb3RIZWlnaHQgPSB0aGlzLnRhYmxlLnRmb290KCk/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICB0aGlzLmZvb3RIZWlnaHQuc2V0KGZvb3RIZWlnaHQpO1xyXG4gICAgY29uc3QgcGFnaW5hdGlvbkhlaWdodCA9IHRoaXMudGFibGUucGFnaW5hdGlvbigpPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25IZWlnaHQuc2V0KHBhZ2luYXRpb25IZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLnVuU3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3ViamVjdCgpIHtcclxuICAgIGlmICh0aGlzLnZpcnR1YWxCb2R5KCkpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlLnNldChcclxuICAgICAgICB0aGlzLnZpcnR1YWxCb2R5KCkhLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnNjcm9sbCgpPy54KSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUoKSEsICd3aWR0aCcsIGAke3RoaXMuc2Nyb2xsKCk/Lnh9cHhgKTtcclxuICAgICAgfVxyXG4gICAgICBYUmVzaXplKHRoaXMudGFibGUudGFibGUoKS5uYXRpdmVFbGVtZW50LCB0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUoKSEpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMudW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlKCkpIHtcclxuICAgICAgZnJvbUV2ZW50KHRoaXMudmlydHVhbEJvZHkoKSEuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsZSA9IHguc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsVG9wLnNldChlbGUuc2Nyb2xsVG9wKTtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsTGVmdC5zZXQoZWxlLnNjcm9sbExlZnQpO1xyXG4gICAgICAgICAgaWYgKGVsZS5zY3JvbGxMZWZ0ID49IDAgJiYgdGhpcy50YWJsZS50aGVhZHMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHRoZWFkIG9mIHRoaXMudGFibGUudGhlYWRzKCkpIHtcclxuICAgICAgICAgICAgICB0aGVhZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnRhYmxlLnNjcm9sbExlZnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50YWJsZS5zY3JvbGxMZWZ0TWF4LnNldChlbGUuc2Nyb2xsTGVmdCArIGVsZS5jbGllbnRXaWR0aCA9PT0gZWxlLnNjcm9sbFdpZHRoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy52aXJ0dWFsQm9keSgpKSByZXR1cm47XHJcbiAgICBjb25zdCBlbGUgPSB0aGlzLnZpcnR1YWxCb2R5KCkhLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGhhc1kgPSBlbGUuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCkhO1xyXG4gICAgY29uc3QgaGFzWCA9IHRoaXMudGFibGUuc2Nyb2xsQ29udGVudEVsZSgpIS5jbGllbnRXaWR0aCA+IGVsZS5jbGllbnRXaWR0aDtcclxuXHJcbiAgICBpZiAoIXRoaXMudGFibGUuaGFzU2Nyb2xsWSgpICYmIGhhc1kpIHtcclxuICAgICAgdGhpcy50YWJsZS5oYXNTY3JvbGxZLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxZV2lkdGguc2V0KGVsZS5vZmZzZXRXaWR0aCAtIGVsZS5jbGllbnRXaWR0aCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUuaGFzU2Nyb2xsWSgpICYmICFoYXNZKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWS5zZXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFlXaWR0aC5zZXQoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlLmhhc1Njcm9sbFgoKSAmJiBoYXNYKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWC5zZXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMudGFibGUuc2Nyb2xsWEhlaWdodC5zZXQoZWxlLm9mZnNldEhlaWdodCAtIGVsZS5jbGllbnRIZWlnaHQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlLmhhc1Njcm9sbFgoKSAmJiAhaGFzWCkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFguc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYSGVpZ2h0LnNldCgwKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGguc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1gpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGguc2V0KGVsZS5vZmZzZXRXaWR0aCArIGVsZS5zY3JvbGxXaWR0aCAtIGVsZS5jbGllbnRXaWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aXJ0dWFsQm9keSgpIS5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG5cclxuICAgIC8vIHRoaXMudGFibGUuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFN0eWxlKCkge1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMucm93SGVpZ2h0KCkgPT09IDAgPyAnJyA6IHRoaXMucm93SGVpZ2h0KCk7XHJcbiAgICBpZiAodGhpcy5jZWxsQ29uZmlnKCkgJiYgdGhpcy5jZWxsQ29uZmlnKCkhLmNlbGxzKSB7XHJcbiAgICAgIGNvbnN0IHNwdCA9IHRoaXMuY2VsbENvbmZpZygpIS5jZWxscz8ubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFyZWFTcHQgPSB4LmdyaWRBcmVhPy5zcGxpdCgnLycpO1xyXG4gICAgICAgIHJldHVybiBncmlkQXJlYVNwdCAmJiBncmlkQXJlYVNwdC5sZW5ndGggPiAzID8gTnVtYmVyKGdyaWRBcmVhU3B0WzJdKSA6IDI7XHJcbiAgICAgIH0pO1xyXG4gICAgICBoZWlnaHQgPSAoKE1hdGgubWF4KC4uLnNwdCEpIC0gMSkgKiAoaGVpZ2h0IGFzIG51bWJlcikpIGFzIFhOdW1iZXI7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRib2R5U3R5bGUuc2V0KHtcclxuICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEluZGV4KGluZGV4OiBudW1iZXIsIGl0ZW06IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKCFpc05hTihpbmRleCkpIHJldHVybiBpbmRleDtcclxuICAgIHJldHVybiB0aGlzLmRhdGEoKS5pbmRleE9mKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmxleChjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgaWYgKGNvbHVtbi53aWR0aCkgcmV0dXJuICdub25lJztcclxuICAgIGlmICghY29sdW1uLmZsZXgpIHJldHVybiAxO1xyXG4gICAgcmV0dXJuIGNvbHVtbi5mbGV4O1xyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUocm93OiBYVGFibGVSb3csIGNvbHVtbjogWFRhYmxlQ2VsbCB8IGFueSkge1xyXG4gICAgbGV0IGl0ID0gcm93W2NvbHVtbi5pZCBhcyBzdHJpbmddO1xyXG4gICAgcmV0dXJuIGl0ID8gWFN0cmlwVGFncyhpdCkgOiAnJztcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soZXZlbnQ6IEV2ZW50LCByb3c6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHJvdy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudGFibGUuYWxsb3dDaGVja1JvdygpICYmIHRoaXMudGFibGUucm93Q2hlY2tlZCgpKSB7XHJcbiAgICAgIGlmICghWFBhcmVudFBhdGgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5pbmNsdWRlcygneC1jaGVja2JveCcpKSB7XHJcbiAgICAgICAgcm93W3RoaXMudGFibGUucm93Q2hlY2tlZCgpIS5pZF0gPSAhcm93W3RoaXMudGFibGUucm93Q2hlY2tlZCgpIS5pZF07XHJcbiAgICAgICAgdGhpcy50YWJsZS5ib2R5Q2hlY2tlZChyb3dbdGhpcy50YWJsZS5yb3dDaGVja2VkKCkhLmlkXSwgdGhpcy50YWJsZS5yb3dDaGVja2VkKCkhLCByb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdy5zZXQocm93KTtcclxuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRlZChfZXZlbnQ6IEV2ZW50LCBub2RlOiBYVGFibGVSb3cpIHtcclxuICAgIG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcclxuICAgIC8vIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVGFibGVSb3cgfCBYVGFibGVDb2x1bW4pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8dGJvZHkgI3Rib2R5PlxyXG4gIEBpZiAoY2VsbENvbmZpZygpKSB7XHJcbiAgICBAZm9yIChyb3cgb2YgZGF0YSgpOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgIDx0ciBbc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1uc109XCJjZWxsQ29uZmlnKCkhLmdyaWRUZW1wbGF0ZUNvbHVtbnNcIj5cclxuICAgICAgICBAZm9yIChjb2x1bW4gb2YgY2VsbENvbmZpZygpIS5jZWxsczsgdHJhY2sgY29sdW1uOyBsZXQgaiA9ICRpbmRleCkge1xyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJnZXRUaXRsZShyb3csIGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ldPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pIHx8IHRhYmxlLmdldFN0aWNreVJpZ2h0KGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktbGVmdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHRdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1sZWZ0LWxhc3RdPVwidGFibGUuZ2V0U3RpY2t5TGVmdExhc3QoY29sdW1uKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1yaWdodC1maXJzdF09XCJ0YWJsZS5nZXRTdGlja3lSaWdodEZpcnN0KGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjb2x1bW4ubGVmdFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCJjb2x1bW4ucmlnaHRcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZ3JpZC1hcmVhXT1cImNvbHVtbi5ncmlkQXJlYVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVHBsOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCByb3c6IHJvdywgaTogaSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIEBpZiAodmlydHVhbFNjcm9sbCgpKSB7XHJcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICAjdmlydHVhbEJvZHlcclxuICAgICAgICBbaXRlbVNpemVdPVwiZ2V0SXRlbVNpemUoKVwiXHJcbiAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4U2lnbmFsKClcIlxyXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFNpZ25hbCgpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImJvZHlIZWlnaHRTaWduYWwoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhKCk7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgICAgICBbY2xhc3MueC10YWJsZS1hY3RpdmF0ZWRdPVwiYWxsb3dTZWxlY3RSb3coKSAmJiBhY3RpdmF0ZWRSb3coKT8uaWQgPT09IHJvdy5pZFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSByb3dIZWlnaHQg5Li6IDAg55qE5pe25YCZ77yMaW5kZXgg5LiL5qCH6I635Y+W5LiN5YiwIC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd1RwbDsgY29udGV4dDogeyByb3c6IHJvdywgaTogZ2V0SW5kZXgoaW5kZXgsIHJvdykgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHJvdy5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICA8dHJcclxuICAgICAgICAgIFtjbGFzcy54LXRhYmxlLWFjdGl2YXRlZF09XCJhbGxvd1NlbGVjdFJvdygpICYmIGFjdGl2YXRlZFJvdygpPy5pZCA9PT0gcm93LmlkXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0KClcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0KClcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93VHBsOyBjb250ZXh0OiB7IHJvdzogcm93LCBpOiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIEBpZiAodGFibGUudHJlZVRhYmxlKCkgJiYgcm93LmNoaWxkcmVuICYmIHJvdy5leHBhbmRlZCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtdGFibGUtY2hpbGRyZW5cIiBbY2xhc3MueC10YWJsZS1leHBhbmRUcGxdPVwiZXhwYW5kVHBsKClcIj5cclxuICAgICAgICAgICAgPHgtdGFibGUtYm9keVxyXG4gICAgICAgICAgICAgIFtkYXRhXT1cInJvdy5jaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwidGFibGUuY29sdW1ucygpXCJcclxuICAgICAgICAgICAgICBbaXRlbVNpemVdPVwidGFibGUuaXRlbVNpemUoKVwiXHJcbiAgICAgICAgICAgICAgW3Jvd0hlaWdodF09XCJ0YWJsZS5yb3dIZWlnaHQoKVwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtblRwbF09XCJ0YWJsZS5ib2R5Q29sdW1uVHBsKClcIlxyXG4gICAgICAgICAgICAgIFthbGxvd1NlbGVjdFJvd109XCJ0YWJsZS5hbGxvd1NlbGVjdFJvdygpXCJcclxuICAgICAgICAgICAgICBbcm93Q2xhc3NdPVwidGFibGUucm93Q2xhc3MoKVwiXHJcbiAgICAgICAgICAgICAgW2NlbGxDb25maWddPVwidGFibGUuY2VsbENvbmZpZygpPy50Ym9keVwiXHJcbiAgICAgICAgICAgICAgWyhhY3RpdmF0ZWRSb3cpXT1cInRhYmxlLmFjdGl2YXRlZFJvd1wiXHJcbiAgICAgICAgICAgICAgW2V4cGFuZGVkQWxsXT1cImV4cGFuZGVkQWxsKClcIlxyXG4gICAgICAgICAgICAgIFtleHBhbmRUcGxdPVwiZXhwYW5kVHBsKClcIlxyXG4gICAgICAgICAgICAgIFtsZXZlbF09XCJyb3cubGV2ZWwhICsgMVwiXHJcbiAgICAgICAgICAgID48L3gtdGFibGUtYm9keT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAaWYgKHRhYmxlLnNob3dFbXB0eSgpICYmIGlzRW1wdHkoKSAmJiBsZXZlbCgpID09PSAwKSB7XHJcbiAgICA8eC1lbXB0eSBbaW1nXT1cInRhYmxlLmVtcHR5SW1nKCkhXCIgW2NvbnRlbnRdPVwidGFibGUuZW1wdHlDb250ZW50KCkhXCI+PC94LWVtcHR5PlxyXG4gIH1cclxuPC90Ym9keT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcm93VHBsIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICBAaWYgKGxldmVsKCkgPiAwICYmIGV4cGFuZFRwbCgpKSB7XHJcbiAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXhwYW5kVHBsKCk7IGNvbnRleHQ6IHsgJHJvdzogcm93LCAkaW5kZXg6IGksICRsZXZlbDogbGV2ZWwoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgfSBAZWxzZSBpZiAobGV2ZWwoKSA9PT0gMCB8fCAhZXhwYW5kVHBsKCkpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJyb3dEZWZhdWx0OyBjb250ZXh0OiB7IHJvdzogcm93LCBpOiBpLCBsZXZlbDogbGV2ZWwoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dEZWZhdWx0IGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4uaWQ7IGxldCBqID0gJGluZGV4KSB7XHJcbiAgICA8dGRcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbHVtbi53aWR0aFwiXHJcbiAgICAgIFtzdHlsZS5mbGV4XT1cImdldEZsZXgoY29sdW1uKVwiXHJcbiAgICAgIFt0aXRsZV09XCJnZXRUaXRsZShyb3csIGNvbHVtbilcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1kcmFnZ2luZ109XCJjb2x1bW4uZHJhZ2dpbmdcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ldPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pIHx8IHRhYmxlLmdldFN0aWNreVJpZ2h0KGNvbHVtbilcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktbGVmdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbilcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHRdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1sZWZ0LWxhc3RdPVwidGFibGUuZ2V0U3RpY2t5TGVmdExhc3QoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1yaWdodC1maXJzdF09XCJ0YWJsZS5nZXRTdGlja3lSaWdodEZpcnN0KGNvbHVtbilcIlxyXG4gICAgICBbc3R5bGUubGVmdC5weF09XCJjb2x1bW4ubGVmdFwiXHJcbiAgICAgIFtzdHlsZS5yaWdodC5weF09XCJjb2x1bW4ucmlnaHRcIlxyXG4gICAgICBbbmdDbGFzc109XCIhcm93Q2xhc3MoKSA/IHt9IDogcm93Q2xhc3MoKSEocm93LCBpKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUcGw7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCBpOiBpIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC90ZD5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NlbGxUcGwgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICBAc3dpdGNoIChjb2x1bW4udHlwZSkge1xyXG4gICAgQGNhc2UgKCdjaGVja2JveCcpIHtcclxuICAgICAgPHgtY2hlY2tib3hcclxuICAgICAgICBbZGF0YV09XCJbeyBpZDogdHJ1ZSwgbGFiZWw6ICcnIH1dXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaWRdXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwicm93LmRpc2FibGVkXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0YWJsZS5ib2R5Q2hlY2tlZCgkZXZlbnQsIGNvbHVtbiwgcm93KVwiXHJcbiAgICAgICAgc2luZ2xlXHJcbiAgICAgID48L3gtY2hlY2tib3g+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoJ2luZGV4Jykge1xyXG4gICAgICA8ZGl2Pnt7IHRhYmxlLmdldEluZGV4KGkpIH19PC9kaXY+XHJcbiAgICB9XHJcbiAgICBAZGVmYXVsdCB7XHJcbiAgICAgIEBpZiAodGFibGUuaXNFeHBhbmRDb2x1bW4oY29sdW1uKSkge1xyXG4gICAgICAgIDx4LWJ1dHRvblxyXG4gICAgICAgICAgW2NsYXNzLmlzLWxlYWZdPVwiIXJvdy5sZWFmXCJcclxuICAgICAgICAgIFtjbGFzcy5pcy1leHBhbmRlZF09XCJyb3cuZXhwYW5kZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kZWQoJGV2ZW50LCByb3cpXCJcclxuICAgICAgICAgIGljb249XCJmdG8tY2hldnJvbi1yaWdodFwiXHJcbiAgICAgICAgICBzaXplPVwibWluaVwiXHJcbiAgICAgICAgICBvbmx5SWNvblxyXG4gICAgICAgICAgZmxhdFxyXG4gICAgICAgICAgcGxhaW5cclxuICAgICAgICAgIGNsYXNzPVwieC10YWJsZS1leHBhbmRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnJlbV09XCJyb3cubGV2ZWwgLSAwLjVcIlxyXG4gICAgICAgID48L3gtYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqeE91dGxldD1cImNvbHVtblRwbCgpW2NvbHVtbi5pZF07IGNvbnRleHQ6IHsgJGNvbHVtbjogY29sdW1uLCAkcm93OiByb3csICRpbmRleDogdGFibGUuZ2V0SW5kZXgoaSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidGFibGUuYm9keVRkVHBsKCk7IGNvbnRleHQ6IHsgJGNvbHVtbjogY29sdW1uLCAkcm93OiByb3csICRpbmRleDogdGFibGUuZ2V0SW5kZXgoaSkgfVwiPlxyXG4gICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInJvd1tjb2x1bW4uaWRdXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiY29sdW1uLnRleHRBbGlnblwiPjwvZGl2PlxyXG4gICAgICAgICAge3sgdGFibGUucm93RXhwYW5kKCkgJiYgdGFibGUucm93RXhwYW5kKCkhLmlkID09PSBjb2x1bW4uaWQgPyAneC10YWJsZS1ib2R5LWxldmVsLScgKyByb3cubGV2ZWwgOiAnJyB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90YWJsZS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RhYmxlL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFXLFVBQVUsRUFBRSxXQUFXLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixD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SUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFhLEVBQUUsSUFBZTtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQiw0QkFBNEI7SUFDOUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBOEI7UUFDeEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7aUlBbk9VLG1CQUFtQjtxSEFBbkIsbUJBQW1CLHNOQUtOLHdCQUF3Qix1RkNwRGxELDRuTkFzSkEsNENEdkdhLG1CQUFtQix5REFiNUIsT0FBTyxvRkFDUCxnQkFBZ0IsbUpBQ2hCLFdBQVcsK1ZBQ1gsZUFBZSxtREFDZixlQUFlLDRqQkFDZixnQkFBZ0IsNkZBQ2hCLGtCQUFrQix1REFDbEIsZ0JBQWdCOzsyRkFNUCxtQkFBbUI7a0JBakIvQixTQUFTOytCQUNFLEdBQUcsZ0JBQWdCLEVBQUUsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3FCQUNqQixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIGluamVjdCxcclxuICBjb21wdXRlZCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgc2lnbmFsLFxyXG4gIGVmZmVjdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEFmdGVyVmlld0NoZWNrZWRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlQm9keVByZWZpeCwgWFRhYmxlQm9keVByb3BlcnR5LCBYVGFibGVSb3csIFhUYWJsZUNvbHVtbiwgWFRhYmxlQ2VsbCB9IGZyb20gJy4vdGFibGUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYUmVtb3ZlTmdUYWcsIFhSZXNpemUsIFhOdW1iZXIsIFhTdHJpcFRhZ3MsIFhQYXJlbnRQYXRoLCBYUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhFbXB0eUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2VtcHR5JztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NoZWNrYm94JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBYVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUYWJsZUJvZHlQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBYRW1wdHlDb21wb25lbnQsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBYT3V0bGV0RGlyZWN0aXZlLFxyXG4gICAgWENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUYWJsZUJvZHlDb21wb25lbnQgZXh0ZW5kcyBYVGFibGVCb2R5UHJvcGVydHkgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XHJcbiAgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICB0Ym9keSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3Rib2R5Jyk7XHJcbiAgdmlydHVhbEJvZHkgPSB2aWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KTtcclxuICB0YWJsZSA9IGluamVjdChYVGFibGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSkhO1xyXG4gIHByaXZhdGUgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFhSZXNpemVPYnNlcnZlcjtcclxuICBwcml2YXRlIGRvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG4gIHRib2R5U3R5bGUgPSBzaWduYWw8eyBbcHJvcGVydHk6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcblxyXG4gIGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGEoKS5sZW5ndGggPT09IDApO1xyXG4gIGdldFJvd0hlaWdodCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnJvd0hlaWdodCgpID09IDAgPyAnJyA6IHRoaXMucm93SGVpZ2h0KCkpKTtcclxuICBnZXRJdGVtU2l6ZSA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICB0aGlzLnJvd0hlaWdodCgpICE9PSAwICYmIHRoaXMuaXRlbVNpemUoKSA+IHRoaXMucm93SGVpZ2h0KCkgPyB0aGlzLnJvd0hlaWdodCgpIDogdGhpcy5pdGVtU2l6ZSgpXHJcbiAgKTtcclxuICBkb2NDbGllbnRIZWlnaHQgPSBzaWduYWwodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgaGVhZEhlaWdodCA9IHNpZ25hbCgwKTtcclxuICBjYXB0aW9uSGVpZ2h0ID0gc2lnbmFsKDApO1xyXG4gIGZvb3RIZWlnaHQgPSBzaWduYWwoMCk7XHJcbiAgcGFnaW5hdGlvbkhlaWdodCA9IHNpZ25hbCgwKTtcclxuXHJcbiAgYm9keUhlaWdodFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICBsZXQgYm9keUhlaWdodCA9XHJcbiAgICAgICAgdGhpcy5kb2NQZXJjZW50KCkgKiB0aGlzLmRvY0NsaWVudEhlaWdodCgpIC1cclxuICAgICAgICB0aGlzLmNhcHRpb25IZWlnaHQoKSAtXHJcbiAgICAgICAgdGhpcy5oZWFkSGVpZ2h0KCkgLVxyXG4gICAgICAgIHRoaXMuZm9vdEhlaWdodCgpIC1cclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25IZWlnaHQoKSAtXHJcbiAgICAgICAgYWRhcHRpb25IZWlnaHQ7XHJcbiAgICAgIGlmIChib2R5SGVpZ2h0IDwgMCkgYm9keUhlaWdodCA9IDA7XHJcbiAgICAgIHJldHVybiBib2R5SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsKCk/LnkgJiYgIXRoaXMuYm9keUhlaWdodCgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNjcm9sbCgpIS55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYm9keUhlaWdodCgpO1xyXG4gIH0pO1xyXG5cclxuICBtaW5CdWZmZXJQeFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5taW5CdWZmZXJQeCgpO1xyXG4gIH0pO1xyXG5cclxuICBtYXhCdWZmZXJQeFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGFkYXB0aW9uSGVpZ2h0ID0gdGhpcy5hZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgaWYgKGFkYXB0aW9uSGVpZ2h0ICYmIGFkYXB0aW9uSGVpZ2h0ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCkhICogMS4yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWF4QnVmZmVyUHgoKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudmlydHVhbEJvZHkoKSkge1xyXG4gICAgICAgIHRoaXMudmlydHVhbEJvZHkoKSFbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHhTaWduYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsQm9keSgpKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsQm9keSgpIVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19tYXhCdWZmZXJQeCddID0gdGhpcy5tYXhCdWZmZXJQeFNpZ25hbCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWFJlbW92ZU5nVGFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIGlmICh0aGlzLmxldmVsKCkgPiAwKSBYUmVtb3ZlTmdUYWcodGhpcy50Ym9keSgpLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmRvYy5kZWZhdWx0VmlldyEsICdyZXNpemUnKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRvY0NsaWVudEhlaWdodC5zZXQodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy50YWJsZS52aXJ0dWFsQm9keS5zZXQodGhpcy52aXJ0dWFsQm9keSgpISk7XHJcbiAgICB0aGlzLmRvY0NsaWVudEhlaWdodC5zZXQodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBsZXQgaGVhZEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCB0aGVhZCBvZiB0aGlzLnRhYmxlLnRoZWFkcygpKSB7XHJcbiAgICAgIGhlYWRIZWlnaHQgKz0gdGhlYWQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRIZWlnaHQuc2V0KGhlYWRIZWlnaHQpO1xyXG4gICAgY29uc3QgY2FwdGlvbkhlaWdodCA9IHRoaXMudGFibGUuY2FwdGlvbigpPy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwO1xyXG4gICAgdGhpcy5jYXB0aW9uSGVpZ2h0LnNldChjYXB0aW9uSGVpZ2h0KTtcclxuICAgIGNvbnN0IGZvb3RIZWlnaHQgPSB0aGlzLnRhYmxlLnRmb290KCk/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICB0aGlzLmZvb3RIZWlnaHQuc2V0KGZvb3RIZWlnaHQpO1xyXG4gICAgY29uc3QgcGFnaW5hdGlvbkhlaWdodCA9IHRoaXMudGFibGUucGFnaW5hdGlvbigpPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25IZWlnaHQuc2V0KHBhZ2luYXRpb25IZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLnVuU3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3ViamVjdCgpIHtcclxuICAgIGlmICh0aGlzLnZpcnR1YWxCb2R5KCkpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlLnNldChcclxuICAgICAgICB0aGlzLnZpcnR1YWxCb2R5KCkhLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnNjcm9sbCgpPy54KSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUoKSEsICd3aWR0aCcsIGAke3RoaXMuc2Nyb2xsKCk/Lnh9cHhgKTtcclxuICAgICAgfVxyXG4gICAgICBYUmVzaXplKHRoaXMudGFibGUudGFibGUoKS5uYXRpdmVFbGVtZW50LCB0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUoKSEpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMudW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlKCkpIHtcclxuICAgICAgZnJvbUV2ZW50KHRoaXMudmlydHVhbEJvZHkoKSEuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsZSA9IHguc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsVG9wLnNldChlbGUuc2Nyb2xsVG9wKTtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsTGVmdC5zZXQoZWxlLnNjcm9sbExlZnQpO1xyXG4gICAgICAgICAgaWYgKGVsZS5zY3JvbGxMZWZ0ID49IDAgJiYgdGhpcy50YWJsZS50aGVhZHMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHRoZWFkIG9mIHRoaXMudGFibGUudGhlYWRzKCkpIHtcclxuICAgICAgICAgICAgICB0aGVhZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnRhYmxlLnNjcm9sbExlZnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50YWJsZS5zY3JvbGxMZWZ0TWF4LnNldChlbGUuc2Nyb2xsTGVmdCArIGVsZS5jbGllbnRXaWR0aCA9PT0gZWxlLnNjcm9sbFdpZHRoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy52aXJ0dWFsQm9keSgpKSByZXR1cm47XHJcbiAgICBjb25zdCBlbGUgPSB0aGlzLnZpcnR1YWxCb2R5KCkhLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGhhc1kgPSBlbGUuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5ib2R5SGVpZ2h0U2lnbmFsKCkhO1xyXG4gICAgY29uc3QgaGFzWCA9IHRoaXMudGFibGUuc2Nyb2xsQ29udGVudEVsZSgpIS5jbGllbnRXaWR0aCA+IGVsZS5jbGllbnRXaWR0aDtcclxuXHJcbiAgICBpZiAoIXRoaXMudGFibGUuaGFzU2Nyb2xsWSgpICYmIGhhc1kpIHtcclxuICAgICAgdGhpcy50YWJsZS5oYXNTY3JvbGxZLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxZV2lkdGguc2V0KGVsZS5vZmZzZXRXaWR0aCAtIGVsZS5jbGllbnRXaWR0aCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUuaGFzU2Nyb2xsWSgpICYmICFoYXNZKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWS5zZXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFlXaWR0aC5zZXQoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlLmhhc1Njcm9sbFgoKSAmJiBoYXNYKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWC5zZXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMudGFibGUuc2Nyb2xsWEhlaWdodC5zZXQoZWxlLm9mZnNldEhlaWdodCAtIGVsZS5jbGllbnRIZWlnaHQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlLmhhc1Njcm9sbFgoKSAmJiAhaGFzWCkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFguc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYSGVpZ2h0LnNldCgwKTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGguc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1gpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGguc2V0KGVsZS5vZmZzZXRXaWR0aCArIGVsZS5zY3JvbGxXaWR0aCAtIGVsZS5jbGllbnRXaWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aXJ0dWFsQm9keSgpIS5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG5cclxuICAgIC8vIHRoaXMudGFibGUuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFN0eWxlKCkge1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMucm93SGVpZ2h0KCkgPT09IDAgPyAnJyA6IHRoaXMucm93SGVpZ2h0KCk7XHJcbiAgICBpZiAodGhpcy5jZWxsQ29uZmlnKCkgJiYgdGhpcy5jZWxsQ29uZmlnKCkhLmNlbGxzKSB7XHJcbiAgICAgIGNvbnN0IHNwdCA9IHRoaXMuY2VsbENvbmZpZygpIS5jZWxscz8ubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFyZWFTcHQgPSB4LmdyaWRBcmVhPy5zcGxpdCgnLycpO1xyXG4gICAgICAgIHJldHVybiBncmlkQXJlYVNwdCAmJiBncmlkQXJlYVNwdC5sZW5ndGggPiAzID8gTnVtYmVyKGdyaWRBcmVhU3B0WzJdKSA6IDI7XHJcbiAgICAgIH0pO1xyXG4gICAgICBoZWlnaHQgPSAoKE1hdGgubWF4KC4uLnNwdCEpIC0gMSkgKiAoaGVpZ2h0IGFzIG51bWJlcikpIGFzIFhOdW1iZXI7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRib2R5U3R5bGUuc2V0KHtcclxuICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldERvbVNhbml0aXplcihzdHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHN0cik7XHJcbiAgfVxyXG5cclxuICBnZXRJbmRleChpbmRleDogbnVtYmVyLCBpdGVtOiBYVGFibGVSb3cpIHtcclxuICAgIGlmICghaXNOYU4oaW5kZXgpKSByZXR1cm4gaW5kZXg7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhKCkuaW5kZXhPZihpdGVtKTtcclxuICB9XHJcblxyXG4gIGdldEZsZXgoY29sdW1uOiBYVGFibGVDb2x1bW4pIHtcclxuICAgIGlmIChjb2x1bW4ud2lkdGgpIHJldHVybiAnbm9uZSc7XHJcbiAgICBpZiAoIWNvbHVtbi5mbGV4KSByZXR1cm4gMTtcclxuICAgIHJldHVybiBjb2x1bW4uZmxleDtcclxuICB9XHJcblxyXG4gIGdldFRpdGxlKHJvdzogWFRhYmxlUm93LCBjb2x1bW46IFhUYWJsZUNlbGwgfCBhbnkpIHtcclxuICAgIGxldCBpdCA9IHJvd1tjb2x1bW4uaWQgYXMgc3RyaW5nXTtcclxuICAgIHJldHVybiBpdCA/IFhTdHJpcFRhZ3MoaXQpIDogJyc7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrKGV2ZW50OiBFdmVudCwgcm93OiBYVGFibGVSb3cpIHtcclxuICAgIGlmIChyb3cuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnRhYmxlLmFsbG93Q2hlY2tSb3coKSAmJiB0aGlzLnRhYmxlLnJvd0NoZWNrZWQoKSkge1xyXG4gICAgICBpZiAoIVhQYXJlbnRQYXRoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuaW5jbHVkZXMoJ3gtY2hlY2tib3gnKSkge1xyXG4gICAgICAgIHJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQoKSEuaWRdID0gIXJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQoKSEuaWRdO1xyXG4gICAgICAgIHRoaXMudGFibGUuYm9keUNoZWNrZWQocm93W3RoaXMudGFibGUucm93Q2hlY2tlZCgpIS5pZF0sIHRoaXMudGFibGUucm93Q2hlY2tlZCgpISwgcm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3cuc2V0KHJvdyk7XHJcbiAgICB0aGlzLnJvd0NsaWNrLmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kZWQoX2V2ZW50OiBFdmVudCwgbm9kZTogWFRhYmxlUm93KSB7XHJcbiAgICBub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XHJcbiAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRhYmxlUm93IHwgWFRhYmxlQ29sdW1uKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcbn1cclxuIiwiPHRib2R5ICN0Ym9keT5cclxuICBAaWYgKGNlbGxDb25maWcoKSkge1xyXG4gICAgQGZvciAocm93IG9mIGRhdGEoKTsgdHJhY2sgcm93LmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8dHIgW3N0eWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnNdPVwiY2VsbENvbmZpZygpIS5ncmlkVGVtcGxhdGVDb2x1bW5zXCI+XHJcbiAgICAgICAgQGZvciAoY29sdW1uIG9mIGNlbGxDb25maWcoKSEuY2VsbHM7IHRyYWNrIGNvbHVtbjsgbGV0IGogPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiZ2V0VGl0bGUocm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5XT1cInRhYmxlLmdldFN0aWNreUxlZnQoY29sdW1uKSB8fCB0YWJsZS5nZXRTdGlja3lSaWdodChjb2x1bW4pXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnRdPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LXJpZ2h0XT1cInRhYmxlLmdldFN0aWNreVJpZ2h0KGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktbGVmdC1sYXN0XT1cInRhYmxlLmdldFN0aWNreUxlZnRMYXN0KGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHQtZmlyc3RdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHRGaXJzdChjb2x1bW4pXCJcclxuICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sdW1uLmxlZnRcIlxyXG4gICAgICAgICAgICBbc3R5bGUucmlnaHQucHhdPVwiY29sdW1uLnJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmdyaWQtYXJlYV09XCJjb2x1bW4uZ3JpZEFyZWFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRwbDsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgcm93OiByb3csIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAaWYgKHZpcnR1YWxTY3JvbGwoKSkge1xyXG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgI3ZpcnR1YWxCb2R5XHJcbiAgICAgICAgW2l0ZW1TaXplXT1cImdldEl0ZW1TaXplKClcIlxyXG4gICAgICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFNpZ25hbCgpXCJcclxuICAgICAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhTaWduYWwoKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJib2R5SGVpZ2h0U2lnbmFsKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZGF0YSgpOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICAgICAgW2NsYXNzLngtdGFibGUtYWN0aXZhdGVkXT1cImFsbG93U2VsZWN0Um93KCkgJiYgYWN0aXZhdGVkUm93KCk/LmlkID09PSByb3cuaWRcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRSb3dIZWlnaHQoKVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJnZXRSb3dIZWlnaHQoKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQsIHJvdylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gcm93SGVpZ2h0IOS4uiAwIOeahOaXtuWAme+8jGluZGV4IOS4i+agh+iOt+WPluS4jeWIsCAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUcGw7IGNvbnRleHQ6IHsgcm93OiByb3csIGk6IGdldEluZGV4KGluZGV4LCByb3cpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAZm9yIChyb3cgb2YgZGF0YSgpOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBbY2xhc3MueC10YWJsZS1hY3RpdmF0ZWRdPVwiYWxsb3dTZWxlY3RSb3coKSAmJiBhY3RpdmF0ZWRSb3coKT8uaWQgPT09IHJvdy5pZFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd1RwbDsgY29udGV4dDogeyByb3c6IHJvdywgaTogaSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICBAaWYgKHRhYmxlLnRyZWVUYWJsZSgpICYmIHJvdy5jaGlsZHJlbiAmJiByb3cuZXhwYW5kZWQpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXRhYmxlLWNoaWxkcmVuXCIgW2NsYXNzLngtdGFibGUtZXhwYW5kVHBsXT1cImV4cGFuZFRwbCgpXCI+XHJcbiAgICAgICAgICAgIDx4LXRhYmxlLWJvZHlcclxuICAgICAgICAgICAgICBbZGF0YV09XCJyb3cuY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5zXT1cInRhYmxlLmNvbHVtbnMoKVwiXHJcbiAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInRhYmxlLml0ZW1TaXplKClcIlxyXG4gICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwidGFibGUucm93SGVpZ2h0KClcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5UcGxdPVwidGFibGUuYm9keUNvbHVtblRwbCgpXCJcclxuICAgICAgICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwidGFibGUuYWxsb3dTZWxlY3RSb3coKVwiXHJcbiAgICAgICAgICAgICAgW3Jvd0NsYXNzXT1cInRhYmxlLnJvd0NsYXNzKClcIlxyXG4gICAgICAgICAgICAgIFtjZWxsQ29uZmlnXT1cInRhYmxlLmNlbGxDb25maWcoKT8udGJvZHlcIlxyXG4gICAgICAgICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZS5hY3RpdmF0ZWRSb3dcIlxyXG4gICAgICAgICAgICAgIFtleHBhbmRlZEFsbF09XCJleHBhbmRlZEFsbCgpXCJcclxuICAgICAgICAgICAgICBbZXhwYW5kVHBsXT1cImV4cGFuZFRwbCgpXCJcclxuICAgICAgICAgICAgICBbbGV2ZWxdPVwicm93LmxldmVsISArIDFcIlxyXG4gICAgICAgICAgICA+PC94LXRhYmxlLWJvZHk+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGlmICh0YWJsZS5zaG93RW1wdHkoKSAmJiBpc0VtcHR5KCkgJiYgbGV2ZWwoKSA9PT0gMCkge1xyXG4gICAgPHgtZW1wdHkgW2ltZ109XCJ0YWJsZS5lbXB0eUltZygpIVwiIFtjb250ZW50XT1cInRhYmxlLmVtcHR5Q29udGVudCgpIVwiPjwveC1lbXB0eT5cclxuICB9XHJcbjwvdGJvZHk+XHJcblxyXG48bmctdGVtcGxhdGUgI3Jvd1RwbCBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpXCI+XHJcbiAgQGlmIChsZXZlbCgpID4gMCAmJiBleHBhbmRUcGwoKSkge1xyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImV4cGFuZFRwbCgpOyBjb250ZXh0OiB7ICRyb3c6IHJvdywgJGluZGV4OiBpLCAkbGV2ZWw6IGxldmVsKCkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIH0gQGVsc2UgaWYgKGxldmVsKCkgPT09IDAgfHwgIWV4cGFuZFRwbCgpKSB7XHJcbiAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwicm93RGVmYXVsdDsgY29udGV4dDogeyByb3c6IHJvdywgaTogaSwgbGV2ZWw6IGxldmVsKCkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcm93RGVmYXVsdCBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpXCI+XHJcbiAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKTsgdHJhY2sgY29sdW1uLmlkOyBsZXQgaiA9ICRpbmRleCkge1xyXG4gICAgPHRkXHJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2x1bW4ud2lkdGhcIlxyXG4gICAgICBbc3R5bGUuZmxleF09XCJnZXRGbGV4KGNvbHVtbilcIlxyXG4gICAgICBbdGl0bGVdPVwiZ2V0VGl0bGUocm93LCBjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtZHJhZ2dpbmddPVwiY29sdW1uLmRyYWdnaW5nXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5XT1cInRhYmxlLmdldFN0aWNreUxlZnQoY29sdW1uKSB8fCB0YWJsZS5nZXRTdGlja3lSaWdodChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnRdPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LXJpZ2h0XT1cInRhYmxlLmdldFN0aWNreVJpZ2h0KGNvbHVtbilcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktbGVmdC1sYXN0XT1cInRhYmxlLmdldFN0aWNreUxlZnRMYXN0KGNvbHVtbilcIlxyXG4gICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHQtZmlyc3RdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHRGaXJzdChjb2x1bW4pXCJcclxuICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sdW1uLmxlZnRcIlxyXG4gICAgICBbc3R5bGUucmlnaHQucHhdPVwiY29sdW1uLnJpZ2h0XCJcclxuICAgICAgW25nQ2xhc3NdPVwiIXJvd0NsYXNzKCkgPyB7fSA6IHJvd0NsYXNzKCkhKHJvdywgaSlcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVHBsOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCByb3c6IHJvdywgaTogaSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdGQ+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjZWxsVHBsIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpXCI+XHJcbiAgQHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcclxuICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XHJcbiAgICAgIDx4LWNoZWNrYm94XHJcbiAgICAgICAgW2RhdGFdPVwiW3sgaWQ6IHRydWUsIGxhYmVsOiAnJyB9XVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmlkXVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJvdy5kaXNhYmxlZFwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGFibGUuYm9keUNoZWNrZWQoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxyXG4gICAgICAgIHNpbmdsZVxyXG4gICAgICA+PC94LWNoZWNrYm94PlxyXG4gICAgfVxyXG4gICAgQGNhc2UgKCdpbmRleCcpIHtcclxuICAgICAgPGRpdj57eyB0YWJsZS5nZXRJbmRleChpKSB9fTwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGRlZmF1bHQge1xyXG4gICAgICBAaWYgKHRhYmxlLmlzRXhwYW5kQ29sdW1uKGNvbHVtbikpIHtcclxuICAgICAgICA8eC1idXR0b25cclxuICAgICAgICAgIFtjbGFzcy5pcy1sZWFmXT1cIiFyb3cubGVhZlwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwicm93LmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZGVkKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1pbmlcIlxyXG4gICAgICAgICAgb25seUljb25cclxuICAgICAgICAgIGZsYXRcclxuICAgICAgICAgIHBsYWluXHJcbiAgICAgICAgICBjbGFzcz1cIngtdGFibGUtZXhwYW5kXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXJnaW4tbGVmdC5yZW1dPVwicm93LmxldmVsIC0gMC41XCJcclxuICAgICAgICA+PC94LWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKnhPdXRsZXQ9XCJjb2x1bW5UcGwoKVtjb2x1bW4uaWRdOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInRhYmxlLmJvZHlUZFRwbCgpOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIj5cclxuICAgICAgICAgIEBpZiAoKHRhYmxlLmJvZHlJbm5lckhUTUwoKSAmJiBjb2x1bW4uaW5uZXJIVE1MICE9PSBmYWxzZSkgfHwgY29sdW1uLmlubmVySFRNTCkge1xyXG4gICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2V0RG9tU2FuaXRpemVyKHJvd1tjb2x1bW4uaWRdKVwiIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi50ZXh0QWxpZ25cIj48L2Rpdj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi50ZXh0QWxpZ25cIj57eyByb3dbY29sdW1uLmlkXSB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAge3sgdGFibGUucm93RXhwYW5kKCkgJiYgdGFibGUucm93RXhwYW5kKCkhLmlkID09PSBjb2x1bW4uaWQgPyAneC10YWJsZS1ib2R5LWxldmVsLScgKyByb3cubGV2ZWwgOiAnJyB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==