@kepler.gl/components 3.3.0-alpha.1 → 3.3.0-alpha.2

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.
Files changed (126) hide show
  1. package/dist/common/action-panel.js +1 -1
  2. package/dist/common/color-legend.d.ts +1 -1
  3. package/dist/common/data-table/canvas.d.ts +1 -1
  4. package/dist/common/data-table/index.d.ts +1 -1
  5. package/dist/common/dnd-layer-items.d.ts +4 -0
  6. package/dist/common/dnd-layer-items.js +6 -2
  7. package/dist/common/error-boundary.d.ts +1 -1
  8. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  9. package/dist/common/flex-container.d.ts +15 -7
  10. package/dist/common/icon-button.d.ts +53 -6
  11. package/dist/common/icons/arrow-down-full.d.ts +2 -1
  12. package/dist/common/icons/arrow-down-full.js +1 -1
  13. package/dist/common/icons/folder.d.ts +10 -0
  14. package/dist/common/icons/folder.js +51 -0
  15. package/dist/common/icons/index.d.ts +1 -0
  16. package/dist/common/icons/index.js +8 -1
  17. package/dist/common/icons/timeline-marker.d.ts +2 -1
  18. package/dist/common/icons/timeline-marker.js +1 -1
  19. package/dist/common/item-selector/dropdown-list.d.ts +1 -1
  20. package/dist/common/item-selector/dropdown-list.js +1 -1
  21. package/dist/common/item-selector/dropdown-select.d.ts +13 -7
  22. package/dist/common/item-selector/item-selector.d.ts +1 -1
  23. package/dist/common/item-selector/item-selector.js +1 -1
  24. package/dist/common/item-selector/typeahead.d.ts +4 -4
  25. package/dist/common/item-selector/typeahead.js +1 -3
  26. package/dist/common/layout-splitter.d.ts +45 -0
  27. package/dist/common/layout-splitter.js +231 -0
  28. package/dist/common/line-chart.d.ts +7 -3
  29. package/dist/common/line-chart.js +179 -59
  30. package/dist/common/modal.d.ts +11 -5
  31. package/dist/common/modal.js +1 -1
  32. package/dist/common/portaled.d.ts +17 -17
  33. package/dist/common/range-slider.js +1 -3
  34. package/dist/common/slider/mouse-event.d.ts +1 -1
  35. package/dist/common/slider/mouse-event.js +1 -2
  36. package/dist/common/slider/slider-bar-handle.d.ts +1 -1
  37. package/dist/common/slider/slider-bar-handle.js +1 -1
  38. package/dist/common/slider/slider-handle.d.ts +3 -3
  39. package/dist/common/slider/slider-handle.js +1 -1
  40. package/dist/common/slider/slider.d.ts +4 -4
  41. package/dist/common/slider/slider.js +1 -1
  42. package/dist/common/styled-components.d.ts +627 -177
  43. package/dist/common/vertical-toolbar.d.ts +12 -2
  44. package/dist/container.d.ts +3 -2
  45. package/dist/container.js +2 -2
  46. package/dist/context.d.ts +1 -1
  47. package/dist/context.js +1 -1
  48. package/dist/dnd-context.d.ts +4 -3
  49. package/dist/dnd-context.js +64 -9
  50. package/dist/effects/compact-color-picker.d.ts +1 -1
  51. package/dist/effects/effect-configurator.d.ts +2 -4
  52. package/dist/effects/effect-time-configurator.js +1 -1
  53. package/dist/effects/effect-type-list-item.d.ts +1 -1
  54. package/dist/filters/components.d.ts +7 -5
  55. package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
  56. package/dist/geocoder-panel.d.ts +2 -2
  57. package/dist/geocoder-panel.js +6 -7
  58. package/dist/hooks/use-dnd-layers.d.ts +4 -3
  59. package/dist/hooks/use-dnd-layers.js +103 -42
  60. package/dist/index.d.ts +3 -2
  61. package/dist/index.js +38 -9
  62. package/dist/injector.d.ts +1 -1
  63. package/dist/kepler-gl.d.ts +167 -27
  64. package/dist/kepler-gl.js +3 -2
  65. package/dist/loading-indicator.d.ts +1 -1
  66. package/dist/map/layer-hover-info.d.ts +7 -3
  67. package/dist/map/layer-hover-info.js +58 -22
  68. package/dist/map/map-control-panel.js +3 -2
  69. package/dist/map/map-control-toolbar.d.ts +29 -4
  70. package/dist/map/map-control.d.ts +11 -4
  71. package/dist/map/map-control.js +7 -6
  72. package/dist/map/map-legend-panel.d.ts +11 -2
  73. package/dist/map/map-legend-panel.js +19 -2
  74. package/dist/map/map-legend.d.ts +19 -2
  75. package/dist/map/map-legend.js +141 -27
  76. package/dist/map/split-map-button.d.ts +6 -1
  77. package/dist/map/split-map-button.js +113 -19
  78. package/dist/map-container.js +20 -3
  79. package/dist/maps-layout.d.ts +3 -0
  80. package/dist/maps-layout.js +86 -26
  81. package/dist/modal-container.d.ts +1 -1
  82. package/dist/modals/cloud-tile.d.ts +1 -2
  83. package/dist/modals/export-map-modal/components.d.ts +9 -5
  84. package/dist/modals/export-video-modal.d.ts +3 -0
  85. package/dist/modals/export-video-modal.js +79 -46
  86. package/dist/modals/export-video-modal.spec.js +2 -2
  87. package/dist/modals/hubble-utils.d.ts +16 -0
  88. package/dist/modals/hubble-utils.js +98 -1
  89. package/dist/modals/modal-dialog.d.ts +1 -1
  90. package/dist/modals/share-map-modal.d.ts +2 -4
  91. package/dist/modals/swipe-composite-utils.d.ts +10 -0
  92. package/dist/modals/swipe-composite-utils.js +108 -0
  93. package/dist/modals/swipe-export-settings.d.ts +24 -0
  94. package/dist/modals/swipe-export-settings.js +370 -0
  95. package/dist/modals/swipe-export-video-container.d.ts +122 -0
  96. package/dist/modals/swipe-export-video-container.js +630 -0
  97. package/dist/modals/swipe-export-video-preview.d.ts +68 -0
  98. package/dist/modals/swipe-export-video-preview.js +339 -0
  99. package/dist/modals/tilesets-modals/tileset-raster-form.js +1 -5
  100. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
  101. package/dist/side-panel/layer-manager.d.ts +5 -4
  102. package/dist/side-panel/layer-manager.js +16 -4
  103. package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
  104. package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
  105. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
  106. package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
  107. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
  108. package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -1
  109. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
  110. package/dist/side-panel/layer-panel/layer-configurator.js +130 -82
  111. package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
  112. package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
  113. package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
  114. package/dist/side-panel/layer-panel/layer-list.js +197 -40
  115. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
  116. package/dist/side-panel/panel-tab.d.ts +1 -3
  117. package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
  118. package/dist/side-panel/side-bar.d.ts +1 -6
  119. package/dist/side-panel.d.ts +1 -1
  120. package/dist/types.d.ts +2 -2
  121. package/dist/types.js +1 -1
  122. package/package.json +29 -35
  123. package/dist/map/layer-selector-panel.d.ts +0 -21
  124. package/dist/map/layer-selector-panel.js +0 -85
  125. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
  126. package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
@@ -249,4 +249,4 @@ var Slider = exports["default"] = /*#__PURE__*/function (_Component) {
249
249
  vertical: false,
250
250
  showTooltip: false
251
251
  });
252
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9zbGlkZXJIYW5kbGUiLCJfc2xpZGVyQmFySGFuZGxlIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwibm9vcCIsIlN0eWxlZFJhbmdlU2xpZGVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwic2xpZGVyQmFyQmdkIiwiY29uY2F0IiwiJHZlcnRpY2FsIiwic2xpZGVyQmFySGVpZ2h0IiwiU2xpZGVyV3JhcHBlciIsIlNsaWRlciIsImV4cG9ydHMiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiY3JlYXRlUmVmIiwieCIsImFuY2hvciIsIl90aGlzJHByb3BzIiwidmFsdWUxIiwibWluVmFsdWUiLCJzY2FsZUNvbmZpZyIsInZhbCIsIm5vcm1hbGl6ZVZhbHVlIiwiZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQiLCJnZXRWYWx1ZSIsIm9uU2xpZGVyMENoYW5nZSIsImNsYW1wIiwiX3RoaXMkcHJvcHMyIiwibWF4VmFsdWUiLCJ2YWx1ZTAiLCJvblNsaWRlcjFDaGFuZ2UiLCJfdGhpcyRwcm9wczMiLCJiYXNlRGlzdGFuY2UiLCJnZXRCYXNlRGlzdGFuY2UiLCJwb3MwUHgiLCJnZXRQb3NpdGlvbkZyb21WYWx1ZSIsInBvczFQeCIsImRlbHRhUHgiLCJuZXdWYWwwUmF3IiwibmV3VmFsMVJhdyIsInZhbDAiLCJ2YWwxIiwib25TbGlkZXJCYXJDaGFuZ2UiLCJkZWx0YVgiLCJnZXREZWx0YVgiLCJ3IiwibCIsInNsaWRlckhhbmRsZVdpZHRoIiwiaXNSYW5nZWQiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwicmVmIiwiY3VycmVudCIsInZlcnRpY2FsIiwib2Zmc2V0SGVpZ2h0Iiwib2Zmc2V0V2lkdGgiLCJwaXhlbE9mZnNldCIsIl90aGlzJHByb3BzNCIsInBvc2l0aW9uIiwicG9zaXRpb25Ub1ZhbHVlIiwiX3RoaXMkcHJvcHM1IiwidmFsdWVUb1Bvc2l0aW9uIiwiZ2V0RGVsdGFWYWwiLCJwZXJjZW50IiwibWF4RGVsdGEiLCJ2IiwiYmFzZVYiLCJvZmZzZXQiLCJyYXdWYWx1ZSIsIl90aGlzJHByb3BzNiIsInN0ZXAiLCJtYXJrcyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwicmVuZGVyIiwiX3RoaXMkcHJvcHM3IiwiY2xhc3NOYW1lIiwiY2xhc3NTZXQiLCJkaXNhYmxlZCIsInNob3dUb29sdGlwIiwic3R5bGUiLCJ2MExlZnQiLCJ2MVJpZ2h0Iiwid2lkdGgiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NuYW1lcyIsIiRpc1JhbmdlZCIsInRyYWNrIiwibGVmdCIsImNhbGNIYW5kbGVMZWZ0MCIsInZhbHVlTGlzdGVuZXIiLCJzbGlkZTBMaXN0ZW5lciIsImRpc3BsYXkiLCJjYWxjSGFuZGxlTGVmdDEiLCJzbGlkZTFMaXN0ZW5lciIsImVuYWJsZUJhckRyYWciLCJzbGlkZXJCYXJMaXN0ZW5lciIsInNldEFuY2hvciIsIkNvbXBvbmVudCIsInRpdGxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9zbGlkZXIvc2xpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgUmVmT2JqZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgU2xpZGVySGFuZGxlIGZyb20gJy4vc2xpZGVyLWhhbmRsZSc7XG5pbXBvcnQgU2xpZGVyQmFySGFuZGxlIGZyb20gJy4vc2xpZGVyLWJhci1oYW5kbGUnO1xuaW1wb3J0IHtub3JtYWxpemVTbGlkZXJWYWx1ZSwgY2xhbXAsIHZhbHVlVG9Qb3NpdGlvbiwgcG9zaXRpb25Ub1ZhbHVlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB0eXBlIHtTbGlkZXJTY2FsZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybjtcbn1cblxuaW50ZXJmYWNlIFN0eWxlZFJhbmdlU2xpZGVyUHJvcHMge1xuICAkdmVydGljYWw/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRSYW5nZVNsaWRlciA9IHN0eWxlZC5kaXY8U3R5bGVkUmFuZ2VTbGlkZXJQcm9wcz5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJCYXJCZ2R9O1xuICAke3Byb3BzID0+IGAke3Byb3BzLiR2ZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0J306ICR7cHJvcHMudGhlbWUuc2xpZGVyQmFySGVpZ2h0fXB4YH07XG4gICR7cHJvcHMgPT4gYCR7cHJvcHMuJHZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnfTogMTAwJWB9O1xuYDtcblxuZXhwb3J0IHR5cGUgU3R5bGVSYW5nZVNsaWRlclR5cGUgPSB0eXBlb2YgU3R5bGVkUmFuZ2VTbGlkZXIgJiBIVE1MRGl2RWxlbWVudDtcblxuaW50ZXJmYWNlIFNsaWRlcldyYXBwZXJQcm9wcyB7XG4gICRpc1JhbmdlZD86IGJvb2xlYW47XG4gICR2ZXJ0aWNhbD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFNsaWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2PFNsaWRlcldyYXBwZXJQcm9wcz5gXG4gIGZsZXgtZ3JvdzogMTtcbmA7XG5cbnR5cGUgU2xpZGVyUHJvcHMgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGlzUmFuZ2VkOiBib29sZWFuO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG1pblZhbHVlOiBudW1iZXI7XG4gIG1heFZhbHVlOiBudW1iZXI7XG4gIHNsaWRlckhhbmRsZVdpZHRoOiBudW1iZXI7XG4gIG9uU2xpZGVyMENoYW5nZTogKHZhbDogbnVtYmVyKSA9PiBhbnk7XG4gIG9uU2xpZGVyMUNoYW5nZTogKHZhbDogbnVtYmVyKSA9PiBhbnk7XG4gIG9uU2xpZGVyQmFyQ2hhbmdlOiAodmFsMDogbnVtYmVyLCB2YWwxOiBudW1iZXIpID0+IHZvaWQ7XG4gIHN0ZXA6IG51bWJlcjtcbiAgZW5hYmxlQmFyRHJhZzogYm9vbGVhbjtcbiAgc2hvd1Rvb2x0aXA6IGJvb2xlYW47XG4gIHZlcnRpY2FsOiBib29sZWFuO1xuICBtYXJrcz86IG51bWJlcltdIHwgbnVsbDtcbiAgY2xhc3NTZXQ/OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogb2JqZWN0O1xuICBzY2FsZUNvbmZpZz86IFNsaWRlclNjYWxlQ29uZmlnIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNsaWRlciBleHRlbmRzIENvbXBvbmVudDxTbGlkZXJQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHRpdGxlOiAnJyxcbiAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICB2YWx1ZTA6IDAsXG4gICAgdmFsdWUxOiAxMDAsXG4gICAgbWluVmFsdWU6IDAsXG4gICAgbWF4VmFsdWU6IDEwMCxcbiAgICBzdGVwOiAxLFxuICAgIHNsaWRlckhhbmRsZVdpZHRoOiAxMixcbiAgICBlbmFibGVCYXJEcmFnOiBmYWxzZSxcbiAgICBvblNsaWRlcjBDaGFuZ2U6IG5vb3AsXG4gICAgb25TbGlkZXIxQ2hhbmdlOiBub29wLFxuICAgIG9uU2xpZGVyQmFyQ2hhbmdlOiBub29wLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgc2hvd1Rvb2x0aXA6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBhbmNob3IgPSAwO1xuXG4gIHB1YmxpYyByZWY6IFJlZk9iamVjdDx0eXBlb2YgU2xpZGVyV3JhcHBlciAmIEhUTUxEaXZFbGVtZW50PiA9IGNyZWF0ZVJlZjxcbiAgICB0eXBlb2YgU2xpZGVyV3JhcHBlciAmIEhUTUxEaXZFbGVtZW50XG4gID4oKTtcbiAgcHVibGljIHRyYWNrOiBSZWZPYmplY3Q8U3R5bGVSYW5nZVNsaWRlclR5cGU+ID0gY3JlYXRlUmVmPFN0eWxlUmFuZ2VTbGlkZXJUeXBlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wczogU2xpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIHNldEFuY2hvciA9ICh4OiBudW1iZXIpID0+IHtcbiAgICAvLyB1c2VkIHRvIGNhbGN1bGF0ZSBkZWx0YVxuICAgIHRoaXMuYW5jaG9yID0geDtcbiAgfTtcblxuICBwcml2YXRlIGdldEJhc2VEaXN0YW5jZSgpIHtcbiAgICBpZiAoIXRoaXMucmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy52ZXJ0aWNhbCA/IHRoaXMucmVmLmN1cnJlbnQub2Zmc2V0SGVpZ2h0IDogdGhpcy5yZWYuY3VycmVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQocGl4ZWxPZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qge21pblZhbHVlLCBtYXhWYWx1ZSwgc2NhbGVDb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBiYXNlRGlzdGFuY2UgPSB0aGlzLmdldEJhc2VEaXN0YW5jZSgpO1xuICAgIGlmIChiYXNlRGlzdGFuY2UgPT09IDApIHJldHVybiBtaW5WYWx1ZTtcblxuICAgIGNvbnN0IHBvc2l0aW9uID0gcGl4ZWxPZmZzZXQgLyBiYXNlRGlzdGFuY2U7XG5cbiAgICBpZiAoc2NhbGVDb25maWcpIHtcbiAgICAgIHJldHVybiBwb3NpdGlvblRvVmFsdWUocG9zaXRpb24sIG1pblZhbHVlLCBtYXhWYWx1ZSwgc2NhbGVDb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gbWluVmFsdWUgKyBwb3NpdGlvbiAqIChtYXhWYWx1ZSAtIG1pblZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb25Gcm9tVmFsdWUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qge21pblZhbHVlLCBtYXhWYWx1ZSwgc2NhbGVDb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoc2NhbGVDb25maWcpIHtcbiAgICAgIHJldHVybiB2YWx1ZVRvUG9zaXRpb24odmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgc2NhbGVDb25maWcpO1xuICAgIH1cbiAgICBpZiAobWF4VmFsdWUgPT09IG1pblZhbHVlKSByZXR1cm4gMDtcbiAgICByZXR1cm4gKHZhbHVlIC0gbWluVmFsdWUpIC8gKG1heFZhbHVlIC0gbWluVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWx0YVZhbCh4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwZXJjZW50ID0geCAvIHRoaXMuZ2V0QmFzZURpc3RhbmNlKCk7XG4gICAgY29uc3QgbWF4RGVsdGEgPSB0aGlzLnByb3BzLm1heFZhbHVlIC0gdGhpcy5wcm9wcy5taW5WYWx1ZTtcbiAgICByZXR1cm4gcGVyY2VudCAqIG1heERlbHRhO1xuICB9XG4gIHByaXZhdGUgZ2V0RGVsdGFYKHY6IG51bWJlcikge1xuICAgIGNvbnN0IHBlcmNlbnQgPSB2IC8gKHRoaXMucHJvcHMubWF4VmFsdWUgLSB0aGlzLnByb3BzLm1pblZhbHVlKTtcbiAgICBjb25zdCBtYXhEZWx0YSA9IHRoaXMuZ2V0QmFzZURpc3RhbmNlKCk7XG4gICAgcmV0dXJuIHBlcmNlbnQgKiBtYXhEZWx0YTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWUoYmFzZVY6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIpIHtcbiAgICAvLyBvZmZzZXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gc2xpZGVyIGhhbmRsZSBhbmQgdHJhY2sgbGVmdFxuICAgIGNvbnN0IHJhd1ZhbHVlID0gYmFzZVYgKyB0aGlzLmdldERlbHRhVmFsKG9mZnNldCk7XG5cbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVWYWx1ZShyYXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVZhbHVlKHZhbDogbnVtYmVyKSB7XG4gICAgY29uc3Qge21pblZhbHVlLCBzdGVwLCBtYXJrc30gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiBub3JtYWxpemVTbGlkZXJWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcyk7XG4gIH1cblxuICBzbGlkZTBMaXN0ZW5lciA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7dmFsdWUxLCBtaW5WYWx1ZSwgc2NhbGVDb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB2YWwgPSBzY2FsZUNvbmZpZ1xuICAgICAgPyB0aGlzLm5vcm1hbGl6ZVZhbHVlKHRoaXMuZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQoeCkpXG4gICAgICA6IHRoaXMuZ2V0VmFsdWUobWluVmFsdWUsIHgpO1xuICAgIHRoaXMucHJvcHMub25TbGlkZXIwQ2hhbmdlKGNsYW1wKFttaW5WYWx1ZSwgdmFsdWUxXSwgdmFsKSk7XG4gIH07XG5cbiAgc2xpZGUxTGlzdGVuZXIgPSAoeDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qge21pblZhbHVlLCBtYXhWYWx1ZSwgdmFsdWUwLCBzY2FsZUNvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHZhbCA9IHNjYWxlQ29uZmlnXG4gICAgICA/IHRoaXMubm9ybWFsaXplVmFsdWUodGhpcy5nZXRWYWx1ZUZyb21QaXhlbE9mZnNldCh4KSlcbiAgICAgIDogdGhpcy5nZXRWYWx1ZShtaW5WYWx1ZSwgeCk7XG4gICAgdGhpcy5wcm9wcy5vblNsaWRlcjFDaGFuZ2UoY2xhbXAoW3ZhbHVlMCwgbWF4VmFsdWVdLCB2YWwpKTtcbiAgfTtcblxuICBzbGlkZXJCYXJMaXN0ZW5lciA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7dmFsdWUwLCB2YWx1ZTEsIG1pblZhbHVlLCBtYXhWYWx1ZSwgc2NhbGVDb25maWd9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChzY2FsZUNvbmZpZykge1xuICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3I7XG4gICAgICBjb25zdCBiYXNlRGlzdGFuY2UgPSB0aGlzLmdldEJhc2VEaXN0YW5jZSgpO1xuXG4gICAgICAvLyBDb252ZXJ0IGN1cnJlbnQgcG9zaXRpb25zIHRvIHBpeGVsIHBvc2l0aW9ucywgYXBwbHkgZGVsdGEsIGNvbnZlcnQgYmFja1xuICAgICAgY29uc3QgcG9zMFB4ID0gdGhpcy5nZXRQb3NpdGlvbkZyb21WYWx1ZSh2YWx1ZTApICogYmFzZURpc3RhbmNlO1xuICAgICAgY29uc3QgcG9zMVB4ID0gdGhpcy5nZXRQb3NpdGlvbkZyb21WYWx1ZSh2YWx1ZTEpICogYmFzZURpc3RhbmNlO1xuICAgICAgY29uc3QgZGVsdGFQeCA9IHggLSBhbmNob3I7XG5cbiAgICAgIGNvbnN0IG5ld1ZhbDBSYXcgPSB0aGlzLm5vcm1hbGl6ZVZhbHVlKFxuICAgICAgICB0aGlzLmdldFZhbHVlRnJvbVBpeGVsT2Zmc2V0KHBvczBQeCArIGRlbHRhUHgpXG4gICAgICApO1xuICAgICAgY29uc3QgbmV3VmFsMVJhdyA9IHRoaXMubm9ybWFsaXplVmFsdWUoXG4gICAgICAgIHRoaXMuZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQocG9zMVB4ICsgZGVsdGFQeClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHZhbDAgPSBjbGFtcChbbWluVmFsdWUsIG1heFZhbHVlIC0gKG5ld1ZhbDFSYXcgLSBuZXdWYWwwUmF3KV0sIG5ld1ZhbDBSYXcpO1xuICAgICAgY29uc3QgdmFsMSA9IGNsYW1wKFt2YWwwICsgKG5ld1ZhbDFSYXcgLSBuZXdWYWwwUmF3KSwgbWF4VmFsdWVdLCBuZXdWYWwxUmF3KTtcblxuICAgICAgdGhpcy5wcm9wcy5vblNsaWRlckJhckNoYW5nZSh2YWwwLCB2YWwxKTtcbiAgICAgIHRoaXMuYW5jaG9yID0geDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3I7XG4gICAgICBjb25zdCBsZW5ndGggPSB2YWx1ZTEgLSB2YWx1ZTA7XG4gICAgICBjb25zdCB2YWwwID0gY2xhbXAoW21pblZhbHVlLCBtYXhWYWx1ZSAtIGxlbmd0aF0sIHRoaXMuZ2V0VmFsdWUodmFsdWUwLCB4IC0gYW5jaG9yKSk7XG4gICAgICBjb25zdCB2YWwxID0gY2xhbXAoW3ZhbDAgKyBsZW5ndGgsIG1heFZhbHVlXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZTEsIHggLSBhbmNob3IpKTtcblxuICAgICAgY29uc3QgZGVsdGFYID0gdGhpcy5nZXREZWx0YVgodmFsMCAtIHRoaXMucHJvcHMudmFsdWUwKTtcbiAgICAgIHRoaXMucHJvcHMub25TbGlkZXJCYXJDaGFuZ2UodmFsMCwgdmFsMSk7XG4gICAgICB0aGlzLmFuY2hvciA9IHRoaXMuYW5jaG9yICsgZGVsdGFYO1xuICAgIH1cbiAgfTtcblxuICBjYWxjSGFuZGxlTGVmdDAgPSAodzogbnVtYmVyLCBsOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gdyA9PT0gMFxuICAgICAgPyBgY2FsYygke2x9JSAtICR7dGhpcy5wcm9wcy5zbGlkZXJIYW5kbGVXaWR0aCAvIDJ9cHgpYFxuICAgICAgOiBgY2FsYygke2x9JSAtICR7dGhpcy5wcm9wcy5zbGlkZXJIYW5kbGVXaWR0aCAvIDJ9cHgpYDtcbiAgfTtcblxuICBjYWxjSGFuZGxlTGVmdDEgPSAodzogbnVtYmVyLCBsOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5pc1JhbmdlZCAmJiB3ID09PSAwXG4gICAgICA/IGAke2x9JWBcbiAgICAgIDogYGNhbGMoJHtsICsgd30lIC0gJHt0aGlzLnByb3BzLnNsaWRlckhhbmRsZVdpZHRoIC8gMn1weClgO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjbGFzc1NldCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaXNSYW5nZWQsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIHZhbHVlMSxcbiAgICAgIHZlcnRpY2FsLFxuICAgICAgc2xpZGVySGFuZGxlV2lkdGgsXG4gICAgICBzaG93VG9vbHRpcCxcbiAgICAgIHN0eWxlXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdmFsdWUwID0gIWlzUmFuZ2VkICYmIG1pblZhbHVlID4gMCA/IG1pblZhbHVlIDogdGhpcy5wcm9wcy52YWx1ZTA7XG4gICAgY29uc3QgdjBMZWZ0ID0gdGhpcy5nZXRQb3NpdGlvbkZyb21WYWx1ZSh2YWx1ZTApICogMTAwO1xuICAgIGNvbnN0IHYxUmlnaHQgPSB0aGlzLmdldFBvc2l0aW9uRnJvbVZhbHVlKHZhbHVlMSkgKiAxMDA7XG4gICAgY29uc3Qgd2lkdGggPSB2MVJpZ2h0IC0gdjBMZWZ0O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTbGlkZXJXcmFwcGVyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygna2ctc2xpZGVyJywgey4uLmNsYXNzU2V0LCBkaXNhYmxlZH0sIGNsYXNzTmFtZSl9XG4gICAgICAgIHJlZj17dGhpcy5yZWZ9XG4gICAgICAgICRpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICR2ZXJ0aWNhbD17dmVydGljYWx9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZFJhbmdlU2xpZGVyIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlclwiICR2ZXJ0aWNhbD17dmVydGljYWx9IHJlZj17dGhpcy50cmFja30+XG4gICAgICAgICAgPFNsaWRlckhhbmRsZVxuICAgICAgICAgICAgbGVmdD17dGhpcy5jYWxjSGFuZGxlTGVmdDAod2lkdGgsIHYwTGVmdCl9XG4gICAgICAgICAgICB2YWx1ZUxpc3RlbmVyPXt0aGlzLnNsaWRlMExpc3RlbmVyfVxuICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgZGlzcGxheT17aXNSYW5nZWR9XG4gICAgICAgICAgICB2ZXJ0aWNhbD17dmVydGljYWx9XG4gICAgICAgICAgICBzaG93VG9vbHRpcD17c2hvd1Rvb2x0aXB9XG4gICAgICAgICAgICB0cmFjaz17dGhpcy50cmFja31cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTbGlkZXJIYW5kbGVcbiAgICAgICAgICAgIGxlZnQ9e3RoaXMuY2FsY0hhbmRsZUxlZnQxKHdpZHRoLCB2MExlZnQpfVxuICAgICAgICAgICAgdmFsdWVMaXN0ZW5lcj17dGhpcy5zbGlkZTFMaXN0ZW5lcn1cbiAgICAgICAgICAgIHNsaWRlckhhbmRsZVdpZHRoPXtzbGlkZXJIYW5kbGVXaWR0aH1cbiAgICAgICAgICAgIHZlcnRpY2FsPXt2ZXJ0aWNhbH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZTF9XG4gICAgICAgICAgICBzaG93VG9vbHRpcD17c2hvd1Rvb2x0aXB9XG4gICAgICAgICAgICB0cmFjaz17dGhpcy50cmFja31cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTbGlkZXJCYXJIYW5kbGVcbiAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgIHYwTGVmdD17djBMZWZ0fVxuICAgICAgICAgICAgZW5hYmxlQmFyRHJhZz17dGhpcy5wcm9wcy5lbmFibGVCYXJEcmFnfVxuICAgICAgICAgICAgc2xpZGVyQmFyTGlzdGVuZXI9e3RoaXMuc2xpZGVyQmFyTGlzdGVuZXJ9XG4gICAgICAgICAgICB2ZXJ0aWNhbD17dmVydGljYWx9XG4gICAgICAgICAgICB0cmFjaz17dGhpcy50cmFja31cbiAgICAgICAgICAgIHNldEFuY2hvcj17dGhpcy5zZXRBbmNob3J9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRSYW5nZVNsaWRlcj5cbiAgICAgIDwvU2xpZGVyV3JhcHBlcj5cbiAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxhQUFBLEdBQUFG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ckM4QyxPQUFPLEVBQUU3QyxRQUFTO1FBQ2xCTyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJ5QixXQUFXLEVBQUVBLFdBQVk7UUFDekJRLEtBQUssRUFBRSxJQUFJLENBQUNBO01BQU0sQ0FDbkIsQ0FBQyxlQUNGbkosTUFBQSxZQUFBZ0osYUFBQSxDQUFDMUksYUFBQSxXQUFZO1FBQ1g4SSxJQUFJLEVBQUUsSUFBSSxDQUFDSyxlQUFlLENBQUNWLEtBQUssRUFBRUYsTUFBTSxDQUFFO1FBQzFDUyxhQUFhLEVBQUUsSUFBSSxDQUFDSSxjQUFlO1FBQ25DaEQsaUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQ1EsUUFBUSxFQUFFQSxRQUFTO1FBQ25CSCxLQUFLLEVBQUVsQyxNQUFPO1FBQ2Q4RCxXQUFXLEVBQUVBLFdBQVk7UUFDekJRLEtBQUssRUFBRSxJQUFJLENBQUNBO01BQU0sQ0FDbkIsQ0FBQyxlQUNGbkosTUFBQSxZQUFBZ0osYUFBQSxDQUFDekksZ0JBQUEsV0FBZTtRQUNkd0ksS0FBSyxFQUFFQSxLQUFNO1FBQ2JGLE1BQU0sRUFBRUEsTUFBTztRQUNmYyxhQUFhLEVBQUUsSUFBSSxDQUFDOUYsS0FBSyxDQUFDOEYsYUFBYztRQUN4Q0MsaUJBQWlCLEVBQUUsSUFBSSxDQUFDQSxpQkFBa0I7UUFDMUMxQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJpQyxLQUFLLEVBQUUsSUFBSSxDQUFDQSxLQUFNO1FBQ2xCVSxTQUFTLEVBQUUsSUFBSSxDQUFDQTtNQUFVLENBQzNCLENBQ2dCLENBQ04sQ0FBQztJQUVwQjtFQUFDO0FBQUEsRUFoTmlDQyxnQkFBUztBQUFBLElBQUFuSCxnQkFBQSxhQUF4QnlCLE1BQU0sa0JBQ0g7RUFDcEIyRixLQUFLLEVBQUUsRUFBRTtFQUNUcEQsUUFBUSxFQUFFLElBQUk7RUFDZG5CLE1BQU0sRUFBRSxDQUFDO0VBQ1RYLE1BQU0sRUFBRSxHQUFHO0VBQ1hDLFFBQVEsRUFBRSxDQUFDO0VBQ1hTLFFBQVEsRUFBRSxHQUFHO0VBQ2I0QyxJQUFJLEVBQUUsQ0FBQztFQUNQekIsaUJBQWlCLEVBQUUsRUFBRTtFQUNyQmlELGFBQWEsRUFBRSxLQUFLO0VBQ3BCdkUsZUFBZSxFQUFFNUIsSUFBSTtFQUNyQmlDLGVBQWUsRUFBRWpDLElBQUk7RUFDckI2QyxpQkFBaUIsRUFBRTdDLElBQUk7RUFDdkJrRixRQUFRLEVBQUUsS0FBSztFQUNmeEIsUUFBUSxFQUFFLEtBQUs7RUFDZnlCLFdBQVcsRUFBRTtBQUNmLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
252
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9zbGlkZXJIYW5kbGUiLCJfc2xpZGVyQmFySGFuZGxlIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwibm9vcCIsIlN0eWxlZFJhbmdlU2xpZGVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwic2xpZGVyQmFyQmdkIiwiY29uY2F0IiwiJHZlcnRpY2FsIiwic2xpZGVyQmFySGVpZ2h0IiwiU2xpZGVyV3JhcHBlciIsIlNsaWRlciIsImV4cG9ydHMiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiY3JlYXRlUmVmIiwieCIsImFuY2hvciIsIl90aGlzJHByb3BzIiwidmFsdWUxIiwibWluVmFsdWUiLCJzY2FsZUNvbmZpZyIsInZhbCIsIm5vcm1hbGl6ZVZhbHVlIiwiZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQiLCJnZXRWYWx1ZSIsIm9uU2xpZGVyMENoYW5nZSIsImNsYW1wIiwiX3RoaXMkcHJvcHMyIiwibWF4VmFsdWUiLCJ2YWx1ZTAiLCJvblNsaWRlcjFDaGFuZ2UiLCJfdGhpcyRwcm9wczMiLCJiYXNlRGlzdGFuY2UiLCJnZXRCYXNlRGlzdGFuY2UiLCJwb3MwUHgiLCJnZXRQb3NpdGlvbkZyb21WYWx1ZSIsInBvczFQeCIsImRlbHRhUHgiLCJuZXdWYWwwUmF3IiwibmV3VmFsMVJhdyIsInZhbDAiLCJ2YWwxIiwib25TbGlkZXJCYXJDaGFuZ2UiLCJkZWx0YVgiLCJnZXREZWx0YVgiLCJ3IiwibCIsInNsaWRlckhhbmRsZVdpZHRoIiwiaXNSYW5nZWQiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwicmVmIiwiY3VycmVudCIsInZlcnRpY2FsIiwib2Zmc2V0SGVpZ2h0Iiwib2Zmc2V0V2lkdGgiLCJwaXhlbE9mZnNldCIsIl90aGlzJHByb3BzNCIsInBvc2l0aW9uIiwicG9zaXRpb25Ub1ZhbHVlIiwiX3RoaXMkcHJvcHM1IiwidmFsdWVUb1Bvc2l0aW9uIiwiZ2V0RGVsdGFWYWwiLCJwZXJjZW50IiwibWF4RGVsdGEiLCJ2IiwiYmFzZVYiLCJvZmZzZXQiLCJyYXdWYWx1ZSIsIl90aGlzJHByb3BzNiIsInN0ZXAiLCJtYXJrcyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwicmVuZGVyIiwiX3RoaXMkcHJvcHM3IiwiY2xhc3NOYW1lIiwiY2xhc3NTZXQiLCJkaXNhYmxlZCIsInNob3dUb29sdGlwIiwic3R5bGUiLCJ2MExlZnQiLCJ2MVJpZ2h0Iiwid2lkdGgiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NuYW1lcyIsIiRpc1JhbmdlZCIsInRyYWNrIiwibGVmdCIsImNhbGNIYW5kbGVMZWZ0MCIsInZhbHVlTGlzdGVuZXIiLCJzbGlkZTBMaXN0ZW5lciIsImRpc3BsYXkiLCJjYWxjSGFuZGxlTGVmdDEiLCJzbGlkZTFMaXN0ZW5lciIsImVuYWJsZUJhckRyYWciLCJzbGlkZXJCYXJMaXN0ZW5lciIsInNldEFuY2hvciIsIkNvbXBvbmVudCIsInRpdGxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9zbGlkZXIvc2xpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgUmVmT2JqZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgU2xpZGVySGFuZGxlIGZyb20gJy4vc2xpZGVyLWhhbmRsZSc7XG5pbXBvcnQgU2xpZGVyQmFySGFuZGxlIGZyb20gJy4vc2xpZGVyLWJhci1oYW5kbGUnO1xuaW1wb3J0IHtub3JtYWxpemVTbGlkZXJWYWx1ZSwgY2xhbXAsIHZhbHVlVG9Qb3NpdGlvbiwgcG9zaXRpb25Ub1ZhbHVlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB0eXBlIHtTbGlkZXJTY2FsZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybjtcbn1cblxuaW50ZXJmYWNlIFN0eWxlZFJhbmdlU2xpZGVyUHJvcHMge1xuICAkdmVydGljYWw/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRSYW5nZVNsaWRlciA9IHN0eWxlZC5kaXY8U3R5bGVkUmFuZ2VTbGlkZXJQcm9wcz5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJCYXJCZ2R9O1xuICAke3Byb3BzID0+IGAke3Byb3BzLiR2ZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0J306ICR7cHJvcHMudGhlbWUuc2xpZGVyQmFySGVpZ2h0fXB4YH07XG4gICR7cHJvcHMgPT4gYCR7cHJvcHMuJHZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnfTogMTAwJWB9O1xuYDtcblxuZXhwb3J0IHR5cGUgU3R5bGVSYW5nZVNsaWRlclR5cGUgPSB0eXBlb2YgU3R5bGVkUmFuZ2VTbGlkZXIgJiBIVE1MRGl2RWxlbWVudDtcblxuaW50ZXJmYWNlIFNsaWRlcldyYXBwZXJQcm9wcyB7XG4gICRpc1JhbmdlZD86IGJvb2xlYW47XG4gICR2ZXJ0aWNhbD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFNsaWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2PFNsaWRlcldyYXBwZXJQcm9wcz5gXG4gIGZsZXgtZ3JvdzogMTtcbmA7XG5cbnR5cGUgU2xpZGVyUHJvcHMgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGlzUmFuZ2VkOiBib29sZWFuO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG1pblZhbHVlOiBudW1iZXI7XG4gIG1heFZhbHVlOiBudW1iZXI7XG4gIHNsaWRlckhhbmRsZVdpZHRoOiBudW1iZXI7XG4gIG9uU2xpZGVyMENoYW5nZTogKHZhbDogbnVtYmVyKSA9PiBhbnk7XG4gIG9uU2xpZGVyMUNoYW5nZTogKHZhbDogbnVtYmVyKSA9PiBhbnk7XG4gIG9uU2xpZGVyQmFyQ2hhbmdlOiAodmFsMDogbnVtYmVyLCB2YWwxOiBudW1iZXIpID0+IHZvaWQ7XG4gIHN0ZXA6IG51bWJlcjtcbiAgZW5hYmxlQmFyRHJhZzogYm9vbGVhbjtcbiAgc2hvd1Rvb2x0aXA6IGJvb2xlYW47XG4gIHZlcnRpY2FsOiBib29sZWFuO1xuICBtYXJrcz86IG51bWJlcltdIHwgbnVsbDtcbiAgY2xhc3NTZXQ/OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogb2JqZWN0O1xuICBzY2FsZUNvbmZpZz86IFNsaWRlclNjYWxlQ29uZmlnIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNsaWRlciBleHRlbmRzIENvbXBvbmVudDxTbGlkZXJQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHRpdGxlOiAnJyxcbiAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICB2YWx1ZTA6IDAsXG4gICAgdmFsdWUxOiAxMDAsXG4gICAgbWluVmFsdWU6IDAsXG4gICAgbWF4VmFsdWU6IDEwMCxcbiAgICBzdGVwOiAxLFxuICAgIHNsaWRlckhhbmRsZVdpZHRoOiAxMixcbiAgICBlbmFibGVCYXJEcmFnOiBmYWxzZSxcbiAgICBvblNsaWRlcjBDaGFuZ2U6IG5vb3AsXG4gICAgb25TbGlkZXIxQ2hhbmdlOiBub29wLFxuICAgIG9uU2xpZGVyQmFyQ2hhbmdlOiBub29wLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgc2hvd1Rvb2x0aXA6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBhbmNob3IgPSAwO1xuXG4gIHB1YmxpYyByZWY6IFJlZk9iamVjdDwodHlwZW9mIFNsaWRlcldyYXBwZXIgJiBIVE1MRGl2RWxlbWVudCkgfCBudWxsPiA9IGNyZWF0ZVJlZjxcbiAgICAodHlwZW9mIFNsaWRlcldyYXBwZXIgJiBIVE1MRGl2RWxlbWVudCkgfCBudWxsXG4gID4oKTtcbiAgcHVibGljIHRyYWNrOiBSZWZPYmplY3Q8U3R5bGVSYW5nZVNsaWRlclR5cGUgfCBudWxsPiA9IGNyZWF0ZVJlZjxTdHlsZVJhbmdlU2xpZGVyVHlwZSB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3BzOiBTbGlkZXJQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QW5jaG9yID0gKHg6IG51bWJlcikgPT4ge1xuICAgIC8vIHVzZWQgdG8gY2FsY3VsYXRlIGRlbHRhXG4gICAgdGhpcy5hbmNob3IgPSB4O1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0QmFzZURpc3RhbmNlKCkge1xuICAgIGlmICghdGhpcy5yZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLnZlcnRpY2FsID8gdGhpcy5yZWYuY3VycmVudC5vZmZzZXRIZWlnaHQgOiB0aGlzLnJlZi5jdXJyZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21QaXhlbE9mZnNldChwaXhlbE9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB7bWluVmFsdWUsIG1heFZhbHVlLCBzY2FsZUNvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGJhc2VEaXN0YW5jZSA9IHRoaXMuZ2V0QmFzZURpc3RhbmNlKCk7XG4gICAgaWYgKGJhc2VEaXN0YW5jZSA9PT0gMCkgcmV0dXJuIG1pblZhbHVlO1xuXG4gICAgY29uc3QgcG9zaXRpb24gPSBwaXhlbE9mZnNldCAvIGJhc2VEaXN0YW5jZTtcblxuICAgIGlmIChzY2FsZUNvbmZpZykge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uVG9WYWx1ZShwb3NpdGlvbiwgbWluVmFsdWUsIG1heFZhbHVlLCBzY2FsZUNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBtaW5WYWx1ZSArIHBvc2l0aW9uICogKG1heFZhbHVlIC0gbWluVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbkZyb21WYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB7bWluVmFsdWUsIG1heFZhbHVlLCBzY2FsZUNvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgIGlmIChzY2FsZUNvbmZpZykge1xuICAgICAgcmV0dXJuIHZhbHVlVG9Qb3NpdGlvbih2YWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCBzY2FsZUNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChtYXhWYWx1ZSA9PT0gbWluVmFsdWUpIHJldHVybiAwO1xuICAgIHJldHVybiAodmFsdWUgLSBtaW5WYWx1ZSkgLyAobWF4VmFsdWUgLSBtaW5WYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlbHRhVmFsKHg6IG51bWJlcikge1xuICAgIGNvbnN0IHBlcmNlbnQgPSB4IC8gdGhpcy5nZXRCYXNlRGlzdGFuY2UoKTtcbiAgICBjb25zdCBtYXhEZWx0YSA9IHRoaXMucHJvcHMubWF4VmFsdWUgLSB0aGlzLnByb3BzLm1pblZhbHVlO1xuICAgIHJldHVybiBwZXJjZW50ICogbWF4RGVsdGE7XG4gIH1cbiAgcHJpdmF0ZSBnZXREZWx0YVgodjogbnVtYmVyKSB7XG4gICAgY29uc3QgcGVyY2VudCA9IHYgLyAodGhpcy5wcm9wcy5tYXhWYWx1ZSAtIHRoaXMucHJvcHMubWluVmFsdWUpO1xuICAgIGNvbnN0IG1heERlbHRhID0gdGhpcy5nZXRCYXNlRGlzdGFuY2UoKTtcbiAgICByZXR1cm4gcGVyY2VudCAqIG1heERlbHRhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZShiYXNlVjogbnVtYmVyLCBvZmZzZXQ6IG51bWJlcikge1xuICAgIC8vIG9mZnNldCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBzbGlkZXIgaGFuZGxlIGFuZCB0cmFjayBsZWZ0XG4gICAgY29uc3QgcmF3VmFsdWUgPSBiYXNlViArIHRoaXMuZ2V0RGVsdGFWYWwob2Zmc2V0KTtcblxuICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZVZhbHVlKHJhd1ZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVmFsdWUodmFsOiBudW1iZXIpIHtcbiAgICBjb25zdCB7bWluVmFsdWUsIHN0ZXAsIG1hcmtzfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVNsaWRlclZhbHVlKHZhbCwgbWluVmFsdWUsIHN0ZXAsIG1hcmtzKTtcbiAgfVxuXG4gIHNsaWRlMExpc3RlbmVyID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHt2YWx1ZTEsIG1pblZhbHVlLCBzY2FsZUNvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHZhbCA9IHNjYWxlQ29uZmlnXG4gICAgICA/IHRoaXMubm9ybWFsaXplVmFsdWUodGhpcy5nZXRWYWx1ZUZyb21QaXhlbE9mZnNldCh4KSlcbiAgICAgIDogdGhpcy5nZXRWYWx1ZShtaW5WYWx1ZSwgeCk7XG4gICAgdGhpcy5wcm9wcy5vblNsaWRlcjBDaGFuZ2UoY2xhbXAoW21pblZhbHVlLCB2YWx1ZTFdLCB2YWwpKTtcbiAgfTtcblxuICBzbGlkZTFMaXN0ZW5lciA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7bWluVmFsdWUsIG1heFZhbHVlLCB2YWx1ZTAsIHNjYWxlQ29uZmlnfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdmFsID0gc2NhbGVDb25maWdcbiAgICAgID8gdGhpcy5ub3JtYWxpemVWYWx1ZSh0aGlzLmdldFZhbHVlRnJvbVBpeGVsT2Zmc2V0KHgpKVxuICAgICAgOiB0aGlzLmdldFZhbHVlKG1pblZhbHVlLCB4KTtcbiAgICB0aGlzLnByb3BzLm9uU2xpZGVyMUNoYW5nZShjbGFtcChbdmFsdWUwLCBtYXhWYWx1ZV0sIHZhbCkpO1xuICB9O1xuXG4gIHNsaWRlckJhckxpc3RlbmVyID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHt2YWx1ZTAsIHZhbHVlMSwgbWluVmFsdWUsIG1heFZhbHVlLCBzY2FsZUNvbmZpZ30gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHNjYWxlQ29uZmlnKSB7XG4gICAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcjtcbiAgICAgIGNvbnN0IGJhc2VEaXN0YW5jZSA9IHRoaXMuZ2V0QmFzZURpc3RhbmNlKCk7XG5cbiAgICAgIC8vIENvbnZlcnQgY3VycmVudCBwb3NpdGlvbnMgdG8gcGl4ZWwgcG9zaXRpb25zLCBhcHBseSBkZWx0YSwgY29udmVydCBiYWNrXG4gICAgICBjb25zdCBwb3MwUHggPSB0aGlzLmdldFBvc2l0aW9uRnJvbVZhbHVlKHZhbHVlMCkgKiBiYXNlRGlzdGFuY2U7XG4gICAgICBjb25zdCBwb3MxUHggPSB0aGlzLmdldFBvc2l0aW9uRnJvbVZhbHVlKHZhbHVlMSkgKiBiYXNlRGlzdGFuY2U7XG4gICAgICBjb25zdCBkZWx0YVB4ID0geCAtIGFuY2hvcjtcblxuICAgICAgY29uc3QgbmV3VmFsMFJhdyA9IHRoaXMubm9ybWFsaXplVmFsdWUoXG4gICAgICAgIHRoaXMuZ2V0VmFsdWVGcm9tUGl4ZWxPZmZzZXQocG9zMFB4ICsgZGVsdGFQeClcbiAgICAgICk7XG4gICAgICBjb25zdCBuZXdWYWwxUmF3ID0gdGhpcy5ub3JtYWxpemVWYWx1ZShcbiAgICAgICAgdGhpcy5nZXRWYWx1ZUZyb21QaXhlbE9mZnNldChwb3MxUHggKyBkZWx0YVB4KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdmFsMCA9IGNsYW1wKFttaW5WYWx1ZSwgbWF4VmFsdWUgLSAobmV3VmFsMVJhdyAtIG5ld1ZhbDBSYXcpXSwgbmV3VmFsMFJhdyk7XG4gICAgICBjb25zdCB2YWwxID0gY2xhbXAoW3ZhbDAgKyAobmV3VmFsMVJhdyAtIG5ld1ZhbDBSYXcpLCBtYXhWYWx1ZV0sIG5ld1ZhbDFSYXcpO1xuXG4gICAgICB0aGlzLnByb3BzLm9uU2xpZGVyQmFyQ2hhbmdlKHZhbDAsIHZhbDEpO1xuICAgICAgdGhpcy5hbmNob3IgPSB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcjtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHZhbHVlMSAtIHZhbHVlMDtcbiAgICAgIGNvbnN0IHZhbDAgPSBjbGFtcChbbWluVmFsdWUsIG1heFZhbHVlIC0gbGVuZ3RoXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZTAsIHggLSBhbmNob3IpKTtcbiAgICAgIGNvbnN0IHZhbDEgPSBjbGFtcChbdmFsMCArIGxlbmd0aCwgbWF4VmFsdWVdLCB0aGlzLmdldFZhbHVlKHZhbHVlMSwgeCAtIGFuY2hvcikpO1xuXG4gICAgICBjb25zdCBkZWx0YVggPSB0aGlzLmdldERlbHRhWCh2YWwwIC0gdGhpcy5wcm9wcy52YWx1ZTApO1xuICAgICAgdGhpcy5wcm9wcy5vblNsaWRlckJhckNoYW5nZSh2YWwwLCB2YWwxKTtcbiAgICAgIHRoaXMuYW5jaG9yID0gdGhpcy5hbmNob3IgKyBkZWx0YVg7XG4gICAgfVxuICB9O1xuXG4gIGNhbGNIYW5kbGVMZWZ0MCA9ICh3OiBudW1iZXIsIGw6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiB3ID09PSAwXG4gICAgICA/IGBjYWxjKCR7bH0lIC0gJHt0aGlzLnByb3BzLnNsaWRlckhhbmRsZVdpZHRoIC8gMn1weClgXG4gICAgICA6IGBjYWxjKCR7bH0lIC0gJHt0aGlzLnByb3BzLnNsaWRlckhhbmRsZVdpZHRoIC8gMn1weClgO1xuICB9O1xuXG4gIGNhbGNIYW5kbGVMZWZ0MSA9ICh3OiBudW1iZXIsIGw6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmlzUmFuZ2VkICYmIHcgPT09IDBcbiAgICAgID8gYCR7bH0lYFxuICAgICAgOiBgY2FsYygke2wgKyB3fSUgLSAke3RoaXMucHJvcHMuc2xpZGVySGFuZGxlV2lkdGggLyAyfXB4KWA7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsYXNzU2V0LFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpc1JhbmdlZCxcbiAgICAgIG1pblZhbHVlLFxuICAgICAgdmFsdWUxLFxuICAgICAgdmVydGljYWwsXG4gICAgICBzbGlkZXJIYW5kbGVXaWR0aCxcbiAgICAgIHNob3dUb29sdGlwLFxuICAgICAgc3R5bGVcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB2YWx1ZTAgPSAhaXNSYW5nZWQgJiYgbWluVmFsdWUgPiAwID8gbWluVmFsdWUgOiB0aGlzLnByb3BzLnZhbHVlMDtcbiAgICBjb25zdCB2MExlZnQgPSB0aGlzLmdldFBvc2l0aW9uRnJvbVZhbHVlKHZhbHVlMCkgKiAxMDA7XG4gICAgY29uc3QgdjFSaWdodCA9IHRoaXMuZ2V0UG9zaXRpb25Gcm9tVmFsdWUodmFsdWUxKSAqIDEwMDtcbiAgICBjb25zdCB3aWR0aCA9IHYxUmlnaHQgLSB2MExlZnQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNsaWRlcldyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdrZy1zbGlkZXInLCB7Li4uY2xhc3NTZXQsIGRpc2FibGVkfSwgY2xhc3NOYW1lKX1cbiAgICAgICAgcmVmPXt0aGlzLnJlZn1cbiAgICAgICAgJGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgJHZlcnRpY2FsPXt2ZXJ0aWNhbH1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkUmFuZ2VTbGlkZXIgY2xhc3NOYW1lPVwia2ctcmFuZ2Utc2xpZGVyXCIgJHZlcnRpY2FsPXt2ZXJ0aWNhbH0gcmVmPXt0aGlzLnRyYWNrfT5cbiAgICAgICAgICA8U2xpZGVySGFuZGxlXG4gICAgICAgICAgICBsZWZ0PXt0aGlzLmNhbGNIYW5kbGVMZWZ0MCh3aWR0aCwgdjBMZWZ0KX1cbiAgICAgICAgICAgIHZhbHVlTGlzdGVuZXI9e3RoaXMuc2xpZGUwTGlzdGVuZXJ9XG4gICAgICAgICAgICBzbGlkZXJIYW5kbGVXaWR0aD17c2xpZGVySGFuZGxlV2lkdGh9XG4gICAgICAgICAgICBkaXNwbGF5PXtpc1JhbmdlZH1cbiAgICAgICAgICAgIHZlcnRpY2FsPXt2ZXJ0aWNhbH1cbiAgICAgICAgICAgIHNob3dUb29sdGlwPXtzaG93VG9vbHRpcH1cbiAgICAgICAgICAgIHRyYWNrPXt0aGlzLnRyYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNsaWRlckhhbmRsZVxuICAgICAgICAgICAgbGVmdD17dGhpcy5jYWxjSGFuZGxlTGVmdDEod2lkdGgsIHYwTGVmdCl9XG4gICAgICAgICAgICB2YWx1ZUxpc3RlbmVyPXt0aGlzLnNsaWRlMUxpc3RlbmVyfVxuICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgdmVydGljYWw9e3ZlcnRpY2FsfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlMX1cbiAgICAgICAgICAgIHNob3dUb29sdGlwPXtzaG93VG9vbHRpcH1cbiAgICAgICAgICAgIHRyYWNrPXt0aGlzLnRyYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNsaWRlckJhckhhbmRsZVxuICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgdjBMZWZ0PXt2MExlZnR9XG4gICAgICAgICAgICBlbmFibGVCYXJEcmFnPXt0aGlzLnByb3BzLmVuYWJsZUJhckRyYWd9XG4gICAgICAgICAgICBzbGlkZXJCYXJMaXN0ZW5lcj17dGhpcy5zbGlkZXJCYXJMaXN0ZW5lcn1cbiAgICAgICAgICAgIHZlcnRpY2FsPXt2ZXJ0aWNhbH1cbiAgICAgICAgICAgIHRyYWNrPXt0aGlzLnRyYWNrfVxuICAgICAgICAgICAgc2V0QW5jaG9yPXt0aGlzLnNldEFuY2hvcn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZFJhbmdlU2xpZGVyPlxuICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUQsc0JBQUEs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O1FBQ25DN0MsaUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQzhDLE9BQU8sRUFBRTdDLFFBQVM7UUFDbEJPLFFBQVEsRUFBRUEsUUFBUztRQUNuQnlCLFdBQVcsRUFBRUEsV0FBWTtRQUN6QlEsS0FBSyxFQUFFLElBQUksQ0FBQ0E7TUFBTSxDQUNuQixDQUFDLGVBQ0ZuSixNQUFBLFlBQUFnSixhQUFBLENBQUMxSSxhQUFBLFdBQVk7UUFDWDhJLElBQUksRUFBRSxJQUFJLENBQUNLLGVBQWUsQ0FBQ1YsS0FBSyxFQUFFRixNQUFNLENBQUU7UUFDMUNTLGFBQWEsRUFBRSxJQUFJLENBQUNJLGNBQWU7UUFDbkNoRCxpQkFBaUIsRUFBRUEsaUJBQWtCO1FBQ3JDUSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJILEtBQUssRUFBRWxDLE1BQU87UUFDZDhELFdBQVcsRUFBRUEsV0FBWTtRQUN6QlEsS0FBSyxFQUFFLElBQUksQ0FBQ0E7TUFBTSxDQUNuQixDQUFDLGVBQ0ZuSixNQUFBLFlBQUFnSixhQUFBLENBQUN6SSxnQkFBQSxXQUFlO1FBQ2R3SSxLQUFLLEVBQUVBLEtBQU07UUFDYkYsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZjLGFBQWEsRUFBRSxJQUFJLENBQUM5RixLQUFLLENBQUM4RixhQUFjO1FBQ3hDQyxpQkFBaUIsRUFBRSxJQUFJLENBQUNBLGlCQUFrQjtRQUMxQzFDLFFBQVEsRUFBRUEsUUFBUztRQUNuQmlDLEtBQUssRUFBRSxJQUFJLENBQUNBLEtBQU07UUFDbEJVLFNBQVMsRUFBRSxJQUFJLENBQUNBO01BQVUsQ0FDM0IsQ0FDZ0IsQ0FDTixDQUFDO0lBRXBCO0VBQUM7QUFBQSxFQWhOaUNDLGdCQUFTO0FBQUEsSUFBQW5ILGdCQUFBLGFBQXhCeUIsTUFBTSxrQkFDSDtFQUNwQjJGLEtBQUssRUFBRSxFQUFFO0VBQ1RwRCxRQUFRLEVBQUUsSUFBSTtFQUNkbkIsTUFBTSxFQUFFLENBQUM7RUFDVFgsTUFBTSxFQUFFLEdBQUc7RUFDWEMsUUFBUSxFQUFFLENBQUM7RUFDWFMsUUFBUSxFQUFFLEdBQUc7RUFDYjRDLElBQUksRUFBRSxDQUFDO0VBQ1B6QixpQkFBaUIsRUFBRSxFQUFFO0VBQ3JCaUQsYUFBYSxFQUFFLEtBQUs7RUFDcEJ2RSxlQUFlLEVBQUU1QixJQUFJO0VBQ3JCaUMsZUFBZSxFQUFFakMsSUFBSTtFQUNyQjZDLGlCQUFpQixFQUFFN0MsSUFBSTtFQUN2QmtGLFFBQVEsRUFBRSxLQUFLO0VBQ2Z4QixRQUFRLEVBQUUsS0FBSztFQUNmeUIsV0FBVyxFQUFFO0FBQ2YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==