@airtable/blocks 1.9.0 → 1.10.0-experimental-48096ae-20211116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -1
- package/dist/cjs/color_utils.js +2 -1
- package/dist/cjs/colors.js +2 -1
- package/dist/cjs/error_utils.js +19 -1
- package/dist/cjs/event_tracker.js +2 -1
- package/dist/cjs/global_config.js +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/injected/airtable_interface.js +2 -1
- package/dist/cjs/models/abstract_model.js +2 -1
- package/dist/cjs/models/abstract_model_with_async_data.js +2 -1
- package/dist/cjs/models/base.js +4 -2
- package/dist/cjs/models/create_aggregators.js +2 -1
- package/dist/cjs/models/cursor.js +4 -1
- package/dist/cjs/models/field.js +5 -14
- package/dist/cjs/models/grouped_record_query_result.js +7 -15
- package/dist/cjs/models/linked_records_query_result.js +77 -28
- package/dist/cjs/models/models.js +2 -1
- package/dist/cjs/models/mutation_constants.js +2 -1
- package/dist/cjs/models/mutations.js +20 -163
- package/dist/cjs/models/object_pool.js +2 -1
- package/dist/cjs/models/query_manager.js +328 -0
- package/dist/cjs/models/record.js +310 -56
- package/dist/cjs/models/record_coloring.js +2 -1
- package/dist/cjs/models/record_query_result.js +6 -2
- package/dist/cjs/models/record_store.js +556 -766
- package/dist/cjs/models/session.js +2 -1
- package/dist/cjs/models/table.js +10 -8
- package/dist/cjs/models/table_or_view_query_result.js +482 -415
- package/dist/cjs/models/view.js +2 -1
- package/dist/cjs/models/view_data_store.js +245 -296
- package/dist/cjs/models/view_metadata_query_result.js +2 -1
- package/dist/cjs/perform_record_action.js +2 -1
- package/dist/cjs/private_utils.js +42 -1
- package/dist/cjs/sdk.js +13 -2
- package/dist/cjs/settings_button.js +2 -1
- package/dist/cjs/stats/block_stats.js +2 -1
- package/dist/cjs/testing/abstract_mock_airtable_interface.js +57 -11
- package/dist/cjs/types/aggregators.js +2 -1
- package/dist/cjs/types/airtable_interface.js +2 -1
- package/dist/cjs/types/attachment.js +2 -1
- package/dist/cjs/types/backend_fetch_types.js +2 -1
- package/dist/cjs/types/base.js +2 -1
- package/dist/cjs/types/block.js +2 -1
- package/dist/cjs/types/block_query_spec.js +86 -0
- package/dist/cjs/types/collaborator.js +2 -1
- package/dist/cjs/types/cursor.js +2 -1
- package/dist/cjs/types/field.js +2 -1
- package/dist/cjs/types/global_config.js +2 -1
- package/dist/cjs/types/mutations.js +2 -1
- package/dist/cjs/types/permission_levels.js +2 -1
- package/dist/cjs/types/record.js +2 -1
- package/dist/cjs/types/record_action_data.js +2 -1
- package/dist/cjs/types/stat.js +2 -1
- package/dist/cjs/types/table.js +2 -1
- package/dist/cjs/types/undo_redo.js +2 -1
- package/dist/cjs/types/view.js +2 -1
- package/dist/cjs/types/viewport.js +2 -1
- package/dist/cjs/ui/base_provider.js +2 -1
- package/dist/cjs/ui/baymax_utils.js +2 -1
- package/dist/cjs/ui/block_wrapper.js +2 -1
- package/dist/cjs/ui/box.js +2 -1
- package/dist/cjs/ui/button.js +2 -1
- package/dist/cjs/ui/cell_renderer.js +2 -1
- package/dist/cjs/ui/choice_token.js +2 -1
- package/dist/cjs/ui/collaborator_token.js +2 -1
- package/dist/cjs/ui/color_palette.js +2 -1
- package/dist/cjs/ui/color_palette_synced.js +2 -1
- package/dist/cjs/ui/confirmation_dialog.js +2 -1
- package/dist/cjs/ui/control_sizes.js +2 -1
- package/dist/cjs/ui/create_detect_element_resize.js +2 -1
- package/dist/cjs/ui/css_helpers.js +2 -1
- package/dist/cjs/ui/dialog.js +2 -1
- package/dist/cjs/ui/dialog_close_button.js +2 -1
- package/dist/cjs/ui/expand_record.js +2 -1
- package/dist/cjs/ui/expand_record_list.js +2 -1
- package/dist/cjs/ui/expand_record_picker_async.js +2 -1
- package/dist/cjs/ui/field_icon.js +2 -1
- package/dist/cjs/ui/field_picker.js +2 -1
- package/dist/cjs/ui/field_picker_synced.js +2 -1
- package/dist/cjs/ui/form_field.js +2 -1
- package/dist/cjs/ui/geometry/geometry.js +2 -1
- package/dist/cjs/ui/geometry/point.js +2 -1
- package/dist/cjs/ui/geometry/rect.js +2 -1
- package/dist/cjs/ui/geometry/size.js +2 -1
- package/dist/cjs/ui/global_alert.js +2 -1
- package/dist/cjs/ui/global_config_synced_component_helpers.js +2 -1
- package/dist/cjs/ui/heading.js +2 -1
- package/dist/cjs/ui/icon.js +2 -1
- package/dist/cjs/ui/icon_config.js +6 -3
- package/dist/cjs/ui/initialize_block.js +2 -1
- package/dist/cjs/ui/input.js +2 -1
- package/dist/cjs/ui/input_synced.js +2 -1
- package/dist/cjs/ui/key_codes.js +2 -1
- package/dist/cjs/ui/label.js +2 -1
- package/dist/cjs/ui/link.js +2 -1
- package/dist/cjs/ui/loader.js +2 -1
- package/dist/cjs/ui/modal.js +2 -1
- package/dist/cjs/ui/model_picker_select.js +2 -1
- package/dist/cjs/ui/popover.js +2 -1
- package/dist/cjs/ui/progress_bar.js +2 -1
- package/dist/cjs/ui/record_card.js +2 -1
- package/dist/cjs/ui/record_card_list.js +2 -1
- package/dist/cjs/ui/remote_utils.js +2 -1
- package/dist/cjs/ui/sdk_context.js +2 -1
- package/dist/cjs/ui/select.js +2 -1
- package/dist/cjs/ui/select_and_select_buttons_helpers.js +2 -1
- package/dist/cjs/ui/select_buttons.js +2 -1
- package/dist/cjs/ui/select_buttons_synced.js +2 -1
- package/dist/cjs/ui/select_synced.js +2 -1
- package/dist/cjs/ui/switch.js +2 -1
- package/dist/cjs/ui/switch_synced.js +2 -1
- package/dist/cjs/ui/synced.js +2 -1
- package/dist/cjs/ui/system/all_styles_set.js +2 -1
- package/dist/cjs/ui/system/appearance/appearance_set.js +2 -1
- package/dist/cjs/ui/system/appearance/background_color.js +2 -1
- package/dist/cjs/ui/system/appearance/border.js +2 -1
- package/dist/cjs/ui/system/appearance/border_radius.js +2 -1
- package/dist/cjs/ui/system/appearance/box_shadow.js +2 -1
- package/dist/cjs/ui/system/appearance/opacity.js +2 -1
- package/dist/cjs/ui/system/dimensions/dimensions_set.js +2 -1
- package/dist/cjs/ui/system/dimensions/height.js +2 -1
- package/dist/cjs/ui/system/dimensions/max_height.js +2 -1
- package/dist/cjs/ui/system/dimensions/max_width.js +2 -1
- package/dist/cjs/ui/system/dimensions/min_height.js +2 -1
- package/dist/cjs/ui/system/dimensions/min_width.js +2 -1
- package/dist/cjs/ui/system/dimensions/width.js +2 -1
- package/dist/cjs/ui/system/display.js +2 -1
- package/dist/cjs/ui/system/flex_container/align_content.js +2 -1
- package/dist/cjs/ui/system/flex_container/align_items.js +2 -1
- package/dist/cjs/ui/system/flex_container/flex_container_set.js +2 -1
- package/dist/cjs/ui/system/flex_container/flex_direction.js +2 -1
- package/dist/cjs/ui/system/flex_container/flex_wrap.js +2 -1
- package/dist/cjs/ui/system/flex_container/justify_content.js +2 -1
- package/dist/cjs/ui/system/flex_container/justify_items.js +2 -1
- package/dist/cjs/ui/system/flex_item/align_self.js +2 -1
- package/dist/cjs/ui/system/flex_item/flex.js +2 -1
- package/dist/cjs/ui/system/flex_item/flex_basis.js +2 -1
- package/dist/cjs/ui/system/flex_item/flex_grow.js +2 -1
- package/dist/cjs/ui/system/flex_item/flex_item_set.js +2 -1
- package/dist/cjs/ui/system/flex_item/flex_shrink.js +2 -1
- package/dist/cjs/ui/system/flex_item/justify_self.js +2 -1
- package/dist/cjs/ui/system/flex_item/order.js +2 -1
- package/dist/cjs/ui/system/index.js +2 -1
- package/dist/cjs/ui/system/overflow.js +2 -1
- package/dist/cjs/ui/system/position/bottom.js +2 -1
- package/dist/cjs/ui/system/position/left.js +2 -1
- package/dist/cjs/ui/system/position/position.js +2 -1
- package/dist/cjs/ui/system/position/position_set.js +2 -1
- package/dist/cjs/ui/system/position/right.js +2 -1
- package/dist/cjs/ui/system/position/top.js +2 -1
- package/dist/cjs/ui/system/position/z_index.js +2 -1
- package/dist/cjs/ui/system/spacing/margin.js +2 -1
- package/dist/cjs/ui/system/spacing/padding.js +2 -1
- package/dist/cjs/ui/system/spacing/spacing_set.js +2 -1
- package/dist/cjs/ui/system/typography/font_family.js +2 -1
- package/dist/cjs/ui/system/typography/font_size.js +2 -1
- package/dist/cjs/ui/system/typography/font_style.js +2 -1
- package/dist/cjs/ui/system/typography/font_weight.js +2 -1
- package/dist/cjs/ui/system/typography/letter_spacing.js +2 -1
- package/dist/cjs/ui/system/typography/line_height.js +2 -1
- package/dist/cjs/ui/system/typography/text_align.js +2 -1
- package/dist/cjs/ui/system/typography/text_color.js +2 -1
- package/dist/cjs/ui/system/typography/text_decoration.js +2 -1
- package/dist/cjs/ui/system/typography/text_transform.js +2 -1
- package/dist/cjs/ui/system/typography/typography_set.js +2 -1
- package/dist/cjs/ui/system/utils/create_responsive_prop_type.js +2 -1
- package/dist/cjs/ui/system/utils/create_style_prop_types.js +2 -1
- package/dist/cjs/ui/system/utils/csstype.js +2 -1
- package/dist/cjs/ui/system/utils/ensure_numbers_are_within_scale.js +2 -1
- package/dist/cjs/ui/system/utils/get_style_props_for_responsive_prop.js +2 -1
- package/dist/cjs/ui/system/utils/types.js +2 -1
- package/dist/cjs/ui/table_picker.js +2 -1
- package/dist/cjs/ui/table_picker_synced.js +2 -1
- package/dist/cjs/ui/text.js +2 -1
- package/dist/cjs/ui/text_button.js +2 -1
- package/dist/cjs/ui/theme/default_theme/button_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/control_sizes.js +2 -1
- package/dist/cjs/ui/theme/default_theme/heading_styles.js +2 -1
- package/dist/cjs/ui/theme/default_theme/index.js +2 -1
- package/dist/cjs/ui/theme/default_theme/input_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/link_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/select_buttons_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/select_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/switch_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/text_button_variants.js +2 -1
- package/dist/cjs/ui/theme/default_theme/text_styles.js +2 -1
- package/dist/cjs/ui/theme/default_theme/tokens.js +2 -1
- package/dist/cjs/ui/theme/theme_context.js +2 -1
- package/dist/cjs/ui/theme/use_theme.js +2 -1
- package/dist/cjs/ui/tooltip.js +2 -1
- package/dist/cjs/ui/types/aria_props.js +2 -1
- package/dist/cjs/ui/types/data_attributes_prop.js +2 -1
- package/dist/cjs/ui/types/tooltip_anchor_props.js +2 -1
- package/dist/cjs/ui/ui.js +2 -1
- package/dist/cjs/ui/unstable_standalone_ui.js +2 -1
- package/dist/cjs/ui/use_array_identity.js +2 -1
- package/dist/cjs/ui/use_base.js +2 -1
- package/dist/cjs/ui/use_cursor.js +2 -1
- package/dist/cjs/ui/use_form_field.js +2 -1
- package/dist/cjs/ui/use_global_config.js +3 -2
- package/dist/cjs/ui/use_loadable.js +2 -1
- package/dist/cjs/ui/use_record_action_data.js +2 -1
- package/dist/cjs/ui/use_records.js +7 -2
- package/dist/cjs/ui/use_session.js +2 -1
- package/dist/cjs/ui/use_settings_button.js +2 -1
- package/dist/cjs/ui/use_styled_system.js +2 -1
- package/dist/cjs/ui/use_synced.js +2 -1
- package/dist/cjs/ui/use_text_color_for_background_color.js +2 -1
- package/dist/cjs/ui/use_view_metadata.js +2 -1
- package/dist/cjs/ui/use_viewport.js +2 -1
- package/dist/cjs/ui/use_watchable.js +2 -1
- package/dist/cjs/ui/view_picker.js +2 -1
- package/dist/cjs/ui/view_picker_synced.js +2 -1
- package/dist/cjs/ui/viewport_constraint.js +2 -1
- package/dist/cjs/ui/with_hooks.js +2 -1
- package/dist/cjs/ui/with_styled_system.js +2 -1
- package/dist/cjs/undo_redo.js +2 -1
- package/dist/cjs/unstable_private_utils.js +2 -1
- package/dist/cjs/unstable_testing_utils.js +2 -1
- package/dist/cjs/viewport.js +2 -1
- package/dist/cjs/warning.js +2 -1
- package/dist/cjs/watchable.js +17 -2
- package/dist/types/src/models/base.d.ts +2 -1
- package/dist/types/src/models/base.d.ts.map +1 -1
- package/dist/types/src/models/cursor.d.ts +2 -0
- package/dist/types/src/models/cursor.d.ts.map +1 -1
- package/dist/types/src/models/field.d.ts +3 -13
- package/dist/types/src/models/field.d.ts.map +1 -1
- package/dist/types/src/models/grouped_record_query_result.d.ts +3 -3
- package/dist/types/src/models/grouped_record_query_result.d.ts.map +1 -1
- package/dist/types/src/models/linked_records_query_result.d.ts.map +1 -1
- package/dist/types/src/models/mutations.d.ts.map +1 -1
- package/dist/types/src/models/query_manager.d.ts +2 -0
- package/dist/types/src/models/query_manager.d.ts.map +1 -0
- package/dist/types/src/models/record.d.ts +12 -3
- package/dist/types/src/models/record.d.ts.map +1 -1
- package/dist/types/src/models/record_query_result.d.ts +3 -2
- package/dist/types/src/models/record_query_result.d.ts.map +1 -1
- package/dist/types/src/models/record_store.d.ts.map +1 -1
- package/dist/types/src/models/table.d.ts +2 -1
- package/dist/types/src/models/table.d.ts.map +1 -1
- package/dist/types/src/models/table_or_view_query_result.d.ts +3 -5
- package/dist/types/src/models/table_or_view_query_result.d.ts.map +1 -1
- package/dist/types/src/models/view_data_store.d.ts +0 -1
- package/dist/types/src/models/view_data_store.d.ts.map +1 -1
- package/dist/types/src/models/view_metadata_query_result.d.ts +1 -1
- package/dist/types/src/models/view_metadata_query_result.d.ts.map +1 -1
- package/dist/types/src/private_utils.d.ts +24 -1
- package/dist/types/src/private_utils.d.ts.map +1 -1
- package/dist/types/src/sdk.d.ts.map +1 -1
- package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts +11 -11
- package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +1 -1
- package/dist/types/src/types/airtable_interface.d.ts +48 -20
- package/dist/types/src/types/airtable_interface.d.ts.map +1 -1
- package/dist/types/src/types/block_query_spec.d.ts +139 -0
- package/dist/types/src/types/block_query_spec.d.ts.map +1 -0
- package/dist/types/src/types/field.d.ts +7 -1
- package/dist/types/src/types/field.d.ts.map +1 -1
- package/dist/types/src/types/table.d.ts +0 -2
- package/dist/types/src/types/table.d.ts.map +1 -1
- package/dist/types/src/types/view.d.ts +3 -8
- package/dist/types/src/types/view.d.ts.map +1 -1
- package/dist/types/src/ui/cell_renderer.d.ts +1 -1
- package/dist/types/src/ui/color_palette.d.ts +1 -1
- package/dist/types/src/ui/control_sizes.d.ts +1 -1
- package/dist/types/src/ui/field_icon.d.ts +1 -1
- package/dist/types/src/ui/heading.d.ts +1 -1
- package/dist/types/src/ui/icon.d.ts +1 -1
- package/dist/types/src/ui/icon_config.d.ts +33 -31
- package/dist/types/src/ui/icon_config.d.ts.map +1 -1
- package/dist/types/src/ui/input.d.ts +10 -10
- package/dist/types/src/ui/link.d.ts +1 -1
- package/dist/types/src/ui/link.d.ts.map +1 -1
- package/dist/types/src/ui/record_card.d.ts +1 -1
- package/dist/types/src/ui/system/utils/create_style_prop_types.d.ts +1 -1
- package/dist/types/src/ui/system/utils/create_style_prop_types.d.ts.map +1 -1
- package/dist/types/src/ui/text.d.ts +1 -1
- package/dist/types/src/ui/theme/default_theme/index.d.ts +1 -1
- package/dist/types/src/ui/theme/theme_context.d.ts +1 -1
- package/dist/types/src/ui/theme/use_theme.d.ts +1 -1
- package/dist/types/src/ui/use_global_config.d.ts +1 -1
- package/dist/types/src/watchable.d.ts.map +1 -1
- package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts +7 -5
- package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts.map +1 -1
- package/dist/types/test/airtable_interface_mocks/mock_airtable_interface.d.ts +18 -11
- package/dist/types/test/airtable_interface_mocks/mock_airtable_interface.d.ts.map +1 -1
- package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts +51 -0
- package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts.map +1 -0
- package/dist/types/test/test_helpers.d.ts +2 -0
- package/dist/types/test/test_helpers.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/cjs/models/view.js
CHANGED
|
@@ -449,4 +449,5 @@ function (_AbstractModel) {
|
|
|
449
449
|
|
|
450
450
|
(0, _defineProperty2.default)(View, "_className", 'View');
|
|
451
451
|
var _default = View;
|
|
452
|
-
exports.default = _default;
|
|
452
|
+
exports.default = _default;
|
|
453
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvdmlldy50cyJdLCJuYW1lcyI6WyJXYXRjaGFibGVWaWV3S2V5cyIsIk9iamVjdCIsImZyZWV6ZSIsIm5hbWUiLCJWaWV3Iiwia2V5Iiwic2RrIiwicGFyZW50VGFibGUiLCJ2aWV3RGF0YVN0b3JlIiwidmlld0lkIiwiX3BhcmVudFRhYmxlIiwiX3ZpZXdEYXRhU3RvcmUiLCJfX3ZpZXdNZXRhZGF0YVF1ZXJ5UmVzdWx0UG9vbCIsIk9iamVjdFBvb2wiLCJWaWV3TWV0YWRhdGFRdWVyeVJlc3VsdCIsIm9wdHMiLCJub3JtYWxpemVkT3B0cyIsIlJlY29yZFF1ZXJ5UmVzdWx0IiwiX25vcm1hbGl6ZU9wdHMiLCJwYXJlbnRSZWNvcmRTdG9yZSIsInJlY29yZENvbG9yTW9kZSIsInVuZGVmaW5lZCIsIlJlY29yZENvbG9yaW5nIiwibW9kZXMiLCJieVZpZXciLCJfX3RhYmxlT3JWaWV3UXVlcnlSZXN1bHRQb29sIiwiZ2V0T2JqZWN0Rm9yUmV1c2UiLCJfc2RrIiwicXVlcnlSZXN1bHQiLCJzZWxlY3RSZWNvcmRzIiwibG9hZERhdGFBc3luYyIsInNlbGVjdE1ldGFkYXRhIiwidmlld01ldGFkYXRhIiwibWV0YWRhdGEiLCJncm91cExldmVscyIsIl9fbXV0YXRpb25zIiwiY2hlY2tQZXJtaXNzaW9uc0Zvck11dGF0aW9uIiwidHlwZSIsIk11dGF0aW9uVHlwZXMiLCJVUERBVEVfVklFV19NRVRBREFUQSIsInRhYmxlSWQiLCJpZCIsImNoZWNrUGVybWlzc2lvbnNGb3JVcGRhdGVNZXRhZGF0YSIsImhhc1Blcm1pc3Npb24iLCJhcHBseU11dGF0aW9uQXN5bmMiLCJkaXJ0eVBhdGhzIiwiZGlkVmlld1NjaGVtYUNoYW5nZSIsInRyaWdnZXJPbkNoYW5nZUZvckRpcnR5UGF0aHMiLCJfb25DaGFuZ2UiLCJ0YWJsZURhdGEiLCJfYmFzZURhdGEiLCJ0YWJsZXNCeUlkIiwidmlld3NCeUlkIiwiX2lkIiwiX2RhdGEiLCJfX2FpcnRhYmxlSW50ZXJmYWNlIiwidXJsQ29uc3RydWN0b3IiLCJnZXRWaWV3VXJsIiwiQWJzdHJhY3RNb2RlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFPQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBLElBQU1BLGlCQUFpQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUNwQ0MsRUFBQUEsSUFBSSxFQUFFO0FBRDhCLENBQWQsQ0FBMUI7QUFJQTs7Ozs7QUFNQTs7Ozs7SUFLTUMsSTs7Ozs7OztBQUNGOztBQUVBO29DQUN1QkMsRyxFQUFzQjtBQUN6QyxhQUFPLGdDQUFZTCxpQkFBWixFQUErQkssR0FBL0IsQ0FBUDtBQUNIO0FBQ0Q7Ozs7QUFVQTs7O0FBR0EsZ0JBQVlDLEdBQVosRUFBc0JDLFdBQXRCLEVBQTBDQyxhQUExQyxFQUF3RUMsTUFBeEUsRUFBd0Y7QUFBQTs7QUFBQTtBQUNwRiwwR0FBTUgsR0FBTixFQUFXRyxNQUFYO0FBRG9GO0FBQUE7QUFBQTtBQUdwRixVQUFLQyxZQUFMLEdBQW9CSCxXQUFwQjtBQUNBLFVBQUtJLGNBQUwsR0FBc0JILGFBQXRCO0FBQ0EsVUFBS0ksNkJBQUwsR0FBcUMsSUFBSUMsb0JBQUosQ0FBZUMsbUNBQWYsQ0FBckM7QUFMb0Y7QUFNdkY7QUFFRDs7Ozs7Ozs7QUE0REE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DQW1Dd0U7QUFBQSxVQUExREMsSUFBMEQsdUVBQTVCLEVBQTRCOztBQUNwRSxVQUFNQyxjQUFjLEdBQUdDLDZCQUFrQkMsY0FBbEIsQ0FDbkIsS0FBS1gsV0FEYyxFQUVuQixLQUFLSSxjQUFMLENBQW9CUSxpQkFGRCxvQkFJWkosSUFKWTtBQUtmSyxRQUFBQSxlQUFlLEVBQ1hMLElBQUksQ0FBQ0ssZUFBTCxLQUF5QkMsU0FBekIsR0FDTUMsY0FBYyxDQUFDQyxLQUFmLENBQXFCQyxNQUFyQixDQUE0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Ozs7d0JBU21CO0FBQ2YsYUFBTyxLQUFLNEMsS0FBTCxDQUFXbkQsSUFBbEI7QUFDSDtBQUNEOzs7Ozs7Ozs7Ozs7d0JBU3FCO0FBQ2pCLGFBQU8sS0FBS21ELEtBQUwsQ0FBV2pCLElBQWxCO0FBQ0g7QUFDRDs7Ozs7Ozs7Ozs7O3dCQVNrQjtBQUNkLGFBQU8sS0FBS1YsSUFBTCxDQUFVNEIsbUJBQVYsQ0FBOEJDLGNBQTlCLENBQTZDQyxVQUE3QyxDQUNILEtBQUtoQixFQURGLEVBRUgsS0FBS2xDLFdBQUwsQ0FBaUJrQyxFQUZkLENBQVA7QUFJSDs7O0VBdkZjaUIsdUI7OzhCQUFidEQsSSxnQkFFa0IsTTtlQXVTVEEsSSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvbW9kZWxzOiBWaWV3ICovIC8qKiAqL1xuaW1wb3J0IFNkayBmcm9tICcuLi9zZGsnO1xuaW1wb3J0IHtWaWV3RGF0YSwgVmlld1R5cGV9IGZyb20gJy4uL3R5cGVzL3ZpZXcnO1xuaW1wb3J0IHtpc0VudW1WYWx1ZSwgT2JqZWN0VmFsdWVzLCBGbG93QW55T2JqZWN0fSBmcm9tICcuLi9wcml2YXRlX3V0aWxzJztcbmltcG9ydCB7TXV0YXRpb25UeXBlcywgUGVybWlzc2lvbkNoZWNrUmVzdWx0fSBmcm9tICcuLi90eXBlcy9tdXRhdGlvbnMnO1xuaW1wb3J0IEFic3RyYWN0TW9kZWwgZnJvbSAnLi9hYnN0cmFjdF9tb2RlbCc7XG5pbXBvcnQgT2JqZWN0UG9vbCBmcm9tICcuL29iamVjdF9wb29sJztcbmltcG9ydCBUYWJsZSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCBSZWNvcmRRdWVyeVJlc3VsdCwge1xuICAgIG5vcm1hbGl6ZVNvcnRzT3JHcm91cHMsXG4gICAgUmVjb3JkUXVlcnlSZXN1bHRPcHRzLFxuICAgIFZpZXdNZXRhZGF0YUZvclVwZGF0ZSxcbn0gZnJvbSAnLi9yZWNvcmRfcXVlcnlfcmVzdWx0JztcbmltcG9ydCBUYWJsZU9yVmlld1F1ZXJ5UmVzdWx0IGZyb20gJy4vdGFibGVfb3Jfdmlld19xdWVyeV9yZXN1bHQnO1xuaW1wb3J0IFZpZXdEYXRhU3RvcmUgZnJvbSAnLi92aWV3X2RhdGFfc3RvcmUnO1xuaW1wb3J0IFZpZXdNZXRhZGF0YVF1ZXJ5UmVzdWx0IGZyb20gJy4vdmlld19tZXRhZGF0YV9xdWVyeV9yZXN1bHQnO1xuaW1wb3J0ICogYXMgUmVjb3JkQ29sb3JpbmcgZnJvbSAnLi9yZWNvcmRfY29sb3JpbmcnO1xuXG4vLyBUaGlzIGRvZXNuJ3QgZm9sbG93IG91ciBlbnVtIG5hbWluZyBjb252ZW50aW9ucyBiZWNhdXNlIHdlIHdhbnQgdGhlIGtleXNcbi8vIHRvIG1pcnJvciB0aGUgbWV0aG9kL2dldHRlciBuYW1lcyBvbiB0aGUgbW9kZWwgY2xhc3MuXG5jb25zdCBXYXRjaGFibGVWaWV3S2V5cyA9IE9iamVjdC5mcmVlemUoe1xuICAgIG5hbWU6ICduYW1lJyBhcyBjb25zdCxcbn0pO1xuXG4vKipcbiAqIEEga2V5IGluIHtAbGluayBWaWV3fSB0aGF0IGNhbiBiZSB3YXRjaGVkLlxuICogLSBgbmFtZWBcbiAqL1xuZXhwb3J0IHR5cGUgV2F0Y2hhYmxlVmlld0tleSA9IE9iamVjdFZhbHVlczx0eXBlb2YgV2F0Y2hhYmxlVmlld0tleXM+O1xuXG4vKipcbiAqIEEgY2xhc3MgdGhhdCByZXByZXNlbnRzIGFuIEFpcnRhYmxlIHZpZXcuIEV2ZXJ5IHtAbGluayBUYWJsZX0gaGFzIG9uZSBvciBtb3JlIHZpZXdzLlxuICpcbiAqIEBkb2NzUGF0aCBtb2RlbHMvVmlld1xuICovXG5jbGFzcyBWaWV3IGV4dGVuZHMgQWJzdHJhY3RNb2RlbDxWaWV3RGF0YSwgV2F0Y2hhYmxlVmlld0tleT4ge1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBzdGF0aWMgX2NsYXNzTmFtZSA9ICdWaWV3JztcbiAgICAvKiogQGludGVybmFsICovXG4gICAgc3RhdGljIF9pc1dhdGNoYWJsZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNFbnVtVmFsdWUoV2F0Y2hhYmxlVmlld0tleXMsIGtleSk7XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfcGFyZW50VGFibGU6IFRhYmxlO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfdmlld0RhdGFTdG9yZTogVmlld0RhdGFTdG9yZTtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgX192aWV3TWV0YWRhdGFRdWVyeVJlc3VsdFBvb2w6IE9iamVjdFBvb2w8XG4gICAgICAgIFZpZXdNZXRhZGF0YVF1ZXJ5UmVzdWx0LFxuICAgICAgICB0eXBlb2YgVmlld01ldGFkYXRhUXVlcnlSZXN1bHRcbiAgICA+O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc2RrOiBTZGssIHBhcmVudFRhYmxlOiBUYWJsZSwgdmlld0RhdGFTdG9yZTogVmlld0RhdGFTdG9yZSwgdmlld0lkOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc2RrLCB2aWV3SWQpO1xuXG4gICAgICAgIHRoaXMuX3BhcmVudFRhYmxlID0gcGFyZW50VGFibGU7XG4gICAgICAgIHRoaXMuX3ZpZXdEYXRhU3RvcmUgPSB2aWV3RGF0YVN0b3JlO1xuICAgICAgICB0aGlzLl9fdmlld01ldGFkYXRhUXVlcnlSZXN1bHRQb29sID0gbmV3IE9iamVjdFBvb2woVmlld01ldGFkYXRhUXVlcnlSZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIGdldCBfZGF0YU9yTnVsbElmRGVsZXRlZCgpOiBWaWV3RGF0YSB8IG51bGwge1xuICAgICAgICBjb25zdCB0YWJsZURhdGEgPSB0aGlzLl9iYXNlRGF0YS50YWJsZXNCeUlkW3RoaXMucGFyZW50VGFibGUuaWRdO1xuICAgICAgICByZXR1cm4gdGFibGVEYXRhPy52aWV3c0J5SWRbdGhpcy5faWRdID8/IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSB0YWJsZSB0aGF0IHRoaXMgdmlldyBiZWxvbmdzIHRvLiBTaG91bGQgbmV2ZXIgY2hhbmdlIGJlY2F1c2Ugdmlld3MgYXJlbid0IG1vdmVkIGJldHdlZW4gdGFibGVzLlxuICAgICAqXG4gICAgICogQGludGVybmFsIChzaW5jZSB3ZSBtYXkgbm90IGJlIGFibGUgdG8gcmV0dXJuIHBhcmVudCBtb2RlbCBpbnN0YW5jZXMgaW4gdGhlIGltbXV0YWJsZSBtb2RlbHMgd29ybGQpXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IHZpZXcgPSBteVRhYmxlLmdldFZpZXdCeU5hbWUoJ0dyaWQgVmlldycpO1xuICAgICAqIGNvbnNvbGUubG9nKHZpZXcucGFyZW50VGFibGUuaWQgPT09IG15VGFibGUuaWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgcGFyZW50VGFibGUoKTogVGFibGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VGFibGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSB2aWV3LiBDYW4gYmUgd2F0Y2hlZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBganNcbiAgICAgKiBjb25zb2xlLmxvZyhteVZpZXcubmFtZSk7XG4gICAgICogLy8gPT4gJ0dyaWQgdmlldydcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5uYW1lO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgdmlldywgc3VjaCBhcyBHcmlkLCBDYWxlbmRhciwgb3IgS2FuYmFuLiBTaG91bGQgbmV2ZXIgY2hhbmdlIGJlY2F1c2UgdmlldyB0eXBlcyBjYW5ub3QgYmUgbW9kaWZpZWQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogY29uc29sZS5sb2cobXlWaWV3LnR5cGUpO1xuICAgICAqIC8vID0+ICdrYW5iYW4nXG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IHR5cGUoKTogVmlld1R5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS50eXBlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgVVJMIGZvciB0aGUgdmlldy4gWW91IGNhbiB2aXNpdCB0aGlzIFVSTCBpbiB0aGUgYnJvd3NlciB0byBiZSB0YWtlbiB0byB0aGUgdmlldyBpbiB0aGUgQWlydGFibGUgVUkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogY29uc29sZS5sb2cobXlWaWV3LnVybCk7XG4gICAgICogLy8gPT4gJ2h0dHBzOi8vYWlydGFibGUuY29tL3RibHh4eHh4eHh4eHh4eHh4L3Zpd3h4eHh4eHh4eHh4eHh4J1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nkay5fX2FpcnRhYmxlSW50ZXJmYWNlLnVybENvbnN0cnVjdG9yLmdldFZpZXdVcmwoXG4gICAgICAgICAgICB0aGlzLmlkLFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRUYWJsZS5pZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VsZWN0IHJlY29yZHMgZnJvbSB0aGUgdmlldy4gUmV0dXJucyBhIHtAbGluayBSZWNvcmRRdWVyeVJlc3VsdH0uXG4gICAgICpcbiAgICAgKiBDb25zaWRlciB1c2luZyB7QGxpbmsgdXNlUmVjb3Jkc30gb3Ige0BsaW5rIHVzZVJlY29yZElkc30gaW5zdGVhZCwgdW5sZXNzIHlvdSBuZWVkIHRoZVxuICAgICAqIGZlYXR1cmVzIG9mIGEgUXVlcnlSZXN1bHQgKGUuZy4gYHF1ZXJ5UmVzdWx0LmdldFJlY29yZEJ5SWRgKS4gUmVjb3JkIGhvb2tzIGhhbmRsZVxuICAgICAqIGxvYWRpbmcvdW5sb2FkaW5nIGFuZCB1cGRhdGluZyB5b3VyIFVJIGF1dG9tYXRpY2FsbHksIGJ1dCBtYW51YWxseSBgc2VsZWN0YGluZyByZWNvcmRzIGlzXG4gICAgICogdXNlZnVsIGZvciBvbmUtb2ZmIGRhdGEgcHJvY2Vzc2luZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIE9wdGlvbnMgZm9yIHRoZSBxdWVyeSwgc3VjaCBhcyBzb3J0cywgZmllbGRzLCBhbmQgcmVjb3JkIGNvbG9yaW5nLiBCeVxuICAgICAqIGRlZmF1bHQsIHJlY29yZHMgd2lsbCBiZSBjb2xvdXJlZCBhY2NvcmRpbmcgdG8gdGhlIHZpZXcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7dXNlQmFzZSwgdXNlUmVjb3Jkc30gZnJvbSAnQGFpcnRhYmxlL2Jsb2Nrcy9VSSc7XG4gICAgICogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIFRvZG9MaXN0KCkge1xuICAgICAqICAgICBjb25zdCBiYXNlID0gdXNlQmFzZSgpO1xuICAgICAqICAgICBjb25zdCB0YWJsZSA9IGJhc2UuZ2V0VGFibGVCeU5hbWUoJ1Rhc2tzJyk7XG4gICAgICogICAgIGNvbnN0IHZpZXcgPSB0YWJsZS5nZXRWaWV3QnlOYW1lKCdHcmlkIHZpZXcnKTtcbiAgICAgKlxuICAgICAqICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IHZpZXcuc2VsZWN0UmVjb3JkcygpO1xuICAgICAqICAgICBjb25zdCByZWNvcmRzID0gdXNlUmVjb3JkcyhxdWVyeVJlc3VsdCk7XG4gICAgICpcbiAgICAgKiAgICAgcmV0dXJuIChcbiAgICAgKiAgICAgICAgIDx1bD5cbiAgICAgKiAgICAgICAgICAgICB7cmVjb3Jkcy5tYXAocmVjb3JkID0+IChcbiAgICAgKiAgICAgICAgICAgICAgICAgPGxpIGtleT17cmVjb3JkLmlkfT5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHtyZWNvcmQubmFtZSB8fCAnVW5uYW1lZCByZWNvcmQnfVxuICAgICAqICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAqICAgICAgICAgICAgICkpfVxuICAgICAqICAgICAgICAgPC91bD5cbiAgICAgKiAgICAgKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc2VsZWN0UmVjb3JkcyhvcHRzOiBSZWNvcmRRdWVyeVJlc3VsdE9wdHMgPSB7fSk6IFRhYmxlT3JWaWV3UXVlcnlSZXN1bHQge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkT3B0cyA9IFJlY29yZFF1ZXJ5UmVzdWx0Ll9ub3JtYWxpemVPcHRzKFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRUYWJsZSxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdEYXRhU3RvcmUucGFyZW50UmVjb3JkU3RvcmUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgICAgICByZWNvcmRDb2xvck1vZGU6XG4gICAgICAgICAgICAgICAgICAgIG9wdHMucmVjb3JkQ29sb3JNb2RlID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gUmVjb3JkQ29sb3JpbmcubW9kZXMuYnlWaWV3KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9wdHMucmVjb3JkQ29sb3JNb2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRUYWJsZS5fX3RhYmxlT3JWaWV3UXVlcnlSZXN1bHRQb29sLmdldE9iamVjdEZvclJldXNlKFxuICAgICAgICAgICAgdGhpcy5fc2RrLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRPcHRzLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYW5kIGxvYWQgcmVjb3JkcyBmcm9tIHRoZSB2aWV3LiBSZXR1cm5zIGEge0BsaW5rIFJlY29yZFF1ZXJ5UmVzdWx0fSBwcm9taXNlIHdoZXJlXG4gICAgICogcmVjb3JkIGRhdGEgaGFzIGJlZW4gbG9hZGVkLlxuICAgICAqXG4gICAgICogQ29uc2lkZXIgdXNpbmcge0BsaW5rIHVzZVJlY29yZHN9IG9yIHtAbGluayB1c2VSZWNvcmRJZHN9IGluc3RlYWQsIHVubGVzcyB5b3UgbmVlZCB0aGVcbiAgICAgKiBmZWF0dXJlcyBvZiBhIFF1ZXJ5UmVzdWx0IChlLmcuIGBxdWVyeVJlc3VsdC5nZXRSZWNvcmRCeUlkYCkuIFJlY29yZCBob29rcyBoYW5kbGVcbiAgICAgKiBsb2FkaW5nL3VubG9hZGluZyBhbmQgdXBkYXRpbmcgeW91ciBVSSBhdXRvbWF0aWNhbGx5LCBidXQgbWFudWFsbHkgYHNlbGVjdGBpbmcgcmVjb3JkcyBpc1xuICAgICAqIHVzZWZ1bCBmb3Igb25lLW9mZiBkYXRhIHByb2Nlc3NpbmcuXG4gICAgICpcbiAgICAgKiBPbmNlIHlvdSd2ZSBmaW5pc2hlZCB3aXRoIHlvdXIgcXVlcnksIHJlbWVtYmVyIHRvIGNhbGwgYHF1ZXJ5UmVzdWx0LnVubG9hZERhdGEoKWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBPcHRpb25zIGZvciB0aGUgcXVlcnksIHN1Y2ggYXMgc29ydHMsIGZpZWxkcywgYW5kIHJlY29yZCBjb2xvcmluZy4gQnlcbiAgICAgKiBkZWZhdWx0LCByZWNvcmRzIHdpbGwgYmUgY29sb3VyZWQgYWNjb3JkaW5nIHRvIHRoZSB2aWV3LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBganNcbiAgICAgKiBhc3luYyBmdW5jdGlvbiBnZXRSZWNvcmRDb3VudEFzeW5jKHZpZXcpIHtcbiAgICAgKiAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCB2aWV3LnNlbGVjdFJlY29yZHNBc3luYygpO1xuICAgICAqICAgICBjb25zdCByZWNvcmRDb3VudCA9IHF1ZXJ5LnJlY29yZElkcy5sZW5ndGg7XG4gICAgICogICAgIHF1ZXJ5LnVubG9hZERhdGEoKTtcbiAgICAgKiAgICAgcmV0dXJuIHJlY29yZENvdW50O1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBhc3luYyBzZWxlY3RSZWNvcmRzQXN5bmMob3B0czogUmVjb3JkUXVlcnlSZXN1bHRPcHRzID0ge30pOiBQcm9taXNlPFRhYmxlT3JWaWV3UXVlcnlSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSB0aGlzLnNlbGVjdFJlY29yZHMob3B0cyk7XG4gICAgICAgIGF3YWl0IHF1ZXJ5UmVzdWx0LmxvYWREYXRhQXN5bmMoKTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5UmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgdGhlIGZpZWxkIG9yZGVyIGFuZCB2aXNpYmxlIGZpZWxkcyBmcm9tIHRoZSB2aWV3LiBSZXR1cm5zIGFcbiAgICAgKiB7QGxpbmsgVmlld01ldGFkYXRhUXVlcnlSZXN1bHR9LlxuICAgICAqXG4gICAgICogQ29uc2lkZXIgdXNpbmcge0BsaW5rIHVzZVZpZXdNZXRhZGF0YX0gaW5zdGVhZCBpZiB5b3UncmUgY3JlYXRpbmcgYSBSZWFjdCBVSS4gVGhlXG4gICAgICoge0BsaW5rIHVzZVZpZXdNZXRhZGF0YX0gaG9vayBoYW5kbGVzIGxvYWRpbmcvdW5sb2FkaW5nIGFuZCB1cGRhdGluZyB5b3VyIFVJIGF1dG9tYXRpY2FsbHksXG4gICAgICogYnV0IG1hbnVhbGx5IGBzZWxlY3RgaW5nIGRhdGEgaXMgdXNlZnVsIGZvciBvbmUtb2ZmIGRhdGEgcHJvY2Vzc2luZy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBganNcbiAgICAgKiBhc3luYyBmdW5jdGlvbiBsb2FkTWV0YWRhdGFGb3JWaWV3QXN5bmModmlldykge1xuICAgICAqICAgICBjb25zdCB2aWV3TWV0YWRhdGEgPSB2aWV3LnNlbGVjdE1ldGFkYXRhKCk7XG4gICAgICogICAgIGF3YWl0IHZpZXdNZXRhZGF0YS5sb2FkRGF0YUFzeW5jKCk7XG4gICAgICpcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ1Zpc2libGUgZmllbGRzOicpO1xuICAgICAqICAgICBjb25zb2xlLmxvZyh2aWV3TWV0YWRhdGEudmlzaWJsZUZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpO1xuICAgICAqICAgICAvLyA9PiBbJ0ZpZWxkIDEnLCAnRmllbGQgMicsICdGaWVsZCAzJ11cbiAgICAgKlxuICAgICAqICAgICBjb25zb2xlLmxvZygnQWxsIGZpZWxkczonKTtcbiAgICAgKiAgICAgY29uc29sZS5sb2codmlld01ldGFkYXRhLmFsbEZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpO1xuICAgICAqICAgICAvLyA9PiBbJ0ZpZWxkIDEnLCAnRmllbGQgMicsICdGaWVsZCAzJywgJ0hpZGRlbiBmaWVsZCA0J11cbiAgICAgKlxuICAgICAqICAgICB2aWV3TWV0YWRhdGEudW5sb2FkRGF0YSgpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzZWxlY3RNZXRhZGF0YSgpOiBWaWV3TWV0YWRhdGFRdWVyeVJlc3VsdCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fdmlld01ldGFkYXRhUXVlcnlSZXN1bHRQb29sLmdldE9iamVjdEZvclJldXNlKFxuICAgICAgICAgICAgdGhpcy5fc2RrLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdEYXRhU3RvcmUsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhbmQgbG9hZCB0aGUgZmllbGQgb3JkZXIgYW5kIHZpc2libGUgZmllbGRzIGZyb20gdGhlIHZpZXcuIFJldHVybnMgYVxuICAgICAqIHtAbGluayBWaWV3TWV0YWRhdGFRdWVyeVJlc3VsdH0gcHJvbWlzZSB3aGVyZSB0aGUgbWV0YWRhdGEgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuXG4gICAgICpcbiAgICAgKiBDb25zaWRlciB1c2luZyB7QGxpbmsgdXNlVmlld01ldGFkYXRhfSBpbnN0ZWFkIGlmIHlvdSdyZSBjcmVhdGluZyBhIFJlYWN0IFVJLiBUaGVcbiAgICAgKiB7QGxpbmsgdXNlVmlld01ldGFkYXRhfSBob29rIGhhbmRsZXMgbG9hZGluZy91bmxvYWRpbmcgYW5kIHVwZGF0aW5nIHlvdXIgVUkgYXV0b21hdGljYWxseSxcbiAgICAgKiBidXQgbWFudWFsbHkgYHNlbGVjdGBpbmcgZGF0YSBpcyB1c2VmdWwgZm9yIG9uZS1vZmYgZGF0YSBwcm9jZXNzaW5nLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGFzeW5jIGZ1bmN0aW9uIGxvYWRNZXRhZGF0YUZvclZpZXdBc3luYyh2aWV3KSB7XG4gICAgICogICAgIGNvbnN0IHZpZXdNZXRhZGF0YSA9IGF3YWl0IHZpZXcuc2VsZWN0TWV0YWRhdGEoKTtcbiAgICAgKlxuICAgICAqICAgICBjb25zb2xlLmxvZygnVmlzaWJsZSBmaWVsZHM6Jyk7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHZpZXdNZXRhZGF0YS52aXNpYmxlRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSk7XG4gICAgICogICAgIC8vID0+IFsnRmllbGQgMScsICdGaWVsZCAyJywgJ0ZpZWxkIDMnXVxuICAgICAqXG4gICAgICogICAgIGNvbnNvbGUubG9nKCdBbGwgZmllbGRzOicpO1xuICAgICAqICAgICBjb25zb2xlLmxvZyh2aWV3TWV0YWRhdGEuYWxsRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSk7XG4gICAgICogICAgIC8vID0+IFsnRmllbGQgMScsICdGaWVsZCAyJywgJ0ZpZWxkIDMnLCAnSGlkZGVuIGZpZWxkIDQnXVxuICAgICAqXG4gICAgICogICAgIHZpZXdNZXRhZGF0YS51bmxvYWREYXRhKCk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGFzeW5jIHNlbGVjdE1ldGFkYXRhQXN5bmMoKTogUHJvbWlzZTxWaWV3TWV0YWRhdGFRdWVyeVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IHRoaXMuc2VsZWN0TWV0YWRhdGEoKTtcbiAgICAgICAgYXdhaXQgcXVlcnlSZXN1bHQubG9hZERhdGFBc3luYygpO1xuICAgICAgICByZXR1cm4gcXVlcnlSZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdmlldyBtZXRhZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2aWV3TWV0YWRhdGFcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uc0ZvclVwZGF0ZU1ldGFkYXRhKHZpZXdNZXRhZGF0YTogVmlld01ldGFkYXRhRm9yVXBkYXRlKTogUGVybWlzc2lvbkNoZWNrUmVzdWx0IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBncm91cExldmVsczogbm9ybWFsaXplU29ydHNPckdyb3Vwcyh0aGlzLnBhcmVudFRhYmxlLCB2aWV3TWV0YWRhdGEuZ3JvdXBMZXZlbHMpLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5fc2RrLl9fbXV0YXRpb25zLmNoZWNrUGVybWlzc2lvbnNGb3JNdXRhdGlvbih7XG4gICAgICAgICAgICB0eXBlOiBNdXRhdGlvblR5cGVzLlVQREFURV9WSUVXX01FVEFEQVRBLFxuICAgICAgICAgICAgdGFibGVJZDogdGhpcy5wYXJlbnRUYWJsZS5pZCxcbiAgICAgICAgICAgIHZpZXdJZDogdGhpcy5pZCxcbiAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbGlhcyBmb3IgYGNoZWNrUGVybWlzc2lvbnNGb3JVcGRhdGVNZXRhZGF0YSh2aWV3TWV0YWRhdGEpLmhhc1Blcm1pc3Npb25gLlxuICAgICAqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdmlldyBtZXRhZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2aWV3TWV0YWRhdGFcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgaGFzUGVybWlzc2lvblRvVXBkYXRlTWV0YWRhdGEodmlld01ldGFkYXRhOiBWaWV3TWV0YWRhdGFGb3JVcGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uc0ZvclVwZGF0ZU1ldGFkYXRhKHZpZXdNZXRhZGF0YSkuaGFzUGVybWlzc2lvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHZpZXcgbWV0YWRhdGEsIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGZyb20gYmxvY2sgdmlld3NcbiAgICAgKiBhbHRlcmluZyB0aGVpciBvd24gdmlldydzIGdyb3VwaW5nIGNvbmZpZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBWaWV3TWV0YWRhdGFGb3JVcGRhdGVcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlTWV0YWRhdGFBc3luYyh2aWV3TWV0YWRhdGE6IFZpZXdNZXRhZGF0YUZvclVwZGF0ZSkge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIGdyb3VwTGV2ZWxzOiBub3JtYWxpemVTb3J0c09yR3JvdXBzKHRoaXMucGFyZW50VGFibGUsIHZpZXdNZXRhZGF0YS5ncm91cExldmVscyksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuX3Nkay5fX211dGF0aW9ucy5hcHBseU11dGF0aW9uQXN5bmMoe1xuICAgICAgICAgICAgdHlwZTogTXV0YXRpb25UeXBlcy5VUERBVEVfVklFV19NRVRBREFUQSxcbiAgICAgICAgICAgIHRhYmxlSWQ6IHRoaXMucGFyZW50VGFibGUuaWQsXG4gICAgICAgICAgICB2aWV3SWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX190cmlnZ2VyT25DaGFuZ2VGb3JEaXJ0eVBhdGhzKGRpcnR5UGF0aHM6IEZsb3dBbnlPYmplY3QpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGRpZFZpZXdTY2hlbWFDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fdmlld0RhdGFTdG9yZS50cmlnZ2VyT25DaGFuZ2VGb3JEaXJ0eVBhdGhzKGRpcnR5UGF0aHMpO1xuICAgICAgICBpZiAoZGlydHlQYXRocy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShXYXRjaGFibGVWaWV3S2V5cy5uYW1lKTtcbiAgICAgICAgICAgIGRpZFZpZXdTY2hlbWFDaGFuZ2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaWRWaWV3U2NoZW1hQ2hhbmdlO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlldztcbiJdfQ==
|