SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_component` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_admin_event` TINYINT(1) NOT NULL DEFAULT 0,
`add_backup_folder_path` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_admin` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_site` TINYINT(1) NOT NULL DEFAULT 0,
`add_email_helper` TINYINT(1) NOT NULL DEFAULT 0,
`add_git_folder_path` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript` TINYINT(1) NOT NULL DEFAULT 0,
`add_jcb_powers_path` TINYINT(1) NOT NULL DEFAULT 0,
`add_menu_prefix` CHAR(1) NOT NULL DEFAULT '',
`add_namespace_prefix` CHAR(1) NOT NULL DEFAULT '',
`add_php_helper_admin` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_helper_both` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_helper_site` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_method_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_placeholders` TINYINT(1) NOT NULL DEFAULT 0,
`add_powers` TINYINT(1) NOT NULL DEFAULT 1,
`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
`add_site_event` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
`addcontributors` TEXT NOT NULL,
`addfootable` TINYINT(1) NOT NULL DEFAULT 0,
`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
`adduikit` TINYINT(1) NOT NULL DEFAULT 0,
`assets_table_fix` TINYINT(1) NOT NULL DEFAULT 3,
`author` VARCHAR(255) NOT NULL DEFAULT '',
`backup_folder_path` VARCHAR(255) NOT NULL DEFAULT '',
`bom` CHAR(64) NOT NULL DEFAULT '',
`buildcomp` TINYINT(1) NOT NULL DEFAULT 0,
`buildcompsql` MEDIUMTEXT NOT NULL,
`companyname` CHAR(64) NOT NULL DEFAULT '',
`component_version` CHAR(64) NOT NULL DEFAULT '',
`copyright` VARCHAR(255) NOT NULL DEFAULT '',
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`creatuserhelper` TINYINT(1) NOT NULL DEFAULT 0,
`crowdin_account_api_key` TEXT NOT NULL,
`crowdin_project_api_key` TEXT NOT NULL,
`crowdin_project_identifier` VARCHAR(255) NOT NULL DEFAULT '',
`crowdin_username` TEXT NOT NULL,
`css_admin` TEXT NOT NULL,
`css_site` TEXT NOT NULL,
`dashboard` VARCHAR(64) NOT NULL DEFAULT '',
`dashboard_type` TINYINT(1) NOT NULL DEFAULT 1,
`debug_linenr` TINYINT(1) NOT NULL DEFAULT 0,
`description` TEXT NULL,
`email` VARCHAR(255) NOT NULL DEFAULT '',
`emptycontributors` TINYINT(1) NOT NULL DEFAULT 0,
`export_buy_link` VARCHAR(255) NOT NULL DEFAULT '',
`export_key` TEXT NOT NULL,
`git_folder_path` VARCHAR(255) NOT NULL DEFAULT '',
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`image` VARCHAR(255) NOT NULL DEFAULT '',
`javascript` TEXT NOT NULL,
`jcb_powers_path` VARCHAR(255) NOT NULL DEFAULT '',
`joomla_source_link` VARCHAR(255) NOT NULL DEFAULT '',
`license` VARCHAR(255) NOT NULL DEFAULT '',
`menu_prefix` VARCHAR(100) NOT NULL DEFAULT '',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`mvc_versiondate` TINYINT(1) NOT NULL DEFAULT 0,
`name` CHAR(64) NOT NULL DEFAULT '',
`name_code` VARCHAR(255) NOT NULL DEFAULT '',
`namespace_prefix` VARCHAR(255) NOT NULL DEFAULT '',
`number` INT(11) NOT NULL DEFAULT 0,
`php_admin_event` MEDIUMTEXT NOT NULL,
`php_helper_admin` MEDIUMTEXT NOT NULL,
`php_helper_both` MEDIUMTEXT NOT NULL,
`php_helper_site` MEDIUMTEXT NOT NULL,
`php_method_install` MEDIUMTEXT NOT NULL,
`php_method_uninstall` MEDIUMTEXT NOT NULL,
`php_postflight_install` MEDIUMTEXT NOT NULL,
`php_postflight_update` MEDIUMTEXT NOT NULL,
`php_preflight_install` MEDIUMTEXT NOT NULL,
`php_preflight_update` MEDIUMTEXT NOT NULL,
`php_site_event` MEDIUMTEXT NOT NULL,
`preferred_joomla_version` INT(11) NOT NULL DEFAULT 3,
`readme` TEXT NOT NULL,
`remove_line_breaks` TINYINT(1) NOT NULL DEFAULT 0,
`sales_server` INT(11) NOT NULL DEFAULT 0,
`short_description` VARCHAR(255) NOT NULL DEFAULT '',
`sql` MEDIUMTEXT NOT NULL,
`sql_uninstall` MEDIUMTEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`toignore` TEXT NOT NULL,
`translation_tool` TINYINT(1) NOT NULL DEFAULT 0,
`update_server` INT(11) NOT NULL DEFAULT 0,
`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
`website` CHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
`metakey` TEXT,
`metadesc` TEXT,
`metadata` TEXT,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_name_code` (`name_code`),
KEY `idx_mvc_versiondate` (`mvc_versiondate`),
KEY `idx_remove_line_breaks` (`remove_line_breaks`),
KEY `idx_add_placeholders` (`add_placeholders`),
KEY `idx_debug_linenr` (`debug_linenr`),
KEY `idx_add_sales_server` (`add_sales_server`),
KEY `idx_add_jcb_powers_path` (`add_jcb_powers_path`),
KEY `idx_add_powers` (`add_powers`),
KEY `idx_addreadme` (`addreadme`),
KEY `idx_add_backup_folder_path` (`add_backup_folder_path`),
KEY `idx_translation_tool` (`translation_tool`),
KEY `idx_add_namespace_prefix` (`add_namespace_prefix`),
KEY `idx_namespace_prefix` (`namespace_prefix`),
KEY `idx_add_php_helper_site` (`add_php_helper_site`),
KEY `idx_add_site_event` (`add_site_event`),
KEY `idx_add_menu_prefix` (`add_menu_prefix`),
KEY `idx_add_javascript` (`add_javascript`),
KEY `idx_menu_prefix` (`menu_prefix`),
KEY `idx_add_css_admin` (`add_css_admin`),
KEY `idx_add_css_site` (`add_css_site`),
KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
KEY `idx_add_php_method_install` (`add_php_method_install`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
KEY `idx_emptycontributors` (`emptycontributors`),
KEY `idx_assets_table_fix` (`assets_table_fix`),
KEY `idx_add_update_server` (`add_update_server`),
KEY `idx_update_server_target` (`update_server_target`),
KEY `idx_creatuserhelper` (`creatuserhelper`),
KEY `idx_add_git_folder_path` (`add_git_folder_path`),
KEY `idx_adduikit` (`adduikit`),
KEY `idx_addfootable` (`addfootable`),
KEY `idx_add_email_helper` (`add_email_helper`),
KEY `idx_add_php_helper_both` (`add_php_helper_both`),
KEY `idx_add_php_helper_admin` (`add_php_helper_admin`),
KEY `idx_guid` (`guid`),
KEY `idx_add_admin_event` (`add_admin_event`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_class_helper` TINYINT(1) NOT NULL DEFAULT 0,
`add_class_helper_header` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_script_construct` TINYINT(1) NOT NULL DEFAULT 0,
`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
`class_helper_code` MEDIUMTEXT NOT NULL,
`class_helper_header` TEXT NOT NULL,
`custom_get` TEXT NOT NULL,
`default` MEDIUMTEXT NOT NULL,
`description` TEXT NULL,
`fields` TEXT NOT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`libraries` TEXT NOT NULL,
`mod_code` TEXT NOT NULL,
`module_version` CHAR(64) NOT NULL DEFAULT '',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_method_uninstall` MEDIUMTEXT NOT NULL,
`php_postflight_install` MEDIUMTEXT NOT NULL,
`php_postflight_update` MEDIUMTEXT NOT NULL,
`php_preflight_install` MEDIUMTEXT NOT NULL,
`php_preflight_uninstall` MEDIUMTEXT NOT NULL,
`php_preflight_update` MEDIUMTEXT NOT NULL,
`php_script_construct` MEDIUMTEXT NOT NULL,
`readme` TEXT NOT NULL,
`sales_server` INT(11) NOT NULL DEFAULT 0,
`snippet` INT(11) NOT NULL DEFAULT 0,
`sql` MEDIUMTEXT NOT NULL,
`sql_uninstall` MEDIUMTEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`target` TINYINT(1) NOT NULL DEFAULT 0,
`update_server` INT(11) NOT NULL DEFAULT 0,
`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
KEY `idx_add_php_preflight_uninstall` (`add_php_preflight_uninstall`),
KEY `idx_addreadme` (`addreadme`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_update_server_target` (`update_server_target`),
KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
KEY `idx_add_update_server` (`add_update_server`),
KEY `idx_add_php_script_construct` (`add_php_script_construct`),
KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
KEY `idx_add_sales_server` (`add_sales_server`),
KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
KEY `idx_guid` (`guid`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_head` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_script_construct` TINYINT(1) NOT NULL DEFAULT 0,
`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
`class_extends` INT(11) NOT NULL DEFAULT 0,
`description` TEXT NULL,
`fields` TEXT NOT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`head` TEXT NULL,
`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
`main_class_code` MEDIUMTEXT NOT NULL,
`method_selection` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_method_uninstall` MEDIUMTEXT NOT NULL,
`php_postflight_install` MEDIUMTEXT NOT NULL,
`php_postflight_update` MEDIUMTEXT NOT NULL,
`php_preflight_install` MEDIUMTEXT NOT NULL,
`php_preflight_uninstall` MEDIUMTEXT NOT NULL,
`php_preflight_update` MEDIUMTEXT NOT NULL,
`php_script_construct` MEDIUMTEXT NOT NULL,
`plugin_version` CHAR(64) NOT NULL DEFAULT '',
`property_selection` TEXT NOT NULL,
`readme` TEXT NOT NULL,
`sales_server` INT(11) NOT NULL DEFAULT 0,
`sql` MEDIUMTEXT NOT NULL,
`sql_uninstall` MEDIUMTEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`update_server` INT(11) NOT NULL DEFAULT 0,
`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_class_extends` (`class_extends`),
KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
KEY `idx_add_update_server` (`add_update_server`),
KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
KEY `idx_addreadme` (`addreadme`),
KEY `idx_update_server_target` (`update_server_target`),
KEY `idx_add_php_script_construct` (`add_php_script_construct`),
KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
KEY `idx_add_php_preflight_uninstall` (`add_php_preflight_uninstall`),
KEY `idx_add_sales_server` (`add_sales_server`),
KEY `idx_guid` (`guid`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_power` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`description` TEXT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`settings` TEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_power` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_head` TINYINT(1) NOT NULL DEFAULT 0,
`add_licensing_template` TINYINT(1) NOT NULL DEFAULT 1,
`approved` TINYINT(1) NOT NULL DEFAULT 0,
`approved_paths` TEXT NULL,
`composer` TEXT NULL,
`description` TEXT NULL,
`extends` VARCHAR(36) NULL DEFAULT '',
`extends_custom` VARCHAR(64) NULL DEFAULT '',
`extendsinterfaces` TEXT NULL,
`extendsinterfaces_custom` TEXT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`head` TEXT NULL,
`implements` TEXT NULL,
`implements_custom` VARCHAR(1024) NOT NULL DEFAULT '',
`licensing_template` TEXT NULL,
`load_selection` TEXT NULL,
`main_class_code` MEDIUMTEXT NOT NULL,
`method_selection` TEXT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`namespace` VARCHAR(255) NOT NULL DEFAULT '',
`power_version` CHAR(64) NOT NULL DEFAULT '',
`property_selection` TEXT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`type` VARCHAR(64) NOT NULL DEFAULT '',
`use_selection` TEXT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_namespace` (`namespace`),
KEY `idx_type` (`type`),
KEY `idx_extends_custom` (`extends_custom`),
KEY `idx_implements_custom` (`implements_custom`),
KEY `idx_add_licensing_template` (`add_licensing_template`),
KEY `idx_guid` (`guid`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_view` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_category_submenu` TINYINT(1) NOT NULL DEFAULT 1,
`add_css_view` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_views` TINYINT(1) NOT NULL DEFAULT 0,
`add_custom_button` INT(1) NOT NULL DEFAULT 0,
`add_custom_import` TINYINT(1) NOT NULL DEFAULT 0,
`add_fadein` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_view_file` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_view_footer` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_views_file` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_views_footer` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_after_cancel` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_after_delete` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_after_publish` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_allowadd` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_allowedit` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_batchcopy` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_batchmove` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_cancel` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_delete` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_publish` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_save` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getform` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getitem` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getitems` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getitems_after_all` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getlistquery` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_postsavehook` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_save` TINYINT(1) NOT NULL DEFAULT 0,
`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
`addlinked_views` TEXT NOT NULL,
`addpermissions` TEXT NOT NULL,
`addtables` TEXT NOT NULL,
`addtabs` TEXT NOT NULL,
`ajax_input` TEXT NOT NULL,
`alias_builder` VARCHAR(255) NOT NULL DEFAULT '',
`alias_builder_type` TINYINT(1) NOT NULL DEFAULT 0,
`css_view` TEXT NOT NULL,
`css_views` TEXT NOT NULL,
`custom_button` TEXT NOT NULL,
`description` TEXT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`html_import_view` MEDIUMTEXT NOT NULL,
`icon` VARCHAR(255) NOT NULL DEFAULT '',
`icon_add` VARCHAR(255) NOT NULL DEFAULT '',
`icon_category` VARCHAR(255) NOT NULL DEFAULT '',
`javascript_view_file` TEXT NOT NULL,
`javascript_view_footer` TEXT NOT NULL,
`javascript_views_file` TEXT NOT NULL,
`javascript_views_footer` TEXT NOT NULL,
`mysql_table_charset` VARCHAR(64) NOT NULL DEFAULT 1,
`mysql_table_collate` VARCHAR(64) NOT NULL DEFAULT 1,
`mysql_table_engine` VARCHAR(64) NOT NULL DEFAULT 1,
`mysql_table_row_format` VARCHAR(64) NOT NULL DEFAULT 0,
`name_list` CHAR(64) NOT NULL DEFAULT '',
`name_single` CHAR(64) NOT NULL DEFAULT '',
`php_after_cancel` MEDIUMTEXT NOT NULL,
`php_after_delete` MEDIUMTEXT NOT NULL,
`php_after_publish` MEDIUMTEXT NOT NULL,
`php_ajaxmethod` MEDIUMTEXT NOT NULL,
`php_allowadd` MEDIUMTEXT NOT NULL,
`php_allowedit` MEDIUMTEXT NOT NULL,
`php_batchcopy` MEDIUMTEXT NOT NULL,
`php_batchmove` MEDIUMTEXT NOT NULL,
`php_before_cancel` MEDIUMTEXT NOT NULL,
`php_before_delete` MEDIUMTEXT NOT NULL,
`php_before_publish` MEDIUMTEXT NOT NULL,
`php_before_save` MEDIUMTEXT NOT NULL,
`php_controller` MEDIUMTEXT NOT NULL,
`php_controller_list` MEDIUMTEXT NOT NULL,
`php_document` MEDIUMTEXT NOT NULL,
`php_getform` MEDIUMTEXT NOT NULL,
`php_getitem` MEDIUMTEXT NOT NULL,
`php_getitems` MEDIUMTEXT NOT NULL,
`php_getitems_after_all` MEDIUMTEXT NOT NULL,
`php_getlistquery` MEDIUMTEXT NOT NULL,
`php_import` MEDIUMTEXT NOT NULL,
`php_import_display` MEDIUMTEXT NOT NULL,
`php_import_ext` MEDIUMTEXT NOT NULL,
`php_import_headers` MEDIUMTEXT NOT NULL,
`php_import_save` MEDIUMTEXT NOT NULL,
`php_import_setdata` MEDIUMTEXT NOT NULL,
`php_model` MEDIUMTEXT NOT NULL,
`php_model_list` MEDIUMTEXT NOT NULL,
`php_postsavehook` MEDIUMTEXT NOT NULL,
`php_save` MEDIUMTEXT NOT NULL,
`short_description` VARCHAR(255) NOT NULL DEFAULT '',
`source` TINYINT(1) NOT NULL DEFAULT 0,
`sql` MEDIUMTEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`type` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name_single` (`name_single`),
KEY `idx_add_fadein` (`add_fadein`),
KEY `idx_mysql_table_charset` (`mysql_table_charset`),
KEY `idx_type` (`type`),
KEY `idx_source` (`source`),
KEY `idx_mysql_table_row_format` (`mysql_table_row_format`),
KEY `idx_add_category_submenu` (`add_category_submenu`),
KEY `idx_name_list` (`name_list`),
KEY `idx_add_php_getlistquery` (`add_php_getlistquery`),
KEY `idx_add_css_view` (`add_css_view`),
KEY `idx_add_php_getform` (`add_php_getform`),
KEY `idx_add_php_before_save` (`add_php_before_save`),
KEY `idx_add_css_views` (`add_css_views`),
KEY `idx_add_php_save` (`add_php_save`),
KEY `idx_add_php_postsavehook` (`add_php_postsavehook`),
KEY `idx_add_javascript_view_file` (`add_javascript_view_file`),
KEY `idx_add_php_allowadd` (`add_php_allowadd`),
KEY `idx_add_php_allowedit` (`add_php_allowedit`),
KEY `idx_add_javascript_view_footer` (`add_javascript_view_footer`),
KEY `idx_add_php_before_cancel` (`add_php_before_cancel`),
KEY `idx_add_php_after_cancel` (`add_php_after_cancel`),
KEY `idx_add_javascript_views_file` (`add_javascript_views_file`),
KEY `idx_add_php_batchcopy` (`add_php_batchcopy`),
KEY `idx_add_php_batchmove` (`add_php_batchmove`),
KEY `idx_add_javascript_views_footer` (`add_javascript_views_footer`),
KEY `idx_add_php_before_publish` (`add_php_before_publish`),
KEY `idx_add_php_after_publish` (`add_php_after_publish`),
KEY `idx_add_custom_button` (`add_custom_button`),
KEY `idx_add_php_before_delete` (`add_php_before_delete`),
KEY `idx_add_php_after_delete` (`add_php_after_delete`),
KEY `idx_add_php_document` (`add_php_document`),
KEY `idx_mysql_table_engine` (`mysql_table_engine`),
KEY `idx_mysql_table_collate` (`mysql_table_collate`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_add_php_ajax` (`add_php_ajax`),
KEY `idx_add_custom_import` (`add_custom_import`),
KEY `idx_add_php_getitem` (`add_php_getitem`),
KEY `idx_add_php_getitems` (`add_php_getitems`),
KEY `idx_guid` (`guid`),
KEY `idx_add_php_getitems_after_all` (`add_php_getitems_after_all`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_admin_view` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_css` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_custom_button` INT(1) NOT NULL DEFAULT 0,
`add_javascript_file` TINYINT(1) NOT NULL DEFAULT 0,
`add_js_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_jview` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_jview_display` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
`ajax_input` TEXT NOT NULL,
`codename` VARCHAR(255) NOT NULL DEFAULT '',
`context` VARCHAR(255) NOT NULL DEFAULT '',
`css` TEXT NOT NULL,
`css_document` TEXT NOT NULL,
`custom_button` TEXT NOT NULL,
`custom_get` TEXT NOT NULL,
`default` MEDIUMTEXT NOT NULL,
`description` VARCHAR(255) NOT NULL DEFAULT '',
`dynamic_get` INT(11) NOT NULL DEFAULT 0,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`icon` VARCHAR(255) NOT NULL DEFAULT '',
`javascript_file` TEXT NOT NULL,
`js_document` TEXT NOT NULL,
`libraries` TEXT NOT NULL,
`main_get` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_ajaxmethod` MEDIUMTEXT NOT NULL,
`php_controller` MEDIUMTEXT NOT NULL,
`php_document` MEDIUMTEXT NOT NULL,
`php_jview` MEDIUMTEXT NOT NULL,
`php_jview_display` MEDIUMTEXT NOT NULL,
`php_model` MEDIUMTEXT NOT NULL,
`php_view` MEDIUMTEXT NOT NULL,
`snippet` INT(11) NOT NULL DEFAULT 0,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_main_get` (`main_get`),
KEY `idx_add_php_jview_display` (`add_php_jview_display`),
KEY `idx_codename` (`codename`),
KEY `idx_add_php_jview` (`add_php_jview`),
KEY `idx_context` (`context`),
KEY `idx_add_js_document` (`add_js_document`),
KEY `idx_add_javascript_file` (`add_javascript_file`),
KEY `idx_add_css_document` (`add_css_document`),
KEY `idx_add_php_document` (`add_php_document`),
KEY `idx_add_css` (`add_css`),
KEY `idx_add_php_view` (`add_php_view`),
KEY `idx_add_php_ajax` (`add_php_ajax`),
KEY `idx_dynamic_get` (`dynamic_get`),
KEY `idx_add_custom_button` (`add_custom_button`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_site_view` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_css` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_custom_button` INT(1) NOT NULL DEFAULT 0,
`add_javascript_file` TINYINT(1) NOT NULL DEFAULT 0,
`add_js_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_jview` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_jview_display` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
`ajax_input` TEXT NOT NULL,
`button_position` TINYINT(1) NOT NULL DEFAULT 1,
`codename` VARCHAR(255) NOT NULL DEFAULT '',
`context` VARCHAR(255) NOT NULL DEFAULT '',
`css` TEXT NOT NULL,
`css_document` TEXT NOT NULL,
`custom_button` TEXT NOT NULL,
`custom_get` TEXT NOT NULL,
`default` MEDIUMTEXT NOT NULL,
`description` VARCHAR(255) NOT NULL DEFAULT '',
`dynamic_get` INT(11) NOT NULL DEFAULT 0,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`javascript_file` TEXT NOT NULL,
`js_document` TEXT NOT NULL,
`libraries` TEXT NOT NULL,
`main_get` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_ajaxmethod` MEDIUMTEXT NOT NULL,
`php_controller` MEDIUMTEXT NOT NULL,
`php_document` MEDIUMTEXT NOT NULL,
`php_jview` MEDIUMTEXT NOT NULL,
`php_jview_display` MEDIUMTEXT NOT NULL,
`php_model` MEDIUMTEXT NOT NULL,
`php_view` MEDIUMTEXT NOT NULL,
`snippet` INT(11) NOT NULL DEFAULT 0,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_main_get` (`main_get`),
KEY `idx_add_php_jview_display` (`add_php_jview_display`),
KEY `idx_add_php_document` (`add_php_document`),
KEY `idx_add_php_view` (`add_php_view`),
KEY `idx_codename` (`codename`),
KEY `idx_context` (`context`),
KEY `idx_add_php_jview` (`add_php_jview`),
KEY `idx_add_javascript_file` (`add_javascript_file`),
KEY `idx_add_js_document` (`add_js_document`),
KEY `idx_add_css_document` (`add_css_document`),
KEY `idx_add_css` (`add_css`),
KEY `idx_dynamic_get` (`dynamic_get`),
KEY `idx_add_php_ajax` (`add_php_ajax`),
KEY `idx_add_custom_button` (`add_custom_button`),
KEY `idx_button_position` (`button_position`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_template` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
`alias` VARCHAR(255) NOT NULL DEFAULT '',
`description` VARCHAR(255) NOT NULL DEFAULT '',
`dynamic_get` INT(11) NOT NULL DEFAULT 0,
`libraries` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_view` MEDIUMTEXT NOT NULL,
`snippet` INT(11) NOT NULL DEFAULT 0,
`template` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_dynamic_get` (`dynamic_get`),
KEY `idx_add_php_view` (`add_php_view`),
KEY `idx_alias` (`alias`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_layout` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
`alias` VARCHAR(255) NOT NULL DEFAULT '',
`description` VARCHAR(255) NOT NULL DEFAULT '',
`dynamic_get` INT(11) NOT NULL DEFAULT 0,
`layout` TEXT NOT NULL,
`libraries` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_view` MEDIUMTEXT NOT NULL,
`snippet` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_dynamic_get` (`dynamic_get`),
KEY `idx_add_php_view` (`add_php_view`),
KEY `idx_alias` (`alias`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_dynamic_get` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_php_after_getitem` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_after_getitems` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_getitem` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_before_getitems` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_getlistquery` TINYINT(1) NOT NULL DEFAULT 0,
`add_php_router_parse` TINYINT(1) NOT NULL DEFAULT 0,
`addcalculation` TINYINT(1) NOT NULL DEFAULT 0,
`db_selection` TEXT NOT NULL,
`db_table_main` VARCHAR(255) NOT NULL DEFAULT '',
`filter` TEXT NOT NULL,
`getcustom` VARCHAR(255) NOT NULL DEFAULT '',
`gettype` TINYINT(1) NOT NULL DEFAULT 0,
`global` TEXT NOT NULL,
`group` TEXT NOT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`join_db_table` TEXT NOT NULL,
`join_view_table` TEXT NOT NULL,
`main_source` TINYINT(1) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`order` TEXT NOT NULL,
`pagination` TINYINT(1) NOT NULL DEFAULT 1,
`php_after_getitem` MEDIUMTEXT NOT NULL,
`php_after_getitems` MEDIUMTEXT NOT NULL,
`php_before_getitem` MEDIUMTEXT NOT NULL,
`php_before_getitems` MEDIUMTEXT NOT NULL,
`php_calculation` MEDIUMTEXT NOT NULL,
`php_custom_get` MEDIUMTEXT NOT NULL,
`php_getlistquery` MEDIUMTEXT NOT NULL,
`php_router_parse` MEDIUMTEXT NOT NULL,
`plugin_events` VARCHAR(255) NOT NULL DEFAULT '',
`select_all` TINYINT(1) NOT NULL DEFAULT 0,
`view_selection` TEXT NOT NULL,
`view_table_main` INT(11) NOT NULL DEFAULT 0,
`where` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_main_source` (`main_source`),
KEY `idx_gettype` (`gettype`),
KEY `idx_add_php_after_getitems` (`add_php_after_getitems`),
KEY `idx_add_php_router_parse` (`add_php_router_parse`),
KEY `idx_add_php_before_getitems` (`add_php_before_getitems`),
KEY `idx_add_php_before_getitem` (`add_php_before_getitem`),
KEY `idx_add_php_after_getitem` (`add_php_after_getitem`),
KEY `idx_add_php_getlistquery` (`add_php_getlistquery`),
KEY `idx_select_all` (`select_all`),
KEY `idx_getcustom` (`getcustom`),
KEY `idx_pagination` (`pagination`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_code` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`code` MEDIUMTEXT NOT NULL,
`comment_type` TINYINT(1) NOT NULL DEFAULT 1,
`component` INT(11) NOT NULL DEFAULT 0,
`from_line` VARCHAR(100) NOT NULL DEFAULT '',
`function_name` VARCHAR(255) NOT NULL DEFAULT '',
`hashendtarget` VARCHAR(64) NOT NULL DEFAULT '',
`hashtarget` VARCHAR(64) NOT NULL DEFAULT '',
`joomla_version` INT(11) NOT NULL DEFAULT 3,
`path` TEXT NOT NULL,
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`target` TINYINT(1) NOT NULL DEFAULT 0,
`to_line` VARCHAR(100) NOT NULL DEFAULT '',
`type` TINYINT(1) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_component` (`component`),
KEY `idx_target` (`target`),
KEY `idx_type` (`type`),
KEY `idx_function_name` (`function_name`),
KEY `idx_to_line` (`to_line`),
KEY `idx_from_line` (`from_line`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_property` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`comment` TEXT NOT NULL,
`default` TEXT NOT NULL,
`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`visibility` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_visibility` (`visibility`),
KEY `idx_guid` (`guid`),
KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_method` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`arguments` TEXT NOT NULL,
`code` MEDIUMTEXT NOT NULL,
`comment` TEXT NOT NULL,
`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`visibility` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_visibility` (`visibility`),
KEY `idx_guid` (`guid`),
KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_placeholder` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`target` VARCHAR(255) NOT NULL DEFAULT '',
`value` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_target` (`target`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_library` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addconditions` MEDIUMTEXT NOT NULL,
`description` VARCHAR(255) NOT NULL DEFAULT '',
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`how` TINYINT(1) NOT NULL DEFAULT 1,
`libraries` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php_setdocument` MEDIUMTEXT NOT NULL,
`target` TINYINT(1) NOT NULL DEFAULT 1,
`type` TINYINT(1) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_how` (`how`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`contributor_company` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_email` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_name` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_website` VARCHAR(255) NOT NULL DEFAULT '',
`description` TEXT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`heading` VARCHAR(255) NOT NULL DEFAULT '',
`library` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`snippet` TEXT NOT NULL,
`type` INT(11) NOT NULL DEFAULT 0,
`url` VARCHAR(255) NOT NULL DEFAULT '',
`usage` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_type` (`type`),
KEY `idx_library` (`library`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_validation_rule` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`inherit` CHAR(64) NOT NULL DEFAULT '',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`php` MEDIUMTEXT NOT NULL,
`short_description` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_field` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`add_css_view` TINYINT(1) NOT NULL DEFAULT 0,
`add_css_views` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_view_footer` TINYINT(1) NOT NULL DEFAULT 0,
`add_javascript_views_footer` TINYINT(1) NOT NULL DEFAULT 0,
`catid` INT(11) NOT NULL DEFAULT 0,
`css_view` TEXT NOT NULL,
`css_views` TEXT NOT NULL,
`datadefault` CHAR(64) NOT NULL DEFAULT '',
`datadefault_other` CHAR(64) NOT NULL DEFAULT '',
`datalenght` CHAR(64) NOT NULL DEFAULT '',
`datalenght_other` CHAR(64) NOT NULL DEFAULT '',
`datatype` CHAR(64) NOT NULL DEFAULT '',
`fieldtype` INT(11) NOT NULL DEFAULT 0,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`indexes` CHAR(64) NOT NULL DEFAULT '',
`initiator_on_get_model` TEXT NOT NULL,
`initiator_on_save_model` TEXT NOT NULL,
`javascript_view_footer` TEXT NOT NULL,
`javascript_views_footer` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`null_switch` CHAR(64) NOT NULL DEFAULT '',
`on_get_model_field` TEXT NOT NULL,
`on_save_model_field` TEXT NOT NULL,
`store` INT(11) NOT NULL DEFAULT 0,
`xml` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_fieldtype` (`fieldtype`),
KEY `idx_datatype` (`datatype`),
KEY `idx_indexes` (`indexes`),
KEY `idx_null_switch` (`null_switch`),
KEY `idx_catid` (`catid`),
KEY `idx_datalenght` (`datalenght`),
KEY `idx_datadefault_other` (`datadefault_other`),
KEY `idx_datadefault` (`datadefault`),
KEY `idx_datalenght_other` (`datalenght_other`),
KEY `idx_add_css_view` (`add_css_view`),
KEY `idx_add_css_views` (`add_css_views`),
KEY `idx_add_javascript_view_footer` (`add_javascript_view_footer`),
KEY `idx_add_javascript_views_footer` (`add_javascript_views_footer`),
KEY `idx_guid` (`guid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_fieldtype` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`catid` INT(11) NOT NULL DEFAULT 0,
`datadefault` CHAR(64) NOT NULL DEFAULT '',
`datadefault_other` CHAR(64) NOT NULL DEFAULT '',
`datalenght` CHAR(64) NOT NULL DEFAULT '',
`datalenght_other` CHAR(64) NOT NULL DEFAULT '',
`datatype` CHAR(64) NOT NULL DEFAULT '',
`description` TEXT NULL,
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`has_defaults` TINYINT(1) NOT NULL DEFAULT 0,
`indexes` CHAR(64) NOT NULL DEFAULT '',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`null_switch` CHAR(64) NOT NULL DEFAULT '',
`properties` TEXT NOT NULL,
`short_description` VARCHAR(255) NOT NULL DEFAULT '',
`store` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_null_switch` (`null_switch`),
KEY `idx_indexes` (`indexes`),
KEY `idx_datadefault_other` (`datadefault_other`),
KEY `idx_datadefault` (`datadefault`),
KEY `idx_datatype` (`datatype`),
KEY `idx_has_defaults` (`has_defaults`),
KEY `idx_datalenght` (`datalenght`),
KEY `idx_datalenght_other` (`datalenght_other`),
KEY `idx_guid` (`guid`),
KEY `idx_catid` (`catid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_translation` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`components` TEXT NULL,
`modules` TEXT NULL,
`plugins` TEXT NULL,
`source` MEDIUMTEXT NOT NULL,
`translation` TEXT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_language` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`langtag` VARCHAR(64) NOT NULL DEFAULT '',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_server` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`authentication` TINYINT(1) NOT NULL DEFAULT 0,
`host` TEXT NOT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`password` TEXT NOT NULL,
`path` TEXT NOT NULL,
`port` TEXT NOT NULL,
`private` TEXT NOT NULL,
`private_key` TEXT NOT NULL,
`protocol` TINYINT(1) NOT NULL DEFAULT 0,
`secret` TEXT NOT NULL,
`signature` TEXT NOT NULL,
`username` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_protocol` (`protocol`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_repository` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`access_repo` TINYINT(1) NOT NULL DEFAULT 0,
`base` VARCHAR(255) NOT NULL DEFAULT '',
`guid` VARCHAR(36) NOT NULL DEFAULT '',
`organisation` VARCHAR(255) NOT NULL DEFAULT '',
`read_branch` VARCHAR(255) NULL DEFAULT '',
`repository` VARCHAR(255) NOT NULL DEFAULT '',
`system_name` VARCHAR(255) NOT NULL DEFAULT '',
`target` TINYINT(7) NOT NULL DEFAULT 1,
`token` VARCHAR(255) NULL DEFAULT '',
`type` TINYINT(1) NOT NULL DEFAULT 1,
`username` VARCHAR(255) NULL DEFAULT '',
`write_branch` VARCHAR(255) NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_organisation` (`organisation`),
KEY `idx_repository` (`repository`),
KEY `idx_target` (`target`),
KEY `idx_type` (`type`),
KEY `idx_guid` (`guid`),
KEY `idx_access_repo` (`access_repo`),
KEY `idx_write_branch` (`write_branch`),
KEY `idx_read_branch` (`read_branch`),
KEY `idx_token` (`token`),
KEY `idx_username` (`username`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_help_document` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`admin_view` CHAR(255) NOT NULL DEFAULT '',
`alias` CHAR(64) NOT NULL DEFAULT '',
`article` TINYINT(1) NOT NULL DEFAULT 0,
`content` TEXT NOT NULL,
`groups` TEXT NOT NULL,
`location` TINYINT(1) NOT NULL DEFAULT 0,
`not_required` INT(1) NOT NULL DEFAULT 0,
`site_view` CHAR(255) NOT NULL DEFAULT '',
`target` TINYINT(1) NOT NULL DEFAULT 0,
`title` CHAR(64) NOT NULL DEFAULT '',
`type` TINYINT(1) NOT NULL DEFAULT 0,
`url` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_title` (`title`),
KEY `idx_type` (`type`),
KEY `idx_location` (`location`),
KEY `idx_article` (`article`),
KEY `idx_target` (`target`),
KEY `idx_alias` (`alias`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addfields` MEDIUMTEXT NOT NULL,
`admin_view` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_admin_view` (`admin_view`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields_conditions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addconditions` MEDIUMTEXT NOT NULL,
`admin_view` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_admin_view` (`admin_view`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields_relations` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addrelations` MEDIUMTEXT NOT NULL,
`admin_view` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_admin_view` (`admin_view`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_custom_tabs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`admin_view` INT(11) NOT NULL DEFAULT 0,
`tabs` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_admin_view` (`admin_view`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_admin_views` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addadmin_views` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_site_views` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addsite_views` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_custom_admin_views` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addcustom_admin_views` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_updates` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`version_update` MEDIUMTEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_mysql_tweaks` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`sql_tweak` TEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_custom_admin_menus` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addcustommenus` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_router` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`constructor_after_parent_code` MEDIUMTEXT NOT NULL,
`constructor_before_parent_code` MEDIUMTEXT NOT NULL,
`constructor_before_parent_manual` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`methods_code` MEDIUMTEXT NOT NULL,
`mode_constructor_after_parent` TINYINT(1) NOT NULL DEFAULT 0,
`mode_constructor_before_parent` TINYINT(1) NOT NULL DEFAULT 0,
`mode_methods` TINYINT(1) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_config` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addconfig` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_dashboard` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`dashboard_tab` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`php_dashboard_methods` MEDIUMTEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_files_folders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addfiles` TEXT NOT NULL,
`addfilesfullpath` TEXT NOT NULL,
`addfolders` TEXT NOT NULL,
`addfoldersfullpath` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_placeholders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addplaceholders` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_plugins` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addjoomla_plugins` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_modules` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addjoomla_modules` TEXT NOT NULL,
`joomla_component` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_component` (`joomla_component`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet_type` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`description` VARCHAR(255) NOT NULL DEFAULT '',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_library_config` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addconfig` TEXT NOT NULL,
`library` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_library` (`library`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_library_files_folders_urls` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addfiles` TEXT NOT NULL,
`addfilesfullpath` TEXT NOT NULL,
`addfolders` TEXT NOT NULL,
`addfoldersfullpath` TEXT NOT NULL,
`addurls` TEXT NOT NULL,
`library` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_library` (`library`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_extends` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`comment` TEXT NOT NULL,
`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
`head` TEXT NULL,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module_updates` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`joomla_module` INT(11) NOT NULL DEFAULT 0,
`version_update` MEDIUMTEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_module` (`joomla_module`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module_files_folders_urls` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addfiles` TEXT NOT NULL,
`addfilesfullpath` TEXT NOT NULL,
`addfolders` TEXT NOT NULL,
`addfoldersfullpath` TEXT NOT NULL,
`addurls` TEXT NOT NULL,
`joomla_module` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_module` (`joomla_module`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_group` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`class_extends` INT(11) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_class_extends` (`class_extends`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_updates` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`joomla_plugin` INT(11) NOT NULL DEFAULT 0,
`version_update` MEDIUMTEXT NOT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_plugin` (`joomla_plugin`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`addfiles` TEXT NOT NULL,
`addfilesfullpath` TEXT NOT NULL,
`addfolders` TEXT NOT NULL,
`addfoldersfullpath` TEXT NOT NULL,
`addurls` TEXT NOT NULL,
`joomla_plugin` INT(11) NOT NULL DEFAULT 0,
`params` TEXT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME DEFAULT NULL,
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME DEFAULT NULL,
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_joomla_plugin` (`joomla_plugin`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
--
-- Dumping data for table `#__componentbuilder_joomla_component`
--
INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_admin_event`, `add_backup_folder_path`, `add_css_admin`, `add_css_site`, `add_email_helper`, `add_git_folder_path`, `add_javascript`, `add_menu_prefix`, `add_namespace_prefix`, `add_php_helper_admin`, `add_php_helper_both`, `add_php_helper_site`, `add_php_method_uninstall`, `add_php_postflight_install`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_update`, `add_placeholders`, `add_powers`, `add_sales_server`, `add_site_event`, `add_sql`, `add_sql_uninstall`, `add_update_server`, `addcontributors`, `addfootable`, `addreadme`, `adduikit`, `assets_table_fix`, `author`, `backup_folder_path`, `bom`, `buildcomp`, `buildcompsql`, `companyname`, `component_version`, `copyright`, `created`, `creatuserhelper`, `crowdin_account_api_key`, `crowdin_project_api_key`, `crowdin_project_identifier`, `crowdin_username`, `css_admin`, `css_site`, `dashboard`, `dashboard_type`, `debug_linenr`, `description`, `email`, `emptycontributors`, `export_buy_link`, `export_key`, `git_folder_path`, `guid`, `image`, `javascript`, `joomla_source_link`, `license`, `menu_prefix`, `modified`, `mvc_versiondate`, `name`, `name_code`, `namespace_prefix`, `number`, `php_admin_event`, `php_helper_admin`, `php_helper_both`, `php_helper_site`, `php_method_uninstall`, `php_method_install`, `php_postflight_install`, `php_postflight_update`, `php_preflight_install`, `php_preflight_update`, `php_site_event`, `readme`, `remove_line_breaks`, `sales_server`, `short_description`, `sql`, `sql_uninstall`, `system_name`, `toignore`, `translation_tool`, `update_server`, `update_server_target`, `update_server_url`, `website`, `params`, `published`, `version`, `hits`, `access`, `ordering`) VALUES
(25, '', '', '', '', '', '', '', 1, '', '', '', 1, '', 1, '', '', '', '', 1, '', '', '', '', 1, '{}', '', 1, 1, 3, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '2.1.0', 'Copyright (C) 2015. All Rights Reserved', '2016-10-18 11:44:09', '', 'mvVkzmHCEIoBhzD3gR3uTzXRGwNVNRWw8Hr1vrXxb+I=', 'BbloLSYT6Yup6v3I/YNmrdOwzjbI4BGfDvJSB82N9DU=', '', 'VtSt2RMz+AHCrwc7jk1G70t83ZwZsNp2upqfzMyaVHE=', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'nZDegSPK87rXA4KMC6P8I6zEldjVIJpPYGRPZlKBI+U=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', '»', '2024-01-19 11:57:08', '', 'Demo', 'demo', 'JCB', 4, '', '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ0K', '', '', 'CQkvLyBHZXQgQXBwbGljYXRpb24gb2JqZWN0DQoJCSRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOw0KCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnVGhpcyBpcyBhIGRlbW8gY29tcG9uZW50IGRldmVsb3BlZCBpbiA8YSBocmVmPSJodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5KQ0I8L2E+ISBZb3UgY2FuIGJ1aWxkIG1vcmUgY29tcG9uZW50cyBsaWtlIHRoaXMgd2l0aCBKQ0IsIGNoZWNrb3V0IG91ciBwYWdlIG9uIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92ZG0taW8vSm9vbWxhLUNvbXBvbmVudC1CdWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5naXRodWI8L2E+IGZvciBtb3JlIGluZm8uIFRoZSBmdXR1cmUgb2YgPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+Sm9vbWxhIENvbXBvbmVudCBEZXZlbG9wbWVudDwvYT4gaXMgSGVyZSEnLCAnSW5mbycpOw==', '', '', '', '', 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCltDVVNUT01DT0RFPXJlYWRNRWNvbnRyaWJ1dG9yc10=', '', '', 'Demo Component', '', '', 'Demo (public)', '.git', '', '', 2, 'https://raw.githubusercontent.com/namibia/demo-joomla-3-component/master/demo_updateserver.xml', 'https://www.vdm.io/', '{\"language_options\":{\"activate\":\"0\",\"use_percentagelanguageadd\":\"1\",\"percentagelanguageadd\":\"50\"},\"joomla_component_headers\":{\"add_admin_component\":\"0\",\"admin_component\":\"\",\"power_admin_component\":[],\"add_site_component\":\"0\",\"site_component\":\"\",\"power_site_component\":[],\"add_admin_helper\":\"0\",\"admin_helper\":\"\",\"power_admin_helper\":[],\"add_site_helper\":\"0\",\"site_helper\":\"\",\"power_site_helper\":[]}}', 1, 54, '', 1, 10);
--
-- Dumping data for table `#__componentbuilder_joomla_plugin`
--
INSERT INTO `#__componentbuilder_joomla_plugin` (`id`, `add_head`, `add_php_method_uninstall`, `add_php_postflight_install`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_uninstall`, `add_php_preflight_update`, `add_php_script_construct`, `add_sales_server`, `add_sql`, `add_sql_uninstall`, `add_update_server`, `addreadme`, `class_extends`, `description`, `fields`, `guid`, `head`, `joomla_plugin_group`, `method_selection`, `main_class_code`, `name`, `php_method_uninstall`, `php_postflight_install`, `php_postflight_update`, `php_preflight_install`, `php_preflight_uninstall`, `php_preflight_update`, `php_script_construct`, `plugin_version`, `property_selection`, `readme`, `sales_server`, `sql`, `sql_uninstall`, `system_name`, `update_server`, `update_server_target`, `update_server_url`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(1, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 4, 'The plugin to fully integrate componentbuilder with the privacy suite of Joomla.', '{}', '518f7be7-140c-47d3-9fb2-b6717230e0fc', 'dXNlIEpvb21sYVxVdGlsaXRpZXNcQXJyYXlIZWxwZXI7DQoNCkpMb2FkZXI6OnJlZ2lzdGVyKCdQcml2YWN5UGx1Z2luJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fcHJpdmFjeS9oZWxwZXJzL3BsdWdpbi5waHAnKTsNCkpMb2FkZXI6OnJlZ2lzdGVyKCdQcml2YWN5UmVtb3ZhbFN0YXR1cycsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX3ByaXZhY3kvaGVscGVycy9yZW1vdmFsL3N0YXR1cy5waHAnKTsNCkpMb2FkZXI6OnJlZ2lzdGVyKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb21wb25lbnRdXV0vaGVscGVycy9bW1tjb21wb25lbnRdXV0ucGhwJyk7IA==', 10, '{\"method_selection0\":{\"method\":\"51\"},\"method_selection1\":{\"method\":\"52\"},\"method_selection2\":{\"method\":\"53\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wDQoJICovDQoJcHJvdGVjdGVkICAkYXBwOw0KDQoJLyoqDQoJICogRGF0YWJhc2Ugb2JqZWN0DQoJICoNCgkgKiBAdmFyICAgIERhdGFiYXNlRHJpdmVyDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRkYjsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUGVyZm9ybXMgdmFsaWRhdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcmVtb3ZlIGluZm9ybWF0aW9uIHJlcXVlc3QgY2FuIGJlIHByb2Nlc3NlZA0KCSAqDQoJICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQNCgkgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICAkdXNlciAgICAgVGhlIHVzZXIgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IGlmIGF2YWlsYWJsZQ0KCSAqDQoJICogQHJldHVybiAgUHJpdmFjeVJlbW92YWxTdGF0dXMNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblByaXZhY3lDYW5SZW1vdmVEYXRhKFByaXZhY3lUYWJsZVJlcXVlc3QgJHJlcXVlc3QsIEpVc2VyICR1c2VyID0gbnVsbCkNCgl7DQoJCSRzdGF0dXMgPSBuZXcgUHJpdmFjeVJlbW92YWxTdGF0dXM7DQoNCgkJLy8gVGhpcyBwbHVnaW4gb25seSBwcm9jZXNzZXMgZGF0YSBmb3IgcmVnaXN0ZXJlZCB1c2VyIGFjY291bnRzDQoJCWlmICghJHVzZXIpDQoJCXsNCgkJCXJldHVybiAkc3RhdHVzOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgdGhlIGhlbHBlciBtZXRob2QgaXMgc2V0IGluIHRoZSBjb21wb25lbnQNCgkJaWYgKG1ldGhvZF9leGlzdHMoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsICdvblByaXZhY3lDYW5SZW1vdmVEYXRhJykpDQoJCXsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6b25Qcml2YWN5Q2FuUmVtb3ZlRGF0YSgkdGhpcywgJHN0YXR1cywgJHJlcXVlc3QsICR1c2VyKTsNCgkJfQ0KDQoJCXJldHVybiAkc3RhdHVzOw0KCX0NCg0KCS8qKg0KCSAqIFByb2Nlc3NlcyBhbiBleHBvcnQgcmVxdWVzdCBmb3IgSm9vbWxhIGNvcmUgdXNlciBkYXRhDQoJICoNCgkgKiBAcGFyYW0gICBQcml2YWN5VGFibGVSZXF1ZXN0ICAkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZA0KCSAqIEBwYXJhbSAgIEpVc2VyICAgICAgICAgICAgICAgICR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblByaXZhY3lFeHBvcnRSZXF1ZXN0KFByaXZhY3lUYWJsZVJlcXVlc3QgJHJlcXVlc3QsIEpVc2VyICR1c2VyID0gbnVsbCkNCgl7DQoJCSRkb21haW5zID0gYXJyYXkoKTsNCg0KCQkvLyBUaGlzIHBsdWdpbiBvbmx5IHByb2Nlc3NlcyBkYXRhIGZvciByZWdpc3RlcmVkIHVzZXIgYWNjb3VudHMNCgkJaWYgKCEkdXNlcikNCgkJew0KCQkJcmV0dXJuICRkb21haW5zOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgdGhlIGhlbHBlciBtZXRob2QgaXMgc2V0IGluIHRoZSBjb21wb25lbnQNCgkJaWYgKG1ldGhvZF9leGlzdHMoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsICdvblByaXZhY3lFeHBvcnRSZXF1ZXN0JykpDQoJCXsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6b25Qcml2YWN5RXhwb3J0UmVxdWVzdCgkdGhpcywgJGRvbWFpbnMsICRyZXF1ZXN0LCAkdXNlcik7DQoJCX0NCg0KCQlyZXR1cm4gJGRvbWFpbnM7DQoJfQ0KDQoJLyoqDQoJICogUmVtb3ZlcyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdmUgaW5mb3JtYXRpb24gcmVxdWVzdA0KCSAqDQoJICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQNCgkgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICAkdXNlciAgICAgVGhlIHVzZXIgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IGlmIGF2YWlsYWJsZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUHJpdmFjeVJlbW92ZURhdGEoUHJpdmFjeVRhYmxlUmVxdWVzdCAkcmVxdWVzdCwgSlVzZXIgJHVzZXIgPSBudWxsKQ0KCXsNCgkJLy8gVGhpcyBwbHVnaW4gb25seSBwcm9jZXNzZXMgZGF0YSBmb3IgcmVnaXN0ZXJlZCB1c2VyIGFjY291bnRzDQoJCWlmICghJHVzZXIpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCS8vIGNoZWNrIGlmIHRoZSBoZWxwZXIgbWV0aG9kIGlzIHNldCBpbiB0aGUgY29tcG9uZW50DQoJCWlmIChtZXRob2RfZXhpc3RzKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCAnb25Qcml2YWN5UmVtb3ZlRGF0YScpKQ0KCQl7DQoJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6Om9uUHJpdmFjeVJlbW92ZURhdGEoJHRoaXMsICRyZXF1ZXN0LCAkdXNlcik7DQoJCX0NCgl9', '[[[Component]]]', 'Ly8gUEhQIE1ldGhvZCAodW5pbnN0YWxsKQ==', 'Ly8gUEhQIFBvc3RmbGlnaHQgKGluc3RhbGwp', 'Ly8gUEhQIFBvc3RmbGlnaHQgKHVwZGF0ZSk=', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', 'Ly8gUEhQIFByZWZsaWdodCAodW5pbnN0YWxsKQ==', 'Ly8gUEhQIFByZWZsaWdodCAodXBkYXRlKQ==', '', '1.0.0', '{\"property_selection0\":{\"property\":\"31\"},\"property_selection1\":{\"property\":\"32\"},\"property_selection2\":{\"property\":\"33\"}}', 'IyAjIyNQTFVHSU5fTkFNRSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIyMjREVTQ1JJUFRJT04jIyMNCg0KIyBCdWlsZCBEZXRhaWxzDQoNCisgKkNvbXBhbnkqOiBbIyMjQ09NUEFOWU5BTUUjIyNdKCMjI0FVVEhPUldFQlNJVEUjIyMpDQorICpBdXRob3IqOiBbIyMjQVVUSE9SIyMjXShtYWlsdG86IyMjQVVUSE9SRU1BSUwjIyMpDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw==', '', '', '', 'Global Privacy', '', 1, 'https://www.vdm.io/updates/componentbuilder_global_privacy.xml', '', 1, '2019-07-16 00:49:50', '2020-05-24 22:49:38', 29, '', 1),
(2, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields1\":{\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"plugin\",\"label\":\"Plugin\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields2\":{\"file\":\"admin_view\",\"fields_name\":\"params.privacy\",\"fieldset\":\"privacy\",\"label\":\"Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2603\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2605\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2606\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2607\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2608\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2611\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2612\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2613\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2614\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2615\",\"custom_value\":\"\"}}}}', 'a3e3ce4d-f6c1-4a92-bdc0-d7c61a0756c1', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7DQp1c2UgSm9vbWxhXENNU1xGb3JtXEZvcm07DQoNCkpMb2FkZXI6OnJlZ2lzdGVyKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb21wb25lbnRdXV0vaGVscGVycy9bW1tjb21wb25lbnRdXV0ucGhwJyk7IA0K', 3, '{\"method_selection0\":{\"method\":\"113\"},\"method_selection1\":{\"method\":\"12\"},\"method_selection2\":{\"method\":\"0\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQkJLy8gaWYgdGhlIGdsb2JhbCBwbHVnaW4gaXMgbm90IHNldCwgYWxsb3cgaXQgdG8gYmUgc2V0IGZyb20gdGhlIGFkbWluIHZpZXcNCgkJCWlmICgoJHBsdWdpbiA9ICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpID09IDApDQoJCQl7DQoJCQkJJGZvcm0tPmxvYWRGaWxlKCdjb25maWcnKTsNCgkJCQkvLyBtYWtlIHRoZSBwbHVnaW4gZmllbGQgcmVxdWlyZWQgKExBVEVSIHdoZW4gd2UgY2FuIGdpdmUgbW9yZSBpbmZvKQ0KCQkJCS8vJGZvcm0tPnNldEZpZWxkQXR0cmlidXRlKCdwbHVnaW4nLCAncmVxdWlyZWQnLCB0cnVlLCAncGFyYW1zLnByaXZhY3knKTsNCgkJCQkvLyRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgncGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQkJLy8kZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ25vdGVfc2VsZWN0X3ByaXZhY3lfcGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQl9DQoJCQkvLyB1cGRhdGUgYWxsIGVkaXRvcnMgdG8gdXNlIHRoaXMgY29tcG9uZW50cyBnbG9iYWwgZWRpdG9yDQoJCQkkZ2xvYmFsX2VkaXRvciA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdlZGl0b3InLCAnbm9uZScpOw0KCQkJLy8gc2V0IHRoZSBmaWVsZCBlZGl0b3IgdmFsdWUgKHdpdGggbm9uZSBhcyBmYWxsYmFjaykNCgkJCSRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgnY3VzdG9tX2xpbmsnLCAnZWRpdG9yJywgJGdsb2JhbF9lZGl0b3IgLiAnfG5vbmUnLCAncGFyYW1zLnByaXZhY3knKTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkgKiBUaGlzIGlzIGFuIGV2ZW50IHRoYXQgaXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSB0aGUgY29udGVudA0KCSAqIGlzIHNhdmVkIGludG8gdGhlIGRhdGFiYXNlLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgcGFzc2VkIHRvIHRoZSBwbHVnaW4gKGFkZGVkIGluIDEuNikuDQoJICogQHBhcmFtICAgb2JqZWN0ICAkYXJ0aWNsZSAgQSBKVGFibGVDb250ZW50IG9iamVjdC4NCgkgKiBAcGFyYW0gICBib29sICAgICRpc05ldyAgICBJZiB0aGUgY29udGVudCBpcyBqdXN0IGFib3V0IHRvIGJlIGNyZWF0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkLg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudEJlZm9yZVNhdmUoJGNvbnRleHQsICRpdGVtLCAkaXNOZXcsICRkYXRhID0gYXJyYXkoKSkNCgl7DQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uYWRtaW5fdmlldycgPT09ICRjb250ZXh0KQ0KCQl7DQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGpzb24NCgkJCWlmIChTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+cGFyYW1zKSkNCgkJCXsNCgkJCQkvLyBDb252ZXJ0IHRoZSBwYXJhbXMgZmllbGQgdG8gYW4gYXJyYXkuDQoJCQkJJHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRyZWdpc3RyeS0+bG9hZFN0cmluZygkaXRlbS0+cGFyYW1zKTsNCgkJCQkkaXRlbS0+cGFyYW1zID0gJHJlZ2lzdHJ5LT50b0FycmF5KCk7DQoJCQl9DQoJCQkvLyBjaGVjayBpZiB0aGUgcGx1Z2luIHdhcyBzZXQNCgkJCWlmIChpc3NldCgkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSkgJiYgJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10gPiAwKQ0KCQkJew0KCQkJCS8vIGZpcnN0IHNldCBuZXcgcGFyYW1zDQoJCQkJJHRoaXMtPnBhcmFtcy0+c2V0KCdwbHVnaW4nLCAoaW50KSAkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSk7DQoJCQkJLy8gdXBkYXRlIHRoZSBnbG9iYWwgcGx1Z2luIHNldHRpbmdzDQoJCQkJJGV4dGVuc2lvblRhYmxlID0gbmV3ICBcSnRhYmxlRXh0ZW5zaW9uKEZhY3Rvcnk6OmdldERibygpKTsNCgkJCQkkZXh0ZW5zaW9uVGFibGUtPmxvYWQoYXJyYXkoJ2VsZW1lbnQnID0+ICdbW1tjb21wb25lbnRdXV1wcml2YWN5dGFicycpKTsNCgkJCQkvLyBTYXZlIHRoZSBjaGFuZ2UNCgkJCQkkZXh0ZW5zaW9uVGFibGUtPnNldCgncGFyYW1zJywgJHRoaXMtPnBhcmFtcy0+dG9TdHJpbmcoKSk7DQoJCQkJJGV4dGVuc2lvblRhYmxlLT5zYXZlKChhcnJheSkgJGV4dGVuc2lvblRhYmxlKTsNCgkJCQkvLyBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBmcm9tIHRoZSBwYXJhbXMNCgkJCQl1bnNldCgkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSk7DQoJCQkJLy8gY2xlYXIgdGhlIHBsdWdpbiBjYWNoZQ0KCQkJCSR0aGlzLT5jbGVhbkNhY2hlKCdjb21fcGx1Z2lucycsIDApOw0KCQkJCSR0aGlzLT5jbGVhbkNhY2hlKCdjb21fcGx1Z2lucycsIDEpOw0KCQkJfQ0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhbiBhcnJheQ0KCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5wYXJhbXMpKQ0KCQkJew0KCQkJCS8vIENvbnZlcnQgdGhlIHBhcmFtcyBmaWVsZCB0byBhIHN0cmluZy4NCgkJCQkkcGFyYW1zID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRwYXJhbXMtPmxvYWRBcnJheSgkaXRlbS0+cGFyYW1zKTsNCgkJCQkkaXRlbS0+cGFyYW1zID0gKHN0cmluZykgJHBhcmFtczsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIENsZWFuIHRoZSBjYWNoZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGdyb3VwICAgICAgVGhlIGNhY2hlIGdyb3VwDQoJICogQHBhcmFtICAgaW50ZWdlciAgJGNsaWVudF9pZCAgVGhlIElEIG9mIHRoZSBjbGllbnQNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDMuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBjbGVhbkNhY2hlKCRncm91cCA9IG51bGwsICRjbGllbnRfaWQgPSAwKQ0KCXsNCgkJJGNvbmYgPSBGYWN0b3J5OjpnZXRDb25maWcoKTsNCg0KCQkkb3B0aW9ucyA9IGFycmF5KA0KCQkJJ2RlZmF1bHRncm91cCcgPT4gJGdyb3VwID86IChpc3NldCgkdGhpcy0+b3B0aW9uKSA/ICR0aGlzLT5vcHRpb24gOiBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5pbnB1dC0+Z2V0KCdvcHRpb24nKSksDQoJCQknY2FjaGViYXNlJyA9PiAkY2xpZW50X2lkID8gSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY2FjaGUnIDogJGNvbmYtPmdldCgnY2FjaGVfcGF0aCcsIEpQQVRIX1NJVEUgLiAnL2NhY2hlJyksDQoJCQkncmVzdWx0JyA9PiB0cnVlLA0KCQkpOw0KDQoJCXRyeQ0KCQl7DQoJCQkvKiogQHZhciBcSkNhY2hlQ29udHJvbGxlckNhbGxiYWNrICRjYWNoZSAqLw0KCQkJJGNhY2hlID0gXEpDYWNoZTo6Z2V0SW5zdGFuY2UoJ2NhbGxiYWNrJywgJG9wdGlvbnMpOw0KCQkJJGNhY2hlLT5jbGVhbigpOw0KCQl9DQoJCWNhdGNoIChcSkNhY2hlRXhjZXB0aW9uICRleGNlcHRpb24pDQoJCXsNCgkJCSRvcHRpb25zWydyZXN1bHQnXSA9IGZhbHNlOw0KCQl9DQoNCgkJLy8gVHJpZ2dlciB0aGUgb25Db250ZW50Q2xlYW5DYWNoZSBldmVudC4NCgkJXEpFdmVudERpc3BhdGNoZXI6OmdldEluc3RhbmNlKCktPnRyaWdnZXIoJ29uQ29udGVudENsZWFuQ2FjaGUnLCAkb3B0aW9ucyk7DQoJfQ==', '[[[Component]]] Privacy Tabs', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Tabs', '', 1, '', '', 1, '2019-08-17 01:17:45', '2024-04-09 10:34:30', 97, '', 2),
(3, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to link your admin views to the privacy suite of Joomla via our other Content - [[[Component]]] Privacy Tabs plugin.', '{}', 'b49dddae-2195-4d2a-8f12-69032852a104', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOw0KDQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXEZhY3RvcnkgYXMgQ0ZhY3Rvcnk7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xQbGFjZWZpeDsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXEluZGVudDsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXExpbmU7DQo=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"70\"},\"method_selection3\":{\"method\":\"119\"},\"method_selection4\":{\"method\":\"120\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogR2xvYmFsIHN3aXRjaCB0byBzZWUgaWYgY29tcG9uZW50IGhhdmUgbmVlZCBvZiBwcml2YWN5IHBsdWdpbiB0byBiZSBsb2FkZWQuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbG9hZFByaXZhY3kgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBWaWV3cyBMaW5rZWQgdG8gSm9vbWxhIFVzZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFjdGl2ZVZpZXdzID0gW107DQoNCgkvKioNCgkgKiBUaGUgVmlld3MgcGVybWlzc2lvbiBmaWVsZHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkcGVybWlzc2lvbkZpZWxkcyA9IFtdOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgcHJpdmFjeQ0KCQkkdmlldy0+cGFyYW1zID0gKGlzc2V0KCR2aWV3LT5wYXJhbXMpICYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpKSA/IGpzb25fZGVjb2RlKCR2aWV3LT5wYXJhbXMsIHRydWUpIDogJHZpZXctPnBhcmFtczsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddKSAmJiANCgkJCWlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYWN0aXZhdGUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhY3RpdmF0ZSddID09IDEpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBwcml2YWN5IHBsdWdpbg0KCQkJJHRoaXMtPmxvYWRQcml2YWN5ID0gdHJ1ZTsNCgkJCS8vIGxvYWQgdGhlIGFkbWluIHZpZXcgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0gPSAkdmlldzsNCgkJCS8vIGFkZCBwZXJtaXNzaW9ucw0KCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0gKGlzc2V0KCR2aWV3LT5hZGRwZXJtaXNzaW9ucykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmFkZHBlcm1pc3Npb25zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIHRydWUpIDogbnVsbDsNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+YWRkcGVybWlzc2lvbnMpKQ0KCQkJew0KCQkJCSR2aWV3LT5hZGRwZXJtaXNzaW9ucyA9IGFycmF5X3ZhbHVlcygkdmlldy0+YWRkcGVybWlzc2lvbnMpOw0KCQkJCS8vIGFkZCB0aGUgbmV3IHBlcm1pc3Npb25zDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBhcnJheSgnYWN0aW9uJyA9PiAndmlldy5wcml2YWN5LmRlbGV0ZScsICdpbXBsZW1lbnRhdGlvbicgPT4gMywgJ3RpdGxlJyA9PiAkdmlldy0+bmFtZV9saXN0IC4gJyBQcml2YWN5IERlbGV0ZScsICdkZXNjcmlwdGlvbicgPT4gJyBBbGxvd3MgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAgdG8gcmVtb3ZlIHRoZWlyIHBlcnNvbmFsIGRhdGEgaW4gJyAuICR2aWV3LT5uYW1lX2xpc3QgLiAnIHZpYSB0aGUgSm9vbWxhIHByaXZhY3kgc3VpdGUuJyk7DQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBhcnJheSgnYWN0aW9uJyA9PiAndmlldy5wcml2YWN5LmFjY2VzcycsICdpbXBsZW1lbnRhdGlvbicgPT4gMywgJ3RpdGxlJyA9PiAkdmlldy0+bmFtZV9saXN0IC4gJyBQcml2YWN5IEFjY2VzcycsICdkZXNjcmlwdGlvbicgPT4gJyBBbGxvd3MgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAgdG8gYWNjZXNzIHRoZWlyIHBlcnNvbmFsIGRhdGEgaW4gJyAuICR2aWV3LT5uYW1lX2xpc3QgLiAnIHZpYSB0aGUgSm9vbWxhIHByaXZhY3kgc3VpdGUuJyk7DQoJCQkJLy8gY29udmVydCBiYWNrIHRvIGpzb24NCgkJCQkkdmlldy0+YWRkcGVybWlzc2lvbnMgPSBqc29uX2VuY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIEpTT05fRk9SQ0VfT0JKRUNUKTsNCgkJCX0NCgkJCS8vIGFkZCBwbGFjZWhvbGRlcnMgdG8gdmlldyBpZiBub3QgYWxyZWFkeSBzZXQNCgkJCWlmICghaXNzZXQoJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0tPnBsYWNlaG9sZGVycykpDQoJCQl7DQoJCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0tPnBsYWNlaG9sZGVycyA9IENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5hY3RpdmU7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwcml2YWN5IHBsdWdpbiBsb2FkZWQNCgkJaWYgKCR0aGlzLT5sb2FkUHJpdmFjeSkNCgkJew0KCQkJJHBsdWdpbiA9IEpQbHVnaW5IZWxwZXI6OmdldFBsdWdpbignY29udGVudCcsICdbW1tjb21wb25lbnRdXV1wcml2YWN5dGFicycpOw0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBqc29uDQoJCQlpZiAoaXNzZXQoJHBsdWdpbi0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGx1Z2luLT5wYXJhbXMpKQ0KCQkJew0KCQkJCS8vIENvbnZlcnQgdGhlIHBhcmFtcyBmaWVsZCB0byBhbiBhcnJheS4NCgkJCQkkcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnk7DQoJCQkJJHJlZ2lzdHJ5LT5sb2FkU3RyaW5nKCRwbHVnaW4tPnBhcmFtcyk7DQoJCQkJJHBsdWdpbi0+cGFyYW1zID0gJHJlZ2lzdHJ5LT50b0FycmF5KCk7DQoJCQl9DQoJCQkvLyBub3cgZ2V0IHRoZSBwbHVnaW4gSUQgaWYgc2V0DQoJCQlpZiAoaXNzZXQoJHBsdWdpbi0+cGFyYW1zWydwbHVnaW4nXSkgJiYgJHBsdWdpbi0+cGFyYW1zWydwbHVnaW4nXSA+IDApDQoJCQl7DQoJCQkJLy8gaWYgbGlua2VkIGl0IHdpbGwgb25seSBsb2FkIGl0IG9uY2UNCgkJCQlDRmFjdG9yeTo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCUZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCktPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1lvdSBkbyBub3QgaGF2ZSBhIGdsb2JhbCBwcml2YWN5IHBsdWdpbiBzZXR1cCwgc28gdGhlIGludGVncmF0aW9uIHdpdGggSm9vbWxhIHByaXZhY3kgc3VpdGUgY291bGQgbm90IGJlIGJ1aWxkLicpLCAnV2FybmluZycpOw0KCQkJCSR0aGlzLT5sb2FkUHJpdmFjeT0gZmFsc2U7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgVXBkYXRlIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZVVwZGF0ZUZpbGVzKCRjb21waWxlcikNCgl7DQoJCS8vIGNoZWNrIGlmIHByaXZhY3kgaXMgdG8gYmUgbG9hZGVkDQoJCWlmICgkdGhpcy0+bG9hZFByaXZhY3kgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZVZpZXdzKSkNCgkJew0KCQkJLy8gZ2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQkkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+Z2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCBmYWxzZSk7DQoJCQkkZXhwb3J0VGV4dE9ubHkgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnZXhwb3J0X3RleHRfb25seScsIDEpOw0KDQoJCQkvLyBsb2FkIHRoZSBnZXRQcml2YWN5RXhwb3J0IGZ1bmN0aW9ucw0KCQkJZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZVZpZXdzIGFzICRpZCA9PiAmJHZpZXcpDQoJCQl7DQoJCQkJLy8gc2V0IHBlcm1pc3Npb25zIGJhc2VkIG9uIHZpZXcNCgkJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydwZXJtaXNzaW9ucyddKSkNCgkJCQl7DQoJCQkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydwZXJtaXNzaW9ucyddKTsNCgkJCQl9DQoNCgkJCQkvLyBhbGxvdyB0ZXh0IG9ubHkgZXhwb3J0DQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAxKTsNCg0KCQkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkJLy8gbG9hZCB0aGUgZnVuY3Rpb24NCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk11bHRpJyktPmFkZCgkdmlld05hbWVfbGlzdCAuICd8TU9ERUxFWFBPUlRNRVRIT0QnLA0KCQkJCQkkY29tcGlsZXItPnNldEdldEl0ZW1zTW9kZWxNZXRob2QoDQoJCQkJCQkkdmlld05hbWVfc2luZ2xlLA0KCQkJCQkJJHZpZXdOYW1lX2xpc3QsDQoJCQkJCQlbDQoJCQkJCQkJJ2Z1bmN0aW9uTmFtZScgPT4gJ2dldFByaXZhY3lFeHBvcnQnLA0KCQkJCQkJCSdkb2NEZXNjJyA9PiAnTWV0aG9kIHRvIGdldCBkYXRhIGR1cmluZyBhbiBleHBvcnQgcmVxdWVzdC4nLA0KCQkJCQkJCSd0eXBlJyA9PiAncHJpdmFjeScNCgkJCQkJCV0NCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gZ2V0IHRoZSBwZXJtaXNzaW9ucyBidWlsZGluZyB2YWx1ZXMgZm9yIGxhdGVyIGlmIG5lZWRlZA0KCQkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgZmFsc2UpICYmDQoJCQkJCWlzc2V0KCRjb21waWxlci0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSkgJiYNCgkJCQkJU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdID0gJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gc2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQlDRmFjdG9yeTo6XygnQ29uZmlnJyktPnNldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgJHN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAkZXhwb3J0VGV4dE9ubHkpOw0KDQoJCQkvLyBhZGQgaGVscGVyIGNsYXNzZXMNCgkJCSRoZWxwZXJfc3RyaW5ncyA9IFsnQ1VTVE9NX0hFTFBFUl9TQ1JJUFQnLCAnU0lURV9DVVNUT01fSEVMUEVSX1NDUklQVCcsICdCT1RIX0NVU1RPTV9IRUxQRVJfU0NSSVBUJ107DQoJCQkkcHJpdmFjeV9ldmVudHMgPSBbDQoJCQkJJ1ByaXZhY3lDYW5SZW1vdmVEYXRhJyA9PiB0cnVlLA0KCQkJCSdQcml2YWN5RXhwb3J0UmVxdWVzdCcgPT4gdHJ1ZSwNCgkJCQknUHJpdmFjeVJlbW92ZURhdGEnID0+IHRydWUNCgkJCV07DQoNCgkJCWZvcmVhY2ggKCRoZWxwZXJfc3RyaW5ncyBhcyAkaGVscGVyKQ0KCQkJew0KCQkJCWlmICgoJGhlbHBlcl9jb250ZW50ID0gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+Z2V0KCRoZWxwZXIpKSAhPT0gbnVsbCAmJg0KCQkJCQlTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaGVscGVyX2NvbnRlbnQpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJHByaXZhY3lfZXZlbnRzIGFzICRwcml2YWN5X2V2ZW50ID0+ICYkYWRkKQ0KCQkJCQl7DQoJCQkJCQkvLyBjaGVjayBpZiB0aGUgZXZlbiBpcyBvdmVyd3JpdGVuDQoJCQkJCQlpZiAoc3RycG9zKCRoZWxwZXJfY29udGVudCwgJ3B1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb24nIC4gJHByaXZhY3lfZXZlbnQgLiAnKCcpICE9PSBmYWxzZSkNCgkJCQkJCXsNCgkJCQkJCQkkYWRkID0gZmFsc2U7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIGFkZCB0aGUgZXZlbnRzIHN0aWxsIG5lZWRlZA0KCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCdCT1RIX0NVU1RPTV9IRUxQRVJfU0NSSVBUJywNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkdGhpcy0+Z2V0SGVscGVyTWV0aG9kKCRwcml2YWN5X2V2ZW50cykpDQoJCQkpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZUFycmF5KSkNCgkJew0KCQkJZm9yZWFjaCgkdGhpcy0+bGFuZ3VhZ2VBcnJheSBhcyAka2V5ID0+ICRzdHJpbmcpDQoJCQl7DQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0xhbmd1YWdlJyktPnNldCgnc2l0ZScsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBIZWxwZXIgbWV0aG9kcyBuZWVkZWQgdG8gaW50ZWdyYXRlIHdpdGggSm9vbWxhIFByaXZhY3kgU3VpdGUNCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkaGVscGVyTWV0aG9kcyAgVGhlIGhlbHBlciBtZXRob2RzIHN0cmluZw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhlbHBlck1ldGhvZCgmJGV2ZW50cykNCgl7DQoJCSRtZXRob2RzID0gJyc7DQoJCWZvcmVhY2ggKCRldmVudHMgYXMgJGV2ZW50ID0+ICRhZGQpDQoJCXsNCgkJCS8vIGNoZWNrIGlmIHRoZSBldmVuIHNob3VsZCBiZSBhZGRlZA0KCQkJaWYgKCRhZGQpDQoJCQl7DQoJCQkJLy8gYWRkIHRoZSBldmVudA0KCQkJCSR0aGlzLT57J3NldCcuJGV2ZW50fSgkbWV0aG9kcyk7DQoJCQl9DQoJCX0NCgkJLy8gb25seSBhZGQgaGVhZGVyIGlmIHRoZXJlIHdhcyBldmVudHMgYWRkZWQNCgkJaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRtZXRob2RzKSkNCgkJew0KCQkJJG1ldGhvZHMgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8PDw9PT0gUHJpdmFjeSBpbnRlZ3JhdGlvbiB3aXRoIEpvb21sYSBQcml2YWN5IHN1aXRlID09PT4+PiIgLiBQSFBfRU9MIC4gJG1ldGhvZHM7DQoJCX0NCg0KCQlyZXR1cm4gJG1ldGhvZHM7DQoJfQ0KDQoJLyoqDQoJICogU2V0IFByaXZhY3kgQ2FuIFJlbW92ZSBEYXRhDQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUNhblJlbW92ZURhdGEoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIFBlcmZvcm1zIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHJlbW92ZSBpbmZvcm1hdGlvbiByZXF1ZXN0IGNhbiBiZSBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5UGx1Z2luICBcJHBsdWdpbiAgVGhlIHBsdWdpbiBiZWluZyBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lSZW1vdmFsU3RhdHVzICBcJHN0YXR1cyAgVGhlIHN0YXR1cyBiZWluZyBzZXQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lUYWJsZVJlcXVlc3QgIFwkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgSlVzZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHJldHVybiAgUHJpdmFjeVJlbW92YWxTdGF0dXMiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHVibGljIHN0YXRpYyBmdW5jdGlvbiBvblByaXZhY3lDYW5SZW1vdmVEYXRhKCZcJHBsdWdpbiwgJlwkc3RhdHVzLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQnVja2V0IHRvIGdldCBhbGwgcmVhc29ucyB3aHkgcmVtb3ZhbCBub3QgYWxsb3dlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRyZWFzb25zID0gYXJyYXkoKTsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUuZGVsZXRlJykNCgkJCQkuICInLCAnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJykgJiYgIVwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIicpKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkJLy8gc2V0IGxhbmd1YWdlIGtleQ0KCQkJJGxhbmdfa2V5ID0gJHZpZXctPnBsYWNlaG9sZGVyc1tQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKV0gLiAnX1BSSVZBQ1lfQ0FOVF9SRU1PVkVfJyAuICR2aWV3LT5wbGFjZWhvbGRlcnNbUGxhY2VmaXg6Ol8oIlZJRVdTIildOw0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmdfa2V5XSA9ICJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byByZW1vdmUvZGVsZXRlICIuICR2aWV3LT5uYW1lX2xpc3QgLiAiLiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcmVhc29uc1tdID0gSlRlIiAuICJ4dDo6XygnIiAuICRsYW5nX2tleSAuICInKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCS8vIHNldCBsYW5ndWFnZSBrZXkNCgkJCSRsYW5nX2tleSA9ICR2aWV3LT5wbGFjZWhvbGRlcnNbUGxhY2VmaXg6Ol8oIkxBTkdfUFJFRklYIildIC4gJ19QUklWQUNZX0NBTlRfUkVNT1ZFX0NPTlRBQ1RfU1VQUE9SVCc7DQoJCX0NCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiBhbnkgcmVhc29ucyB3ZXJlIGZvdW5kIG5vdCB0byBhbGxvdyByZW1vdmFsIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRyZWFzb25zKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkc3RhdHVzLT5jYW5SZW1vdmUgPSBmYWxzZTsiOw0KCQkvLyBzZXQgbGFuZ3VhZ2Ugc3RyaW5nDQoJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nX2tleV0gPSAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgbW9yZSBkZXRhaWxzLic7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRzdGF0dXMtPnJlYXNvbiA9IGltcGxvZGUoJyAnIC4gUEhQX0VPTCwgXCRyZWFzb25zKSAuICcgJyAuIFBIUF9FT0wgLiBKVGUiIC4gInh0OjpfKCciIC4gJGxhbmdfa2V5IC4gIicpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkc3RhdHVzOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCX0NCg0KCS8qKg0KCSAqIFNldCBQcml2YWN5IEV4cG9ydCBSZXF1ZXN0DQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUV4cG9ydFJlcXVlc3QoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIFByb2Nlc3NlcyBhbiBleHBvcnQgcmVxdWVzdCBmb3IgSm9vbWxhIGNvcmUgdXNlciBkYXRhIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVBsdWdpbiAgXCRwbHVnaW4gIFRoZSBwbHVnaW4gYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBEb21haW5BcnJheSAgXCRkb21haW5zICBUaGUgYXJyYXkgb2YgZG9tYWlucyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgXCRyZXF1ZXN0ICBUaGUgcmVxdWVzdCByZWNvcmQgYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICBcJHVzZXIgICAgIFRoZSB1c2VyIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCBpZiBhdmFpbGFibGUiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHVibGljIHN0YXRpYyBmdW5jdGlvbiBvblByaXZhY3lFeHBvcnRSZXF1ZXN0KCZcJHBsdWdpbiwgJlwkZG9tYWlucywgJlwkcmVxdWVzdCwgJlwkdXNlcikiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJJHZpZXdOYW1lX2xpc3QgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX2xpc3QpOw0KCQkJLy8gc2V0IHZpZXcgc2luZ2xlIG5hbWUNCgkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGFjY2VzcyAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEdsb2JhbCgkdmlld05hbWVfc2luZ2xlLCAnY29yZS5hY2Nlc3MnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRHbG9iYWwoJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUucHJpdmFjeS5hY2Nlc3MnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0ICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZG9tYWluc1tdID0gc2VsZjo6Y3JlYXRlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRvbWFpbihcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJfQ0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInJldHVybiBcJGRvbWFpbnM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJ9IiAuIFBIUF9FT0w7DQoNCgkJZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZVZpZXdzIGFzICR2aWV3KQ0KCQl7DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIENyZWF0ZSB0aGUgZG9tYWluIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZTsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBKVGFibGVVc2VyICBcJHVzZXIgIFRoZSBKVGFibGVVc2VyIG9iamVjdCB0byBwcm9jZXNzIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRG9tYWluKCZcJHBsdWdpbiwgJlwkdXNlcikiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY3JlYXRlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiBkb21haW4iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJGRvbWFpbiA9IHNlbGY6OmNyZWF0ZURvbWFpbignIiAuICR2aWV3TmFtZV9zaW5nbGUgLiAiJywgJyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIl9kYXRhJyk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGRhdGFiYXNlIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW0gaWRzIG9mICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0aGF0IGJlbG9uZyB0byB0aGlzIHVzZXIiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICItPnNlbGVjdCgnaWQnKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi0+ZnJvbShcJGRiLT5xdW90ZU5hbWUoJyNfXyIgLiBQbGFjZWZpeDo6XygnY29tcG9uZW50JykgLiAnXycgLiAkdmlld05hbWVfc2luZ2xlIC4gIicpKTsiOw0KCQkJLy8gZ2V0IHZpYSBjdXN0b20gc2NyaXB0DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAzKQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCBhcnJheV92YWx1ZXMoJHZpZXctPnBsYWNlaG9sZGVycyksICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnY3VzdG9tX2xpbmsnXSk7DQoJCQl9DQoJCQkvLyBqdXN0IGFub3RoZXIgZmllbGQNCgkJCWVsc2VpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAyICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnb3RoZXJfdXNlcl9maWVsZCddKSkNCgkJCXsNCgkJCQkvLyBnZXQgdGhlIGZpZWxkIG5hbWUNCgkJCQlpZiAoKCRmaWVsZF9uYW1lID0gJHRoaXMtPmdldEZpZWxkTmFtZSgkdmlldy0+ZmllbGRzLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+d2hlcmUoXCRkYi0+cXVvdGVOYW1lKCciIC4gJGZpZWxkX25hbWUgLiAiJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKFwkdXNlci0+aWQpKTsiOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkvLyBnaXZlIGEgd2FybmluZyBtZXNzYWdlIChUT0RPKQ0KDQoJCQkJCS8vIHN0b3AgYW55IGZyb20gbG9hZGluZw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiID09PT0gRVJST1IgPT09PT0gRVJST1IgPT09PT09IChmaWVsZCBuYW1lIG5vdCBmb3VuZCkiOw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPSAtMic7IC8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIDwtLSB0aGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGFueSB2YWx1ZS4gQ2hlY2sgeW91ciBbb3RoZXIgdXNlciBmaWVsZF0gc2VsZWN0ZWQgaW4gdGhlIGFkbWluIHZpZXcgcHJpdmFjeSB0YWIuIjsNCgkJCQl9DQoJCQl9DQoJCQkvLyBnZXQgYmFzZWQgb24gY3JlYXRlZCBieQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+d2hlcmUoXCRkYi0+cXVvdGVOYW1lKCdjcmVhdGVkX2J5JykgLiAnID0gJyAuIFwkZGItPnF1b3RlKFwkdXNlci0+aWQpKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW1zIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcGtzID0gXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSktPmxvYWRDb2x1bW4oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiBtb2RlbCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkbW9kZWwgPSBzZWxmOjpnZXRNb2RlbCgnIiAuICR2aWV3TmFtZV9saXN0IC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0IGFsbCBpdGVtIGRldGFpbHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbXMgPSBcJG1vZGVsLT5nZXRQcml2YWN5RXhwb3J0KFwkcGtzLCBcJHVzZXIpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGNoZWNrIGlmIHdlIGhhdmUgaXRlbXMgc2luY2UgcGVybWlzc2lvbnMgY291bGQgYmxvY2sgdGhlIHJlcXVlc3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRpdGVtcykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFJlbW92ZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkZWZhdWx0IGNvbHVtbnMiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJmb3JlYWNoIChhcnJheSgncGFyYW1zJywgJ2Fzc2V0X2lkJywgJ2NoZWNrZWRfb3V0JywgJ2NoZWNrZWRfb3V0X3RpbWUnLCAnY3JlYXRlZCcsICdjcmVhdGVkX2J5JywgJ21vZGlmaWVkJywgJ21vZGlmaWVkX2J5JywgJ3B1Ymxpc2hlZCcsICdvcmRlcmluZycsICdhY2Nlc3MnLCAndmVyc2lvbicsICdoaXRzJykgYXMgXCRjb2x1bW4pIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkaXRlbXMgPSBBcnJheUhlbHBlcjo6ZHJvcENvbHVtbihcJGl0ZW1zLCBcJGNvbHVtbik7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGxvYWQgdGhlIGl0ZW1zIGludG8gdGhlIGRvbWFpbiBvYmplY3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJmb3JlYWNoIChcJGl0ZW1zIGFzIFwkaXRlbSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkb21haW4tPmFkZEl0ZW0oc2VsZjo6Y3JlYXRlSXRlbUZyb21BcnJheShcJGl0ZW0sIFwkaXRlbVsnaWQnXSkpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkZG9tYWluOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgkJfQ0KCQkvLyB3ZSBtdXN0IGFkZCB0aGVzZSBoZWxwZXIgbWV0aG9kcw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQ3JlYXRlIGEgbmV3IGRvbWFpbiBvYmplY3QiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBzdHJpbmcgIFwkbmFtZSAgICAgICAgIFRoZSBkb21haW4ncyBuYW1lIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBzdHJpbmcgIFwkZGVzY3JpcHRpb24gIFRoZSBkb21haW4ncyBkZXNjcmlwdGlvbiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEByZXR1cm4gIFByaXZhY3lFeHBvcnREb21haW4iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAc2luY2UgICAzLjkuMCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURvbWFpbihcJG5hbWUsIFwkZGVzY3JpcHRpb24gPSAnJykiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZG9tYWluICAgICAgICAgICAgICA9IG5ldyBQcml2YWN5RXhwb3J0RG9tYWluOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkb21haW4tPm5hbWUgICAgICAgID0gXCRuYW1lOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkb21haW4tPmRlc2NyaXB0aW9uID0gXCRkZXNjcmlwdGlvbjsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInJldHVybiBcJGRvbWFpbjsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQ3JlYXRlIGFuIGl0ZW0gb2JqZWN0IGZvciBhbiBhcnJheSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAgXCRkYXRhICAgIFRoZSBhcnJheSBkYXRhIHRvIGNvbnZlcnQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIGludGVnZXJ8bnVsbCAgXCRpdGVtSWQgIFRoZSBJRCBvZiB0aGlzIGl0ZW0iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0SXRlbSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBzaW5jZSAgIDMuOS4wIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSXRlbUZyb21BcnJheShhcnJheSBcJGRhdGEsIFwkaXRlbUlkID0gbnVsbCkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbSA9IG5ldyBQcml2YWN5RXhwb3J0SXRlbTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbS0+aWQgPSBcJGl0ZW1JZDsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImZvcmVhY2ggKFwkZGF0YSBhcyBcJGtleSA9PiBcJHZhbHVlKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKGlzX29iamVjdChcJHZhbHVlKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdmFsdWUgPSAoYXJyYXkpIFwkdmFsdWU7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoaXNfYXJyYXkoXCR2YWx1ZSkpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJHZhbHVlID0gcHJpbnRfcihcJHZhbHVlLCB0cnVlKTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZmllbGQgICAgICAgID0gbmV3IFByaXZhY3lFeHBvcnRGaWVsZDsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZmllbGQtPm5hbWUgID0gXCRrZXk7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGZpZWxkLT52YWx1ZSA9IFwkdmFsdWU7IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGl0ZW0tPmFkZEZpZWxkKFwkZmllbGQpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkaXRlbTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGZpZWxkIG5hbWUNCgkgKiANCgkgKiBAcGFyYW0gICBhcnJheSAgICRmaWVsZHMgIFRoZSBmaWVsZHMgYXJyYXkNCgkgKiBAcGFyYW0gICBpbnQgICAgICAgJGlkICAgICAgIFRoZSBmaWVsZCBpZA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZyAgICBUaGUgZmllbGQgbmFtZQ0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWVsZE5hbWUoJiRmaWVsZHMsICRpZCkNCgl7DQoJCWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkKQ0KCQl7DQoJCQlpZiAoJGZpZWxkWydmaWVsZCddID09ICRpZCkNCgkJCXsNCgkJCQlyZXR1cm4gJGZpZWxkWydiYXNlX25hbWUnXTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogU2V0IFByaXZhY3kgUmVtb3ZlIERhdGENCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkbWV0aG9kcyAgVGhlIG1ldGhvZHMgc3RyaW5nDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRQcml2YWN5UmVtb3ZlRGF0YSgmJG1ldGhvZHMpDQoJew0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogUmVtb3ZlcyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdmUgaW5mb3JtYXRpb24gcmVxdWVzdCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lUYWJsZVJlcXVlc3QgIFwkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgSlVzZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHJldHVybiAgdm9pZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uUHJpdmFjeVJlbW92ZURhdGEoJlwkcGx1Z2luLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHRoZSBhbm9ueW1pemUgc3dpdGNoDQoJCQkkYW5vbnltaXplID0gZmFsc2U7DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSA9PSAxICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplX2ZpZWxkcyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSwgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJGFub255bWl6ZSA9IHRydWU7DQoJCQl9DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KCQkJLy8gbG9hZCB0aGUgY2FuRG8gZnJvbSBnZXRBY3Rpb25zIGhlbHBlciBtZXRob2QNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBkZWxldCAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUucHJpdmFjeS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBBbm9ueW1pemUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJzZWxmOjphbm9ueW1pemUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YShcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGp1c3QgZHVtcCwgZGVsZXRlIHRoZSByb3dzDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBSZW1vdmUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJzZWxmOjpyZW1vdmUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YShcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJfQ0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCg0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB0aGUgYW5vbnltaXplIHN3aXRjaA0KCQkJJGFub255bWl6ZSA9IGZhbHNlOw0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10gPT0gMSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10sIHRydWUpKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRhbm9ueW1pemUgPSB0cnVlOw0KCQkJfQ0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KDQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcGxhaW4gZGVsZXRlLCBvciBpdCBpcyBhIEFub255bWl6ZQ0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBBbm9ueW1pemUgdGhlICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRhdGEiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogUmVtb3ZlIHRoZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkYXRhIjsNCgkJCX0NCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIEpUYWJsZVVzZXIgIFwkdXNlciAgVGhlIEpUYWJsZVVzZXIgb2JqZWN0IHRvIHByb2Nlc3MiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEByZXR1cm4gIHZvaWQiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKi8iOw0KDQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcGxhaW4gZGVsZXRlLCBvciBpdCBpcyBhIEFub255bWl6ZSANCgkJCWlmICgkYW5vbnltaXplKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBhbm9ueW1pemUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YSgmXCRwbHVnaW4sICZcJHVzZXIpIjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBEZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoJlwkcGx1Z2luLCAmXCR1c2VyKSI7DQoJCQl9DQoNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBkYXRhYmFzZSBvYmplY3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGFsbCBpdGVtIGlkcyBvZiAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGhhdCBiZWxvbmcgdG8gdGhpcyB1c2VyIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLT5zZWxlY3QoJ2lkJykiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICItPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX18iIC4gUGxhY2VmaXg6Ol8oJ2NvbXBvbmVudCcpIC4gJ18nIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInKSk7IjsNCgkJCS8vIGdldCB2aWEgY3VzdG9tIHNjcmlwdA0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMykNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdmlldy0+cGxhY2Vob2xkZXJzKSwgYXJyYXlfdmFsdWVzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2N1c3RvbV9saW5rJ10pOw0KCQkJfQ0KCQkJLy8ganVzdCBhbm90aGVyIGZpZWxkDQoJCQllbHNlaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMiAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydvdGhlcl91c2VyX2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJew0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnIiAuICRmaWVsZF9uYW1lIC4gIicpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSAoVE9ETykNCg0KCQkJCQkvLyBzdG9wIGFueSBmcm9tIGxvYWRpbmcNCgkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA9PT09IEVSUk9SID09PT09IEVSUk9SID09PT09PSAoZmllbGQgbmFtZSBub3QgZm91bmQpIjsNCgkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gLTInOyAvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8LS0gdGhpcyB3aWxsIG5ldmVyIHJldHVybiBhbnkgdmFsdWUuIENoZWNrIHlvdXIgW290aGVyIHVzZXIgZmllbGRdIHNlbGVjdGVkIGluIHRoZSBhZG1pbiB2aWV3IHByaXZhY3kgdGFiLiI7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gZ2V0IGJhc2VkIG9uIGNyZWF0ZWQgYnkNCgkJCWVsc2UNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnY3JlYXRlZF9ieScpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGFsbCBpdGVtcyBmb3IgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0YWJsZSB0aGF0IGJlbG9uZyB0byB0aGlzIHVzZXIiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHBrcyA9IFwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpLT5sb2FkQ29sdW1uKCk7IjsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMikgLiAiaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkcGtzKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXdOYW1lX3NpbmdsZSAuICIgbW9kZWwiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJG1vZGVsID0gc2VsZjo6Z2V0TW9kZWwoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyk7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYnVpbGQgdGhlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBhcnJheQ0KCQkJCSRfZGF0YV9idWNrZXQgPSBhcnJheSgpOw0KCQkJCSRfcmFuZG9tX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJJF9wZXJtaXNzaW9uX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10gYXMgJHJvdykNCgkJCQl7DQoJCQkJCWlmICgoJGZpZWxkX25hbWUgPSAkdGhpcy0+Z2V0RmllbGROYW1lKCR2aWV3LT5maWVsZHMsICRyb3dbJ2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJCXsNCgkJCQkJCWlmICAoJ1JBTkRPTScgPT09ICRyb3dbJ3ZhbHVlJ10pIA0KCQkJCQkJew0KCQkJCQkJCSRfcmFuZG9tX2J1Y2tldFskZmllbGRfbmFtZV0gPSA4OyAvLyAoVE9ETykgbWFrZSB0aGUgc2l6ZSBkeW5hbWljDQoJCQkJCQl9DQoJCQkJCQkkX2RhdGFfYnVja2V0W10gPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gJGZpZWxkX25hbWUgLiAiJyA9PiAnIiAuICRyb3dbJ3ZhbHVlJ10gLiInIjsNCgkJCQkJCSRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkX25hbWVdID0gJGZpZWxkX25hbWU7DQoJCQkJCX0NCgkJCQl9DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aGlzIGlzIHRoZSBwc2V1ZG9hbm9ueW1pc2VkIGRhdGEgYXJyYXkgZm9yICIgLiAkdmlldy0+bmFtZV9saXN0Ow0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YSA9IGFycmF5KCI7DQoJCQkJJG1ldGhvZHMgLj0gaW1wbG9kZSgnLCcsICRfZGF0YV9idWNrZXQpOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCQkJLy8gYWRkIHRoZSBwZXJtaXNzaW9uYWwgcmVtb3ZhbCBvZiB2YWx1ZXMgdGhlIHVzZXIgaGFzIG5vdCByaWdodCB0byB2aWV3IG9yIGFjY2Vzcw0KCQkJCSRoYXNQZXJtaXNzaW9uYWwgPSBmYWxzZTsNCgkJCQlpZiAoaXNzZXQoJHRoaXMtPnBlcm1pc3Npb25GaWVsZHNbJHZpZXdOYW1lX3NpbmdsZV0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJew0KCQkJCQkJaWYgKCEkaGFzUGVybWlzc2lvbmFsICYmIGlzc2V0KCRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkTmFtZV0pKQ0KCQkJCQkJew0KCQkJCQkJCWZvcmVhY2goJHBlcm1pc3Npb25fb3B0aW9ucyBhcyAkcGVybWlzc2lvbl9vcHRpb24gPT4gJGZpZWxkVHlwZSkNCgkJCQkJCQl7DQoJCQkJCQkJCWlmICghJGhhc1Blcm1pc3Npb25hbCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJc3dpdGNoICgkcGVybWlzc2lvbl9vcHRpb24pDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJY2FzZSAnYWNjZXNzJzoNCgkJCQkJCQkJCQljYXNlICd2aWV3JzoNCgkJCQkJCQkJCQljYXNlICdlZGl0JzoNCgkJCQkJCQkJCQkJJGhhc1Blcm1pc3Npb25hbCA9IHRydWU7DQoJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gYWRkIHRoZSBub3RlcyBhbmQgZ2V0IHRoZSBnbG9iYWwgc3dpdGNoDQoJCQkJCWlmICgkaGFzUGVybWlzc2lvbmFsKQ0KCQkJCQl7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBHZXQgZ2xvYmFsIHBlcm1pc3Npb25hbCBjb250cm9sIGFjdGl2YXRpb24uIChkZWZhdWx0IGlzIGluYWN0aXZlKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkID0gSm9vbWxhX19fYWViOGU0NjNfMjkxZl80NDQ1XzlhYzRfMzRiNjM3YzEyZGJkX19fUG93ZXI6OmdldFBhcmFtcygnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyktPmdldCgnc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkJywgMCk7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYoXCRzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQpIjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHJlbW92ZSBhbGwgZmllbGRzIHRoYXQgaXMgbm90IHBlcm1pdHRlZCB0byBiZSBjaGFuZ2VkIjsNCgkJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJCXsNCgkJCQkJCQlpZiAoaXNzZXQoJF9wZXJtaXNzaW9uX2J1Y2tldFskZmllbGROYW1lXSkpDQoJCQkJCQkJew0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gImlmICgiOw0KCQkJCQkJCQkkX3Blcm1pc3Npb25faWYgPSBhcnJheSgpOw0KCQkJCQkJCQlmb3JlYWNoICgkcGVybWlzc2lvbl9vcHRpb25zIGFzICRwZXJtX2tleSA9PiAkZmllbGRfdHlwcmV3KQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkX3Blcm1pc3Npb25faWZbXSA9ICIhXCR1c2VyLT5hdXRob3Jpc2UoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIi4iIC4gJHBlcm1fa2V5IC4gIi4iIC4gJGZpZWxkTmFtZSAuICInLCAnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJykiOw0KCQkJCQkJCQl9DQoJCQkJCQkJCSRtZXRob2RzIC49ICBpbXBsb2RlKCcgfHwgJywgJF9wZXJtaXNzaW9uX2lmKTsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gICIpIjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ7IjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJ1bnNldChcJHBzZXVkb2Fub255bWlzZWREYXRhWyciLiAkZmllbGROYW1lIC4gIiddKTsiOw0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIn0iOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCQkJCX0NCgkJCQl9DQoNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGFibGUiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBmb3IgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHNldCI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkcHNldWRvYW5vbnltaXNlZERhdGEpKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHN0aWxsIGFyY2hpdmUgYWxsIGl0ZW1zIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdGFibGUtPnB1Ymxpc2goXCRwa3MsIDIpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJyZXR1cm4gZmFsc2U7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBJdGVyYXRlIHRoZSBpdGVtcyB0byBhbm9uaW1pemUgZWFjaCBvbmUuIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImZvcmVhY2ggKFwkcGtzIGFzIFwkaSA9PiBcJHBrKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdGFibGUtPnJlc2V0KCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkcHNldWRvYW5vbnltaXNlZERhdGFbJ2lkJ10gPSBcJHBrOyI7DQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRfcmFuZG9tX2J1Y2tldCkpDQoJCQkJew0KCQkJCQlmb3JlYWNoICgkX3JhbmRvbV9idWNrZXQgYXMgJGZpZWxkTmFtZSA9PiAkc2l6ZSkNCgkJCQkJew0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJpZiAoaXNzZXQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnIiAuICRmaWVsZE5hbWUgLiAiJ10pKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gInsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJcJHBzZXVkb2Fub255bWlzZWREYXRhWyciIC4gJGZpZWxkTmFtZSAuICInXSA9IHNlbGY6OnJhbmRvbWtleSgiIC4gKGludCkgJHNpemUgLiAiKTsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJpZiAoXCR0YWJsZS0+YmluZChcJHBzZXVkb2Fub255bWlzZWREYXRhKSkiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAieyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJcJHRhYmxlLT5zdG9yZSgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBhcmNoaXZlIGFsbCBpdGVtcyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRhYmxlLT5wdWJsaXNoKFwkcGtzLCAyKTsiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGFibGUiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEl0ZXJhdGUgdGhlIGl0ZW1zIHRvIGRlbGV0ZSBlYWNoIG9uZS4iOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiZm9yZWFjaCAoXCRwa3MgYXMgXCRpID0+IFwkcGspIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiaWYgKFwkdGFibGUtPmxvYWQoXCRwaykpIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNSkgLiAiXCR0YWJsZS0+ZGVsZXRlKFwkcGspOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2xlYXIgdGhlIGNvbXBvbmVudCdzIGNhY2hlIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkbW9kZWwtPmNsZWFuQ2FjaGUoKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCQl9DQoJfQ==', '[[[Component]]] Privacy Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.2.3', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Compiler', '', 1, '', '', 1, '2019-08-17 23:47:50', '2024-05-26 20:13:46', 155, '', 3),
(4, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to tweak the export options for your components during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\nAlso be sure to activate the component/s that should be targeted with this added export feature under the Component Activation tab.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Settings\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2681\",\"custom_value\":\"\"}}}}', 'e3681356-565b-46a2-aa11-b2d9ab908938', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOyANCg0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcSW5kZW50Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcTGluZTsNCg==', 11, '{\"method_selection0\":{\"method\":\"92\"},\"method_selection1\":{\"method\":\"56\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogVGhlIGxhbmd1YWdlIHN0cmluZyBidWlsZGVyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlQXJyYXkgPSBbXTsNCg0KCS8qDQoJICogVGhlIEV4cG9ydCBUZXh0IE9ubHkgc3dpdGNoDQoJICogDQoJICogQHZhciAgICAgIGludA0KCSAqLw0KCXByb3RlY3RlZCAkZXhwb3J0VGV4dE9ubHkgPSAwOw0KDQoJLyoNCgkgKiBUaGUgU3RyaWN0IEZpZWxkIEV4cG9ydCBQZXJtaXNzaW9ucyBzd2l0Y2gNCgkgKiANCgkgKiBAdmFyICAgICAgYm9vbA0KCSAqLw0KCXByb3RlY3RlZCAkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IGZhbHNlOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIGV4cG9ydCB0ZXh0IG9ubHkNCgkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdleHBvcnRfdGV4dF9vbmx5JywgKGludCkgJHRoaXMtPmV4cG9ydFRleHRPbmx5KTsNCg0KCQkJLy8gYWN0aXZhdGUgc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkIGlmIHNldCBpbiBwbHVnaW4gKGRlZmF1bHQgdHJ1ZSkNCgkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGV4cG9ydCBmb3IgYW55IHZpZXcNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gc2V0IHRoZSBleHBvcnQvaW1wb3J0IG9wdGlvbg0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPmFkbWluX3ZpZXdzKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkY29tcG9uZW50LT5hZG1pbl92aWV3cykpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGNvbXBvbmVudC0+YWRtaW5fdmlld3MgYXMgJHZpZXcpDQoJCQkJew0KCQkJCQlpZiAoISR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAoaXNzZXQoJHZpZXdbJ3BvcnQnXSkgJiYgJHZpZXdbJ3BvcnQnXSB8fCAxID09ICR2aWV3WydzZXR0aW5ncyddLT5hZGRfY3VzdG9tX2ltcG9ydCkpDQoJCQkJCXsNCgkJCQkJCSR0aGlzLT5leHBvcnRUZXh0T25seSA9IDE7DQoJCQkJCQkkdGhpcy0+c3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IChib29sKSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3N0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZCcsIDEpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmxhbmd1YWdlQXJyYXkpKQ0KCQl7DQoJCQlmb3JlYWNoKCR0aGlzLT5sYW5ndWFnZUFycmF5IGFzICRrZXkgPT4gJHN0cmluZykNCgkJCXsNCgkJCQlDRmFjdG9yeTo6XygnTGFuZ3VhZ2UnKS0+c2V0KCdhZG1pbnN5cycsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBDb25maWcgRmllbGQgc2V0c10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRDb25maWdGaWVsZHNldHMoJiR0aW1lcikNCgl7DQoJCS8vIG9ubHkgYWRkIGZpZWxkcyBhZnRlciBzZWNvbmQgdGltZQ0KCQlpZiAoJHRoaXMtPmV4cG9ydFRleHRPbmx5ICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiAkdGltZXIgPT0gMikNCgkJew0KCQkJLy8gbWFpbiBsYW5nIHByZWZpeA0KCQkJJGxhbmcgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmxhbmdfcHJlZml4IC4gJ19DT05GSUcnOw0KCQkJLy8gc3RhcnQgYnVpbGRpbmcgZmllbGQgc2V0IGZvciBjb25maWcNCgkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygxKSAuICI8ZmllbGRzZXQiOw0KCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gJ25hbWU9ImV4cG9ydF90ZXh0X29ubHlfY29uZmlnIic7DQoJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMikgLiAnbGFiZWw9IicgLiAkbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9UQUJfTEFCRUwiJzsNCgkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICdkZXNjcmlwdGlvbj0iJyAuICRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiI+JzsNCgkJCS8vIHNldHVwIGxhbmcNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9MQUJFTCddID0gIkV4cG9ydCBPcHRpb25zIjsNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiddID0gIkhlcmUgYXJlIHNvbWUgZXh0cmEgb3B0aW9uIHRvIGFkanVzdCB0aGUgZXhwb3J0IGJlaGF2aW9yIG9mIGFkbWluIHZpZXdzLiI7DQoJCQkvLyBhZGQgY3VzdG9tIEV4cG9ydCBPcHRpb25zDQoJCQlpZiAoaXNzZXQoJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkY29uZmlnRmllbGRTZXRzQ3VzdG9tRmllbGRbJ0V4cG9ydCBPcHRpb25zJ10pKQ0KCQkJew0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IGltcGxvZGUoIiIsICRjb25maWdGaWVsZFNldHNDdXN0b21GaWVsZFsnRXhwb3J0IE9wdGlvbnMnXSk7DQoJCQkJdW5zZXQoJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9MQUJFTCddID0gIkV4cG9ydCBUZXh0IE9ubHkiOw0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX0RFU0NSSVBUSU9OJ10gPSAiVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZXhwb3J0IG9mIHN0cmluZy90ZXh0IGluc3RlYWQgb2YgbGlua2VkIElEcyBpbiBhbGwgYWRtaW4gdmlld3MgdGhhdCBoYXZlIGFuIGV4cG9ydCBvcHRpb24uIjsNCg0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19BQ1RJVkFURSddID0gIkFjdGl2YXRlIjsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfREVBQ1RJVkFURSddID0gIkRlYWN0aXZhdGUiOw0KDQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4cG9ydCBUZXh0IE9ubHkgRmllbGQuIFR5cGU6IFJhZGlvLiAoam9vbWxhKSAtLT4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICI8ZmllbGQiOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJ0eXBlPVwicmFkaW9cIiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gIm5hbWU9XCJleHBvcnRfdGV4dF9vbmx5XCIiOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJsYWJlbD1cIiIgLiAkbGFuZyAuICJfRVhQT1JUX1RFWFRfT05MWV9MQUJFTFwiIjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAiZGVzY3JpcHRpb249XCIiIC4gJGxhbmcgLiAiX0VYUE9SVF9URVhUX09OTFlfREVTQ1JJUFRJT05cIiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gImNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC15ZXNub1wiIjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAiZGVmYXVsdD1cIjBcIj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIE9wdGlvbiBTZXQuIC0tPiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIxXCI+IjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oNCkgLiAkbGFuZyAuICJfQUNUSVZBVEU8L29wdGlvbj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMFwiPiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDQpIC4gJGxhbmcgLiAiX0RFQUNUSVZBVEU8L29wdGlvbj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICI8L2ZpZWxkPiI7DQoNCgkJCQkvLyBhZGQgIHN0cmljdCBGaWVsZCBFeHBvcnQgUGVybWlzc2lvbnMgZmllbGQNCgkJCQlpZiAoJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpDQoJCQkJew0KCQkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfU1RSSUNUX1BFUk1JU1NJT05fUEVSX0ZJRUxEX0xBQkVMJ10gPSAiVXNlIFN0cmljdCBQZXJtaXNzaW9uIHBlci9maWVsZCI7DQoJCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT04nXSA9ICJVc2Ugc3RyaWN0IHBlcm1pc3Npb25zIHBlci9maWVsZCBpbiB0aGUgZXhwb3J0IG1ldGhvZHMgd2hlcmUgdGhlcmUgYXJlIGZpZWxkcyBwZXJtaXNzaW9ucyBpbiBhIHZpZXcuIjsNCg0KCQkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIjwhLS0iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkIEZpZWxkLiBUeXBlOiBSYWRpby4gKGpvb21sYSkgLS0+IjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gIjxmaWVsZCI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJ0eXBlPVwicmFkaW9cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJuYW1lPVwic3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkXCIiOw0KCQkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAibGFiZWw9XCIiIC4gJGxhbmcgLiAiX1NUUklDVF9QRVJNSVNTSU9OX1BFUl9GSUVMRF9MQUJFTFwiIjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gImRlc2NyaXB0aW9uPVwiIiAuICRsYW5nIC4gIl9TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT05cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAteWVzbm9cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJkZWZhdWx0PVwiMVwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIE9wdGlvbiBTZXQuIC0tPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMVwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6Xyg0KSAuICRsYW5nIC4gIl9BQ1RJVkFURTwvb3B0aW9uPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMFwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6Xyg0KSAuICRsYW5nIC4gIl9ERUFDVElWQVRFPC9vcHRpb24+IjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gIjwvZmllbGQ+IjsNCgkJCQl9DQoJCQl9DQoJCQkvLyBjbG9zZSB0aGF0IGZpZWxkc2V0DQoJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMSkgLiAiPC9maWVsZHNldD4iOw0KCQl9DQoJfQ0KDQpbQ1VTVE9NQ09ERT1jb21wb25lbnRBY3RpdmVd', '[[[Component]]] Export Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.2.0', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Export Compiler', '', 1, '', '', 1, '2019-08-21 20:42:45', '2023-12-30 09:44:06', 43, '', 2),
(5, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to improve your action log integration with Joomla for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"activate\",\"label\":\"Component Activation\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', '91e831bf-5337-4b9c-8f6c-e90255b9e36a', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcUGxhY2VmaXg7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xJbmRlbnQ7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xMaW5lOw0K', 11, '{\"method_selection0\":{\"method\":\"59\"},\"method_selection1\":{\"method\":\"120\"},\"method_selection2\":{\"method\":\"79\"},\"method_selection3\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogVGhlIFNjcmlwdHMNCgkgKiANCgkgKiBAdmFyICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHNjcmlwdHNBcnJheSA9IFsnUE9TVElOU1RBTExTQ1JJUFQnID0+IFtdLCAnUE9TVFVQREFURVNDUklQVCcgPT4gW10sICdVTklOU1RBTExTQ1JJUFQnID0+IFtdXTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VBcnJheSkpDQoJCXsNCgkJCWZvcmVhY2goJHRoaXMtPmxhbmd1YWdlQXJyYXkgYXMgJGtleSA9PiAkc3RyaW5nKQ0KCQkJew0KCQkJCUNGYWN0b3J5OjpfKCdMYW5ndWFnZScpLT5zZXQoJ2FkbWluJywgJGtleSwgJHN0cmluZyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBCdWlsZCBGaWxlcyBDb250ZW50XQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyQnVpbGRGaWxlc0NvbnRlbnQoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJJGZ1bmN0aW9uX25hbWUgPSAnZ2V0TWFpbkozJzsNCgkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnam9vbWxhX3ZlcnNpb24nLCAzKSAhPSAzKQ0KCQkJew0KCQkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldE1haW5KNCc7DQoJCQl9DQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MgdG8gdGhlICBjb21wb25lbnQNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIGNvbXBvbmVudCBtYWluIHRhcmdldCBzY3JpcHQNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hZGQoJHRhcmdldCwgJHRoaXMtPnskZnVuY3Rpb25fbmFtZSAuICR0YXJnZXR9KCkpOw0KCQkJCS8vIGFkZCB0aGUgY29tcG9uZW50IHZpZXdzIHRhcmdldCBzY3JpcHRzDQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRidWNrZXQpKQ0KCQkJCXsNCgkJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCR0YXJnZXQsIGltcGxvZGUoJycsICRidWNrZXQpKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgYmV0dGVyIGludGVncmF0aW9uIHdpdGggYWN0aW9uIGxvZw0KCQlpZiAoJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmZpZWxkcykpDQoJCXsNCgkJCWZvcmVhY2ggKCR2aWV3LT5maWVsZHMgYXMgJGZpZWxkKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZmllbGRbJ3RpdGxlJ10pICYmICRmaWVsZFsndGl0bGUnXSA9PSAxKQ0KCQkJCXsNCgkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGlmIG5vdCBmb3VuZCB0cnkgYWdhaW4NCgkJCWlmICghaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHZpZXctPmZpZWxkcyBhcyAkZmllbGQpDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJGZpZWxkWydsaXN0J10pICYmICRmaWVsZFsnbGlzdCddID09IDEgJiYNCgkJCQkJCWlzc2V0KCRmaWVsZFsnb3JkZXJfbGlzdCddKSAmJiAkZmllbGRbJ29yZGVyX2xpc3QnXSA9PSAxICYmDQoJCQkJCQlpc3NldCgkZmllbGRbJ2xpbmsnXSkgJiYgJGZpZWxkWydsaW5rJ10gPT0gMSkNCgkJCQkJew0KCQkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gaWYgZm91bmQgdXBkYXRlIHBsYWNlaG9sZGVyDQoJCQlpZiAoaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJLy8gc2V0IG1haW4gdGl0bGUNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+c2V0KCc8PDxNQUlOX1RJVExFPj4+JywgJHRpdGxlX2hvbGRlciwgZmFsc2UpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGZhbGwgYmFjayBvbiBJRA0KCQkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5zZXQoJzw8PE1BSU5fVElUTEU+Pj4nLCAnaWQnLCBmYWxzZSk7DQoJCQl9DQoNCgkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldFZpZXdKMyc7DQoJCQlpZiAoQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5nZXQoJ2pvb21sYV92ZXJzaW9uJywgMykgIT0gMykNCgkJCXsNCgkJCQkkZnVuY3Rpb25fbmFtZSA9ICdnZXRWaWV3SjQnOw0KCQkJfQ0KDQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkkYnVja2V0W10gPSAkdGhpcy0+eyRmdW5jdGlvbl9uYW1lIC4gJHRhcmdldH0oKTsNCgkJCX0NCg0KCQkJLy8ganVzdCByZW1vdmUgaXQgYWdhaW4NCgkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5yZW1vdmUoJzw8PE1BSU5fVElUTEU+Pj4nKTsNCg0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPmdldF8oIkxBTkdfUFJFRklYIikgLiAnX1RZUEVfJyAuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5nZXRfKCJWSUVXIildID0gJHZpZXctPm5hbWVfc2luZ2xlOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFBvc3QgSW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVElOU1RBTExTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCBkYiBpZiBub3Qgc2V0IGFscmVhZHkuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmICghaXNzZXQoXCRkYikpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkYiA9IEZhY3Rvcnk6OmdldERibygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ3JlYXRlIHRoZSAiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIiBhY3Rpb24gbG9ncyBleHRlbnNpb25zIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gbmV3IFxzdGRDbGFzcygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMtPmV4dGVuc2lvbiA9ICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9ncyBleHRlbnNpb25zIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKM1BPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9nIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgTWFpbiBQb3N0IFVwZGF0ZSBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVFVQREFURVNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU2V0IGRiIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKCFpc3NldChcJGRiKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgdGhlICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIic7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2cgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyBEQi4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5zZWxlY3QoXCRkYi0+cXVvdGVOYW1lKGFycmF5KCdpZCcpKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX19hY3Rpb25fbG9nc19leHRlbnNpb25zJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2V4dGVuc2lvbicpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUgaWYgbm90IGZvdW5kLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVwkZGItPmdldE51bVJvd3MoKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjNQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT5pZCA9IG51bGw7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIGlzIGFscmVhZHkgaW4gYWN0aW9uX2xvZ19jb25maWcgREIuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeS0+c2VsZWN0KFwkZGItPnF1b3RlTmFtZShhcnJheSgnaWQnKSkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgndHlwZV9hbGlhcycpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGNvbnRlbnQgdHlwZXMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmIChcJGRiLT5nZXROdW1Sb3dzKCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPmlkID0gXCRkYi0+bG9hZFJlc3VsdCgpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19VcGRhdGVkID0gXCRkYi0+dXBkYXRlT2JqZWN0KCcjX19hY3Rpb25fbG9nX2NvbmZpZycsIFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLCAnaWQnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJlbHNlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWdfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiIGZyb20gdGhlIGFjdGlvbl9sb2dzX2V4dGVuc2lvbnMgdGFibGUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gYXJyYXkoIFwkZGItPnF1b3RlTmFtZSgnZXh0ZW5zaW9uJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKCdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSApOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPmRlbGV0ZShcJGRiLT5xdW90ZU5hbWUoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucyk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIkNvbXBvbmVudCIpIC4gIiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX3JlbW92ZWRfZG9uZSA9IFwkZGItPmV4ZWN1dGUoKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfcmVtb3ZlZF9kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmUgIiAuIFBsYWNlZml4OjpfKCJDb21wb25lbnQiKSAuICIgYWRkIHF1ZXVlZCBzdWNjZXNzIG1lc3NhZ2UuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkYXBwLT5lbnF1ZXVlTWVzc2FnZShUZSIgLiAieHQ6Ol8oJ1RoZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIgZXh0ZW5zaW9uIHdhcyByZW1vdmVkIGZyb20gdGhlIDxiPiNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnM8L2I+IHRhYmxlJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Vmlld0ozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBmcm9tIHRoZSBhY3Rpb25fbG9nX2NvbmZpZyB0YWJsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZyA9IGFycmF5KCBcJGRiLT5xdW90ZU5hbWUoJ3R5cGVfYWxpYXMnKSAuICcgPSAnLiBcJGRiLT5xdW90ZSgnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpICk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+ZGVsZXRlKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnX2RvbmUgPSBcJGRiLT5leGVjdXRlKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImlmIChcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmVkICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBhZGQgcXVldWVkIHN1Y2Nlc3MgbWVzc2FnZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAtPmVucXVldWVNZXNzYWdlKFRlIiAuICJ4dDo6XygnVGhlIGNvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICIgdHlwZSBhbGlhcyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSA8Yj4jX19hY3Rpb25fbG9nX2NvbmZpZzwvYj4gdGFibGUnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIn0iOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBJbnN0YWxsIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRNYWluSjRQT1NUSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIEFkZCBjb21wb25lbnQgdG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkdGhpcy0+c2V0QWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFBPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiB0byB0aGUgYWN0aW9uIGxvZ3MgY29uZmlnIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRoaXMtPnNldEFjdGlvbkxvZ0NvbmZpZygiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZVRpdGxlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gUGxhY2VmaXg6Ol8oIlZJRVciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0eXBlQWxpYXMiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBpZEhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInaWQnLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aXRsZUhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInPDw8TUFJTl9USVRMRT4+PicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRhYmxlTmFtZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGV4dFByZWZpeCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJMQU5HX1BSRUZJWCIpIC4gIiciOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBVcGRhdGUgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE1haW5KNFBPU1RVUERBVEVTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykNCgkJCS4gIiBBZGQvVXBkYXRlIGNvbXBvbmVudCBpbiB0aGUgYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dzRXh0ZW5zaW9ucygpOyI7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjRQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkL1VwZGF0ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgaW4gdGhlIGFjdGlvbiBsb2dzIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dDb25maWcoIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHR5cGVUaXRsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJWSUVXIikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZUFsaWFzIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIidjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgaWRIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2lkJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGl0bGVIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJzw8PE1BSU5fVElUTEU+Pj4nLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0YWJsZU5hbWUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyNfXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRleHRQcmVmaXgiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIik7IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbko0VU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgUmVtb3ZlIGNvbXBvbmVudCBmcm9tIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBVbmluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFVOSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIFJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgZnJvbSBhY3Rpb24gbG9ncyBjb25maWcgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nQ29uZmlnKCdjb21fIg0KCQkJLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KW0NVU1RPTUNPREU9Y29tcG9uZW50QWN0aXZlXQ==', '[[[Component]]] ActionLog Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB ActionLog Compiler', '', 1, '', '', 1, '2019-08-27 08:22:41', '2024-01-17 14:23:51', 63, '', 3),
(6, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add download link, url or icon and more to content from the [[[Component]]].', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"\",\"fields_rules_paths\":\"2\",\"fields\":{\"fields0\":{\"field\":\"2644\",\"custom_value\":\"1\"},\"fields1\":{\"field\":\"2645\",\"custom_value\":\"md\"},\"fields2\":{\"field\":\"2646\",\"custom_value\":\"\"}}}}', 'cbbd9ccd-441b-4c88-b0bb-44c724943df0', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOyA=', 3, '{\"method_selection0\":{\"method\":\"16\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogQWRkIHRoZSBjc3MgZmlsZXMgdG8gdGhlIGRvY3VtZW50IGZvciB0aGUgdmVjdG9yIHN5bGUNCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqLw0KCXByb3RlY3RlZCAgJGFkZGNzcyA9IGZhbHNlOw0KCXByb3RlY3RlZCAgJHNldGNzcyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhpcyBpcyB0aGUgZmlyc3Qgc3RhZ2UgaW4gcHJlcGFyaW5nIGNvbnRlbnQgZm9yIG91dHB1dCBhbmQgaXMgdGhlDQoJICogbW9zdCBjb21tb24gcG9pbnQgZm9yIGNvbnRlbnQgb3JpZW50YXRlZCBwbHVnaW5zIHRvIGRvIHRoZWlyIHdvcmsuDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIHRoZSBwbHVnaW4uDQoJICogQHBhcmFtICAgb2JqZWN0ICAgJiRyb3cgICAgIFRoZSBhcnRpY2xlIG9iamVjdC4gIE5vdGUgJGFydGljbGUtPnRleHQgaXMgYWxzbyBhdmFpbGFibGUNCgkgKiBAcGFyYW0gICBtaXhlZCAgICAmJHBhcmFtcyAgVGhlIGFydGljbGUgcGFyYW1zDQoJICogQHBhcmFtICAgaW50ZWdlciAgJHBhZ2UgICAgIFRoZSAncGFnZScgbnVtYmVyDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Db250ZW50UHJlcGFyZSgkY29udGV4dCwgJiRyb3csICYkcGFyYW1zLCAkcGFnZSA9IDApDQoJew0KCQkvLyBTaW1wbGUgcGVyZm9ybWFuY2UgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYm90IHNob3VsZCBwcm9jZXNzIGZ1cnRoZXINCgkJaWYgKHN0cnBvcygkcm93LT50ZXh0LCAnW1tbW1NFQ1VSRUZJTEVdXV09JykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBidWlsZCB0aGUgcmVwbGFjZW1lbnQgdmFsdWVzDQoJCQkkcmVwbGFjZW1lbnQgPSBhcnJheSgpOw0KCQkJLy8gZ2V0IGFsbCBJRCBrZXlzDQoJCQkka2V5cyA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OmFsbEJldHdlZW4oJHJvdy0+dGV4dCwgJ1tbW1tTRUNVUkVGSUxFXV1dPScsICddJyk7DQoJCQkvLyBtYWtlIHN1cmUgd2UgcmVhbGx5IGhhdmUgc29tZXRoaW5nIChzaG91bGQgbm90IGJlIG5lZWRlZC4uLikNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygka2V5cykpDQoJCQl7DQoJCQkJJGlkcyA9IGFycmF5KCk7DQoJCQkJJGJ1aWxkZXIgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2goJGtleXMgYXMgJGtleSkNCgkJCQl7DQoJCQkJCWlmIChzdHJwb3MoJGtleSwgJ18nKSAhPT0gZmFsc2UpDQoJCQkJCXsNCgkJCQkJCWxpc3QoJHR5cGUsICRpZCkgPSBleHBsb2RlKCdfJywgJGtleSwgMik7DQoJCQkJCQkkaWRzWyhpbnQpICRpZF0gPSAoaW50KSAkaWQ7DQoJCQkJCQkkYnVpbGRlclska2V5XSA9IGFycmF5KCdpZCcgPT4gKGludCkgJGlkLCAndHlwZScgPT4gJHR5cGUpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJJGJ1aWxkZXJbJGtleV0gPSBudWxsOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGdldCBpdGVtcw0KCQkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkaWRzKSAmJiAoJGl0ZW1zID0gJHRoaXMtPmdldEl0ZW1zKGFycmF5X3ZhbHVlcygkaWRzKSkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRidWlsZGVyIGFzICRrZXkgPT4gJHRhcmdldCkNCgkJCQkJew0KCQkJCQkJLy8gYnVpbGQgdGhlIHBsYWNlaG9sZGVyIGtleQ0KCQkJCQkJJF9rZXkgPSAnW1tbW1NFQ1VSRUZJTEVdXV09JyAuICRrZXkgLiAnXSc7DQoJCQkJCQkvLyBtYWtlIHN1cmUgaXQgZ2V0cyByZW1vdmVkIGlmIG5vdCBmb3VuZA0KCQkJCQkJJHJlcGxhY2VtZW50WyRfa2V5XSA9ICcnOw0KCQkJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0YXJnZXQpICYmIGlzc2V0KCR0YXJnZXRbJ2lkJ10pICYmIGlzc2V0KCRpdGVtc1skdGFyZ2V0WydpZCddXSkpDQoJCQkJCQl7DQoJCQkJCQkJJHJlcGxhY2VtZW50WyRfa2V5XSA9ICR0aGlzLT5nZXREb3dubG9hZFN0cmluZygkdGFyZ2V0Wyd0eXBlJ10sICRpdGVtc1skdGFyZ2V0WydpZCddXSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gbm93IHVwZGF0ZSB0aGUgY29udGVudA0KCQkJCQkkcm93LT50ZXh0ID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVwbGFjZW1lbnQpLCBhcnJheV92YWx1ZXMoJHJlcGxhY2VtZW50KSwgJHJvdy0+dGV4dCk7DQoJCQkJCS8vIGFkZCB0aGUgY3NzIGZpbGVzDQoJCQkJCWlmICgkdGhpcy0+YWRkY3NzKQ0KCQkJCQl7DQoJCQkJCQkvLyBnZXQgdGhlIGRvY3VtZW50IG9iamVjdA0KCQkJCQkJJGRvY3VtZW50ID0gRmFjdG9yeTo6Z2V0RG9jdW1lbnQoKTsNCltDVVNUT01DT0RFPWZpbGVJY29uVmV0b3JzQ1NTKyQsCQkJCQkJXQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhlIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSBmaWxlIGRvd25sb2FkIHN0cmluZw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHR5cGUgIFRoZSB0eXBlIG9mIGRvd25sb2FkIHN0cmluZw0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGl0ZW0gIFRoZSBmaWxlIGl0ZW0gb2JqZWN0DQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RG93bmxvYWRTdHJpbmcoJHR5cGUsICRpdGVtKQ0KCXsNCgkJc3dpdGNoKCR0eXBlKQ0KCQl7DQoJCQljYXNlICdpY29uJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlDQoJCQkJaWYgKCEkdGhpcy0+c2V0Y3NzKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmFkZGNzcyA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWRkX2NzcycsIHRydWUpOw0KCQkJCQkkdGhpcy0+c2V0Y3NzID0gdHJ1ZTsNCgkJCQl9DQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4NCgkJCQkJJzxzcGFuIGNsYXNzPSJmaXYtJyAuIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmlsZVZlY3RvclN0eWxlKHRydWUpIC4gJyBmaXYtaWNvbi0nIC4gJGl0ZW0tPmZpbGVfZXh0ZW5zaW9uIC4gJyBmaXYtc2l6ZS0nIC4gJHRoaXMtPnBhcmFtcy0+Z2V0KCdpY29uX3NpemUnLCAnbWQnKSAuICciPjwvc3Bhbj4nIC4NCgkJCQkJJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLW1kJzoNCgkJCWNhc2UgJ2ljb24tbWVkaXVtJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbWVkaXVtIHNpemUNCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+JyAuDQoJCQkJCSc8L2E+JzsNCgkJCWJyZWFrOw0KCQkJY2FzZSAnaWNvbi1sZyc6DQoJCQljYXNlICdpY29uLWxhcmdlJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbGFyZ2Ugc2l6ZQ0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtbGciPjwvc3Bhbj4nIC4NCgkJCQkJJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLXhsJzoNCgkJCWNhc2UgJ2ljb24teGxhcmdlJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUNCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLXhsIj48L3NwYW4+JyAuDQoJCQkJCSc8L2E+JzsNCgkJCWJyZWFrOw0KDQoJCQljYXNlICdpY29uK25hbWUnOg0KCQkJCS8vIHRoZSBpY29uIHR5cGUgd2l0aCBuYW1lIHVuZGVyDQoJCQkJaWYgKCEkdGhpcy0+c2V0Y3NzKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmFkZGNzcyA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWRkX2NzcycsIHRydWUpOw0KCQkJCQkkdGhpcy0+c2V0Y3NzID0gdHJ1ZTsNCgkJCQl9DQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4NCgkJCQkJJzxzcGFuIGNsYXNzPSJmaXYtJyAuIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmlsZVZlY3RvclN0eWxlKHRydWUpIC4gJyBmaXYtaWNvbi0nIC4gJGl0ZW0tPmZpbGVfZXh0ZW5zaW9uIC4gJyBmaXYtc2l6ZS0nIC4gJHRoaXMtPnBhcmFtcy0+Z2V0KCdpY29uX3NpemUnLCAnbWQnKSAuICciPjwvc3Bhbj4gPGJyIC8+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24tbWQrbmFtZSc6DQoJCQljYXNlICdpY29uLW1lZGl1bStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbWVkaXVtIHNpemUgYW5kIG5hbWUgdW5kZXINCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+IDxiciAvPicgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLWxnK25hbWUnOg0KCQkJY2FzZSAnaWNvbi1sYXJnZStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbGFyZ2Ugc2l6ZSBhbmQgbmFtZSB1bmRlcg0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtbGciPjwvc3Bhbj4gPGJyIC8+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24teGwrbmFtZSc6DQoJCQljYXNlICdpY29uLXhsYXJnZStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUgYW5kIG5hbWUgdW5kZXINCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLXhsIj48L3NwYW4+IDxiciAvPicgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoNCgkJCWNhc2UgJ2ljb24tbmFtZSc6DQoJCQkJLy8gdGhlIGljb24gdHlwZSB3aXRoIG5hbWUgbmV4dCB0bw0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtJyAuICR0aGlzLT5wYXJhbXMtPmdldCgnaWNvbl9zaXplJywgJ21kJykgLiAnIj48L3NwYW4+ICcgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLW1kLW5hbWUnOg0KCQkJY2FzZSAnaWNvbi1tZWRpdW0tbmFtZSc6DQoJCQkJLy8gdGhlIGljb24gdHlwZSB3aXRoIG1lZGl1bSBzaXplIGFuZCBuYW1lIG5leHQgdG8NCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24tbGctbmFtZSc6DQoJCQljYXNlICdpY29uLWxhcmdlLW5hbWUnOg0KCQkJCS8vIHRoZSBpY29uIHR5cGUgd2l0aCBsYXJnZSBzaXplIGFuZCBuYW1lIG5leHQgdG8NCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLWxnIj48L3NwYW4+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24teGwtbmFtZSc6DQoJCQljYXNlICdpY29uLXhsYXJnZS1uYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUgYW5kIG5hbWUgbmV4dCB0bw0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUteGwiPjwvc3Bhbj4nIC4NCgkJCQkJJGl0ZW0tPmZpbGVfbmFtZSAuICc8L2E+JzsNCgkJCWJyZWFrOw0KDQoJCQljYXNlICduYW1lJzoNCgkJCQkvLyBqdXN0IHRoZSBmaWxlIG5hbWUNCgkJCQlyZXR1cm4gJGl0ZW0tPmZpbGVfbmFtZTsNCgkJCWNhc2UgJ2Rlc2NyaXB0aW9uJzoNCgkJCQkvLyBqdXN0IHRoZSBmaWxlIGRlc2NyaXB0aW9uDQoJCQkJcmV0dXJuIChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQlicmVhazsNCgkJCWNhc2UgJ3VybCc6DQoJCQkJLy8gdGhlIHVybCB0eXBlDQoJCQkJcmV0dXJuICRpdGVtLT5saW5rOw0KCQkJYnJlYWs7DQoJCQljYXNlICdsaW5rJzoNCgkJCQkvLyB0aGUgbGluayB0eXBlDQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4gJGl0ZW0tPmZpbGVfbmFtZSAuICc8L2E+JzsNCgkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiAnJzsNCgl9DQoNCgkvKioNCgkgKiBUaGUgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGZpbGVzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICRpZHMgIFRoZSBpZHMgb2YgdGhlIGZpbGVzIHRvIHJldHJpZXZlDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRJdGVtcygkaWRzKQ0KCXsNCgkJLy8gR2V0IGEgZGIgY29ubmVjdGlvbi4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCS8vIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuDQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJJHF1ZXJ5LT5zZWxlY3QoJGRiLT5xdW90ZU5hbWUoYXJyYXkoJ2lkJywgJ21haW5fZmlsZScsICdhY2Nlc3MnLCAnbmFtZScsICdkZXNjcmlwdGlvbicpKSk7DQoJCSRxdWVyeS0+ZnJvbSgkZGItPnF1b3RlTmFtZSgnI19fW1tbY29tcG9uZW50XV1dX2ZpbGUnKSk7DQoNCgkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgSU4gKCcgLiBpbXBsb2RlKCcsJywkaWRzKSAuICcpJyk7DQoJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCgkJJGRiLT5leGVjdXRlKCk7DQoJCWlmICgkZGItPmdldE51bVJvd3MoKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSBpdGVtcw0KCQkJJGl0ZW1zID0gJGRiLT5sb2FkT2JqZWN0TGlzdCgnaWQnKTsNCgkJCS8vIHNldCBsaW5rIG9wdGlvbnMNCgkJCSRsaW5rb3B0aW9ucyA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0TGlua09wdGlvbnMoKTsNCgkJCS8vIGdldCBzZXNzaW9uIHRva2VuDQoJCQkkc2Vzc2lvbiA9IEpvb21sYV9fXzViYTM4NTEzXzVjNGZfNGIwZF85MzVlXzQ5ZTk4NmE2YmNlOF9fX1Bvd2VyOjpnZXRGb3JtVG9rZW4oKTsNCgkJCS8vICB1bmxvY2sgc29tZSBkYXRhDQoJCQlmb3JlYWNoICgkaXRlbXMgYXMgJGlkID0+ICYkaXRlbSkNCgkJCXsNCgkJCQlpZiAoIWVtcHR5KCRpdGVtLT5tYWluX2ZpbGUpICYmICFpc19udW1lcmljKCRpdGVtLT5tYWluX2ZpbGUpICYmICRpdGVtLT5tYWluX2ZpbGUgPT09IGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkaXRlbS0+bWFpbl9maWxlLCB0cnVlKSkpDQoJCQkJew0KCQkJCQkvLyBtZWRpdW0gZGVjcnlwdCBkYXRhIG1haW5fZmlsZS4NCgkJCQkJJGl0ZW0tPm1haW5fZmlsZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkaXRlbS0+bWFpbl9maWxlKTsNCgkJCQl9DQpbQ1VTVE9NQ09ERT1zZXRTZWN1cmVGaWxlTGlua0luSXRlbU9iamVjdCsJCQkJXQ0KCQkJfQ0KCQkJcmV0dXJuICRpdGVtczsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', '[[[Component]]] Download in Content', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'set Download of Files in Content', '', 1, '', '', 1, '2019-09-13 17:15:19', '2020-05-24 22:48:49', 24, '', 2),
(7, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add language packaging to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '12dea095-2cc8-4830-b435-3d4599177ed1', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOw0KDQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXEZhY3RvcnkgYXMgQ0ZhY3Rvcnk7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xQbGFjZWZpeDsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXEluZGVudDsNCg==', 11, '{\"method_selection0\":{\"method\":\"88\"},\"method_selection1\":{\"method\":\"55\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBEYXRhYmFzZSBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgRGF0YWJhc2VEcml2ZXINCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkZGI7DQoNCgkvKioNCgkgKiBBcHBsaWNhdGlvbiBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgQ01TQXBwbGljYXRpb24NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXBwOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSA9IDIwMDsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZXMgbmFtZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlTmFtZXMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZSBidWlsZGluZyB0cmFja2VyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsYW5ndWFnZVRyYWNrZXIgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUZvbGRlcjsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUVkaXRGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgY29tcG9uZW50IHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21wb25lbnRQYXRoOw0KDQoJLyoqDQoJICogVGhlIGNvbXBpbGVyIHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21waWxlclBhdGg7DQoNCgkvKioNCgkgKiBUaGUgdGVtcG9yYWwgcGF0aA0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHRlbXBQYXRoOw0KDQoJLyoqDQoJICogVGhlIGpvb21sYSB2ZXJzaW9uDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkam9vbWxhVmVyc2lvbjsNCg0KCS8qKg0KCSAqIFRoZSBjb21wb25lbnQgdmVyc2lvbg0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNvbXBvbmVudF92ZXJzaW9uOw0KDQoJLyoqDQoJICogVGhlIGNvbXBvbmVudCBuYW1lDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkY29tcG9uZW50Q29kZU5hbWU7DQoNCgkvKioNCgkgKiBUaGUgZmlsZSBjb250ZW50IHN0YXRpYyB2YWx1ZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGZpbGVDb250ZW50U3RhdGljOw0KDQoJLyoNCgkgKiBUaGUgbGluZSBudW1iZXJzIFN3aXRjaA0KCSAqIA0KCSAqIEB2YXIgICAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkZGVidWdMaW5lbnIgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBBY3RpdmUgQ29tcG9uZW50cw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhY3RpdmVDb21wb25lbnRzID0gW107DQoNCgkvKioNCgkgKiBUaGUgQWN0aXZlIENvbXBvbmVudHMgTmFtZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYWN0aXZlQ29tcG9uZW50c05hbWVzID0gW107DQoNCgkvKioNCgkgKiBUaGUgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGxhbmd1YWdlcyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIExhbmd1YWdlIGJ1aWxkIGRldGFpbHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYnVpbGREZXRhaWxzID0gW107DQoNCgkvKioNCgkgKiBUaGUgRXhjbHVkZWQgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGV4Y2x1ZGVkTGFuZyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJGNvbXBvbmVudC0+cGFyYW1zID0gKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtcykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkY29tcG9uZW50LT5wYXJhbXMsIHRydWUpIDogJGNvbXBvbmVudC0+cGFyYW1zOw0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSAmJiBpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXSkgJiYNCgkJCWlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydhY3RpdmF0ZSddKSAmJiAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnYWN0aXZhdGUnXSA9PSAxKQ0KCQl7DQoJCQkvLyBsb2FkIHRoZSBhZG1pbiBjb21wb25lbnQgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGNvbXBvbmVudC0+aWRdID0gQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfY29udGV4dDsNCgkJCSR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGNvbXBvbmVudC0+aWRdID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkY29tcG9uZW50LT5uYW1lX2NvZGUpOw0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNSZWFsTmFtZXNbJGNvbXBvbmVudC0+aWRdID0gJGNvbXBvbmVudC0+bmFtZTsNCgkJCS8vIGFkZCBleGNsdWRlZCBsaXN0IG9mIGxhbmd1YWdlcw0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydsYW5ndWFnZXMnXSkpDQoJCQl7DQoJCQkJJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skY29tcG9uZW50LT5pZF0gPSAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnbGFuZ3VhZ2VzJ107DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skY29tcG9uZW50LT5pZF0gPSBhcnJheSgpOw0KCQkJfQ0KCQkJLy8gbm93IHNldCB0aGUgY29tcG9uZW50IGFkZCBsYW5ndWFnZXMgaWYgd2Ugc2hvdWxkIHVzZSBsb2NhbCAoMikNCgkJCWlmIChpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsndXNlX3BlcmNlbnRhZ2VsYW5ndWFnZWFkZCddKSAmJiAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsndXNlX3BlcmNlbnRhZ2VsYW5ndWFnZWFkZCddID09IDIpDQoJCQl7DQoJCQkJJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUgPSAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsncGVyY2VudGFnZWxhbmd1YWdlYWRkJ107DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykNCgkJCSYmIGlzc2V0KCR0aGlzLT5hY3RpdmVDb21wb25lbnRzWyRpZF0pICYmICR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGRPdmVyaWRlICE9IDIwMCkNCgkJew0KCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5zZXQoJ3BlcmNlbnRhZ2VfbGFuZ3VhZ2VfYWRkJywgJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJLy8gbGV0cyBtYXAgc29tZSBhcnJheXMgdG8gdGhlIHBsdWdpbiBmb3IgbGF0ZXIgdXNlDQoJCSR0aGlzLT5jb21waWxlclBhdGggPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmNvbXBpbGVyX3BhdGg7DQoJCSR0aGlzLT50ZW1wUGF0aCA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+dG1wX3BhdGg7DQoJCSR0aGlzLT5sYW5nVGFnID0gQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZzsNCgkJJHRoaXMtPmRlYnVnTGluZW5yID0gQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5nZXQoJ2RlYnVnX2xpbmVfbnInLCBmYWxzZSk7DQoJCSR0aGlzLT5jb21wb25lbnRfdmVyc2lvbiA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+Z2V0KCdjb21wb25lbnRfdmVyc2lvbicsICcxLjAuMCcpOw0KCQkkdGhpcy0+am9vbWxhVmVyc2lvbiA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+am9vbWxhX3ZlcnNpb247DQoJCSR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGQgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPnBlcmNlbnRhZ2VfbGFuZ3VhZ2VfYWRkOw0KCQkkdGhpcy0+cmVtb3ZlU2l0ZUZvbGRlciA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+cmVtb3ZlX3NpdGVfZm9sZGVyOw0KCQkkdGhpcy0+cmVtb3ZlU2l0ZUVkaXRGb2xkZXIgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPnJlbW92ZV9zaXRlX2VkaXRfZm9sZGVyOw0KCQkkdGhpcy0+Y29tcG9uZW50UGF0aCA9IENGYWN0b3J5OjpfKCdVdGlsaXRpZXMuUGF0aHMnKS0+Y29tcG9uZW50X3BhdGg7DQoJCSR0aGlzLT5jb21wb25lbnRDb2RlTmFtZSA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+Y29tcG9uZW50X2NvZGVfbmFtZTsNCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgQnVpbGQgUGx1Z2luIExhbmcgRmlsZXNdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlQnVpbGRQbHVnaW5MYW5nRmlsZXMoJiRwbHVnaW4sICYkbGFuZ3VhZ2VzKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIHNldCBmaWxlIG5hbWUNCgkJCSRmaWxlX25hbWUgPSAncGxnXycgLiBzdHJ0b2xvd2VyKCRwbHVnaW4tPmdyb3VwKSAuICdfJyAuIHN0cnRvbG93ZXIoJHBsdWdpbi0+Y29kZV9uYW1lKTsNCgkJCS8vIGV4dHJ1ZGUgdGhlIGxhbmd1YWdlcyB0aGF0IHNob3VsZCBub3QgcmVtYWluIGluIHRoZSBwbHVnaW4NCgkJCSR0aGlzLT5leHRydWRlTGFuZ3VhZ2VzKCRpZCwgJGxhbmd1YWdlcywgQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJGZpbGVfbmFtZSwgJ2FkbWluJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgQnVpbGQgTW9kdWxlIExhbmcgRmlsZXNdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlQnVpbGRNb2R1bGVMYW5nRmlsZXMoJiRtb2R1bGUsICYkbGFuZ3VhZ2VzKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIGV4dHJ1ZGUgdGhlIGxhbmd1YWdlcyB0aGF0IHNob3VsZCBub3QgcmVtYWluIGluIHRoZSBtb2R1bGUNCgkJCSR0aGlzLT5leHRydWRlTGFuZ3VhZ2VzKCRpZCwgJGxhbmd1YWdlcywgQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJG1vZHVsZS0+ZmlsZV9uYW1lLCAkbW9kdWxlLT50YXJnZXRfY2xpZW50KTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBCdWlsZCBBbGwgTGFuZyBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVCdWlsZEFsbExhbmdGaWxlcygmJGxhbmd1YWdlcykNCgl7DQoJCS8vIGdldCBjb21wb25lbnQgaWQNCgkJJGlkID0gKGludCkgQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfaWQ7DQoJCS8vIGNoZWNrIGlmIHRoZXJlIGlzIGFjdGl2ZQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHMpICYmIGlzc2V0KCR0aGlzLT5hY3RpdmVDb21wb25lbnRzWyRpZF0pKQ0KCQl7DQoJCQkvLyBzZXQgZmlsZSBuYW1lDQoJCQkkZmlsZV9uYW1lID0gJ2NvbV8nIC4gJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skaWRdOw0KCQkJLy8gZXh0cnVkZSB0aGUgbGFuZ3VhZ2VzIHRoYXQgc2hvdWxkIG5vdCByZW1haW4gaW4gdGhlIG1vZHVsZQ0KCQkJJHRoaXMtPmV4dHJ1ZGVMYW5ndWFnZXMoJGlkLCAkbGFuZ3VhZ2VzLCBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmxhbmdfdGFnLCAkZmlsZV9uYW1lKTsNCgkJfQ0KCQkvLyBidWlsZCB0aGUgbGFuZ3VhZ2UgcGFja2FnZXMNCgkJJHRoaXMtPmJ1aWxkTGFuZ3VhZ2VzKCRpZCwgQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZyk7DQoJfQ0KDQoJLyoqDQoJICogRXh0cnVkZXIgb2YgdGhlIGxhbmd1YWdlcw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJ1ZGVMYW5ndWFnZXMoJiRpZCwgJiRsYW5ndWFnZXMsICRsYW5nVGFnLCAmJGZpbGVfbmFtZSwgJHRhcmdldF9jbGllbnQgPSAnYm90aCcpDQoJew0KCQkkbWFpbkxhbmdMb2FkZXIgPSBbXTsNCgkJLy8gY2hlY2sgaWYgdGhpcyBpZCB3YXMgc2V0IGJlZm9yZQ0KCQlpZiAoIWlzc2V0KCR0aGlzLT5sYW5ndWFnZXNbJGlkXSkpDQoJCXsNCgkJCSR0aGlzLT5sYW5ndWFnZXNbJGlkXSA9IFtdOw0KCQkJJHRoaXMtPmJ1aWxkRGV0YWlsc1skaWRdID0gW107DQoJCX0NCgkJLy8gY2hlY2sgaWYgdGhpcyBmaWxlIG5hbWUgd2FzIHNldCBiZWZvcmUNCgkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV0pKQ0KCQl7DQoJCQkkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV0gPSBbXTsNCgkJfQ0KCQkvLyBzZXQgYWxsIHRoZSBleHRyYSBsYW5ndWFnZXMgbm90IGV4Y2x1ZGVkDQoJCWZvcmVhY2ggKCRsYW5ndWFnZXMgYXMgJGtleSA9PiAkbGFuZ3VhZ2UpDQoJCXsNCgkJCWlmICgka2V5ICE9PSAkbGFuZ1RhZyAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGFuZ3VhZ2UpICYmICghaXNzZXQoJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skaWRdKSB8fCAhaW5fYXJyYXkoJGtleSwgJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skaWRdKSkpDQoJCQl7DQoJCQkJLy8gYWRkIHRvIG91ciBidWNrZXQNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV1bJGtleV0gPSAkbGFuZ3VhZ2U7DQoJCQkJLy8gcmVtb3ZlIGZyb20gdGhlIEpDQiBidWlsZA0KCQkJCXVuc2V0KCRsYW5ndWFnZXNbJGtleV0pOw0KCQkJfQ0KCQkJLy8gY291bnQgdGhlIGFyZWEgc3RyaW5ncw0KCQkJaWYgKCRsYW5nVGFnID09PSAka2V5KQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRsYW5ndWFnZSBhcyAkYXJlYSA9PiAkbGFuZ3VhZ2VTdHJpbmdzKQ0KCQkJCXsNCgkJCQkJJG1haW5MYW5nTG9hZGVyWyRhcmVhXSA9IGNvdW50KCRsYW5ndWFnZVN0cmluZ3MpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkvLyBzdG9yZSBkZXRhaWxzIGZvciBidWlsZA0KCQkkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV0gPSBbJGxhbmdUYWcgPT4gJG1haW5MYW5nTG9hZGVyLCAndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnRdOw0KCX0NCg0KCS8qKg0KCSAqIFN0YXJ0IHRoZSBidWlsZGluZyBvZiB0aGUgbGFuZ3VhZ2VzIHBhY2thZ2VzDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBidWlsZExhbmd1YWdlcygmJGlkLCAkbGFuZ1RhZykNCgl7DQoJCWlmIChpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSkpDQoJCXsNCgkJCS8vIHJlc3QgeG1sIGFycmF5DQoJCQkkbGFuZ1hNTCA9IFtdOw0KCQkJJGxhbmdOYW1lcyA9IFtdOw0KCQkJJGxhbmdQYWNrYWdlcyA9IFtdOw0KCQkJJGxhbmdaSVBOYW1lcyA9IFtdOw0KCQkJJGxhbmdYTUxOYW1lcyA9IFtdOw0KCQkJJHZlcnNpb25OYW1lID0gJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skaWRdIC4gJ192JyAuIHN0cl9yZXBsYWNlKCcuJywgJ18nLCAkdGhpcy0+Y29tcG9uZW50X3ZlcnNpb24gLiAnX19KJyAuICR0aGlzLT5qb29tbGFWZXJzaW9uKTsNCgkJCWZvcmVhY2ggKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSBhcyAkZmlsZV9uYW1lID0+ICRsYW5ndWFnZXMpDQoJCQl7DQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRsYW5ndWFnZXMpICYmIGlzc2V0KCR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ10pKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBtYWluIGxhbmcgbG9hZGVyDQoJCQkJCSRtYWluTGFuZ0xvYWRlciA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ107DQoJCQkJCS8vIGdldCB0aGUgdGFyZ2V0IGNsaWVudA0KCQkJCQkkdGFyZ2V0X2NsaWVudCA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVsndGFyZ2V0X2NsaWVudCddOw0KCQkJCQlmb3JlYWNoICgkbGFuZ3VhZ2VzIGFzICR0YWcgPT4gJGFyZWFzKQ0KCQkJCQl7DQoJCQkJCQkvLyB0cmltIHRoZSB0YWcNCgkJCQkJCSR0YWcgPSB0cmltKCR0YWcpOw0KCQkJCQkJLy8gZ2V0IGxhbmd1YWdlIG5hbWUNCgkJCQkJCSRsYW5nTmFtZSA9ICR0aGlzLT5nZXRMYW5ndWFnZU5hbWUoJHRhZyk7DQoJCQkJCQkkbGFuZ0NvZGVOYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkbGFuZ05hbWUsICdGJyk7DQoJCQkJCQkvLyBzZXQgdGhlIGZpbGUgZm9sZGVyIG5hbWUNCgkJCQkJCSRsYW5nRm9sZGVyRmlsZU5hbWUgPSAkbGFuZ0NvZGVOYW1lIC4gJ18nIC4gJHZlcnNpb25OYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBtYWluIGZvbGRlciBwYXRoDQoJCQkJCQkkbWFpbl9wYXRoID0gJHRoaXMtPmNvbXBpbGVyUGF0aCAuICcvJyAuICRsYW5nRm9sZGVyRmlsZU5hbWUgLiAnLyc7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmd1YWdlIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ05hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdOYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBsYW5nIHppcCBuYW1lIGZvciBsYXRlcg0KCQkJCQkJJGxhbmdaSVBOYW1lc1skbWFpbl9wYXRoXSA9ICRsYW5nRm9sZGVyRmlsZU5hbWU7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmcgeG1sIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ1hNTE5hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdDb2RlTmFtZSAuICdfJyAuICR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGlkXSA7DQoJCQkJCQkvLyB3ZSBtdXN0IGNoZWNrIGlmIG9sZCBmb2xkZXIgaXMgZm91bmQgYW5kIHJlbW92ZSBpdA0KCQkJCQkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdKSAmJiBKRm9sZGVyOjpleGlzdHMoJG1haW5fcGF0aCkpDQoJCQkJCQl7DQoJCQkJCQkJLy8gcmVtb3ZlIHRoZSBtYWluIGZvbGRlcg0KCQkJCQkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6cmVtb3ZlRm9sZGVyKCRtYWluX3BhdGgpOw0KCQkJCQkJCS8vIGRvIG5vdCByZW1vdmUgaXQgYWdhaW4NCgkJCQkJCQkkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdID0gdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJCS8vIGNoZWNrIGlmIGV4aXN0IGFuZCBjcmVhdGUgaWYgbm90DQoJCQkJCQlpZiAoIUpGb2xkZXI6OmV4aXN0cygkbWFpbl9wYXRoKSkNCgkJCQkJCXsNCgkJCQkJCQlKRm9sZGVyOjpjcmVhdGUoJG1haW5fcGF0aCk7DQoJCQkJCQkJLy8gY291bnQgdGhlIGZvbGRlciBjcmVhdGVkDQoJCQkJCQkJQ0ZhY3Rvcnk6Ol8oJ1V0aWxpdGllcy5Db3VudGVyJyktPmZvbGRlcisrOw0KCQkJCQkJfQ0KCQkJCQkJZm9yZWFjaCAoJGFyZWFzIGFzICRhcmVhID0+ICRsYW5ndWFnZVN0cmluZ3MpDQoJCQkJCQl7DQoJCQkJCQkJLy8gZ2V0IHRoZSBmaWxlIG5hbWUNCgkJCQkJCQkkZmlsZU5hbWUgPSAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSk7DQoJCQkJCQkJLy8gY2hlY2sgaWYgbGFuZ3VhZ2Ugc2hvdWxkIGJlIGFkZGVkDQoJCQkJCQkJaWYgKCR0aGlzLT5zaG91bGRMYW5ndWFnZUJlQWRkZWQoJHRhZywgJGxhbmd1YWdlU3RyaW5ncywgJG1haW5MYW5nTG9hZGVyWyRhcmVhXSwgJGZpbGVOYW1lKSAmJiAoJGFjdGlvbnMgPSAkdGhpcy0+Z2V0TGFuZ0FjdGlvbnMoJGZpbGVfbmFtZSwgJHRhZywgJGFyZWEsICR0YXJnZXRfY2xpZW50KSkgIT09IGZhbHNlKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gc2V0IHRoZSBsYW5ndWFnZSBkYXRhDQoJCQkJCQkJCSRsYW5nID0gYXJyYXlfbWFwKA0KCQkJCQkJCQkJZnVuY3Rpb24gKCRsYW5nc3RyaW5nLCAkcGxhY2Vob2xkZXIpIHsNCgkJCQkJCQkJCQlyZXR1cm4gJHBsYWNlaG9sZGVyIC4gJz0iJyAuICRsYW5nc3RyaW5nIC4gJyInOw0KCQkJCQkJCQkJfSwgYXJyYXlfdmFsdWVzKCRsYW5ndWFnZVN0cmluZ3MpLA0KCQkJCQkJCQkJYXJyYXlfa2V5cygkbGFuZ3VhZ2VTdHJpbmdzKQ0KCQkJCQkJCQkpOw0KCQkJCQkJCQkvLyBzZXQgdGhlIGxpbmUgY291bnRlcg0KCQkJCQkJCQlDRmFjdG9yeTo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+bGluZSArPSBjb3VudCgNCgkJCQkJCQkJCShhcnJheSkgJGxhbmcNCgkJCQkJCQkJKTsNCgkJCQkJCQkJLy8gY2hlY2sgdGhhdCB0aGUgbWFpbiBmb2xkZXIgZXhpc3QNCgkJCQkJCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJJGNsaWVudF9wYXRoID0gJG1haW5fcGF0aCAuICRhY3RbJ3RhcmdldF9jbGllbnQnXSAuICcvJzsNCgkJCQkJCQkJCS8vIGNoZWNrIGlmIGV4aXN0IGFuZCBjcmVhdGUgaWYgbm90DQoJCQkJCQkJCQlpZiAoIUpGb2xkZXI6OmV4aXN0cygkY2xpZW50X3BhdGgpKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCUpGb2xkZXI6OmNyZWF0ZSgkY2xpZW50X3BhdGgpOw0KCQkJCQkJCQkJCS8vIGNvdW50IHRoZSBmb2xkZXIgY3JlYXRlZA0KCQkJCQkJCQkJCSR0aGlzLT5mb2xkZXJDb3VudCsrOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy8gd3JpdGUgdGhlIGxhbmd1YWdlIGRhdGEgdG8gYSBmaWxlDQoJCQkJCQkJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6OndyaXRlRmlsZSgNCgkJCQkJCQkJCQkkY2xpZW50X3BhdGggLiAkYWN0WydmaWxlX25hbWUnXSwgaW1wbG9kZShQSFBfRU9MLCAkbGFuZykNCgkJCQkJCQkJCSk7DQoJCQkJCQkJCQkvLyBjb3VudCB0aGUgZmlsZSBjcmVhdGVkDQoJCQkJCQkJCQlDRmFjdG9yeTo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+bGluZSsrOw0KCQkJCQkJCQkJLy8gYnVpbGQgeG1sIHN0cmluZ3MNCgkJCQkJCQkJCWlmICghaXNzZXQoJGxhbmdYTUxbJG1haW5fcGF0aF0pKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRsYW5nWE1MWyRtYWluX3BhdGhdID0gYXJyYXkoKTsNCgkJCQkJCQkJCQkkbGFuZ1BhY2thZ2VzWyRtYWluX3BhdGhdID0gYXJyYXkoKTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICghaXNzZXQoJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSA9IGFycmF5KCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkvLyBzZXQgdGhlIHBhY2thZ2UgdGFyZ2V0cw0KCQkJCQkJCQkJJGxhbmdQYWNrYWdlc1skbWFpbl9wYXRoXVskYWN0Wyd0YXJnZXRfY2xpZW50J11dID0gJGFjdFsndGFyZ2V0J107DQoJCQkJCQkJCQkkbGFuZ1hNTFskbWFpbl9wYXRoXVskYWN0Wyd0YXJnZXRfY2xpZW50J11dW10gPSAkYWN0WydmaWxlX25hbWUnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJCQkvLyBjbGVhciBtZW1vcnkNCgkJCQkJCQkJdW5zZXQoJGxhbmcpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gbG9hZCB0aGUgbGFuZyB4bWwNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGFuZ1hNTCkpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGxhbmdYTUwgYXMgJG1haW5fcGF0aCA9PiAkdGFyZ2V0X2NsaWVudHMpDQoJCQkJew0KCQkJCQkvLyBnZXQgdGhlIFhNTA0KCQkJCQkkeG1sID0gc3RyX3JlcGxhY2UoDQoJCQkJCQkJYXJyYXlfa2V5cyhDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hbGxBY3RpdmUoKSksDQoJCQkJCQkJYXJyYXlfdmFsdWVzKENGYWN0b3J5OjpfKCdDb21waWxlci5CdWlsZGVyLkNvbnRlbnQuT25lJyktPmFsbEFjdGl2ZSgpKSwNCgkJCQkJCQkkdGhpcy0+Z2V0TGFuZ3VhZ2VYTUwoJHRhcmdldF9jbGllbnRzLCAkbGFuZ1BhY2thZ2VzWyRtYWluX3BhdGhdLCAkbGFuZ05hbWVzWyRtYWluX3BhdGhdKQ0KCQkJCQkJKTsNCgkJCQkJLy8gZ2V0IHRoZSBYTUwgRmlsZSBOYW1lDQoJCQkJCSR4bWxGaWxlTmFtZSA9ICRsYW5nWE1MTmFtZXNbJG1haW5fcGF0aF0gLiAnLnhtbCc7DQoJCQkJCS8vIHdyaXRlIHRoZSBsYW5ndWFnZSBkYXRhIHRvIGEgZmlsZQ0KCQkJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6OndyaXRlRmlsZSgNCgkJCQkJCSRtYWluX3BhdGggLiAkeG1sRmlsZU5hbWUsICR4bWwNCgkJCQkJKTsNCgkJCQkJLy8gc2V0IHRoZSB6aXAgZnVsbCBwYXRoDQoJCQkJCSR6aXBQYXRoID0gJHRoaXMtPnRlbXBQYXRoIC4gJy8nIC4gJGxhbmdaSVBOYW1lc1skbWFpbl9wYXRoXSAuICcuemlwJzsNCgkJCQkJLy8gbm93IHppcCB0aGUgcGFja2FnZQ0KCQkJCQlpZiAoW1tbQ29tcG9uZW50XV1dSGVscGVyOjp6aXAoDQoJCQkJCQkkbWFpbl9wYXRoLCAkemlwUGF0aA0KCQkJCQkpKQ0KCQkJCQl7DQoJCQkJCQkvLyBub3cgcmVtb3ZlIHRoZSBwYWNrYWdlDQoJCQkJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6OnJlbW92ZUZvbGRlcigkbWFpbl9wYXRoKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgeG1sDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlWE1MKCYkdGFyZ2V0X2NsaWVudHMsICYkdGFyZ2V0cywgJiRsYW5ndWFnZSkNCgl7DQoJCSR4bWwgPSAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiAnPGV4dGVuc2lvbiB0eXBlPSJmaWxlIiB2ZXJzaW9uPSIzLjIiIG1ldGhvZD0idXBncmFkZSI+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxuYW1lPicgLiBQbGFjZWZpeDo6X2goJ0NvbXBvbmVudCcpIC4gJyAtICcgLiAkbGFuZ3VhZ2UgLiAnIExhbmd1YWdlIFBhY2s8L25hbWU+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxjcmVhdGlvbkRhdGU+JyAuIFBsYWNlZml4OjpfaCgnQlVJTEREQVRFJykgLiAnPC9jcmVhdGlvbkRhdGU+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxhdXRob3I+JyAuIFBsYWNlZml4OjpfaCgnQVVUSE9SJykgLiAnPC9hdXRob3I+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxhdXRob3JFbWFpbD4nIC4gUGxhY2VmaXg6Ol9oKCdBVVRIT1JFTUFJTCcpIC4gJzwvYXV0aG9yRW1haWw+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxhdXRob3JVcmw+JyAuIFBsYWNlZml4OjpfaCgnQVVUSE9SV0VCU0lURScpIC4gJzwvYXV0aG9yVXJsPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8Y29weXJpZ2h0PicgLiBQbGFjZWZpeDo6X2goJ0NPUFlSSUdIVCcpIC4gJzwvY29weXJpZ2h0Pic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8bGljZW5zZT4nIC4gUGxhY2VmaXg6Ol9oKCdMSUNFTlNFJykgLiAnPC9saWNlbnNlPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8dmVyc2lvbj4nIC4gUGxhY2VmaXg6Ol9oKCdBQ1RVQUxWRVJTSU9OJykgLiAnPC92ZXJzaW9uPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8ZGVzY3JpcHRpb24+JyAuICRsYW5ndWFnZSAuICcgTGFuZ3VhZ2UgUGFjayAtICcgLiBQbGFjZWZpeDo6X2goJ1NIT1JUX0RFU0NSSVBUSU9OJykgLiAnPC9kZXNjcmlwdGlvbj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPGZpbGVzZXQ+JzsNCgkJZm9yZWFjaCAoJHRhcmdldF9jbGllbnRzIGFzICR0YXJnZXRfY2xpZW50ID0+ICRmaWxlcykNCgkJew0KCQkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gJzxmaWxlcyBmb2xkZXI9IicgLiAkdGFyZ2V0X2NsaWVudCAuICciIHRhcmdldD0iJyAuICR0YXJnZXRzWyR0YXJnZXRfY2xpZW50XSAuICciPic7DQoJCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpDQoJCQl7DQoJCQkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gJzxmaWxlbmFtZT4nIC4gJGZpbGUgLiAnPC9maWxlbmFtZT4nOw0KCQkJfQ0KCQkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gJzwvZmlsZXM+JzsNCgkJfQ0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPC9maWxlc2V0Pic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuICc8L2V4dGVuc2lvbj4nOw0KDQoJCXJldHVybiAkeG1sOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgbmFtZQ0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMYW5ndWFnZU5hbWUoJiR0YWcpDQoJew0KCQlpZiAoIWlzc2V0KCR0aGlzLT5sYW5ndWFnZU5hbWVzWyR0YWddKSkNCgkJew0KCQkJaWYgKCgkbmFtZSA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbGFuZ3VhZ2UnLCAkdGFnLCAnbGFuZ3RhZycsICduYW1lJykpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VOYW1lc1skdGFnXSA9ICRuYW1lOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSR0aGlzLT5sYW5ndWFnZU5hbWVzWyR0YWddID0gJHRhZzsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ107DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSBhY3Rpb25zDQoJICogDQoJICogQHJldHVybiAgYXJyYXkNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFuZ0FjdGlvbnMoJiRmaWxlX25hbWUsICYkdGFnLCAmJGFyZWEsICYkdGFyZ2V0X2NsaWVudCkNCgl7DQoJCS8vIGNvbXBvbmVudCBleHRlbnRpb24gdHlwZQ0KCQlpZiAoc3RycG9zKCRmaWxlX25hbWUsICdjb21fJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkkdGFyZ2V0X2NsaWVudCA9ICdhZG1pbic7DQoJCQkkdGFyZ2V0ID0gJ2FkbWluaXN0cmF0b3IvbGFuZ3VhZ2UvJzsNCgkJCWlmIChzdHJwb3MoJGFyZWEsICdzaXRlJykgIT09IGZhbHNlKQ0KCQkJew0KCQkJCSR0YXJnZXRfY2xpZW50ID0gJ3NpdGUnOw0KCQkJCSR0YXJnZXQgPSAnbGFuZ3VhZ2UvJzsNCgkJCX0NCgkJCXJldHVybiBhcnJheSgNCgkJCQlhcnJheSgNCgkJCQkJJ3RhcmdldF9jbGllbnQnID0+ICR0YXJnZXRfY2xpZW50LA0KCQkJCQkndGFyZ2V0JyA9PiAkdGFyZ2V0IC4gJHRhZywNCgkJCQkJJ2ZpbGVfbmFtZScgPT4gJHRoaXMtPmdldExhbmd1YWdlRmlsZU5hbWUoJGZpbGVfbmFtZSwgJHRhZywgJGFyZWEpDQoJCQkJKQ0KCQkJKTsNCgkJfQ0KCQllbHNlaWYgKCdhZG1pbicgPT09ICR0YXJnZXRfY2xpZW50KQ0KCQl7DQoJCQkkdGFyZ2V0ID0gJ2FkbWluaXN0cmF0b3IvbGFuZ3VhZ2UvJzsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSR0YXJnZXQgPSAnbGFuZ3VhZ2UvJzsNCgkJfQ0KCQkvLyBtb2R1bGUvcGx1Z2luIGV4dGVuc2lvbiB0eXBlIChUT0RPIHdlIHJldHVybiBib3RoIGZvciBub3cpDQoJCXJldHVybiBhcnJheSgNCgkJCWFycmF5KA0KCQkJCSd0YXJnZXRfY2xpZW50JyA9PiAkdGFyZ2V0X2NsaWVudCwNCgkJCQkndGFyZ2V0JyA9PiAkdGFyZ2V0IC4gJHRhZywNCgkJCQknZmlsZV9uYW1lJyA9PiAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSkNCgkJCSksDQoJCQlhcnJheSgNCgkJCQkndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnQsDQoJCQkJJ3RhcmdldCcgPT4gJHRhcmdldCAuICR0YWcsDQoJCQkJJ2ZpbGVfbmFtZScgPT4gJHRoaXMtPmdldExhbmd1YWdlRmlsZU5hbWUoJGZpbGVfbmFtZSwgJHRhZywgJGFyZWEsICcuc3lzJykNCgkJCSkNCgkJKTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGxhbmd1YWdlIGZpbGUgbmFtZQ0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMYW5ndWFnZUZpbGVOYW1lKCYkZmlsZV9uYW1lLCAmJHRhZywgJiRhcmVhLCAkdHlwZSA9ICcnKQ0KCXsNCgkJLy8gY29tcG9uZW50IGV4dGVuc2lvbiB0eXBlDQoJCWlmIChzdHJwb3MoJGZpbGVfbmFtZSwgJ2NvbV8nKSAhPT0gZmFsc2UpDQoJCXsNCgkJCWlmIChzdHJwb3MoJGFyZWEsICdzeXMnKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJHR5cGUgPSAnLnN5cyc7DQoJCQl9DQoJCX0NCgkJLy8gZmlsZSBuYW1lDQoJCXJldHVybiAkdGFnIC4gJy4nIC4gJGZpbGVfbmFtZSAuICR0eXBlIC4gJy5pbmknOw0KCX0NCg0KCS8qKg0KCSAqIGNoZWNrIGlmIGEgdHJhbnNsYXRpb24gc2hvdWxkIGJlIGFkZGVkDQoJICogDQoJICogQHJldHVybiAgYm9vbA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzaG91bGRMYW5ndWFnZUJlQWRkZWQoJiR0YWcsICYkbGFuZ3VhZ2VTdHJpbmdzLCAmJHRvdGFsLA0KCQkmJGZpbGVfbmFtZQ0KCSkgew0KCQkvLyBvbmx5IGxvZyBtZXNzYWdlcyBmb3Igbm9uZSAkdGhpcy0+bGFuZ1RhZyB0cmFuc2xhdGlvbnMNCgkJaWYgKCR0aGlzLT5sYW5nVGFnICE9PSAkdGFnKQ0KCQl7DQoJCQkkbGFuZ1N0cmluZ05yICA9IGNvdW50KCRsYW5ndWFnZVN0cmluZ3MpOw0KCQkJJGxhbmdTdHJpbmdTdW0gPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmJjbWF0aCgNCgkJCQknbXVsJywgJGxhbmdTdHJpbmdOciwgMTAwDQoJCQkpOw0KCQkJJHBlcmNlbnRhZ2UgICAgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmJjbWF0aCgNCgkJCQknZGl2JywgJGxhbmdTdHJpbmdTdW0sICR0b3RhbA0KCQkJKTsNCgkJCSRzdHJpbmdOQW1lICAgID0gKCRsYW5nU3RyaW5nTnIgPT0gMSkgPyAnKHN0cmluZyAnDQoJCQkJLiAkdGFnIC4gJyB0cmFuc2xhdGVkKScNCgkJCQk6ICcoc3RyaW5ncyAnIC4gJHRhZyAuICcgdHJhbnNsYXRlZCknOw0KDQoJCQkvLyBmb3JjZSBsb2FkIGlmIGRlYnVnIGxpbmVzIGFyZSBhZGRlZA0KCQkJaWYgKCEkdGhpcy0+ZGVidWdMaW5lbnIpDQoJCQl7DQoJCQkJLy8gY2hlY2sgaWYgd2Ugc2hvdWxkIGluc3RhbGwgdGhpcyB0cmFuc2xhdGlvbg0KCQkJCWlmICgkcGVyY2VudGFnZSA8ICR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGQpDQoJCQkJew0KCQkJCQkvLyBkb250IGFkZA0KCQkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5MYW5ndWFnZS5NZXNzYWdlcycpLT5zZXQoImV4Y2x1ZGUuJGZpbGVfbmFtZSIsDQoJCQkJCQknPGI+JyAuICR0b3RhbCAuICc8L2I+KHRvdGFsICcNCgkJCQkJCS4gJHRoaXMtPmxhbmdUYWcgLiAnIHN0cmluZ3MpIG9ubHkgPGI+Jw0KCQkJCQkJLiAkbGFuZ1N0cmluZ05yIC4gJzwvYj4nIC4gJHN0cmluZ05BbWUNCgkJCQkJCS4gJyA9ICcgLiAkcGVyY2VudGFnZQ0KCQkJCQkpOw0KDQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIHNob3cgaWYgaXQgd2FzIGFkZGVkIGFzIHdlbGwNCgkJCUNGYWN0b3J5OjpfKCdDb21waWxlci5CdWlsZGVyLkxhbmd1YWdlLk1lc3NhZ2VzJyktPnNldCgiaW5jbHVkZS4kZmlsZV9uYW1lIiwNCgkJCQknPGI+JyAuICR0b3RhbCAuICc8L2I+KHRvdGFsICcNCgkJCQkuICR0aGlzLT5sYW5nVGFnIC4gJyBzdHJpbmdzKSBhbmQgPGI+Jw0KCQkJCS4gJGxhbmdTdHJpbmdOciAuICc8L2I+JyAuICRzdHJpbmdOQW1lIC4gJyA9ICcNCgkJCQkuICRwZXJjZW50YWdlDQoJCQkpOw0KCQl9DQoNCgkJcmV0dXJuIHRydWU7DQoJfQ0K', '[[[Component]]] Language Packaging', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyBsb2FkIHRoZSBoZWxwZXIgY2xhc3MNCgkJCUpMb2FkZXI6OnJlZ2lzdGVyKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb21wb25lbnRdXV0vaGVscGVycy9bW1tjb21wb25lbnRdXV0ucGhwJyk7DQoJCQkvLyBibG9jayBpbnN0YWxsDQoJCQkkYmxvY2tJbnN0YWxsID0gdHJ1ZTsNCgkJCS8vIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIEpDQg0KCQkJJG1hbmlmZXN0ID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjptYW5pZmVzdCgpOw0KCQkJaWYgKGlzc2V0KCRtYW5pZmVzdC0+dmVyc2lvbikgJiYgc3RycG9zKCRtYW5pZmVzdC0+dmVyc2lvbiwgJy4nKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSB2ZXJzaW9uDQoJCQkJJGpjYlZlcnNpb24gPSBleHBsb2RlKCcuJywgJG1hbmlmZXN0LT52ZXJzaW9uKTsNCgkJCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgSkNCIDIuMTAuMTMgb3IgaGlnaGVyIGluc3RhbGxlZA0KCQkJCWlmIChjb3VudCgkamNiVmVyc2lvbikgPT0gMyAmJiAoKCRqY2JWZXJzaW9uWzBdID09IDIgJiYgJGpjYlZlcnNpb25bMV0gPj0gMTAgJiYgKCgkamNiVmVyc2lvblsxXSA9PSAxMCAmJiAkamNiVmVyc2lvblsyXSA+PSAxMykgfHwgKCRqY2JWZXJzaW9uWzFdID4gMTApKSkgfHwgJGpjYlZlcnNpb25bMF0gPj0gMykpDQoJCQkJew0KCQkJCQkkYmxvY2tJbnN0YWxsID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gYWxsb3cgaW5zdGFsbCBpZiBhbGwgY29uZGl0aW9ucyBhcmUgbWV0DQoJCQlpZiAoJGJsb2NrSW5zdGFsbCkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnUGxlYXNlIHVwZ3JhZGUgdG8gSkNCIDIuMTAuMTMgb3IgaGlnaGVyIGJlZm9yZSBpbnN0YWxsaW5nIHRoaXMgcGx1Z2luLicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.2.0', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"35\"},\"property_selection2\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Packaging', '', 1, '', '', 1, '2019-10-12 22:36:16', '2023-12-30 09:43:54', 83, '', 2),
(8, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to integrate componentbuilder with [[[curriculumbuilder_link_name]]]. To activate it you must first enable it here.', '{}', '3b7fd798-af89-4cd9-b85a-1c43b83ec655', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOw==', 3, '{}', 'CS8qKg0KCSAqIERhdGFiYXNlIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBEYXRhYmFzZURyaXZlcg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRkYjsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqLw0KCXByb3RlY3RlZCAgJGFwcDsNCg0KCS8qKg0KCSAqIExvY2tlZCBmaWxlbiBuYW1lDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGZpbGVMb2NrZWQ7DQoNCgkvKioNCgkgKiBIaWRkZW4gZmlsZSBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGhpZGVuRmlsZTsNCg0KCS8qKg0KCSAqIE9wZW4gZmlsZSBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJG9wZW5GaWxlOw0KDQoJLyoqDQoJICogSGlkZGVuIGltYWdlIGZvbGRlciBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGhpZGVuUGFnZXNGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgcGFnZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgICRwYWdlczsNCg0KCS8qKg0KCSAqIEZpbGUgTmFtZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgICRmaWxlTmFtZSA9IGZhbHNlOw0KDQoJLyoqDQoJICogRmlsZSBFeHRlbnNpb24NCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICovDQoJcHJvdGVjdGVkICAkZmlsZUV4dGVuc2lvbiA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhpcyBpcyBhIGV2ZW50IHRvIGJ1aWxkIHRoZSB2aWV3IGFyZWENCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRjb250ZXh0ICBUaGUgY29udGV4dCBvZiB0aGUgY29udGVudCBiZWluZyBwYXNzZWQgdG8gdGhlIHBsdWdpbi4NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbltbW2NvbXBvbmVudF9hY3JvbnltXV1dUHJvY2Vzc2luZ1JlcXVlc3QoJGNvbnRleHQsICRhamF4LCAmJHBhZ2UsICYkdGFyZ2V0LCAmJHJlc3VsdCkNCgl7DQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5zdGFnZScgPT09ICRjb250ZXh0DQoJCQkmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpDQoJCQkmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGFnZSkNCgkJCSYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR0YXJnZXQpKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIHVzZXIgb2JqZWN0DQoJCQkkdXNlciA9IEZhY3Rvcnk6OmdldFVzZXIoKTsNCgkJCS8vIGdldCBwYWdlIHZhbHVlcw0KCQkJJHBhZ2UgPSBqc29uX2RlY29kZSgkcGFnZSk7DQoJCQkvLyBnZXQgcGFnZSB2YWx1ZXMNCgkJCSR0YXJnZXQgPSBqc29uX2RlY29kZSgkdGFyZ2V0KTsNCgkJCS8vIHNhbml0aXphIHN0cmluZ3MNCgkJCWlmIChpc3NldCgkcGFnZS0+bmFtZSkgJiYgaXNzZXQoJHBhZ2UtPmV4dHJ1ZGUpICYmIGlzc2V0KCRwYWdlLT5pbWFnZSkgJiYgaXNzZXQoJHBhZ2UtPmh0bWwpICYmIGlzc2V0KCRwYWdlLT5zdmcpDQoJCQkJJiYgMSA9PSAkcGFnZS0+ZXh0cnVkZSAmJiBpc3NldCgkdGFyZ2V0LT51c2VyKSAmJiBpc3NldCgkdGFyZ2V0LT50eXBlKSAmJiAoJHRhcmdldC0+dXNlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkdGFyZ2V0LT51c2VyKSkgIT09IGZhbHNlDQoJCQkJJiYgJHRhcmdldC0+dXNlciA9PSAkdXNlci0+Z2V0KCdpZCcpDQoJCQkJJiYgaXNzZXQoJHRhcmdldC0+bmFtZSkgJiYgaXNzZXQoJHRhcmdldC0+ZmlsZW5hbWUpICYmICgkdGFyZ2V0LT5maWxlbmFtZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkdGFyZ2V0LT5maWxlbmFtZSkpICE9PSBmYWxzZQ0KCQkJCSYmIGlzc2V0KCR0YXJnZXQtPmd1aWQpICYmICgkdGFyZ2V0LT5ndWlkID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpkZWNyeXB0KCR0YXJnZXQtPmd1aWQpKSAhPT0gZmFsc2UgJiYgW1tbQ29tcG9uZW50XV1dSGVscGVyOjp2YWxpZEdVSUQoJHRhcmdldC0+Z3VpZCkNCgkJCQkmJiBzdHJwb3MoJHRhcmdldC0+ZmlsZW5hbWUsICdWRE0nKSAhPT0gZmFsc2UgJiYgc3RycG9zKCRwYWdlLT5uYW1lLCAnX3BhZ2UnKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gbG9hZCB0aGUgZmlsZSBjbGFzcw0KCQkJCWppbXBvcnQoJ2pvb21sYS5maWxlc3lzdGVtLmZpbGUnKTsNCgkJCQlqaW1wb3J0KCdqb29tbGEuZmlsZXN5c3RlbS5mb2xkZXInKTsNCgkJCQkvLyBub3cgbGV0cyBnZXQgdGhlIGZpbGUgZGF0YQ0KCQkJCSR0aGlzLT5oaWRlblBhdGggPSBydHJpbShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZvbGRlclBhdGgoJ3BhdGgnLCAnaGlkZGVuZmlsZXBhdGgnKSwgJy8nKTsNCgkJCQkkdGhpcy0+aGlkZW5GaWxlID0gJHRoaXMtPmhpZGVuUGF0aCAuICcvJyAuICR0YXJnZXQtPmZpbGVuYW1lOw0KCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdA0KCQkJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgPSAkdGhpcy0+aGlkZW5QYXRoIC4gJy8ucGFnZXNfJyAuIHRyaW0oJHRhcmdldC0+ZmlsZW5hbWUsICcuJyk7DQoJCQkJCS8vIG1ha2UgcGF0aCBzYWZlDQoJCQkJCSR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyID0gSkZvbGRlcjo6bWFrZVNhZmUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJCQkvLyBkb2VzIHRoZSBpbWFnZSBleGlzdA0KCQkJCQlpZiAoSkZvbGRlcjo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKSAmJiBKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJy4nIC4gJHBhZ2UtPm5hbWUpKQ0KCQkJCQl7DQoJCQkJCQkvLyBzZXQgdGhlIGRhdGVzDQoJCQkJCQkkZGF0ZSA9IEZhY3Rvcnk6OmdldERhdGUoKS0+dG9TcWwoKTsNCgkJCQkJCS8vIGdldCBbW1tjdXJyaWN1bHVtYnVpbGRlcl1dXSBoZWxwZXIgY2xhc3MNCgkJCQkJCSRbW1tDdXJyaWN1bHVtYnVpbGRlcl1dXUhlbHBlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0SGVscGVyQ2xhc3MoJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dJyk7DQoJCQkJCQkvLyBidWlsZCB0aGUgcmVzb3VyY2UgYW5kIGtlZXAgdGhlIEdVSUQgcmVhZHkgaWYgbW9yZSBwYWdlcyBpcyB0byBiZSBidWlsZA0KCQkJCQkJaWYgKCgkcmVzb3VyY2UgPSAkW1tbQ3VycmljdWx1bWJ1aWxkZXJdXV1IZWxwZXI6OmdldFZhcigncmVzb3VyY2UnLCAkdGFyZ2V0LT5ndWlkLCAnZ3VpZCcsICdpZCcpKSA9PT0gZmFsc2UpDQoJCQkJCQl7DQoJCQkJCQkJLy8gc2V0IHRoZSBkYXRhIGZvciB0aGUgcmVzb3VyY2UNCgkJCQkJCQkkZGF0YSA9IGFycmF5KA0KCQkJCQkJCQknaWQnID0+IDAsDQoJCQkJCQkJCSdndWlkJyA9PiAkdGFyZ2V0LT5ndWlkLA0KCQkJCQkJCQknbmFtZScgPT4gJHRhcmdldC0+bmFtZSwNCgkJCQkJCQkJJ3B1Ymxpc2hlZCcgPT4gMCwNCgkJCQkJCQkJJ3ZlcnNpb24nID0+IDEsDQoJCQkJCQkJCSdjcmVhdGVkX2J5JyA9PiAkdGFyZ2V0LT51c2VyLA0KCQkJCQkJCQknY3JlYXRlZCcgPT4gJGRhdGUsDQoJCQkJCQkJCSd0eXBlJyA9PiAkdGFyZ2V0LT50eXBlKTsNCgkJCQkJCQkkcmVzb3VyY2VNb2RlbCA9ICRbW1tDdXJyaWN1bHVtYnVpbGRlcl1dXUhlbHBlcjo6Z2V0TW9kZWwoJ3Jlc291cmNlJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY3VycmljdWx1bWJ1aWxkZXJdXV0nKTsNCgkJCQkJCQlpZiAoISRyZXNvdXJjZU1vZGVsLT5zYXZlKCRkYXRhKSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIGRvIG5vdCBjb250aW51ZSB0byBzZXQgdGhlIHBhZ2VzIGlmIHdlIGNvdWxkIG5vdCBjcmVhdGUgdGhlIHJlc291cmNlDQoJCQkJCQkJCSR0YXJnZXQtPmd1aWQgPSBudWxsOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgcmVzb3VyY2UNCgkJCQkJCWlmIChbW1tDb21wb25lbnRdXV1IZWxwZXI6OnZhbGlkR1VJRCgkdGFyZ2V0LT5ndWlkKSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBnZXQgdGhlIFBhZ2UgTW9kZWwNCgkJCQkJCQkkcGFnZU1vZGVsID0gJFtbW0N1cnJpY3VsdW1idWlsZGVyXV1dSGVscGVyOjpnZXRNb2RlbCgncGFnZScsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dJyk7DQoJCQkJCQkJLy8gc2V0IHRoZSBkYXRhIGZvciB0aGUgcGFnZQ0KCQkJCQkJCSRkYXRhID0gYXJyYXkoDQoJCQkJCQkJCSdpZCcgPT4gMCwNCgkJCQkJCQkJJ251bWJlcicgPT4gKGludCkgJHBhZ2UtPm5hbWUsDQoJCQkJCQkJCSdndWlkJyA9PiAnJywNCgkJCQkJCQkJJ3Jlc291cmNlJyA9PiAkdGFyZ2V0LT5ndWlkLA0KCQkJCQkJCQknbmFtZScgPT4gJHRhcmdldC0+bmFtZSwNCgkJCQkJCQkJJ2NvbnRlbnQnID0+ICcnLA0KCQkJCQkJCQkncHVibGlzaGVkJyA9PiAwLA0KCQkJCQkJCQkndmVyc2lvbicgPT4gMSwNCgkJCQkJCQkJJ2NyZWF0ZWRfYnknID0+ICR0YXJnZXQtPnVzZXIsDQoJCQkJCQkJCSdjcmVhdGVkJyA9PiAkZGF0ZSwNCgkJCQkJCQkJJ3R5cGUnID0+ICR0YXJnZXQtPnR5cGUpOw0KCQkJCQkJCS8vIHNldCB0aGUgaW1hZ2UNCgkJCQkJCQlpZiAoMSA9PSAkcGFnZS0+aW1hZ2UpDQoJCQkJCQkJew0KCQkJCQkJCQkvLyBnZXQgY29udGVudA0KCQkJCQkJCQkkZGF0YVsnY29udGVudCddID0gJzxpbWcgc3JjPSInIC4gJHRoaXMtPmdldExpbmsoJy4nLiRwYWdlLT5uYW1lKSAuICciIGFsdD0iJyAuICRwYWdlLT5uYW1lIC4gJyI+JzsNCgkJCQkJCQl9DQoJCQkJCQkJLy8gc2V0IHRoZSBwYWdlIGFzIEhUTUwNCgkJCQkJCQllbHNlaWYgKDEgPT0gJHBhZ2UtPmh0bWwpDQoJCQkJCQkJew0KCQkJCQkJCQkvLyBnZXQgY29udGVudA0KCQkJCQkJCQkkdGhpcy0+Z2V0SFRNTEZyb21QREYoJGRhdGEsIChpbnQpICRwYWdlLT5uYW1lKTsNCgkJCQkJCQl9DQoJCQkJCQkJLy8gc2V0IHRoZSBwYWdlIGFzIEhUTUwNCgkJCQkJCQllbHNlaWYgKDEgPT0gJHBhZ2UtPnN2ZykNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIGdldCBjb250ZW50DQoJCQkJCQkJCSR0aGlzLT5nZXRTVkdGcm9tUERGKCRkYXRhLCAoaW50KSAkcGFnZS0+bmFtZSk7DQoJCQkJCQkJfQ0KCQkJCQkJCS8vIHNhdmUgdGhlIHBhZ2UgaWYgYW55IG9mIHRoZSBvcHRpb25zIHdhcyBzZXQNCgkJCQkJCQlpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGRhdGFbJ2NvbnRlbnQnXSkgJiYgKDEgPT0gJHBhZ2UtPmh0bWwgfHwgMSA9PSAkcGFnZS0+c3ZnIHx8IDEgPT0gJHBhZ2UtPmltYWdlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIHNhdmUgdGhlIHBhZ2UNCgkJCQkJCQkJaWYgKCRwYWdlTW9kZWwtPnNhdmUoJGRhdGEpKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgYSBldmVudCB0byBidWlsZCB0aGUgdmlldyBhcmVhDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIHRoZSBwbHVnaW4uDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25bW1tjb21wb25lbnRfYWNyb255bV1dXUJ1aWxkVmlldygkY29udGV4dCwgJHZpZXcpDQoJew0KCQlpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uc3RhZ2UnID09PSAkY29udGV4dCAmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpKQ0KCQl7DQoJCQkvLyBleHRyYWN0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYgYW5kIGxvYWQgdGhlaXIgcGF0aHMgdG8gbWVtb3J5DQoJCQlpZiAoJHRoaXMtPnNldFBhZ2VzKCkgJiYgJHRoaXMtPmZpbGVOYW1lKQ0KCQkJew0KCQkJCS8vIGJ1aWxkIHRoZSBzZWxlY3Rpb24gYXJlYQ0KCQkJCWlmICgoJHZpZXctPl9kaXNwbGF5X3ZpZXdfaGVhZGVyID0gJHRoaXMtPmJ1aWxkUmVzb3VyY2VBcmVhKCkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCS8vIGJ1aWxkIHRoZSBzZWxlY3Rpb24gYXJlYQ0KCQkJCQkkdmlldy0+X2Rpc3BsYXlfdmlldyA9ICR0aGlzLT5idWlsZFNlbGVjdGlvbkFyZWEoKTsNCgkJCQkJLy8gYnVpbGQgdGhlIGphdmFzY3JpcHQNCgkJCQkJJHZpZXctPl9kaXNwbGF5X3ZpZXdfZm9vdGVyID0gJHRoaXMtPmJ1aWxkSmF2YVNjcmlwdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgYSBnZXQgaXRlbSBldmVudCB0byBpbmplY3QgY3VzdG9tIGJlaGF2aW9yLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IGJlaW5nIHBhc3NlZCB0byB0aGUgcGx1Z2luLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uW1tbY29tcG9uZW50X2Fjcm9ueW1dXV1HZXRJdGVtKCRjb250ZXh0LCAuLi4kYXJncykNCgl7DQoJCS8vIGFjdGlvbiB0byBiZSB0YWtlbiB3aXRoIHdlIGhhdmUgZmlsZSBpdGVtDQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5maWxlJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiBpc3NldCgkYXJnc1swXSkNCgkJCS8vIGp1c3QgZm9yIFBERidzIGZvciBub3cNCgkJCSYmIGlzc2V0KCRhcmdzWzBdLT5maWxlX2V4dGVuc2lvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGFyZ3NbMF0tPmZpbGVfZXh0ZW5zaW9uKSAmJiAncGRmJyA9PT0gc3RydG9sb3dlcigkYXJnc1swXS0+ZmlsZV9leHRlbnNpb24pKQ0KCQl7DQoJCQlpZiAoKCRrZXkgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJGFyZ3NbMF0tPm1haW5fZmlsZSkpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkka2V5ID0gdXJsZW5jb2RlKCRrZXkpOw0KCQkJCS8vICRhcmdzWzBdID09ICRpdGVtDQoJCQkJJGFyZ3NbMF0tPm9uY2xpY2sgLj0gIm9wZW5QZGZQYXRoU2VsZWN0aW9uKCIgLiAoaW50KSAkYXJnc1swXS0+aWQgLiAiLCAnIiAuICRhcmdzWzBdLT5maWxlX25hbWUgLiAiJywgJyIgLiAka2V5IC4gIicpIjsNCgkJCQkkYXJnc1swXS0+bGluayA9ICcjJzsNCgkJCX0NCgkJfQ0KCQllbHNlaWYgKCdjb21fW1tbY29tcG9uZW50XV1dLnN0YWdlJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiAkYXJnc1sxXSA+IDApDQoJCXsNCgkJCS8vICRhcmdzWzBdID09ICR0aGlzDQoJCQkvLyAkYXJnc1sxXSA9PSAkcGsNCgkJCS8vICRhcmdzWzJdID09ICRxdWVyeQ0KCQkJLy8gJGFyZ3NbM10gPT0gJGRiDQoJCQlpZiAoKCRicmlkZ2UgPSAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0KCdicmlkZ2UnLCBmYWxzZSwgJ2Jhc2U2NCcpKSAhPT0gZmFsc2UNCgkJCQkmJiAoJGJyaWRnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkYnJpZGdlKSkgIT09IGZhbHNlDQoJCQkJJiYgJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnJlc291cmNlLnBkZicgPT09ICRicmlkZ2UNCgkJCQkmJiAoJHRoaXMtPmZpbGVMb2NrZWQgPSAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0KCdrZXknLCBmYWxzZSwgJ2Jhc2U2NCcpKSAhPT0gZmFsc2UNCgkJCQkmJiAoJGZpbGUgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmRlY3J5cHQoJHRoaXMtPmZpbGVMb2NrZWQpKSAhPT0gZmFsc2UNCgkJCQkmJiBzdHJwb3MoJGZpbGUsICdWRE0nKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gbG9hZCB0aGUgZmlsZSBjbGFzcw0KCQkJCWppbXBvcnQoJ2pvb21sYS5maWxlc3lzdGVtLmZpbGUnKTsNCgkJCQlqaW1wb3J0KCdqb29tbGEuZmlsZXN5c3RlbS5mb2xkZXInKTsNCgkJCQkvLyBub3cgbGV0cyBnZXQgdGhlIGZpbGUgZGF0YQ0KCQkJCSR0aGlzLT5oaWRlblBhdGggPSBydHJpbShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZvbGRlclBhdGgoJ3BhdGgnLCAnaGlkZGVuZmlsZXBhdGgnKSwgJy8nKTsNCgkJCQkkdGhpcy0+aGlkZW5GaWxlID0gJHRoaXMtPmhpZGVuUGF0aCAuICcvJyAuICRmaWxlOw0KCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdA0KCQkJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgPSAkdGhpcy0+aGlkZW5QYXRoIC4gJy8ucGFnZXNfJyAuIHRyaW0oJGZpbGUsICcuJyk7DQoJCQkJCS8vIGV4dHJhY3QgdGhlIHBhZ2VzIGZyb20gdGhlIFBERiBhbmQgbG9hZCB0aGVpciBwYXRocyB0byBtZW1vcnkNCgkJCQkJaWYgKCR0aGlzLT5zZXRQYWdlcygpKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+ZmlsZU5hbWUgPSBleHBsb2RlKCdWRE0nLCAkZmlsZSlbMV07DQoJCQkJCQkkdGhpcy0+X2ZpbGVOYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdGhpcy0+ZmlsZU5hbWUsICdXJywgJ18nLCBmYWxzZSwgZmFsc2UpOw0KCQkJCQkJJHRoaXMtPmZpbGVFeHRlbnNpb24gPSBleHBsb2RlKCdfJywgJGZpbGUpWzJdOw0KCQkJCQkJJHRoaXMtPmZpbGVOYW1lIC49ICcuJyAuICR0aGlzLT5maWxlRXh0ZW5zaW9uOw0KCQkJCQkJJHRoaXMtPmd1aWQgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OkdVSUQoKTsNCgkJCQkJCXJldHVybiB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1RoZSBQREYgZmlsZSBjb3VsZCBub3QgYmUgZm91bmQsIHBsZWFzZSB0cnkgYWdhaW4hJyksICdlcnJvcicpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyBhIHNldCBEb2N1bWVudCBldmVudCB0byBpbmplY3QgY3VzdG9tIGJlaGF2aW9yLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IGJlaW5nIHBhc3NlZCB0byB0aGUgcGx1Z2luLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uW1tbY29tcG9uZW50X2Fjcm9ueW1dXV1Eb2N1bWVudCgkY29udGV4dCwgJHZpZXcpDQoJew0KCQkvLyBhY3Rpb24gdG8gYmUgdGFrZW4gd2l0aCBmb2xkZXJzIGRvY3VtZW50DQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5mb2xkZXJzJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiBpc3NldCgkdmlldy0+ZG9jdW1lbnQpKQ0KCQl7DQoJCQkvLyBidWlsZCBicmlkZ2Uga2V5IChvbmx5IGNvbnRpbnVlIGlmIHdlIGNhbiBjcmVhdGUgYSBrZXkpDQoJCQlpZiAoKCRrZXkgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnJlc291cmNlLnBkZicpKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJGtleSA9IHVybGVuY29kZSgka2V5KTsNCgkJCQkvLyBhZGQgSmF2YVNjcmlwdCB0byBkb2N1bWVudA0KCQkJCSR2aWV3LT5kb2N1bWVudC0+YWRkU2NyaXB0RGVjbGFyYXRpb24oImZ1bmN0aW9uIG9wZW5QZGZQYXRoU2VsZWN0aW9uKGZpbGVJRCwgZmlsZU5hbWUsIGZpbGVLZXkpIHsNCgkJCQkJVUlraXQubW9kYWwuY29uZmlybSgnV291bGQgeW91IGxpa2UgdG8gdXNlIDxiPicrZmlsZU5hbWUrJzwvYj4gaW4gW1tbY3VycmljdWx1bWJ1aWxkZXJfbGlua19uYW1lXV1dIGFzIGEgcmVzb3VyY2U/JykudGhlbihmdW5jdGlvbiAoKSB7DQoJCSAgCQkJCWpRdWVyeSgnI1tbW2NvbXBvbmVudF1dXV9sb2FkZXInKS5odG1sKCc8YnIgLz48Y2VudGVyPjxkaXYgY2xhc3M9XCd1ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1yaWdodCB1ay1hbmltYXRpb24tc2NhbGUtdXAgdWstYm94LXNoYWRvdy1ib3R0b21cJz48aDI+IiAuIFRleHQ6Ol8oJ1dlIGFyZSBleHRyYWN0aW5nIHRoZSBwYWdlcyBmcm9tIHRoZSBQREYsIHRoaXMgbWF5IHRha2UgYSBtb21lbnQuPGJyIC8+UGxlYXNlIHdhaXQgYW5kIGRvIG5vdCByZWRpcmVjdCBhd2F5IGZyb20gdGhpcyBwYWdlIScpIC4gIjwvaDI+PC9kaXY+PC9jZW50ZXI+Jyk7DQoJCQkJCQlqUXVlcnkoJyNsb2FkaW5nJykuc2hvdygpOw0KCQkgIAkJCQl3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdpbmRleC5waHA/b3B0aW9uPWNvbV9bW1tjb21wb25lbnRdXV0mdmlldz1zdGFnZSZicmlkZ2U9IiAuICRrZXkgLiAiJmtleT0nICsgZmlsZUtleSArICcmaWQ9JyArIGZpbGVJRDsNCgkJIAkgIAkJfSk7DQoJCQkJfSIpOw0KCQkJfQ0KCQl9DQoJCWVsc2VpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uc3RhZ2UnID09PSAkY29udGV4dCAmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpICYmICR0aGlzLT5maWxlTmFtZSAmJiBpc3NldCgkdmlldy0+ZG9jdW1lbnQpKQ0KCQl7DQoJCQkvLyAgd2UgdXBkYXRlIHRoZSBoZWFkaW5nLCB0aXRsZSBhbmQgaWNvbg0KCQkJJHZpZXctPmRvY3VtZW50LT5zZXRUaXRsZShUZXh0OjpfKCdFeHRydWRlJykgLiAnICcgLiAkdGhpcy0+ZmlsZU5hbWUpOw0KCQkJSlRvb2xiYXJIZWxwZXI6OnRpdGxlKFRleHQ6Ol8oJ0V4dHJ1ZGUnKSAuICcgJyAuICR0aGlzLT5maWxlTmFtZSwgJ2Fycm93LXVwLTQnKTsNCgkJfQ0KCX0NCgkJCQkJCS8vIHdlIGxlYXZlIHRoaXMgb3V0IGZvciBub3cuICciIC4gJGFyZ3NbMF0tPmxpbmsgLiAiJywgDQoJCQkJCQkvLyAsIGZ1bmN0aW9uICgpIHsNCgkJCQkJCS8vIFVJa2l0Lm1vZGFsLmNvbmZpcm0oJ1dvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlIGRvd25sb2FkaW5nIDxiPicrZmlsZU5hbWUrJzwvYj4/JykudGhlbihmdW5jdGlvbiAoKSB7DQoJCSAgCQkJCS8vCXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbGluazsNCgkJIAkgIAkJCS8vIH0sIGZ1bmN0aW9uICgpIHsNCgkJCQkJCS8vCVVJa2l0Lm1vZGFsLmFsZXJ0KCc8aDM+T2theSBzbyB3aHkgZGlkIHlvdSBjbGljayBvbiB0aGUgZmlsZT88L2gzPjxwPkhtbW0geW91IG11c3QgaGF2ZSBiZWVuIGEgbGl0dGxlIGN1cmlvdXMgaG93IHRoaW5ncyB3b3JrIEkgc3VwcG9zZS48L3A+PGg0PlZlcnkgd2VsbCBlbmpveSE8L2g0PicpOw0KCQkgICAJCQkJLy8gfSk7DQoJCSAgIAkJCQkvLyB9KTsNCg0KCS8qKg0KCSAqIFNldCB0aGUgcGFnZXMgbGlua3MNCgkgKg0KCSAqDQoJICogQHJldHVybiAgYXJyYXkgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFBhZ2VzKCkNCgl7DQoJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikpDQoJCXsNCgkJCS8vIG1ha2UgcGF0aCBzYWZlDQoJCQkkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciA9IEpGb2xkZXI6Om1ha2VTYWZlKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKTsNCgkJCS8vIGNoZWNrIGlmIHRoZSBwYXRoIGV4aXN0DQoJCQlpZiAoIUpGb2xkZXI6OmV4aXN0cygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikpDQoJCQl7DQoJCQkJLy8gY3JlYXRlIHRoZSBwYWdlcyBmb2xkZXINCgkJCQlKRm9sZGVyOjpjcmVhdGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJfQ0KCQkJLy8ganVzdCBsb2FkIHRoZWlyIHBhdGhzIHRvIG1lbW9yeQ0KCQkJcmV0dXJuICR0aGlzLT5nZXRQYWdlcygpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHBhZ2VzIGxpbmtzDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5IG9uIHN1Y2Nlc3MNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRQYWdlcygkdHJ5ID0gdHJ1ZSkNCgl7DQoJCS8vIGFsd2F5cyByZW1vdmUgdGhlIG9wZW4gUERGIGlmIGZvdW5kDQoJCWlmIChpc3NldCgkdGhpcy0+b3BlbkZpbGUpICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5vcGVuRmlsZSkpDQoJCXsNCgkJCSR0aGlzLT5vcGVuRmlsZSA9ICcnOw0KCQl9DQoJCS8vIGNoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGVtIGxvYWRlZA0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPnBhZ2VzKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJLy8gY2hlY2sgaWYgaXQgbm93IGV4aXN0DQoJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikgJiYgSkZvbGRlcjo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKSkNCgkJew0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBsb2FkIGFsbCB0aGUgcGFnZXMgaW4gdGhpcyBwYXRoDQoJCQkkdGhpcy0+cGFnZXMgPSBKRm9sZGVyOjpmaWxlcygnLicsICdfcGFnZScsIGZhbHNlLCB0cnVlLCBhcnJheSgpLCBhcnJheSgpKTsNCgkJCS8vIGdvIHRvIHRoYXQgam9vbWxhIGZvbGRlcg0KCQkJY2hkaXIoJGpvb21sYSk7DQoJCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGFueQ0KCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5wYWdlcykpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCQkvLyBleHRyYWN0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYNCgkJCWlmICgkdHJ5KQ0KCQkJew0KCQkJCXJldHVybiAkdGhpcy0+Z2V0UGFnZXNGcm9tUERGKCk7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhIGh0bWwgcGFnZSBmcm9tIFBERg0KCSAqDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SFRNTEZyb21QREYoJiRkYXRhLCAkbnIpDQoJew0KCQlpZiAoYHdoaWNoIHBkZnRvaHRtbGApDQoJCXsNCgkJCS8vIG9wZW4gdGhlIFBERg0KCQkJJHRoaXMtPm9wZW5QREYoKTsNCg0KCQkJJG5hbWUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpyYW5kb20oMjApOw0KCQkJJHRlbXBPcGVuRmlsZSA9ICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUgLiAnLnBkZic7DQoNCgkJCS8vIHdlIGhhdmUgdG8gcGxhY2UgdGhlIG9wZW5lZCBmaWxlIG9uIHRoZSBkcml2ZQ0KCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRlbXBPcGVuRmlsZSwgJHRoaXMtPm9wZW5GaWxlKTsNCg0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBub3cgd2UgcnVuIHRoZSBjb21tYW5kDQoJCQlzaGVsbF9leGVjKCJwZGZ0b2h0bWwgLWYgJG5yIC1sICRuciAtcCAtYyAtcyAtbm9mcmFtZXMgLWZvbnRmdWxsbmFtZSAtZm10IGpwZyAkbmFtZS5wZGYgJG5hbWUiKTsNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoNCgkJCS8vIGdldCB0aGUgZG9tIGRvY3VtZW50IGNsYXNzDQoJCQkkaHRtbCA9IG5ldyBET01Eb2N1bWVudCgpOw0KDQoJCQkvLyBnZXQgdGhlIGh0bWwNCgkJCSRodG1sLT5sb2FkSFRNTEZpbGUoIiRuYW1lLmh0bWwiKTsNCgkJCSRpbWFnZV9uYW1lID0gJG5hbWUgLiBzdHJfcGFkKChzdHJpbmcpJG5yLCAzLCAnMCcsIFNUUl9QQURfTEVGVCk7DQoJCQkvLyBsb2FkIHRoZSBpbWFnZQ0KCQkJJGltYWdlX2RhdGEgPSBmaWxlX2dldF9jb250ZW50cygiJGltYWdlX25hbWUuanBnIik7DQoJCQkkaW1hZ2VfZGF0YSA9IExpYnJhcnlkYXRhYmFzZUhlbHBlcjo6ZW5jcnlwdCgkaW1hZ2VfZGF0YSk7DQoJCQkkaW1hZ2VfbGluayA9ICR0aGlzLT5nZXRMaW5rKCRpbWFnZV9uYW1lKTsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6d3JpdGVGaWxlKCRpbWFnZV9uYW1lLCB3b3Jkd3JhcCgkaW1hZ2VfZGF0YSwgMTI4LCAiXG4iLCB0cnVlKSk7DQoNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoIiRuYW1lLmh0bWwiKTsNCgkJCUpGaWxlOjpkZWxldGUoIiRpbWFnZV9uYW1lLmpwZyIpOw0KDQoJCQkvLyBnbyB0byB0aGF0IGpvb21sYSBmb2xkZXINCgkJCWNoZGlyKCRqb29tbGEpOw0KDQoJCQkvLyBleHRydWRlIHRoZSBodG1sDQoJCQkkZGl2cyA9ICRodG1sLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7DQoJCQkkc3R5bGVzID0gJGh0bWwtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpOw0KCQkJLy8gbG9hZCB0aGUgYmFja2dyb3VuZCBpbWFnZSBzdHJpbmcNCgkJCSRpbWFnZXMgPSAkaHRtbC0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpOw0KCQkJJGltYWdlX3NyYyA9IG51bGw7DQoJCQkvLyBtYWtlIHN1cmUgdGhlcmUgaXMgYW4gaW1hZ2UNCgkJCWlmICgkaW1hZ2VzLT5sZW5ndGggPiAwKQ0KCQkJew0KCQkJCSRpbWFnZV9zcmMgPSAkaW1hZ2VzLT5pdGVtKDApLT5nZXRBdHRyaWJ1dGUoJ3NyYycpOw0KCQkJfQ0KCQkJLy8gbG9hZCB0aGUgYm9keSBodG1sIHRvIHRoZSBwYWdlIGRhdGFiYXNlIGFycmF5DQoJCQlpZiAoJGRpdnMtPmxlbmd0aCA9PSAxKQ0KCQkJew0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaW1hZ2Vfc3JjKSkNCgkJCQl7DQoJCQkJCSRkYXRhWydjb250ZW50J10gPSBzdHJfcmVwbGFjZSgkaW1hZ2Vfc3JjLCAkaW1hZ2VfbGluaywgJGh0bWwtPnNhdmVIVE1MKCRkaXZzLT5pdGVtKDApKSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRkYXRhWydjb250ZW50J10gPSAkaHRtbC0+c2F2ZUhUTUwoJGRpdnMtPml0ZW0oMCkpOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGxvYWQgdGhlIGJvZHkgY3NzIHRvIHRoZSBwYWdlIGRhdGFiYXNlIGFycmF5DQoJCQlpZiAoJHN0eWxlcy0+bGVuZ3RoID09IDIpDQoJCQl7DQoJCQkJJGRhdGFbJ2NzcyddID0gJHN0eWxlcy0+aXRlbSgxKS0+bm9kZVZhbHVlOw0KCQkJCSRkYXRhWydhZGRfY3NzJ10gPSAxOw0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhIGh0bWwgcGFnZSBmcm9tIFBERg0KCSAqDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U1ZHRnJvbVBERigmJGRhdGEsICRucikNCgl7DQoJCWlmIChgd2hpY2ggcGRmdG9jYWlyb2ApDQoJCXsNCgkJCS8vIG9wZW4gdGhlIFBERg0KCQkJJHRoaXMtPm9wZW5QREYoKTsNCg0KCQkJJG5hbWUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpyYW5kb20oMjApOw0KCQkJJHRlbXBPcGVuRmlsZSA9ICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUgLiAnLnBkZic7DQoNCgkJCS8vIHdlIGhhdmUgdG8gcGxhY2UgdGhlIG9wZW5lZCBmaWxlIG9uIHRoZSBkcml2ZQ0KCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRlbXBPcGVuRmlsZSwgJHRoaXMtPm9wZW5GaWxlKTsNCg0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBub3cgd2UgcnVuIHRoZSBjb21tYW5kDQoJCQlzaGVsbF9leGVjKCJwZGZ0b2NhaXJvIC1mICRuciAtbCAkbnIgLXN2ZyAkbmFtZS5wZGYgJG5hbWUiKTsNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoNCgkJCS8vIGxvYWQgdGhlIHN2ZyBkYXRhDQoJCQkkZGF0YVsnY29udGVudCddID0gZmlsZV9nZXRfY29udGVudHMoJG5hbWUpOw0KDQoJCQkvLyByZW1vdmUgb3BlbiBmaWxlDQoJCQlKRmlsZTo6ZGVsZXRlKCRuYW1lKTsNCgkJCS8vIGdvIHRvIHRoYXQgam9vbWxhIGZvbGRlcg0KCQkJY2hkaXIoJGpvb21sYSk7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHBhZ2VzIGZyb20gUERGDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFBhZ2VzRnJvbVBERigpDQoJew0KCQkvLyBjaGVjayBpZiBmaWxlIGV4aXN0DQoJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQl7DQoJCQkvLyBvcGVuIHRoZSBQREYNCgkJCWlmICghJHRoaXMtPm9wZW5QREYoKSkNCgkJCXsNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdXZSBjb3VsZCBub3Qgb3BlbiB0aGUgZGVjcnlwdCB0aGUgUERGIHRvIGV4dHJhY3QgdGhlIHBhZ2VzLCBwbGVhc2UgdHJ5IGFnYWluISBQbGVhc2UgaW5mb3JtIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgaWYgdGhpcyBjb250aW51ZXMgdG8gaGFwcGVuLicpLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyB1c2UgcGRmdG9jYWlybyAoQkVTVCBPUFRJT04pDQoJCQlpZiAoYHdoaWNoIHBkZnRvY2Fpcm9gKQ0KCQkJew0KCQkJCSRuYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6cmFuZG9tKDIwKTsNCgkJCQkkdGVtcE9wZW5GaWxlID0gJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLycgLiAkbmFtZSAuICcucGRmJzsNCgkJCQkvLyB3ZSBoYXZlIHRvIHBsYWNlIHRoZSBvcGVuZWQgZmlsZSBvbiB0aGUgZHJpdmUNCgkJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6OndyaXRlRmlsZSgkdGVtcE9wZW5GaWxlLCAkdGhpcy0+b3BlbkZpbGUpOw0KCQkJCS8vIHdlIG11c3QgZmlyc3Qgc3RvcmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkNCgkJCQkkam9vbWxhID0gZ2V0Y3dkKCk7DQoJCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQkJY2hkaXIoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJCS8vIG5vdyB3ZSBydW4gdGhlIGNvbW1hbmQNCgkJCQlzaGVsbF9leGVjKCJwZGZ0b2NhaXJvIC1qcGVnICRuYW1lLnBkZiBwYWdlIik7DQoJCQkJLy8gcmVtb3ZlIG9wZW4gZmlsZQ0KCQkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoJCQkJLy8gbm93IGVuY3J5cHQgdGhlIHBhZ2VzDQoJCQkJJHBhZ2VzID0gSkZvbGRlcjo6ZmlsZXMoJy4nLCAnLmpwZycsIGZhbHNlLCB0cnVlLCBhcnJheSgpLCBhcnJheSgpKTsNCgkJCQkvLyBmaXJzdCBnZXQgY29udGVudCB0aGUgcmVtb3ZlIGZpbGUgdGhlIHNhdmUgZW5jcnlwdGVkIGNvbnRlbnQNCgkJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhZ2VzKSkNCgkJCQl7DQoJCQkJCWFycmF5X21hcCggZnVuY3Rpb24oJGltYWdlKXsNCgkJCQkJCSRwYWdlX251bWJlciA9IHN0cl9yZXBsYWNlKGFycmF5KCcuLycsICdwYWdlLScsICcuanBnJyksICcnLCAkaW1hZ2UpOw0KCQkJCQkJJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkaW1hZ2UpOw0KCQkJCQkJSkZpbGU6OmRlbGV0ZSgkaW1hZ2UpOw0KCQkJCQkJJGRhdGEgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJGRhdGEpOw0KCQkJCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLy4nIC4gJHBhZ2VfbnVtYmVyIC4gJ19wYWdlJywgd29yZHdyYXAoJGRhdGEsIDEyOCwgIlxuIiwgdHJ1ZSkpOw0KCQkJCQl9LCAkcGFnZXMpOw0KCQkJCX0NCgkJCQkvLyBnbyB0byB0aGF0IGpvb21sYSBmb2xkZXINCgkJCQljaGRpcigkam9vbWxhKTsNCgkJCQkNCgkJCX0NCgkJCWVsc2VpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnaW1hZ2ljaycpKQ0KCQkJew0KCQkJCS8vIHRyeSB0byBydW4gdGhlIGV4dHJhdGlvbg0KCQkJCWlmICghJHRoaXMtPmltYWdpY2tQREZ4dHJhY3QoKSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1dlIGNvdWxkIG5vdCBleHRyYXh0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYsIHBsZWFzZSB0cnkgYWdhaW4hIFBsZWFzZSBpbmZvcm0geW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBpZiB0aGlzIGNvbnRpbnVlcyB0byBoYXBwZW4uJyksICdlcnJvcicpOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdQbGVhc2UgaW5mb3JtIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgdGhhdCB5b3UgbmVlZCB0aGUgUEhQIDxiPmltYWdpY2sgZXh0cmFjdGlvbjwvYj4gaW5zdGFsbGVkIG9uIHlvdXIgaG9zdGluZyBhY2NvdW50LiBUaGUgZXh0cmFjdGlvbiBvZiB0aGUgcGFnZXMgZnJvbSB5b3VyIFBERiBmaWxlcyBhcmUgZG9uZSB3aXRoIHRoaXMgbGlicmFyeSE8YnIgLz5odHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9pbWFnaWNrLnNldHVwLnBocCcpLCAnZXJyb3InKTsNCgkJCX0NCgkJfQ0KCQkvLyB0cnkgdG8gbG9hZCB0aGUgcGFnZXMgbGlua3MgYWdhaW4NCgkJcmV0dXJuICR0aGlzLT5nZXRQYWdlcyhmYWxzZSk7DQoJfQ0KDQoJLyoqDQoJICogb3BlbiB0aGUgUERGDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIG9wZW5QREYoKQ0KCXsNCgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgiXG4iLCAnJywgZmlsZV9nZXRfY29udGVudHMoJHRoaXMtPmhpZGVuRmlsZSkpOw0KCQlpZiAoJGRhdGEgPT09IGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpKQ0KCQl7DQoJCQlpZiAobWV0aG9kX2V4aXN0cygnW1tbQ29tcG9uZW50XV1dSGVscGVyJywgJ2RlY3J5cHQnKQ0KCQkJCSYmICgkdGhpcy0+b3BlbkZpbGUgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmRlY3J5cHQoJGRhdGEpKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQkJDQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIEV4dHJhY3QgcGFnZXMgZnJvbSBQREYNCgkgKg0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbiBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gaW1hZ2lja1BERnh0cmFjdCgpDQoJew0KCQlpZiAoaXNzZXQoJHRoaXMtPm9wZW5GaWxlKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+b3BlbkZpbGUpKQ0KCQl7DQoJCQkvLyBsb2FkIHRoZSB3aG9sZSBQREYNCgkJCSRwZGYgPSBuZXcgaW1hZ2ljaygpOw0KCQkJLy8gc2V0IGltYWdlIHJlc29sdXRpb24gKFRPRE8pDQoJCQkkcGRmLT5zZXRSZXNvbHV0aW9uKDE0NCwgMTQ0KTsNCgkJCS8vIGxvYWQgdGhlIFBERg0KCQkJJHBkZi0+cmVhZEltYWdlQmxvYigkdGhpcy0+b3BlbkZpbGUpOw0KCQkJLy8gJHBkZi0+ZGVzcGVja2xlaW1hZ2UoKTsNCgkJCS8vIGdldCB0aGUgbnVtYmVyIHBhZ2VzDQoJCQkkbnVtYmVyID0gJHBkZi0+Z2V0TnVtYmVySW1hZ2VzKCk7DQoJCQkvLyBDb252ZXJ0IFBERiBwYWdlcyB0byBpbWFnZXMNCgkJCWZvcigkaSA9IDA7ICRpIDwgJG51bWJlcjsgJGkrKykNCgkJCXsNCgkJCQkvLyBzZXQgbWVtb3J5IHN0b3JhZ2UNCgkJCQkkdG1wX2hhbmRsZSA9IGZvcGVuKCJwaHA6Ly90ZW1wIiwgJ3IrJyk7DQoJCQkJLy8gU2V0IGl0ZXJhdG9yIHBvc3Rpb24NCgkJCQkkcGRmLT5zZXRJdGVyYXRvckluZGV4KCRpKTsNCgkJCQkvLyBTZXQgaW1hZ2UgZm9ybWF0DQoJCQkJJHBkZi0+c2V0SW1hZ2VGb3JtYXQoJ2pwZWcnKTsNCgkJCQkkcGRmLT5zZXRJbWFnZUNvbXByZXNzaW9uKGltYWdpY2s6OkNPTVBSRVNTSU9OX0xPU1NMRVNTSlBFRyk7DQoJCQkJJHBkZi0+c2V0SW1hZ2VDb21wcmVzc2lvblF1YWxpdHkoMTAwKTsNCgkJCQkkcGRmLT5zZXRJbWFnZUFscGhhQ2hhbm5lbChJbWFnaWNrOjpBTFBIQUNIQU5ORUxfUkVNT1ZFKTsNCgkJCQkkcGRmLT50cmFuc3BhcmVudFBhaW50SW1hZ2UoJyNmZmZmZmYnLCAwLCAwLCBmYWxzZSk7DQoJCQkJLy8gV3JpdGUgUGFnZXMgdG8gdGhlIGhpZGRlbiBwYWdlIGZvbGRlcg0KCQkJCSRwZGYtPndyaXRlSW1hZ2VGaWxlKCR0bXBfaGFuZGxlKTsNCgkJCQlyZXdpbmQoJHRtcF9oYW5kbGUpOw0KCQkJCS8vIHNldCB0aGUgcGFnZSBudW1iZXINCgkJCQkkcGFnZV9udW1lciA9ICRpICsgMTsNCgkJCQkvLyBub3cgd3JpdGUgdGhlIGZpbGUgdG8gZHJpdmUgZW5jcnlwdGVkDQoJCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLy4nIC4gJHBhZ2VfbnVtZXIgLiAnX3BhZ2UnLCB3b3Jkd3JhcChbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoc3RyZWFtX2dldF9jb250ZW50cygkdG1wX2hhbmRsZSkpLCAxMjgsICJcbiIsIHRydWUpKTsNCgkJCQkvLyBjbGVhbiB1cCB5b3VyIHRlbXBvcmFyeSBzdG9yYWdlIGhhbmRsZQ0KCQkJCWZjbG9zZSgkdG1wX2hhbmRsZSk7DQoJCQl9DQoJCQkkdGhpcy0+b3BlbkZpbGUgPSAnJzsNCgkJCXJldHVybiAkcGRmLT5jbGVhcigpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBidWlsZCB0aGUgc2VsZWN0aW9uIHZpZXcgYXJlYQ0KCSAqDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VBcmVhKCkNCgl7DQoJCS8vIHNldCB0aGUgaGVhZGluZw0KCQkkYXJlYSA9ICc8aDQ+JyAuIFRleHQ6Ol8oJ1Jlc291cmNlJykgLiAnPC9oND4nOw0KDQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJmb3JtLWlubGluZSBmb3JtLWlubGluZS1oZWFkZXIiPic7DQoNCgkJLy8gbmFtZSBhdHRyaWJ1dGVzDQoJCSRhdHRyaWJ1dGVzID0gYXJyYXkoDQoJCQkndHlwZScgPT4gJ3RleHQnLA0KCQkJJ25hbWUnID0+ICdyZXNvdXJjZV9uYW1lJywNCgkJCSdsYWJlbCcgPT4gSnVzdFRFWFQ6Ol8oJ05hbWUnKSwNCgkJCSdjbGFzcycgPT4gJ3RleHRfYXJlYScsDQoJCQknZGVzY3JpcHRpb24nID0+IEp1c3RURVhUOjpfKCdBZGQgdGhlIG5hbWUgaGVyZSB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGNhbGwgdGhpcyByZXNvdXJjZS4nKSk7DQoJCSRmaWVsZCA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmllbGRPYmplY3QoJGF0dHJpYnV0ZXMsICR0aGlzLT5fZmlsZU5hbWUpOw0KDQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJjb250cm9sLWdyb3VwIj4nOw0KCQkkYXJlYSAuPSAnPGRpdiBjbGFzcz0iY29udHJvbC1sYWJlbCI+JyAuICRmaWVsZC0+bGFiZWwgLiAnPC9kaXY+JzsNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2xzIj4nIC4gJGZpZWxkLT5pbnB1dCAuICc8L2Rpdj4nOw0KCQkkYXJlYSAuPSAnPC9kaXY+JzsNCg0KCQkkYXJlYSAuPSAnPGRpdiBjbGFzcz0iY29udHJvbC1ncm91cCI+JzsNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2xzIj48YnV0dG9uIGNsYXNzPSJidG4gYnV0dG9uLXVuZG8tMiIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLnJlbG9hZChmYWxzZSk7Ij48c3BhbiBjbGFzcz0iaWNvbi11bmRvLTIiPjwvc3Bhbj4gJyAuIFRleHQ6Ol8oJ1Jlc2V0JykgLiAnPC9idXR0b24+PC9kaXY+JzsNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPic7DQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJjb250cm9scyI+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ1dHRvbi1hcnJvdy11cC00IiAgb25jbGljaz0iZXh0cnVkZVNlbGVjdGVkKCk7Ij48c3BhbiBjbGFzcz0iaWNvbi1hcnJvdy11cC00Ij48L3NwYW4+ICcgLiBUZXh0OjpfKCdFeHRydWRlJykgLiAnPC9idXR0b24+PC9kaXY+JzsNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJcmV0dXJuICRhcmVhOw0KCX0NCg0KCS8qKg0KCSAqIGJ1aWxkIHRoZSBzZWxlY3Rpb24gdmlldyBhcmVhDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRTZWxlY3Rpb25BcmVhKCkNCgl7DQoJCSRhcmVhID0gJyc7DQoJCSRsaW5rcyA9ICR0aGlzLT5nZXRMaW5rcygpOw0KCQkkbmFtZXMgPSAkdGhpcy0+Z2V0TmFtZXMoKTsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGxpbmtzDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGlua3MpKQ0KCQl7DQoJCQkkYXJlYSA9ICc8c3R5bGU+LnVrLWxpZ2h0Ym94IHt6LWluZGV4OjIwMDA7fTwvc3R5bGU+JzsNCgkJCS8vIG9ubHkgbG9hZCB0aGVzIGlmIHdlIGhhdmUgbW9yZSB0aGVuNSBwYWdlcw0KCQkJaWYgKGNvdW50KCRsaW5rcykgPiA1KQ0KCQkJew0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGRpdiAgaWQ9InNlbGVjdF9idXR0b25fYWxsXzEyMyI+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxidXR0b24gY2xhc3M9InNlbGVjdF9idXR0b25fYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay13aWR0aC0xLTEgdWstbWFyZ2luLXNtYWxsLWJvdHRvbSIgZGF0YS12YWx1ZT0iMSIgb25jbGljaz0idG9nZ2xlU2VsZWN0aW9uKFwnYWxsXCcpIiB1ay10b2dnbGU9InRhcmdldDogLnNlbGVjdGlvbl9hbGw7IGFuaW1hdGlvbjogdWstYW5pbWF0aW9uLWZhZGU7Ij5VbnNlbGVjdCBBbGw8L2J1dHRvbj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgIGlkPSJzZWxlY3RfYnV0dG9uX2FsbF8xMjQiIGNsYXNzPSJ1ay1idXR0b24tZ3JvdXAgdWstd2lkdGgtMS0xIHNlbGVjdGlvbl9hbGwiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaW1hZ2VfYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1idXR0b24tc21hbGwgdWstd2lkdGgtMS0yIiAgb25jbGljaz0ic2V0RXh0cnVkZVN0YXR1cyhcJ2ltYWdlXCcsIFwnaHRtbFwnLCBcJ3N2Z1wnLCBcJ2FsbFwnKSIgZGF0YS12YWx1ZT0iMSIgdWstaWNvbj0iaWNvbjogaW1hZ2UiPjwvYnV0dG9uPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaHRtbF9hbGwgdWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLWJ1dHRvbi1zbWFsbCB1ay13aWR0aC0xLTIiICBvbmNsaWNrPSJzZXRFeHRydWRlU3RhdHVzKFwnaHRtbFwnLCBcJ2ltYWdlXCcsIFwnc3ZnXCcsIFwnYWxsXCcpIiBkYXRhLXZhbHVlPSIwIj5IVE1MPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZXh0cnVkZV9zdmdfYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1idXR0b24tc21hbGwgdWstd2lkdGgtMS0yIiAgb25jbGljaz0ic2V0RXh0cnVkZVN0YXR1cyhcJ3N2Z1wnLCBcJ2ltYWdlXCcsIFwnaHRtbFwnLCBcJ2FsbFwnKSIgZGF0YS12YWx1ZT0iMCI+U1ZHPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2Pic7DQoJCQl9DQoJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWdyaWQtc21hbGwgdWstY2hpbGQtd2lkdGgtMS0yQHMgdWstY2hpbGQtd2lkdGgtMS0zQG0gdWstY2hpbGQtd2lkdGgtMS01QGwiIHVrLWdyaWQgdWstbGlnaHRib3g9ImFuaW1hdGlvbjogc2xpZGUiPic7DQoJCQlmb3JlYWNoICgkbmFtZXMgYXMgJGxpbmsgPT4gJG5hbWUpDQoJCQl7DQoJCQkJLy9tYWtlIHN1cmUgdGhlIG5hbWUgaXMgc2VjdXJlDQoJCQkJJF9uYW1lID0gTGlicmFyeWRhdGFiYXNlSGVscGVyOjpzYWZlU3RyaW5nKCRuYW1lKTsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLXBhZGRpbmctc21hbGwiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIGNsYXNzPSJzZWxlY3RfYnV0dG9uX2FsbCBzZWxlY3RfYnV0dG9uXycgLiAkX25hbWUgLiAnIHVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay13aWR0aC0xLTEgdWstYnV0dG9uLXNtYWxsIiBkYXRhLXZhbHVlPSIxIiBvbmNsaWNrPSJ0b2dnbGVTZWxlY3Rpb24oXCcnIC4gJF9uYW1lIC4gJ1wnKSIgdHlwZT0iYnV0dG9uIiB1ay10b2dnbGU9InRhcmdldDogLnNlbGVjdGlvbl8nIC4gJF9uYW1lIC4gJzsgYW5pbWF0aW9uOiB1ay1hbmltYXRpb24tZmFkZTsiPlVuc2VsZWN0PC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWJveC1zaGFkb3ctbWVkaXVtIj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGEgY2xhc3M9InVrLWlubGluZSIgaHJlZj0iJyAuICRsaW5rc1skbGlua10gLiAnIiBkYXRhLWFsdD0iSW1hZ2UiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8aW1nIHNyYz0iJyAuICRsaW5rc1skbGlua10gLiAnIiBhbHQ9IicgLiAkbmFtZSAuICciPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8ZGl2IGNsYXNzPSJ1ay1vdmVybGF5IHVrLWxpZ2h0IHVrLWJhY2tncm91bmQtcHJpbWFyeSB1ay1wb3NpdGlvbi1jZW50ZXIgc2VsZWN0aW9uX2FsbCBzZWxlY3Rpb25fJyAuICRfbmFtZSAuICciPjxzcGFuIHVrLWljb249ImNoZWNrIj48L3NwYW4+PC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLW92ZXJsYXkgdWstb3ZlcmxheS1wcmltYXJ5IHVrLXBvc2l0aW9uLWNlbnRlciBzZWxlY3Rpb25fYWxsIHNlbGVjdGlvbl8nIC4gJF9uYW1lIC4gJyIgaGlkZGVuPjxzcGFuIHVrLWljb249ImJhbiI+PC9zcGFuPjwvZGl2Pic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8L2E+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLXRleHQtbGlnaHRlciB1ay10ZXh0LXNtYWxsIHVrLXRleHQtY2VudGVyIj4nIC4gJG5hbWUgLiAnPC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCB1ay13aWR0aC0xLTEgc2VsZWN0aW9uX2FsbCBzZWxlY3Rpb25fJyAuICRfbmFtZSAuICciPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaW1hZ2VfJyAuICRfbmFtZSAuICcgZXh0cnVkZV9pbWFnZV9hbGwgdWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1zbWFsbCB1ay13aWR0aC0xLTMiICBvbmNsaWNrPSJzZXRFeHRydWRlU3RhdHVzKFwnaW1hZ2VcJywgXCdodG1sXCcsIFwnc3ZnXCcsIFwnJyAuICRfbmFtZSAuICdcJykiIGRhdGEtdmFsdWU9IjEiIHVrLWljb249Imljb246IGltYWdlIj48L2J1dHRvbj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJleHRydWRlX2h0bWxfJyAuICRfbmFtZSAuICcgZXh0cnVkZV9odG1sX2FsbCB1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstYnV0dG9uLXNtYWxsIHVrLXdpZHRoLTEtMyIgIG9uY2xpY2s9InNldEV4dHJ1ZGVTdGF0dXMoXCdodG1sXCcsIFwnaW1hZ2VcJywgXCdzdmdcJywgXCcnIC4gJF9uYW1lIC4gJ1wnKSIgZGF0YS12YWx1ZT0iMCI+SFRNTDwvYnV0dG9uPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfc3ZnXycgLiAkX25hbWUgLiAnIGV4dHJ1ZGVfc3ZnX2FsbCB1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstYnV0dG9uLXNtYWxsIHVrLXdpZHRoLTEtMyIgIG9uY2xpY2s9InNldEV4dHJ1ZGVTdGF0dXMoXCdzdmdcJywgXCdpbWFnZVwnLCBcJ2h0bWxcJywgXCcnIC4gJF9uYW1lIC4gJ1wnKSIgZGF0YS12YWx1ZT0iMCI+U1ZHPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2PjwvZGl2PjwvZGl2Pic7DQoJCQl9DQoJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2Pic7DQoJCX0NCgkJcmV0dXJuICRhcmVhOw0KCX0NCg0KCS8qKg0KCSAqIGJ1aWxkIHRoZSBhamF4IGJlaGF2aW9yDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRKYXZhU2NyaXB0KCkNCgl7DQoJCSRzY3JpcHQgPSAnJzsNCgkJLy8gZ2V0IHRoZSBwYWdlIG5hbWVzDQoJCSRuYW1lcyA9ICR0aGlzLT5nZXROYW1lcygpOw0KCQkkdXNlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZW5jcnlwdChGYWN0b3J5OjpnZXRVc2VyKCktPmdldCgnaWQnKSk7DQoJCSRndWlkID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjplbmNyeXB0KCR0aGlzLT5ndWlkKTsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGxpbmtzDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbmFtZXMpKQ0KCQl7DQoJCQkvLyBidWlsZCB0aGUgSlNPTiBvYmplY3QgdGhhdCB3aWxsIGJlIHNlbmQNCgkJCSRqc29uID0gbmV3IFxzdGRDbGFzcygpOyANCgkJCWZvcmVhY2ggKCRuYW1lcyBhcyAkbmFtZSkNCgkJCXsNCgkJCQkkX25hbWUgPSBMaWJyYXJ5ZGF0YWJhc2VIZWxwZXI6OnNhZmVTdHJpbmcoJG5hbWUpOw0KCQkJCSRqc29uLT4kX25hbWUgPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJJGpzb24tPiRfbmFtZS0+bmFtZSA9ICRuYW1lOw0KCQkJCSRqc29uLT4kX25hbWUtPmV4dHJ1ZGUgPSAxOw0KCQkJCSRqc29uLT4kX25hbWUtPmltYWdlID0gMTsNCgkJCQkkanNvbi0+JF9uYW1lLT5odG1sID0gMDsNCgkJCQkkanNvbi0+JF9uYW1lLT5zdmcgPSAwOw0KCQkJfQ0KCQkJJHNjcmlwdCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPic7DQoJCQkkc2NyaXB0IC49ICd2YXIgRGF0YVJlc291cmNlTmFtZSA9ICInIC4gJHRoaXMtPmZpbGVMb2NrZWQgLiAnIjsnOw0KCQkJJHNjcmlwdCAuPSAndmFyIERhdGFSZXNvdXJjZVBhZ2VzPSAnIC4ganNvbl9lbmNvZGUoJGpzb24pIC4gJzsnOw0KDQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBpc0VtcHR5KG9iaikgeyc7DQoJCQkkc2NyaXB0IC49ICdmb3IodmFyIGtleSBpbiBvYmopIHsnOw0KCQkJJHNjcmlwdCAuPSAnaWYob2JqLmhhc093blByb3BlcnR5KGtleSkpJzsNCgkJCSRzY3JpcHQgLj0gJ3JldHVybiBmYWxzZTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdyZXR1cm4gdHJ1ZTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBtYWtlIGFuIGFqYXggcG9zdC9nZXQgdG8gc3RhcnQgdGhlIGV4dHJ1c2lvbg0KCQkJJHNjcmlwdCAuPSAnZnVuY3Rpb24gZXh0cnVkZVNlbGVjdGVkKCl7JzsNCgkJCSRzY3JpcHQgLj0gJy8qIHdlIHN0YXJ0dXAgdGhlIHNwaW5uZXIgKi8nOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjbG9hZGluZyIpLnNob3coKTsnOw0KCQkJJHNjcmlwdCAuPSAndmFyIHR5cGUgPSBKU09OLnN0cmluZ2lmeSh7JzsNCgkJCSRzY3JpcHQgLj0gJ2ZpbGVuYW1lOiBEYXRhUmVzb3VyY2VOYW1lLCc7DQoJCQkkc2NyaXB0IC49ICduYW1lOiBqUXVlcnkoIiNyZXNvdXJjZV9uYW1lIikudmFsKCksJzsNCgkJCSRzY3JpcHQgLj0gJ3VzZXI6ICInIC4gJHVzZXIgLiAnIiwnOw0KCQkJJHNjcmlwdCAuPSAnZ3VpZDogIicgLiAkZ3VpZCAuICciLCc7DQoJCQkkc2NyaXB0IC49ICd0eXBlOiAxJzsNCgkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkkc2NyaXB0IC49ICcvKiBvbmx5IGFjdCBpZiBleHRydXNpb24gaXMgYWN0aXZlLiAqLyc7DQoJCQkkc2NyaXB0IC49ICdwcm9jZXNzaW5nUmVxdWVzdChPYmplY3Qua2V5cyhEYXRhUmVzb3VyY2VQYWdlcykuZmlsdGVyKGZ1bmN0aW9uKGtleSl7JzsNCgkJCSRzY3JpcHQgLj0gJ3JldHVybiBEYXRhUmVzb3VyY2VQYWdlc1trZXldLmV4dHJ1ZGU7JzsNCgkJCSRzY3JpcHQgLj0gJ30pLCB0eXBlKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiB0b2dnbGVTZWxlY3Rpb24ocGFnZSl7JzsNCgkJCS8vIG9ubHkgYWRkIHRoZXNlIGlmIHdlIGhhdmUgbW9yZSB0aGVuIGZpdmUNCgkJCWlmIChjb3VudCgkbmFtZXMpID4gNSkNCgkJCXsNCgkJCQkkc2NyaXB0IC49ICdpZiAocGFnZSAhPT0gImFsbCIpeyc7DQoJCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjc2VsZWN0X2J1dHRvbl9hbGxfMTIzIikucmVtb3ZlKCk7JzsNCgkJCQkkc2NyaXB0IC49ICd9JzsNCgkJCX0NCgkJCSRzY3JpcHQgLj0gJ3ZhciBidXR0b24gPSBqUXVlcnkoIi5zZWxlY3RfYnV0dG9uXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciB2YWx1ZSA9IGJ1dHRvbi5kYXRhKCJ2YWx1ZSIpOyc7DQoJCQkkc2NyaXB0IC49ICdpZiAodmFsdWUpeyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24udGV4dCgiU2VsZWN0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLnRleHQoIlVuc2VsZWN0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhbHVlID0gMTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgPT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeS5lYWNoKERhdGFSZXNvdXJjZVBhZ2VzLCBmdW5jdGlvbihwLCBrZXkpIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleS5leHRydWRlID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICd9KTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30gZWxzZSB7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXS5leHRydWRlID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICd9JzsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXS5leHRydWRlID0gdmFsdWU7JzsNCgkJCX0NCgkJCSRzY3JpcHQgLj0gJ2J1dHRvbi5kYXRhKCJ2YWx1ZSIsIHZhbHVlKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBzZXRFeHRydWRlU3RhdHVzKGFjdGlvbiwgb3RoZXJhY3Rpb24sIGFub3RoZXJhY3Rpb24sIHBhZ2Upeyc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgIT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI3NlbGVjdF9idXR0b25fYWxsXzEyNCIpLnJlbW92ZSgpOyc7DQoJCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQl9DQoJCQkkc2NyaXB0IC49ICd2YXIgYnV0dG9uID0galF1ZXJ5KCIuZXh0cnVkZV8iK2FjdGlvbisiXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBvdGhlcmJ1dHRvbiA9IGpRdWVyeSgiLmV4dHJ1ZGVfIitvdGhlcmFjdGlvbisiXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBhbm90aGVyYnV0dG9uID0galF1ZXJ5KCIuZXh0cnVkZV8iK2Fub3RoZXJhY3Rpb24rIl8iK3BhZ2UpOyc7DQoJCQkkc2NyaXB0IC49ICd2YXIgdmFsdWUgPSBidXR0b24uZGF0YSgidmFsdWUiKTsnOw0KCQkJJHNjcmlwdCAuPSAnaWYgKHZhbHVlKXsnOw0KCQkJJHNjcmlwdCAuPSAndmFsdWUgPSAwOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcnZhbHVlID0gMTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAndmFsdWUgPSAxOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgPT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeS5lYWNoKERhdGFSZXNvdXJjZVBhZ2VzLCBmdW5jdGlvbihwLCBrZXkpIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleVthY3Rpb25dID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdrZXlbb3RoZXJhY3Rpb25dID0gb3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW2FjdGlvbl0gPSB2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW290aGVyYWN0aW9uXSA9IG90aGVydmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30nOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW2FjdGlvbl0gPSB2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW290aGVyYWN0aW9uXSA9IG90aGVydmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJfQ0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmRhdGEoInZhbHVlIiwgdmFsdWUpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5kYXRhKCJ2YWx1ZSIsIG90aGVydmFsdWUpOyc7DQoJCQkkc2NyaXB0IC49ICdhbm90aGVyYnV0dG9uLmRhdGEoInZhbHVlIiwgYW5vdGhlcnZhbHVlKTsnOw0KCQkJJHNjcmlwdCAuPSAnaWYgKHZhbHVlKXsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tcHJpbWFyeSIpOyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24ucmVtb3ZlQ2xhc3MoInVrLWJ1dHRvbi1kZWZhdWx0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ290aGVyYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tZGVmYXVsdCIpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5hZGRDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tZGVmYXVsdCIpOyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24ucmVtb3ZlQ2xhc3MoInVrLWJ1dHRvbi1wcmltYXJ5Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ290aGVyYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tcHJpbWFyeSIpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5hZGRDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICd9JzsNCgkJCSRzY3JpcHQgLj0gJ2Z1bmN0aW9uIHByb2Nlc3NpbmdSZXF1ZXN0KHBhZ2VzLCB0eXBlKSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2lmICghaXNFbXB0eShwYWdlcykpeyc7DQoJCQkkc2NyaXB0IC49ICd2YXIgcnVuID0gMDsgdmFyIHNpemUgPSBPYmplY3Qua2V5cyhwYWdlcykubGVuZ3RoOyBzaXplLS07JzsNCgkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9sb2FkZXIiKS5odG1sKCI8YnIgLz48Y2VudGVyPjxkaXYgY2xhc3M9XCJ1ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1yaWdodCB1ay1hbmltYXRpb24tc2NhbGUtdXAgdWstYm94LXNoYWRvdy1ib3R0b21cIj48c21hbGw+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnV2UgYXJlIG5vdyBleHRydWRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgUERGIGRvY3VtZW50IGFuZCBtb3ZpbmcgaXQgaW50byB0aGUgW1tbY3VycmljdWx1bWJ1aWxkZXJfbGlua19uYW1lXV1dIHJlc291cmNlcyBhcmVhLicpOw0KCQkJJHNjcmlwdCAuPSAnPC9zbWFsbD48aDI+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnVGhpcyBtYXkgdGFrZSBhIHNvbWUgdGltZSE8YnIgLz48YnIgLz5QbGVhc2Ugd2FpdCBhbmQgZG8gbm90IHJlZGlyZWN0IGF3YXkgZnJvbSB0aGlzIHBhZ2UhJyk7DQoJCQkkc2NyaXB0IC49ICc8L2gyPjwvZGl2PjwvY2VudGVyPjxkaXY+PHByb2dyZXNzIGlkPVwiW1tbY29tcG9uZW50XV1dX3Jlc3VsdFwiIGNsYXNzPVwidWstcHJvZ3Jlc3NcIiB2YWx1ZT1cIjBcIiBtYXg9XCIiK3NpemUrIlwiPjwvcHJvZ3Jlc3M+PC9kaXY+Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBwcm9jZXNzaW5nUmVxdWVzdENoZWNrZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpeyc7DQoJCQkkc2NyaXB0IC49ICd2YXIga2V5ID0gcGFnZXNbcnVuXTsnOw0KCQkJJHNjcmlwdCAuPSAncHJvY2Vzc2luZ1JlcXVlc3Rfc2VydmVyKEpTT04uc3RyaW5naWZ5KERhdGFSZXNvdXJjZVBhZ2VzW2tleV0pLCB0eXBlKS5kb25lKGZ1bmN0aW9uKHJlc3VsdCkgeyc7DQoJCQkkc2NyaXB0IC49ICdpZiAocmVzdWx0KSB7IGpRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9yZXN1bHQiKS52YWwocnVuKTsgc2hvd1RoZUZpbmlzaGVkTm90aWNlKHJ1biwgc2l6ZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ30gZWxzZSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9sb2FkZXIiKS5hZnRlcigiPGRpdiBjbGFzcz1cInVrLXRleHQtZGFuZ2VyXCI+T29wcyB3ZSBmYWlsZWQgdG8gZXh0cnVkZTogPGI+IisgRGF0YVJlc291cmNlUGFnZXNba2V5XS5uYW1lICsgIjwvYj4geW91IHdpbGwgaGF2ZSB0byB0cnkgZXh0cnVkaW5nIHRoaXMgcGFnZSBhZ2FpbiEgSWYgdGhpcyBjb250aW51ZXMgdG8gaGFwcGVuIGluZm9ybSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yLjwvZGl2PiIpO30nOw0KCQkJJHNjcmlwdCAuPSAnc2hvd1RoZUZpbmlzaGVkTm90aWNlKHJ1biwgc2l6ZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkkc2NyaXB0IC49ICdpZiAocnVuID09IHNpemUpIHsnOw0KCQkJJHNjcmlwdCAuPSAnY2xlYXJJbnRlcnZhbChwcm9jZXNzaW5nUmVxdWVzdENoZWNrZXIpOyc7DQoJCQkkc2NyaXB0IC49ICd9JzsNCgkJCSRzY3JpcHQgLj0gJ3J1bisrOyc7DQoJCQkkc2NyaXB0IC49ICd9LCAyMDApOyc7DQoJCQkkc2NyaXB0IC49ICd9IGVsc2UgeyBqUXVlcnkoIiNsb2FkaW5nIikuaGlkZSgpO30nOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBzaG93VGhlRmluaXNoZWROb3RpY2UocnVuLCBzaXplKSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2lmIChydW4gPT0gc2l6ZSB8fCAwID09IHNpemUpIHsnOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjbG9hZGluZyIpLmhpZGUoKTsnOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjW1tbY29tcG9uZW50XV1dX2xvYWRlciIpLmh0bWwoIjxkaXYgY2xhc3M9XCJ1ay1hbGVydC1zdWNjZXNzXCIgdWstYWxlcnQ+PGgxPic7DQoJCQkkc2NyaXB0IC49IFRleHQ6OnNwcmludGYoJyVzIEV4dHJ1c2lvbiBDb21wbGV0ZSEnLCAkdGhpcy0+X2ZpbGVOYW1lKTsNCgkJCSRzY3JpcHQgLj0gJzwvaDE+PHA+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnRG8gbm90ZSB0aGF0IDxiPm5vIGlucHV0dCBmaWVsZHM8L2I+IHdlcmUgc2V0IGZvciB0aGlzIHJlc291cmNlLCBhbmQgdGhlIHJlc291cmNlIGlzIHN0aWxsIDxiPnVwdWJsaXNoZWQ8L2I+LiBPbmx5IG9uY2UgYW4gZWRpdG9yIGhhcyA8Yj5yZXZpZXdlZCBhbmQgcHVibGxpc2hlZDwvYj4gdGhpcyByZXNvdXJjZSwgd2lsbCBpdCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjb3Vyc2VzLicpOw0KCQkJJHNjcmlwdCAuPSAnPC9wPjwvZGl2Pic7DQoJCQkkc2NyaXB0IC49ICc8ZGl2IGNsYXNzPVwidWstYnV0dG9uLWdyb3VwIHVrLXdpZHRoLTEtMVwiPic7DQoJCQkkc2NyaXB0IC49ICc8YSBocmVmPVwiaW5kZXgucGhwP29wdGlvbj1jb21fW1tbY3VycmljdWx1bWJ1aWxkZXJdXV0mdmlldz1yZXNvdXJjZXNcIiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay13aWR0aC0xLTJcIj4nOw0KCQkJJHNjcmlwdCAuPSBUZXh0OjpzcHJpbnRmKCdSZXZpZXdlIFRoZSBSZXNvdXJjZXMnKTsNCgkJCSRzY3JpcHQgLj0gJzwvYT4nOw0KCQkJJHNjcmlwdCAuPSAnPGEgaHJlZj1cImluZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ2aWV3PWZvbGRlcnNcIiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay13aWR0aC0xLTJcIj4nOw0KCQkJJHNjcmlwdCAuPSBUZXh0OjpzcHJpbnRmKCdFeHRydWRlIEFub3RoZXIgUmVzb3VyY2UnKTsNCgkJCSRzY3JpcHQgLj0gJzwvYT4nOw0KCQkJJHNjcmlwdCAuPSAnPC9kaXY+Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ319JzsNCgkJCSRzY3JpcHQgLj0gJzwvc2NyaXB0Pic7DQoJCX0NCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBsaW5rDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExpbmsoJHBhdGgpDQoJew0KCQkvLyBzZXQgZ2xvYmFscw0KCQkkbGlua29wdGlvbnMgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldExpbmtPcHRpb25zKCk7DQoJCS8vIHNldCBsaW5rIHRva2VuIGlmIG5lZWRlZA0KCQkkbGlua1Rva2VuID0gJyc7DQoJCWlmICgkbGlua29wdGlvbnNbJ3Nlc3Npb24nXSkNCgkJew0KCQkJJGxpbmtUb2tlbiA9ICcmJyAuIEpvb21sYV9fXzViYTM4NTEzXzVjNGZfNGIwZF85MzVlXzQ5ZTk4NmE2YmNlOF9fX1Bvd2VyOjpnZXRGb3JtVG9rZW4oKSAuICc9MSc7DQoJCX0NCgkJLy8gYnVpbGQgdGhlIG5hbWUNCgkJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLi8nLCAnJywgJHBhdGgpOw0KCQkvLyBsb2NrIHRoZSBwYXRoIHRvIHRoZSBwYWdlDQoJCWlmICgkbGlua29wdGlvbnNbJ2xvY2snXSkNCgkJew0KCQkJJHBhZ2UgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmJhc2U2NF91cmxlbmNvZGUoW1tbQ29tcG9uZW50XV1dSGVscGVyOjplbmNyeXB0KCAkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lKSk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZSgkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lLCB0cnVlKTsNCgkJfQ0KCQkvLyByZXR1cm4gdGhlIGxpbmsNCgkJcmV0dXJuICR0aGlzLT5nZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbik7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBsaW5rIFVSTA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbikNCgl7DQoJCS8vIHJldHVybiB0aGUgbGluaw0KCQlyZXR1cm4gJ2luZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ0YXNrPWRvd25sb2FkLmpwZyZmaWxlPScgLiAkcGFnZSAuICRsaW5rVG9rZW4gLiAnJm5hbWU9JyAuIHN0cl9yZXBsYWNlKCcuJywgJycsICRuYW1lKTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGltYWdlIGxpbmtzDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGlua3MoKQ0KCXsNCgkJLy8gc2V0IGdsb2JhbHMNCgkJJGxpbmtvcHRpb25zID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRMaW5rT3B0aW9ucygpOw0KCQkvLyBzZXQgbGluayB0b2tlbiBpZiBuZWVkZWQNCgkJJGxpbmtUb2tlbiA9ICcnOw0KCQlpZiAoJGxpbmtvcHRpb25zWydzZXNzaW9uJ10pDQoJCXsNCgkJCSRsaW5rVG9rZW4gPSAnJicgLiBKb29tbGFfX181YmEzODUxM181YzRmXzRiMGRfOTM1ZV80OWU5ODZhNmJjZThfX19Qb3dlcjo6Z2V0Rm9ybVRva2VuKCkgLiAnPTEnOw0KCQl9DQoJCS8vIGJ1aWxkIGFuZCByZXR1cm4gbGlua3MNCgkJcmV0dXJuIGFycmF5X21hcCggZnVuY3Rpb24oJHBhdGgpIHVzZSgkbGlua29wdGlvbnMsICRsaW5rVG9rZW4pew0KCQkJLy8gYnVpbGQgdGhlIG5hbWUNCgkJCSRuYW1lID0gc3RyX3JlcGxhY2UoJy4vJywgJycsICRwYXRoKTsNCgkJCS8vIGxvY2sgdGhlIHBhdGggdG8gdGhlIHBhZ2UNCgkJCWlmICgkbGlua29wdGlvbnNbJ2xvY2snXSkNCgkJCXsNCgkJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUpKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZSgkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lLCB0cnVlKTsNCgkJCX0NCgkJCS8vIHJldHVybiB0aGUgbGluaw0KCQkJcmV0dXJuICR0aGlzLT5nZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbik7DQoJCX0sICR0aGlzLT5wYWdlcyk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBuYW1lcw0KCSAqDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TmFtZXMoKQ0KCXsNCgkJLy8gYnVpbGQgYW5kIHJldHVybiBsaW5rcw0KCQlyZXR1cm4gYXJyYXlfbWFwKCBmdW5jdGlvbigkcGF0aCl7DQoJCQkvLyBidWlsZCB0aGUgbmFtZQ0KCQkJcmV0dXJuIHN0cl9yZXBsYWNlKGFycmF5KCcuLycsICcuJyksICcnLCAkcGF0aCk7DQoJCX0sICR0aGlzLT5wYWdlcyk7DQoJfQ0KDQo=', '[[[Component]]] Bridge To [[[curriculumbuilder_link_name]]]', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyBjaGVjayB0aGF0IFtbW2N1cnJpY3VsdW1idWlsZGVyXV1dIGlzIGluc3RhbGxlZA0KCQkJJHBhdGhUb0NvcmUgPSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjdXJyaWN1bHVtYnVpbGRlcl1dXS9oZWxwZXJzL1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnBocCc7DQoJCQlpZiAoIUpGaWxlOjpleGlzdHMoJHBhdGhUb0NvcmUpKQ0KCQkJew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdbW1tjdXJyaWN1bHVtYnVpbGRlcl9hY3JvbnltXV1dIG11c3QgZmlyc3QgYmUgaW5zdGFsbGVkIGZyb20gPGEgaHJlZj0iW1tbZ2V0X2N1cnJpY3VsdW1idWlsZGVyX2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjdXJyaWN1bHVtYnVpbGRlcl9saW5rX25hbWVdXV08L2E+LicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"8\"},\"property_selection1\":{\"property\":\"9\"},\"property_selection2\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Bridge To Curriculum Builder', '', 1, '', '', 1, '2019-10-22 20:48:43', '2021-10-21 23:54:58', 172, '', 4),
(9, '', '', '', '', '', '', '', '', '', '', '', '', '', 1, 'Loading WHMCS Products details', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"WHMCS\",\"label\":\"WHMCS Access Details\",\"fields_rules_paths\":\"2\",\"fields\":{\"fields0\":{\"field\":\"2678\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2677\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"324\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2712\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2713\",\"custom_value\":\"\"}}}}', 'e8be5861-f9eb-4d35-890b-14352e8ec86e', '', 3, '{\"method_selection0\":{\"method\":\"16\"}}', 'CS8qKg0KCSAqIEFQSSBVUkwNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkdXJsOw0KDQoJLyoqDQoJICogU0hPUCBVUkwNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wLjMNCgkgKi8NCglwcml2YXRlICRzaG9wdXJsOw0KDQoJLyoqDQoJICogQVBJIElERU5USUZJRVJfT1JfQURNSU5fVVNFUk5BTUUNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkdXNlcm5hbWU7DQoNCgkvKioNCgkgKiBBUEkgU0VDUkVUX09SX0hBU0hFRF9QQVNTV09SRA0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcml2YXRlICRwYXNzd29yZDsNCg0KCS8qKg0KCSAqIEFQSSBBQ1RJVkUgQ1VSUkVOQ1kNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkY3VycmVuY3k7DQoNCgkvKioNCgkgKiBBZGQgdnVlIHRvIHBhZ2UgaGVhZGVyDQoJICoNCgkgKiBAdmFyICAgIGJvb2wNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcml2YXRlICAkYWRkVnVlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFRoZSBjdXJyZW5jaWVzDQoJICoNCgkgKiBAdmFyICBhcnJheQ0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByaXZhdGUgICRjdXJyZW5jaWVzOw0KDQoJLyoqDQoJICogVGhlIHByb2R1Y3RzDQoJICoNCgkgKiBAdmFyICBhcnJheQ0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByaXZhdGUgICRwcm9kdWN0cyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiB3aG1jcyBzdHJpbmcgbmFtZQ0KCSAqDQoJICogQHZhciAgIHN0cmluZw0KCSAqIEBzaW5jZSAxLjANCgkgKi8NCglwcml2YXRlICRfd2htY3M7DQoNCgkvKioNCgkgKiB3aG1jcyBhY3Rpb24gbmFtZQ0KCSAqDQoJICogQHZhciAgIHN0cmluZw0KCSAqIEBzaW5jZSAxLjANCgkgKi8NCglwcml2YXRlICRfd2htY3Nfb3BlbjsNCg0KCS8qKg0KCSAqIHZ1ZSBjYWxsIHRyaWdnZXINCgkgKg0KCSAqIEB2YXIgICBzdHJpbmcNCgkgKiBAc2luY2UgMS4wDQoJICovDQoJcHJpdmF0ZSAkX3dobWNzX3Z1ZTsNCg0KCS8qKg0KCSAqIHZ1ZSBlbmQgdGFyZ2V0DQoJICoNCgkgKiBAdmFyICAgc3RyaW5nDQoJICogQHNpbmNlIDEuMA0KCSAqLw0KCXByaXZhdGUgJF93aG1jc192dWVfOw0KDQoJLyoqDQoJICogZW5kX2Nsb3NpbmcgdGFyZ2V0DQoJICoNCgkgKiBAdmFyICAgc3RyaW5nDQoJICogQHNpbmNlIDEuMA0KCSAqLw0KCXByaXZhdGUgJF9jbG9zaW5nOw0KDQoJLyoqDQoJICogQXBwbGljYXRpb24gb2JqZWN0DQoJICoNCgkgKiBAdmFyICAgIENNU0FwcGxpY2F0aW9uDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFwcDsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGlzIGlzIHRoZSBmaXJzdCBzdGFnZSBpbiBwcmVwYXJpbmcgY29udGVudCBmb3Igb3V0cHV0IGFuZCBpcyB0aGUNCgkgKiBtb3N0IGNvbW1vbiBwb2ludCBmb3IgY29udGVudCBvcmllbnRhdGVkIHBsdWdpbnMgdG8gZG8gdGhlaXIgd29yay4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRjb250ZXh0ICBUaGUgY29udGV4dCBvZiB0aGUgY29udGVudCBiZWluZyBwYXNzZWQgdG8gdGhlIHBsdWdpbi4NCgkgKiBAcGFyYW0gICBvYmplY3QgICAmJHJvdyAgICAgVGhlIGFydGljbGUgb2JqZWN0LiAgTm90ZSAkYXJ0aWNsZS0+dGV4dCBpcyBhbHNvIGF2YWlsYWJsZQ0KCSAqIEBwYXJhbSAgIG1peGVkICAgICYkcGFyYW1zICBUaGUgYXJ0aWNsZSBwYXJhbXMNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGFnZSAgICAgVGhlICdwYWdlJyBudW1iZXINCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlKCRjb250ZXh0LCAmJHJvdywgJiRwYXJhbXMsICRwYWdlID0gMCkNCgl7DQoJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBIVE1MIHN0cmVhbQ0KCQlpZiAoJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSB8fCAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0Q21kKCdmb3JtYXQnLCAnaHRtbCcpICE9ICdodG1sJykNCgkJew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJLy8gc2V0IGNhbGwgc3RyaW5nDQoJCWlmICghaXNzZXQoJHRoaXMtPl93aG1jcykpDQoJCXsNCgkJCSR0aGlzLT5fd2htY3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2NhbGxfc3RyaW5nJywgJ1dITUNTJyk7DQoJCQkvLyBzZXQgd2htY3MgcGxhY2Vob2xkZXIgb3BlbmluZyB0YWcNCgkJCSR0aGlzLT5fd2htY3Nfb3BlbiA9ICd7JyAuICR0aGlzLT5fd2htY3M7DQoJCQkvLyBzZXQgd2htY3MgdnVlIHRyaWdnZXIgb3BlbmluZyB0YWcNCgkJCSR0aGlzLT5fd2htY3NfdnVlID0gJHRoaXMtPl93aG1jc19vcGVuIC4gJz0nOw0KCQkJLy8gc2V0IHdobWNzIHZ1ZSB0cmlnZ2VyIGVuZCB0YWcNCgkJCSR0aGlzLT5fd2htY3NfdnVlXyA9ICR0aGlzLT5fd2htY3Nfb3BlbiAuICcvJzsNCgkJCS8vIHNldCBjbG9zaW5nIHRhZw0KCQkJJHRoaXMtPl9jbG9zaW5nID0gJ30nOw0KCQl9DQoNCgkJLy8gU2ltcGxlIHBlcmZvcm1hbmNlIGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGJvdCBzaG91bGQgcHJvY2VzcyBmdXJ0aGVyDQoJCWlmIChzdHJwb3MoJHJvdy0+dGV4dCwgJHRoaXMtPl93aG1jc19vcGVuKSA9PT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KCQkvLyBnZXQgYWxsIGFjdGlvbnMgY2FsbHMNCgkJJGFjdGlvbnMgPSAkdGhpcy0+Z2V0QWxsQmV0d2Vlbigkcm93LT50ZXh0LCAkdGhpcy0+X3dobWNzX3Z1ZSwgJHRoaXMtPl9jbG9zaW5nKTsNCgkJLy8gdXBkYXRlIGlmIGZvdW5kDQoJCSR0aGlzLT5fZG9WdWUoJHJvdy0+dGV4dCwgJGFjdGlvbnMpOw0KCQkvLyBnZXQgYWxsIGFjdGlvbnMgY2FsbHMNCgkJJGFjdGlvbnMgPSAkdGhpcy0+Z2V0QWxsQmV0d2Vlbigkcm93LT50ZXh0LCAkdGhpcy0+X3dobWNzX29wZW4sICR0aGlzLT5fY2xvc2luZyk7DQoJCS8vIHVwZGF0ZSBpZiBmb3VuZA0KCQkkdGhpcy0+X2RvV2htY3MoJHJvdy0+dGV4dCwgJGFjdGlvbnMpOw0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgdGhlIHdobWNzIHBsYWNlaG9sZGVyIG1ldGhvZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFjdGlvbnMgICAgIFRoZSBhY3Rpb24gY2FsbHMgYmVpbmcgbWFkZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIF9kb1dobWNzKCYkdGV4dCwgJGFjdGlvbnMpDQoJew0KCQkvLyBPbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYWN0aW9ucw0KCQlpZiAoJHRoaXMtPmNoZWNrQXJyYXkoJGFjdGlvbnMsIHRydWUpKQ0KCQl7DQoJCQkvLyBnZXQgdXNlcm5hbWUgaWYgbm90IHNldA0KCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVzZXJuYW1lKSkNCgkJCXsNCgkJCQkkdGhpcy0+dXNlcm5hbWUgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3VzZXJuYW1lJywgbnVsbCk7DQoJCQl9DQoJCQkvLyBnZXQgcGFzc3dvcmQgaWYgbm90IHNldA0KCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnBhc3N3b3JkKSkNCgkJCXsNCgkJCQkkdGhpcy0+cGFzc3dvcmQgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3Bhc3N3b3JkJywgbnVsbCk7DQoJCQl9DQoJCQkvLyBnZXQgdXJsIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT51cmwpKQ0KCQkJew0KCQkJCSR0aGlzLT51cmwgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3VybCcsIG51bGwpOw0KCQkJCS8vIGJ1aWxkIHNob3AgVVJMIGJhc2VkIG9uIGFmaWxpYXRpb24gc3RhdHVzDQoJCQkJJGFjdGl2YXRlX2FmZmlsaWF0ZSA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWN0aXZhdGVfYWZmaWxpYXRlX3Byb2dyYW0nLCAwKTsNCgkJCQlpZiAoMSA9PSAkYWN0aXZhdGVfYWZmaWxpYXRlKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPnNob3B1cmwgPSAkdGhpcy0+dXJsIC4gJy9hZmYucGhwP2FmZj0nIC4gKGludCkgJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZmZpbGlhdGVfaWQnLCAwKSAuICcmYT1hZGQnOyANCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHRoaXMtPnNob3B1cmwgPSAkdGhpcy0+dXJsIC4gJy9jYXJ0LnBocD9hPWFkZCc7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lZWRlZCBkZXRhaWxzIHRvIGNhbGwNCgkJCWlmICgkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVzZXJuYW1lKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnBhc3N3b3JkKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVybCkpDQoJCQl7DQoJCQkJLy8gZ2V0IGdsb2JhbCBjdXJyZW5jeQ0KCQkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT5jdXJyZW5jeSkpDQoJCQkJew0KCQkJCQkkdGhpcy0+Y3VycmVuY3kgPSBzdHJ0b3VwcGVyKCR0aGlzLT5wYXJhbXMtPmdldCgnY3VycmVuY3knLCAnVVNEJykpOw0KCQkJCX0NCgkJCQkvLyBnZXQgYXJyYXkgZ2x1ZQ0KCQkJCSRnbHVlID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhcnJheV9nbHVlJywgJywgJyk7DQoJCQkJLy8gc2V0IGVtcHR5IElEIGFycmF5DQoJCQkJJGlkcyA9IGFycmF5KCk7DQoJCQkJJGlkc19xdWVyeSA9IGFycmF5KCk7DQoJCQkJJGRlYnVnID0gZmFsc2U7DQoJCQkJLy8gdXBkYXRlcg0KCQkJCSR1cGRhdGUgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCRhY3Rpb25zIGFzICRxdWVyeSkNCgkJCQl7DQoJCQkJCS8vIGNsZWFyIG91dCB0aGUgY2FsbA0KCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJyc7DQoJCQkJCS8vIGdldCB0aGUgaW5wdXRzDQoJCQkJCSRxdWVyeUFycmF5ID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnfCcsIHRyaW0oJHF1ZXJ5KSkpOw0KCQkJCQkvLyBjb250aW51ZSBvbmx5IGlmIHdlIGhhdmUgdmFsdWVzDQoJCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcXVlcnlBcnJheSwgdHJ1ZSkpDQoJCQkJCXsNCgkJCQkJCS8vIG9ubHkgb25lIElEIHBlci9xdWVyeQ0KCQkJCQkJJHNlYXJjaCA9IHRydWU7DQoJCQkJCQlmb3JlYWNoICgkcXVlcnlBcnJheSBhcyAkcXVlcnlWYWx1ZSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgaWQgcXVlcnkNCgkJCQkJCQlpZiAoJHNlYXJjaCAmJiBpc19udW1lcmljKCRxdWVyeVZhbHVlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRpZCA9IChpbnQpICRxdWVyeVZhbHVlOw0KCQkJCQkJCQkvLyBzZXQgdGhlIHByb2R1Y3QgSUQgYXJyYXkNCgkJCQkJCQkJJGlkc1skaWRdID0gJGlkOw0KCQkJCQkJCQkvLyBtYWtlIHN1cmUgdGhlIGFycmF5IGlzIHNldA0KCQkJCQkJCQlpZiAoIWlzc2V0KCRpZHNfcXVlcnlbJGlkXSkpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRpZHNfcXVlcnlbJGlkXSA9IGFycmF5KCk7DQoJCQkJCQkJCX0NCgkJCQkJCQkJLy8gd2Ugc2V0IHRoZSBidWlsZGVyIHF1ZXJ5DQoJCQkJCQkJCSRpZHNfcXVlcnlbJGlkXVskcXVlcnldID0gICR0aGlzLT5tZXJnZUFycmF5cyhhcnJheV9tYXAoIGZ1bmN0aW9uICgkdmFsKSB1c2UoJGlkKSB7DQoJCQkJCQkJCQkvLyBtYWtlIHN1cmUgaXQgaXMgbm90IGFuIElEDQoJCQkJCQkJCQlpZiAoIWlzX251bWVyaWMoJHZhbCkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJLy8gc2V0IHNvbWUgb3B0aW9ucw0KCQkJCQkJCQkJCSRsb3dlciA9IHN0cnRvbG93ZXIoJHZhbCk7DQoJCQkJCQkJCQkJJHVwcGVyID0gc3RydG91cHBlcigkdmFsKTsNCgkJCQkJCQkJCQlpZiAoJGxvd2VyID09PSAnbW9udGhseScgfHwgJGxvd2VyID09PSAncXVhcnRlcmx5JyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdzZW1pYW5udWFsbHknIHx8ICRsb3dlciA9PT0gJ2FubnVhbGx5JyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdiaWVubmlhbGx5JyB8fCAkbG93ZXIgPT09ICd0cmllbm5pYWxseScgfHwNCgkJCQkJCQkJCQkJJGxvd2VyID09PSAnbXNldHVwZmVlJyB8fCAkbG93ZXIgPT09ICdxc2V0dXBmZWUnIHx8DQoJCQkJCQkJCQkJCSRsb3dlciA9PT0gJ3NzZXR1cGZlZScgfHwgJGxvd2VyID09PSAnYXNldHVwZmVlJyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdic2V0dXBmZWUnIHx8ICRsb3dlciA9PT0gJ3RzZXR1cGZlZScgKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJLy8gbWFwIElEIHRvIHRlcm0NCgkJCQkJCQkJCQkJcmV0dXJuIGFycmF5KCAndGVybScgPT4gJGxvd2VyKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJZWxzZWlmICgkbG93ZXIgPT09ICR2YWwgJiYgJ2RlYnVnJyAhPT0gJHZhbCkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCS8vIG1hcCBJRCB0byB0eXBlIG9wdGlvbg0KCQkJCQkJCQkJCQlyZXR1cm4gYXJyYXkoICd0eXBlJyA9PiAkbG93ZXIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlaWYgKCR1cHBlciA9PT0gJHZhbCkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCS8vIG1hcCBJRCB0byBjdXJyZW5jeQ0KCQkJCQkJCQkJCQlyZXR1cm4gYXJyYXkoICdjdXJyZW5jeScgPT4gJHVwcGVyKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlyZXR1cm4gYXJyYXkoJ2lkJyA9PiAkaWQpOw0KCQkJCQkJCQl9LCAkcXVlcnlBcnJheSkpOw0KCQkJCQkJCQkvLyBvbmx5IG9uZSBJRCBwZXIvcXVlcnkNCgkJCQkJCQkJJHNlYXJjaCA9IGZhbHNlOw0KCQkJCQkJCX0NCgkJCQkJCQllbHNlaWYgKCFpc19udW1lcmljKCRxdWVyeVZhbHVlKSAmJiBzdHJ0b2xvd2VyKCRxdWVyeVZhbHVlKSA9PT0gJ2RlYnVnJykNCgkJCQkJCQl7DQoJCQkJCQkJCSRkZWJ1ZyA9IHRydWU7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGdldCB0aGUgcHJvZHVjdHMNCgkJCQlpZiAoKCRwcm9kdWN0cyA9ICR0aGlzLT5nZXRQcm9kdWN0cygkaWRzKSkgIT09IGZhbHNlKQ0KCQkJCXsNCgkJCQkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3MNCgkJCQkJaWYgKCRwcm9kdWN0cy0+cmVzdWx0ID09PSAnc3VjY2VzcycpDQoJCQkJCXsNCgkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0cy0+cHJvZHVjdHMtPnByb2R1Y3QgYXMgJHByb2R1Y3QpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKGlzc2V0KCRpZHNfcXVlcnlbJHByb2R1Y3QtPnBpZF0pKQ0KCQkJCQkJCXsNCgkJCQkJCQkJZm9yZWFjaCAoJGlkc19xdWVyeVskcHJvZHVjdC0+cGlkXSBhcyAkcXVlcnkgPT4gJHRyaWdnZXJzKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkvLyBzZXQgdGhlIGRldGFpbHMNCgkJCQkJCQkJCWlmIChpc3NldCgkdHJpZ2dlcnNbJ3R5cGUnXSkgJiYgJ3VybCcgIT09ICR0cmlnZ2Vyc1sndHlwZSddICYmIGlzc2V0KCRwcm9kdWN0LT57JHRyaWdnZXJzWyd0eXBlJ119KSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQlpZiAoJHRoaXMtPmNoZWNrU3RyaW5nKCRwcm9kdWN0LT57JHRyaWdnZXJzWyd0eXBlJ119KSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc19vcGVuIC4gICRxdWVyeSAuICR0aGlzLT5fY2xvc2luZ10gPSAkcHJvZHVjdC0+eyR0cmlnZ2Vyc1sndHlwZSddfTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJZWxzZWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcHJvZHVjdC0+eyR0cmlnZ2Vyc1sndHlwZSddfSkpDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gaW1wbG9kZSgkZ2x1ZSwgJHByb2R1Y3QtPnskdHJpZ2dlcnNbJ3R5cGUnXX0pOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkvLyBzZXQgdGhlIGN1cnJlbmN5DQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1snY3VycmVuY3knXSkpDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkY3VycmVuY3kgPSAkdHJpZ2dlcnNbJ2N1cnJlbmN5J107DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSRjdXJyZW5jeSA9ICR0aGlzLT5jdXJyZW5jeTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJLy8gc2V0IHRoZSB0ZXJtDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1sndGVybSddKSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR0ZXJtID0gJHRyaWdnZXJzWyd0ZXJtJ107DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR0ZXJtID0gJ21vbnRobHknOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkvLyBzZXQgdXJsDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1sndHlwZSddKSAmJiAndXJsJyA9PT0gJHRyaWdnZXJzWyd0eXBlJ10pDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQlpZiAoaXNzZXQoJHByb2R1Y3QtPnVybHMtPnskY3VycmVuY3l9LT57JHRlcm19KSkNCgkJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkJaWYgKCdtb250aGx5JyA9PT0gJHRlcm0pDQoJCQkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX29wZW4gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICBzdHJfcmVwbGFjZSgnJmJpbGxpbmdjeWNsZT1tb250aGx5JywgJycsICRwcm9kdWN0LT51cmxzLT57JGN1cnJlbmN5fS0+eyR0ZXJtfSk7DQoJCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQllbHNlDQoJCQkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX29wZW4gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICRwcm9kdWN0LT51cmxzLT57JGN1cnJlbmN5fS0+eyR0ZXJtfTsNCgkJCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkvLyBzZXQgcHJpY2UNCgkJCQkJCQkJCQllbHNlaWYgKGlzc2V0KCRwcm9kdWN0LT5wcmljaW5nLT57JGN1cnJlbmN5fS0+eyR0ZXJtfSkgJiYgJzAuMDAnICE9PSAkcHJvZHVjdC0+cHJpY2luZy0+eyRjdXJyZW5jeX0tPnskdGVybX0pDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJHByb2R1Y3QtPnByaWNpbmctPnskY3VycmVuY3l9LT5wcmVmaXggLiAnICcgLiAkcHJvZHVjdC0+cHJpY2luZy0+eyRjdXJyZW5jeX0tPnskdGVybX07DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJfQ0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCS8vIGRlYnVnDQoJCQkJCWlmICgkZGVidWcpDQoJCQkJCXsNCgkJCQkJCSR0ZXh0IC49ICc8YnIgLz48cHJlPicgLiBqc29uX2VuY29kZSgkcHJvZHVjdHMsIEpTT05fUFJFVFRZX1BSSU5UKSAuICc8L3ByZT4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIHVwZGF0ZSB0aGUgdGV4dA0KCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkdXBkYXRlKSkNCgkJCQl7DQoJCQkJCSR0ZXh0ID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdXBkYXRlKSwgYXJyYXlfdmFsdWVzKCR1cGRhdGUpLCAkdGV4dCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyB0aGUgdnVlIG1ldGhvZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFjdGlvbnMgICAgIFRoZSBhY3Rpb24gY2FsbHMgYmVpbmcgbWFkZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIF9kb1Z1ZSgmJHRleHQsICRhY3Rpb25zKQ0KCXsNCgkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGFjdGlvbnMNCgkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRhY3Rpb25zLCB0cnVlKSkNCgkJew0KCQkJLy8gZ2V0IHVzZXJuYW1lIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT51c2VybmFtZSkpDQoJCQl7DQoJCQkJJHRoaXMtPnVzZXJuYW1lID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCd1c2VybmFtZScsIG51bGwpOw0KCQkJfQ0KCQkJLy8gZ2V0IHBhc3N3b3JkIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT5wYXNzd29yZCkpDQoJCQl7DQoJCQkJJHRoaXMtPnBhc3N3b3JkID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdwYXNzd29yZCcsIG51bGwpOw0KCQkJfQ0KCQkJLy8gZ2V0IHVybCBpZiBub3Qgc2V0DQoJCQlpZiAoISR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXJsKSkNCgkJCXsNCgkJCQkkdGhpcy0+dXJsID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCd1cmwnLCBudWxsKTsNCgkJCQkvLyBidWlsZCBzaG9wIFVSTCBiYXNlZCBvbiBhZmlsaWF0aW9uIHN0YXR1cw0KCQkJCSRhY3RpdmF0ZV9hZmZpbGlhdGUgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FjdGl2YXRlX2FmZmlsaWF0ZV9wcm9ncmFtJywgMCk7DQoJCQkJaWYgKDEgPT0gJGFjdGl2YXRlX2FmZmlsaWF0ZSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5zaG9wdXJsID0gJHRoaXMtPnVybCAuICcvYWZmLnBocD9hZmY9JyAuIChpbnQpICR0aGlzLT5wYXJhbXMtPmdldCgnYWZmaWxpYXRlX2lkJywgMCkgLiAnJmE9YWRkJzsgDQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSR0aGlzLT5zaG9wdXJsID0gJHRoaXMtPnVybCAuICcvY2FydC5waHA/YT1hZGQnOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGFkZCB2dWUgdG8gdGhlIGhlYWRlciBvZiB0aGUgZG9jdW1lbnQgaWYgbmVlZGVkIChkZWZhdWx0IHRydWUpDQoJCQlpZiAoJHRoaXMtPmFkZFZ1ZSAmJiAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF92dWUnLCAxKSkNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXREb2N1bWVudCgpLT5hZGRTY3JpcHQoSm9vbWxhX19fZWVjYzE0M2VfYjVjZl80YzMzX2JhNGRfOTdkYTFkZjYxNDIyX19fUG93ZXI6OnJvb3QodHJ1ZSkgLicvcGx1Z2lucy9jb250ZW50L3dobWNzcHJvZHVjdHMvanMvdnVlLm1pbi5qcycsIGFycmF5KCd2ZXJzaW9uJyA9PiAnYXV0bycpKTsNCgkJCX0NCgkJCS8vIGRvIG5vdCBhZGQgdnVlIGFnYWluDQoJCQkkdGhpcy0+YWRkVnVlID0gZmFsc2U7DQoJCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgbmVlZGVkIGRldGFpbHMgdG8gY2FsbA0KCQkJaWYgKCR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXNlcm5hbWUpICYmICR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+cGFzc3dvcmQpICYmICR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXJsKSkNCgkJCXsNCgkJCQkvLyBnZXQgZ2xvYmFsIGN1cnJlbmN5DQoJCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPmN1cnJlbmN5KSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5jdXJyZW5jeSA9IHN0cnRvdXBwZXIoJHRoaXMtPnBhcmFtcy0+Z2V0KCdjdXJyZW5jeScsICdVU0QnKSk7DQoJCQkJfQ0KCQkJCS8vIHVwZGF0ZXINCgkJCQkkdXBkYXRlID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkcXVlcnkpDQoJCQkJew0KCQkJCQkvLyBjbGVhciBvdXQgdGhlIGNhbGwNCgkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX3Z1ZSAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJyc7DQoJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc192dWVfIC4gICRxdWVyeSAuICR0aGlzLT5fY2xvc2luZ10gPSAnJzsNCgkJCQkJLy8gZ2V0IHRoZSBpbnB1dHMNCgkJCQkJJHF1ZXJ5QXJyYXkgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCd8JywgdHJpbSgkcXVlcnkpKSk7DQoJCQkJCS8vIGNvbnRpbnVlIG9ubHkgaWYgd2UgaGF2ZSB2YWx1ZXMNCgkJCQkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRxdWVyeUFycmF5LCB0cnVlKSkNCgkJCQkJew0KCQkJCQkJLy8gc2V0IHRoaXMNCgkJCQkJCSRpZHMgPSBhcnJheSgpOw0KCQkJCQkJJHR5cGUgPSAncGlkJzsNCgkJCQkJCSRkZWJ1ZyA9IGZhbHNlOw0KCQkJCQkJJGN1cnJlbmN5ID0gJHRoaXMtPmN1cnJlbmN5Ow0KCQkJCQkJZm9yZWFjaCAoJHF1ZXJ5QXJyYXkgYXMgJHF1ZXJ5VmFsdWUpDQoJCQkJCQl7DQoJCQkJCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIGlkIHF1ZXJ5DQoJCQkJCQkJaWYgKGlzX251bWVyaWMoJHF1ZXJ5VmFsdWUpKQ0KCQkJCQkJCXsNCgkJCQkJCQkJJGlkc1soaW50KSAkcXVlcnlWYWx1ZV0gPSAoaW50KSAkcXVlcnlWYWx1ZTsNCgkJCQkJCQl9DQoJCQkJCQkJZWxzZWlmICgkdGhpcy0+Y2hlY2tTdHJpbmcoJHF1ZXJ5VmFsdWUpKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gc2V0IHNvbWUgb3B0aW9ucw0KCQkJCQkJCQkkbG93ZXIgPSBzdHJ0b2xvd2VyKCRxdWVyeVZhbHVlKTsNCgkJCQkJCQkJJHVwcGVyID0gc3RydG91cHBlcigkcXVlcnlWYWx1ZSk7DQoJCQkJCQkJCWlmICgkbG93ZXIgPT09ICdwaWQnIHx8ICRsb3dlciA9PT0gJ2dpZCcpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCS8vIHdlIGNhbiBvbmx5IGhhdmUgb25lIHR5cGUgKGRvIG5vdCBtaXggdGhlbSkNCgkJCQkJCQkJCSR0eXBlID0gc3RydG9sb3dlcigkcXVlcnlWYWx1ZSk7DQoJCQkJCQkJCX0NCgkJCQkJCQkJZWxzZWlmICgkbG93ZXIgPT09ICdkZWJ1ZycpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRkZWJ1ZyA9IHRydWU7DQoJCQkJCQkJCX0NCgkJCQkJCQkJZWxzZWlmICgkdXBwZXIgPT09ICRxdWVyeVZhbHVlKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkY3VycmVuY3kgPSAkdXBwZXI7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQkvLyBnZXQgcHJvZHVjdHMNCgkJCQkJCWlmICgoJHByb2R1Y3RzID0gJHRoaXMtPmdldFByb2R1Y3RzKCRpZHMsICR0eXBlLCAkY3VycmVuY3kpKSAhPT0gZmFsc2UpDQoJCQkJCQl7DQoJCQkJCQkJLy8gdGhpcyBhcHAgYmxvY2sgaXNvbGF0aW9uIElEDQoJCQkJCQkJJGFwcElEID0gJHRoaXMtPnJhbmRvbWtleSgxMCk7DQoJCQkJCQkJJHByb2R1Y3RzLT5hcHBfaWQgPSAkYXBwSUQ7DQoJCQkJCQkJJGRhdGEgPSBqc29uX2VuY29kZSgkcHJvZHVjdHMpOw0KCQkJCQkJCS8vIGFkZCB0aGUgYXBwIGRpdg0KCQkJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc192dWUgLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICI8ZGl2IGlkPSckYXBwSUQnPiI7DQoJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX3Z1ZV8gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICI8L2Rpdj48c2NyaXB0PnZhciBkYXRhJGFwcElEID0gJGRhdGE7dmFyIGFwcCRhcHBJRCA9IG5ldyBWdWUoe2VsOiAnIyRhcHBJRCcsIGRhdGE6IGRhdGEkYXBwSUR9KTs8L3NjcmlwdD4iOw0KCQkJCQkJCS8vIGRlYnVnDQoJCQkJCQkJaWYgKCRkZWJ1ZykNCgkJCQkJCQl7DQoJCQkJCQkJCSR0ZXh0IC49ICc8YnIgLz48cHJlPicgLiBqc29uX2VuY29kZSgkcHJvZHVjdHMsIEpTT05fUFJFVFRZX1BSSU5UKSAuICc8L3ByZT4nOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQkvLyB1cGRhdGUgdGhlIHRleHQNCgkJCQlpZiAoJHRoaXMtPmNoZWNrQXJyYXkoJHVwZGF0ZSkpDQoJCQkJew0KCQkJCQkkdGV4dCA9IHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHVwZGF0ZSksIGFycmF5X3ZhbHVlcygkdXBkYXRlKSwgJHRleHQpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgZ2V0cyB0aGUgcHJvZHVjdHMNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGlkcyAgICAgICAgVGhlIGlkcyB0byBnZXQNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdHlwZSAgICAgVGhlIHR5cGUgb2YgaWRzDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGN1cnJlbmN5ICAgICBUaGUgYWN0aXZlIGN1cnJlbmN5IGZvciB0aGlzIGJsb2NrDQoJICoNCgkgKiBAcmV0dXJuICBvYmplY3QNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRQcm9kdWN0cygkaWRzLCAkdHlwZSA9ICdwaWQnLCAkY3VycmVuY3kgPSAnVVNEJykNCgl7DQoJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkaWRzKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHR5cGUpKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIG1lbW9yeSBrZXkNCgkJCSRrZXkgPSBtZDUoc2VyaWFsaXplKCRpZHMpIC4gJHR5cGUpOw0KCQkJLy8gY2hlY2sgaWYgdGhlc2Ugd2VyZSBhbHJlYWR5IHNldA0KCQkJaWYgKGlzc2V0KCR0aGlzLT5wcm9kdWN0c1ska2V5XSkpDQoJCQl7DQoJCQkJLy8gbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGN1cnJlbmN5IGlzIGFjdGl2ZQ0KCQkJCWZvcmVhY2ggKCR0aGlzLT5wcm9kdWN0c1ska2V5XS0+cHJvZHVjdHMtPnByb2R1Y3QgYXMgJiRwcm9kdWN0KQ0KCQkJCXsNCgkJCQkJJHByb2R1Y3QtPmFjdGl2ZV9jdXJyZW5jeSA9ICRjdXJyZW5jeTsNCgkJCQl9DQoJCQkJcmV0dXJuICR0aGlzLT5wcm9kdWN0c1ska2V5XTsNCgkJCX0NCgkJCS8vIHdlIG1ha2UgYSBuZXcgY2FsbA0KCQkJJGNoID0gY3VybF9pbml0KCk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdGhpcy0+dXJsIC4gJy9pbmNsdWRlcy9hcGkucGhwJyk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywNCgkJCQlodHRwX2J1aWxkX3F1ZXJ5KA0KCQkJCQlhcnJheSgNCgkJCQkJCSdhY3Rpb24nID0+ICdHZXRQcm9kdWN0cycsDQoJCQkJCQkndXNlcm5hbWUnID0+ICR0aGlzLT51c2VybmFtZSwNCgkJCQkJCSdwYXNzd29yZCcgPT4gJHRoaXMtPnBhc3N3b3JkLA0KCQkJCQkJJHR5cGUgPT4gaW1wbG9kZSgnLCcsICRpZHMpLA0KCQkJCQkJJ3Jlc3BvbnNldHlwZScgPT4gJ2pzb24nDQoJCQkJCSkNCgkJCQkpDQoJCQkpOw0KCQkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCgkJCSRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOw0KCQkJY3VybF9jbG9zZSgkY2gpOw0KCQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgYSBqc29uIHN0cmluZw0KCQkJaWYgKCR0aGlzLT5jaGVja0pzb24oJHJlc3BvbnNlKSkNCgkJCXsNCgkJCQkvLyB3ZSBtdXN0IHNldCBhIGZldyBkZXRhaWxzDQoJCQkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsNCgkJCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgc3VjY2Vzcw0KCQkJCWlmICgkcmVzcG9uc2UtPnJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKQ0KCQkJCXsNCgkJCQkJLy8gc2V0IHRoZSBnbG9iYWwgYXZhaWxhYmxlIGN1cnJlbmNpZXMNCgkJCQkJJHJlc3BvbnNlLT5jdXJyZW5jeSA9ICRjdXJyZW5jeTsNCgkJCQkJaWYgKCFpc3NldCgkcmVzcG9uc2UtPmN1cnJlbmNpZXNfc2V0KSkNCgkJCQkJew0KCQkJCQkJJGN1cnJlbmNpZXMgPSAkdGhpcy0+Z2V0Q3VycmVuY2llcygpOw0KCQkJCQl9DQoJCQkJCS8vIGNoZWNrIGlmIHdlIHN1Y2NlZWRlZA0KCQkJCQlpZiAoJHRoaXMtPmNoZWNrT2JqZWN0KCRjdXJyZW5jaWVzKSAmJiAkY3VycmVuY2llcy0+cmVzdWx0ID09PSAnc3VjY2VzcycpDQoJCQkJCXsNCgkJCQkJCSRyZXNwb25zZS0+Y3VycmVuY2llc19zZXQgPSB0cnVlOw0KCQkJCQkJJHJlc3BvbnNlLT5jdXJyZW5jaWVzID0gJGN1cnJlbmNpZXMtPmN1cnJlbmNpZXMtPmN1cnJlbmN5Ow0KCQkJCQkJLy8gbm93IGdldCB0aGUgYWN0aXZlIGN1cnJlbmN5IFVSTCBpZA0KCQkJCQkJZm9yZWFjaCAoJHJlc3BvbnNlLT5jdXJyZW5jaWVzIGFzICRfY3VycmVuY3kpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCRjdXJyZW5jeSA9PT0gJF9jdXJyZW5jeS0+Y29kZSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRyZXNwb25zZS0+Y3VycmVuY3lfaWQgPSAkX2N1cnJlbmN5LT5pZDsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkkcmVzcG9uc2UtPmN1cnJlbmNpZXNfc2V0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJLy8gbWF0aCBmb3IgbW9udGhseSBiaWxsaW5nIG1hcHBpbmcNCgkJCQkJJGRpdmlkZSA9IGFycmF5KCdxdWFydGVybHknID0+IDMsICdzZW1pYW5udWFsbHknID0+IDYsICdhbm51YWxseScgPT4gMTIsICdiaWVubmlhbGx5JyA9PiAyNCwgJ3RyaWVubmlhbGx5JyA9PiAzNik7DQoJCQkJCS8vIHNldCB3aG1jcyBzZXR0aW5ncyB0YWdzDQoJCQkJCSR3aG1jc19vcGVuID0gJzwnIC4gJHRoaXMtPl93aG1jczsNCgkJCQkJLy8gc2V0IGNsb3NpbmcgdGFnDQoJCQkJCSR3aG1jc19jbG9zaW5nID0gJzwvJyAuICR0aGlzLT5fd2htY3MgLiAnPic7DQoJCQkJCS8vIHJlbW92ZSB0aGVzZSBmcm9tIGRlc2NyaXB0aW9uDQoJCQkJCSRyZW1vdmVfZGVzYyA9IGFycmF5KCc8IS0tLS0tLS0nID0+ICcnLCAnLS0tLS0tLT4nID0+ICcnKTsNCgkJCQkJJGZpeF91cmwgPSBhcnJheSgnaHR0cHMtLy8nID0+ICdodHRwczovLycsICdodHRwLS8vJyA9PiAnaHR0cDovLycpOw0KCQkJCQlmb3JlYWNoICgkcmVzcG9uc2UtPnByb2R1Y3RzLT5wcm9kdWN0IGFzICRwcm9kdWN0KQ0KCQkJCQl7DQoJCQkJCQkvLyB3ZSBzZXQgdGhlIG1haW4gVVJMDQoJCQkJCQlpZiAoaXNzZXQoJHJlc3BvbnNlLT5jdXJyZW5jeV9pZCkpDQoJCQkJCQl7DQoJCQkJCQkJJHByb2R1Y3QtPnVybCA9ICR0aGlzLT5zaG9wdXJsIC4gJyZwaWQ9JyAuICRwcm9kdWN0LT5waWQgLiAnJmN1cnJlbmN5PScgLiAkcmVzcG9uc2UtPmN1cnJlbmN5X2lkOw0KCQkJCQkJfQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCSRwcm9kdWN0LT51cmwgPSAkdGhpcy0+c2hvcHVybCAuICcmcGlkPScgLiAkcHJvZHVjdC0+cGlkOw0KCQkJCQkJfQ0KCQkJCQkJLy8gd2Ugc2V0IHRoZSBhIHVybCBmb3IgZWFjaCBjdXJyZW5jeQ0KCQkJCQkJJHByb2R1Y3QtPnVybHMgPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkkcHJvZHVjdC0+bW9udGhseSA9IG5ldyBcc3RkQ2xhc3MoKTsNCgkJCQkJCWZvcmVhY2ggKCRyZXNwb25zZS0+Y3VycmVuY2llcyBhcyAkX2N1cnJlbmN5KQ0KCQkJCQkJew0KCQkJCQkJCS8vIG9ubHkgYWRkIGlmIHdlIGhhdmUgYSBwcmljZSBmb3IgdGhhdCBjdXJyZW5jeQ0KCQkJCQkJCWlmIChpc3NldCgkcHJvZHVjdC0+cHJpY2luZy0+eyRfY3VycmVuY3ktPmNvZGV9KSAgJiYgJHRoaXMtPmNoZWNrT2JqZWN0KCRwcm9kdWN0LT5wcmljaW5nLT57JF9jdXJyZW5jeS0+Y29kZX0pKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gY3VycmVuY3kgJiBiaWxsaW5nY3ljbGUgdXJsDQoJCQkJCQkJCSRwcm9kdWN0LT51cmxzLT57JF9jdXJyZW5jeS0+Y29kZX0gPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkJCSRwcm9kdWN0LT5tb250aGx5LT57JF9jdXJyZW5jeS0+Y29kZX0gPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0LT5wcmljaW5nLT57JF9jdXJyZW5jeS0+Y29kZX0gYXMgJGJpbGxpbmdjeWNsZSA9PiAkY29zdCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJaWYgKGlzX251bWVyaWMoJGNvc3QpICYmICcwLjAwJyAhPT0gJGNvc3QgJiYgKCdtb250aGx5JyA9PT0gJGJpbGxpbmdjeWNsZSB8fCBpc3NldCgkZGl2aWRlWyRiaWxsaW5nY3ljbGVdKSkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJHByb2R1Y3QtPnVybHMtPnskX2N1cnJlbmN5LT5jb2RlfS0+eyRiaWxsaW5nY3ljbGV9ID0gJHRoaXMtPnNob3B1cmwgLiAnJnBpZD0nIC4gJHByb2R1Y3QtPnBpZCAuICcmY3VycmVuY3k9JyAuICRfY3VycmVuY3ktPmlkIC4gJyZiaWxsaW5nY3ljbGU9JyAuICRiaWxsaW5nY3ljbGU7DQoJCQkJCQkJCQkJLy8gc2V0IHRoZSBtb250aGx5IHByaWNlDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCRkaXZpZGVbJGJpbGxpbmdjeWNsZV0pKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHByb2R1Y3QtPm1vbnRobHktPnskX2N1cnJlbmN5LT5jb2RlfS0+eyRiaWxsaW5nY3ljbGV9ID0gJHRoaXMtPmJjbWF0aCgnZGl2JywgJGNvc3QsICRkaXZpZGVbJGJpbGxpbmdjeWNsZV0sIDIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlaWYgKCdtb250aGx5JyA9PT0gJGJpbGxpbmdjeWNsZSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSRwcm9kdWN0LT5tb250aGx5LT57JF9jdXJyZW5jeS0+Y29kZX0tPnskYmlsbGluZ2N5Y2xlfSA9ICRjb3N0Ow0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIHNldCB0aGUgZ2xvYmFsIGF2YWlsYWJsZSBwYXltZW50IG9wdGlvbnMgKHllcyB0aGUgZmlyc3QgcHJvZHVjdCBzZXRzIHRoZSBzdGFnZSkNCgkJCQkJCWlmICghaXNzZXQoJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnNfc2V0KSAmJiAncmVjdXJyaW5nJyA9PT0gJHByb2R1Y3QtPnBheXR5cGUgJiYgaXNzZXQoJHByb2R1Y3QtPnByaWNpbmctPiRjdXJyZW5jeSkpDQoJCQkJCQl7DQoJCQkJCQkJJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnMgPSBhcnJheSgpOw0KCQkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0LT5wcmljaW5nLT4kY3VycmVuY3kgYXMgJGsgPT4gJHYpDQoJCQkJCQkJew0KCQkJCQkJCQlpZiAoaXNfbnVtZXJpYygkdikgJiYgJzAuMDAnICE9PSAkdiAmJiBzdHJwb3MoJGssICdzZXR1cGZlZScpID09PSBmYWxzZSkNCgkJCQkJCQkJew0KCQkJCQkJCQkJJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnNbXSA9ICRrOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCS8vIGNoZWNrIGlmIHdlIHN1Y2NlZWRlZA0KCQkJCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9ucykpDQoJCQkJCQkJew0KCQkJCQkJCQkkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9uc19zZXQgPSB0cnVlOw0KCQkJCQkJCQkkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9uID0gJ21vbnRobHknOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIG5vdyBleHRyYWN0IHRoZSBzZXR0aW5ncw0KCQkJCQkJJHNldHRpbmdzID0gJHRoaXMtPmdldEFsbEJldHdlZW4oJHByb2R1Y3QtPmRlc2NyaXB0aW9uLCAkd2htY3Nfb3BlbiwgJHdobWNzX2Nsb3NpbmcpOw0KCQkJCQkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRzZXR0aW5ncykpDQoJCQkJCQl7DQoJCQkJCQkJZm9yZWFjaCAoJHNldHRpbmdzIGFzICRzZXR0aW5nKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGVzZSBzZXR0aW5ncw0KCQkJCQkJCQkkcmVtb3ZlX2Rlc2NbJHdobWNzX29wZW4gLiAkc2V0dGluZyAuICR3aG1jc19jbG9zaW5nXSA9ICcnOw0KCQkJCQkJCQkvLyBvbmx5IGNvbnRpbnVlIGlmIHNldCBjb3JyZWN0bHkNCgkJCQkJCQkJaWYgKHN0cnBvcygkc2V0dGluZywgJz4nKSAhPT0gZmFsc2UpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRzZXR0aW5nID0gdHJpbShleHBsb2RlKCc+JywgdHJpbSgkc2V0dGluZykpWzBdKTsNCgkJCQkJCQkJCWlmIChzdHJwb3MoJHNldHRpbmcsICc9JykgIT09IGZhbHNlKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRzZXR0aW5nID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnPScsICRzZXR0aW5nKSk7DQoJCQkJCQkJCQkJJHNfa2V5ID0gYXJyYXlfc2hpZnQoJHNldHRpbmcpOw0KCQkJCQkJCQkJCS8vIGNvbGxhcHNlIHRvIHN0cmluZyBhZ2Fpbg0KCQkJCQkJCQkJCSRzZXR0aW5nID0gaW1wbG9kZSgnJywgJHNldHRpbmcpOw0KCQkJCQkJCQkJCWlmIChzdHJwb3MoJHNldHRpbmcsICd8JykgIT09IGZhbHNlKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHByb2R1Y3QtPnskc19rZXl9ID0gYXJyYXlfbWFwKGZ1bmN0aW9uKCR2KSB1c2UoJGZpeF91cmwpew0KCQkJCQkJCQkJCQkJcmV0dXJuIHRyaW0oc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkZml4X3VybCksIGFycmF5X3ZhbHVlcygkZml4X3VybCksICR2KSk7DQoJCQkJCQkJCQkJCX0sIGV4cGxvZGUoJ3wnLCAkc2V0dGluZykpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkcHJvZHVjdC0+eyRzX2tleX0gPSBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCRmaXhfdXJsKSwgYXJyYXlfdmFsdWVzKCRmaXhfdXJsKSwgJHNldHRpbmcpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWVsc2VpZiAoJHRoaXMtPmNoZWNrU3RyaW5nKCRzZXR0aW5nKSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkkcHJvZHVjdC0+eyRzZXR0aW5nfSA9IHRydWU7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQkvLyB1cGRhdGUgdGhlIGRlc2NyaXB0aW9ucw0KCQkJCQkJJHByb2R1Y3QtPmRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVtb3ZlX2Rlc2MpLCBhcnJheV92YWx1ZXMoJHJlbW92ZV9kZXNjKSwgJHByb2R1Y3QtPmRlc2NyaXB0aW9uKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkvLyBsb2FkIHRvIHBsdWdpbiBtZW1vcnkNCgkJCQkkdGhpcy0+cHJvZHVjdHNbJGtleV0gPSAkcmVzcG9uc2U7DQoJCQkJLy8gcmV0dXJuIG9iamVjdA0KCQkJCXJldHVybiAkdGhpcy0+cHJvZHVjdHNbJGtleV07DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgZ2V0cyB0aGUgY3VycmVuY2llcyANCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdHxmYWxzZQ0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEN1cnJlbmNpZXMoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jaGVja09iamVjdCgkdGhpcy0+Y3VycmVuY2llcykpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+Y3VycmVuY2llczsNCgkJfQ0KCQkvLyB3ZSBtYWtlIGEgbmV3IGNhbGwNCgkJJGNoID0gY3VybF9pbml0KCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR0aGlzLT51cmwgLiAnL2luY2x1ZGVzL2FwaS5waHAnKTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOw0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywNCgkJCWh0dHBfYnVpbGRfcXVlcnkoDQoJCQkJYXJyYXkoDQoJCQkJCSdhY3Rpb24nID0+ICdHZXRDdXJyZW5jaWVzJywNCgkJCQkJJ3VzZXJuYW1lJyA9PiAkdGhpcy0+dXNlcm5hbWUsDQoJCQkJCSdwYXNzd29yZCcgPT4gJHRoaXMtPnBhc3N3b3JkLA0KCQkJCQkncmVzcG9uc2V0eXBlJyA9PiAnanNvbicNCgkJCQkpDQoJCQkpDQoJCSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQoJCSRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOw0KCQljdXJsX2Nsb3NlKCRjaCk7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEganNvbiBzdHJpbmcNCgkJaWYgKCR0aGlzLT5jaGVja0pzb24oJHJlc3BvbnNlKSkNCgkJew0KCQkJLy8gbG9hZCB0byBwbHVnaW4gbWVtb3J5DQoJCQkkdGhpcy0+Y3VycmVuY2llcyA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSk7DQoJCQkvLyByZXR1cm4gb2JqZWN0DQoJCQlyZXR1cm4gJHRoaXMtPmN1cnJlbmNpZXM7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCltDVVNUT01DT0RFPXBsdWdpbkhlbHBlcnNdDQpbQ1VTVE9NQ09ERT10aGlzYmNtYXRoXQ==', 'WHMCSProducts', '', '', '', '', '', '', '', '1.0.3', '{\"property_selection0\":{\"property\":\"7\"},\"property_selection1\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'WHMCS Products', '', 1, '', '', 1, '2019-11-17 01:24:51', '2020-05-24 22:48:27', 84, '', 5),
(10, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add packaging (bundling of extentions) to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '63eb11cc-41ba-4c2f-82b3-94487b0caa12', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOyA=', 11, '{}', '', '[[[Component]]] Extention Packaging', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.1', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Extention Packaging', '', 1, '', '', 1, '2020-03-19 12:10:12', '2022-10-23 21:12:31', 6, '', 2),
(11, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.language_options\",\"fieldset\":\"language_options\",\"label\":\"Language Options\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2740\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2746\",\"custom_value\":\"1\"},\"fields3\":{\"field\":\"2745\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2742\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2741\",\"custom_value\":\"\"}}}}', '7f2c7689-0f46-41c8-ba69-e33cd92cb20f', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5qb29tbGFfY29tcG9uZW50JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnam9vbWxhX2NvbXBvbmVudCcpOw0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX0NCg==', '[[[Component]]] Language Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Tabs', '', 1, '', '', 1, '2020-03-19 15:27:41', '2022-10-23 21:12:31', 27, '', 2),
(12, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'The [[[core]]] branding override.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Company Details\",\"fields_rules_paths\":\"2\",\"fields\":{\"fields0\":{\"field\":\"681\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"1310\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"280\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"691\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"1169\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"1160\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"1156\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"1005\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"1006\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"1004\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"1008\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"1007\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2392\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"1311\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"1313\",\"custom_value\":\"\"}}}}', '32674996-ce5c-452a-9810-af715d5170e3', '', 11, '{}', 'LyoqDQoJICogQWZmZWN0cyBjb25zdHJ1Y3RvciBiZWhhdmlvci4gSWYgdHJ1ZSwgbGFuZ3VhZ2UgZmlsZXMgd2lsbCBiZSBsb2FkZWQgYXV0b21hdGljYWxseS4NCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIG9uR2V0Q29tcGFueURldGFpbHMuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25HZXRDb21wYW55RGV0YWlscygkZGV0YWlscywgJGYsICRiKQ0KCXsNCgkJLy8gYWRkIHlvdXIgY29kZSBoZXJlDQoJCXZhcl9kdW1wKCRkZXRhaWxzKTtqZXhpdCgpOw0KCX0NCg0KCS8qKg0KCSAqIG9uR2V0VGVtcGxhdGUuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25HZXRUZW1wbGF0ZSgkY29udGV4dCwgJGRldGFpbHMpDQoJew0KCQkvLyBhZGQgeW91ciBjb2RlIGhlcmUNCgkJdmFyX2R1bXAoJGNvbnRleHQsICRkZXRhaWxzKTtqZXhpdCgpOw0KCX0=', '[[[core]]]BrandingOverride', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb3JlXV1dIGlzIGluc3RhbGxlZA0KCQkJJHBhdGhUb0NvcmUgPSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb3JlXV1dL2hlbHBlcnMvW1tbY29yZV1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29yZV1dXSBtdXN0IGZpcnN0IGJlIGluc3RhbGxlZCBmcm9tIDxhIGhyZWY9IltbW2dldF9jb21wb25lbnRfbGlua11dXSIgdGFyZ2V0PSJfYmxhbmsiPltbW2NvbXBvbmVudF9saW5rX25hbWVdXV08L2E+LicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'CoreBrandingOverride', '', 1, '', '', 1, '2020-03-23 02:18:28', '2020-05-24 22:47:52', 15, '', 6),
(13, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom ordering to fields in the JCB list views.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.fieldordering\",\"fieldset\":\"fieldordering\",\"label\":\"Field Ordering\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2751\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2753\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2749\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2754\",\"custom_value\":\"\"}}}}', '5b21d4c5-fe7c-4d71-8eb9-1e6be3e2f662', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX0=', '[[[Component]]] Field Ordering Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Tabs', '', 1, '', '', 1, '2020-05-20 12:52:37', '2022-10-23 21:13:08', 23, '', 2),
(14, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the ordring for your component views during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your admin views where you would like to use Field Ordering.', '{}', '752b8c09-8848-4519-8c94-3e61c735935f', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow==', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJHZpZXctPnBhcmFtcyA9IChpc3NldCgkdmlldy0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+cGFyYW1zLCB0cnVlKSA6ICR2aWV3LT5wYXJhbXM7DQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSkpDQoJCXsNCgkJCWlmICgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9hZG1pbl9vcmRlcmluZyddID09IDENCgkJCQl8fCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9saW5rZWRfb3JkZXJpbmcnXSA9PSAxKQ0KCQkJew0KCQkJCS8vIHNldHVwIHRoZSB2aWV3IGtleSBuYW1lDQoJCQkJJG5hbWVfbGlzdCAgID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBsb2FkIHRoZSBhZG1pbiB2aWV3IGRldGFpbHMNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5WaWV3cy5EZWZhdWx0Lk9yZGVyaW5nJyktPnNldCgkbmFtZV9saXN0LCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pOw0KCQkJfQ0KCQl9DQoJfQ==', '[[[Component]]] Field Ordering Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.1.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Compiler', '', 1, '', '', 1, '2020-05-21 12:55:05', '2023-12-30 10:06:29', 20, '', 3),
(15, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the custom headers for your classes during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your code where you would like to set Custom Headers.', '{}', 'dff42201-b4d4-442d-85d4-aa3ca3104e37', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0K', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEdsb2JhbCBzd2l0Y2ggdG8gc2VlIGlmIGEgZmlsZSBoYXMgY3VzdG9tIGhlYWRlcnMuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsb2FkSGVhZGVycyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIGFjdGl2ZSBoZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCAkYWN0aXZlSGVhZGVycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgY29tcGlsZXIgcGxhY2Vob2xkZXJzIHZhbHVlcw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgJHBsYWNlaG9sZGVycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgcG93ZXJzIHRvIGluY2x1ZGUgaW4gcHJvamVjdA0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgJGxpbmtlZFBvd2VycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgVGFyZ2V0cw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjgNCgkgKi8NCglwcm90ZWN0ZWQgJHRhcmdldHMgPSBhcnJheSgNCgkJJ2FkbWluX3ZpZXdfaGVhZGVycycgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfYWRtaW5fdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfYWRtaW5fdmlld19odG1sJyAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmFkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX3NpbmdsZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfaW1wb3J0X2N1c3RvbV9jb250cm9sbGVyJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdpbXBvcnRfY3VzdG9tX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2ltcG9ydC5jdXN0b20uY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9pbXBvcnRfY3VzdG9tX21vZGVsJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdpbXBvcnRfY3VzdG9tX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdpbXBvcnQuY3VzdG9tLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKQ0KCQkJKSwNCgkJJ3NpdGVfdmlld19oZWFkZXJzJyAgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfc2l0ZV92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LnNpdGUubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2N1c3RvbV9hZG1pbl92aWV3X2hlYWRlcnMnICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2R5bmFtaWNfZ2V0X2hlYWRlcnMnICAgICAgICAgICA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3LmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlldycgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3LmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19tb2RlbCcgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9hamF4X21vZGVsJyAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpDQoJCQkpLA0KCQknY29tcG9uZW50X2Rhc2hib2FyZF9oZWFkZXJzJyA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9kYXNoYm9hcmRfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX3ZpZXcnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9kYXNoYm9hcmRfdmlld19odG1sJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9kYXNoYm9hcmRfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2Rhc2hib2FyZC5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdkYXNoYm9hcmQnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LmFkbWluLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdqb29tbGFfY29tcG9uZW50X2hlYWRlcnMnICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2FkbWluX2NvbXBvbmVudCcgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fY29tcG9uZW50JywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi5jb21wb25lbnQnLA0KCQkJCQkndmlldycgICAgPT4gJ2FkbWluJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2NvbXBvbmVudCcgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfY29tcG9uZW50JywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmNvbXBvbmVudCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnc2l0ZScNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5faGVscGVyJyAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl9oZWxwZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLmhlbHBlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWRtaW4nDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfaGVscGVyJyAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV9oZWxwZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUuaGVscGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdzaXRlJw0KCQkJCSkNCgkJCSkNCgkpOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkdmlldy0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQWRtaW4gVmlld3MNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCR2aWV3LT5wYXJhbXMsICR2aWV3LCAnYWRtaW5fdmlld19oZWFkZXJzJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgTW9kZWwgQ3VzdG9tIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4yDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZU1vZGVsQ3VzdG9tVmlld0RhdGEoJiR2aWV3LCAmJGlkLCAmJHRhYmxlKQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXMpKQ0KCQl7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBTaXRlIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ3NpdGVfdmlld19oZWFkZXJzJyk7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBDdXN0b20gQWRtaW4gVmlld3MNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCR2aWV3LT5wYXJhbXMsICR2aWV3LCAnY3VzdG9tX2FkbWluX3ZpZXdfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIER5bmFtaWMgR2V0IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuMTANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxEeW5hbWljR2V0RGF0YSgmJGR5bmFtaWNHZXQsICYkaWQsICYkY29kZSwgJiRhcmVhKQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCRkeW5hbWljR2V0LT5wYXJhbXMpKQ0KCQl7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBTaXRlIFZpZXdzDQoJCQkkdGhpcy0+c2V0RHluYW1pY0hlYWRlcnMoJGR5bmFtaWNHZXQtPnBhcmFtcywgJGNvZGUsICdkeW5hbWljX2dldF9oZWFkZXJzJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuNA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBjaGVjayB0aGF0IHRoZSBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgSm9vbWxhIENvbXBvbmVudA0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJGNvbXBvbmVudC0+cGFyYW1zLCAkY29tcG9uZW50LCAnam9vbWxhX2NvbXBvbmVudF9oZWFkZXJzJyk7DQoJCX0NCgkJLy8gY2hlY2sgdGhhdCB0aGUgZGFzaGJvYXJkIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkY29tcG9uZW50LT5kYXNoYm9hcmRfcGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQ29tcG9uZW50IERhc2hib2FyZA0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJGNvbXBvbmVudC0+ZGFzaGJvYXJkX3BhcmFtcywgJGNvbXBvbmVudCwgJ2NvbXBvbmVudF9kYXNoYm9hcmRfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gc2V0IENsYXNzIEhlYWRlcl0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfc2V0Q2xhc3NIZWFkZXIoJiRldmVudF9jb250ZXh0LCAmJHZpZXdfbmFtZSwgJiRoZWFkZXJzKQ0KCXsNCgkJaWYgKCR0aGlzLT5sb2FkSGVhZGVycyAmJiBpc3NldCgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXSkNCgkJCSYmIGlzc2V0KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRldmVudF9jb250ZXh0XSkNCgkJCSYmIGlzX2FycmF5KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRldmVudF9jb250ZXh0XSkpDQoJCXsNCgkJCS8vIHdvcmsgd2l0aCB0aGUgaGVhZGVyIHZhbHVlcyBhcyBrZXlzDQoJCQkkX2hlYWRlcnMgPSBhcnJheV9mbGlwKCRoZWFkZXJzKTsNCg0KCQkJLy8gbmV3IGhlYWRlcnMNCgkJCSRuZXcgPSAkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF07DQoNCgkJCS8vIG5vdyBhZGQgdGhlIG5ldyBoZWFkZXJzDQoJCQlmb3JlYWNoICgkbmV3IGFzICRuID0+ICRoZWFkZXIpDQoJCQl7DQoJCQkJLy8gaWYgYW4gZW1wdHkgbGluZSBpcyBmb3VuZCBqdXN0IHNraXAgaXQgDQoJCQkJLy8gd2UgY2hlY2sgaWYgdGhpcyBoZWFkZXIgaXMgYWxyZWFkeSBzZXQNCgkJCQlpZiAoZW1wdHkoJGhlYWRlcikgfHwgaXNzZXQoJF9oZWFkZXJzWyRoZWFkZXJdKSkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQkkaGVhZGVyc1tdID0gJGhlYWRlcjsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBHZXQgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuNg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGdldCBwbGFjZWhvbGRlcnMgZnJvbSB0aGUgY29tcGlsZXINCgkJJHRoaXMtPnBsYWNlaG9sZGVycyA9IENGYWN0b3J5OjpfKCdDb21wb25lbnQuUGxhY2Vob2xkZXInKS0+Z2V0KCk7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGFkZCB0aGUgcG93ZXJzIHRvIHRoZSBjb21wb25lbnQNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5saW5rZWRQb3dlcnMsIHRydWUpKQ0KCQl7DQoJCQlDRmFjdG9yeTo6XygnUG93ZXInKS0+bG9hZCgkdGhpcy0+bGlua2VkUG93ZXJzKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIHNldCB0aGUgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjgNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0SGVhZGVycygmJHBhcmFtcywgJiRvYmosICRrZXkpDQoJew0KCQkvLyBhZGQgdGhlIGhlYWRlcnMNCgkJJHBhcmFtcyA9IChTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zKSkgPyBqc29uX2RlY29kZSgkcGFyYW1zLCB0cnVlKSA6ICRwYXJhbXM7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBrZXlzIHZhbHVlcyBpbiB0aGUgcGFyYW1zIGFyZWENCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpICYmIGlzc2V0KCRwYXJhbXNbJGtleV0pDQoJCQkmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWyRrZXldKSkNCgkJew0KCQkJZm9yZWFjaCAoJHRoaXMtPnRhcmdldHNbJGtleV0gYXMgJHRhcmdldCA9PiAkZXZlbnQpDQoJCQl7DQoJCQkJaWYgKGlzc2V0KCRwYXJhbXNbJGtleV1bJHRhcmdldF0pDQoJCQkJCSYmICRwYXJhbXNbJGtleV1bJHRhcmdldF0gPT0gMSkNCgkJCQl7DQoJCQkJCS8vIGdldCB0aGUgaGVhZGVyIHN0cmluZyBpZiBzZXQNCgkJCQkJJHRoaXMtPmdldEhlYWRlcnMoDQoJCQkJCQkkcGFyYW1zWyRrZXldLA0KCQkJCQkJJGV2ZW50LA0KCQkJCQkJJHRoaXMtPmdldFZpZXdOYW1lKA0KCQkJCQkJCSRvYmosDQoJCQkJCQkJJGV2ZW50Wyd2aWV3J10NCgkJCQkJCSkNCgkJCQkJKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBzZXQgdGhlIGR5bmFtaWMgZ2V0IGhlYWRlcnMNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4xMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXREeW5hbWljSGVhZGVycygkcGFyYW1zLCAkY29kZSwgJGtleSkNCgl7DQoJCS8vIGFkZCB0aGUgaGVhZGVycw0KCQkkcGFyYW1zID0gKFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpKSA/IGpzb25fZGVjb2RlKCRwYXJhbXMsIHRydWUpIDogJHBhcmFtczsNCgkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGtleXMgdmFsdWVzIGluIHRoZSBwYXJhbXMgYXJlYQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykgJiYgaXNzZXQoJHBhcmFtc1ska2V5XSkNCgkJCSYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJGtleV0pKQ0KCQl7DQoJCQlmb3JlYWNoICgkdGhpcy0+dGFyZ2V0c1ska2V5XSBhcyAkdGFyZ2V0ID0+ICRldmVudCkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJHBhcmFtc1ska2V5XVskdGFyZ2V0XSkNCgkJCQkJJiYgJHBhcmFtc1ska2V5XVskdGFyZ2V0XSA9PSAxKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBoZWFkZXIgc3RyaW5nIGlmIHNldA0KCQkJCQkkdGhpcy0+Z2V0SGVhZGVycygNCgkJCQkJCSRwYXJhbXNbJGtleV0sDQoJCQkJCQkkZXZlbnQsDQoJCQkJCQkkY29kZQ0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhlYWRlcnMoJiRwYXJhbXMsICYkZ2V0LCAkdmlld19uYW1lKQ0KCXsNCgkJLy8gd2UgZmlyc3QgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHNldA0KCQlpZiAoaXNzZXQoJHBhcmFtc1skZ2V0WydmaWVsZCddXSkgfHwgaXNzZXQoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSkNCgkJew0KCQkJLy8gc3RhcnQgbGl0dGxlIGhlYWRlcnMgYnVja2V0DQoJCQkkaGVhZGVycyA9IFtdOw0KDQoJCQkvLyBsb2FkIHRoZSBoZWFkZXJzIGlmIHBvd2VyDQoJCQlpZiAoaXNzZXQoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0sIHRydWUpDQoJCQkJJiYgKCRwb3dlcnMgPSAkdGhpcy0+Z2V0UG93ZXJzKCRwYXJhbXNbJ3Bvd2VyXycgLiAkZ2V0WydmaWVsZCddXSkpICE9PSBudWxsKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRwb3dlcnMgYXMgJHBvd2VyKQ0KCQkJCXsNCgkJCQkJJHBvd2VyID0gdHJpbSgkcG93ZXIpOw0KCQkJCQkkaGVhZGVyc1skcG93ZXJdID0gJHBvd2VyOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gbG9hZCB0aGUgaGVhZGVycyBpZiB0ZXh0DQoJCQlpZiAoaXNzZXQoJHBhcmFtc1skZ2V0WydmaWVsZCddXSkgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHBhcmFtc1skZ2V0WydmaWVsZCddXSkpDQoJCQl7DQoJCQkJaWYgKCgkX2hlYWRlcnMgPSBleHBsb2RlKFBIUF9FT0wsICRwYXJhbXNbJGdldFsnZmllbGQnXV0pKSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRfaGVhZGVycyBhcyAkaGVhZGVyKQ0KCQkJCQl7DQoJCQkJCQkkaGVhZGVyID0gdHJpbSgkaGVhZGVyKTsNCgkJCQkJCWlmIChlbXB0eSgkaGVhZGVyKSkNCgkJCQkJCXsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJCSRoZWFkZXJzWyRoZWFkZXJdID0gJGhlYWRlcjsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gY2hlY2sgaWYgd2UgZm91bmQgc29tZSBoZWFkZXIgdmFsdWVzDQoJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGhlYWRlcnMsIHRydWUpKQ0KCQkJew0KCQkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBoZWFkZXJzDQoJCQkJJHRoaXMtPmxvYWRIZWFkZXJzID0gdHJ1ZTsNCgkJCQkvLyBjaGVjayBpZiB0aGlzIGFjdGl2ZSBoZWFkZXIgaXMgYWxyZWFkeSBzZXQNCgkJCQlpZiAoIWlzc2V0KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRnZXRbJ2NvbnRleHQnXV0pKQ0KCQkJCXsNCgkJCQkJLy8gc3RhcnQgdGhlIGFjdGl2ZSBoZWFkZXINCgkJCQkJJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGdldFsnY29udGV4dCddXSA9IFtdOw0KCQkJCX0NCgkJCQkvLyBsb2FkIHRoZSBmb3VuZCBoZWFkZXJzIGFuZCBhdm9pZCBhZGRpbmcgdGhlIHNhbWUgaGVhZGVyIHR3aWNlDQoJCQkJZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikNCgkJCQl7DQoJCQkJCSRoZWFkZXIgPSB0cmltKCRoZWFkZXIpOw0KCQkJCQkkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZ2V0Wydjb250ZXh0J11dWyRoZWFkZXJdID0gJGhlYWRlcjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHZpZXcgbmFtZQ0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nDQoJICoNCgkgKiBAc2luY2UgICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3TmFtZSgmJHZpZXcsICYkZ2V0KQ0KCXsNCgkJaWYgKCRnZXQgPT09ICdzaXRlJyB8fCAkZ2V0ID09PSAnYWRtaW4nIHx8ICRnZXQgPT09ICdhamF4JyB8fCAkZ2V0ID09PSAnZGFzaGJvYXJkJykNCgkJew0KCQkJLy8gc3RhdGljIGtleSBuYW1lDQoJCQlyZXR1cm4gJGdldDsNCgkJfQ0KCQllbHNlaWYgKGlzc2V0KCR2aWV3LT57JGdldH0pKQ0KCQl7DQoJCQlyZXR1cm4gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgNCgkJCQkkdmlldy0+eyRnZXR9DQoJCQkpOw0KCQl9DQoJCXJldHVybiAnX2Vycm9yJzsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHBvd2VycyBoZWFkZXIgdXNlIHN0cmluZ3MNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5fG51bGwNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFBvd2Vycygkcm93cyk6ID9hcnJheQ0KCXsNCgkJLy8gbG9hZCB0aGUgYWN0aXZlIHBvd2Vycw0KCQkkcG93ZXJzID0gYXJyYXlfZmlsdGVyKA0KCQkJLy8gZ2V0IHRoZSBwb3dlciBuYW1lc3BhY2UNCgkJCWFycmF5X21hcChmdW5jdGlvbiAoJHJvdykgew0KCQkJCWlmICgoJHBvd2VyID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRHVUlEKCRyb3dbJ3Bvd2VyJ10sICdwb3dlcicsIFsnYS5ndWlkJywgJ2EubmFtZXNwYWNlJ10pKSAhPT0gbnVsbCkNCgkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCX0NCgkJCQllbHNlaWYgKENGYWN0b3J5OjpfKCdTdXBlcnBvd2VyJyktPmxvYWQoJHJvd1sncG93ZXInXSwgIFsncmVtb3RlJ10pKQ0KCQkJCXsNCgkJCQkJaWYgKCgkcG93ZXIgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEdVSUQoJHJvd1sncG93ZXInXSwgJ3Bvd2VyJywgWydhLmd1aWQnLCAnYS5uYW1lc3BhY2UnXSkpICE9PSBudWxsKQ0KCQkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0sICRyb3dzKSwNCgkJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSB2YWxpZCBwb3dlcnMNCgkJCWZ1bmN0aW9uICgkcm93KSB7DQoJCQkJcmV0dXJuIGlzX29iamVjdCgkcm93KSAmJiBpc3NldCgkcm93LT5ndWlkKTsNCgkJCX0NCgkJKTsNCgkJLy8gYWRkIHRvIGFjdGl2ZSBwb3dlcnMNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwb3dlcnMpKQ0KCQl7DQoJCQkvLyBjb252ZXJ0IHRoZSBkb3RzIHRvIG5hbWVzcGFjZQ0KCQkJcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoJHBvd2VyKSB7DQoJCQkJLy8gYWRkIHRvIGNvbXBpbGVyICh0byBidWlsZCkNCgkJCQlpZiAoJHBvd2VyLT5idWlsZCAhPSA2KQ0KCQkJCXsNCgkJCQkJLy8gc2VjdXJlIHRoYXQgYWx3YXlzIHdpbGwgcmVtYWluIGFsd2F5cyBldmVuIGlmIG9ubHkgc2V0IHRoYXQgd2F5IG9uY2UNCgkJCQkJaWYgKGVtcHR5KCR0aGlzLT5saW5rZWRQb3dlcnNbJHBvd2VyLT5ndWlkXSkgfHwgJHBvd2VyLT5idWlsZCA9PSAxKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+bGlua2VkUG93ZXJzWyRwb3dlci0+Z3VpZF0gPSAkcG93ZXItPmJ1aWxkOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGJ1aWxkIHRoZSBuYW1lc3BhY2UNCgkJCQkkbmFtZXNwYWNlID0gU3VwZXJfX19jZThjZjgzNF82YmFjXzQ0ZmJfOTQxY184NjFmN2UwNDZjYzBfX19Qb3dlcjo6c2FmZSgNCgkJCQkJc3RyX3JlcGxhY2UoDQoJCQkJCQlhcnJheV9rZXlzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJYXJyYXlfdmFsdWVzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJc3RyX3JlcGxhY2UoJy4nLCAnXFwnLCAkcG93ZXItPm5hbWVzcGFjZSkNCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gY2hlY2sgaWYgaXQgaGFzIGFuIEFTIG9wdGlvbg0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcG93ZXItPmFzKSAmJiAkcG93ZXItPmFzICE9PSAnZGVmYXVsdCcpDQoJCQkJew0KCQkJCQlyZXR1cm4gJ3VzZSAnIC4gJG5hbWVzcGFjZSAuICcgYXMgJyAuICRwb3dlci0+YXMgLiAnOyc7DQoJCQkJfQ0KCQkJCXJldHVybiAndXNlICcgLiAkbmFtZXNwYWNlIC4gJzsnOw0KCQkJfSwgJHBvd2Vycyk7DQoJCX0NCg0KCQlyZXR1cm4gbnVsbDsNCgl9DQo=', '[[[Component]]] Headers Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywxLDE4XQ==', '', '', '', '2.3.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Headers Compiler', '', 1, '', '', 1, '2020-05-24 23:04:17', '2023-12-30 11:06:48', 125, '', 3),
(16, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set admin class custom headers.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.admin_view_headers\",\"fieldset\":\"admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2849\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2846\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2969\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2983\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2985\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2968\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2886\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2884\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2995\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2850\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2845\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2967\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2844\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2847\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2966\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2984\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2986\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2965\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2885\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2883\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2996\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2851\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2848\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2964\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2895\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2896\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2970\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2987\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2988\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2952\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2897\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2898\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2999\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"3088\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"3089\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"3090\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"3091\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"3092\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"3093\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '9add2e9c-ec36-48ef-b8e5-939ade0149eb', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrYWRtaW5fdmlld10=', '[[[Component]]] Admin Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywxLDE4XQ==', '', '', '', '2.0.3', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Admin Headers Tabs', '', 1, '', '', 1, '2020-10-27 00:46:51', '2023-02-26 01:04:32', 63, '', 2),
(17, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set site class custom headers.', '{\"fields0\":{\"file\":\"site_view\",\"fields_name\":\"params.site_view_headers\",\"fieldset\":\"site_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'ee258df8-057b-4039-a60d-e5b97e6fa6f3', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrc2l0ZV92aWV3XQ==', '[[[Component]]] Site Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Site Headers Tabs', '', 1, '', '', 1, '2020-12-08 03:18:35', '2022-10-23 21:11:30', 35, '', 2),
(18, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom admin class custom headers.', '{\"fields0\":{\"file\":\"custom_admin_view\",\"fields_name\":\"params.custom_admin_view_headers\",\"fieldset\":\"custom_admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'b5e29027-f010-45ae-adb1-e8a1dde9a157', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrY3VzdG9tX2FkbWluX3ZpZXdd', '[[[Component]]] Custom Admin Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Custom Admin Headers Tabs', '', 1, '', '', 1, '2020-12-08 05:25:29', '2022-10-23 21:11:26', 37, '', 2),
(19, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component class custom headers.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.joomla_component_headers\",\"fieldset\":\"joomla_component_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2871\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2872\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2974\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2873\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2874\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2975\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2878\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2877\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2973\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2875\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2876\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2972\",\"custom_value\":\"\"}}}}', 'ce453c88-6f87-4739-9340-de0416066ff4', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMram9vbWxhX2NvbXBvbmVudF0=', '[[[Component]]] Component Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Headers Tabs', '', 1, '', '', 1, '2020-12-26 16:49:54', '2022-10-23 21:11:22', 27, '', 2),
(20, '', '', 1, '', 1, '', '', '', '', 1, '', '', '', 1, 'RSForm! Pro - Advance PHP', '{}', '693bcf07-6464-4bcd-9d32-2af49ebbca44', '', 8, '{}', 'CXByb3RlY3RlZCAkaGFzQWNjZXNzOw0KCXByb3RlY3RlZCAkVkRNX3Bvc3Q7DQoJcHJvdGVjdGVkICRWRE1fYWN0aXZlOw0KCXByb3RlY3RlZCAkVkRNX2NvZGU7DQoJcHJvdGVjdGVkICRWRE1fcnNmb3JtX2lkOw0KDQoJLyoqDQoJICogTG9hZCB0aGUgbGFuZ3VhZ2UgZmlsZSBvbiBpbnN0YW50aWF0aW9uLg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAzLjENCgkgKi8NCglwcm90ZWN0ZWQgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJiRzdWJqZWN0ICBUaGUgb2JqZWN0IHRvIG9ic2VydmUNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29uZmlnICAgQW4gYXJyYXkgdGhhdCBob2xkcyB0aGUgcGx1Z2luIGNvbmZpZ3VyYXRpb24NCgkgKg0KCSAqIEBzaW5jZSAgIDEuNQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHN1YmplY3QsICRjb25maWcpDQoJew0KCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRzdWJqZWN0LCAkY29uZmlnKTsNCg0KCQkvLyBzZXQgYmFja2VuZCBhY2Nlc3MNCgkJJHRoaXMtPmhhc0FjY2VzcyA9ICR0aGlzLT5iYWNrZW5kQWNjZXNzKCk7DQoNCgkJLy8gc2V0IHRoZSB0YWJsZSBwYXRoDQoJCUpUYWJsZTo6YWRkSW5jbHVkZVBhdGgoSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fcnNmb3JtL3RhYmxlcycpOw0KCX0NCg0KCS8qKg0KCSAqICAgIC8vLy8vLyAgICBWYXN0IERldmVsb3BtZW50IE1ldGhvZCAgIFxcXFxcXA0KCSAqICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCgkgKiAgICMjIyMjIyMjIyMgICAgICAgQkFDSyBFTkQgICAgICAjIyMjIyMjIyMjIyMNCgkgKiAgICMjIyMjIyMjIyMgICAgRXZlbnQgVHJpZ2dlcnMgICAjIyMjIyMjIyMjIyMNCgkgKiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoJICoNCgkgKiovDQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gQmFjay1lbmQgW09uIEZvcm0gU2F2ZV0NCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gb3JtU2F2ZSgkZm9ybSkNCgl7DQoJCWlmICgkdGhpcy0+aGFzQWNjZXNzKQ0KCQl7DQoJCQkkYXBwICAgID0gRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKTsNCgkJCSRmb3JtSWQgPSAkYXBwLT5pbnB1dC0+cG9zdC0+Z2V0KCdmb3JtSWQnLCAwLCBpbnQpOw0KCQkJLy8gZ2V0IGFjdGl2ZSBzdGF0ZXMNCgkJCSRldmVudHMgICAgICAgID0gcmFuZ2UoMCwgMTApOw0KCQkJJGV2ZW50c19hY3RpdmUgPSBhcnJheSgpOw0KCQkJJGV2ZW50c19jb2RlICAgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGV2ZW50cyBhcyAkbnIpDQoJCQl7DQoJCQkJJGV2ZW50c19hY3RpdmVbJG5yXSA9ICRhcHAtPmlucHV0LT5wb3N0LT5nZXQoJ3JzZnBhZHZhbmNlcGhwX2FjdGl2ZV8nIC4gJG5yLCAwLCBJTlQpOw0KCQkJCWlmICgkZXZlbnRzX2FjdGl2ZVskbnJdICE9IDApDQoJCQkJew0KCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9IGJhc2U2NF9lbmNvZGUoJGFwcC0+aW5wdXQtPnBvc3QtPmdldCgncnNmcGFkdmFuY2VwaHBfY29kZV8nIC4gJG5yLCAnJywgUkFXKSk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlpZiAoaXNfYXJyYXkoJGV2ZW50c19hY3RpdmUpICYmIGNvdW50KCRldmVudHNfYWN0aXZlKSkNCgkJCXsNCgkJCQkkZXZlbnRzX2FjdGl2ZSA9IGpzb25fZW5jb2RlKCRldmVudHNfYWN0aXZlKTsNCgkJCX0NCgkJCWlmIChpc19hcnJheSgkZXZlbnRzX2NvZGUpICYmIGNvdW50KCRldmVudHNfY29kZSkpDQoJCQl7DQoJCQkJJGV2ZW50c19jb2RlID0ganNvbl9lbmNvZGUoJGV2ZW50c19jb2RlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkZXZlbnRzX2NvZGUgPSAnJzsNCgkJCX0NCg0KCQkJLy8gR2V0IGEgZGIgY29ubmVjdGlvbi4NCgkJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KCQkJLy8gY2hlY2sgaWYgZGF0YSBpcyBzZXQNCgkJCSRkYi0+c2V0UXVlcnkoIlNFTEVDVCBmb3JtX2lkIEZST00gI19fcnNmb3JtX2FkdmFuY2VwaHAgV0hFUkUgZm9ybV9pZD0nIiAuICRmb3JtSWQgLiAiJyIpOw0KCQkJaWYgKCEkZGItPmxvYWRSZXN1bHQoKSkNCgkJCXsNCgkJCQkvLyBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0Lg0KCQkJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJCQkvLyBJbnNlcnQgY29sdW1ucy4NCgkJCQkkY29sdW1ucyA9IGFycmF5KCdmb3JtX2lkJywgJ2V2ZW50c19hY3RpdmUnLCAnZXZlbnRzX2NvZGUnKTsNCg0KCQkJCS8vIEluc2VydCB2YWx1ZXMuDQoJCQkJJHZhbHVlcyA9IGFycmF5KCRmb3JtSWQsICRkYi0+cXVvdGUoJGV2ZW50c19hY3RpdmUpLCAkZGItPnF1b3RlKCRldmVudHNfY29kZSkpOw0KDQoJCQkJLy8gUHJlcGFyZSB0aGUgaW5zZXJ0IHF1ZXJ5Lg0KCQkJCSRxdWVyeQ0KCQkJCQktPmluc2VydCgkZGItPnF1b3RlTmFtZSgnI19fcnNmb3JtX2FkdmFuY2VwaHAnKSkNCgkJCQkJLT5jb2x1bW5zKCRkYi0+cXVvdGVOYW1lKCRjb2x1bW5zKSkNCgkJCQkJLT52YWx1ZXMoaW1wbG9kZSgnLCcsICR2YWx1ZXMpKTsNCg0KCQkJCS8vIFNldCB0aGUgcXVlcnkgdXNpbmcgb3VyIG5ld2x5IHBvcHVsYXRlZCBxdWVyeSBvYmplY3QgYW5kIGV4ZWN1dGUgaXQuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KDQoJCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQkJfQ0KDQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdldmVudHNfYWN0aXZlJykgLiAnID0gJyAuICRkYi0+cXVvdGUoJGV2ZW50c19hY3RpdmUpLA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdldmVudHNfY29kZScpIC4gJyA9ICcgLiAkZGItPnF1b3RlKCRldmVudHNfY29kZSkNCgkJCSk7DQoNCgkJCS8vIENvbmRpdGlvbnMgZm9yIHdoaWNoIHJlY29yZHMgc2hvdWxkIGJlIHVwZGF0ZWQuDQoJCQkkY29uZGl0aW9ucyA9IGFycmF5KA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdmb3JtX2lkJykgLiAnID0gJyAuICRmb3JtSWQNCgkJCSk7DQoNCgkJCSRxdWVyeS0+dXBkYXRlKCRkYi0+cXVvdGVOYW1lKCcjX19yc2Zvcm1fYWR2YW5jZXBocCcpKS0+c2V0KCRmaWVsZHMpLT53aGVyZSgkY29uZGl0aW9ucyk7DQoNCgkJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCg0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEJhY2stZW5kIFtPbiBBZnRlciBTaG93IEZvcm0gRWRpdCBUYWJzIFRhYl0NCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1CYWNrZW5kQWZ0ZXJTaG93Rm9ybUVkaXRUYWJzVGFiKCkNCgl7DQoJCWlmICgkdGhpcy0+aGFzQWNjZXNzKQ0KCQl7DQoJCQkkbGFuZyA9IEZhY3Rvcnk6OmdldExhbmd1YWdlKCk7DQoJCQkkbGFuZy0+bG9hZCgncGxnX3N5c3RlbV9yc2ZwYWR2YW5jZXBocCcpOw0KDQoJCQllY2hvICc8bGk+PGEgaWQ9ImFkdmFuY2VwaHBzY3JpcHRzIiBocmVmPSJqYXZhc2NyaXB0OiB2b2lkKDApOyI+PHNwYW4gY2xhc3M9InJzZmljb24gcnNmaWNvbi1jb2RlIj48L3NwYW4+PHNwYW4gY2xhc3M9ImlubmVyLXRleHQiPicgLiBUZXh0OjpfKCdQTEdfU1lTVEVNX1JTRlBBRFZBTkNFUEhQX0pPT01MQV9QUk9GSUxFX1RBQicpIC4gJzwvc3Bhbj48L2E+PC9saT4nOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEJhY2stZW5kIFtPbiBBZnRlciBTaG93IEZvcm0gRWRpdCBUYWJzXQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJhY2tlbmRBZnRlclNob3dGb3JtRWRpdFRhYnMoKQ0KCXsNCgkJaWYgKCR0aGlzLT5oYXNBY2Nlc3MpDQoJCXsNCgkJCS8vIHNldCBldmVudCByYW5nZQ0KCQkJJGV2ZW50cyA9IHJhbmdlKDAsIDEwKTsNCgkJCS8vIHNldCB0aGUgbGFuZyByYW5nZQ0KCQkJJEpUZXh0ID0gcmFuZ2UoJ0InLCAnTCcpOw0KDQoJCQkvLyBzZXQgbGFuZ3VhZ2UNCgkJCSRsYW5nID0gRmFjdG9yeTo6Z2V0TGFuZ3VhZ2UoKTsNCgkJCSRsYW5nLT5sb2FkKCdwbGdfc3lzdGVtX3JzZnBhZHZhbmNlcGhwJyk7DQoNCgkJCS8vIGdldCBzZXQgdmFsdWVzDQoJCQkkZm9ybUlkID0gRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKS0+aW5wdXQtPmdldEludCgnZm9ybUlkJyk7DQoJCQkkcm93ICAgID0gSlRhYmxlOjpnZXRJbnN0YW5jZSgnUlNGb3JtX0FkdmFuY2VwaHAnLCAnVGFibGUnKTsNCgkJCWlmICghJHJvdykNCgkJCXsNCgkJCQlyZXR1cm47DQoJCQl9DQoJCQkkcm93LT5sb2FkKCRmb3JtSWQpOw0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfYWN0aXZlKSA+IDApDQoJCQl7DQoJCQkJJGV2ZW50c19hY3RpdmUgPSBqc29uX2RlY29kZSgkcm93LT5ldmVudHNfYWN0aXZlLCB0cnVlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlmb3JlYWNoICgkZXZlbnRzIGFzICRucikNCgkJCQl7DQoJCQkJCSRldmVudHNfYWN0aXZlWyRucl0gPSAwOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChzdHJsZW4oJHJvdy0+ZXZlbnRzX2NvZGUpID4gMCkNCgkJCXsNCgkJCQkkZXZlbnRzX2NvZGUgPSBqc29uX2RlY29kZSgkcm93LT5ldmVudHNfY29kZSwgdHJ1ZSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGV2ZW50cyBhcyAkbnIpDQoJCQkJew0KCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9ICcnOw0KCQkJCX0NCgkJCX0NCgkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZXZlbnRzX2NvZGVbJG5yXSkpDQoJCQkJew0KCQkJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRldmVudHNfY29kZVskbnJdLCB0cnVlKSkgPT09ICRldmVudHNfY29kZVskbnJdKQ0KCQkJCQl7DQoJCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9IGJhc2U2NF9kZWNvZGUoJGV2ZW50c19jb2RlWyRucl0pOw0KCQkJCQl9DQoJCQkJCSRsaXN0c1snYWN0aXZlXycgLiAkbnJdID0gUlNGb3JtUHJvSGVscGVyOjpyZW5kZXJIVE1MKCdzZWxlY3QuYm9vbGVhbmxpc3QnLCAncnNmcGFkdmFuY2VwaHBfYWN0aXZlXycgLiAkbnIsICdjbGFzcz0iaW5wdXRib3giJywgJGV2ZW50c19hY3RpdmVbJG5yXSk7DQoJCQkJCSRsaXN0c1snY29kZV8nIC4gJG5yXSAgID0gJzx0ZXh0YXJlYSBjbGFzcz0icnNfdGV4dGFyZWEgY29kZW1pcnJvci1waHAiIG5hbWU9InJzZnBhZHZhbmNlcGhwX2NvZGVfJyAuICRuciAuICciIGlkPSJjb2RlXycgLiAkbnIgLiAnIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiA5OCU7IiBjb2xzPSI5MDAiIGZpbHRlcj0icmF3IiA+Jw0KCQkJCQkJLiBodG1sc3BlY2lhbGNoYXJzKCRldmVudHNfY29kZVskbnJdLCBFTlRfQ09NUEFULCAnVVRGLTgnKSAuICc8L3RleHRhcmVhPic7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRsaXN0c1snYWN0aXZlXycgLiAkbnJdID0gUlNGb3JtUHJvSGVscGVyOjpyZW5kZXJIVE1MKCdzZWxlY3QuYm9vbGVhbmxpc3QnLCAncnNmcGFkdmFuY2VwaHBfYWN0aXZlXycgLiAkbnIsICdjbGFzcz0iaW5wdXRib3giJywgJGV2ZW50c19hY3RpdmVbJG5yXSk7DQoJCQkJCSRsaXN0c1snY29kZV8nIC4gJG5yXSAgID0gJzx0ZXh0YXJlYSBjbGFzcz0icnNfdGV4dGFyZWEgY29kZW1pcnJvci1waHAiIG5hbWU9InJzZnBhZHZhbmNlcGhwX2NvZGVfJyAuICRuciAuICciIGlkPSJjb2RlXycgLiAkbnIgLiAnIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiA5OCU7IiBjb2xzPSI5MDAiIGZpbHRlcj0icmF3IiA+PC90ZXh0YXJlYT4nOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gJzxkaXYgaWQ9InJzZnBhZHZhbmNlcGhwZGl2Ij4nOw0KCQkJaW5jbHVkZSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9yc2Zvcm0vaGVscGVycy9yc2ZwYWR2YW5jZXBocC5waHAnOw0KCQkJZWNobyAnPC9kaXY+JzsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBCYWNrLWVuZCBbT24gQWZ0ZXIgU2hvdyBDb25maWd1cmF0aW9uIFRhYnNdDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUnNmb3JtQmFja2VuZEFmdGVyU2hvd0NvbmZpZ3VyYXRpb25UYWJzKCR0YWJzKQ0KCXsNCgkJaWYgKCR0aGlzLT5oYXNBY2Nlc3MpDQoJCXsNCgkJCSRsYW5nID0gRmFjdG9yeTo6Z2V0TGFuZ3VhZ2UoKTsNCgkJCSRsYW5nLT5sb2FkKCdwbGdfc3lzdGVtX3JzZnBhZHZhbmNlcGhwJyk7DQoNCgkJCSR0YWJzLT5hZGRUaXRsZShUZXh0OjpfKCdQTEdfU1lTVEVNX1JTRlBBRFZBTkNFUEhQX0NPTkZJR19UQUInKSwgJ2Zvcm0tYWR2YW5jZXBocCcpOw0KCQkJJHRhYnMtPmFkZENvbnRlbnQoJHRoaXMtPmFkdmFuY2VwaHBDb25maWd1cmF0aW9uU2NyZWVuKCkpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogU2V0cyB0aGUgdGFiIGRpc3BsYXkgZm9yIHRoZSBDb25maWd1cmF0aW9uIFNjcmVlbg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBhZHZhbmNlcGhwQ29uZmlndXJhdGlvblNjcmVlbigpDQoJew0KCQlpZiAoJHRoaXMtPmhhc0FjY2VzcykNCgkJew0KCQkJJGxhbmcgPSBGYWN0b3J5OjpnZXRMYW5ndWFnZSgpOw0KCQkJJGxhbmctPmxvYWQoJ3BsZ19zeXN0ZW1fcnNmcGFkdmFuY2VwaHAnKTsNCg0KCQkJcmV0dXJuIFRleHQ6Ol8oJ1BMR19TWVNURU1fUlNGUEFEVkFOQ0VQSFBfQ09ORklHX05PVElDRScpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogICAgLy8vLy8vICAgIFZhc3QgRGV2ZWxvcG1lbnQgTWV0aG9kICAgXFxcXFxcDQoJICogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KCSAqICAgIyMjIyMjIyMjIyAgICAgIEZST05UIEVORCAgICAgICMjIyMjIyMjIyMjIw0KCSAqICAgIyMjIyMjIyMjIyAgICBFdmVudCBUcmlnZ2VycyAgICMjIyMjIyMjIyMjIw0KCSAqICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCgkgKg0KCSAqKi8NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEluaXQgRm9ybSBEaXNwbGF5XQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZmluZCc9PiYkZmluZCwncmVwbGFjZSc9PiYkcmVwbGFjZSwnZm9ybUxheW91dCc9PiYkZm9ybUxheW91dCkNCgkgKi8NCgkvKnB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kSW5pdEZvcm1EaXNwbGF5KCRhcmdzKQ0KCXsNCgkJLS0gPj4gIFdlIG5lZWQgYSBmb3JtSWQgdG8gaGF2ZSB0aGlzIHdvcmsgIDw8IC0tLQ0KCQkNCgkJJHRoaXMtPnNldEV2ZW50cygkdGhpcy0+VkRNX3JzZm9ybV9pZCk7DQoJCWlmKCR0aGlzLT5WRE1fYWN0aXZlWzBdID09IDEpew0KCQkJZXZhbCgkdGhpcy0+VkRNX2NvZGVbMF0pOw0KCQl9DQoJfSovDQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBCZWZvcmUgRm9ybSBEaXNwbGF5XQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybUxheW91dCc9PiYkZm9ybUxheW91dCwnZm9ybUlkJz0+JGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZUZvcm1EaXNwbGF5KCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1snZm9ybUlkJ10pOw0KCQlpZiAoJHRoaXMtPlZETV9hY3RpdmVbMF0gPT0gMSkNCgkJew0KCQkJJGRhdGEgPSAkdGhpcy0+VkRNX2NvZGVbMF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEJlZm9yZSBGb3JtIFZhbGlkYXRpb25dDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdpbnZhbGlkJz0+JiRpbnZhbGlkLCAnZm9ybUlkJyA9PiAkZm9ybUlkLCAncG9zdCcgPT4gJiRwb3N0KQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kQmVmb3JlRm9ybVZhbGlkYXRpb24oJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVsxXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsxXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEZvcm0gUHJvY2Vzc10NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ3Bvc3QnID0+ICYkcG9zdCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZUZvcm1Qcm9jZXNzKCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1sncG9zdCddWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVsyXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsyXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIFN0b3JlIFN1Ym1pc3Npb25zXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybUlkJz0+JGZvcm1JZCwncG9zdCc9PiYkcG9zdCwnU3VibWlzc2lvbklkJz0+JFN1Ym1pc3Npb25JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZVN0b3JlU3VibWlzc2lvbnMoJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVszXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVszXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQWZ0ZXIgU3RvcmUgU3VibWlzc2lvbnNdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdTdWJtaXNzaW9uSWQnPT4kU3VibWlzc2lvbklkLCAnZm9ybUlkJz0+JGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEFmdGVyU3RvcmVTdWJtaXNzaW9ucygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzRdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzRdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBBZnRlciBGb3JtIFByb2Nlc3NdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdTdWJtaXNzaW9uSWQnPT4kU3VibWlzc2lvbklkLCdmb3JtSWQnPT4kZm9ybUlkKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kQWZ0ZXJGb3JtUHJvY2VzcygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzVdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzVdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEFmdGVyIFNob3cgVGhhbmt5b3UgTWVzc2FnZV0NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ291dHB1dCc9PiYkb3V0cHV0LCdmb3JtSWQnPT4mJGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEFmdGVyU2hvd1RoYW5reW91TWVzc2FnZSgkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzZdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzZdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBBZnRlciBDcmVhdGUgUGxhY2Vob2xkZXJzXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybScgPT4gJiRmb3JtLCAncGxhY2Vob2xkZXJzJyA9PiAmJHBsYWNlaG9sZGVycywgJ3ZhbHVlcycgPT4gJiR2YWx1ZXMsICdzdWJtaXNzaW9uJyA9PiAkc3VibWlzc2lvbikNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1BZnRlckNyZWF0ZVBsYWNlaG9sZGVycygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm0nXS0+Rm9ybUlkKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzddID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzddOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBCZWZvcmUgVXNlciBFbWFpbF0NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ2Zvcm0nID0+ICYkZm9ybSwgJ3BsYWNlaG9sZGVycycgPT4gJiRwbGFjZWhvbGRlcnMsICd2YWx1ZXMnID0+ICYkdmFsdWVzLCAnc3VibWlzc2lvbklkJyA9PiAkU3VibWlzc2lvbklkLCAndXNlckVtYWlsJz0+JiR1c2VyRW1haWwpDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUnNmb3JtQmVmb3JlVXNlckVtYWlsKCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1snZm9ybSddLT5Gb3JtSWQpOw0KCQlpZiAoJHRoaXMtPlZETV9hY3RpdmVbOF0gPT0gMSkNCgkJew0KCQkJJGRhdGEgPSAkdGhpcy0+VkRNX2NvZGVbOF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEFkbWluIEVtYWlsXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybScgPT4gJiRmb3JtLCAncGxhY2Vob2xkZXJzJyA9PiAmJHBsYWNlaG9sZGVycywgJ3ZhbHVlcycgPT4gJiR2YWx1ZXMsICdzdWJtaXNzaW9uSWQnID0+ICRTdWJtaXNzaW9uSWQsICdhZG1pbkVtYWlsJz0+JiRhZG1pbkVtYWlsKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJlZm9yZUFkbWluRW1haWwoJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtJ10tPkZvcm1JZCk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVs5XSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVs5XTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEFkZGl0aW9uYWwgRW1haWxdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdmb3JtJz0+JiRmb3JtLCdwbGFjZWhvbGRlcnMnPT4mJHBsYWNlaG9sZGVycywndmFsdWVzJz0+JiR2YWx1ZXMsJ3N1Ym1pc3Npb25JZCc9PiRTdWJtaXNzaW9uSWQsJ2FkZGl0aW9uYWxFbWFpbCc9PiYkYWRkaXRpb25hbEVtYWlsKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJlZm9yZUFkZGl0aW9uYWxFbWFpbCgkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm0nXS0+Rm9ybUlkKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzEwXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsxMF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqICAgIENoZWNrIGlmIHRoaXMgcGx1Z2luIGlzIGFjdGl2ZSBvbiB0aGUgZm9ybQ0KCSAqDQoJICogQHJldHVybnMgYSBib29sIGZhbHNlIG9yIHRydWUNCgkgKiovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEV2ZW50cygkZm9ybUlkKQ0KCXsNCgkJaWYgKCFpc19hcnJheSgkdGhpcy0+VkRNX2FjdGl2ZSkgfHwgIWNvdW50KCR0aGlzLT5WRE1fYWN0aXZlKSB8fCAkdGhpcy0+VkRNX3JzZm9ybV9pZCAhPSAkZm9ybUlkKQ0KCQl7DQoJCQkvLyBzZXQgZm9ybSBpZA0KCQkJJHRoaXMtPlZETV9yc2Zvcm1faWQgPSAkZm9ybUlkOw0KCQkJLy8gc2V0IGV2ZW50IGFycmF5DQoJCQkkZXZlbnRzID0gcmFuZ2UoMCwgMTApOw0KCQkJLy8gZ2V0IHNldCB2YWx1ZXMNCgkJCSRyb3cgPSBKVGFibGU6OmdldEluc3RhbmNlKCdSU0Zvcm1fQWR2YW5jZXBocCcsICdUYWJsZScpOw0KCQkJaWYgKCEkcm93KQ0KCQkJew0KCQkJCXJldHVybjsNCgkJCX0NCgkJCSRyb3ctPmxvYWQoJHRoaXMtPlZETV9yc2Zvcm1faWQpOw0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfYWN0aXZlKSkNCgkJCXsNCgkJCQkkdGhpcy0+VkRNX2FjdGl2ZSA9IGpzb25fZGVjb2RlKCRyb3ctPmV2ZW50c19hY3RpdmUsIHRydWUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPlZETV9hY3RpdmVbJG5yXSA9IDA7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfY29kZSkpDQoJCQl7DQoJCQkJJHRoaXMtPlZETV9jb2RlID0ganNvbl9kZWNvZGUoJHJvdy0+ZXZlbnRzX2NvZGUsIHRydWUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPlZETV9jb2RlWyRucl0gPSAnJzsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gY29uZmlndXJhdGlvblNjcmVlbigpDQoJew0KCQlvYl9zdGFydCgpOw0KDQoJCUpGb3JtOjphZGRGb3JtUGF0aChfX0RJUl9fIC4gJy9mb3JtcycpOw0KDQoJCSRmb3JtID0gSkZvcm06OmdldEluc3RhbmNlKCdwbGdfc3lzdGVtX3JzZnBnb29nbGUuY29uZmlndXJhdGlvbicsICdjb25maWd1cmF0aW9uJywgYXJyYXkoJ2NvbnRyb2wnID0+ICdyc2Zvcm1Db25maWcnKSwgZmFsc2UsIGZhbHNlKTsNCgkJJGZvcm0tPmJpbmQoJHRoaXMtPmxvYWRGb3JtRGF0YSgpKTsNCg0KCQk/Pg0KICAgICAgICA8ZGl2IGlkPSJwYWdlLWdvb2dsZSIgY2xhc3M9ImZvcm0taG9yaXpvbnRhbCI+DQoJCQk8P3BocA0KCQkJZm9yZWFjaCAoJGZvcm0tPmdldEZpZWxkc2V0cygpIGFzICRmaWVsZHNldCkNCgkJCXsNCgkJCQlpZiAoJGZpZWxkcyA9ICRmb3JtLT5nZXRGaWVsZHNldCgkZmllbGRzZXQtPm5hbWUpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJGZpZWxkcyBhcyAkZmllbGQpDQoJCQkJCXsNCgkJCQkJCWVjaG8gJGZpZWxkLT5yZW5kZXJGaWVsZCgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJPz4NCiAgICAgICAgPC9kaXY+DQoJCTw/cGhwDQoNCgkJJGNvbnRlbnRzID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQoJCW9iX2VuZF9jbGVhbigpOw0KDQoJCXJldHVybiAkY29udGVudHM7DQoJfQ0KDQoJLyoqDQoJICogICAgQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIGJhY2tlbmQgYWNjZXNzDQoJICoNCgkgKiBAcmV0dXJucyBhIGJvb2wgZmFsc2Ugb3IgdHJ1ZQ0KCSAqKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYmFja2VuZEFjY2VzcygpDQoJew0KCQkvLyBnZXQgdXNlcg0KCQkkdXNlcklkICAgICAgID0gRmFjdG9yeTo6Z2V0VXNlcigpLT5pZDsNCgkJJHVzZXJHcm91cCAgICA9IEpVc2VySGVscGVyOjpnZXRVc2VyR3JvdXBzKCR1c2VySWQpOw0KCQkkYWNjZXNzR3JvdXBzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhY2Nlc3MnKTsNCgkJaWYgKGlzX2FycmF5KCR1c2VyR3JvdXApKQ0KCQl7DQoJCQlpZiAoaXNfYXJyYXkoJGFjY2Vzc0dyb3VwcykpDQoJCQl7DQoJCQkJcmV0dXJuIChjb3VudChhcnJheV9pbnRlcnNlY3QoJGFjY2Vzc0dyb3VwcywgJHVzZXJHcm91cCkpKSA/IHRydWUgOiBmYWxzZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyByZXR1cm4gdHJ1ZSBpZiBub3Qgc2V0DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', 'RSFPadvancephp', '', 'CQlpZiAoJHR5cGUgPT0gJ2luc3RhbGwnKQ0KCQl7DQoJCQllY2hvICcJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+Q29uZ3JhdHVsYXRpb25zISBUaGUgcGx1Z2luIGlzIG5vdyBpbnN0YWxsZWQhPC9oMj4NCgkJCQkJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PGEgaHJlZj0iJyAuIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpiYXNlKCkgLiAnaW5kZXgucGhwP29wdGlvbj1jb21fcGx1Z2lucyZ2aWV3PXBsdWdpbnMmZmlsdGVyX3NlYXJjaD1BZHZhbmNlIFBIUCBmb3IgUlNGb3JtIVBybyI+QWN0aXZhdGU8L2E+IHRoaXMgcGx1Z2lucyBub3chPC9oMj4NCgkJCQkJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+WW91IHdpbGwgbmVlZCB0byBzZXR1cCBhIGZldyB0aGluZ3MsIHdhdGNoIHRoZXNlIHR1dG9yaWFsczo8L2gyPg0KCQkJCQk8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+DQoJCQkJCQk8dWw+DQoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvREtFVnphdGJwRDgiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsIFJTRm9ybSBBZHZhbmNlIFBIUCBQbHVnaW48L2E+PC9saT4NCgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9WMzdOcWkxZHBuWSIgdGFyZ2V0PSJfYmxhbmsiPlNldCBSU0Zvcm0gQWR2YW5jZSBQSFA8L2E+PC9saT4NCgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9oU0JKZV9yeXExRSIgdGFyZ2V0PSJfYmxhbmsiPkRlbW9uc3RyYXRpb24gb2YgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQkJPC91bD4NCgkJCQkJPC9kaXY+DQoJCQkJCTxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+TGV0IHVzIGtub3cgaWYgc29tZXRoaW5nIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkITwvcD4nOw0KCQl9DQoJCWlmICgkdHlwZSA9PSAndXBkYXRlJykNCgkJew0KCQkJZWNobyAnCTxoMiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPkNvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdGhlIHBsdWdpbiE8L2gyPg0KCQkJCTxoMiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlBsZWFzZSB3YXRjaCB0aGVzZSB0dXRvcmlhbHMgaWYgaGF2ZSBhbnkgcXVlc3Rpb25zOjwvaDI+DQoJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPg0KCQkJCQk8dWw+DQoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9ES0VWemF0YnBEOCIgdGFyZ2V0PSJfYmxhbmsiPkluc3RhbGwgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvVjM3TnFpMWRwblkiIHRhcmdldD0iX2JsYW5rIj5TZXQgUlNGb3JtIEFkdmFuY2UgUEhQPC9hPjwvbGk+DQoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9oU0JKZV9yeXExRSIgdGFyZ2V0PSJfYmxhbmsiPkRlbW9uc3RyYXRpb24gb2YgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQk8L3VsPg0KCQkJCTwvZGl2Pg0KCQkJCTxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+TGV0IHVzIGtub3cgaWYgc29tZXRoaW5nIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkITwvcD4nOw0KCQl9', '', 'CQlpZiAoJHR5cGUgPT0gJ3VuaW5zdGFsbCcpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJJGFwcCA9IEZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCk7DQoNCgkJaWYgKCFmaWxlX2V4aXN0cyhKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9yc2Zvcm0vaGVscGVycy9yc2Zvcm0ucGhwJykpDQoJCXsNCgkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgaW5zdGFsbCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9zZWN1cmUuYXZhbmdhdGUuY29tL29yZGVyL2NhcnQucGhwP1BST0RTPTE5MjUwNDQmUVRZPTEmQUZGSUxJQVRFPTYzOTU2JkFGRlNSQz1wbHVnaW4iIHRhcmdldD0iX2JsYW5rIj5SU0Zvcm0hIFBybyBjb21wb25lbnQ8L2E+IGJlZm9yZSBjb250aW51aW5nLicsICdlcnJvcicpOw0KDQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQlpZiAoIWZpbGVfZXhpc3RzKEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX3JzZm9ybS9oZWxwZXJzL3ZlcnNpb24ucGhwJykpDQoJCXsNCgkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSA8YSBocmVmPSJodHRwczovL3NlY3VyZS5hdmFuZ2F0ZS5jb20vb3JkZXIvY2FydC5waHA/UFJPRFM9MTkyNTA0NCZRVFk9MSZBRkZJTElBVEU9NjM5NTYmQUZGU1JDPXBsdWdpbiIgdGFyZ2V0PSJfYmxhbmsiPlJTRm9ybSEgUHJvPC9hPiB0byBhdCBsZWFzdCBSNDUgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCXJldHVybiB0cnVlOw==', '', '', '', '2.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', 'Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNfX3JzZm9ybV9hZHZhbmNlcGhwYCAoDQogIGBmb3JtX2lkYCBpbnQoMTEpIE5PVCBOVUxMLA0KICBgZXZlbnRzX2FjdGl2ZWAgdmFyY2hhcigyNTUpIE5PVCBOVUxMLA0KICBgZXZlbnRzX2NvZGVgIG1lZGl1bXRleHQgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgZm9ybV9pZGApDQopIEVOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPXV0Zjg7DQoNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjX19yc2Zvcm1fYWR2YW5jZXBocHN0b3JlYCAoDQogIGBpZGAgYmlnaW50KDIwKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCiAgYHVzZXJfaWRgIGludCgxMSkgTk9UIE5VTEwgREVGQVVMVCAnMCcsDQogIGBkYXRhYCBtZWRpdW10ZXh0IE5PVCBOVUxMLA0KICBQUklNQVJZIEtFWSAoYGlkYCksDQogIEtFWSBgdXNlcl9pZGAgKGB1c2VyX2lkYCkNCikgRU5HSU5FPU15SVNBTSBERUZBVUxUIENIQVJTRVQ9dXRmODs=', '', 'RSForm! Pro - Advance PHP', '', 1, '', '', 1, '2021-09-15 15:11:10', '2023-11-11 09:06:02', 6, '', 7),
(21, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Plugin to autoload the powers of componentbuilder', '{}', '86dd28b5-18d4-437e-8a53-7eaf23478fc8', '', 8, '{}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtICAgb2JqZWN0ICAmJHN1YmplY3QgIFRoZSBvYmplY3QgdG8gb2JzZXJ2ZSAtLSBldmVudCBkaXNwYXRjaGVyLg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGNvbmZpZyAgICBBbiBvcHRpb25hbCBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzLg0KCSAqDQoJICogQHNpbmNlICAgMS42DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdWJqZWN0LCAkY29uZmlnKQ0KCXsNCgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkc3ViamVjdCwgJGNvbmZpZyk7IyMjUExVR0lOX1BPV0VSX0FVVE9MT0FERVIjIyMNCgl9', '[[[Component]]] Powers Autoloader', '', '', '', 'Ly8gV0hBVD8=', '', '', '', '1.0.1', '{\"property_selection0\":{\"property\":\"25\"},\"property_selection1\":{\"property\":\"27\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Powers Autoloader', '', 1, '', '', 1, '2021-11-11 02:22:02', '2024-03-01 21:18:38', 16, '', 8),
(22, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the power autoloader plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Autoloader\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2977\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', 'd4f37ffe-afd8-492f-9491-9846f215a66d', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KDQpKTG9hZGVyOjpyZWdpc3RlcignW1tbQ29tcG9uZW50XV1dSGVscGVyJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY29tcG9uZW50XV1dL2hlbHBlcnMvW1tbY29tcG9uZW50XV1dLnBocCcpOw0KDQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXEZhY3RvcnkgYXMgQ0ZhY3Rvcnk7DQo=', 11, '{\"method_selection0\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbiBsb2FkZWQNCgkJaWYgKENGYWN0b3J5OjpfKCdDb25maWcnKS0+YWRkX3Bvd2VyICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gbm93IGdldCB0aGUgcGx1Z2luIElEIGlmIHNldA0KCQkJaWYgKCgkaWQgPSAoaW50KSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3BsdWdpbicsIDApKSAhPT0gMCkNCgkJCXsNCgkJCQkvLyBsb2FkIHRoZSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbg0KCQkJCUNGYWN0b3J5OjpfKCdKb29tbGFwbHVnaW4uRGF0YScpLT5zZXQoJGlkKTsNCgkJCQkvLyBub3cgc2V0IHRoZSBwbHVnaW4gcG93ZXJzIHBsYWNlaG9sZGVyDQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+c2V0KCdQTFVHSU5fUE9XRVJfQVVUT0xPQURFUicsICcnKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdZb3UgZG8gbm90IGhhdmUgYSBnbG9iYWwgcG93ZXIgcGx1Z2luIHNldHVwLCBzbyB0aGUgcG93ZXJzIHBsdWdpbiBhdXRvbG9hZGVyIGNvdWxkIG5vdCBiZSBhZGRlZC4nKSwgJ1dhcm5pbmcnKTsNCgkJCX0NCgkJfQ0KCX0NCltDVVNUT01DT0RFPWNvbXBvbmVudEFjdGl2ZV0=', '[[[Component]]] Powers Autoloader Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDEwXQ==', '', '', '', '1.2.1', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Powers Autoloader Compiler', '', 1, '', '', 1, '2021-11-13 13:05:34', '2024-05-26 20:14:16', 30, '', 3),
(23, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component dashboard class custom headers.', '{\"fields0\":{\"file\":\"component_dashboard\",\"fields_name\":\"params.component_dashboard_headers\",\"fieldset\":\"component_dashboard_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"3010\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"3014\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"3006\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"3011\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"3015\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"3007\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"3012\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"3016\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"3008\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"3013\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"3017\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"3009\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'e3252a0c-ce05-428d-a916-24167e00c798', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrY29tcG9uZW50X2Rhc2hib2FyZF0=', '[[[Component]]] Component Dashboard Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Dashboard Headers Tabs', '', 1, '', '', 1, '2021-12-06 04:40:01', '2022-10-23 21:11:58', 17, '', 2),
(24, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Add Access Token to easy update [[[Component]]]', '{}', '29ac30d2-1c1a-4b9e-9cfa-c5fcb08caa01', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogb25JbnN0YWxsZXJCZWZvcmVQYWNrYWdlRG93bmxvYWQuDQoJICoNCgkgKiBGb3IgbW9kaWZpY2F0aW9uIG9mIFVSTCBhbmQgaGVhZGVycyBiZWZvcmUgcGFja2FnZSBkb3dubG9hZA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkKCYkdXJsLCAmJGhlYWRlcnMpDQoJew0KCQkvLyBzZXQgdGhlIFVSSSBvYmplY3QNCgkJJHVyaSA9IEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgkdXJsKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnLycsICR1cmktPmdldFBhdGgoKSk7DQoNCgkJLy8gY2hlY2sgdGhhdCB0aGlzIGlzIG91ciBBUEkNCgkJaWYgKCR1cmktPmdldEhvc3QoKSA9PSAnW1tbZ2l0ZWFfdXJsXV1dJyAmJiBpbl9hcnJheSgnW1tbZ2l0ZWFfcGFja2FnZV9uYW1lXV1dJywgJHBhcnRzKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSB0b2tlbiBpZiBzZXQNCgkJCSR0b2tlbiA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdnaXRlYV90b2tlbicsIGZhbHNlKTsNCgkJCS8vIG9ubHkgYWRkIGlmIHRva2VuIGlzIHNldA0KCQkJaWYgKCR0b2tlbikNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIHRva2VuDQoJCQkJJHVyaS0+c2V0VmFyKCdhY2Nlc3NfdG9rZW4nLCAkdG9rZW4pOw0KCQkJCS8vIHVwZGF0ZSB0aGUgVVJMDQoJCQkJJHVybCA9ICR1cmktPnRvU3RyaW5nKCk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gc2V0IHRoZSByZXR1cm4gVVJMDQoJCQkJJHJldHVybiA9IHVybGVuY29kZShiYXNlNjRfZW5jb2RlKChzdHJpbmcpIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgpKSk7DQoJCQkJLy8gc2V0IHRoZSB1cmxzDQoJCQkJJGdldF9hY2Nlc3NfdG9rZW5fdXJsID0gJyJodHRwczovL1tbW2dpdGVhX3VybF1dXS91c2VyL3NldHRpbmdzL2FwcGxpY2F0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSInIC4gVGV4dDo6XygnR2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCSRzZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciJyAuIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpyb290KCkgLiAnYWRtaW5pc3RyYXRvci9pbmRleC5waHA/b3B0aW9uPWNvbV9jb25maWcmdmlldz1jb21wb25lbnQmY29tcG9uZW50PWNvbV9bW1tjb21wb25lbnRdXV0mcGF0aD0mcmV0dXJuPScgLiAkcmV0dXJuIC4gJyIgdGl0bGU9IicgLiBUZXh0OjpfKCdTZXQgQWNjZXNzIFRva2VuJykgLiAnIic7DQoJCQkJLy8gbG9hZCB0aGUgbWVzc2FnZQ0KCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKA0KCQkJCQlUZXh0OjpzcHJpbnRmKCJJZiB0aGVyZSB3YXMgYSBkb3dubG9hZC91cGRhdGUgZXJyb3IsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGUgPGEgaHJlZj0lcyA+QVBJIEFjY2VzcyBUb2tlbjwvYT4gZm9yIHVwZGF0ZXMgb2YgW1tbY29tcG9uZW50XV1dIGhhcyBub3QgYmVlbiBzZXQsIHlvdSBjYW4gc2V0IHRoaXMgYWNjZXNzIHRva2VuIGluIHRoZSA8YSBocmVmPSVzID5nbG9iYWwgb3B0aW9ucyB0YWI8L2E+LiIsDQoJCQkJCQkkZ2V0X2FjY2Vzc190b2tlbl91cmwsDQoJCQkJCQkkc2V0X2FjY2Vzc190b2tlbl91cmwNCgkJCQkJKSwgJ25vdGljZScpOw0KCQkJfQ0KCQl9DQoJfQ0K', 'componentbuilder', '', '', '', 'Ly8gbmVlZHMgZml4', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"39\"},\"property_selection1\":{\"property\":\"37\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev)', '', 1, '', '', 1, '2021-12-08 07:42:39', '2024-03-01 21:17:50', 17, '', 9),
(25, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'For easy update of [[[Component]]]', '{}', '5565c7ce-bbbc-48c6-992a-9842046d28db', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogb25JbnN0YWxsZXJCZWZvcmVQYWNrYWdlRG93bmxvYWQuDQoJICoNCgkgKiBGb3IgbW9kaWZpY2F0aW9uIG9mIFVSTCBhbmQgaGVhZGVycyBiZWZvcmUgcGFja2FnZSBkb3dubG9hZA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkKCYkdXJsLCAmJGhlYWRlcnMpDQoJew0KCQkvLyBzZXQgdGhlIFVSSSBvYmplY3QNCgkJJHVyaSA9IEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgkdXJsKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnLycsICR1cmktPmdldFBhdGgoKSk7DQoNCgkJLy8gY2hlY2sgdGhhdCB0aGlzIGlzIG91ciBBUEkNCgkJaWYgKCR1cmktPmdldEhvc3QoKSA9PSAnW1tbZ2l0ZWFfdXJsXV1dJyAmJiBpbl9hcnJheSgnW1tbZ2l0ZWFfcGFja2FnZV9uYW1lXV1dJywgJHBhcnRzKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSB0b2tlbiBpZiBzZXQgKHdlIGFkZGVkIHRoZSBkZWZhdWx0IHB1YmxpYyB0b2tlbikNCgkJCSR0b2tlbiA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdnaXRlYV90b2tlbicsICcxZjRkMGY0ZTRjNjNkNDcwYzJiYjRjMzM3YjdlNzNlYjU4ZWNiOTcyJyk7DQoJCQkvLyBvbmx5IGFkZCBpZiB0b2tlbiBpcyBzZXQNCgkJCWlmICgkdG9rZW4pDQoJCQl7DQoJCQkJLy8gYWRkIHRoZSB0b2tlbg0KCQkJCSR1cmktPnNldFZhcignYWNjZXNzX3Rva2VuJywgJHRva2VuKTsNCgkJCQkvLyB1cGRhdGUgdGhlIFVSTA0KCQkJCSR1cmwgPSAkdXJpLT50b1N0cmluZygpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIHNldCB0aGUgcmV0dXJuIFVSTA0KCQkJCSRyZXR1cm4gPSB1cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgoc3RyaW5nKSBKb29tbGFfX19lZWNjMTQzZV9iNWNmXzRjMzNfYmE0ZF85N2RhMWRmNjE0MjJfX19Qb3dlcjo6Z2V0SW5zdGFuY2UoKSkpOw0KCQkJCS8vIHNldCB0aGUgdXJscw0KCQkJCSRnZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciaHR0cHM6Ly9bW1tnaXRlYV91cmxdXV0vdXNlci9zZXR0aW5ncy9hcHBsaWNhdGlvbnMiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iJyAuIFRleHQ6Ol8oJ0dldCBBY2Nlc3MgVG9rZW4nKSAuICciJzsNCgkJCQkkc2V0X2FjY2Vzc190b2tlbl91cmwgPSAnIicgLiBKb29tbGFfX19lZWNjMTQzZV9iNWNmXzRjMzNfYmE0ZF85N2RhMWRmNjE0MjJfX19Qb3dlcjo6cm9vdCgpIC4gJ2FkbWluaXN0cmF0b3IvaW5kZXgucGhwP29wdGlvbj1jb21fY29uZmlnJnZpZXc9Y29tcG9uZW50JmNvbXBvbmVudD1jb21fW1tbY29tcG9uZW50XV1dJnBhdGg9JnJldHVybj0nIC4gJHJldHVybiAuICciIHRpdGxlPSInIC4gVGV4dDo6XygnU2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCS8vIGxvYWQgdGhlIG1lc3NhZ2UNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZSgNCgkJCQkJVGV4dDo6c3ByaW50ZigiSWYgdGhlcmUgd2FzIGEgZG93bmxvYWQvdXBkYXRlIGVycm9yLCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlIDxhIGhyZWY9JXMgPkFQSSBBY2Nlc3MgVG9rZW48L2E+IGZvciB1cGRhdGVzIG9mIFtbW2NvbXBvbmVudF1dXSBoYXMgbm90IGJlZW4gc2V0LCB5b3UgY2FuIHNldCB0aGlzIGFjY2VzcyB0b2tlbiBpbiB0aGUgPGEgaHJlZj0lcyA+Z2xvYmFsIG9wdGlvbnMgdGFiPC9hPi4iLA0KCQkJCQkJJGdldF9hY2Nlc3NfdG9rZW5fdXJsLA0KCQkJCQkJJHNldF9hY2Nlc3NfdG9rZW5fdXJsDQoJCQkJCSksICdub3RpY2UnKTsNCgkJCX0NCgkJfQ0KCX0NCg==', 'componentbuilder_public', '', '', '', 'Ly8=', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"39\"},\"property_selection1\":{\"property\":\"37\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev - public)', '', 1, '', '', 1, '2021-12-20 16:18:59', '2024-03-01 21:17:07', 5, '', 9),
(26, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set dynamic gets class headers.', '{\"fields0\":{\"file\":\"dynamic_get\",\"fields_name\":\"params.dynamic_get_headers\",\"fieldset\":\"dynamic_get_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields42\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields43\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields44\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields45\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields46\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields47\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields48\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields49\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields50\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'd44a5259-8dc9-4214-aa1d-e436ccc1f50c', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQo=', 3, '{}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrZHluYW1pY19nZXRd', '[[[Component]]] Dynamic Get Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.2', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Dynamic Get Headers Tabs', '', 1, '', '', 1, '2022-01-10 03:11:11', '2024-03-10 12:09:40', 23, '', 2),
(27, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 1, 'This plugin is used to load scripture on your website. So it adds https://cdn.jsdelivr.net/gh/getbible/loader@3.1.0/dist/js/getBible.min.js to the header of your website. See: https://getbible.net/loader for more details.', '{}', '3d7c1a27-54ca-418d-a77a-6590147cf901', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEh0bWxcSFRNTEhlbHBlcjsNCg==', 8, '{\"method_selection0\":{\"method\":\"122\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBoZWFkIGlzIGNvbXBpbGVkIGFuZCBhbGxvd3MgbWFuaXB1bGF0aW9uIG9mIHRoZSBoZWFkIGRhdGEuDQoJICogSW4gdGhpcyBjYXNlLCBpdCdzIHVzZWQgdG8gYWRkIGEgSmF2YVNjcmlwdCBmaWxlIHRvIHRoZSBmcm9udCBlbmQgb2YgdGhlIEpvb21sYSBzaXRlLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMy4wLjANCgkgKiBAdGhyb3dzICBFeGNlcHRpb24gb24gZXJyb3IuDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQmVmb3JlQ29tcGlsZUhlYWQoKQ0KCXsNCgkJLy8gQ2hlY2sgaWYgd2UgYXJlIGluIHRoZSBzaXRlIGFwcGxpY2F0aW9uDQoJCWlmICgkdGhpcy0+YXBwLT5pc0NsaWVudCgnc2l0ZScpKSB7DQoJCQlIVE1MSGVscGVyOjpfKCdzY3JpcHQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2dldGJpYmxlL2xvYWRlckAzLjEuMC9kaXN0L2pzL2dldEJpYmxlLm1pbi5qcycsIFsndmVyc2lvbicgPT4gJ2F1dG8nXSk7DQoJCX0NCgl9', 'GetBibleLoader', '', '', '', 'CQkJJGp2ZXJzaW9uID0gbmV3IEpWZXJzaW9uKCk7DQoJCQlpZiAoISRqdmVyc2lvbi0+aXNDb21wYXRpYmxlKCczLjEwLjAnKSkgew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSB0byBhdCBsZWFzdCBKb29tbGEhIDMuMTAgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0K', '', '', '', '3.1.0', '{\"property_selection0\":{\"property\":\"25\"}}', 'IyBnZXRCaWJsZSBMb2FkZXIgKFtbW3BsdWdpbi52ZXJzaW9uXV1dKQ0KDQojIyMgVGhlIEpvb21sYSBwbHVnaW4gZnJvbSBbZ2V0QmlibGUubmV0XShodHRwczovL2dldGJpYmxlLm5ldC9qb29tbGEpIHRvIGxvYWQgb2YgdGhlIFNjcmlwdHVyZXMgaW4geW91ciB3ZWJzaXRlIGNvbnRlbnQuDQoNCkFkaW5nIHRoZSBbZ2V0QmlibGUgTG9hZGVyIFNjcmlwdF0oaHR0cHM6Ly9naXQudmRtLmRldi9nZXRCaWJsZS9sb2FkZXIpIHRoZSB0aGUgaGVhZGVyIG9mIHlvdXIgd2Vic2l0ZSwgd2UgYXJlIGFkZGluZyB0aGUgYWJpbGl0eSB0byB5b3VyIEpvb21sYSB3ZWJzaXRlIHRvIGFkZCBTY3JpcHR1cmVzIHRvIHlvdXIgY29udGVudCB2ZXJ5IGVhc2lseS4NCg0KIyMgSG93Pw0KDQotIERvd25sb2FkIHRoZSBwbHVnaW4gW2hlcmVdKGh0dHBzOi8vZ2l0LnZkbS5kZXYvZ2V0QmlibGUvbG9hZGVyLXBsdWdpbi9hcmNoaXZlL21hc3Rlci56aXApLg0KLSBJbnN0YWxsIHRoZSBwbHVnaW4gb24geW91ciBKb29tbGEgMy80LzUgd2Vic2l0ZS4NCi0gQWRkIGEgY2xhc3MgYGdldEJpYmxlYCB0byBhbnkgZWxlbWVudCAoaW4geW91ciBjb250ZW50KSB0aGF0IGNvbnRhaW5zIGEgU2NyaXB0dXJlIHJlZmVyZW5jZXMgbGlrZSB0aGlzOg0KDQogICBgYGBodG1sDQogICA8dWw+DQogICAgIDxsaSBjbGFzcz0iZ2V0QmlibGUiPkpvaG4gMzoxNjwvbGk+DQogICAgIDxsaSBjbGFzcz0iZ2V0QmlibGUiPjEgSm9obiAzOjE2LTE5LDIyPC9saT4NCiAgICAgPCEtLSBBZGQgbW9yZSBlbGVtZW50cyBhcyBuZWVkZWQgLS0+DQogICA8L3VsPg0KICAgYGBgDQotIEZvbGxvdyB0aGVzZSBbcmVmZXJlbmNlIG5hbWluZ10oaHR0cHM6Ly9naXQudmRtLmRldi9nZXRCaWJsZS9sb2FkZXIjc2NyaXB0dXJlLXJlZmVyZW5jZS1mb3JtYXR0aW5nKSBjb252ZW50aW9ucy4NCi0gVGhlcmUgaXMgYWxzbyBbY3VzdG9taXphdGlvbiBvcHRpb25dKGh0dHBzOi8vZ2l0LnZkbS5kZXYvZ2V0QmlibGUvbG9hZGVyI3V0aWxpemluZy1kYXRhLWF0dHJpYnV0ZXMpIGF2YWlsYWJsZS4NCi0gRm9yIG1vcmUgZGV0YWlscyBnb3QgdG8gdGhlIFtCaWJsZWtpdCBkb2N1bWVudGF0aW9uXShodHRwczovL2dldGJpYmxlLm5ldC9sb2FkZXIpIHBhZ2UuDQoNCj4gU3VwcG9ydCBjYW4gYmUgZm91bmQgYXQgb3VyIFtjb21tdW5pdHkgc3VwcG9ydCBhcmVhXShodHRwczovL2dpdC52ZG0uZGV2L2dldEJpYmxlL3N1cHBvcnQpLg0KDQojIEJ1aWxkIERldGFpbHMNCg0KKyAqQ29tcGFueSo6IFsjIyNDT01QQU5ZTkFNRSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkF1dGhvcio6IFsjIyNBVVRIT1IjIyNdKG1haWx0bzojIyNBVVRIT1JFTUFJTCMjIykNCisgKk5hbWUqOiBbZ2V0QmlibGUgTG9hZGVyXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqRmlyc3QgQnVpbGQqOiAjIyNDUkVBVElPTkRBVEUjIyMNCisgKkxhc3QgQnVpbGQqOiAjIyNCVUlMRERBVEUjIyMNCisgKlZlcnNpb24qOiBbW1twbHVnaW4udmVyc2lvbl1dXQ0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQo+IFRoaXMgKipwbHVnaW4qKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy5qb29tbGFjb21wb25lbnRidWlsZGVyLmNvbSkuDQo+IERldmVsb3BlZCBieSBbTGxld2VsbHluIHZhbiBkZXIgTWVyd2VdKG1haWx0bzpqb29tbGFAdmRtLmlvKQ==', '', '', '', 'GetBible Loader', '', 1, '', '', 1, '2023-07-26 05:24:37', '2024-03-19 21:44:59', 39, '', 2),
(28, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 1, 'This plugin is used to load PreUpVer on your website. So it adds https://cdn.jsdelivr.net/gh/Llewellynvdm/PreUpVer@1.0.0/dist/js/preupver.min.js to the header of your website. See: https://git.vdm.dev/Llewellyn/PreUpVer for more details.', '{}', 'dd6580c4-6bbb-4d13-a868-0b38fbb6a66e', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEh0bWxcSFRNTEhlbHBlcjsNCg==', 8, '{\"method_selection0\":{\"method\":\"122\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBoZWFkIGlzIGNvbXBpbGVkIGFuZCBhbGxvd3MgbWFuaXB1bGF0aW9uIG9mIHRoZSBoZWFkIGRhdGEuDQoJICogSW4gdGhpcyBjYXNlLCBpdCdzIHVzZWQgdG8gYWRkIGEgSmF2YVNjcmlwdCBmaWxlIHRvIHRoZSBmcm9udCBlbmQgb2YgdGhlIEpvb21sYSBzaXRlLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMy4wLjANCgkgKiBAdGhyb3dzICBFeGNlcHRpb24gb24gZXJyb3IuDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQmVmb3JlQ29tcGlsZUhlYWQoKQ0KCXsNCgkJLy8gQ2hlY2sgaWYgd2UgYXJlIGluIHRoZSBzaXRlIGFwcGxpY2F0aW9uDQoJCWlmICgkdGhpcy0+YXBwLT5pc0NsaWVudCgnc2l0ZScpKSB7DQoJCQlIVE1MSGVscGVyOjpfKCdzY3JpcHQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0xsZXdlbGx5bnZkbS9QcmVVcFZlckAxLjAuMC9kaXN0L2pzL3ByZXVwdmVyLm1pbi5qcycsIFsndmVyc2lvbicgPT4gJ2F1dG8nXSk7DQoJCX0NCgl9', 'PreUpVerLoader', '', '', '', 'CQkJJGp2ZXJzaW9uID0gbmV3IEpWZXJzaW9uKCk7DQoJCQlpZiAoISRqdmVyc2lvbi0+aXNDb21wYXRpYmxlKCczLjEwLjAnKSkgew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSB0byBhdCBsZWFzdCBKb29tbGEhIDMuMTAgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0K', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"25\"}}', 'IyBQcmVVcFZlciBMb2FkZXIgKFtbW3BsdWdpbi52ZXJzaW9uXV1dKQ0KDQojIyBJbnRyb2R1Y3Rpb24NCg0KUHJlVXBWZXIgaXMgYSB2ZXJzYXRpbGUgSmF2YVNjcmlwdCBsaWJyYXJ5IGRlc2lnbmVkIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlcnMgb2YgbGlicmFyeSBzY3JpcHRzIGluIHlvdXIgZG9jdW1lbnRhdGlvbi4gSXQgaWRlbnRpZmllcyBzcGVjaWZpYyBgPHByZT5gIHRhZ3Mgb24geW91ciB3ZWJwYWdlIGFuZCB1cGRhdGVzIHRoZW0gd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gdGFnIGZldGNoZWQgZnJvbSBhIHNwZWNpZmllZCByZXBvc2l0b3J5LCBlbnN1cmluZyB5b3VyIGRvY3VtZW50YXRpb24gYWx3YXlzIGRpc3BsYXlzIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uDQoNCiMjIEhvdyBJdCBXb3Jrcw0KDQpQcmVVcFZlciBvcGVyYXRlcyBieSBzZWFyY2hpbmcgZm9yIGA8cHJlPmAgdGFncyB3aXRoIGEgZGVzaWduYXRlZCBjbGFzcyAoYHByZXVwdmVyYCkgYW5kIHVzaW5nIHRoZWlyIGRhdGEgYXR0cmlidXRlcyB0byBwZXJmb3JtIHZlcnNpb24gdXBkYXRlcy4gSXQgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBrZWVwaW5nIHlvdXIgbGlicmFyeSByZWZlcmVuY2VzIHVwLXRvLWRhdGUgaW4gZG9jdW1lbnRhdGlvbi4NCg0KIyMjIEF1dG9tYXRpYyBEZXRlY3Rpb24gYW5kIFVwZGF0aW5nDQoNCldoZW4gdGhlIHdlYnBhZ2UgbG9hZHMsIFByZVVwVmVyIGZpbmRzIGFsbCBgPHByZT5gIHRhZ3MgbWFya2VkIHdpdGggdGhlIGBwcmV1cHZlcmAgY2xhc3MuIEl0IHRoZW4gZXh0cmFjdHMgbmVjZXNzYXJ5IGRldGFpbHMgZnJvbSB0aGVpciBkYXRhIGF0dHJpYnV0ZXMgYW5kIHVwZGF0ZXMgZWFjaCB0YWcgd2l0aCB0aGUgbGF0ZXN0IGxpYnJhcnkgdmVyc2lvbi4NCg0KIyMjIFVzYWdlDQoNCjEuICoqTWFya2luZyBgPHByZT5gIFRhZ3M6KioNCg0KICAgQWRkIHRoZSBgY2xhc3M9InByZXVwdmVyImAgdG8gYDxwcmU+YCB0YWdzIGluIHlvdXIgSFRNTCBhbmQgZGVmaW5lIHRoZSByZXF1aXJlZCBkYXRhIGF0dHJpYnV0ZXMgZm9yIGF1dG9tYXRpYyB1cGRhdGluZzoNCg0KICAgYGBgaHRtbA0KICAgPHByZSBpZD0idW5pcXVlLWlkIiBjbGFzcz0icHJldXB2ZXIiDQogICAgICAgIGRhdGEtYXBpLXVybD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy91c2VybmFtZS9saWJyYXJ5L3RhZ3MiDQogICAgICAgIGRhdGEtZGVzY3JpcHRpb249IkRlc2NyaXB0aW9uIG9mIHRoZSBsaWJyYXJ5IHNjcmlwdCINCiAgICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC91c2VybmFtZS9saWJyYXJ5QCR7dmVyc2lvbn0vZGlzdC9saWJyYXJ5Lm1pbi5qcyI+DQogICA8L3ByZT4NCiAgIGBgYA0KDQogICBSZXBsYWNlIGB1bmlxdWUtaWRgLCBgdXNlcm5hbWVgLCBgbGlicmFyeWAsIGFuZCBvdGhlciBwbGFjZWhvbGRlcnMgd2l0aCB5b3VyIHNwZWNpZmljIGRldGFpbHMuDQoNCjIuICoqQXR0cmlidXRlcyBFeHBsYWluZWQ6KioNCg0KICAgLSBgaWRgOiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYDxwcmU+YCB0YWcuDQogICAtIGBkYXRhLWFwaS11cmxgOiBUaGUgQVBJIFVSTCB0byBmZXRjaCB0aGUgbGF0ZXN0IGxpYnJhcnkgdmVyc2lvbi4NCiAgIC0gYGRhdGEtZGVzY3JpcHRpb25gOiBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWJyYXJ5IHNjcmlwdC4NCiAgIC0gYGRhdGEtdXJsYDogVGhlIFVSTCBvZiB0aGUgc2NyaXB0LCB3aGVyZSBgJHt2ZXJzaW9ufWAgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBudW1iZXIuDQoNCiMjIyBFeGFtcGxlDQoNCkNoZWNrIG91dCB0aGUgW3Rlc3RzXShodHRwczovL2dpdC52ZG0uZGV2L0xsZXdlbGx5bi9QcmVVcFZlci9zcmMvYnJhbmNoL21hc3Rlci90ZXN0cy8pIGZvbGRlciBmb3IgdGhlIGV4YW1wbGVzIHdlIHVzZSB0byB0ZXN0IGlmIHRoaXMgbGlicmFyeSB3b3JrcyBhcyBleHBlY3RlZC4NCg0KIyBCdWlsZCBEZXRhaWxzDQoNCisgKkF1dGhvcio6IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQorICpOYW1lKjogW1ByZVVwVmVyIExvYWRlcl0oaHR0cHM6Ly9naXQudmRtLmRldi9MbGV3ZWxseW4vUHJlVXBWZXIpDQorICpGaXJzdCBCdWlsZCo6ICMjI0NSRUFUSU9OREFURSMjIw0KKyAqTGFzdCBCdWlsZCo6ICMjI0JVSUxEREFURSMjIw0KKyAqVmVyc2lvbio6IFtbW3BsdWdpbi52ZXJzaW9uXV1dDQorICpDb3B5cmlnaHQqOiAjIyNDT1BZUklHSFQjIyMNCisgKkxpY2Vuc2UqOiAjIyNMSUNFTlNFIyMjDQoNCj4gVGhpcyAqKnBsdWdpbioqIHdhcyBidWlsZCB3aXRoIGEgSm9vbWxhIFtBdXRvbWF0ZWQgQ29tcG9uZW50IEJ1aWxkZXJdKGh0dHBzOi8vd3d3Lmpvb21sYWNvbXBvbmVudGJ1aWxkZXIuY29tKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8p', '', '', '', 'PreUpVer Loader', '', 1, '', '', 1, '2023-11-28 09:01:02', '2023-11-28 11:27:32', 5, '', 2),
(29, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component dashboard class custom headers.', '{\"fields0\":{\"file\":\"component_dashboard\",\"fields_name\":\"params.component_dashboard_headers\",\"fieldset\":\"component_dashboard_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"3010\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"3014\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"3006\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"3011\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"3015\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"3007\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"3012\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"3016\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"3008\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"3013\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"3017\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"3009\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'e682b390-810c-4c47-b5b8-8ebd3621aecf', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStjb21wb25lbnRfZGFzaGJvYXJkXQ==', '[[[Component]]] Component Dashboard Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Dashboard Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:01', '2024-03-10 21:38:43', 3, '', 2),
(30, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the power autoloader plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Autoloader\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2977\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', 'c5be15b5-cf71-47ed-89fc-6ee2150084aa', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{\"method_selection0\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbiBsb2FkZWQNCgkJaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5hZGRfcG93ZXIgJiYgJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSBwbHVnaW4gSUQgaWYgc2V0DQoJCQlpZiAoKCRpZCA9IChpbnQpICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpICE9PSAwKQ0KCQkJew0KCQkJCS8vIGxvYWQgdGhlIHBvd2VyIGF1dG9sb2FkZXIgcGx1Z2luDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRpZCk7DQoJCQkJLy8gbm93IHNldCB0aGUgcGx1Z2luIHBvd2VycyBwbGFjZWhvbGRlcg0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+c2V0KCdQTFVHSU5fUE9XRVJfQVVUT0xPQURFUicsICcnKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdZb3UgZG8gbm90IGhhdmUgYSBnbG9iYWwgcG93ZXIgcGx1Z2luIHNldHVwLCBzbyB0aGUgcG93ZXJzIHBsdWdpbiBhdXRvbG9hZGVyIGNvdWxkIG5vdCBiZSBhZGRlZC4nKSwgJ1dhcm5pbmcnKTsNCgkJCX0NCgkJfQ0KCX0NCltDVVNUT01DT0RFPWNvbXBvbmVudEFjdGl2ZV0=', '[[[Component]]] Powers Autoloader Compiler', '', '', '', '', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Powers Autoloader Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:15', '2024-05-26 20:14:27', 5, '', 3),
(31, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component class custom headers.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.joomla_component_headers\",\"fieldset\":\"joomla_component_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2871\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2872\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2974\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2873\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2874\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2975\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2878\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2877\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2973\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2875\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2876\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2972\",\"custom_value\":\"\"}}}}', '5a37b156-fec3-4b56-b748-69f4ecff5ca1', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStqb29tbGFfY29tcG9uZW50XQ==', '[[[Component]]] Component Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:18', '2024-03-10 20:59:13', 6, '', 2),
(32, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom admin class custom headers.', '{\"fields0\":{\"file\":\"custom_admin_view\",\"fields_name\":\"params.custom_admin_view_headers\",\"fieldset\":\"custom_admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '69c4c213-5ef7-4ebf-b51f-c723edb1643b', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStjdXN0b21fYWRtaW5fdmlld10=', '[[[Component]]] Custom Admin Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Custom Admin Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:22', '2024-03-10 21:00:26', 4, '', 2),
(33, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set site class custom headers.', '{\"fields0\":{\"file\":\"site_view\",\"fields_name\":\"params.site_view_headers\",\"fieldset\":\"site_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '1628a6a8-926c-4d91-a1da-cc9e096514fc', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStzaXRlX3ZpZXdd', '[[[Component]]] Site Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Site Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:32', '2024-03-10 21:01:36', 3, '', 2),
(34, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set admin class custom headers.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.admin_view_headers\",\"fieldset\":\"admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2849\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2846\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2969\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2983\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2985\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2968\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2886\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2884\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2995\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2850\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2845\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2967\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2844\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2847\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2966\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2984\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2986\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2965\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2885\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2883\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2996\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2851\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2848\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2964\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2895\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2896\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2970\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2987\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2988\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2952\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2897\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2898\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2999\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"3088\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"3089\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"3090\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"3091\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"3092\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"3093\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'b14309ee-f0e0-4250-ac14-d8e2f635cbad', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZSthZG1pbl92aWV3XQ==', '[[[Component]]] Admin Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Admin Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:34', '2024-03-11 14:38:37', 3, '', 2),
(35, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the custom headers for your classes during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your code where you would like to set Custom Headers.', '{}', '3584933e-d2a1-48a4-a92d-119ae8d32135', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCg==', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEdsb2JhbCBzd2l0Y2ggdG8gc2VlIGlmIGEgZmlsZSBoYXMgY3VzdG9tIGhlYWRlcnMuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsb2FkSGVhZGVycyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIGFjdGl2ZSBoZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCAkYWN0aXZlSGVhZGVycyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIGNvbXBpbGVyIHBsYWNlaG9sZGVycyB2YWx1ZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkICRwbGFjZWhvbGRlcnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIHBvd2VycyB0byBpbmNsdWRlIGluIHByb2plY3QNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkICRsaW5rZWRQb3dlcnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIFRhcmdldHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC44DQoJICovDQoJcHJvdGVjdGVkICR0YXJnZXRzID0gYXJyYXkoDQoJCSdhZG1pbl92aWV3X2hlYWRlcnMnICAgICAgICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX3NpbmdsZScNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2FkbWluX3ZpZXdfaHRtbCcgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX2FkbWluX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2ltcG9ydF9jdXN0b21fY29udHJvbGxlcicgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnaW1wb3J0X2N1c3RvbV9jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdpbXBvcnQuY3VzdG9tLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfaW1wb3J0X2N1c3RvbV9tb2RlbCcgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnaW1wb3J0X2N1c3RvbV9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnaW1wb3J0LmN1c3RvbS5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSkNCgkJCSksDQoJCSdzaXRlX3ZpZXdfaGVhZGVycycgICAgICAgICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX3NpdGVfdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlldycgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19tb2RlbCcgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5zaXRlLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdjdXN0b21fYWRtaW5fdmlld19oZWFkZXJzJyAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LmFkbWluLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdkeW5hbWljX2dldF9oZWFkZXJzJyAgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfc2l0ZV92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2NvbXBvbmVudF9kYXNoYm9hcmRfaGVhZGVycycgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfZGFzaGJvYXJkX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdkYXNoYm9hcmQnDQoJCQkJKSwNCgkJCQknYWRkX2Rhc2hib2FyZF92aWV3JyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdkYXNoYm9hcmRfdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX3ZpZXdfaHRtbCcgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2Rhc2hib2FyZC52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF9jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9hamF4X21vZGVsJyAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpDQoJCQkpLA0KCQknam9vbWxhX2NvbXBvbmVudF9oZWFkZXJzJyAgICA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9hZG1pbl9jb21wb25lbnQnID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX2NvbXBvbmVudCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4uY29tcG9uZW50JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhZG1pbicNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV9jb21wb25lbnQnICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX2NvbXBvbmVudCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS5jb21wb25lbnQnLA0KCQkJCQkndmlldycgICAgPT4gJ3NpdGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX2hlbHBlcicgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5faGVscGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi5oZWxwZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2FkbWluJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2hlbHBlcicgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfaGVscGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmhlbHBlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnc2l0ZScNCgkJCQkpDQoJCQkpDQoJKTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBjaGVjayB0aGF0IHRoZSBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIEFkbWluIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ2FkbWluX3ZpZXdfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIEN1c3RvbSBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbEN1c3RvbVZpZXdEYXRhKCYkdmlldywgJiRpZCwgJiR0YWJsZSkNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkdmlldy0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgU2l0ZSBWaWV3cw0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJHZpZXctPnBhcmFtcywgJHZpZXcsICdzaXRlX3ZpZXdfaGVhZGVycycpOw0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQ3VzdG9tIEFkbWluIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ2N1c3RvbV9hZG1pbl92aWV3X2hlYWRlcnMnKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBEeW5hbWljIEdldCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjEwDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZU1vZGVsRHluYW1pY0dldERhdGEoJiRkeW5hbWljR2V0LCAmJGlkLCAmJGNvZGUsICYkYXJlYSkNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkZHluYW1pY0dldC0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgU2l0ZSBWaWV3cw0KCQkJJHRoaXMtPnNldER5bmFtaWNIZWFkZXJzKCRkeW5hbWljR2V0LT5wYXJhbXMsICRjb2RlLCAnZHluYW1pY19nZXRfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxDb21wb25lbnREYXRhKCYkY29tcG9uZW50KQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIEpvb21sYSBDb21wb25lbnQNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCRjb21wb25lbnQtPnBhcmFtcywgJGNvbXBvbmVudCwgJ2pvb21sYV9jb21wb25lbnRfaGVhZGVycycpOw0KCQl9DQoJCS8vIGNoZWNrIHRoYXQgdGhlIGRhc2hib2FyZCBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+ZGFzaGJvYXJkX3BhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIENvbXBvbmVudCBEYXNoYm9hcmQNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCRjb21wb25lbnQtPmRhc2hib2FyZF9wYXJhbXMsICRjb21wb25lbnQsICdjb21wb25lbnRfZGFzaGJvYXJkX2hlYWRlcnMnKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIHNldCBDbGFzcyBIZWFkZXJdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX3NldENsYXNzSGVhZGVyKCYkZXZlbnRfY29udGV4dCwgJiR2aWV3X25hbWUsICYkaGVhZGVycykNCgl7DQoJCWlmICgkdGhpcy0+bG9hZEhlYWRlcnMgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV0pDQoJCQkmJiBpc3NldCgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF0pDQoJCQkmJiBpc19hcnJheSgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF0pKQ0KCQl7DQoJCQkvLyB3b3JrIHdpdGggdGhlIGhlYWRlciB2YWx1ZXMgYXMga2V5cw0KCQkJJF9oZWFkZXJzID0gYXJyYXlfZmxpcCgkaGVhZGVycyk7DQoNCgkJCS8vIG5ldyBoZWFkZXJzDQoJCQkkbmV3ID0gJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGV2ZW50X2NvbnRleHRdOw0KDQoJCQkvLyBub3cgYWRkIHRoZSBuZXcgaGVhZGVycw0KCQkJZm9yZWFjaCAoJG5ldyBhcyAkbiA9PiAkaGVhZGVyKQ0KCQkJew0KCQkJCS8vIGlmIGFuIGVtcHR5IGxpbmUgaXMgZm91bmQganVzdCBza2lwIGl0IA0KCQkJCS8vIHdlIGNoZWNrIGlmIHRoaXMgaGVhZGVyIGlzIGFscmVhZHkgc2V0DQoJCQkJaWYgKGVtcHR5KCRoZWFkZXIpIHx8IGlzc2V0KCRfaGVhZGVyc1skaGVhZGVyXSkpDQoJCQkJew0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoJCQkJJGhlYWRlcnNbXSA9ICRoZWFkZXI7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlR2V0Q29tcG9uZW50RGF0YSgpDQoJew0KCQkvLyBnZXQgcGxhY2Vob2xkZXJzIGZyb20gdGhlIGNvbXBpbGVyDQoJCSR0aGlzLT5wbGFjZWhvbGRlcnMgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21wb25lbnQuUGxhY2Vob2xkZXInKS0+Z2V0KCk7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGFkZCB0aGUgcG93ZXJzIHRvIHRoZSBjb21wb25lbnQNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5saW5rZWRQb3dlcnMsIHRydWUpKQ0KCQl7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdQb3dlcicpLT5sb2FkKCR0aGlzLT5saW5rZWRQb3dlcnMpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogc2V0IHRoZSBoZWFkZXJzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRIZWFkZXJzKCYkcGFyYW1zLCAmJG9iaiwgJGtleSkNCgl7DQoJCS8vIGFkZCB0aGUgaGVhZGVycw0KCQkkcGFyYW1zID0gKFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpKSA/IGpzb25fZGVjb2RlKCRwYXJhbXMsIHRydWUpIDogJHBhcmFtczsNCgkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGtleXMgdmFsdWVzIGluIHRoZSBwYXJhbXMgYXJlYQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykgJiYgaXNzZXQoJHBhcmFtc1ska2V5XSkNCgkJCSYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJGtleV0pKQ0KCQl7DQoJCQlmb3JlYWNoICgkdGhpcy0+dGFyZ2V0c1ska2V5XSBhcyAkdGFyZ2V0ID0+ICRldmVudCkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJHBhcmFtc1ska2V5XVskdGFyZ2V0XSkNCgkJCQkJJiYgJHBhcmFtc1ska2V5XVskdGFyZ2V0XSA9PSAxKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBoZWFkZXIgc3RyaW5nIGlmIHNldA0KCQkJCQkkdGhpcy0+Z2V0SGVhZGVycygNCgkJCQkJCSRwYXJhbXNbJGtleV0sDQoJCQkJCQkkZXZlbnQsDQoJCQkJCQkkdGhpcy0+Z2V0Vmlld05hbWUoDQoJCQkJCQkJJG9iaiwNCgkJCQkJCQkkZXZlbnRbJ3ZpZXcnXQ0KCQkJCQkJKQ0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIHNldCB0aGUgZHluYW1pYyBnZXQgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjEwDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldER5bmFtaWNIZWFkZXJzKCRwYXJhbXMsICRjb2RlLCAka2V5KQ0KCXsNCgkJLy8gYWRkIHRoZSBoZWFkZXJzDQoJCSRwYXJhbXMgPSAoU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykpID8ganNvbl9kZWNvZGUoJHBhcmFtcywgdHJ1ZSkgOiAkcGFyYW1zOw0KCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUga2V5cyB2YWx1ZXMgaW4gdGhlIHBhcmFtcyBhcmVhDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zKSAmJiBpc3NldCgkcGFyYW1zWyRrZXldKQ0KCQkJJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtc1ska2V5XSkpDQoJCXsNCgkJCWZvcmVhY2ggKCR0aGlzLT50YXJnZXRzWyRrZXldIGFzICR0YXJnZXQgPT4gJGV2ZW50KQ0KCQkJew0KCQkJCWlmIChpc3NldCgkcGFyYW1zWyRrZXldWyR0YXJnZXRdKQ0KCQkJCQkmJiAkcGFyYW1zWyRrZXldWyR0YXJnZXRdID09IDEpDQoJCQkJew0KCQkJCQkvLyBnZXQgdGhlIGhlYWRlciBzdHJpbmcgaWYgc2V0DQoJCQkJCSR0aGlzLT5nZXRIZWFkZXJzKA0KCQkJCQkJJHBhcmFtc1ska2V5XSwNCgkJCQkJCSRldmVudCwNCgkJCQkJCSRjb2RlDQoJCQkJCSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBoZWFkZXJzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGVhZGVycygmJHBhcmFtcywgJiRnZXQsICR2aWV3X25hbWUpDQoJew0KCQkvLyB3ZSBmaXJzdCBjaGVjayBpZiB0aGUgdmFsdWUgaXMgc2V0DQoJCWlmIChpc3NldCgkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSB8fCBpc3NldCgkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0pKQ0KCQl7DQoJCQkvLyBzdGFydCBsaXR0bGUgaGVhZGVycyBidWNrZXQNCgkJCSRoZWFkZXJzID0gW107DQoNCgkJCS8vIGxvYWQgdGhlIGhlYWRlcnMgaWYgcG93ZXINCgkJCWlmIChpc3NldCgkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJ3Bvd2VyXycgLiAkZ2V0WydmaWVsZCddXSwgdHJ1ZSkNCgkJCQkmJiAoJHBvd2VycyA9ICR0aGlzLT5nZXRQb3dlcnMoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSkgIT09IG51bGwpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHBvd2VycyBhcyAkcG93ZXIpDQoJCQkJew0KCQkJCQkkcG93ZXIgPSB0cmltKCRwb3dlcik7DQoJCQkJCSRoZWFkZXJzWyRwb3dlcl0gPSAkcG93ZXI7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBsb2FkIHRoZSBoZWFkZXJzIGlmIHRleHQNCgkJCWlmIChpc3NldCgkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSkNCgkJCXsNCgkJCQlpZiAoKCRfaGVhZGVycyA9IGV4cGxvZGUoUEhQX0VPTCwgJHBhcmFtc1skZ2V0WydmaWVsZCddXSkpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJF9oZWFkZXJzIGFzICRoZWFkZXIpDQoJCQkJCXsNCgkJCQkJCSRoZWFkZXIgPSB0cmltKCRoZWFkZXIpOw0KCQkJCQkJaWYgKGVtcHR5KCRoZWFkZXIpKQ0KCQkJCQkJew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQkJJGhlYWRlcnNbJGhlYWRlcl0gPSAkaGVhZGVyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBjaGVjayBpZiB3ZSBmb3VuZCBzb21lIGhlYWRlciB2YWx1ZXMNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkaGVhZGVycywgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gYWN0aXZhdGUgdGhlIGxvYWQgb2YgdGhlIGhlYWRlcnMNCgkJCQkkdGhpcy0+bG9hZEhlYWRlcnMgPSB0cnVlOw0KCQkJCS8vIGNoZWNrIGlmIHRoaXMgYWN0aXZlIGhlYWRlciBpcyBhbHJlYWR5IHNldA0KCQkJCWlmICghaXNzZXQoJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGdldFsnY29udGV4dCddXSkpDQoJCQkJew0KCQkJCQkvLyBzdGFydCB0aGUgYWN0aXZlIGhlYWRlcg0KCQkJCQkkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZ2V0Wydjb250ZXh0J11dID0gW107DQoJCQkJfQ0KCQkJCS8vIGxvYWQgdGhlIGZvdW5kIGhlYWRlcnMgYW5kIGF2b2lkIGFkZGluZyB0aGUgc2FtZSBoZWFkZXIgdHdpY2UNCgkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAkaGVhZGVyKQ0KCQkJCXsNCgkJCQkJJGhlYWRlciA9IHRyaW0oJGhlYWRlcik7DQoJCQkJCSR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRnZXRbJ2NvbnRleHQnXV1bJGhlYWRlcl0gPSAkaGVhZGVyOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgdmlldyBuYW1lDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC44DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdOYW1lKCYkdmlldywgJiRnZXQpDQoJew0KCQlpZiAoJGdldCA9PT0gJ3NpdGUnIHx8ICRnZXQgPT09ICdhZG1pbicgfHwgJGdldCA9PT0gJ2FqYXgnIHx8ICRnZXQgPT09ICdkYXNoYm9hcmQnKQ0KCQl7DQoJCQkvLyBzdGF0aWMga2V5IG5hbWUNCgkJCXJldHVybiAkZ2V0Ow0KCQl9DQoJCWVsc2VpZiAoaXNzZXQoJHZpZXctPnskZ2V0fSkpDQoJCXsNCgkJCXJldHVybiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKA0KCQkJCSR2aWV3LT57JGdldH0NCgkJCSk7DQoJCX0NCgkJcmV0dXJuICdfZXJyb3InOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgcG93ZXJzIGhlYWRlciB1c2Ugc3RyaW5ncw0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0UG93ZXJzKCRyb3dzKTogP2FycmF5DQoJew0KCQkvLyBsb2FkIHRoZSBhY3RpdmUgcG93ZXJzDQoJCSRwb3dlcnMgPSBhcnJheV9maWx0ZXIoDQoJCQkvLyBnZXQgdGhlIHBvd2VyIG5hbWVzcGFjZQ0KCQkJYXJyYXlfbWFwKGZ1bmN0aW9uICgkcm93KSB7DQoJCQkJaWYgKCgkcG93ZXIgPSBTdXBlcl9fXzljNTEzYmFmX2IyNzlfNDNmZF9hZTI5X2E1ODVjOGNiYzRmMF9fX1Bvd2VyOjppdGVtKCRyb3dbJ3Bvd2VyJ10sICdwb3dlcicsIFsnYS5ndWlkJywgJ2EubmFtZXNwYWNlJ10pKSAhPT0gbnVsbCkNCgkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCX0NCgkJCQllbHNlaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1N1cGVycG93ZXInKS0+bG9hZCgkcm93Wydwb3dlciddLCAgWydyZW1vdGUnXSkpDQoJCQkJew0KCQkJCQlpZiAoKCRwb3dlciA9IFN1cGVyX19fOWM1MTNiYWZfYjI3OV80M2ZkX2FlMjlfYTU4NWM4Y2JjNGYwX19fUG93ZXI6Oml0ZW0oJHJvd1sncG93ZXInXSwgJ3Bvd2VyJywgWydhLmd1aWQnLCAnYS5uYW1lc3BhY2UnXSkpICE9PSBudWxsKQ0KCQkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0sICRyb3dzKSwNCgkJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSB2YWxpZCBwb3dlcnMNCgkJCWZ1bmN0aW9uICgkcm93KSB7DQoJCQkJcmV0dXJuIGlzX29iamVjdCgkcm93KSAmJiBpc3NldCgkcm93LT5ndWlkKTsNCgkJCX0NCgkJKTsNCgkJLy8gYWRkIHRvIGFjdGl2ZSBwb3dlcnMNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwb3dlcnMpKQ0KCQl7DQoJCQkvLyBjb252ZXJ0IHRoZSBkb3RzIHRvIG5hbWVzcGFjZQ0KCQkJcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoJHBvd2VyKSB7DQoJCQkJLy8gYWRkIHRvIGNvbXBpbGVyICh0byBidWlsZCkNCgkJCQlpZiAoJHBvd2VyLT5idWlsZCAhPSA2KQ0KCQkJCXsNCgkJCQkJLy8gc2VjdXJlIHRoYXQgYWx3YXlzIHdpbGwgcmVtYWluIGFsd2F5cyBldmVuIGlmIG9ubHkgc2V0IHRoYXQgd2F5IG9uY2UNCgkJCQkJaWYgKGVtcHR5KCR0aGlzLT5saW5rZWRQb3dlcnNbJHBvd2VyLT5ndWlkXSkgfHwgJHBvd2VyLT5idWlsZCA9PSAxKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+bGlua2VkUG93ZXJzWyRwb3dlci0+Z3VpZF0gPSAkcG93ZXItPmJ1aWxkOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGJ1aWxkIHRoZSBuYW1lc3BhY2UNCgkJCQkkbmFtZXNwYWNlID0gU3VwZXJfX19jZThjZjgzNF82YmFjXzQ0ZmJfOTQxY184NjFmN2UwNDZjYzBfX19Qb3dlcjo6c2FmZSgNCgkJCQkJc3RyX3JlcGxhY2UoDQoJCQkJCQlhcnJheV9rZXlzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJYXJyYXlfdmFsdWVzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJc3RyX3JlcGxhY2UoJy4nLCAnXFwnLCAkcG93ZXItPm5hbWVzcGFjZSkNCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gY2hlY2sgaWYgaXQgaGFzIGFuIEFTIG9wdGlvbg0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcG93ZXItPmFzKSAmJiAkcG93ZXItPmFzICE9PSAnZGVmYXVsdCcpDQoJCQkJew0KCQkJCQlyZXR1cm4gJ3VzZSAnIC4gJG5hbWVzcGFjZSAuICcgYXMgJyAuICRwb3dlci0+YXMgLiAnOyc7DQoJCQkJfQ0KCQkJCXJldHVybiAndXNlICcgLiAkbmFtZXNwYWNlIC4gJzsnOw0KCQkJfSwgJHBvd2Vycyk7DQoJCX0NCg0KCQlyZXR1cm4gbnVsbDsNCgl9', '[[[Component]]] Headers Compiler', '', '', '', '', '', '', '', '3.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Headers Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:36', '2024-03-10 21:09:59', 3, '', 3),
(36, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the ordring for your component views during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your admin views where you would like to use Field Ordering.', '{}', 'abf99084-bcfe-45b2-9b7a-c8621defc69c', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJHZpZXctPnBhcmFtcyA9IChpc3NldCgkdmlldy0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+cGFyYW1zLCB0cnVlKSA6ICR2aWV3LT5wYXJhbXM7DQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSkpDQoJCXsNCgkJCWlmICgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9hZG1pbl9vcmRlcmluZyddID09IDENCgkJCQl8fCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9saW5rZWRfb3JkZXJpbmcnXSA9PSAxKQ0KCQkJew0KCQkJCS8vIHNldHVwIHRoZSB2aWV3IGtleSBuYW1lDQoJCQkJJG5hbWVfbGlzdCAgID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBsb2FkIHRoZSBhZG1pbiB2aWV3IGRldGFpbHMNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLlZpZXdzLkRlZmF1bHQuT3JkZXJpbmcnKS0+c2V0KCRuYW1lX2xpc3QsICR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSk7DQoJCQl9DQoJCX0NCgl9', '[[[Component]]] Field Ordering Compiler', '', '', '', '', '', '', '', '2.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:48', '2024-03-10 21:11:31', 3, '', 3),
(37, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom ordering to fields in the JCB list views.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.fieldordering\",\"fieldset\":\"fieldordering\",\"label\":\"Field Ordering\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2751\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2753\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2749\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2754\",\"custom_value\":\"\"}}}}', 'd0e386d6-02ea-4fd9-a67e-ca369bac88f6', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg==', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3VyLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBmb3JtLg0KCSAqDQoJICogQHBhcmFtICAgSkZvcm0gICAgICRmb3JtICBUaGUgZm9ybQ0KCSAqIEBwYXJhbSAgIHN0ZENsYXNzICAkZGF0YSAgVGhlIGRhdGENCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlRm9ybShGb3JtICRmb3JtLCAkZGF0YSkNCgl7DQoJCSRjb250ZXh0ID0gJGZvcm0tPmdldE5hbWUoKTsNCg0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKHN0cnBvcygkY29udGV4dCwgJ2NvbV9bW1tjb21wb25lbnRdXV0uYWRtaW5fdmlldycpID09PSAwKQ0KCQl7DQoJCQkvLyBBZGQgdGhlIGZvcm1zIHBhdGgNCgkJCUZvcm06OmFkZEZvcm1QYXRoKF9fRElSX18gLiAnL2Zvcm1zJyk7DQoJCQkvLyBhZGQgdGhlIGFkbWluIHZpZXcgcGFyYW1zIGZvciBwcml2YWN5IGludGVncmF0aW9uDQoJCQkkZm9ybS0+bG9hZEZpbGUoJ2FkbWluX3ZpZXcnKTsNCgkJfQ0KDQoJCXJldHVybiB0cnVlOw0KCX0=', '[[[Component]]] Field Ordering Tabs', '', '', '', '', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:52', '2024-03-10 21:12:56', 3, '', 2),
(38, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.language_options\",\"fieldset\":\"language_options\",\"label\":\"Language Options\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2740\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2746\",\"custom_value\":\"1\"},\"fields3\":{\"field\":\"2745\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2742\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2741\",\"custom_value\":\"\"}}}}', 'c0a2a497-bd72-4524-8c83-713108b4b3ce', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCg==', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3VyLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBmb3JtLg0KCSAqDQoJICogQHBhcmFtICAgRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgXHN0ZENsYXNzICAkZGF0YSAgVGhlIGRhdGENCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlRm9ybShGb3JtICRmb3JtLCAkZGF0YSkNCgl7DQoJCSRjb250ZXh0ID0gJGZvcm0tPmdldE5hbWUoKTsNCg0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKHN0cnBvcygkY29udGV4dCwgJ2NvbV9bW1tjb21wb25lbnRdXV0uam9vbWxhX2NvbXBvbmVudCcpID09PSAwKQ0KCQl7DQoJCQkvLyBBZGQgdGhlIGZvcm1zIHBhdGgNCgkJCUZvcm06OmFkZEZvcm1QYXRoKF9fRElSX18gLiAnL2Zvcm1zJyk7DQoJCQkvLyBhZGQgdGhlIGFkbWluIHZpZXcgcGFyYW1zIGZvciBwcml2YWN5IGludGVncmF0aW9uDQoJCQkkZm9ybS0+bG9hZEZpbGUoJ2pvb21sYV9jb21wb25lbnQnKTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQo=', '[[[Component]]] Language Tabs', '', '', '', '', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:57', '2024-03-10 21:14:37', 3, '', 2),
(39, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to add packaging (bundling of extentions) to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', 'c1e7d932-3fc5-45bc-ba13-28889af29f56', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{}', '', '[[[Component]]] Extention Packaging', '', '', '', '', '', '', '', '2.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'REUSE', '', 1, '', '', 1, '2024-03-10 15:55:00', '2024-03-10 21:20:27', 2, '', 2),
(40, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to add language packaging to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '0b8a7133-b2ff-4b7b-a5c5-0bbf039f0544', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGb2xkZXI7', 11, '{\"method_selection0\":{\"method\":\"88\"},\"method_selection1\":{\"method\":\"55\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBEYXRhYmFzZSBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgRGF0YWJhc2VEcml2ZXINCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkZGI7DQoNCgkvKioNCgkgKiBBcHBsaWNhdGlvbiBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgQ01TQXBwbGljYXRpb24NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXBwOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSA9IDIwMDsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZXMgbmFtZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlTmFtZXMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZSBidWlsZGluZyB0cmFja2VyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsYW5ndWFnZVRyYWNrZXIgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUZvbGRlcjsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUVkaXRGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgY29tcG9uZW50IHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21wb25lbnRQYXRoOw0KDQoJLyoqDQoJICogVGhlIGNvbXBpbGVyIHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21waWxlclBhdGg7DQoNCgkvKioNCgkgKiBUaGUgdGVtcG9yYWwgcGF0aA0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHRlbXBQYXRoOw0KDQoJLyoqDQoJICogVGhlIGpvb21sYSB2ZXJzaW9uDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkam9vbWxhVmVyc2lvbjsNCg0KCS8qKg0KCSAqIFRoZSBjb21wb25lbnQgdmVyc2lvbg0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNvbXBvbmVudF92ZXJzaW9uOw0KDQoJLyoqDQoJICogVGhlIGNvbXBvbmVudCBuYW1lDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkY29tcG9uZW50Q29kZU5hbWU7DQoNCgkvKioNCgkgKiBUaGUgZmlsZSBjb250ZW50IHN0YXRpYyB2YWx1ZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGZpbGVDb250ZW50U3RhdGljOw0KDQoJLyoNCgkgKiBUaGUgbGluZSBudW1iZXJzIFN3aXRjaA0KCSAqIA0KCSAqIEB2YXIgICAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkZGVidWdMaW5lbnIgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBBY3RpdmUgQ29tcG9uZW50cw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhY3RpdmVDb21wb25lbnRzID0gW107DQoNCgkvKioNCgkgKiBUaGUgQWN0aXZlIENvbXBvbmVudHMgTmFtZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYWN0aXZlQ29tcG9uZW50c05hbWVzID0gW107DQoNCgkvKioNCgkgKiBUaGUgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGxhbmd1YWdlcyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIExhbmd1YWdlIGJ1aWxkIGRldGFpbHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYnVpbGREZXRhaWxzID0gW107DQoNCgkvKioNCgkgKiBUaGUgRXhjbHVkZWQgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGV4Y2x1ZGVkTGFuZyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJGNvbXBvbmVudC0+cGFyYW1zID0gKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtcykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkY29tcG9uZW50LT5wYXJhbXMsIHRydWUpIDogJGNvbXBvbmVudC0+cGFyYW1zOw0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSAmJiBpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXSkgJiYNCgkJCWlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydhY3RpdmF0ZSddKSAmJiAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnYWN0aXZhdGUnXSA9PSAxKQ0KCQl7DQoJCQkvLyBsb2FkIHRoZSBhZG1pbiBjb21wb25lbnQgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGNvbXBvbmVudC0+aWRdID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9jb250ZXh0Ow0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skY29tcG9uZW50LT5pZF0gPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCRjb21wb25lbnQtPm5hbWVfY29kZSk7DQoJCQkkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1JlYWxOYW1lc1skY29tcG9uZW50LT5pZF0gPSAkY29tcG9uZW50LT5uYW1lOw0KCQkJLy8gYWRkIGV4Y2x1ZGVkIGxpc3Qgb2YgbGFuZ3VhZ2VzDQoJCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+cGFyYW1zWydsYW5ndWFnZV9vcHRpb25zJ11bJ2xhbmd1YWdlcyddKSkNCgkJCXsNCgkJCQkkdGhpcy0+ZXhjbHVkZWRMYW5nWyRjb21wb25lbnQtPmlkXSA9ICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydsYW5ndWFnZXMnXTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+ZXhjbHVkZWRMYW5nWyRjb21wb25lbnQtPmlkXSA9IGFycmF5KCk7DQoJCQl9DQoJCQkvLyBub3cgc2V0IHRoZSBjb21wb25lbnQgYWRkIGxhbmd1YWdlcyBpZiB3ZSBzaG91bGQgdXNlIGxvY2FsICgyKQ0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWyd1c2VfcGVyY2VudGFnZWxhbmd1YWdlYWRkJ10pICYmICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWyd1c2VfcGVyY2VudGFnZWxhbmd1YWdlYWRkJ10gPT0gMikNCgkJCXsNCgkJCQkkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSA9ICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydwZXJjZW50YWdlbGFuZ3VhZ2VhZGQnXTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldF0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldCgpDQoJew0KCQkvLyBnZXQgY29tcG9uZW50IGlkDQoJCSRpZCA9IChpbnQpIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfaWQ7DQoJCS8vIGNoZWNrIGlmIHRoZXJlIGlzIGFjdGl2ZQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHMpDQoJCQkmJiBpc3NldCgkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1skaWRdKSAmJiAkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSAhPSAyMDApDQoJCXsNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5zZXQoJ3BlcmNlbnRhZ2VfbGFuZ3VhZ2VfYWRkJywgJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJLy8gbGV0cyBtYXAgc29tZSBhcnJheXMgdG8gdGhlIHBsdWdpbiBmb3IgbGF0ZXIgdXNlDQoJCSR0aGlzLT5jb21waWxlclBhdGggPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcGlsZXJfcGF0aDsNCgkJJHRoaXMtPnRlbXBQYXRoID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnRtcF9wYXRoOw0KCQkkdGhpcy0+bGFuZ1RhZyA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZzsNCgkJJHRoaXMtPmRlYnVnTGluZW5yID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmdldCgnZGVidWdfbGluZV9ucicsIGZhbHNlKTsNCgkJJHRoaXMtPmNvbXBvbmVudF92ZXJzaW9uID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmdldCgnY29tcG9uZW50X3ZlcnNpb24nLCAnMS4wLjAnKTsNCgkJJHRoaXMtPmpvb21sYVZlcnNpb24gPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+am9vbWxhX3ZlcnNpb247DQoJCSR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGQgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+cGVyY2VudGFnZV9sYW5ndWFnZV9hZGQ7DQoJCSR0aGlzLT5yZW1vdmVTaXRlRm9sZGVyID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnJlbW92ZV9zaXRlX2ZvbGRlcjsNCgkJJHRoaXMtPnJlbW92ZVNpdGVFZGl0Rm9sZGVyID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnJlbW92ZV9zaXRlX2VkaXRfZm9sZGVyOw0KCQkkdGhpcy0+Y29tcG9uZW50UGF0aCA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5QYXRocycpLT5jb21wb25lbnRfcGF0aDsNCgkJJHRoaXMtPmNvbXBvbmVudENvZGVOYW1lID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9jb2RlX25hbWU7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEJ1aWxkIFBsdWdpbiBMYW5nIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZUJ1aWxkUGx1Z2luTGFuZ0ZpbGVzKCYkcGx1Z2luLCAmJGxhbmd1YWdlcykNCgl7DQoJCS8vIGdldCBjb21wb25lbnQgaWQNCgkJJGlkID0gKGludCkgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIHNldCBmaWxlIG5hbWUNCgkJCSRmaWxlX25hbWUgPSAncGxnXycgLiBzdHJ0b2xvd2VyKCRwbHVnaW4tPmdyb3VwKSAuICdfJyAuIHN0cnRvbG93ZXIoJHBsdWdpbi0+Y29kZV9uYW1lKTsNCgkJCS8vIGV4dHJ1ZGUgdGhlIGxhbmd1YWdlcyB0aGF0IHNob3VsZCBub3QgcmVtYWluIGluIHRoZSBwbHVnaW4NCgkJCSR0aGlzLT5leHRydWRlTGFuZ3VhZ2VzKCRpZCwgJGxhbmd1YWdlcywgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmxhbmdfdGFnLCAkZmlsZV9uYW1lLCAnYWRtaW4nKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBCdWlsZCBNb2R1bGUgTGFuZyBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVCdWlsZE1vZHVsZUxhbmdGaWxlcygmJG1vZHVsZSwgJiRsYW5ndWFnZXMpDQoJew0KCQkvLyBnZXQgY29tcG9uZW50IGlkDQoJCSRpZCA9IChpbnQpIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfaWQ7DQoJCS8vIGNoZWNrIGlmIHRoZXJlIGlzIGFjdGl2ZQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHMpICYmIGlzc2V0KCR0aGlzLT5hY3RpdmVDb21wb25lbnRzWyRpZF0pKQ0KCQl7DQoJCQkvLyBleHRydWRlIHRoZSBsYW5ndWFnZXMgdGhhdCBzaG91bGQgbm90IHJlbWFpbiBpbiB0aGUgbW9kdWxlDQoJCQkkdGhpcy0+ZXh0cnVkZUxhbmd1YWdlcygkaWQsICRsYW5ndWFnZXMsIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJG1vZHVsZS0+ZmlsZV9uYW1lLCAkbW9kdWxlLT50YXJnZXRfY2xpZW50KTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBCdWlsZCBBbGwgTGFuZyBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVCdWlsZEFsbExhbmdGaWxlcygmJGxhbmd1YWdlcykNCgl7DQoJCS8vIGdldCBjb21wb25lbnQgaWQNCgkJJGlkID0gKGludCkgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIHNldCBmaWxlIG5hbWUNCgkJCSRmaWxlX25hbWUgPSAnY29tXycgLiAkdGhpcy0+YWN0aXZlQ29tcG9uZW50c05hbWVzWyRpZF07DQoJCQkvLyBleHRydWRlIHRoZSBsYW5ndWFnZXMgdGhhdCBzaG91bGQgbm90IHJlbWFpbiBpbiB0aGUgbW9kdWxlDQoJCQkkdGhpcy0+ZXh0cnVkZUxhbmd1YWdlcygkaWQsICRsYW5ndWFnZXMsIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJGZpbGVfbmFtZSk7DQoJCX0NCgkJLy8gYnVpbGQgdGhlIGxhbmd1YWdlIHBhY2thZ2VzDQoJCSR0aGlzLT5idWlsZExhbmd1YWdlcygkaWQsIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZyk7DQoJfQ0KDQoJLyoqDQoJICogRXh0cnVkZXIgb2YgdGhlIGxhbmd1YWdlcw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJ1ZGVMYW5ndWFnZXMoJiRpZCwgJiRsYW5ndWFnZXMsICRsYW5nVGFnLCAmJGZpbGVfbmFtZSwgJHRhcmdldF9jbGllbnQgPSAnYm90aCcpDQoJew0KCQkkbWFpbkxhbmdMb2FkZXIgPSBbXTsNCgkJLy8gY2hlY2sgaWYgdGhpcyBpZCB3YXMgc2V0IGJlZm9yZQ0KCQlpZiAoIWlzc2V0KCR0aGlzLT5sYW5ndWFnZXNbJGlkXSkpDQoJCXsNCgkJCSR0aGlzLT5sYW5ndWFnZXNbJGlkXSA9IFtdOw0KCQkJJHRoaXMtPmJ1aWxkRGV0YWlsc1skaWRdID0gW107DQoJCX0NCgkJLy8gY2hlY2sgaWYgdGhpcyBmaWxlIG5hbWUgd2FzIHNldCBiZWZvcmUNCgkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV0pKQ0KCQl7DQoJCQkkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV0gPSBbXTsNCgkJfQ0KCQkvLyBzZXQgYWxsIHRoZSBleHRyYSBsYW5ndWFnZXMgbm90IGV4Y2x1ZGVkDQoJCWZvcmVhY2ggKCRsYW5ndWFnZXMgYXMgJGtleSA9PiAkbGFuZ3VhZ2UpDQoJCXsNCgkJCWlmICgka2V5ICE9PSAkbGFuZ1RhZyAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGFuZ3VhZ2UpICYmICghaXNzZXQoJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skaWRdKSB8fCAhaW5fYXJyYXkoJGtleSwgJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skaWRdKSkpDQoJCQl7DQoJCQkJLy8gYWRkIHRvIG91ciBidWNrZXQNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VzWyRpZF1bJGZpbGVfbmFtZV1bJGtleV0gPSAkbGFuZ3VhZ2U7DQoJCQkJLy8gcmVtb3ZlIGZyb20gdGhlIEpDQiBidWlsZA0KCQkJCXVuc2V0KCRsYW5ndWFnZXNbJGtleV0pOw0KCQkJfQ0KCQkJLy8gY291bnQgdGhlIGFyZWEgc3RyaW5ncw0KCQkJaWYgKCRsYW5nVGFnID09PSAka2V5KQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRsYW5ndWFnZSBhcyAkYXJlYSA9PiAkbGFuZ3VhZ2VTdHJpbmdzKQ0KCQkJCXsNCgkJCQkJJG1haW5MYW5nTG9hZGVyWyRhcmVhXSA9IGNvdW50KCRsYW5ndWFnZVN0cmluZ3MpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkvLyBzdG9yZSBkZXRhaWxzIGZvciBidWlsZA0KCQkkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV0gPSBbJGxhbmdUYWcgPT4gJG1haW5MYW5nTG9hZGVyLCAndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnRdOw0KCX0NCg0KCS8qKg0KCSAqIFN0YXJ0IHRoZSBidWlsZGluZyBvZiB0aGUgbGFuZ3VhZ2VzIHBhY2thZ2VzDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBidWlsZExhbmd1YWdlcygmJGlkLCAkbGFuZ1RhZykNCgl7DQoJCWlmIChpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSkpDQoJCXsNCgkJCS8vIHJlc3QgeG1sIGFycmF5DQoJCQkkbGFuZ1hNTCA9IFtdOw0KCQkJJGxhbmdOYW1lcyA9IFtdOw0KCQkJJGxhbmdQYWNrYWdlcyA9IFtdOw0KCQkJJGxhbmdaSVBOYW1lcyA9IFtdOw0KCQkJJGxhbmdYTUxOYW1lcyA9IFtdOw0KCQkJJHZlcnNpb25OYW1lID0gJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skaWRdIC4gJ192JyAuIHN0cl9yZXBsYWNlKCcuJywgJ18nLCAkdGhpcy0+Y29tcG9uZW50X3ZlcnNpb24gLiAnX19KJyAuICR0aGlzLT5qb29tbGFWZXJzaW9uKTsNCgkJCWZvcmVhY2ggKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSBhcyAkZmlsZV9uYW1lID0+ICRsYW5ndWFnZXMpDQoJCQl7DQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRsYW5ndWFnZXMpICYmIGlzc2V0KCR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ10pKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBtYWluIGxhbmcgbG9hZGVyDQoJCQkJCSRtYWluTGFuZ0xvYWRlciA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ107DQoJCQkJCS8vIGdldCB0aGUgdGFyZ2V0IGNsaWVudA0KCQkJCQkkdGFyZ2V0X2NsaWVudCA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVsndGFyZ2V0X2NsaWVudCddOw0KCQkJCQlmb3JlYWNoICgkbGFuZ3VhZ2VzIGFzICR0YWcgPT4gJGFyZWFzKQ0KCQkJCQl7DQoJCQkJCQkvLyB0cmltIHRoZSB0YWcNCgkJCQkJCSR0YWcgPSB0cmltKCR0YWcpOw0KCQkJCQkJLy8gZ2V0IGxhbmd1YWdlIG5hbWUNCgkJCQkJCSRsYW5nTmFtZSA9ICR0aGlzLT5nZXRMYW5ndWFnZU5hbWUoJHRhZyk7DQoJCQkJCQkkbGFuZ0NvZGVOYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkbGFuZ05hbWUsICdGJyk7DQoJCQkJCQkvLyBzZXQgdGhlIGZpbGUgZm9sZGVyIG5hbWUNCgkJCQkJCSRsYW5nRm9sZGVyRmlsZU5hbWUgPSAkbGFuZ0NvZGVOYW1lIC4gJ18nIC4gJHZlcnNpb25OYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBtYWluIGZvbGRlciBwYXRoDQoJCQkJCQkkbWFpbl9wYXRoID0gJHRoaXMtPmNvbXBpbGVyUGF0aCAuICcvJyAuICRsYW5nRm9sZGVyRmlsZU5hbWUgLiAnLyc7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmd1YWdlIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ05hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdOYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBsYW5nIHppcCBuYW1lIGZvciBsYXRlcg0KCQkJCQkJJGxhbmdaSVBOYW1lc1skbWFpbl9wYXRoXSA9ICRsYW5nRm9sZGVyRmlsZU5hbWU7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmcgeG1sIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ1hNTE5hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdDb2RlTmFtZSAuICdfJyAuICR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGlkXSA7DQoJCQkJCQkvLyB3ZSBtdXN0IGNoZWNrIGlmIG9sZCBmb2xkZXIgaXMgZm91bmQgYW5kIHJlbW92ZSBpdA0KCQkJCQkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdKSAmJiBGb2xkZXI6OmV4aXN0cygkbWFpbl9wYXRoKSkNCgkJCQkJCXsNCgkJCQkJCQkvLyByZW1vdmUgdGhlIG1haW4gZm9sZGVyDQoJCQkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnVXRpbGl0aWVzLkZvbGRlcicpLT5yZW1vdmUoJG1haW5fcGF0aCk7DQoJCQkJCQkJLy8gZG8gbm90IHJlbW92ZSBpdCBhZ2Fpbg0KCQkJCQkJCSR0aGlzLT5sYW5ndWFnZVRyYWNrZXJbJG1haW5fcGF0aF0gPSB0cnVlOw0KCQkJCQkJfQ0KCQkJCQkJLy8gY2hlY2sgaWYgZXhpc3QgYW5kIGNyZWF0ZSBpZiBub3QNCgkJCQkJCWlmICghRm9sZGVyOjpleGlzdHMoJG1haW5fcGF0aCkpDQoJCQkJCQl7DQoJCQkJCQkJRm9sZGVyOjpjcmVhdGUoJG1haW5fcGF0aCk7DQoJCQkJCQkJLy8gY291bnQgdGhlIGZvbGRlciBjcmVhdGVkDQoJCQkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+Zm9sZGVyKys7DQoJCQkJCQl9DQoJCQkJCQlmb3JlYWNoICgkYXJlYXMgYXMgJGFyZWEgPT4gJGxhbmd1YWdlU3RyaW5ncykNCgkJCQkJCXsNCgkJCQkJCQkvLyBnZXQgdGhlIGZpbGUgbmFtZQ0KCQkJCQkJCSRmaWxlTmFtZSA9ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhKTsNCgkJCQkJCQkvLyBjaGVjayBpZiBsYW5ndWFnZSBzaG91bGQgYmUgYWRkZWQNCgkJCQkJCQlpZiAoJHRoaXMtPnNob3VsZExhbmd1YWdlQmVBZGRlZCgkdGFnLCAkbGFuZ3VhZ2VTdHJpbmdzLCAkbWFpbkxhbmdMb2FkZXJbJGFyZWFdLCAkZmlsZU5hbWUpICYmICgkYWN0aW9ucyA9ICR0aGlzLT5nZXRMYW5nQWN0aW9ucygkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSwgJHRhcmdldF9jbGllbnQpKSAhPT0gZmFsc2UpDQoJCQkJCQkJew0KCQkJCQkJCQkvLyBzZXQgdGhlIGxhbmd1YWdlIGRhdGENCgkJCQkJCQkJJGxhbmcgPSBhcnJheV9tYXAoDQoJCQkJCQkJCQlmdW5jdGlvbiAoJGxhbmdzdHJpbmcsICRwbGFjZWhvbGRlcikgew0KCQkJCQkJCQkJCXJldHVybiAkcGxhY2Vob2xkZXIgLiAnPSInIC4gJGxhbmdzdHJpbmcgLiAnIic7DQoJCQkJCQkJCQl9LCBhcnJheV92YWx1ZXMoJGxhbmd1YWdlU3RyaW5ncyksDQoJCQkJCQkJCQlhcnJheV9rZXlzKCRsYW5ndWFnZVN0cmluZ3MpDQoJCQkJCQkJCSk7DQoJCQkJCQkJCS8vIHNldCB0aGUgbGluZSBjb3VudGVyDQoJCQkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Db3VudGVyJyktPmxpbmUgKz0gY291bnQoDQoJCQkJCQkJCQkoYXJyYXkpICRsYW5nDQoJCQkJCQkJCSk7DQoJCQkJCQkJCS8vIGNoZWNrIHRoYXQgdGhlIG1haW4gZm9sZGVyIGV4aXN0DQoJCQkJCQkJCWZvcmVhY2ggKCRhY3Rpb25zIGFzICRhY3QpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRjbGllbnRfcGF0aCA9ICRtYWluX3BhdGggLiAkYWN0Wyd0YXJnZXRfY2xpZW50J10gLiAnLyc7DQoJCQkJCQkJCQkvLyBjaGVjayBpZiBleGlzdCBhbmQgY3JlYXRlIGlmIG5vdA0KCQkJCQkJCQkJaWYgKCFGb2xkZXI6OmV4aXN0cygkY2xpZW50X3BhdGgpKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCUZvbGRlcjo6Y3JlYXRlKCRjbGllbnRfcGF0aCk7DQoJCQkJCQkJCQkJLy8gY291bnQgdGhlIGZvbGRlciBjcmVhdGVkDQoJCQkJCQkJCQkJJHRoaXMtPmZvbGRlckNvdW50Kys7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkvLyB3cml0ZSB0aGUgbGFuZ3VhZ2UgZGF0YSB0byBhIGZpbGUNCgkJCQkJCQkJCVN1cGVyX19fYTIyM2IzMWVfZWExZF80Y2RmXzkyYWVfNWY5YmVjZmZhZmYwX19fUG93ZXI6OndyaXRlKA0KCQkJCQkJCQkJCSRjbGllbnRfcGF0aCAuICRhY3RbJ2ZpbGVfbmFtZSddLCBpbXBsb2RlKFBIUF9FT0wsICRsYW5nKQ0KCQkJCQkJCQkJKTsNCgkJCQkJCQkJCS8vIGNvdW50IHRoZSBmaWxlIGNyZWF0ZWQNCgkJCQkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Db3VudGVyJyktPmxpbmUrKzsNCgkJCQkJCQkJCS8vIGJ1aWxkIHhtbCBzdHJpbmdzDQoJCQkJCQkJCQlpZiAoIWlzc2V0KCRsYW5nWE1MWyRtYWluX3BhdGhdKSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkkbGFuZ1hNTFskbWFpbl9wYXRoXSA9IGFycmF5KCk7DQoJCQkJCQkJCQkJJGxhbmdQYWNrYWdlc1skbWFpbl9wYXRoXSA9IGFycmF5KCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlpZiAoIWlzc2V0KCRsYW5nWE1MWyRtYWluX3BhdGhdWyRhY3RbJ3RhcmdldF9jbGllbnQnXV0pKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRsYW5nWE1MWyRtYWluX3BhdGhdWyRhY3RbJ3RhcmdldF9jbGllbnQnXV0gPSBhcnJheSgpOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy8gc2V0IHRoZSBwYWNrYWdlIHRhcmdldHMNCgkJCQkJCQkJCSRsYW5nUGFja2FnZXNbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSA9ICRhY3RbJ3RhcmdldCddOw0KCQkJCQkJCQkJJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXVtdID0gJGFjdFsnZmlsZV9uYW1lJ107DQoJCQkJCQkJCX0NCgkJCQkJCQkJLy8gY2xlYXIgbWVtb3J5DQoJCQkJCQkJCXVuc2V0KCRsYW5nKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIGxvYWQgdGhlIGxhbmcgeG1sDQoJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGxhbmdYTUwpKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRsYW5nWE1MIGFzICRtYWluX3BhdGggPT4gJHRhcmdldF9jbGllbnRzKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBYTUwNCgkJCQkJJHhtbCA9IHN0cl9yZXBsYWNlKA0KCQkJCQkJCWFycmF5X2tleXMoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hbGxBY3RpdmUoKSksDQoJCQkJCQkJYXJyYXlfdmFsdWVzKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWxsQWN0aXZlKCkpLA0KCQkJCQkJCSR0aGlzLT5nZXRMYW5ndWFnZVhNTCgkdGFyZ2V0X2NsaWVudHMsICRsYW5nUGFja2FnZXNbJG1haW5fcGF0aF0sICRsYW5nTmFtZXNbJG1haW5fcGF0aF0pDQoJCQkJCQkpOw0KCQkJCQkvLyBnZXQgdGhlIFhNTCBGaWxlIE5hbWUNCgkJCQkJJHhtbEZpbGVOYW1lID0gJGxhbmdYTUxOYW1lc1skbWFpbl9wYXRoXSAuICcueG1sJzsNCgkJCQkJLy8gd3JpdGUgdGhlIGxhbmd1YWdlIGRhdGEgdG8gYSBmaWxlDQoJCQkJCVN1cGVyX19fYTIyM2IzMWVfZWExZF80Y2RmXzkyYWVfNWY5YmVjZmZhZmYwX19fUG93ZXI6OndyaXRlKA0KCQkJCQkJJG1haW5fcGF0aCAuICR4bWxGaWxlTmFtZSwgJHhtbA0KCQkJCQkpOw0KCQkJCQkvLyBzZXQgdGhlIHppcCBmdWxsIHBhdGgNCgkJCQkJJHppcFBhdGggPSAkdGhpcy0+dGVtcFBhdGggLiAnLycgLiAkbGFuZ1pJUE5hbWVzWyRtYWluX3BhdGhdIC4gJy56aXAnOw0KCQkJCQkvLyBub3cgemlwIHRoZSBwYWNrYWdlDQoJCQkJCWlmIChTdXBlcl9fX2EyMjNiMzFlX2VhMWRfNGNkZl85MmFlXzVmOWJlY2ZmYWZmMF9fX1Bvd2VyOjp6aXAoDQoJCQkJCQkkbWFpbl9wYXRoLCAkemlwUGF0aA0KCQkJCQkpKQ0KCQkJCQl7DQoJCQkJCQkvLyBub3cgcmVtb3ZlIHRoZSBwYWNrYWdlDQoJCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdVdGlsaXRpZXMuRm9sZGVyJyktPnJlbW92ZSgkbWFpbl9wYXRoKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgeG1sDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlWE1MKCYkdGFyZ2V0X2NsaWVudHMsICYkdGFyZ2V0cywgJiRsYW5ndWFnZSkNCgl7DQoJCSR4bWwgPSAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiAnPGV4dGVuc2lvbiB0eXBlPSJmaWxlIiB2ZXJzaW9uPSIzLjIiIG1ldGhvZD0idXBncmFkZSI+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8bmFtZT4nIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ0NvbXBvbmVudCcpIC4gJyAtICcgLiAkbGFuZ3VhZ2UgLiAnIExhbmd1YWdlIFBhY2s8L25hbWU+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8Y3JlYXRpb25EYXRlPicgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnQlVJTEREQVRFJykgLiAnPC9jcmVhdGlvbkRhdGU+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8YXV0aG9yPicgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnQVVUSE9SJykgLiAnPC9hdXRob3I+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8YXV0aG9yRW1haWw+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdBVVRIT1JFTUFJTCcpIC4gJzwvYXV0aG9yRW1haWw+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8YXV0aG9yVXJsPicgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnQVVUSE9SV0VCU0lURScpIC4gJzwvYXV0aG9yVXJsPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAnPGNvcHlyaWdodD4nIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ0NPUFlSSUdIVCcpIC4gJzwvY29weXJpZ2h0Pic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAnPGxpY2Vuc2U+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdMSUNFTlNFJykgLiAnPC9saWNlbnNlPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAnPHZlcnNpb24+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdBQ1RVQUxWRVJTSU9OJykgLiAnPC92ZXJzaW9uPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAnPGRlc2NyaXB0aW9uPicgLiAkbGFuZ3VhZ2UgLiAnIExhbmd1YWdlIFBhY2sgLSAnIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ1NIT1JUX0RFU0NSSVBUSU9OJykgLiAnPC9kZXNjcmlwdGlvbj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxmaWxlc2V0Pic7DQoJCWZvcmVhY2ggKCR0YXJnZXRfY2xpZW50cyBhcyAkdGFyZ2V0X2NsaWVudCA9PiAkZmlsZXMpDQoJCXsNCgkJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAnPGZpbGVzIGZvbGRlcj0iJyAuICR0YXJnZXRfY2xpZW50IC4gJyIgdGFyZ2V0PSInIC4gJHRhcmdldHNbJHRhcmdldF9jbGllbnRdIC4gJyI+JzsNCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkNCgkJCXsNCgkJCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gJzxmaWxlbmFtZT4nIC4gJGZpbGUgLiAnPC9maWxlbmFtZT4nOw0KCQkJfQ0KCQkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICc8L2ZpbGVzPic7DQoJCX0NCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8L2ZpbGVzZXQ+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gJzwvZXh0ZW5zaW9uPic7DQoNCgkJcmV0dXJuICR4bWw7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSBuYW1lDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlTmFtZSgmJHRhZykNCgl7DQoJCWlmICghaXNzZXQoJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ10pKQ0KCQl7DQoJCQlpZiAoKCRuYW1lID0gU3VwZXJfX19kYjg3YzMzOV81YmI2XzQyOTFfYTdlZl8yYzQ4ZWExYjA2YmNfX19Qb3dlcjo6dmFyKCdsYW5ndWFnZScsICR0YWcsICdsYW5ndGFnJywgJ25hbWUnKSkgIT09IGZhbHNlKQ0KCQkJew0KCQkJCSR0aGlzLT5sYW5ndWFnZU5hbWVzWyR0YWddID0gJG5hbWU7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ10gPSAkdGFnOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkdGhpcy0+bGFuZ3VhZ2VOYW1lc1skdGFnXTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGxhbmd1YWdlIGFjdGlvbnMNCgkgKiANCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMYW5nQWN0aW9ucygmJGZpbGVfbmFtZSwgJiR0YWcsICYkYXJlYSwgJiR0YXJnZXRfY2xpZW50KQ0KCXsNCgkJLy8gY29tcG9uZW50IGV4dGVudGlvbiB0eXBlDQoJCWlmIChzdHJwb3MoJGZpbGVfbmFtZSwgJ2NvbV8nKSAhPT0gZmFsc2UpDQoJCXsNCgkJCSR0YXJnZXRfY2xpZW50ID0gJ2FkbWluJzsNCgkJCSR0YXJnZXQgPSAnYWRtaW5pc3RyYXRvci9sYW5ndWFnZS8nOw0KCQkJaWYgKHN0cnBvcygkYXJlYSwgJ3NpdGUnKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJHRhcmdldF9jbGllbnQgPSAnc2l0ZSc7DQoJCQkJJHRhcmdldCA9ICdsYW5ndWFnZS8nOw0KCQkJfQ0KCQkJcmV0dXJuIGFycmF5KA0KCQkJCWFycmF5KA0KCQkJCQkndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnQsDQoJCQkJCSd0YXJnZXQnID0+ICR0YXJnZXQgLiAkdGFnLA0KCQkJCQknZmlsZV9uYW1lJyA9PiAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSkNCgkJCQkpDQoJCQkpOw0KCQl9DQoJCWVsc2VpZiAoJ2FkbWluJyA9PT0gJHRhcmdldF9jbGllbnQpDQoJCXsNCgkJCSR0YXJnZXQgPSAnYWRtaW5pc3RyYXRvci9sYW5ndWFnZS8nOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHRhcmdldCA9ICdsYW5ndWFnZS8nOw0KCQl9DQoJCS8vIG1vZHVsZS9wbHVnaW4gZXh0ZW5zaW9uIHR5cGUgKFRPRE8gd2UgcmV0dXJuIGJvdGggZm9yIG5vdykNCgkJcmV0dXJuIGFycmF5KA0KCQkJYXJyYXkoDQoJCQkJJ3RhcmdldF9jbGllbnQnID0+ICR0YXJnZXRfY2xpZW50LA0KCQkJCSd0YXJnZXQnID0+ICR0YXJnZXQgLiAkdGFnLA0KCQkJCSdmaWxlX25hbWUnID0+ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhKQ0KCQkJKSwNCgkJCWFycmF5KA0KCQkJCSd0YXJnZXRfY2xpZW50JyA9PiAkdGFyZ2V0X2NsaWVudCwNCgkJCQkndGFyZ2V0JyA9PiAkdGFyZ2V0IC4gJHRhZywNCgkJCQknZmlsZV9uYW1lJyA9PiAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSwgJy5zeXMnKQ0KCQkJKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgZmlsZSBuYW1lDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlRmlsZU5hbWUoJiRmaWxlX25hbWUsICYkdGFnLCAmJGFyZWEsICR0eXBlID0gJycpDQoJew0KCQkvLyBjb21wb25lbnQgZXh0ZW5zaW9uIHR5cGUNCgkJaWYgKHN0cnBvcygkZmlsZV9uYW1lLCAnY29tXycpICE9PSBmYWxzZSkNCgkJew0KCQkJaWYgKHN0cnBvcygkYXJlYSwgJ3N5cycpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdHlwZSA9ICcuc3lzJzsNCgkJCX0NCgkJfQ0KCQkvLyBmaWxlIG5hbWUNCgkJcmV0dXJuICR0YWcgLiAnLicgLiAkZmlsZV9uYW1lIC4gJHR5cGUgLiAnLmluaSc7DQoJfQ0KDQoJLyoqDQoJICogY2hlY2sgaWYgYSB0cmFuc2xhdGlvbiBzaG91bGQgYmUgYWRkZWQNCgkgKiANCgkgKiBAcmV0dXJuICBib29sDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNob3VsZExhbmd1YWdlQmVBZGRlZCgmJHRhZywgJiRsYW5ndWFnZVN0cmluZ3MsICYkdG90YWwsICYkZmlsZV9uYW1lKQ0KCXsNCgkJLy8gb25seSBsb2cgbWVzc2FnZXMgZm9yIG5vbmUgJHRoaXMtPmxhbmdUYWcgdHJhbnNsYXRpb25zDQoJCWlmICgkdGhpcy0+bGFuZ1RhZyAhPT0gJHRhZykNCgkJew0KCQkJJGxhbmdTdHJpbmdOciAgPSBjb3VudCgkbGFuZ3VhZ2VTdHJpbmdzKTsNCgkJCSRsYW5nU3RyaW5nU3VtID0gU3VwZXJfX18xNTJjODc5M184Yjc1XzQ3MTVfOTk2YV8yNTdiOWY2NTQ1MWNfX19Qb3dlcjo6YmMoDQoJCQkJJ211bCcsICRsYW5nU3RyaW5nTnIsIDEwMA0KCQkJKTsNCgkJCSRwZXJjZW50YWdlICAgID0gU3VwZXJfX18xNTJjODc5M184Yjc1XzQ3MTVfOTk2YV8yNTdiOWY2NTQ1MWNfX19Qb3dlcjo6YmMoDQoJCQkJJ2RpdicsICRsYW5nU3RyaW5nU3VtLCAkdG90YWwNCgkJCSk7DQoJCQkkc3RyaW5nTkFtZSAgICA9ICgkbGFuZ1N0cmluZ05yID09IDEpID8gJyhzdHJpbmcgJw0KCQkJCS4gJHRhZyAuICcgdHJhbnNsYXRlZCknDQoJCQkJOiAnKHN0cmluZ3MgJyAuICR0YWcgLiAnIHRyYW5zbGF0ZWQpJzsNCg0KCQkJLy8gZm9yY2UgbG9hZCBpZiBkZWJ1ZyBsaW5lcyBhcmUgYWRkZWQNCgkJCWlmICghJHRoaXMtPmRlYnVnTGluZW5yKQ0KCQkJew0KCQkJCS8vIGNoZWNrIGlmIHdlIHNob3VsZCBpbnN0YWxsIHRoaXMgdHJhbnNsYXRpb24NCgkJCQlpZiAoJHBlcmNlbnRhZ2UgPCAkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkKQ0KCQkJCXsNCgkJCQkJLy8gZG9udCBhZGQNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5MYW5ndWFnZS5NZXNzYWdlcycpLT5zZXQoImV4Y2x1ZGUuJGZpbGVfbmFtZSIsDQoJCQkJCQknPGI+JyAuICR0b3RhbCAuICc8L2I+KHRvdGFsICcNCgkJCQkJCS4gJHRoaXMtPmxhbmdUYWcgLiAnIHN0cmluZ3MpIG9ubHkgPGI+Jw0KCQkJCQkJLiAkbGFuZ1N0cmluZ05yIC4gJzwvYj4nIC4gJHN0cmluZ05BbWUNCgkJCQkJCS4gJyA9ICcgLiAkcGVyY2VudGFnZQ0KCQkJCQkpOw0KDQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIHNob3cgaWYgaXQgd2FzIGFkZGVkIGFzIHdlbGwNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuTGFuZ3VhZ2UuTWVzc2FnZXMnKS0+c2V0KCJpbmNsdWRlLiRmaWxlX25hbWUiLA0KCQkJCSc8Yj4nIC4gJHRvdGFsIC4gJzwvYj4odG90YWwgJw0KCQkJCS4gJHRoaXMtPmxhbmdUYWcgLiAnIHN0cmluZ3MpIGFuZCA8Yj4nDQoJCQkJLiAkbGFuZ1N0cmluZ05yIC4gJzwvYj4nIC4gJHN0cmluZ05BbWUgLiAnID0gJw0KCQkJCS4gJHBlcmNlbnRhZ2UNCgkJCSk7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9', '[[[Component]]] Language Packaging', '', '', '', '', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"35\"},\"property_selection2\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Packaging J5', '', 1, '', '', 1, '2024-03-10 15:55:07', '2024-03-10 21:36:38', 3, '', 2),
(41, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to improve your action log integration with Joomla for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\n/// not ready', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"activate\",\"label\":\"Component Activation\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', '3d324afb-3de8-40cb-868d-7b59ad50aeda', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCg0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcUGxhY2VmaXg7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xJbmRlbnQ7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xMaW5lOw0K', 11, '{\"method_selection0\":{\"method\":\"59\"},\"method_selection1\":{\"method\":\"120\"},\"method_selection2\":{\"method\":\"79\"},\"method_selection3\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogVGhlIFNjcmlwdHMNCgkgKiANCgkgKiBAdmFyICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHNjcmlwdHNBcnJheSA9IFsnUE9TVElOU1RBTExTQ1JJUFQnID0+IFtdLCAnUE9TVFVQREFURVNDUklQVCcgPT4gW10sICdVTklOU1RBTExTQ1JJUFQnID0+IFtdXTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VBcnJheSkpDQoJCXsNCgkJCWZvcmVhY2goJHRoaXMtPmxhbmd1YWdlQXJyYXkgYXMgJGtleSA9PiAkc3RyaW5nKQ0KCQkJew0KCQkJCUNGYWN0b3J5OjpfKCdMYW5ndWFnZScpLT5zZXQoJ2FkbWluJywgJGtleSwgJHN0cmluZyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBCdWlsZCBGaWxlcyBDb250ZW50XQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyQnVpbGRGaWxlc0NvbnRlbnQoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJJGZ1bmN0aW9uX25hbWUgPSAnZ2V0TWFpbkozJzsNCgkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnam9vbWxhX3ZlcnNpb24nLCAzKSAhPSAzKQ0KCQkJew0KCQkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldE1haW5KNCc7DQoJCQl9DQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MgdG8gdGhlICBjb21wb25lbnQNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIGNvbXBvbmVudCBtYWluIHRhcmdldCBzY3JpcHQNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hZGQoJHRhcmdldCwgJHRoaXMtPnskZnVuY3Rpb25fbmFtZSAuICR0YXJnZXR9KCkpOw0KCQkJCS8vIGFkZCB0aGUgY29tcG9uZW50IHZpZXdzIHRhcmdldCBzY3JpcHRzDQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRidWNrZXQpKQ0KCQkJCXsNCgkJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCR0YXJnZXQsIGltcGxvZGUoJycsICRidWNrZXQpKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgYmV0dGVyIGludGVncmF0aW9uIHdpdGggYWN0aW9uIGxvZw0KCQlpZiAoJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmZpZWxkcykpDQoJCXsNCgkJCWZvcmVhY2ggKCR2aWV3LT5maWVsZHMgYXMgJGZpZWxkKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZmllbGRbJ3RpdGxlJ10pICYmICRmaWVsZFsndGl0bGUnXSA9PSAxKQ0KCQkJCXsNCgkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGlmIG5vdCBmb3VuZCB0cnkgYWdhaW4NCgkJCWlmICghaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHZpZXctPmZpZWxkcyBhcyAkZmllbGQpDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJGZpZWxkWydsaXN0J10pICYmICRmaWVsZFsnbGlzdCddID09IDEgJiYNCgkJCQkJCWlzc2V0KCRmaWVsZFsnb3JkZXJfbGlzdCddKSAmJiAkZmllbGRbJ29yZGVyX2xpc3QnXSA9PSAxICYmDQoJCQkJCQlpc3NldCgkZmllbGRbJ2xpbmsnXSkgJiYgJGZpZWxkWydsaW5rJ10gPT0gMSkNCgkJCQkJew0KCQkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gaWYgZm91bmQgdXBkYXRlIHBsYWNlaG9sZGVyDQoJCQlpZiAoaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJLy8gc2V0IG1haW4gdGl0bGUNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+c2V0KCc8PDxNQUlOX1RJVExFPj4+JywgJHRpdGxlX2hvbGRlciwgZmFsc2UpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGZhbGwgYmFjayBvbiBJRA0KCQkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5zZXQoJzw8PE1BSU5fVElUTEU+Pj4nLCAnaWQnLCBmYWxzZSk7DQoJCQl9DQoNCgkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldFZpZXdKMyc7DQoJCQlpZiAoQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5nZXQoJ2pvb21sYV92ZXJzaW9uJywgMykgIT0gMykNCgkJCXsNCgkJCQkkZnVuY3Rpb25fbmFtZSA9ICdnZXRWaWV3SjQnOw0KCQkJfQ0KDQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkkYnVja2V0W10gPSAkdGhpcy0+eyRmdW5jdGlvbl9uYW1lIC4gJHRhcmdldH0oKTsNCgkJCX0NCg0KCQkJLy8ganVzdCByZW1vdmUgaXQgYWdhaW4NCgkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5yZW1vdmUoJzw8PE1BSU5fVElUTEU+Pj4nKTsNCg0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPmdldF8oIkxBTkdfUFJFRklYIikgLiAnX1RZUEVfJyAuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5nZXRfKCJWSUVXIildID0gJHZpZXctPm5hbWVfc2luZ2xlOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFBvc3QgSW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVElOU1RBTExTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCBkYiBpZiBub3Qgc2V0IGFscmVhZHkuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmICghaXNzZXQoXCRkYikpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkYiA9IEZhY3Rvcnk6OmdldERibygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ3JlYXRlIHRoZSAiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIiBhY3Rpb24gbG9ncyBleHRlbnNpb25zIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gbmV3IFxzdGRDbGFzcygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMtPmV4dGVuc2lvbiA9ICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9ncyBleHRlbnNpb25zIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKM1BPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9nIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgTWFpbiBQb3N0IFVwZGF0ZSBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVFVQREFURVNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU2V0IGRiIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKCFpc3NldChcJGRiKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgdGhlICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIic7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2cgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyBEQi4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5zZWxlY3QoXCRkYi0+cXVvdGVOYW1lKGFycmF5KCdpZCcpKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX19hY3Rpb25fbG9nc19leHRlbnNpb25zJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2V4dGVuc2lvbicpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUgaWYgbm90IGZvdW5kLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVwkZGItPmdldE51bVJvd3MoKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjNQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT5pZCA9IG51bGw7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIGlzIGFscmVhZHkgaW4gYWN0aW9uX2xvZ19jb25maWcgREIuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeS0+c2VsZWN0KFwkZGItPnF1b3RlTmFtZShhcnJheSgnaWQnKSkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgndHlwZV9hbGlhcycpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGNvbnRlbnQgdHlwZXMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmIChcJGRiLT5nZXROdW1Sb3dzKCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPmlkID0gXCRkYi0+bG9hZFJlc3VsdCgpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19VcGRhdGVkID0gXCRkYi0+dXBkYXRlT2JqZWN0KCcjX19hY3Rpb25fbG9nX2NvbmZpZycsIFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLCAnaWQnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJlbHNlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWdfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiIGZyb20gdGhlIGFjdGlvbl9sb2dzX2V4dGVuc2lvbnMgdGFibGUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gYXJyYXkoIFwkZGItPnF1b3RlTmFtZSgnZXh0ZW5zaW9uJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKCdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSApOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPmRlbGV0ZShcJGRiLT5xdW90ZU5hbWUoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucyk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIkNvbXBvbmVudCIpIC4gIiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX3JlbW92ZWRfZG9uZSA9IFwkZGItPmV4ZWN1dGUoKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfcmVtb3ZlZF9kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmUgIiAuIFBsYWNlZml4OjpfKCJDb21wb25lbnQiKSAuICIgYWRkIHF1ZXVlZCBzdWNjZXNzIG1lc3NhZ2UuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkYXBwLT5lbnF1ZXVlTWVzc2FnZShUZSIgLiAieHQ6Ol8oJ1RoZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIgZXh0ZW5zaW9uIHdhcyByZW1vdmVkIGZyb20gdGhlIDxiPiNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnM8L2I+IHRhYmxlJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Vmlld0ozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBmcm9tIHRoZSBhY3Rpb25fbG9nX2NvbmZpZyB0YWJsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZyA9IGFycmF5KCBcJGRiLT5xdW90ZU5hbWUoJ3R5cGVfYWxpYXMnKSAuICcgPSAnLiBcJGRiLT5xdW90ZSgnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpICk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+ZGVsZXRlKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnX2RvbmUgPSBcJGRiLT5leGVjdXRlKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImlmIChcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmVkICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBhZGQgcXVldWVkIHN1Y2Nlc3MgbWVzc2FnZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAtPmVucXVldWVNZXNzYWdlKFRlIiAuICJ4dDo6XygnVGhlIGNvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICIgdHlwZSBhbGlhcyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSA8Yj4jX19hY3Rpb25fbG9nX2NvbmZpZzwvYj4gdGFibGUnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIn0iOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBJbnN0YWxsIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRNYWluSjRQT1NUSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIEFkZCBjb21wb25lbnQgdG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkdGhpcy0+c2V0QWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFBPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiB0byB0aGUgYWN0aW9uIGxvZ3MgY29uZmlnIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRoaXMtPnNldEFjdGlvbkxvZ0NvbmZpZygiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZVRpdGxlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gUGxhY2VmaXg6Ol8oIlZJRVciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0eXBlQWxpYXMiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBpZEhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInaWQnLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aXRsZUhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInPDw8TUFJTl9USVRMRT4+PicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRhYmxlTmFtZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGV4dFByZWZpeCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJMQU5HX1BSRUZJWCIpIC4gIiciOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBVcGRhdGUgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE1haW5KNFBPU1RVUERBVEVTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykNCgkJCS4gIiBBZGQvVXBkYXRlIGNvbXBvbmVudCBpbiB0aGUgYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dzRXh0ZW5zaW9ucygpOyI7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjRQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkL1VwZGF0ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgaW4gdGhlIGFjdGlvbiBsb2dzIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dDb25maWcoIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHR5cGVUaXRsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJWSUVXIikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZUFsaWFzIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIidjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgaWRIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2lkJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGl0bGVIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJzw8PE1BSU5fVElUTEU+Pj4nLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0YWJsZU5hbWUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyNfXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRleHRQcmVmaXgiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIik7IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbko0VU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgUmVtb3ZlIGNvbXBvbmVudCBmcm9tIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBVbmluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFVOSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIFJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgZnJvbSBhY3Rpb24gbG9ncyBjb25maWcgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nQ29uZmlnKCdjb21fIg0KCQkJLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KW0NVU1RPTUNPREU9Y29tcG9uZW50QWN0aXZlXQ==', '[[[Component]]] ActionLog Compiler', '', '', '', '', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB ActionLog Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:10', '2024-03-11 14:59:18', 3, '', 3),
(42, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to tweak the export options for your components during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\nAlso be sure to activate the component/s that should be targeted with this added export feature under the Component Activation tab.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Settings\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2681\",\"custom_value\":\"\"}}}}', '3b8434ed-2727-4c74-85c2-e439b6a7b637', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{\"method_selection0\":{\"method\":\"92\"},\"method_selection1\":{\"method\":\"56\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogVGhlIGxhbmd1YWdlIHN0cmluZyBidWlsZGVyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlQXJyYXkgPSBbXTsNCg0KCS8qDQoJICogVGhlIEV4cG9ydCBUZXh0IE9ubHkgc3dpdGNoDQoJICogDQoJICogQHZhciAgICAgIGludA0KCSAqLw0KCXByb3RlY3RlZCAkZXhwb3J0VGV4dE9ubHkgPSAwOw0KDQoJLyoNCgkgKiBUaGUgU3RyaWN0IEZpZWxkIEV4cG9ydCBQZXJtaXNzaW9ucyBzd2l0Y2gNCgkgKiANCgkgKiBAdmFyICAgICAgYm9vbA0KCSAqLw0KCXByb3RlY3RlZCAkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IGZhbHNlOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIGV4cG9ydCB0ZXh0IG9ubHkNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAoaW50KSAkdGhpcy0+ZXhwb3J0VGV4dE9ubHkpOw0KDQoJCQkvLyBhY3RpdmF0ZSBzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQgaWYgc2V0IGluIHBsdWdpbiAoZGVmYXVsdCB0cnVlKQ0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgKGJvb2wpICR0aGlzLT5zdHJpY3RGaWVsZEV4cG9ydFBlcm1pc3Npb25zKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIE1vZGVsIENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyTW9kZWxDb21wb25lbnREYXRhKCYkY29tcG9uZW50KQ0KCXsNCgkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBleHBvcnQgZm9yIGFueSB2aWV3DQoJCWlmICgkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkpDQoJCXsNCgkJCS8vIHNldCB0aGUgZXhwb3J0L2ltcG9ydCBvcHRpb24NCgkJCWlmIChpc3NldCgkY29tcG9uZW50LT5hZG1pbl92aWV3cykgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+YWRtaW5fdmlld3MpKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRjb21wb25lbnQtPmFkbWluX3ZpZXdzIGFzICR2aWV3KQ0KCQkJCXsNCgkJCQkJaWYgKCEkdGhpcy0+ZXhwb3J0VGV4dE9ubHkgJiYgKGlzc2V0KCR2aWV3Wydwb3J0J10pICYmICR2aWV3Wydwb3J0J10gfHwgMSA9PSAkdmlld1snc2V0dGluZ3MnXS0+YWRkX2N1c3RvbV9pbXBvcnQpKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+ZXhwb3J0VGV4dE9ubHkgPSAxOw0KCQkJCQkJJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMgPSAoYm9vbCkgJHRoaXMtPnBhcmFtcy0+Z2V0KCdzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQnLCAxKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBTZXQgTGFuZyBGaWxlIERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlU2V0TGFuZ0ZpbGVEYXRhKCkNCgl7DQoJCWlmICgkdGhpcy0+ZXhwb3J0VGV4dE9ubHkgJiYgJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZUFycmF5KSkNCgkJew0KCQkJZm9yZWFjaCgkdGhpcy0+bGFuZ3VhZ2VBcnJheSBhcyAka2V5ID0+ICRzdHJpbmcpDQoJCQl7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnTGFuZ3VhZ2UnKS0+c2V0KCdhZG1pbnN5cycsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBDb25maWcgRmllbGQgc2V0c10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRDb25maWdGaWVsZHNldHMoJiR0aW1lcikNCgl7DQoJCS8vIG9ubHkgYWRkIGZpZWxkcyBhZnRlciBzZWNvbmQgdGltZQ0KCQlpZiAoJHRoaXMtPmV4cG9ydFRleHRPbmx5ICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiAkdGltZXIgPT0gMikNCgkJew0KCQkJLy8gbWFpbiBsYW5nIHByZWZpeA0KCQkJJGxhbmcgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+bGFuZ19wcmVmaXggLiAnX0NPTkZJRyc7DQoJCQkvLyBzdGFydCBidWlsZGluZyBmaWVsZCBzZXQgZm9yIGNvbmZpZw0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICI8ZmllbGRzZXQiKTsNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAnbmFtZT0iZXhwb3J0X3RleHRfb25seV9jb25maWciJyk7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gJ2xhYmVsPSInIC4gJGxhbmcgLiAnX0VYUE9SVF9URVhUX09OTFlfVEFCX0xBQkVMIicpOw0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICdkZXNjcmlwdGlvbj0iJyAuICRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiI+Jyk7DQoJCQkvLyBzZXR1cCBsYW5nDQoJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9UQUJfTEFCRUwnXSA9ICJFeHBvcnQgT3B0aW9ucyI7DQoJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9UQUJfREVTQ1JJUFRJT04nXSA9ICJIZXJlIGFyZSBzb21lIGV4dHJhIG9wdGlvbiB0byBhZGp1c3QgdGhlIGV4cG9ydCBiZWhhdmlvdXIgb2YgYWRtaW4gdmlld3MuIjsNCgkJCS8vIGFkZCBjdXN0b20gRXhwb3J0IE9wdGlvbnMNCgkJCWlmIChpc3NldCgkY29uZmlnRmllbGRTZXRzQ3VzdG9tRmllbGRbJ0V4cG9ydCBPcHRpb25zJ10pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRjb25maWdGaWVsZFNldHNDdXN0b21GaWVsZFsnRXhwb3J0IE9wdGlvbnMnXSkpDQoJCQl7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgaW1wbG9kZSgiIiwgJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKSk7DQoJCQkJdW5zZXQoJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9MQUJFTCddID0gIkV4cG9ydCBUZXh0IE9ubHkiOw0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX0RFU0NSSVBUSU9OJ10gPSAiVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZXhwb3J0IG9mIHN0cmluZy90ZXh0IGluc3RlYWQgb2YgbGlua2VkIElEcyBpbiBhbGwgYWRtaW4gdmlld3MgdGhhdCBoYXZlIGFuIGV4cG9ydCBvcHRpb24uIjsNCg0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19BQ1RJVkFURSddID0gIkFjdGl2YXRlIjsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfREVBQ1RJVkFURSddID0gIkRlYWN0aXZhdGUiOw0KDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiPCEtLSIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBFeHBvcnQgVGV4dCBPbmx5IEZpZWxkLiBUeXBlOiBSYWRpby4gKGpvb21sYSkgLS0+Iik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8ZmllbGQiKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInR5cGU9XCJyYWRpb1wiIik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJuYW1lPVwiZXhwb3J0X3RleHRfb25seVwiIik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJsYWJlbD1cIiIgLiAkbGFuZyAuICJfRVhQT1JUX1RFWFRfT05MWV9MQUJFTFwiIik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJkZXNjcmlwdGlvbj1cIiIgLiAkbGFuZyAuICJfRVhQT1JUX1RFWFRfT05MWV9ERVNDUklQVElPTlwiIik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAteWVzbm9cIiIpOw0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZGVmYXVsdD1cIjBcIj4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjwhLS0iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgT3B0aW9uIFNldC4gLS0+Iik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMVwiPiIpOw0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAkbGFuZyAuICJfQUNUSVZBVEU8L29wdGlvbj4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIwXCI+Iik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICRsYW5nIC4gIl9ERUFDVElWQVRFPC9vcHRpb24+Iik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8L2ZpZWxkPiIpOw0KDQoJCQkJLy8gYWRkICBzdHJpY3QgRmllbGQgRXhwb3J0IFBlcm1pc3Npb25zIGZpZWxkDQoJCQkJaWYgKCR0aGlzLT5zdHJpY3RGaWVsZEV4cG9ydFBlcm1pc3Npb25zKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmcgLiAnX1NUUklDVF9QRVJNSVNTSU9OX1BFUl9GSUVMRF9MQUJFTCddID0gIlVzZSBTdHJpY3QgUGVybWlzc2lvbiBwZXIvZmllbGQiOw0KCQkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfU1RSSUNUX1BFUk1JU1NJT05fUEVSX0ZJRUxEX0RFU0NSSVBUSU9OJ10gPSAiVXNlIHN0cmljdCBwZXJtaXNzaW9ucyBwZXIvZmllbGQgaW4gdGhlIGV4cG9ydCBtZXRob2RzIHdoZXJlIHRoZXJlIGFyZSBmaWVsZHMgcGVybWlzc2lvbnMgaW4gYSB2aWV3LiI7DQoNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiPCEtLSIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQgRmllbGQuIFR5cGU6IFJhZGlvLiAoam9vbWxhKSAtLT4iKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8ZmllbGQiKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ0eXBlPVwicmFkaW9cIiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIm5hbWU9XCJzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGRcIiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImxhYmVsPVwiIiAuICRsYW5nIC4gIl9TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfTEFCRUxcIiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImRlc2NyaXB0aW9uPVwiIiAuICRsYW5nIC4gIl9TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT05cIiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC15ZXNub1wiIik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZGVmYXVsdD1cIjFcIj4iKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICI8IS0tIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIE9wdGlvbiBTZXQuIC0tPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIxXCI+Iik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAkbGFuZyAuICJfQUNUSVZBVEU8L29wdGlvbj4iKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMFwiPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gJGxhbmcgLiAiX0RFQUNUSVZBVEU8L29wdGlvbj4iKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8L2ZpZWxkPiIpOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGNsb3NlIHRoYXQgZmllbGRzZXQNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiPC9maWVsZHNldD4iKTsNCgkJfQ0KCX0NCg0KW0NVU1RPTUNPREU9Y29tcG9uZW50QWN0aXZlXQ==', '[[[Component]]] Export Compiler', '', '', '', '', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Export Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:12', '2024-03-11 15:47:23', 6, '', 2),
(43, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to link your admin views to the privacy suite of Joomla via our other Content - [[[Component]]] Privacy Tabs plugin.', '{}', 'd13975a2-47d2-451d-bdd8-c44024eef1b8', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow==', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"70\"},\"method_selection3\":{\"method\":\"119\"},\"method_selection4\":{\"method\":\"120\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogR2xvYmFsIHN3aXRjaCB0byBzZWUgaWYgY29tcG9uZW50IGhhdmUgbmVlZCBvZiBwcml2YWN5IHBsdWdpbiB0byBiZSBsb2FkZWQuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbG9hZFByaXZhY3kgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBWaWV3cyBMaW5rZWQgdG8gSm9vbWxhIFVzZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFjdGl2ZVZpZXdzID0gW107DQoNCgkvKioNCgkgKiBUaGUgVmlld3MgcGVybWlzc2lvbiBmaWVsZHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkcGVybWlzc2lvbkZpZWxkcyA9IFtdOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgcHJpdmFjeQ0KCQkkdmlldy0+cGFyYW1zID0gKGlzc2V0KCR2aWV3LT5wYXJhbXMpICYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpKSA/IGpzb25fZGVjb2RlKCR2aWV3LT5wYXJhbXMsIHRydWUpIDogJHZpZXctPnBhcmFtczsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddKSAmJiANCgkJCWlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYWN0aXZhdGUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhY3RpdmF0ZSddID09IDEpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBwcml2YWN5IHBsdWdpbg0KCQkJJHRoaXMtPmxvYWRQcml2YWN5ID0gdHJ1ZTsNCgkJCS8vIGxvYWQgdGhlIGFkbWluIHZpZXcgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0gPSAkdmlldzsNCgkJCS8vIGFkZCBwZXJtaXNzaW9ucw0KCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0gKGlzc2V0KCR2aWV3LT5hZGRwZXJtaXNzaW9ucykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmFkZHBlcm1pc3Npb25zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIHRydWUpIDogbnVsbDsNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+YWRkcGVybWlzc2lvbnMpKQ0KCQkJew0KCQkJCSR2aWV3LT5hZGRwZXJtaXNzaW9ucyA9IGFycmF5X3ZhbHVlcygkdmlldy0+YWRkcGVybWlzc2lvbnMpOw0KCQkJCS8vIGFkZCB0aGUgbmV3IHBlcm1pc3Npb25zDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBbDQoJCQkJCSdhY3Rpb24nID0+ICd2aWV3LnByaXZhY3kuZGVsZXRlJywNCgkJCQkJJ2ltcGxlbWVudGF0aW9uJyA9PiAzLA0KCQkJCQkndGl0bGUnID0+ICR2aWV3LT5uYW1lX2xpc3QgLiAnIFByaXZhY3kgRGVsZXRlJywNCgkJCQkJJ2Rlc2NyaXB0aW9uJyA9PiAnIEFsbG93cyB0aGUgdXNlcnMgaW4gdGhpcyBncm91cCB0byByZW1vdmUgdGhlaXIgcGVyc29uYWwgZGF0YSBpbiAnIC4gJHZpZXctPm5hbWVfbGlzdCAuICcgdmlhIHRoZSBKb29tbGEgcHJpdmFjeSBzdWl0ZS4nDQoJCQkJXTsNCgkJCQkkdmlldy0+YWRkcGVybWlzc2lvbnNbXSA9IFsNCgkJCQkJJ2FjdGlvbicgPT4gJ3ZpZXcucHJpdmFjeS5hY2Nlc3MnLA0KCQkJCQknaW1wbGVtZW50YXRpb24nID0+IDMsDQoJCQkJCSd0aXRsZScgPT4gJHZpZXctPm5hbWVfbGlzdCAuICcgUHJpdmFjeSBBY2Nlc3MnLA0KCQkJCQknZGVzY3JpcHRpb24nID0+ICcgQWxsb3dzIHRoZSB1c2VycyBpbiB0aGlzIGdyb3VwIHRvIGFjY2VzcyB0aGVpciBwZXJzb25hbCBkYXRhIGluICcgLiAkdmlldy0+bmFtZV9saXN0IC4gJyB2aWEgdGhlIEpvb21sYSBwcml2YWN5IHN1aXRlLicNCgkJCQldOw0KCQkJCS8vIGNvbnZlcnQgYmFjayB0byBqc29uDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0ganNvbl9lbmNvZGUoJHZpZXctPmFkZHBlcm1pc3Npb25zLCBKU09OX0ZPUkNFX09CSkVDVCk7DQoJCQl9DQoJCQkvLyBhZGQgcGxhY2Vob2xkZXJzIHRvIHZpZXcgaWYgbm90IGFscmVhZHkgc2V0DQoJCQlpZiAoIWlzc2V0KCR0aGlzLT5hY3RpdmVWaWV3c1skdmlldy0+aWRdLT5wbGFjZWhvbGRlcnMpKQ0KCQkJew0KCQkJCSR0aGlzLT5hY3RpdmVWaWV3c1skdmlldy0+aWRdLT5wbGFjZWhvbGRlcnMgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdQbGFjZWhvbGRlcicpLT5hY3RpdmU7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwcml2YWN5IHBsdWdpbiBsb2FkZWQNCgkJaWYgKCR0aGlzLT5sb2FkUHJpdmFjeSkNCgkJew0KCQkJJHBsdWdpbiA9IFxKUGx1Z2luSGVscGVyOjpnZXRQbHVnaW4oJ2NvbnRlbnQnLCAnW1tbY29tcG9uZW50XV1dcHJpdmFjeXRhYnMnKTsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMganNvbg0KCQkJaWYgKGlzc2V0KCRwbHVnaW4tPnBhcmFtcykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHBsdWdpbi0+cGFyYW1zKSkNCgkJCXsNCgkJCQkvLyBDb252ZXJ0IHRoZSBwYXJhbXMgZmllbGQgdG8gYW4gYXJyYXkuDQoJCQkJJHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRyZWdpc3RyeS0+bG9hZFN0cmluZygkcGx1Z2luLT5wYXJhbXMpOw0KCQkJCSRwbHVnaW4tPnBhcmFtcyA9ICRyZWdpc3RyeS0+dG9BcnJheSgpOw0KCQkJfQ0KCQkJLy8gbm93IGdldCB0aGUgcGx1Z2luIElEIGlmIHNldA0KCQkJaWYgKGlzc2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pICYmICRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10gPiAwKQ0KCQkJew0KCQkJCS8vIGlmIGxpbmtlZCBpdCB3aWxsIG9ubHkgbG9hZCBpdCBvbmNlDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCUZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCktPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1lvdSBkbyBub3QgaGF2ZSBhIGdsb2JhbCBwcml2YWN5IHBsdWdpbiBzZXR1cCwgc28gdGhlIGludGVncmF0aW9uIHdpdGggSm9vbWxhIHByaXZhY3kgc3VpdGUgY291bGQgbm90IGJlIGJ1aWxkLicpLCAnV2FybmluZycpOw0KCQkJCSR0aGlzLT5sb2FkUHJpdmFjeT0gZmFsc2U7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgVXBkYXRlIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZVVwZGF0ZUZpbGVzKCRjb21waWxlcikNCgl7DQoJCS8vIGNoZWNrIGlmIHByaXZhY3kgaXMgdG8gYmUgbG9hZGVkDQoJCWlmICgkdGhpcy0+bG9hZFByaXZhY3kgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZVZpZXdzKSkNCgkJew0KCQkJLy8gZ2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQkkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5nZXQoJ3Blcm1pc3Npb25fc3RyaWN0X3Blcl9maWVsZCcsIGZhbHNlKTsNCgkJCSRleHBvcnRUZXh0T25seSA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5nZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAxKTsNCg0KCQkJLy8gbG9hZCB0aGUgZ2V0UHJpdmFjeUV4cG9ydCBmdW5jdGlvbnMNCgkJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkaWQgPT4gJiR2aWV3KQ0KCQkJew0KCQkJCS8vIHNldCBwZXJtaXNzaW9ucyBiYXNlZCBvbiB2aWV3DQoJCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsncGVybWlzc2lvbnMnXSkpDQoJCQkJew0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydwZXJtaXNzaW9ucyddKTsNCgkJCQl9DQoNCgkJCQkvLyBhbGxvdyB0ZXh0IG9ubHkgZXhwb3J0DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgnZXhwb3J0X3RleHRfb25seScsIDEpOw0KDQoJCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkJJHZpZXdOYW1lX2xpc3QgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX2xpc3QpOw0KCQkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCgkJCQkvLyBsb2FkIHRoZSBmdW5jdGlvbg0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5NdWx0aScpLT5hZGQoJHZpZXdOYW1lX2xpc3QgLiAnfE1PREVMRVhQT1JUTUVUSE9EJywNCgkJCQkJJGNvbXBpbGVyLT5zZXRHZXRJdGVtc01vZGVsTWV0aG9kKA0KCQkJCQkJJHZpZXdOYW1lX3NpbmdsZSwNCgkJCQkJCSR2aWV3TmFtZV9saXN0LA0KCQkJCQkJWw0KCQkJCQkJCSdmdW5jdGlvbk5hbWUnID0+ICdnZXRQcml2YWN5RXhwb3J0JywNCgkJCQkJCQknZG9jRGVzYycgPT4gJ01ldGhvZCB0byBnZXQgZGF0YSBkdXJpbmcgYW4gZXhwb3J0IHJlcXVlc3QuJywNCgkJCQkJCQkndHlwZScgPT4gJ3ByaXZhY3knDQoJCQkJCQldDQoJCQkJCSkNCgkJCQkpOw0KCQkJCS8vIGdldCB0aGUgcGVybWlzc2lvbnMgYnVpbGRpbmcgdmFsdWVzIGZvciBsYXRlciBpZiBuZWVkZWQNCgkJCQlpZiAoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmdldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgZmFsc2UpICYmDQoJCQkJCWlzc2V0KCRjb21waWxlci0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSkgJiYNCgkJCQkJU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdID0gJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gc2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyk7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+c2V0KCdleHBvcnRfdGV4dF9vbmx5JywgJGV4cG9ydFRleHRPbmx5KTsNCg0KCQkJLy8gYWRkIGhlbHBlciBjbGFzc2VzDQoJCQkkaGVscGVyX3N0cmluZ3MgPSBbJ0NVU1RPTV9IRUxQRVJfU0NSSVBUJywgJ1NJVEVfQ1VTVE9NX0hFTFBFUl9TQ1JJUFQnLCAnQk9USF9DVVNUT01fSEVMUEVSX1NDUklQVCddOw0KCQkJJHByaXZhY3lfZXZlbnRzID0gWw0KCQkJCSdQcml2YWN5Q2FuUmVtb3ZlRGF0YScgPT4gdHJ1ZSwNCgkJCQknUHJpdmFjeUV4cG9ydFJlcXVlc3QnID0+IHRydWUsDQoJCQkJJ1ByaXZhY3lSZW1vdmVEYXRhJyA9PiB0cnVlDQoJCQldOw0KDQoJCQlmb3JlYWNoICgkaGVscGVyX3N0cmluZ3MgYXMgJGhlbHBlcikNCgkJCXsNCgkJCQlpZiAoKCRoZWxwZXJfY29udGVudCA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+Z2V0KCRoZWxwZXIpKSAhPT0gbnVsbCAmJg0KCQkJCQlTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaGVscGVyX2NvbnRlbnQpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJHByaXZhY3lfZXZlbnRzIGFzICRwcml2YWN5X2V2ZW50ID0+ICYkYWRkKQ0KCQkJCQl7DQoJCQkJCQkvLyBjaGVjayBpZiB0aGUgZXZlbiBpcyBvdmVyd3JpdGVuDQoJCQkJCQlpZiAoc3RycG9zKCRoZWxwZXJfY29udGVudCwgJ3B1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb24nIC4gJHByaXZhY3lfZXZlbnQgLiAnKCcpICE9PSBmYWxzZSkNCgkJCQkJCXsNCgkJCQkJCQkkYWRkID0gZmFsc2U7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIGFkZCB0aGUgZXZlbnRzIHN0aWxsIG5lZWRlZA0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hZGQoJ0JPVEhfQ1VTVE9NX0hFTFBFUl9TQ1JJUFQnLA0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHRoaXMtPmdldEhlbHBlck1ldGhvZCgkcHJpdmFjeV9ldmVudHMpKQ0KCQkJKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBTZXQgTGFuZyBGaWxlIERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlU2V0TGFuZ0ZpbGVEYXRhKCkNCgl7DQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VBcnJheSkpDQoJCXsNCgkJCWZvcmVhY2goJHRoaXMtPmxhbmd1YWdlQXJyYXkgYXMgJGtleSA9PiAkc3RyaW5nKQ0KCQkJew0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0xhbmd1YWdlJyktPnNldCgnc2l0ZScsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBIZWxwZXIgbWV0aG9kcyBuZWVkZWQgdG8gaW50ZWdyYXRlIHdpdGggSm9vbWxhIFByaXZhY3kgU3VpdGUNCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkaGVscGVyTWV0aG9kcyAgVGhlIGhlbHBlciBtZXRob2RzIHN0cmluZw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhlbHBlck1ldGhvZCgmJGV2ZW50cykNCgl7DQoJCSRtZXRob2RzID0gJyc7DQoJCWZvcmVhY2ggKCRldmVudHMgYXMgJGV2ZW50ID0+ICRhZGQpDQoJCXsNCgkJCS8vIGNoZWNrIGlmIHRoZSBldmVuIHNob3VsZCBiZSBhZGRlZA0KCQkJaWYgKCRhZGQpDQoJCQl7DQoJCQkJLy8gYWRkIHRoZSBldmVudA0KCQkJCSR0aGlzLT57J3NldCcuJGV2ZW50fSgkbWV0aG9kcyk7DQoJCQl9DQoJCX0NCgkJLy8gb25seSBhZGQgaGVhZGVyIGlmIHRoZXJlIHdhcyBldmVudHMgYWRkZWQNCgkJaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRtZXRob2RzKSkNCgkJew0KCQkJJG1ldGhvZHMgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgPDw8PT09IFByaXZhY3kgaW50ZWdyYXRpb24gd2l0aCBKb29tbGEgUHJpdmFjeSBzdWl0ZSA9PT0+Pj4iIC4gUEhQX0VPTCAuICRtZXRob2RzOw0KCQl9DQoNCgkJcmV0dXJuICRtZXRob2RzOw0KCX0NCg0KCS8qKg0KCSAqIFNldCBQcml2YWN5IENhbiBSZW1vdmUgRGF0YQ0KCSAqIA0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRtZXRob2RzICBUaGUgbWV0aG9kcyBzdHJpbmcNCgkgKiANCgkgKiBAcmV0dXJuICB2b2lkDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFByaXZhY3lDYW5SZW1vdmVEYXRhKCYkbWV0aG9kcykNCgl7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIFBlcmZvcm1zIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHJlbW92ZSBpbmZvcm1hdGlvbiByZXF1ZXN0IGNhbiBiZSBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lQbHVnaW4gIFwkcGx1Z2luICBUaGUgcGx1Z2luIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lSZW1vdmFsU3RhdHVzICBcJHN0YXR1cyAgVGhlIHN0YXR1cyBiZWluZyBzZXQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5VGFibGVSZXF1ZXN0ICBcJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICBcJHVzZXIgICAgIFRoZSB1c2VyIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCBpZiBhdmFpbGFibGUiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIFByaXZhY3lSZW1vdmFsU3RhdHVzIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAicHVibGljIHN0YXRpYyBmdW5jdGlvbiBvblByaXZhY3lDYW5SZW1vdmVEYXRhKCZcJHBsdWdpbiwgJlwkc3RhdHVzLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBCdWNrZXQgdG8gZ2V0IGFsbCByZWFzb25zIHdoeSByZW1vdmFsIG5vdCBhbGxvd2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiXCRyZWFzb25zID0gYXJyYXkoKTsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBkZWxldGUgIiAuICR2aWV3LT5uYW1lX2xpc3Q7DQoJCQkvLyBzZXQgdGhlIGlmIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgcGVybWlzc2lvbiBidWlsZGVyDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoIVwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5DcmVhdG9yLlBlcm1pc3Npb24nKS0+Z2V0QWN0aW9uKCR2aWV3TmFtZV9zaW5nbGUsICdjb3JlLmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykgJiYgIVwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5DcmVhdG9yLlBlcm1pc3Npb24nKS0+Z2V0QWN0aW9uKCR2aWV3TmFtZV9zaW5nbGUsICdjb3JlLnByaXZhY3kuZGVsZXRlJykNCgkJCQkuICInLCAnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAieyI7DQoJCQkvLyBzZXQgbGFuZ3VhZ2Uga2V5DQoJCQkkbGFuZ19rZXkgPSAkdmlldy0+cGxhY2Vob2xkZXJzW1N1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oIkxBTkdfUFJFRklYIildIC4gJ19QUklWQUNZX0NBTlRfUkVNT1ZFXycgLiAkdmlldy0+cGxhY2Vob2xkZXJzW1N1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oIlZJRVdTIildOw0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmdfa2V5XSA9ICJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byByZW1vdmUvZGVsZXRlICIuICR2aWV3LT5uYW1lX2xpc3QgLiAiLiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJHJlYXNvbnNbXSA9IEpUZSIgLiAieHQ6Ol8oJyIgLiAkbGFuZ19rZXkgLiAiJyk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQkJLy8gc2V0IGxhbmd1YWdlIGtleQ0KCQkJJGxhbmdfa2V5ID0gJHZpZXctPnBsYWNlaG9sZGVyc1tTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJMQU5HX1BSRUZJWCIpXSAuICdfUFJJVkFDWV9DQU5UX1JFTU9WRV9DT05UQUNUX1NVUFBPUlQnOw0KCQl9DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmIGFueSByZWFzb25zIHdlcmUgZm91bmQgbm90IHRvIGFsbG93IHJlbW92YWwiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRyZWFzb25zKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRzdGF0dXMtPmNhblJlbW92ZSA9IGZhbHNlOyI7DQoJCS8vIHNldCBsYW5ndWFnZSBzdHJpbmcNCgkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmdfa2V5XSA9ICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBtb3JlIGRldGFpbHMuJzsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRzdGF0dXMtPnJlYXNvbiA9IGltcGxvZGUoJyAnIC4gUEhQX0VPTCwgXCRyZWFzb25zKSAuICcgJyAuIFBIUF9FT0wgLiBKVGUiIC4gInh0OjpfKCciIC4gJGxhbmdfa2V5IC4gIicpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJyZXR1cm4gXCRzdGF0dXM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCX0NCg0KCS8qKg0KCSAqIFNldCBQcml2YWN5IEV4cG9ydCBSZXF1ZXN0DQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUV4cG9ydFJlcXVlc3QoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogUHJvY2Vzc2VzIGFuIGV4cG9ydCByZXF1ZXN0IGZvciBKb29tbGEgY29yZSB1c2VyIGRhdGEiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lQbHVnaW4gIFwkcGx1Z2luICBUaGUgcGx1Z2luIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIERvbWFpbkFycmF5ICBcJGRvbWFpbnMgIFRoZSBhcnJheSBvZiBkb21haW5zIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgXCRyZXF1ZXN0ICBUaGUgcmVxdWVzdCByZWNvcmQgYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgSlVzZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uUHJpdmFjeUV4cG9ydFJlcXVlc3QoJlwkcGx1Z2luLCAmXCRkb21haW5zLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJJHZpZXdOYW1lX2xpc3QgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX2xpc3QpOw0KCQkJLy8gc2V0IHZpZXcgc2luZ2xlIG5hbWUNCgkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBhY2Nlc3MgIiAuICR2aWV3LT5uYW1lX2xpc3Q7DQoJCQkvLyBzZXQgdGhlIGlmIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgcGVybWlzc2lvbiBidWlsZGVyDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoXCR1c2VyLT5hdXRob3Jpc2UoJyINCgkJCQkuIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRHbG9iYWwoJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUuYWNjZXNzJykNCgkJCQkuICInLCAnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEdsb2JhbCgkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmFjY2VzcycpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0ICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJGRvbWFpbnNbXSA9IHNlbGY6OmNyZWF0ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEb21haW4oXCRwbHVnaW4sIFwkdXNlcik7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQl9DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInJldHVybiBcJGRvbWFpbnM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KDQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIENyZWF0ZSB0aGUgZG9tYWluIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZTsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIEpUYWJsZVVzZXIgIFwkdXNlciAgVGhlIEpUYWJsZVVzZXIgb2JqZWN0IHRvIHByb2Nlc3MiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHJldHVybiAgUHJpdmFjeUV4cG9ydERvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKi8iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRG9tYWluKCZcJHBsdWdpbiwgJlwkdXNlcikiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBjcmVhdGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRvbWFpbiA9IHNlbGY6OmNyZWF0ZURvbWFpbignIiAuICR2aWV3TmFtZV9zaW5nbGUgLiAiJywgJyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICJfIiAuICR2aWV3TmFtZV9zaW5nbGUgLiAiX2RhdGEnKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGRhdGFiYXNlIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBhbGwgaXRlbSBpZHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5zZWxlY3QoJ2lkJykiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oJ2NvbXBvbmVudCcpIC4gJ18nIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInKSk7IjsNCgkJCS8vIGdldCB2aWEgY3VzdG9tIHNjcmlwdA0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMykNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdmlldy0+cGxhY2Vob2xkZXJzKSwgYXJyYXlfdmFsdWVzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2N1c3RvbV9saW5rJ10pOw0KCQkJfQ0KCQkJLy8ganVzdCBhbm90aGVyIGZpZWxkDQoJCQllbHNlaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMiAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydvdGhlcl91c2VyX2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJew0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJyIgLiAkZmllbGRfbmFtZSAuICInKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIGdpdmUgYSB3YXJuaW5nIG1lc3NhZ2UgKFRPRE8pDQoNCgkJCQkJLy8gc3RvcCBhbnkgZnJvbSBsb2FkaW5nDQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiID09PT0gRVJST1IgPT09PT0gRVJST1IgPT09PT09IChmaWVsZCBuYW1lIG5vdCBmb3VuZCkiOw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gLTInOyAvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8LS0gdGhpcyB3aWxsIG5ldmVyIHJldHVybiBhbnkgdmFsdWUuIENoZWNrIHlvdXIgW290aGVyIHVzZXIgZmllbGRdIHNlbGVjdGVkIGluIHRoZSBhZG1pbiB2aWV3IHByaXZhY3kgdGFiLiI7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gZ2V0IGJhc2VkIG9uIGNyZWF0ZWQgYnkNCgkJCWVsc2UNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2NyZWF0ZWRfYnknKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQl9DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW1zIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHBrcyA9IFwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpLT5sb2FkQ29sdW1uKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIG1vZGVsIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkbW9kZWwgPSBzZWxmOjpnZXRNb2RlbCgnIiAuICR2aWV3TmFtZV9saXN0IC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0IGFsbCBpdGVtIGRldGFpbHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGl0ZW1zID0gXCRtb2RlbC0+Z2V0UHJpdmFjeUV4cG9ydChcJHBrcywgXCR1c2VyKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY2hlY2sgaWYgd2UgaGF2ZSBpdGVtcyBzaW5jZSBwZXJtaXNzaW9ucyBjb3VsZCBibG9jayB0aGUgcmVxdWVzdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRpdGVtcykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRlZmF1bHQgY29sdW1ucyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJmb3JlYWNoIChhcnJheSgncGFyYW1zJywgJ2Fzc2V0X2lkJywgJ2NoZWNrZWRfb3V0JywgJ2NoZWNrZWRfb3V0X3RpbWUnLCAnY3JlYXRlZCcsICdjcmVhdGVkX2J5JywgJ21vZGlmaWVkJywgJ21vZGlmaWVkX2J5JywgJ3B1Ymxpc2hlZCcsICdvcmRlcmluZycsICdhY2Nlc3MnLCAndmVyc2lvbicsICdoaXRzJykgYXMgXCRjb2x1bW4pIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiXCRpdGVtcyA9IEFycmF5SGVscGVyOjpkcm9wQ29sdW1uKFwkaXRlbXMsIFwkY29sdW1uKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBsb2FkIHRoZSBpdGVtcyBpbnRvIHRoZSBkb21haW4gb2JqZWN0IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImZvcmVhY2ggKFwkaXRlbXMgYXMgXCRpdGVtKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIlwkZG9tYWluLT5hZGRJdGVtKHNlbGY6OmNyZWF0ZUl0ZW1Gcm9tQXJyYXkoXCRpdGVtLCBcJGl0ZW1bJ2lkJ10pKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ9IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInJldHVybiBcJGRvbWFpbjsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCQl9DQoJCS8vIHdlIG11c3QgYWRkIHRoZXNlIGhlbHBlciBtZXRob2RzDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIENyZWF0ZSBhIG5ldyBkb21haW4gb2JqZWN0IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBzdHJpbmcgIFwkbmFtZSAgICAgICAgIFRoZSBkb21haW4ncyBuYW1lIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgc3RyaW5nICBcJGRlc2NyaXB0aW9uICBUaGUgZG9tYWluJ3MgZGVzY3JpcHRpb24iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIFByaXZhY3lFeHBvcnREb21haW4iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBzaW5jZSAgIDMuOS4wIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVEb21haW4oXCRuYW1lLCBcJGRlc2NyaXB0aW9uID0gJycpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkZG9tYWluICAgICAgICAgICAgICA9IG5ldyBQcml2YWN5RXhwb3J0RG9tYWluOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkZG9tYWluLT5uYW1lICAgICAgICA9IFwkbmFtZTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRvbWFpbi0+ZGVzY3JpcHRpb24gPSBcJGRlc2NyaXB0aW9uOyI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInJldHVybiBcJGRvbWFpbjsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJ9IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQ3JlYXRlIGFuIGl0ZW0gb2JqZWN0IGZvciBhbiBhcnJheSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgYXJyYXkgICAgICAgICBcJGRhdGEgICAgVGhlIGFycmF5IGRhdGEgdG8gY29udmVydCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIGludGVnZXJ8bnVsbCAgXCRpdGVtSWQgIFRoZSBJRCBvZiB0aGlzIGl0ZW0iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIFByaXZhY3lFeHBvcnRJdGVtIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAc2luY2UgICAzLjkuMCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSXRlbUZyb21BcnJheShhcnJheSBcJGRhdGEsIFwkaXRlbUlkID0gbnVsbCkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiXCRpdGVtID0gbmV3IFByaXZhY3lFeHBvcnRJdGVtOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkaXRlbS0+aWQgPSBcJGl0ZW1JZDsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJmb3JlYWNoIChcJGRhdGEgYXMgXCRrZXkgPT4gXCR2YWx1ZSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiaWYgKGlzX29iamVjdChcJHZhbHVlKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiXCR2YWx1ZSA9IChhcnJheSkgXCR2YWx1ZTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ9IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiaWYgKGlzX2FycmF5KFwkdmFsdWUpKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJHZhbHVlID0gcHJpbnRfcihcJHZhbHVlLCB0cnVlKTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ9IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRmaWVsZCAgICAgICAgPSBuZXcgUHJpdmFjeUV4cG9ydEZpZWxkOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIlwkZmllbGQtPm5hbWUgID0gXCRrZXk7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRmaWVsZC0+dmFsdWUgPSBcJHZhbHVlOyI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIlwkaXRlbS0+YWRkRmllbGQoXCRmaWVsZCk7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInJldHVybiBcJGl0ZW07IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgZmllbGQgbmFtZQ0KCSAqIA0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGZpZWxkcyAgVGhlIGZpZWxkcyBhcnJheQ0KCSAqIEBwYXJhbSAgIGludCAgICAgICAkaWQgICAgICAgVGhlIGZpZWxkIGlkDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nICAgIFRoZSBmaWVsZCBuYW1lDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEZpZWxkTmFtZSgmJGZpZWxkcywgJGlkKQ0KCXsNCgkJZm9yZWFjaCAoJGZpZWxkcyBhcyAkZmllbGQpDQoJCXsNCgkJCWlmICgkZmllbGRbJ2ZpZWxkJ10gPT0gJGlkKQ0KCQkJew0KCQkJCXJldHVybiAkZmllbGRbJ2Jhc2VfbmFtZSddOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBTZXQgUHJpdmFjeSBSZW1vdmUgRGF0YQ0KCSAqIA0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRtZXRob2RzICBUaGUgbWV0aG9kcyBzdHJpbmcNCgkgKiANCgkgKiBAcmV0dXJuICB2b2lkDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFByaXZhY3lSZW1vdmVEYXRhKCYkbWV0aG9kcykNCgl7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIFJlbW92ZXMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcmVtb3ZlIGluZm9ybWF0aW9uIHJlcXVlc3QiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lUYWJsZVJlcXVlc3QgIFwkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIEpVc2VyICAgICAgICAgICAgICAgIFwkdXNlciAgICAgVGhlIHVzZXIgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IGlmIGF2YWlsYWJsZSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHJldHVybiAgdm9pZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25Qcml2YWN5UmVtb3ZlRGF0YSgmXCRwbHVnaW4sICZcJHJlcXVlc3QsICZcJHVzZXIpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAieyI7DQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHRoZSBhbm9ueW1pemUgc3dpdGNoDQoJCQkkYW5vbnltaXplID0gZmFsc2U7DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSA9PSAxICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplX2ZpZWxkcyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSwgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJGFub255bWl6ZSA9IHRydWU7DQoJCQl9DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KCQkJLy8gbG9hZCB0aGUgY2FuRG8gZnJvbSBnZXRBY3Rpb25zIGhlbHBlciBtZXRob2QNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gZGVsZXQgIiAuICR2aWV3LT5uYW1lX2xpc3Q7DQoJCQkvLyBzZXQgdGhlIGlmIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgcGVybWlzc2lvbiBidWlsZGVyDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoXCR1c2VyLT5hdXRob3Jpc2UoJyINCgkJCQkuIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUuZGVsZXRlJykNCgkJCQkuICInLCAnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHBsYWluIGRlbGV0ZSwgb3IgaXQgaXMgYSBBbm9ueW1pemUgDQoJCQlpZiAoJGFub255bWl6ZSkNCgkJCXsNCgkJCQkvLyBhbm9ueW1pemUgdGhlIGRhdGENCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBBbm9ueW1pemUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAic2VsZjo6YW5vbnltaXplIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoXCRwbHVnaW4sIFwkdXNlcik7IjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBqdXN0IGR1bXAsIGRlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFJlbW92ZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkYXRhIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJzZWxmOjpyZW1vdmUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YShcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAifSI7DQoJCX0NCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KDQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHRoZSBhbm9ueW1pemUgc3dpdGNoDQoJCQkkYW5vbnltaXplID0gZmFsc2U7DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSA9PSAxICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplX2ZpZWxkcyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSwgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJGFub255bWl6ZSA9IHRydWU7DQoJCQl9DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIvKioiOw0KDQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcGxhaW4gZGVsZXRlLCBvciBpdCBpcyBhIEFub255bWl6ZQ0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQW5vbnltaXplIHRoZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkYXRhIjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBEZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBSZW1vdmUgdGhlICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRhdGEiOw0KCQkJfQ0KDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBKVGFibGVVc2VyICBcJHVzZXIgIFRoZSBKVGFibGVVc2VyIG9iamVjdCB0byBwcm9jZXNzIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIHZvaWQiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICovIjsNCg0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHBsYWluIGRlbGV0ZSwgb3IgaXQgaXMgYSBBbm9ueW1pemUgDQoJCQlpZiAoJGFub255bWl6ZSkNCgkJCXsNCgkJCQkvLyBBbm9ueW1pemUgdGhlIGRhdGENCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGFub255bWl6ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEYXRhKCZcJHBsdWdpbiwgJlwkdXNlcikiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoJlwkcGx1Z2luLCAmXCR1c2VyKSI7DQoJCQl9DQoNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGRhdGFiYXNlIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBhbGwgaXRlbSBpZHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5zZWxlY3QoJ2lkJykiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oJ2NvbXBvbmVudCcpIC4gJ18nIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInKSk7IjsNCgkJCS8vIGdldCB2aWEgY3VzdG9tIHNjcmlwdA0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMykNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdmlldy0+cGxhY2Vob2xkZXJzKSwgYXJyYXlfdmFsdWVzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2N1c3RvbV9saW5rJ10pOw0KCQkJfQ0KCQkJLy8ganVzdCBhbm90aGVyIGZpZWxkDQoJCQllbHNlaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMiAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydvdGhlcl91c2VyX2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJew0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJyIgLiAkZmllbGRfbmFtZSAuICInKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIGdpdmUgYSB3YXJuaW5nIG1lc3NhZ2UgKFRPRE8pDQoNCgkJCQkJLy8gc3RvcCBhbnkgZnJvbSBsb2FkaW5nDQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiID09PT0gRVJST1IgPT09PT0gRVJST1IgPT09PT09IChmaWVsZCBuYW1lIG5vdCBmb3VuZCkiOw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gLTInOyAvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8LS0gdGhpcyB3aWxsIG5ldmVyIHJldHVybiBhbnkgdmFsdWUuIENoZWNrIHlvdXIgW290aGVyIHVzZXIgZmllbGRdIHNlbGVjdGVkIGluIHRoZSBhZG1pbiB2aWV3IHByaXZhY3kgdGFiLiI7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gZ2V0IGJhc2VkIG9uIGNyZWF0ZWQgYnkNCgkJCWVsc2UNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2NyZWF0ZWRfYnknKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQl9DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW1zIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRhYmxlIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHBrcyA9IFwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpLT5sb2FkQ29sdW1uKCk7IjsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuUEhQX0VPTCAuICBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gImlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjayhcJHBrcykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXdOYW1lX3NpbmdsZSAuICIgbW9kZWwiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRtb2RlbCA9IHNlbGY6OmdldE1vZGVsKCciIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJyk7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYnVpbGQgdGhlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBhcnJheQ0KCQkJCSRfZGF0YV9idWNrZXQgPSBhcnJheSgpOw0KCQkJCSRfcmFuZG9tX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJJF9wZXJtaXNzaW9uX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10gYXMgJHJvdykNCgkJCQl7DQoJCQkJCWlmICgoJGZpZWxkX25hbWUgPSAkdGhpcy0+Z2V0RmllbGROYW1lKCR2aWV3LT5maWVsZHMsICRyb3dbJ2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJCXsNCgkJCQkJCWlmICAoJ1JBTkRPTScgPT09ICRyb3dbJ3ZhbHVlJ10pIA0KCQkJCQkJew0KCQkJCQkJCSRfcmFuZG9tX2J1Y2tldFskZmllbGRfbmFtZV0gPSA4OyAvLyAoVE9ETykgbWFrZSB0aGUgc2l6ZSBkeW5hbWljDQoJCQkJCQl9DQoJCQkJCQkkX2RhdGFfYnVja2V0W10gPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICInIiAuICRmaWVsZF9uYW1lIC4gIicgPT4gJyIgLiAkcm93Wyd2YWx1ZSddIC4iJyI7DQoJCQkJCQkkX3Blcm1pc3Npb25fYnVja2V0WyRmaWVsZF9uYW1lXSA9ICRmaWVsZF9uYW1lOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRoaXMgaXMgdGhlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBhcnJheSBmb3IgIiAuICR2aWV3LT5uYW1lX2xpc3Q7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YSA9IGFycmF5KCI7DQoJCQkJJG1ldGhvZHMgLj0gaW1wbG9kZSgnLCcsICRfZGF0YV9idWNrZXQpOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIik7IjsNCg0KCQkJCS8vIGFkZCB0aGUgcGVybWlzc2lvbmFsIHJlbW92YWwgb2YgdmFsdWVzIHRoZSB1c2VyIGhhcyBub3QgcmlnaHQgdG8gdmlldyBvciBhY2Nlc3MNCgkJCQkkaGFzUGVybWlzc2lvbmFsID0gZmFsc2U7DQoJCQkJaWYgKGlzc2V0KCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSkpDQoJCQkJew0KCQkJCQlmb3JlYWNoICgkdGhpcy0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSBhcyAkZmllbGROYW1lID0+ICRwZXJtaXNzaW9uX29wdGlvbnMpDQoJCQkJCXsNCgkJCQkJCWlmICghJGhhc1Blcm1pc3Npb25hbCAmJiBpc3NldCgkX3Blcm1pc3Npb25fYnVja2V0WyRmaWVsZE5hbWVdKSkNCgkJCQkJCXsNCgkJCQkJCQlmb3JlYWNoKCRwZXJtaXNzaW9uX29wdGlvbnMgYXMgJHBlcm1pc3Npb25fb3B0aW9uID0+ICRmaWVsZFR5cGUpDQoJCQkJCQkJew0KCQkJCQkJCQlpZiAoISRoYXNQZXJtaXNzaW9uYWwpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCXN3aXRjaCAoJHBlcm1pc3Npb25fb3B0aW9uKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCWNhc2UgJ2FjY2Vzcyc6DQoJCQkJCQkJCQkJY2FzZSAndmlldyc6DQoJCQkJCQkJCQkJY2FzZSAnZWRpdCc6DQoJCQkJCQkJCQkJCSRoYXNQZXJtaXNzaW9uYWwgPSB0cnVlOw0KCQkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCS8vIGFkZCB0aGUgbm90ZXMgYW5kIGdldCB0aGUgZ2xvYmFsIHN3aXRjaA0KCQkJCQlpZiAoJGhhc1Blcm1pc3Npb25hbCkNCgkJCQkJew0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEdldCBnbG9iYWwgcGVybWlzc2lvbmFsIGNvbnRyb2wgYWN0aXZhdGlvbi4gKGRlZmF1bHQgaXMgaW5hY3RpdmUpIjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIlwkc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkID0gSm9vbWxhX19fYWViOGU0NjNfMjkxZl80NDQ1XzlhYzRfMzRiNjM3YzEyZGJkX19fUG93ZXI6OmdldFBhcmFtcygnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKS0+Z2V0KCdzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQnLCAwKTsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiaWYoXCRzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQpIjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgcmVtb3ZlIGFsbCBmaWVsZHMgdGhhdCBpcyBub3QgcGVybWl0dGVkIHRvIGJlIGNoYW5nZWQiOw0KCQkJCQkJZm9yZWFjaCAoJHRoaXMtPnBlcm1pc3Npb25GaWVsZHNbJHZpZXdOYW1lX3NpbmdsZV0gYXMgJGZpZWxkTmFtZSA9PiAkcGVybWlzc2lvbl9vcHRpb25zKQ0KCQkJCQkJew0KCQkJCQkJCWlmIChpc3NldCgkX3Blcm1pc3Npb25fYnVja2V0WyRmaWVsZE5hbWVdKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gImlmICgiOw0KCQkJCQkJCQkkX3Blcm1pc3Npb25faWYgPSBhcnJheSgpOw0KCQkJCQkJCQlmb3JlYWNoICgkcGVybWlzc2lvbl9vcHRpb25zIGFzICRwZXJtX2tleSA9PiAkZmllbGRfdHlwcmV3KQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkX3Blcm1pc3Npb25faWZbXSA9ICIhXCR1c2VyLT5hdXRob3Jpc2UoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIi4iIC4gJHBlcm1fa2V5IC4gIi4iIC4gJGZpZWxkTmFtZSAuICInLCAnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKSI7DQoJCQkJCQkJCX0NCgkJCQkJCQkJJG1ldGhvZHMgLj0gIGltcGxvZGUoJyB8fCAnLCAkX3Blcm1pc3Npb25faWYpOw0KCQkJCQkJCQkkbWV0aG9kcyAuPSAgIikiOw0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ7IjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNSkgLiAidW5zZXQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnIi4gJGZpZWxkTmFtZSAuICInXSk7IjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAifSI7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoJCQkJCX0NCgkJCQl9DQoNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRhYmxlIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJHRhYmxlID0gXCRtb2RlbC0+Z2V0VGFibGUoKTsiOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBmb3IgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHNldCI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiaWYgKCFTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjayhcJHBzZXVkb2Fub255bWlzZWREYXRhKSkiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHN0aWxsIGFyY2hpdmUgYWxsIGl0ZW1zIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJHRhYmxlLT5wdWJsaXNoKFwkcGtzLCAyKTsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gInJldHVybiBmYWxzZTsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgSXRlcmF0ZSB0aGUgaXRlbXMgdG8gYW5vbmltaXplIGVhY2ggb25lLiI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZm9yZWFjaCAoXCRwa3MgYXMgXCRpID0+IFwkcGspIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJHRhYmxlLT5yZXNldCgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnaWQnXSA9IFwkcGs7IjsNCgkJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJF9yYW5kb21fYnVja2V0KSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRfcmFuZG9tX2J1Y2tldCBhcyAkZmllbGROYW1lID0+ICRzaXplKQ0KCQkJCQl7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJpZiAoaXNzZXQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnIiAuICRmaWVsZE5hbWUgLiAiJ10pKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDUpIC4gIlwkcHNldWRvYW5vbnltaXNlZERhdGFbJyIgLiAkZmllbGROYW1lIC4gIiddID0gc2VsZjo6cmFuZG9ta2V5KCIgLiAoaW50KSAkc2l6ZSAuICIpOyI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ9IjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiaWYgKFwkdGFibGUtPmJpbmQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YSkpIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg1KSAuICJcJHRhYmxlLT5zdG9yZSgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBhcmNoaXZlIGFsbCBpdGVtcyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCR0YWJsZS0+cHVibGlzaChcJHBrcywgMik7IjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBEZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0YWJsZSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBJdGVyYXRlIHRoZSBpdGVtcyB0byBkZWxldGUgZWFjaCBvbmUuIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJmb3JlYWNoIChcJHBrcyBhcyBcJGkgPT4gXCRwaykiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gImlmIChcJHRhYmxlLT5sb2FkKFwkcGspKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAieyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNSkgLiAiXCR0YWJsZS0+ZGVsZXRlKFwkcGspOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2xlYXIgdGhlIGNvbXBvbmVudCdzIGNhY2hlIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJG1vZGVsLT5jbGVhbkNhY2hlKCk7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCQl9DQoJfQ==', '[[[Component]]] Privacy Compiler', '', '', '', '', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:15', '2024-05-26 20:14:03', 5, '', 3),
(44, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields1\":{\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"plugin\",\"label\":\"Plugin\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields2\":{\"file\":\"admin_view\",\"fields_name\":\"params.privacy\",\"fieldset\":\"privacy\",\"label\":\"Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2603\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2605\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2606\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2607\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2608\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2611\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2612\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2613\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2614\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2615\",\"custom_value\":\"\"}}}}', 'e0da018d-dba8-4ce7-b26c-63630f631a40', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjsNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7DQp1c2UgSm9vbWxhXENNU1xGb3JtXEZvcm07DQp1c2UgSm9vbWxhXENNU1xGYWN0b3J5Ow==', 3, '{\"method_selection0\":{\"method\":\"113\"},\"method_selection1\":{\"method\":\"12\"},\"method_selection2\":{\"method\":\"0\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQkJLy8gaWYgdGhlIGdsb2JhbCBwbHVnaW4gaXMgbm90IHNldCwgYWxsb3cgaXQgdG8gYmUgc2V0IGZyb20gdGhlIGFkbWluIHZpZXcNCgkJCWlmICgoJHBsdWdpbiA9ICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpID09IDApDQoJCQl7DQoJCQkJJGZvcm0tPmxvYWRGaWxlKCdjb25maWcnKTsNCgkJCQkvLyBtYWtlIHRoZSBwbHVnaW4gZmllbGQgcmVxdWlyZWQgKExBVEVSIHdoZW4gd2UgY2FuIGdpdmUgbW9yZSBpbmZvKQ0KCQkJCS8vJGZvcm0tPnNldEZpZWxkQXR0cmlidXRlKCdwbHVnaW4nLCAncmVxdWlyZWQnLCB0cnVlLCAncGFyYW1zLnByaXZhY3knKTsNCgkJCQkvLyRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgncGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQkJLy8kZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ25vdGVfc2VsZWN0X3ByaXZhY3lfcGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQl9DQoJCQkvLyB1cGRhdGUgYWxsIGVkaXRvcnMgdG8gdXNlIHRoaXMgY29tcG9uZW50cyBnbG9iYWwgZWRpdG9yDQoJCQkkZ2xvYmFsX2VkaXRvciA9IENvbXBvbmVudEhlbHBlcjo6Z2V0UGFyYW1zKCdjb21fW1tbY29tcG9uZW50XV1dJyktPmdldCgnZWRpdG9yJywgJ25vbmUnKTsNCgkJCS8vIHNldCB0aGUgZmllbGQgZWRpdG9yIHZhbHVlICh3aXRoIG5vbmUgYXMgZmFsbGJhY2spDQoJCQkkZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ2N1c3RvbV9saW5rJywgJ2VkaXRvcicsICRnbG9iYWxfZWRpdG9yIC4gJ3xub25lJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyBhbiBldmVudCB0aGF0IGlzIGNhbGxlZCByaWdodCBiZWZvcmUgdGhlIGNvbnRlbnQNCgkgKiBpcyBzYXZlZCBpbnRvIHRoZSBkYXRhYmFzZS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IHBhc3NlZCB0byB0aGUgcGx1Z2luIChhZGRlZCBpbiAxLjYpLg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGFydGljbGUgIEEgSlRhYmxlQ29udGVudCBvYmplY3QuDQoJICogQHBhcmFtICAgYm9vbCAgICAkaXNOZXcgICAgSWYgdGhlIGNvbnRlbnQgaXMganVzdCBhYm91dCB0byBiZSBjcmVhdGVkLg0KCSAqDQoJICogQHJldHVybiAgdm9pZC4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRCZWZvcmVTYXZlKCRjb250ZXh0LCAkaXRlbSwgJGlzTmV3LCAkZGF0YSA9IGFycmF5KCkpDQoJew0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKCdjb21fW1tbY29tcG9uZW50XV1dLmFkbWluX3ZpZXcnID09PSAkY29udGV4dCkNCgkJew0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBqc29uDQoJCQlpZiAoU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPnBhcmFtcykpDQoJCQl7DQoJCQkJLy8gQ29udmVydCB0aGUgcGFyYW1zIGZpZWxkIHRvIGFuIGFycmF5Lg0KCQkJCSRyZWdpc3RyeSA9IG5ldyBSZWdpc3RyeTsNCgkJCQkkcmVnaXN0cnktPmxvYWRTdHJpbmcoJGl0ZW0tPnBhcmFtcyk7DQoJCQkJJGl0ZW0tPnBhcmFtcyA9ICRyZWdpc3RyeS0+dG9BcnJheSgpOw0KCQkJfQ0KCQkJLy8gY2hlY2sgaWYgdGhlIHBsdWdpbiB3YXMgc2V0DQoJCQlpZiAoaXNzZXQoJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10pICYmICRpdGVtLT5wYXJhbXNbJ3BsdWdpbiddID4gMCkNCgkJCXsNCgkJCQkvLyBmaXJzdCBzZXQgbmV3IHBhcmFtcw0KCQkJCSR0aGlzLT5wYXJhbXMtPnNldCgncGx1Z2luJywgKGludCkgJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJCS8vIHVwZGF0ZSB0aGUgZ2xvYmFsIHBsdWdpbiBzZXR0aW5ncw0KCQkJCSRleHRlbnNpb25UYWJsZSA9IG5ldyAgXEp0YWJsZUV4dGVuc2lvbihGYWN0b3J5OjpnZXREYm8oKSk7DQoJCQkJJGV4dGVuc2lvblRhYmxlLT5sb2FkKGFycmF5KCdlbGVtZW50JyA9PiAnW1tbY29tcG9uZW50XV1dcHJpdmFjeXRhYnMnKSk7DQoJCQkJLy8gU2F2ZSB0aGUgY2hhbmdlDQoJCQkJJGV4dGVuc2lvblRhYmxlLT5zZXQoJ3BhcmFtcycsICR0aGlzLT5wYXJhbXMtPnRvU3RyaW5nKCkpOw0KCQkJCSRleHRlbnNpb25UYWJsZS0+c2F2ZSgoYXJyYXkpICRleHRlbnNpb25UYWJsZSk7DQoJCQkJLy8gYW5kIHJlbW92ZSB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyYW1zDQoJCQkJdW5zZXQoJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJCS8vIGNsZWFyIHRoZSBwbHVnaW4gY2FjaGUNCgkJCQkkdGhpcy0+Y2xlYW5DYWNoZSgnY29tX3BsdWdpbnMnLCAwKTsNCgkJCQkkdGhpcy0+Y2xlYW5DYWNoZSgnY29tX3BsdWdpbnMnLCAxKTsNCgkJCX0NCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYW4gYXJyYXkNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+cGFyYW1zKSkNCgkJCXsNCgkJCQkvLyBDb252ZXJ0IHRoZSBwYXJhbXMgZmllbGQgdG8gYSBzdHJpbmcuDQoJCQkJJHBhcmFtcyA9IG5ldyBSZWdpc3RyeTsNCgkJCQkkcGFyYW1zLT5sb2FkQXJyYXkoJGl0ZW0tPnBhcmFtcyk7DQoJCQkJJGl0ZW0tPnBhcmFtcyA9IChzdHJpbmcpICRwYXJhbXM7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBDbGVhbiB0aGUgY2FjaGUNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRncm91cCAgICAgIFRoZSBjYWNoZSBncm91cA0KCSAqIEBwYXJhbSAgIGludGVnZXIgICRjbGllbnRfaWQgIFRoZSBJRCBvZiB0aGUgY2xpZW50DQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAzLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gY2xlYW5DYWNoZSgkZ3JvdXAgPSBudWxsLCAkY2xpZW50X2lkID0gMCkNCgl7DQoJCSRjb25mID0gRmFjdG9yeTo6Z2V0Q29uZmlnKCk7DQoNCgkJJG9wdGlvbnMgPSBbDQoJCQknZGVmYXVsdGdyb3VwJyA9PiAkZ3JvdXAgPzogKGlzc2V0KCR0aGlzLT5vcHRpb24pID8gJHRoaXMtPm9wdGlvbiA6IEZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCktPmlucHV0LT5nZXQoJ29wdGlvbicpKSwNCgkJCSdjYWNoZWJhc2UnID0+ICRjbGllbnRfaWQgPyBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jYWNoZScgOiAkY29uZi0+Z2V0KCdjYWNoZV9wYXRoJywgSlBBVEhfU0lURSAuICcvY2FjaGUnKSwNCgkJCSdyZXN1bHQnID0+IHRydWUsDQoJCV07DQoNCgkJdHJ5DQoJCXsNCgkJCS8qKiBAdmFyIFxKQ2FjaGVDb250cm9sbGVyQ2FsbGJhY2sgJGNhY2hlICovDQoJCQkkY2FjaGUgPSBcSkNhY2hlOjpnZXRJbnN0YW5jZSgnY2FsbGJhY2snLCAkb3B0aW9ucyk7DQoJCQkkY2FjaGUtPmNsZWFuKCk7DQoJCX0NCgkJY2F0Y2ggKFxKQ2FjaGVFeGNlcHRpb24gJGV4Y2VwdGlvbikNCgkJew0KCQkJJG9wdGlvbnNbJ3Jlc3VsdCddID0gZmFsc2U7DQoJCX0NCg0KCQkvLyBUcmlnZ2VyIHRoZSBvbkNvbnRlbnRDbGVhbkNhY2hlIGV2ZW50Lg0KCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT50cmlnZ2VyRXZlbnQoJ29uQ29udGVudENsZWFuQ2FjaGUnLCAkb3B0aW9ucyk7DQoJfQ==', '[[[Component]]] Privacy Tabs', '', '', '', '', '', '', '', '2.0.2', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Tabs J5', '', 1, '', '', 1, '2024-03-10 15:55:21', '2024-04-09 10:35:05', 6, '', 2),
(45, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set dynamic gets class headers.', '{\"fields0\":{\"file\":\"dynamic_get\",\"fields_name\":\"params.dynamic_get_headers\",\"fieldset\":\"dynamic_get_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields42\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields43\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields44\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields45\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields46\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields47\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields48\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields49\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields50\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '118e8615-4587-4055-818e-e9d4cf055aec', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStkeW5hbWljX2dldF0=', '[[[Component]]] Dynamic Get Headers Tabs', '', '', '', '', '', '', '', '3.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Dynamic Get Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:55:24', '2024-03-11 14:09:11', 4, '', 2),
(46, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Add Access Token to easy update [[[Component]]]', '{}', '5236660d-5dee-492b-925c-15b96cb6ea44', 'dXNlIEpvb21sYVxDTVNcVXJpXFVyaTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xDb21wb25lbnRcQ29tcG9uZW50SGVscGVyOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW91ci4gSWYgdHJ1ZSwgbGFuZ3VhZ2UgZmlsZXMgd2lsbCBiZSBsb2FkZWQgYXV0b21hdGljYWxseS4NCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkLg0KCSAqDQoJICogRm9yIG1vZGlmaWNhdGlvbiBvZiBVUkwgYW5kIGhlYWRlcnMgYmVmb3JlIHBhY2thZ2UgZG93bmxvYWQNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkluc3RhbGxlckJlZm9yZVBhY2thZ2VEb3dubG9hZCgmJHVybCwgJiRoZWFkZXJzKQ0KCXsNCgkJLy8gc2V0IHRoZSBVUkkgb2JqZWN0DQoJCSR1cmkgPSBVcmk6OmdldEluc3RhbmNlKCR1cmwpOw0KCQkkcGFydHMgPSBleHBsb2RlKCcvJywgJHVyaS0+Z2V0UGF0aCgpKTsNCg0KCQkvLyBjaGVjayB0aGF0IHRoaXMgaXMgb3VyIEFQSQ0KCQlpZiAoJHVyaS0+Z2V0SG9zdCgpID09ICdbW1tnaXRlYV91cmxdXV0nICYmIGluX2FycmF5KCdbW1tnaXRlYV9wYWNrYWdlX25hbWVdXV0nLCAkcGFydHMpKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIHRva2VuIGlmIHNldA0KCQkJJHRva2VuID0gQ29tcG9uZW50SGVscGVyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdnaXRlYV90b2tlbicsIGZhbHNlKTsNCgkJCS8vIG9ubHkgYWRkIGlmIHRva2VuIGlzIHNldA0KCQkJaWYgKCR0b2tlbikNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIHRva2VuDQoJCQkJJHVyaS0+c2V0VmFyKCdhY2Nlc3NfdG9rZW4nLCAkdG9rZW4pOw0KCQkJCS8vIHVwZGF0ZSB0aGUgVVJMDQoJCQkJJHVybCA9ICR1cmktPnRvU3RyaW5nKCk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gc2V0IHRoZSByZXR1cm4gVVJMDQoJCQkJJHJldHVybiA9IHVybGVuY29kZShiYXNlNjRfZW5jb2RlKChzdHJpbmcpIFVyaTo6Z2V0SW5zdGFuY2UoKSkpOw0KCQkJCS8vIHNldCB0aGUgdXJscw0KCQkJCSRnZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciaHR0cHM6Ly9bW1tnaXRlYV91cmxdXV0vdXNlci9zZXR0aW5ncy9hcHBsaWNhdGlvbnMiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iJyAuIFRleHQ6Ol8oJ0dldCBBY2Nlc3MgVG9rZW4nKSAuICciJzsNCgkJCQkkc2V0X2FjY2Vzc190b2tlbl91cmwgPSAnIicgLiBVcmk6OnJvb3QoKSAuICdhZG1pbmlzdHJhdG9yL2luZGV4LnBocD9vcHRpb249Y29tX2NvbmZpZyZ2aWV3PWNvbXBvbmVudCZjb21wb25lbnQ9Y29tX1tbW2NvbXBvbmVudF1dXSZwYXRoPSZyZXR1cm49JyAuICRyZXR1cm4gLiAnIiB0aXRsZT0iJyAuIFRleHQ6Ol8oJ1NldCBBY2Nlc3MgVG9rZW4nKSAuICciJzsNCgkJCQkvLyBsb2FkIHRoZSBtZXNzYWdlDQoJCQkJJHRoaXMtPmFwcC0+ZW5xdWV1ZU1lc3NhZ2UoDQoJCQkJCVRleHQ6OnNwcmludGYoIklmIHRoZXJlIHdhcyBhIGRvd25sb2FkL3VwZGF0ZSBlcnJvciwgaXQncyBwcm9iYWJseSBiZWNhdXNlIHRoZSA8YSBocmVmPSVzID5BUEkgQWNjZXNzIFRva2VuPC9hPiBmb3IgdXBkYXRlcyBvZiBbW1tjb21wb25lbnRdXV0gaGFzIG5vdCBiZWVuIHNldCwgeW91IGNhbiBzZXQgdGhpcyBhY2Nlc3MgdG9rZW4gaW4gdGhlIDxhIGhyZWY9JXMgPmdsb2JhbCBvcHRpb25zIHRhYjwvYT4uIiwNCgkJCQkJCSRnZXRfYWNjZXNzX3Rva2VuX3VybCwNCgkJCQkJCSRzZXRfYWNjZXNzX3Rva2VuX3VybA0KCQkJCQkpLCAnbm90aWNlJyk7DQoJCQl9DQoJCX0NCgl9', 'componentbuilder', '', '', '', 'Ly8=', '', '', '', '2.0.0', '{\"property_selection0\":{\"property\":\"39\"},\"property_selection1\":{\"property\":\"37\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev) J5', '', 1, '', '', 1, '2024-03-10 17:27:35', '2024-03-10 21:15:59', 5, '', 9);
--
-- Dumping data for table `#__componentbuilder_admin_view`
--
INSERT INTO `#__componentbuilder_admin_view` (`id`, `add_css_view`, `add_css_views`, `add_custom_button`, `add_custom_import`, `add_fadein`, `add_javascript_view_file`, `add_javascript_view_footer`, `add_javascript_views_file`, `add_javascript_views_footer`, `add_php_ajax`, `add_php_allowedit`, `add_php_batchcopy`, `add_php_batchmove`, `add_php_getitem`, `add_php_getitems`, `add_php_getitems_after_all`, `add_php_getlistquery`, `add_php_postsavehook`, `add_php_save`, `add_sql`, `addlinked_views`, `addpermissions`, `addtables`, `addtabs`, `add_php_before_delete`, `add_php_before_publish`, `add_php_document`, `add_php_after_delete`, `add_php_after_publish`, `php_before_delete`, `php_before_publish`, `php_controller`, `php_document`, `php_after_delete`, `php_after_publish`, `ajax_input`, `css_view`, `css_views`, `custom_button`, `description`, `html_import_view`, `icon`, `icon_add`, `icon_category`, `javascript_view_file`, `javascript_view_footer`, `javascript_views_file`, `javascript_views_footer`, `name_list`, `system_name`, `name_single`, `php_ajaxmethod`, `php_allowedit`, `php_batchcopy`, `php_batchmove`, `php_getitem`, `php_getitems`, `php_getitems_after_all`, `php_getlistquery`, `php_import`, `php_import_display`, `php_import_save`, `php_import_setdata`, `php_model`, `php_postsavehook`, `php_save`, `short_description`, `source`, `sql`, `type`, `php_before_save`, `php_controller_list`, `php_getform`, `php_after_cancel`, `php_allowadd`, `php_before_cancel`, `php_import_ext`, `php_import_headers`, `php_model_list`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(109, '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"More\"}}', '', '', '', '', '', '', '', '', '', '', '', '{}', '', '', '{}', '', '', 'images/WoodMannequin-icon.png', 'images/WoodMannequin-icon-plus.png', '', '', '', '', '', 'Looks', 'Look', 'Look', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'The demo view', '', '', 1, '', '', '', '', '', '', '', '', '', '{\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"ASC\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"ASC\"}}},\"privacy\":{\"activate\":\"1\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"682\"}}', 1, '2016-10-18 11:44:46', '2020-05-21 14:39:27', 18, '', 110, 'c1053952-8a84-4398-aef1-41726f7c0043');
--
-- Dumping data for table `#__componentbuilder_site_view`
--
INSERT INTO `#__componentbuilder_site_view` (`id`, `add_css_document`, `add_css`, `add_js_document`, `add_php_document`, `add_php_jview`, `add_php_jview_display`, `add_php_view`, `add_php_ajax`, `add_custom_button`, `custom_button`, `button_position`, `php_controller`, `php_model`, `ajax_input`, `php_ajaxmethod`, `codename`, `css_document`, `css`, `custom_get`, `default`, `description`, `dynamic_get`, `js_document`, `main_get`, `name`, `system_name`, `php_document`, `php_jview`, `php_jview_display`, `php_view`, `snippet`, `params`, `javascript_file`, `libraries`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(23, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'looks', '', '', '', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+PD9waHAgZWNobyBUZXh0OjpfKCdMaXN0IG9mIGFsbCBsb29rcycpOyA/PjwvY2FwdGlvbj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD48P3BocCBlY2hvIFRleHQ6Ol8oJ05hbWUnKTsgPz48L3RoPg0KICAgICAgICAgICAgPHRoPjw/cGhwIGVjaG8gVGV4dDo6XygnRGVzY3JpcHRpb24nKTsgPz48L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0KICAgICAgICA8P3BocCBmb3JlYWNoICgkdGhpcy0+aXRlbXMgYXMgJGl0ZW0pOiA/Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0iPD9waHAgZWNobyAgW1tbQ29tcG9uZW50XV1dSGVscGVyUm91dGU6OmdldExvb2tpbmdSb3V0ZSgkaXRlbS0+c2x1Zyk7ID8+IiA+PD9waHAgZWNobyAkaXRlbS0+bmFtZTsgPz48L2E+PC90ZD4NCiAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJGl0ZW0tPmRlc2NyaXB0aW9uLCB0cnVlLCAxMjApOyA/Pjw/cGhwIGVjaG8gJGl0ZW0tPmVkaXRMaW5rOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgPC90Ym9keT4NCjwvdGFibGU+', 'The List of all published looks', 36, '', 36, 'Looks', 'Looks', '', '', '', '', '', '', '', '', 1, '2016-04-05 14:31:59', '2016-10-20 15:57:24', 9, '', 14, 'b2dce59e-e3b8-4467-bcb5-8f2df4bdfeb7'),
(25, '', '', '', '', 1, 1, '', '', '', '', 1, '', '', '', '', 'looking', '', '', '', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bmFtZSk7ID8+PC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1tZXRhIj48P3BocCBlY2hvIFRleHQ6Ol8oJ0hpdHMnKTsgPz46IDw/cGhwIGVjaG8gJHRoaXMtPml0ZW0tPmhpdHM7ID8+PC9kaXY+DQogICAgPC9oZWFkZXI+DQogICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1ib2R5Ij4NCiAgICAgICAgPD9waHAgZWNobyAkdGhpcy0+aXRlbS0+ZGVzY3JpcHRpb247ID8+DQogICAgICAgIDw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI21vcmUtZGV0YWlscy0wOTAnfSI+PD9waHAgZWNobyBUZXh0OjpfKCdNb3JlIERldGFpbHMnKTsgPz48L2J1dHRvbj4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgPC9kaXY+DQo8L2FydGljbGU+DQo8P3BocCBpZiAoJHRoaXMtPml0ZW0tPmFkZCk6ID8+DQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibW9yZS1kZXRhaWxzLTA5MCIgY2xhc3M9InVrLW1vZGFsIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1kaWFsb2ciPg0KICAgICAgICA8YSBjbGFzcz0idWstbW9kYWwtY2xvc2UgdWstY2xvc2UiPjwvYT4NCiAgICAgICAgPGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgICAgICA8P3BocCBpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdCaXJ0aCBkYXknKTsgPz48L2R0PjxkZD48P3BocCBlY2hvIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZmFuY3lEYXRlKCR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+ZW1haWwpKTogPz4NCiAgICAgICAgICAgIDxkdD48P3BocCBlY2hvIFRleHQ6Ol8oJ0VtYWlsJyk7ID8+PC9kdD48ZGQ+PD9waHAgZWNobyAkdGhpcy0+ZXNjYXBlKCR0aGlzLT5pdGVtLT5lbWFpbCk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+bW9iaWxlX3Bob25lKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdNb2JpbGUnKTsgPz48L2R0PjxkZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPm1vYmlsZV9waG9uZSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+d2Vic2l0ZSkpOiA/Pg0KICAgICAgICAgICAgPGR0Pjw/cGhwIGVjaG8gVGV4dDo6XygnV2Vic2l0ZScpOyA/PjwvZHQ+PGRkPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+d2Vic2l0ZSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDwvZGw+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjw/cGhwIGVuZGlmOyA/Pg==', 'Looking at a look', 39, '', 39, 'Looking', 'Looking', '', 'CSAvKioNCgkgKiBJbmNyZW1lbnQgdGhlIGhpdCBjb3VudGVyIGZvciB0aGUgcHJlYWNoZXIuDQoJICoNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGsgIFByaW1hcnkga2V5IG9mIHRoZSBwcmVhY2hlciB0byBpbmNyZW1lbnQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHN1Y2Nlc3NmdWw7DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGhpdCgkcGsgPSAwKQ0KCXsNCgkJaWYgKCRwaykNCgkJew0KCQkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJICAgICRkYi0+cXVvdGVOYW1lKCdoaXRzJykgLiAnID0gJy4kZGItPnF1b3RlTmFtZSgnaGl0cycpLicgKyAxJw0KCQkJKTsNCg0KCQkJLy8gQ29uZGl0aW9ucyBmb3Igd2hpY2ggcmVjb3JkcyBzaG91bGQgYmUgdXBkYXRlZC4NCgkJCSRjb25kaXRpb25zID0gYXJyYXkoDQoJCQkgICAgJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gJyAuICRwaw0KCQkJKTsNCg0KCQkJJHF1ZXJ5LT51cGRhdGUoJGRiLT5xdW90ZU5hbWUoJyNfX1tbW2NvbXBvbmVudF1dXV9sb29rJykpLT5zZXQoJGZpZWxkcyktPndoZXJlKCRjb25kaXRpb25zKTsNCg0KCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9', 'Ly8gYWRkIGEgaGl0IHRvIHRoZSBsb29rDQppZiAoJHRoaXMtPmhpdCgkdGhpcy0+aXRlbS0+aWQpKQ0Kew0KCSR0aGlzLT5pdGVtLT5oaXRzKys7DQp9', '', '', '', '', '', 1, '2016-10-20 15:11:29', '2016-10-20 17:10:58', 16, '', 14, '851ed44e-5431-4951-876f-4b62a4c56ad2');
--
-- Dumping data for table `#__componentbuilder_layout`
--
INSERT INTO `#__componentbuilder_layout` (`id`, `add_php_view`, `alias`, `description`, `dynamic_get`, `layout`, `name`, `php_view`, `snippet`, `params`, `published`, `version`, `hits`, `ordering`, `libraries`) VALUES
(97, '', 'trashhelper', 'Trash Helper Layout', '', 'PD9waHAgaWYgKCRkaXNwbGF5RGF0YS0+c3RhdGUtPmdldCgnZmlsdGVyLnB1Ymxpc2hlZCcpID09IC0yICYmICgkZGlzcGxheURhdGEtPmNhblN0YXRlICYmICRkaXNwbGF5RGF0YS0+Y2FuRGVsZXRlKSkgOiA/Pg0KCTxzY3JpcHQ+DQoJCS8vIGNoYW5nZSB0aGUgY2xhc3Mgb2YgdGhlIGRlbGV0ZSBidXR0b24NCgkJalF1ZXJ5KCIjdG9vbGJhci1kZWxldGUgYnV0dG9uIikudG9nZ2xlQ2xhc3MoImJ0bi1kYW5nZXIiKTsNCgkJLy8gZnVuY3Rpb24gdG8gZW1wdHkgdGhlIHRyYXNoDQoJCWZ1bmN0aW9uIGVtcHR5VHJhc2goKSB7DQoJCQlpZiAoZG9jdW1lbnQuYWRtaW5Gb3JtLmJveGNoZWNrZWQudmFsdWUgPT0gMCkgew0KCQkJCS8vIHNlbGVjdCBhbGwgdGhlIGl0ZW1zIHZpc2FibGUNCgkJCQlkb2N1bWVudC5hZG1pbkZvcm0uZWxlbWVudHNbJ2NoZWNrYWxsLXRvZ2dsZSddLmNoZWNrZWQ9MTsNCgkJCQlKb29tbGEuY2hlY2tBbGwoZG9jdW1lbnQuYWRtaW5Gb3JtLmVsZW1lbnRzWydjaGVja2FsbC10b2dnbGUnXSk7DQoJCQkJLy8gY2hlY2sgdG8gY29uZmlybSB0aGUgZGVsZXRpb24NCgkJCQlpZihjb25maXJtKCc8Pz0gVGV4dDo6XygiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8gQ29uZmlybWluZyB3aWxsIHBlcm1hbmVudGx5IGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbShzKSEiKSA/PicpKSB7DQoJCQkJCUpvb21sYS5zdWJtaXRidXR0b24oJzw/PSAkZGlzcGxheURhdGEtPmdldCgibmFtZSIpID8+LmRlbGV0ZScpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWRvY3VtZW50LmFkbWluRm9ybS5lbGVtZW50c1snY2hlY2thbGwtdG9nZ2xlJ10uY2hlY2tlZD0wOw0KCQkJCQlKb29tbGEuY2hlY2tBbGwoZG9jdW1lbnQuYWRtaW5Gb3JtLmVsZW1lbnRzWydjaGVja2FsbC10b2dnbGUnXSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkvLyBjb25maXJtIGRlbGV0aW9uIG9mIHRob3NlIHNlbGVjdGVkDQoJCQkJaWYgKGNvbmZpcm0oJzw/PSBUZXh0OjpfKCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPyBDb25maXJtaW5nIHdpbGwgcGVybWFuZW50bHkgZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtKHMpISIpID8+JykpIHsNCgkJCQkJSm9vbWxhLnN1Ym1pdGJ1dHRvbignPD89ICRkaXNwbGF5RGF0YS0+Z2V0KCJuYW1lIikgPz4uZGVsZXRlJyk7DQoJCQkJfTsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkvLyBmdW5jdGlvbiB0byBleGl0IHRoZSB0YXNoIHN0YXRlDQoJCWZ1bmN0aW9uIGV4aXRUcmFzaCgpIHsNCgkJCWRvY3VtZW50LmFkbWluRm9ybS5maWx0ZXJfcHVibGlzaGVkLnNlbGVjdGVkSW5kZXggPSAwOw0KCQkJZG9jdW1lbnQuYWRtaW5Gb3JtLnN1Ym1pdCgpOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJPC9zY3JpcHQ+DQoJPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZXJyb3IiPg0KCQk8P3BocCBpZiAoZW1wdHkoJGRpc3BsYXlEYXRhLT5pdGVtcykpOiA/Pg0KCQkJPGg0IGNsYXNzPSJhbGVydC1oZWFkaW5nIj4NCgkJCQk8c3BhbiBjbGFzcz0iaWNvbi10cmFzaCI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJUcmFzaCBBcmVhIikgPz4NCgkJCTwvaDQ+DQoJCQk8cD48Pz0gVGV4dDo6XygiWW91IGFyZSBjdXJyZW50bHkgdmlld2luZyB0aGUgdHJhc2ggYXJlYSwgYW5kIHlvdSBkb24ndCBoYXZlIGFueSBpdGVtcyBpbiB0cmFzaCBhdCB0aGUgbW9tZW50ISIpID8+PC9wPg0KCQk8P3BocCBlbHNlOiA/Pg0KCQkJPGg0IGNsYXNzPSJhbGVydC1oZWFkaW5nIj4NCgkJCQk8c3BhbiBjbGFzcz0iaWNvbi10cmFzaCI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJUcmFzaGVkIGl0ZW1zIikgPz4NCgkJCTwvaDQ+DQoJCQk8cD48Pz0gVGV4dDo6XygiWW91IGFyZSBjdXJyZW50bHkgdmlld2luZyB0aGUgdHJhc2hlZCBpdGVtcy4iKSA/PjwvcD4NCgkJCTxidXR0b24gb25jbGljaz0iZW1wdHlUcmFzaCgpOyIgY2xhc3M9ImJ0biBidG4tc21hbGwgYnRuLWRhbmdlciI+DQoJCQkJPHNwYW4gY2xhc3M9Imljb24tZGVsZXRlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJFbXB0eSB0cmFzaCIpID8+DQoJCQk8L2J1dHRvbj4NCgkJPD9waHAgZW5kaWY7ID8+DQoJCTxidXR0b24gb25jbGljaz0iZXhpdFRyYXNoKCk7IiBjbGFzcz0iYnRuIGJ0bi1zbWFsbCI+DQoJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYWNrIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPg0KCQkJPD89IFRleHQ6Ol8oIkV4aXQgdHJhc2giKSA/Pg0KCQk8L2J1dHRvbj4NCgk8L2Rpdj4NCjw/cGhwIGVuZGlmOyA/Pg==', 'Trash Helper', '', '', '', 1, 8, '', 27, '');
--
-- Dumping data for table `#__componentbuilder_dynamic_get`
--
INSERT INTO `#__componentbuilder_dynamic_get` (`id`, `add_php_after_getitem`, `add_php_before_getitem`, `add_php_after_getitems`, `add_php_before_getitems`, `add_php_getlistquery`, `php_after_getitem`, `php_before_getitem`, `php_before_getitems`, `php_getlistquery`, `php_after_getitems`, `pagination`, `addcalculation`, `db_selection`, `db_table_main`, `filter`, `getcustom`, `gettype`, `global`, `join_db_table`, `join_view_table`, `main_source`, `name`, `order`, `php_calculation`, `php_custom_get`, `view_selection`, `view_table_main`, `where`, `php_router_parse`, `group`, `params`, `published`, `version`, `hits`, `ordering`, `guid`) VALUES
(36, '', '', 1, '', '', '', '', '', '', 'CQkvLyBkbyBhIHF1aWNrIGJ1aWxkIG9mIGFsbCBlZGl0IGxpbmtzIGxpbmtzDQoJCWlmIChpc3NldCgkaXRlbXMpICYmICRpdGVtcykNCgkJew0KCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRuciA9PiAmJGl0ZW0pDQoJCQl7DQoJCQkJJGNhbkRvID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRBY3Rpb25zKCdsb29rJywkaXRlbSwnbG9va3MnKTsNCgkJCQlpZiAoJGNhbkRvLT5nZXQoJ2xvb2suZWRpdCcpKQ0KCQkJCXsNCgkJCQkJJGl0ZW0tPmVkaXRMaW5rID0gJzxiciAvPjxiciAvPjxhIGNsYXNzPSJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnkgdWstd2lkdGgtMS0xIiBocmVmPSInOw0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgLj0gSm9vbWxhX19fZDRjNzYwOTlfNGMzMl80MDhhXzg3MDFfZDBhNzI0NDg0ZGZkX19fUG93ZXI6Ol8oJ2luZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ2aWV3PWxvb2smdGFzaz1sb29rLmVkaXQmaWQ9JyAuICRpdGVtLT5pZCk7DQoJCQkJCSRpdGVtLT5lZGl0TGluayAuPSAnIj48aSBjbGFzcz0idWstaWNvbi1wZW5jaWwiPjwvaT48c3BhbiBjbGFzcz0idWstaGlkZGVuLXNtYWxsIj4nOw0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgLj0gVGV4dDo6XygnRWRpdCBMb29rJyk7DQoJCQkJCSRpdGVtLT5lZGl0TGluayAuPSAnPC9zcGFuPjwvYT4nOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgPSAnJzsNCgkJCQl9DQoJCQl9DQoJCX0=', 1, '', '', '', '', '', 2, '', '', '', 1, 'Looks', '{\"order0\":{\"table_key\":\"a.name\",\"direction\":\"ASC\"}}', '', '', 'a.*', 109, '{\"where0\":{\"table_key\":\"a.published\",\"operator\":\"1\",\"value_key\":\"1\"}}', '', '', '', 1, 12, '', 13, '32b3ae7d-8aa8-47f1-ab2e-30076ddaa029'),
(39, '', '', '', '', '', '', '', '', '', '', 1, '', '', '', '{\"filter0\":{\"filter_type\":\"1\",\"state_key\":\"id\",\"operator\":\"1\",\"table_key\":\"a.id\"}}', '', 1, '', '', '', 1, 'Looking', '', '', '', 'a.id AS id\r\na.name AS name\r\na.alias AS alias\r\na.description AS description\r\na.add AS add\r\na.email AS email\r\na.mobile_phone AS mobile_phone\r\na.dateofbirth AS dateofbirth\r\na.image AS image\r\na.website AS website\r\na.published AS published\r\na.hits AS hits\r\na.created_by AS created_by', 109, '', '', '', '', 1, 8, '', '', '98e6ea56-0911-4d89-b1f4-8f0bb1e4aa5a');
--
-- Dumping data for table `#__componentbuilder_library`
--
INSERT INTO `#__componentbuilder_library` (`id`, `addconditions`, `description`, `type`, `how`, `name`, `php_setdocument`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `libraries`, `params`, `guid`) VALUES
(1, '', '', 1, '', 'No Library', '', 1, '2017-11-11 22:08:33', '2017-12-08 15:51:34', 4, '', 1, '', '', 'bc8e675d-7536-4a68-b186-fb4b988fa3e2'),
(2, '', '', 1, 1, 'Bootstrap v4', '', 1, '2017-11-12 02:08:39', '2017-12-17 09:04:10', 18, '', 2, '', '', '6f6650a5-ebff-4783-8508-f0285c0e98a6'),
(3, '{}', '', 1, 1, 'Uikit v3', '', 1, '2017-11-11 22:08:45', '2021-05-27 00:18:36', 20, '', 3, '', '', '5eeee148-cebd-4a92-bc0e-56efea3cffdc'),
(4, '', '', 1, 4, 'Uikit v2', '', 1, '2017-11-11 22:08:51', '2018-06-29 02:36:17', 6, '', 4, '', '', '367fbf66-890e-42a7-a82d-f780d2f86786'),
(5, '', '', 1, 4, 'FooTable v2', '', 1, '2017-11-11 22:08:57', '2017-12-11 20:07:32', 9, '', 5, '', '', 'a90edd5a-8521-4fb1-b6b3-9a21e9f56642'),
(6, '', '', 1, 4, 'FooTable v3', '', 1, '2017-11-25 22:11:03', '2017-12-10 15:54:45', 12, '', 6, '', '', '86829029-dc8a-424e-b046-b189a92565d9');
--
-- Dumping data for table `#__componentbuilder_snippet`
--
INSERT INTO `#__componentbuilder_snippet` (`id`, `contributor_company`, `contributor_email`, `contributor_name`, `contributor_website`, `description`, `heading`, `library`, `name`, `snippet`, `type`, `url`, `usage`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(1, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The grid system of UIkit follows the mobile-first approach and accomodates up to 10 grid columns. It uses units with predefined classes inside each grid, which define the column width. It is also possible to combine the grid with classes from the Flex component, although it works only in modern browsers.', 'Create a fully responsive, fluid and nestable grid layout.', 4, 'Grid', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ0bS1ncmlkLXRydW5jYXRlIHVrLWdyaWQgdWstZ3JpZC1kaXZpZGVyIHVrLXRleHQtY2VudGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid.html', 'To create the grid container, add the .uk-grid class to a parent element. Add one of the .uk-width-* classes to child elements to determine, how the units shall be sized. The grid supports 1, 2, 3, 4, 5, 6 and 10 unit divisions. This table gives you an overview of the uk-width-* classes that can be applied to units.', '', 1, '2015-05-19 17:18:32', '2017-11-11 22:09:27', 77, '', 1, 'fba0aa3f-03e4-49e7-92b6-9d5e98f66967'),
(2, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'UIkit uses panels to outline certain sections of your content, which can be styled differently. Typically, panels are arranged in grid columns from the Grid component.', 'Create layout boxes with different styles.', 4, 'Panel', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgICAgIDxoMyBjbGFzcz0idWstcGFuZWwtdGl0bGUiPnt0aXRsZX08L2gzPg0KICAgICAgICAgICAge2NvbnRlbnR9DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPg0KICAgICAgICAgICAgPGgzIGNsYXNzPSJ1ay1wYW5lbC10aXRsZSI+e3RpdGxlfTwvaDM+DQogICAgICAgICAgICB7Y29udGVudH0NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/panel.html', 'The Panel component consists of the panel itself, the panel title and a panel badge. To prevent redundant white space, top and bottom margins are removed from the panel\'s content.', '', 1, '2015-05-19 20:04:54', '2017-11-11 22:09:27', 70, '', 1, '4b6e7ee3-75d9-459a-805e-764915247253'),
(3, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Separate content sections by bundling them in blocks with different styles.', 4, 'Block', 'PGRpdiBjbGFzcz0idWstYmxvY2sgdWstYmxvY2stcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+', 1, 'http://getuikit.com/docs/block.html', 'To apply this component, just add the .uk-block class to a container element.', '', 1, '2015-05-19 20:09:41', '2017-11-11 22:09:27', 56, '', 2, 'cf2eb2fa-38d1-431c-9383-939c58becd7a'),
(4, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create articles within your page.', 4, 'Article', 'PGFydGljbGUgY2xhc3M9InVrLWFydGljbGUiPg0KICAgIDxoMSBjbGFzcz0idWstYXJ0aWNsZS10aXRsZSI+e3RpdGxlfTwvaDE+DQogICAgPHAgY2xhc3M9InVrLWFydGljbGUtbWV0YSI+e21ldGF9PC9wPg0KICAgIDxwIGNsYXNzPSJ1ay1hcnRpY2xlLWxlYWQiPntjb250ZW50fTwvcD4NCiAgICB7Y29udGVudH0NCiAgICA8aHIgY2xhc3M9InVrLWFydGljbGUtZGl2aWRlciI+DQogICAge2NvbnRlbnR9DQo8L2FydGljbGU+', 1, 'http://getuikit.com/docs/article.html', 'The article component consists of the article itself, a title, meta data, an opening paragraph and dividers.', '', 1, '2015-05-19 20:12:06', '2017-11-11 22:09:27', 53, '', 3, 'ced3bf82-0a72-4acd-a1f5-471959993f2b'),
(5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create comments, for example about articles.', 4, 'Comment', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPnt0aXRsZX08L2g0Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1jb21tZW50LW1ldGEiPnttZXRhfTwvZGl2Pg0KICAgIDwvaGVhZGVyPg0KICAgIDxkaXYgY2xhc3M9InVrLWNvbW1lbnQtYm9keSI+e3RpdGxlfTwvZGl2Pg0KPC9hcnRpY2xlPg==', 1, 'http://getuikit.com/docs/comment.html', 'The Comment component consists of a comment header, including an avatar, a title and meta data, and a comment body.', '', 1, '2015-05-19 20:13:53', '2017-11-11 22:09:27', 54, '', 4, '29e9ecf1-0646-44a6-a226-37cfdd4242dc'),
(6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful utility classes to style your content.', 4, 'Utility Container', 'PGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiB1ay1jb250YWluZXItY2VudGVyIj57Y29udGVudH08L2Rpdj4=', 1, 'http://getuikit.com/docs/utility.html', 'Add the .uk-container class to a block element to give it a max-width and wrap the main content of your website. For large screens it applies a different max-width.\r\n\r\nTo center the container, use the .uk-container-center class. For any other block element, you additionally need to apply a width.', '', 1, '2015-05-19 20:18:00', '2017-11-11 22:09:27', 56, '', 5, '18735087-2ad0-465b-9468-bfac52b56721'),
(7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful utility classes to style your content.', 4, 'Utility Clearing and floating', 'PGRpdiBjbGFzcz0idWstY2xlYXJmaXgiPg0KICAgIDxkaXYgY2xhc3M9InVrLWZsb2F0LXJpZ2h0Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1mbG9hdC1sZWZ0Ij57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/utility.html', 'Floating is fundamental for creating all kinds of layouts. But floats need to be cleared or in the worst case, you might end up with a scrambled site. The following classes will help you to setup basic layouts.', '', 1, '2015-05-19 20:18:54', '2017-11-11 22:09:27', 54, '', 5, '24e36964-a3ba-416d-93f5-be56c0e30231'),
(8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component uses Flexbox, a concept that is still quite new but extremely powerful for creating layouts.', 'Utilize the power of Flexbox to create a wide range of layouts.', 4, 'Flex', 'PGRpdiBjbGFzcz0idWstZmxleCB1ay1mbGV4LXdyYXAgdWstZmxleC13cmFwLXJldmVyc2UgdWstZmxleC13cmFwLXNwYWNlLWFyb3VuZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/flex.html', 'To apply this component, just add the .uk-flex class to a element. This will create the flex container. By default, all flex items will be aligned to the left and equally matched in height and width.', '', 1, '2015-05-19 20:22:23', '2017-11-11 22:09:27', 55, '', 5, '7725158d-f8b6-4fc3-ada7-0cd994f98ce5'),
(9, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component allows you to create fullscreen teasers using images, objects or even iframes. Regardless what kind of element, it will always be centered vertically and horizontally and cover its container without losing its proportions. You can also place additional content, like text or an image, on top of the image or video.', 'Expand images or videos to cover their entire container.', 4, 'Cover', 'PGRpdiBjbGFzcz0idWstY292ZXIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InVrLWNvdmVyIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IHVrLXBvc2l0aW9uLWFic29sdXRlIiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDxkaXYgY2xhc3M9InVrLXBvc2l0aW9uLWNvdmVyIHVrLWZsZXggdWstZmxleC1jZW50ZXIgdWstZmxleC1taWRkbGUiPntjb250ZW50fTwvZGl2Pg0KPC9kaXY+', 1, 'http://getuikit.com/docs/cover.html', 'The Cover component is applied differently, depending on whether you are using a background image, an object or an iframe. The simplest way is to add the .uk-cover-background class to a element with a background image.', '', 1, '2015-05-19 20:29:57', '2017-11-11 22:09:27', 54, '', 5, '2ca20d4d-82d3-412d-bada-95c2ba0d9bb0'),
(10, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Dynamic Grid component allows you to create a dynamic and responsive grid layout utilizing the Grid component. Grid items will arrange themselves fluently and seamlessly for a gap-free multi-column layout on all device sizes.', 'Create a multi-column, dynamic grid layout whose items can be sorted and filtered.', 4, 'Dynamic Grid', 'PCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay13aWR0aC0qIG9uIGVhY2ggaXRlbSAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLXNtYWxsLTEtMiB1ay13aWR0aC1tZWRpdW0tMS00Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1zbWFsbC0xLTIgdWstd2lkdGgtbWVkaXVtLTEtNCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay1ncmlkLXdpZHRoLSogb24gdGhlIGdyaWQgaXRzZWxmIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZC13aWR0aC1zbWFsbC0xLTIgdWstZ3JpZC13aWR0aC1tZWRpdW0tMS00IiBkYXRhLXVrLWdyaWQ+DQogICAgPGRpdj57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2Pntjb250ZW50fTwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gRmlsdGVyIENvbnRyb2xzIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN1Ym5hdiI+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSIiPjxhIGhyZWY9IiI+QWxsPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSJmaWx0ZXItYSI+PGEgaHJlZj0iIj5BIEZpbHRlcjwvYT48L2xpPg0KICAgIDxsaSBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWIiPjxhIGhyZWY9IiI+YiBGaWx0ZXI8L2E+PC9saT4NCjwvdWw+DQo8IS0tIER5bmFtaWMgR3JpZCAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPSJ7Y29udHJvbHM6ICcjbXktaWQnfSI+DQogICAgPGRpdiBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWEiPntjb250ZW50fTwvZGl2Pg0KICAgIDxkaXYgZGF0YS11ay1maWx0ZXI9ImZpbHRlci1iIj57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid-js.html', 'To apply this component, add the data-uk-grid attribute to the container element. Set the width of the grid items by using the uk-width-* or .uk-grid-width-* classes from the Grid component.', '', 1, '2015-05-19 20:35:29', '2017-11-11 22:09:27', 53, '', 5, 'c7824206-e8db-4c3d-a910-5e0735fdb74b'),
(11, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for list navigations.', 4, 'Nav', 'PHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LXNpZGUiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQo8L3VsPg==', 2, 'http://getuikit.com/docs/nav.html', 'To apply this component, add the .uk-nav class to an element. Use elements as menu items within the list. To apply an active state to a menu item, just add the .uk-active class.', '', 1, '2015-05-19 20:39:09', '2017-11-11 22:09:27', 53, '', 6, '5e214ba9-2152-4192-9f26-143346ed8090'),
(12, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for the navigation bar.', 4, 'Navbar', 'PG5hdiBjbGFzcz0idWstbmF2YmFyIj4NCiAgICA8dWwgY2xhc3M9InVrLW5hdmJhci1uYXYiPg0KICAgICAgICA8bGkgY2xhc3M9InVrLWFjdGl2ZSI+PGEgaHJlZj0iIj5BY3RpdmU8L2E+PC9saT4NCiAgICAgICAgPGxpPjxhIGhyZWY9IiI+SXRlbTwvYT48L2xpPg0KICAgICAgICA8bGkgZGF0YS11ay1kcm9wZG93bj0iIiBjbGFzcz0idWstcGFyZW50IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+DQogICAgICAgICAgICA8YSBocmVmPSIiPlBhcmVudDwvYT4NCiAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVrLWRyb3Bkb3duIHVrLWRyb3Bkb3duLW5hdmJhciIgc3R5bGU9IiI+DQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LW5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1ay1uYXYtaGVhZGVyIj5IZWFkZXI8L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+QW5vdGhlciBpdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWRpdmlkZXIiPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICANCiAgICAgICAgPC9saT4NCiAgICA8L3VsPg0KPC9uYXY+', 2, 'http://getuikit.com/docs/navbar.html', 'The Navbar component consists of the navbar itself and one or more navigations.', '', 1, '2015-05-19 20:41:10', '2017-11-11 22:09:27', 53, '', 6, '431dd68d-40cf-4b3b-9cce-b743a7f36ac3'),
(13, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for a sub navigation.', 4, 'Subnav', 'PHVsIGNsYXNzPSJ1ay1zdWJuYXYgdWstc3VibmF2LXBpbGwiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0idWstZGlzYWJsZWQiPjxhIGhyZWY9IiMiPkRpc2FibGVkPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZHJvcGRvd249Inttb2RlOidjbGljayd9Ij4NCiAgICAgICAgPGEgaHJlZj0iIyI+TW9yZSA8aSBjbGFzcz0idWstaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1kcm9wZG93biB1ay1kcm9wZG93bi1zbWFsbCI+DQogICAgICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkFub3RoZXIgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWhlYWRlciI+SGVhZGVyPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVrLW5hdi1kaXZpZGVyIj48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/subnav.html', 'To apply this component, use the following classes. To align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, '2015-05-19 20:42:37', '2017-11-11 22:09:27', 53, '', 6, 'b8f8835d-ffe4-4b0f-ad69-a7e847dbedbd'),
(14, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create breadcrumbs to show users their location within a website.', 4, 'Breadcrumb', 'PHVsIGNsYXNzPSJ1ay1icmVhZGNydW1iIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5CbG9nPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPkNhdGVnb3J5PC9zcGFuPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPlBvc3Q8L3NwYW4+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/breadcrumb.html', 'The Breadcrumb component consists of links which are aligned side by side and separated by a divider.', '', 1, '2015-05-19 20:44:01', '2017-11-11 22:09:27', 53, '', 6, 'c1cccf2b-84c3-46de-81f1-0ca5f2bfd13d'),
(15, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easlily create a nicely looking pagination to navigate through pages.', 4, 'Pagination', 'PHVsIGNsYXNzPSJ1ay1wYWdpbmF0aW9uIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+MTwvYT48L2xpPg0KICAgIDxsaT48c3Bhbj4uLi48L3NwYW4+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+ODwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj45PC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPjEwPC9zcGFuPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjExPC9hPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjEyPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPi4uLjwvc3Bhbj48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj4yMDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/pagination.html', 'The Pagination component consists of button-like styled links, that are aligned side by side.', '', 1, '2015-05-19 20:45:49', '2017-11-11 22:09:27', 53, '', 6, '597e8806-9e28-4411-9a94-61d874d2ac0e'),
(16, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a tabbed navigation with different styles.', 4, 'Tab', 'PHVsIGNsYXNzPSJ1ay10YWIiIGRhdGEtdWstdGFiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIiPkFjdGl2ZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPkl0ZW08L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIj5JdGVtPC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1kaXNhYmxlZCI+PGEgaHJlZj0iIj5EaXNhYmxlZDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/tab.html', 'The Tab component consists of clickable tabs, that are aligned side by side.\r\n\r\nThe data-uk-tab attribute is required for two purposes. Firstly, it enables the responsive behaviour. If the parent container is too small to accomodate all tabs, they will be combined into a dropdown, toggled by a single tab, which represents the active tab item. This also requires the Dropdown component in order to work.\r\n\r\nAnd secondly, its functionality is coupled to the Switcher component, which is necessary to dynamically transition through different contents using tabbed navigation.', '', 1, '2015-05-19 20:47:34', '2017-11-11 22:09:27', 55, '', 6, '690739e8-9547-472c-a4e7-c9362321b37b'),
(17, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a tabbed navigation with different styles.', 4, 'Thumbnav', 'PHVsIGNsYXNzPSJ1ay10aHVtYm5hdiI+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxhIGhyZWY9IiI+PGltZyBzcmM9IiIgYWx0PSIiPjwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPjxpbWcgc3JjPSIiIGFsdD0iIj48L2E+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/thumbnav.html', 'To apply this component, add the .uk-thumbnav class to an element and nest your thumbnail images inside elements within the list items. The thumbnav will wrap into several rows, if it is wider than its container and automatically applies a gutter. Add the .uk-active class to create an active state.\r\n\r\nTo align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, '2015-05-19 20:48:42', '2017-11-11 22:09:27', 54, '', 6, '0e405e4f-4701-46e1-8631-8ce5e13736de'),
(18, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Modifiers\r\n\r\nTo display the list in a different style, just add a modifier class to the the .uk-list class. The modifiers of the List component are not combinable with each other.', 'Easily create nicely looking lists, which come in different styles.', 4, 'List', 'PHVsIGNsYXNzPSJ1ay1saXN0IHVrLWxpc3Qtc3RyaXBlZCI+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 3, 'http://getuikit.com/docs/list.html', 'To apply this component, add the .uk-list class to an unordered or ordered list. The list will now display without any spacing or list-style. [uk-list-line] [uk-list-space]', '', 1, '2015-06-01 16:09:04', '2017-11-11 22:09:27', 3, '', 6, '74ab3937-65e0-4dab-9eb1-2ff87554bdde'),
(19, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Add the .uk-description-list-horizontal class to display terms and descriptions side by side.', 'Easily create nicely looking description lists, which come in different styles.', 4, 'Description list', 'PGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgIDxkdD4uLi48L2R0Pg0KICAgIDxkZD4uLi48L2RkPg0KPC9kbD4=', 3, 'http://getuikit.com/docs/description-list.html', 'There is no component class necessary to create a description list, but UIkit provides a couple of modifier classes to display the list in a different style. The modifiers of the Description list component are not combinable with each other. [uk-description-list-line]', '', 1, '2015-06-01 16:10:54', '2017-11-11 22:09:27', 54, '', 6, 'dae0a910-056d-4e04-b603-43c23d705c1a'),
(20, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking tables, which come in different styles.', 4, 'Table', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+Li4uPC9jYXB0aW9uPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPi4uLjwvdGg+DQogICAgICAgIDwvdHI+DQogICAgPC90aGVhZD4NCiAgICA8dGZvb3Q+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD4uLi48L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGZvb3Q+DQogICAgPHRib2R5Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+Li4uPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4=', 3, 'http://getuikit.com/docs/table.html', 'To apply this component, add the .uk-table class to a element.', '', 1, '2015-06-01 16:12:46', '2017-11-11 22:09:27', 53, '', 6, 'b0f501cf-ca6c-4261-bf4c-dc10e036a259'),
(21, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button href', 'PGEgY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSIgaHJlZj0iIj4uLi48L2E+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:17:24', '2017-11-11 22:09:27', 11, '', 7, '0a0ed2e9-ab18-472b-899b-6209b60aff08'),
(22, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button primary', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:18:37', '2017-11-11 22:09:27', 10, '', 7, 'efaae1eb-1cb7-4761-84b7-a804c1b09b15'),
(23, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button disabled', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiB0eXBlPSJidXR0b24iIGRpc2FibGVkPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:18:53', '2017-11-11 22:09:27', 10, '', 7, 'b47d9020-eb39-45d4-a6e4-33b28ca51ac7'),
(24, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button success', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:19:15', '2017-11-11 22:09:27', 10, '', 7, 'd1686780-d1d4-4732-8a0f-184bc29e96ac'),
(25, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button danger', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1kYW5nZXIiIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:19:28', '2017-11-11 22:09:27', 10, '', 7, 'aaa1d48e-1f21-4f69-b503-27d462070d29'),
(26, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button mini', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1taW5pIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:20:06', '2017-11-11 22:09:27', 10, '', 7, '5f6cfab0-c011-4f01-b4a2-a6e5712b3df1'),
(27, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button small', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIHVrLWJ1dHRvbi1zbWFsbCIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:20:37', '2017-11-11 22:09:27', 10, '', 7, 'c91a3e7d-d56c-43d5-90bf-5d0a436a92ea'),
(28, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button large', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1sYXJnZSIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:20:58', '2017-11-11 22:09:27', 10, '', 7, '29cbadf8-661a-479f-b219-60fbcfb819d9'),
(29, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button full width', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLXdpZHRoLTEtMSB1ay1tYXJnaW4tc21hbGwtYm90dG9tIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:21:28', '2017-11-11 22:09:27', 10, '', 7, '1077c3fd-a993-4b8b-97a1-72f82327366c'),
(30, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button group', 'PGRpdiBjbGFzcz0idWstYnV0dG9uLWdyb3VwIj4NCiAgICA8YSBjbGFzcz0idWstYnV0dG9uIiBocmVmPSIiPi4uLjwvYT4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iPi4uLjwvYnV0dG9uPg0KICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:21:42', '2017-11-11 22:09:27', 10, '', 7, '8cb09ac8-95c5-4eaa-a6c2-849f74bf5767'),
(31, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button dropdowns', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgZW5hYmxpbmcgdGhlIEphdmFTY3JpcHQgLS0+DQo8ZGl2IGNsYXNzPSJ1ay1idXR0b24tZHJvcGRvd24iIGRhdGEtdWstZHJvcGRvd24+DQoNCiAgICA8IS0tIFRoaXMgaXMgdGhlIGJ1dHRvbiB0b2dnbGluZyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIj4uLi48L2J1dHRvbj4NCg0KICAgIDwhLS0gVGhpcyBpcyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGRpdiBjbGFzcz0idWstZHJvcGRvd24gdWstZHJvcGRvd24tc21hbGwiPg0KICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCg0KPC9kaXY+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, '2015-06-01 16:22:52', '2017-11-11 22:09:27', 10, '', 7, '5b5ebfa4-408c-4b5e-9d28-a6370c944bdc'),
(32, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component is using the fantastic Font Awesome icon font, a project by Dave Gandy. Altogether Font Awesome provides more than 300 symbols and glyphs for web-related actions. Icon fonts are great, because they enable you to easily change color, size and more via CSS. They are scalable vector graphics, which means that they look great on high-resolution displays.', 'Place vector icons anywhere using an icon font.', 4, 'Icon', 'PGkgY2xhc3M9InVrLWljb24tY29nIj48L2k+', 4, 'http://getuikit.com/docs/icon.html', 'To apply this component, add any .uk-icon-* class to an or element. Et voilà, you have a vector icon, which inherits size and color just like your text does.', '', 1, '2015-06-01 16:24:46', '2017-11-11 22:09:27', 10, '', 8, 'df1fa1bc-231e-4f67-be48-f9ea6812ae3d'),
(33, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easlily create nicely looking badges to label and highlight your content.', 4, 'Badge', 'PGRpdiBjbGFzcz0idWstYmFkZ2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To create a badge, just add the .uk-badge class to a or element.', '', 1, '2015-06-01 16:25:53', '2017-11-11 22:09:27', 10, '', 8, '20532a80-6b61-4b5d-a861-05dbc4d82e02'),
(34, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines styles for success, warning and error messages.', 4, 'Alert', 'PGRpdiBjbGFzcz0idWstYWxlcnQgdWstYWxlcnQtc3VjY2VzcyIgZGF0YS11ay1hbGVydD4NCiAgICA8YSBocmVmPSIiIGNsYXNzPSJ1ay1hbGVydC1jbG9zZSB1ay1jbG9zZSI+PC9hPg0KICAgIDxwPi4uLjwvcD4NCjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To apply this component, add the .uk-alert class to a block element.', '', 1, '2015-06-01 16:26:54', '2017-11-11 22:09:27', 10, '', 8, '9b0e4beb-680a-412b-a477-391cdb81c844'),
(35, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text small', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc21hbGwiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:02', '2017-11-11 22:09:27', 10, '', 8, '8516fb71-8f10-4828-a670-af861fd8aae5'),
(36, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text large', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbGFyZ2UiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:14', '2017-11-11 22:09:27', 10, '', 8, '6188947b-c807-4ab7-8960-51a1d808efcb'),
(37, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text bold', 'PHNwYW4gY2xhc3M9InVrLXRleHQtYm9sZCI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:24', '2017-11-11 22:09:27', 10, '', 8, 'adabb157-ec5d-4c62-857f-2d89e77815e2'),
(38, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text muted', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbXV0ZWQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:36', '2017-11-11 22:09:27', 10, '', 8, 'bb0b4ed1-5fb2-4799-9645-9d878d8d86a7'),
(39, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text primary', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcHJpbWFyeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:46', '2017-11-11 22:09:27', 10, '', 8, '02d1e0d7-d461-46f2-b7d5-4c6d95558e11'),
(40, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text success', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc3VjY2VzcyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:57', '2017-11-11 22:09:27', 10, '', 8, 'f6a191bb-ef7a-4a91-823a-466200d35b4d'),
(41, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text warning', 'PHNwYW4gY2xhc3M9InVrLXRleHQtd2FybmluZyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:09', '2017-11-11 22:09:27', 10, '', 8, 'd3a259e2-9839-4922-98d1-ef7ddf03da6b'),
(42, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text danger', 'PHNwYW4gY2xhc3M9InVrLXRleHQtZGFuZ2VyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:19', '2017-11-11 22:09:27', 10, '', 8, '0994d67d-401e-49e1-a7ad-68f8c3c0460a'),
(43, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text contrast', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY29udHJhc3QiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:31', '2017-11-11 22:09:27', 10, '', 8, 'a5931e90-0d0e-4c60-8485-ae8b5620d540'),
(44, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text right', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcmlnaHQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:18', '2017-11-11 22:09:27', 10, '', 8, '24d3dcc3-5ac3-4366-85b8-0a75cac6cef9'),
(45, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text center', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY2VudGVyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:30', '2017-11-11 22:09:27', 10, '', 8, '2ced9267-0326-440e-85e7-3ac8911fbbf5'),
(46, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text justify', 'PHNwYW4gY2xhc3M9InVrLXRleHQtanVzdGlmeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:41', '2017-11-11 22:09:27', 10, '', 8, '79acfaa7-7a31-441e-8830-3f63c1e1aa54'),
(47, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text truncate', 'PHNwYW4gY2xhc3M9InVrLXRleHQtdHJ1bmNhdGUiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:32:17', '2017-11-11 22:09:27', 10, '', 8, '0f43f9ec-98d6-4856-be34-f4e852520bf8'),
(48, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text nowrap', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbm93cmFwIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:32:30', '2017-11-11 22:09:27', 10, '', 8, '5489c68b-4926-43f3-980b-e5b251f10ac8'),
(49, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation fade', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:33:49', '2017-11-11 22:09:27', 10, '', 8, '6cba0fb7-f790-4ad2-ba03-2cdca25a8dd9'),
(50, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-up', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:02', '2017-11-11 22:09:27', 10, '', 8, '11df7f35-5e63-43e1-96ef-f2a0f58bef19'),
(51, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-down', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24iPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:11', '2017-11-11 22:09:27', 10, '', 8, '1b4c533e-94f6-4a55-81a2-1370c088582d'),
(52, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-top', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:22', '2017-11-11 22:09:27', 10, '', 8, '8fc46f20-9783-42cb-92e2-3e0fc5a875c7'),
(53, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-bottom', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:34', '2017-11-11 22:09:27', 10, '', 8, '2d8ed2c0-20af-4c3e-8e0a-fea75fdce181'),
(54, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-left', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:46', '2017-11-11 22:09:27', 10, '', 8, '0bb64e85-6438-4aac-9f60-ad9c8f3c522b'),
(55, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-right', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0Ij4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:57', '2017-11-11 22:09:27', 10, '', 8, 'cc303d9d-7940-433f-a918-e46b937f34b6'),
(56, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation shake', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNoYWtlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:35:08', '2017-11-11 22:09:27', 10, '', 8, 'b688ea4a-23b3-470c-b499-dedac36a9c19'),
(57, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:35:19', '2017-11-11 22:09:27', 10, '', 8, '997b5991-5be8-4efb-b5e6-1ae988ea4f4a'),
(58, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation fade reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:37:24', '2017-11-11 22:09:27', 11, '', 8, '6bfd3c02-d4f2-464a-a61b-040324d96789'),
(59, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-up reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:38:33', '2017-11-11 22:09:27', 10, '', 8, '71296148-4c2f-4c69-bbc8-de50d76dc6c8'),
(60, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-down reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24gdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:38:49', '2017-11-11 22:09:27', 10, '', 8, 'a5c4eadc-e98a-45e1-9c88-d9f761256c88'),
(61, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-top reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:02', '2017-11-11 22:09:27', 10, '', 8, '79766303-ff2d-465c-8b4a-a2d2cae268e4'),
(62, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-bottom reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:13', '2017-11-11 22:09:27', 10, '', 8, 'c20f18a6-74b4-4368-be0b-52d532500f79'),
(63, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-left reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:26', '2017-11-11 22:09:27', 10, '', 8, 'f4dfb5f9-33ed-4cfc-baab-4f6e3f80fa19'),
(64, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-right reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0IHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:38', '2017-11-11 22:09:27', 10, '', 8, '735a91e2-6867-43a7-ad66-cb6576018bfe'),
(65, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:40:02', '2017-11-11 22:09:27', 10, '', 8, '918eaa08-13ff-4d7b-b691-2ced6afde21e'),
(66, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGEgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIj48L2E+DQogICAgICAgIC4uLg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:57:08', '2017-11-11 22:09:27', 10, '', 8, '732ecce3-c923-4221-ab04-d7f424b8cd1e'),
(67, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal header-footer', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstbW9kYWwtaGVhZGVyIj4uLi48L2Rpdj4NCiAgICAgICAgLi4uDQogICAgICAgIDxkaXYgY2xhc3M9InVrLW1vZGFsLWZvb3RlciI+Li4uPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:57:50', '2017-11-11 22:09:27', 10, '', 8, 'a0114851-724e-4bb1-b617-f44b33abafde'),
(68, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal image', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIHVrLW1vZGFsLWRpYWxvZy1saWdodGJveCI+DQogICAgICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIHVrLWNsb3NlLWFsdCI+PC9hPg0KICAgICAgICA8aW1nIHNyYz0iIiBhbHQ9IiI+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:58:26', '2017-11-11 22:09:27', 10, '', 8, '296abb37-599b-4fe2-bd17-9008b026a2fc'),
(69, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 'Create a smooth off-canvas sidebar that slides in and out of the page.', 4, 'Off-canvas default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIiPi4uLjwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, '2015-06-01 20:00:09', '2017-11-11 22:09:27', 10, '', 8, '063b892a-956b-4950-a7e0-afa8a6c9e14f'),
(70, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 'Create a smooth off-canvas sidebar that slides in and out of the page.', 4, 'Off-canvas right', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIgdWstb2ZmY2FudmFzLWJhci1mbGlwIj4uLi48L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, '2015-06-01 20:00:37', '2017-11-11 22:09:27', 10, '', 8, 'e5a619b7-ef6f-46b4-a30b-4b79b2d8d43f'),
(71, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Dynamically transition through different content panes.', 4, 'Switcher default', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:02:41', '2017-11-11 22:09:27', 10, '', 8, 'fd850fcf-366b-4b7e-9ccc-bb515f316ab7'),
(72, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'In some cases you want to switch to another content section from within the active content. This is possible using the data-uk-switcher-item attribute. To target the items, you need to set the data attribute to the number of the respective content item.', 'Dynamically transition through different content panes.', 4, 'Switcher in-content', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4NCiAgICA8bGk+IC4uLiA8YSBocmVmPSIiIGRhdGEtdWstc3dpdGNoZXItaXRlbT0iMCI+Li4uPC9hPjwvbGk+DQogICAgPGxpPiAuLi4gPGEgaHJlZj0iIiBkYXRhLXVrLXN3aXRjaGVyLWl0ZW09IjEiPi4uLjwvYT48L2xpPg0KPC91bD4=', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:04:24', '2017-11-11 22:09:27', 10, '', 8, 'c2e83f1f-facd-43ba-ae8d-fc3ccc1debc7'),
(73, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'It is also possible to connect multiple content containers. Just extend the connect parameter with the ID of the additional container.', 'Dynamically transition through different content panes.', 4, 'Switcher multiple-items', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZC1vbmUsICNteS1pZC10d28nfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoZXNlIGFyZSB0aGUgY29udGFpbmVycyBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQtb25lIiBjbGFzcz0idWstc3dpdGNoZXIiPg0KICAgIDxsaT4uLi48L2xpPg0KPC91bD4NCg0KPHVsIGlkPSJteS1pZC10d28iIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:04:53', '2017-11-11 22:09:27', 10, '', 8, '7ca69d59-8d39-4d54-a88b-f9c673fcef2d'),
(74, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Switcher component allows you to add different animations to items when toggling between them. All you need to do is add the animation parameter to the data-attribute and define the animation that you want to apply. Check the table below for an overview of the animations provided.\r\n\r\nYou can also apply multiple animations by using the uk-animation-* classes from the Animation component. That way you can even create your own custom class to apply a different transition to the switcher.', 'Dynamically transition through different content panes.', 4, 'Switcher animation', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnLCBhbmltYXRpb246ICd1ay1hbmltYXRpb24tZmFkZSwgdWstYW5pbWF0aW9uLXNsaWRlLWxlZnQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:06:42', '2017-11-11 22:09:27', 10, '', 8, '2d1b0fad-f2ff-49b8-97dc-aab9d3553a15'),
(75, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'As an exception to the rule, add the data-uk-tab=\"{connect:\'#ID\'}\" attribute, using the parameter \"tab\" instead of \"switcher\", to the tabbed navigation to combine the switcher with the Tab component.', 'Dynamically transition through different content panes.', 4, 'Switcher tabs-horizontal', 'PCEtLSBUaGlzIGlzIHRoZSB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCjx1bCBjbGFzcz0idWstdGFiIiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIHVrLW1hcmdpbiI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:08:04', '2017-11-11 22:09:27', 10, '', 8, 'f271532f-7bbb-4fab-a21c-7487ed72790e'),
(76, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Use the Grid component to display content correctly with a vertical tabbed navigation.', 'Dynamically transition through different content panes.', 4, 'Switcher tabs-vertical', 'PCEtLSBUaGlzIGlzIHRoZSBsZWZ0IHZlcnRpY2FsIHRhYmJlZCBuYXZpZ2F0aW9uIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiI+DQogICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstdGFiIHVrLXRhYi1sZWZ0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gVGhpcyBpcyB0aGUgcmlnaHQgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gLS0+DQo8ZGl2IGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIHVrLXB1c2gtMS0yIj4NCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCiAgICAgICAgPHVsIGNsYXNzPSJ1ay10YWIgdWstdGFiLXJpZ2h0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIgdWstcHVsbC0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:09:01', '2017-11-11 22:09:27', 10, '', 8, '86a0a1f5-5cce-4d65-9c74-2e39c6ba1bf8'),
(77, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The switcher can also be applied to buttons or button groups from the Button component. Just add the switcher data attribute to a element around a group of buttons or to the element with the .button-group class.', 'Dynamically transition through different content panes.', 4, 'Switcher button-group', 'PCEtLSBUaGlzIGlzIHRoZSBidXR0b24gZ3JvdXAgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgYnV0dG9ucyAtLT4NCjxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCIgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQo8dWwgaWQ9Im15LWlkIiBjbGFzcz0idWstc3dpdGNoZXIgdWstbWFyZ2luIj4uLi48L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:10:00', '2017-11-11 22:09:27', 10, '', 8, 'd252e658-4c57-4115-845c-0bdf66f4f640'),
(78, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'To apply the switcher to the Nav component, add the data attribute to the nav . Use the Grid component to arrange nav and content in a grid layout.', 'Dynamically transition through different content panes.', 4, 'Switcher navs', 'PGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstbmF2IHVrLW5hdi1zaWRlIiBkYXRhLXVrLXN3aXRjaGVyPSJ7Y29ubmVjdDonI215LWlkJ30iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTMtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQogICAgICAgIDx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgICAgICAgICA8bGk+Li4uPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:10:30', '2017-11-11 22:09:27', 10, '', 8, '517a296e-57c2-4d4b-9aae-589b23d1a398'),
(79, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle default', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGlkPSJteS1pZCI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:12:07', '2017-11-11 22:09:27', 10, '', 8, 'dae732b0-379e-4412-9bdb-559f87dc5992'),
(80, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle multiple', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonLm15LWNsYXNzJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGNsYXNzPSJteS1jbGFzcyI+Li4uPC9kaXY+DQo8ZGl2IGNsYXNzPSJteS1jbGFzcyB1ay1oaWRkZW4iPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:12:34', '2017-11-11 22:09:27', 10, '', 8, '7a7c7acb-b309-40c5-92fe-33702c5f2f16'),
(81, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle class', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgY2xzOid1ay1wYW5lbC1ib3gtcHJpbWFyeSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:13:06', '2017-11-11 22:09:27', 19, '', 8, '10a7755a-4309-4172-b1bd-89a2e0d6edb6'),
(82, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Toggle component allows you to add animations to items when toggling between them. Just add one of the .uk-animation-* classes from the Animation component to the animation parameter. The class will be applied to the in as well as the out animation. If you prefer a different out animation, just add another class.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle animations', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgYW5pbWF0aW9uOid1ay1hbmltYXRpb24tc2xpZGUtbGVmdCwgdWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:13:34', '2017-11-11 22:09:27', 19, '', 8, '31f54883-606b-43d5-b110-fba9774b7a34'),
(83, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Trigger events and animations while scrolling your page.', 4, 'Scrollspy default', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgcmVwZWF0OiB0cnVlfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgZGVsYXk6OTAwfSI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, '2015-06-01 20:15:00', '2017-11-11 22:09:27', 19, '', 8, '39b72b40-85ec-4cc6-aded-c86611f31c24'),
(84, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also group scrollspy elements, so you won\'t have to apply the data attribute to each of them. Just add the data-uk-scollspy\"{target:\'MY-CLASS\'}\" attribute to a container element, targetting the selector the items you want to animate within the container. When using a delay it will be applied cumulatively to the items within the row that scrolls into view. The delay will be resetted for the next row within the group when it scrolls into view.', 'Trigger events and animations while scrolling your page.', 4, 'Scrollspy groups', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnLCB0YXJnZXQ6Jy5teS1jbGFzcycsIGRlbGF5OjMwMH0iPg0KDQogICAgPCEtLSBUaGlzIGl0ZW0gaGFzIG5vIGRlbGF5IC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDMwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDYwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, '2015-06-01 20:15:18', '2017-11-11 22:09:27', 20, '', 8, '6e666e60-5206-4633-a433-83f41f914ed7'),
(85, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox single-image', 'PGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSIiIGhyZWY9IiIgY2xhc3M9InVrLWJ1dHRvbiI+T3BlbiBsaWdodGJveDwvYT4=', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:18:50', '2017-11-11 22:09:27', 19, '', 9, 'b3fb0556-ff50-4380-b7f7-8f2519e02d81'),
(86, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can link multiple images to the same lightbox and switch between them from within the lightbox, thus creating a gallery. Just add the {group:\'my-group\'} option to the data attribute of each item using the same name on all items that you want to group. Make sure to include the CSS from the Slidenav component, so you can navigate between the items.', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox groups-image', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIHVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtNCI+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2Pg0KICAgICAgICA8YSB0aXRsZT0iVGl0bGUiIGRhdGEtdWstbGlnaHRib3g9Intncm91cDonZ3JvdXAxJ30iIGRhdGEtbGlnaHRib3gtdHlwZT0iaW1hZ2UiIGhyZWY9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgICAgIDxpbWcgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIGFsdD0iIiBzcmM9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIDxkaXY+DQogICAgICAgIDxhIHRpdGxlPSJUaXRsZSIgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDEnfSIgZGF0YS1saWdodGJveC10eXBlPSJpbWFnZSIgaHJlZj0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICAgICAgPGltZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgYWx0PSIiIHNyYz0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICA8L2E+DQogICAgPC9kaXY+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBkYXRhLWxpZ2h0Ym94LXR5cGU9ImltYWdlIiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:21:01', '2017-11-11 22:09:27', 20, '', 9, '9fb9dbd8-23b1-4a85-a144-c4ad95f105d1'),
(87, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'A lightbox is not restricted to images. Other media, like videos, can be displayed inside a lightbox and it will automatically generate the correct output by evaluating your path.', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox content-sources', 'PHA+DQogICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyIgY2xhc3M9InVrLWJ1dHRvbiI+SW1hZ2U8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9odG1sNS92aWRlb3MvYmlnX2J1Y2tfYnVubnkubXA0IiBjbGFzcz0idWstYnV0dG9uIj5NUDQ8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3ZpbWVvLmNvbS8xMDg0NTM3IiBjbGFzcz0idWstYnV0dG9uIj5WaW1lbzwvYT4NCiAgICA8YSBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVlFN1Z6bEx0cC00IiBjbGFzcz0idWstYnV0dG9uIj5Zb3VUdWJlPC9hPg0KPC9wPg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:22:21', '2017-11-11 22:09:27', 19, '', 9, '4e0dcf96-2140-49e9-bbed-8f84b36f4f3c'),
(88, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'To display multiple content sections at the same time without one collapsing when the other one is opened, add the {collapse: false} option to the date attribute.', 'Create a list of items, allowing each item\'s content to be expanded and collapsed by clicking its header.', 4, 'Accordion', 'PGRpdiBjbGFzcz0idWstYWNjb3JkaW9uIiBkYXRhLXVrLWFjY29yZGlvbj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/accordion.html', 'To apply the Accordion component, add the uk-accordion class and the data-uk-accordion attribute to a container element. Add the uk-accordion-content class to each of the content sections within the container. Finally, add the uk-accordion-title class to any element, like a heading, above the content section to create a toggle.', '', 1, '2015-06-01 20:24:59', '2017-11-11 22:09:27', 20, '', 10, 'f5bd905c-8d79-4eb6-bb61-e139af27f573'),
(90, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a input field for uikit form', 'Add Input field - row', 4, 'Input field', 'ICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, '2015-11-29 03:54:40', '2017-11-11 22:09:27', 20, '', 12, 'f1319e45-395a-492e-a899-f2fec00de5ec'),
(91, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a textarea field for uikit form', 'Add textarea - row', 4, 'Textarea', 'CTxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIEpUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8dGV4dGFyZWEgY29scz0iIiByb3dzPSIiICBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMjE2cHg7IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBKVGV4dDo6XygnYWRkIHNvbWUgdGV4dCBoZXJlIScpOyA/PiI+PHx8fHxGSVh8fHx8fHx0ZXh0YXJlYT4NCgkJPHAgY2xhc3M9InVrLWZvcm0taGVscC1ibG9jayI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, '2015-11-29 03:55:57', '2017-11-11 22:09:27', 22, '', 12, '22207e7c-6096-4b6e-8e03-0616745c8447'),
(92, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a uikit form', 'Add Form', 4, 'Form', 'PGZvcm0gY2xhc3M9InVrLWZvcm0iPg0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgPGxlZ2VuZD48P3BocCBlY2hvIFRleHQ6Ol8oJ0xlZ2VuZCcpOyA/PjwvbGVnZW5kPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIFRleHQ6Ol8oJ0xhYmVsJyk7ID8+DQoJCTwvbGFiZWw+DQoJCTx0ZXh0YXJlYSBjb2xzPSIiIHJvd3M9IiIgIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAyMTZweDsiIHBsYWNlaG9sZGVyPSI8P3BocCBlY2hvIFRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPjx8fHx8fEZJWHx8fHx8dGV4dGFyZWE+DQoJCTxwIGNsYXNzPSJ1ay1mb3JtLWhlbHAtYmxvY2siPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+DQogICAgPC9maWVsZHNldD4NCjwvZm9ybT4=', 1, 'http://getuikit.com/docs/form.html', 'To apply this component, add the .uk-form class to a form element. All form control elements are placed side by side within the next row.', '', 1, '2015-11-29 03:57:03', '2017-11-20 23:42:28', 21, '', 12, '6d6bebcf-e291-4344-a39e-f072fa22bf71'),
(95, 'Vast Development Method', 'joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a list of items that can be shown individually by clicking an item\'s header.', 3, 'Accordion', 'PHVsIHVrLWFjY29yZGlvbj4NCiAgICA8bGkgY2xhc3M9InVrLW9wZW4iPg0KICAgICAgICA8aDMgY2xhc3M9InVrLWFjY29yZGlvbi10aXRsZSI+SXRlbSAxPC9oMz4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstYWNjb3JkaW9uLWNvbnRlbnQiPg0KICAgICAgICAgICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuPC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2xpPg0KICAgIDxsaT4NCiAgICAgICAgPGgzIGNsYXNzPSJ1ay1hY2NvcmRpb24tdGl0bGUiPkl0ZW0gMjwvaDM+DQogICAgICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4NCiAgICAgICAgICAgIDxwPlV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciByZXByZWhlbmRlcml0LjwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCiAgICA8bGk+DQogICAgICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj5JdGVtIDM8L2gzPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1hY2NvcmRpb24tY29udGVudCI+DQogICAgICAgICAgICA8cD5EdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IHByb2lkZW50LjwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 15, 'https://getuikit.com/docs/accordion', 'The Accordion component consists of a parent container with the uk-accordion attribute, and a title and content part for each accordion item.\r\n\r\n.uk-accordion-title - Defines and styles the toggle for each accordion item. Typically used on a heading.\r\n\r\n.uk-accordion-content - Defines the content part for each accordion item.\r\n\r\n', '', 1, '2017-11-20 17:21:09', '2017-11-20 23:41:14', 1, '', 14, 'c76d547f-8bcd-48e6-ba64-4ae971404a1b'),
(96, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome – No matter how many columns of data you may have in them.\r\n\r\nHave you ever wanted to show a lot of data in a table, but hate how badly it scales on smaller mobile devices? The FooTable jQuery plugin solves this problem by allowing you to hide certain columns on smaller devices, but still allowing the user to expand each row to see the columns that were hidden.', 'metro-blue', 5, 'FooTable', 'PHRhYmxlIGNsYXNzPSJmb290YWJsZSBtZXRyby1ibHVlIiBkYXRhLWZpbHRlcj0iI2ZpbHRlciIgZGF0YS1wYWdlLXNpemU9IjUiPg0KICA8dGhlYWQ+DQogICAgPHRyPg0KICAgICAgPHRoIGRhdGEtdG9nZ2xlPSJ0cnVlIj5OYW1lPC90aD4NCiAgICAgIDx0aCBkYXRhLWhpZGU9InBob25lLHRhYmxldCI+UGhvbmU8L3RoPg0KICAgICAgPHRoIGRhdGEtaGlkZT0icGhvbmUsdGFibGV0Ij5FbWFpbDwvdGg+DQogICAgPC90cj4NCiAgPC90aGVhZD4NCiAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgIDx0ZD5Cb2IgTWFuPC90ZD4NCiAgICAgIDx0ZD41NTUtMTIzNDU8L3RkPg0KICAgICAgPHRkPmJvYkBob21lLmNvbTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+QnJpZGdldCBKb25lczwvdGQ+DQogICAgICA8dGQ+NTQ0LTc3NjY1NTwvdGQ+DQogICAgICA8dGQ+YmpvbmVzQG15c2l0ZS5jb208L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkPlRvbSBKb25lczwvdGQ+DQogICAgICA8dGQ+NTU1LTk5OTExPC90ZD4NCiAgICAgIDx0ZD5jcnVpc2UxQGNyYXp5LmNvbTwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+', 32, 'https://github.com/fooplugins/FooTable/tree/V2', '', '', 1, '2015-09-26 14:07:03', '2017-11-25 22:24:55', 3, '', 15, '57eace63-c278-4685-8bb7-a40bfdee704e'),
(97, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-success', 2, 'Alerts - Success', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+V2VsbCBkb25lITwvc3Ryb25nPiBZb3Ugc3VjY2Vzc2Z1bGx5IHJlYWQgdGhpcw0KICAgIGltcG9ydGFudCBhbGVydCBtZXNzYWdlLg0KPC9kaXY+', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-13 10:12:34', 1, '', 16, 'eac77139-a69b-4eef-9276-254194d2bed5'),
(98, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-heading', 2, 'Alerts - Heading', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPg0KICA8aDQgY2xhc3M9ImFsZXJ0LWhlYWRpbmciPldlbGwgZG9uZSE8L2g0Pg0KICBZb3Ugc3VjY2Vzc2Z1bGx5IHJlYWQgdGhpcyBpbXBvcnRhbnQgYWxlcnQgbWVzc2FnZS4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:26', 1, '', 17, '7fdc4a3a-6b6b-4126-98d6-2c2dfe726f8d'),
(99, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-link', 2, 'Alerts - Link', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+DQogIDxzdHJvbmc+T2ggc25hcCE8L3N0cm9uZz4NCiAgPGEgaHJlZj0iIyIgY2xhc3M9ImFsZXJ0LWxpbmsiPkNoYW5nZSBhIGZldyB0aGluZ3MgdXA8L2E+DQogIGFuZCB0cnkgc3VibWl0dGluZyBhZ2Fpbi4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:19', 1, '', 17, '0910fd26-4d44-4d85-827f-14207d99ce45'),
(100, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-danger', 2, 'Alerts - Danger', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+DQogIDxzdHJvbmc+T2ggc25hcCE8L3N0cm9uZz4gQ2hhbmdlIGEgZmV3IHRoaW5ncyB1cCBhbmQgdHJ5IHN1Ym1pdHRpbmcgYWdhaW4uDQo8L2Rpdj4=', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:19', 1, '', 17, '597d1a5b-1dd9-438b-a019-5b074afa8191'),
(101, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-dismissible', 2, 'Alerts - Dismissible', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3ciIHJvbGU9ImFsZXJ0Ij4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJhbGVydCIgYXJpYS1sYWJlbD0iQ2xvc2UiPg0KICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7Dlzwvc3Bhbj4NCiAgPC9idXR0b24+DQogIDxzdHJvbmc+SG9seSBndWFjYW1vbGUhPC9zdHJvbmc+IFlvdSBzaG91bGQgY2hlY2sgaW4gb24gc29tZSBvZiB0aG9zZSBmaWVsZHMgYmVsb3cuDQo8L2Rpdj4=', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:23', 1, '', 17, 'e0f1a436-8527-462b-ba27-cbe60504b8f6'),
(102, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-info', 2, 'Alerts - Info', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+SGVhZHMgdXAhPC9zdHJvbmc+IFRoaXMgYWxlcnQgbmVlZHMgeW91ciBhdHRlbnRpb24sDQogICAgYnV0IGl0J3Mgbm90IHN1cGVyIGltcG9ydGFudC4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:08', 1, '', 18, 'c7a51b7a-c1b7-45cb-95c6-b8cda5d32417'),
(103, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-danger', 2, 'Badge - Danger', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWRhbmdlciI+RGFuZ2VyPC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:21', 1, '', 19, '4cc7a7b5-7d3a-4086-8a00-d7b99e3db5b2'),
(104, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-warning', 2, 'Alerts - Warning', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+SGVhZHMgdXAhPC9zdHJvbmc+IFRoaXMgYWxlcnQgbmVlZHMgeW91ciBhdHRlbnRpb24sDQogICAgYnV0IGl0J3Mgbm90IHN1cGVyIGltcG9ydGFudC4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:13', 1, '', 20, 'f7de3d3c-326c-4039-a184-f0aa1e4719d3'),
(105, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-info', 2, 'Badge - Info', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWluZm8iPkluZm88L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:15', 1, '', 21, 'b7eb3854-3024-440b-bb88-2197e3b934dc'),
(106, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-dark', 2, 'Badge - Dark', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWRhcmsiPkRhcms8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:28', 1, '', 21, 'c3e0aa51-2cbc-4bf3-8e84-1b6bc2672f2b'),
(107, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-light', 2, 'Badge - Light', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWxpZ2h0Ij5MaWdodDwvc3Bhbj4=', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:26', 1, '', 22, 'f03cb9b8-fffd-41af-9c84-eeed30c97d4b'),
(108, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-pill', 2, 'Badge - Pill', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeSI+U2Vjb25kYXJ5PC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-11 23:53:03', 1, '', 23, '491da919-5afe-4cbb-8cec-1a4d49778c0a'),
(109, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-primary', 2, 'Badge - Primary', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXByaW1hcnkiPlByaW1hcnk8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:06', 1, '', 23, 'c0d1d1f1-907a-4712-afc5-a905ff75bfbe'),
(110, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-secondary', 2, 'Badge - Secondary', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+U2Vjb25kYXJ5PC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:09', 1, '', 24, '72bcef22-7fcc-4152-892f-23f4e619ef24'),
(111, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-warning', 2, 'Badge - Warning', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXdhcm5pbmciPldhcm5pbmc8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:18', 1, '', 24, 'f6895007-f66b-4d66-ad52-9823e3b7dee0'),
(112, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Indicate the current page\'s location within a navigational hierarchy that automatically adds separators via CSS.', 'breadcrumb', 2, 'Breadcrumb', 'PG9sIGNsYXNzPSJicmVhZGNydW1iIj4NCiAgPGxpIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0gYWN0aXZlIj5Ib21lPC9saT4NCjwvb2w+DQo8b2wgY2xhc3M9ImJyZWFkY3J1bWIiPg0KICA8bGkgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSI+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICA8bGkgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSBhY3RpdmUiPkxpYnJhcnk8L2xpPg0KPC9vbD4NCjxvbCBjbGFzcz0iYnJlYWRjcnVtYiI+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIj48YSBocmVmPSIjIj5Ib21lPC9hPjwvbGk+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIj48YSBocmVmPSIjIj5MaWJyYXJ5PC9hPjwvbGk+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIGFjdGl2ZSI+RGF0YTwvbGk+DQo8L29sPg==', 9, 'https://getbootstrap.com/docs/4.0/components/breadcrumb/', 'Separators are automatically added in CSS through ::before and content.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:01:21', 1, '', 25, '25ea0f36-f123-4b2e-82c1-3bb44991c0cb'),
(113, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-success', 2, 'Badge - Success', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXN1Y2Nlc3MiPlN1Y2Nlc3M8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:12', 1, '', 24, '736daa76-4a91-4a26-a684-3412c126e2ec'),
(114, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-toolbar', 2, 'Button - Toolbar', 'PGRpdiBjbGFzcz0iYnRuLXRvb2xiYXIiIHJvbGU9InRvb2xiYXIiIGFyaWEtbGFiZWw9IlRvb2xiYXIgd2l0aCBidXR0b24gZ3JvdXBzIj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iRmlyc3QgZ3JvdXAiPg0KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPjE8L2J1dHRvbj4NCiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij4yPC9idXR0b24+DQogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+MzwvYnV0dG9uPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iU2Vjb25kIGdyb3VwIj4NCiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij41PC9idXR0b24+DQogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+NjwvYnV0dG9uPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iVGhpcmQgZ3JvdXAiPg0KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPjg8L2J1dHRvbj4NCiAgPC9kaXY+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:28:16', 1, '', 26, 'f7a6f877-ee4c-4cbe-b1a7-314ff55172b7'),
(115, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group (nested)', 2, 'Button Group (nested)', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQnV0dG9uIGdyb3VwIHdpdGggbmVzdGVkIGRyb3Bkb3duIj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+MTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij4yPC9idXR0b24+DQoNCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCI+DQogICAgPGJ1dHRvbiBpZD0iYnRuR3JvdXBEcm9wMSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4NCiAgICAgIERyb3Bkb3duDQogICAgPC9idXR0b24+DQogICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSIgYXJpYS1sYWJlbGxlZGJ5PSJidG5Hcm91cERyb3AxIj4NCiAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBocmVmPSIjIj5Ecm9wZG93biBsaW5rPC9hPg0KICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhyZWY9IiMiPkRyb3Bkb3duIGxpbms8L2E+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:28:08', 1, '', 26, 'e97f45dd-c391-4b01-9737-c1cd90c2be30'),
(116, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge', 2, 'Badge', 'PGgxPkV4YW1wbGUgaGVhZGluZyA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5Ij5OZXc8L3NwYW4+PC9oMT4NCjxoMj5FeGFtcGxlIGhlYWRpbmcgPHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+TmV3PC9zcGFuPjwvaDI+DQo8aDM+RXhhbXBsZSBoZWFkaW5nIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1zZWNvbmRhcnkiPk5ldzwvc3Bhbj48L2gzPg0KPGg0PkV4YW1wbGUgaGVhZGluZyA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5Ij5OZXc8L3NwYW4+PC9oND4NCjxoNT5FeGFtcGxlIGhlYWRpbmcgPHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+TmV3PC9zcGFuPjwvaDU+DQo8aDY+RXhhbXBsZSBoZWFkaW5nIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1zZWNvbmRhcnkiPk5ldzwvc3Bhbj48L2g2Pg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:12:58', 1, '', 26, '003efb29-e3f9-4378-a463-4de8e5675766'),
(117, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-lg', 2, 'Button Group - Large', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIGJ0bi1ncm91cC1sZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IkJhc2ljIGV4YW1wbGUiPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5MZWZ0PC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPk1pZGRsZTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5SaWdodDwvYnV0dG9uPg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:34', 1, '', 27, '710bde0f-89cc-4acc-a83d-e20fa0cbb893'),
(118, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'radio as button', 2, 'Button - As Radio', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiBkYXRhLXRvZ2dsZT0iYnV0dG9ucyI+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGFjdGl2ZSI+DQogICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJvcHRpb25zIiBpZD0ib3B0aW9uMSIgY2hlY2tlZD0iIj4gUmFkaW8gMSAocHJlc2VsZWN0ZWQpDQogIDwvbGFiZWw+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4NCiAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Im9wdGlvbnMiIGlkPSJvcHRpb24yIj4gUmFkaW8gMg0KICA8L2xhYmVsPg0KPC9kaXY+', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:35:00', 1, '', 27, '14c313be-d933-4858-92bc-b5d47a9db508'),
(119, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'active button', 2, 'Button - Active', 'PGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYWN0aXZlIiByb2xlPSJidXR0b24iIGFyaWEtcHJlc3NlZD0idHJ1ZSI+UHJpbWFyeSBsaW5rPC9hPg==', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:18', 1, '', 27, '56f1534d-ea2d-471b-8633-aeed414df87a'),
(120, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'checkbox as button', 2, 'Button - As Checkbox', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiBkYXRhLXRvZ2dsZT0iYnV0dG9ucyI+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGFjdGl2ZSI+DQogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSIiPiBDaGVja2JveCAxIChwcmUtY2hlY2tlZCkNCiAgPC9sYWJlbD4NCiAgPGxhYmVsIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPg0KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCI+IENoZWNrYm94IDINCiAgPC9sYWJlbD4NCjwvZGl2Pg==', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:34:41', 1, '', 27, '7f9ab8c9-15aa-4b2b-8271-114b032cdef4'),
(121, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-block', 2, 'Button - Block', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIGJ0bi1ibG9jayI+QmxvY2sgbGV2ZWwgYnV0dG9uPC9idXR0b24+', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:15', 1, '', 28, 'e64dd4ca-a1cd-4442-9cf4-5d18a9e3dd91'),
(122, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'disabled button', 2, 'Button - Disabled', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGRhdGEtdG9nZ2xlPSJidXR0b24iIGFyaWEtcHJlc3NlZD0iZmFsc2UiPg0KICBTaW5nbGUgdG9nZ2xlDQo8L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:34:21', 1, '', 28, '52c9caa1-7f2b-4a8f-bb60-9a4158d27c0a'),
(123, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-vertical', 2, 'Button Group - Vertical', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwLXZlcnRpY2FsIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmFzaWMgZXhhbXBsZSI+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPkxlZnQ8L2J1dHRvbj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+TWlkZGxlPC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPlJpZ2h0PC9idXR0b24+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:56', 1, '', 28, '64415e4e-f38f-4e46-9ca1-6eea596f2456'),
(124, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-lg', 2, 'Button - Large', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIj5MYXJnZSBidXR0b248L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:07', 1, '', 29, 'ed94a4f7-b396-4201-a7da-b268db30b13d'),
(125, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-sm', 2, 'Button - Small', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIj5TbWFsbCBidXR0b248L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:13', 1, '', 29, '4becf0e5-2fac-483a-b4bb-92b0b1608c3b'),
(126, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-sm', 2, 'Button Group - Small', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IkJhc2ljIGV4YW1wbGUiPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5MZWZ0PC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPk1pZGRsZTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5SaWdodDwvYnV0dG9uPg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:45', 1, '', 29, '3af366d7-978f-487a-a966-0477d7ea9d1a'),
(127, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-danger', 2, 'Button - Danger', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhbmdlciI+RGFuZ2VyPC9idXR0b24+', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:20', 1, '', 30, '772bc812-118c-4bf0-a286-b467c3d4cee6'),
(128, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group', 2, 'Button Group', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmFzaWMgZXhhbXBsZSI+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPkxlZnQ8L2J1dHRvbj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+TWlkZGxlPC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPlJpZ2h0PC9idXR0b24+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:25:49', 1, '', 30, 'cebe97c4-ff4a-4a74-bd12-ebe02ecfd814'),
(129, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-info', 2, 'Button - Info', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWluZm8iPkluZm88L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:14', 1, '', 31, '35d64d76-fd06-4821-9cfb-7cc8a8901ccf'),
(130, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-link', 2, 'Button - Link', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpbmsiPkxpbms8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:30', 1, '', 32, 'e6356804-5499-478d-b0cb-5f708fd1a739'),
(131, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-danger', 2, 'Button - Outline Danger', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIj5EYW5nZXI8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:40', 1, '', 32, '206c8a71-71b4-4e66-9bdb-9247e0efdf27'),
(132, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-info', 2, 'Button - Outline Info', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtaW5mbyI+SW5mbzwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:34', 1, '', 33, 'ab044e3e-675a-4172-8849-a5fd61d889e3'),
(133, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-primary', 2, 'Button - Outline Primary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSI+UHJpbWFyeTwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:51', 1, '', 34, '6a26904a-fdae-4333-892a-932548b8a11d'),
(134, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-light', 2, 'Button - Outline Light', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPkxpZ2h0PC9idXR0b24+DQo=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-11 23:54:26', 1, '', 34, '5e418043-9a54-4cc3-abef-ac2c6b467a4f'),
(135, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-dark', 2, 'Button - Dark', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhcmsiPkRhcms8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:26', 1, '', 35, 'ad5973b8-1860-49b8-9022-ac43d24a2bc5'),
(136, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-secondary', 2, 'Button - Outline Secondary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5Ij5TZWNvbmRhcnk8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:53', 1, '', 35, 'ea92c635-9155-451c-a7f8-4353c60641c8'),
(137, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-light', 2, 'Button - Light', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpZ2h0Ij5MaWdodDwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:23', 1, '', 36, '0cee266b-156e-44a9-aff0-af6935f139e9'),
(138, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-success', 2, 'Button - Outline Success', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyI+U3VjY2VzczwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:55', 1, '', 36, '8798c735-ae7b-4657-8776-d07b0ec5bfe3'),
(139, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-warning', 2, 'Button - Outline Warning', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtd2FybmluZyI+V2FybmluZzwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:37', 1, '', 36, '56c2a53e-7076-4c4a-9a79-0e9037e19fec'),
(140, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-dark', 2, 'Button - Outline Dark', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtZGFyayI+RGFyazwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:47', 1, '', 36, '4560a0a9-c5e9-4db5-b85b-f547206dc4f5'),
(141, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-primary', 2, 'Button - Primary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlByaW1hcnk8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 22:39:59', 1, '', 37, 'a2e15c1b-e002-41ba-b222-808a4de5d3cb'),
(142, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-success', 2, 'Button - Success', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MiPlN1Y2Nlc3M8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:11', 1, '', 38, 'ba1c21b9-612d-4d8b-8d74-333e6dd6a140'),
(143, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-warning', 2, 'Button - Warning', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXdhcm5pbmciPldhcm5pbmc8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:17', 1, '', 39, '7c1fd0a6-3460-4034-b562-9eed77e53764'),
(144, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-secondary', 2, 'Button - Secondary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+U2Vjb25kYXJ5PC9idXR0b24+', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 22:40:04', 1, '', 40, '5f6714fb-0030-40a6-b269-4d96d1b1bf08');
--
-- Dumping data for table `#__componentbuilder_validation_rule`
--
INSERT INTO `#__componentbuilder_validation_rule` (`id`, `name`, `php`, `short_description`, `published`, `created`, `params`) VALUES
(1, 'inspect', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB2YWx1ZS4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gbG9vayBpbnRvIHRoZXNlIHZhbHVlcyBvbmUgYXQgYSB0aW1lDQoJCWVjaG8gJzxwcmU+ZWxlbWVudDxiciAvPic7DQoJCXZhcl9kdW1wKCRlbGVtZW50KTsNCgkJZWNobyAndmFsdWU8YnIgLz4nOw0KCQl2YXJfZHVtcCgkdmFsdWUpOw0KCQllY2hvICdncm91cDxiciAvPic7DQoJCXZhcl9kdW1wKCRncm91cCk7DQoJCWVjaG8gJ2lucHV0PGJyIC8+JzsNCgkJdmFyX2R1bXAoJGlucHV0KTsNCgkJZWNobyAnZm9ybTxiciAvPic7DQoJCXZhcl9kdW1wKCRmb3JtKTsNCgkJamV4aXQoKTsNCgl9', 'simple function to inspect the test values', 1, '2018-03-30 09:22:15', ''),
(2, 'code', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB2YWx1ZS4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gVGhpcyByZW1vdmVzIGFsbCB2YWxpZGF0aW9uIChpcyBkYW5nZXJvdXMpIGJ1dCBuZWVkZWQgdG8gc3VibWl0IGNvZGUgdmlhIEpDQg0KCQlyZXR1cm4gdHJ1ZTsNCg0KCQkvKioNCgkJICogTXkgaWRlYSBpcyB0byBhZGQgc29tZSBraW5kIG9mIHZhbGlkYXRpb24gdG8gaW1wcm92ZSBKQ0IgY29kZSAocGVyL2xhbmd1YWdlKQ0KCQkgKg0KCQkgKiBTbyBhdCB0aGlzIHRpbWUgdGhpcyBjb2RlIHZhbGlkYXRpb24gaXMgdXNlZCBmb3IgSmF2YVNjcmlwdCxDU1MsSFRNTCBhbmQgUEhQLg0KCQkgKiBXZSBjYW4gc2VlIHdoYXQgbGFuZ3VhZ2UgaXMgYmVpbmcgd29ya2VkIG9uIHdpdGggdGhlIHN5bnRheCBwcm9wZXJ0eSBpbiB0aGUgJGVsZW1lbnQuIChpbiBKQ0IpDQoJCSAqIFdoYXQgY29tcGxpY2F0ZXMgdGhpbmdzIGlzIHRoZSBwbGFjZWhvbGRlcnMsIG9mIGJvdGggY3VzdG9tIGNvZGUsIGNvbXBvbmVudCwgYW5kIHZpZXcgbmFtZXMuDQoJCSAqIElkZWFsbHkgd2UgY291bGQgc3RyaXAgdGhlbSBhbmQgdGhlbiB2YWxpZGF0ZSB0aGUgY29kZSB0byBiZWluZyBzeW50YWN0aWNhbGx5IGNvcnJlY3QuDQoJCSAqIEJ1dCBzaW5jZSBzb21lIG9mIHRoZSBwbGFjZWhvbGRlcnMgZm9ybSBwYXJ0IG9mIHRoZSBjbGFzcy9mdW5jdGlvbiBuYW1lcyBhbmQgdGhlIG1vcmUsIGl0IHNlZW1zIGxpa2Ugd2UgYXJlIHByZXNzZWQgZm9yIGEgbXVjaCBtb3JlIGFkdmFuY2Ugc29sdXRpb24uDQoJCSAqIElmIHlvdSBoYXZlIGFueSBpZGVhcyB0byBob3cgd2UgY2FuIGdvIGFib3V0IHRvIGRvIHRoaXMsIHRoZW4gcGxlYXNlIG9wZW4gYW4gaXNzdWUgb24gZ2l0aHViIGFuZCBsZXRzIGJlZ2luLiAodGhpcyBpcyBhIG5pY2UgdG8gaGF2ZSwgc28gZG9uJ3QgYnJlYWsgYSBsZWcuLi4pDQoJCSAqLw0KCX0=', 'To validate code', 1, '2018-06-24 19:11:45', ''),
(3, 'uniquefield', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBmaWVsZCB2YWx1ZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gR2V0IHRoZSBleHRyYSBmaWVsZCBjaGVjayBhdHRyaWJ1dGUuDQoJCSRpZCA9ICgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSkgPyAkaW5wdXQtPmdldCgnaWQnLCBudWxsKSA6IG51bGw7DQoNCgkJLy8gZ2V0IHRoZSBjb21wb25lbnQgJiB0YWJsZSBuYW1lDQoJCSR0YWJsZSA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0pID8gJGZvcm0tPmdldE5hbWUoKSA6ICcnOw0KDQoJCS8vIGdldCB0aGUgY29sdW1uIG5hbWUNCgkJJG5hbWUgPSAoYXJyYXkpICRlbGVtZW50LT5hdHRyaWJ1dGVzKCktPnsnbmFtZSd9Ow0KCQkkY29sdW1uID0gKHN0cmluZykgdHJpbSgkbmFtZVswXSk7DQoJCQ0KCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgYSB2YWx1ZQ0KCQlpZiAoc3RybGVuKCR2YWx1ZSkgJiYgc3RybGVuKCR0YWJsZSkgPiAzICYmIHN0cnBvcygkdGFibGUsICdbW1tjb21wb25lbnRdXV0uJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSB0YWJsZSBuYW1lDQoJCQkkdGFibGVBcnJheSA9IGV4cGxvZGUoJy4nLCAkdGFibGUpOw0KCQkJLy8gZG8gd2UgaGF2ZSB0d28gdmFsdWVzDQoJCQlpZiAoY291bnQoIChhcnJheSkgJHRhYmxlQXJyYXkpID09IDIpDQoJCQl7DQoJCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJCSRxdWVyeS0+c2VsZWN0KCdDT1VOVCgqKScpDQoJCQkJCS0+ZnJvbSgnI19fW1tbY29tcG9uZW50XV1dXycgLiAoc3RyaW5nKSAkdGFibGVBcnJheVsxXSkNCgkJCQkJLT53aGVyZSgkZGItPnF1b3RlTmFtZSgkY29sdW1uKSAuICcgPSAnIC4gJGRiLT5xdW90ZSgkdmFsdWUpKTsNCg0KCQkJCS8vIHJlbW92ZSB0aGlzIGl0ZW0gZnJvbSB0aGUgbGlzdA0KCQkJCWlmICgkaWQgPiAwKQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICRpZCk7DQoJCQkJfQ0KDQoJCQkJLy8gU2V0IGFuZCBxdWVyeSB0aGUgZGF0YWJhc2UuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCQlpZiAoJGR1cGxpY2F0ZSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9', 'unique field value', 1, '2018-07-21 06:06:42', ''),
(4, 'memberloginname', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB1c2VybmFtZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkkcXVlcnktPnNlbGVjdCgnQ09VTlQoKiknKQ0KCQkJLT5mcm9tKCcjX191c2VycycpDQoJCQktPndoZXJlKCd1c2VybmFtZSA9ICcgLiAkZGItPnF1b3RlKCR2YWx1ZSkpOw0KDQoJCS8vIEdldCB0aGUgdXNlciBJRCBpZiBzZXQuDQoJCSR1c2VySWQgPSAoJGZvcm0gaW5zdGFuY2VvZiBGb3JtICYmICgkdXNlcklkID0gJGZvcm0tPmdldFZhbHVlKCd1c2VyJykpKSA/ICR1c2VySWQgOiAoKCRpbnB1dCBpbnN0YW5jZW9mIFJlZ2lzdHJ5ICYmICgkdXNlcklkID0gJGlucHV0LT5nZXQoJ3VzZXInKSkpID8gJHVzZXJJZCA6IDApOw0KCQkvLyBpZiBzdGlsbCBub3QgdXNlciBpcyBmb3VuZCBnZXQgbWVtYmVyIGlkDQoJCWlmICgkdXNlcklkID09IDApDQoJCXsNCgkJCSRtZW1iZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRtZW1iZXJJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnaWQnKSkpID8gJG1lbWJlcklkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJG1lbWJlcklkID0gJGlucHV0LT5nZXQoJ2lkJykpKSA/ICRtZW1iZXJJZCA6IDApOw0KCQl9DQoJCS8vIGdldCBhY2NvdW50IHR5cGUgaWYgbmVlZGVkDQoJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCkNCgkJew0KCQkJJGFjY291bnRJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRhY2NvdW50SWQgPSAkZm9ybS0+Z2V0VmFsdWUoJ2FjY291bnQnKSkpID8gJGFjY291bnRJZCA6ICgoJGlucHV0IGluc3RhbmNlb2YgUmVnaXN0cnkgJiYgKCRhY2NvdW50SWQgPSAkaW5wdXQtPmdldCgnYWNjb3VudCcpKSkgPyAkYWNjb3VudElkIDogMCk7DQoJCQkvLyBtYWtlIHN1cmUgdGhlc2UgYWNjb3VudCBpcyBzZXQNCgkJCWlmICgkYWNjb3VudElkID09IDApDQoJCQl7DQoJCQkJJGFjY291bnRJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAnYWNjb3VudCcpOw0KCQkJfQ0KCQl9DQoJCS8vIGdldCB1c2VyIHZhbHVlIGlmIG5vdCBzZXQgKGR1ZSB0byBwZXJtaXNzaW9ucykNCgkJaWYgKCR1c2VySWQgPT0gMCAmJiAkbWVtYmVySWQgPiAwICYmICRhY2NvdW50SWQgPiAwICYmICgxID09ICRhY2NvdW50SWQgfHwgNCA9PSAkYWNjb3VudElkKSkNCgkJew0KCQkJJHVzZXJJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAndXNlcicpOw0KCQl9DQoJCSRxdWVyeS0+d2hlcmUoJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnIDw+ICcgLiAoaW50KSAkdXNlcklkKTsNCg0KCQkvLyBTZXQgYW5kIHF1ZXJ5IHRoZSBkYXRhYmFzZS4NCgkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkkZHVwbGljYXRlID0gKGJvb2wpICRkYi0+bG9hZFJlc3VsdCgpOw0KDQoJCWlmICgkZHVwbGljYXRlKQ0KCQl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9', 'Validate the member username', 1, '2018-09-16 00:42:59', ''),
(5, 'memberuseremail', 'CS8qKg0KCSAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gdXNlIGluIHRlc3RpbmcgYSBmb3JtIGZpZWxkIHZhbHVlLg0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDExLjENCgkgKiBAbGluayAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwtbWFya3VwL2lucHV0LmVtYWlsLmh0bWwNCgkgKi8NCglwcm90ZWN0ZWQgJHJlZ2V4ID0gIl5bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05LV0rKD86XC5bYS16QS1aMC05LV0rKSokIjsNCg0KCS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBlbWFpbCBhZGRyZXNzIGFuZCBvcHRpb25hbGx5IGNoZWNrIGZvciB1bmlxdWVuZXNzLg0KCSAqDQoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuDQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICAgICAgICR2YWx1ZSAgICBUaGUgZm9ybSBmaWVsZCB2YWx1ZSB0byB2YWxpZGF0ZS4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgICAgICAgJGdyb3VwICAgIFRoZSBmaWVsZCBuYW1lIGdyb3VwIGNvbnRyb2wgdmFsdWUuIFRoaXMgYWN0cyBhcyBhbiBhcnJheSBjb250YWluZXIgZm9yIHRoZSBmaWVsZC4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQ0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCBmaWVsZCBuYW1lIHdvdWxkIGVuZCB1cCBiZWluZyAiYmFyW2Zvb10iLg0KCSAqIEBwYXJhbSAgIFJlZ2lzdHJ5ICAgICAgICAgICAkaW5wdXQgICAgQW4gb3B0aW9uYWwgUmVnaXN0cnkgb2JqZWN0IHdpdGggdGhlIGVudGlyZSBkYXRhIHNldCB0byB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBlbnRpcmUgZm9ybS4NCgkgKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4NCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gIFRydWUgaWYgdGhlIHZhbHVlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuDQoJICoNCgkgKiBAc2luY2UgICAxMS4xDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpDQoJew0KCQkvLyBJZiB0aGUgZmllbGQgaXMgZW1wdHkgYW5kIG5vdCByZXF1aXJlZCwgdGhlIGZpZWxkIGlzIHZhbGlkLg0KCQkkcmVxdWlyZWQgPSAoKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3RydWUnIHx8IChzdHJpbmcpICRlbGVtZW50WydyZXF1aXJlZCddID09ICdyZXF1aXJlZCcpOw0KDQoJCWlmICghJHJlcXVpcmVkICYmIGVtcHR5KCR2YWx1ZSkpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJLy8gSWYgdGhlIHRsZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgY2hhbmdlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gcmVxdWlyZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgZm9yIGl0Lg0KCQkkdGxkID0gKChzdHJpbmcpICRlbGVtZW50Wyd0bGQnXSA9PSAndGxkJyB8fCAoc3RyaW5nKSAkZWxlbWVudFsndGxkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJaWYgKCR0bGQpDQoJCXsNCgkJCSR0aGlzLT5yZWdleCA9ICJeW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSkiDQoJCQkJLiAnPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSskJzsNCgkJfQ0KDQoJCS8vIERldGVybWluZSBpZiB0aGUgbXVsdGlwbGUgYXR0cmlidXRlIGlzIHByZXNlbnQNCgkJJG11bHRpcGxlID0gKChzdHJpbmcpICRlbGVtZW50WydtdWx0aXBsZSddID09ICd0cnVlJyB8fCAoc3RyaW5nKSAkZWxlbWVudFsnbXVsdGlwbGUnXSA9PSAnbXVsdGlwbGUnKTsNCg0KCQlpZiAoISRtdWx0aXBsZSkNCgkJew0KCQkJLy8gSGFuZGxlIGlkbiBlbWFpbCBhZGRyZXNzZXMgYnkgY29udmVydGluZyB0byBwdW55Y29kZS4NCgkJCSR2YWx1ZSA9IFxKU3RyaW5nUHVueWNvZGU6OmVtYWlsVG9QdW55Y29kZSgkdmFsdWUpOw0KDQoJCQkvLyBUZXN0IHRoZSB2YWx1ZSBhZ2FpbnN0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24uDQoJCQlpZiAoIXBhcmVudDo6dGVzdCgkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAsICRpbnB1dCwgJGZvcm0pKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSR2YWx1ZXMgPSBleHBsb2RlKCcsJywgJHZhbHVlKTsNCg0KCQkJZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpDQoJCQl7DQoJCQkJLy8gSGFuZGxlIGlkbiBlbWFpbCBhZGRyZXNzZXMgYnkgY29udmVydGluZyB0byBwdW55Y29kZS4NCgkJCQkkdmFsdWUgPSBcSlN0cmluZ1B1bnljb2RlOjplbWFpbFRvUHVueWNvZGUoJHZhbHVlKTsNCg0KCQkJCS8vIFRlc3QgdGhlIHZhbHVlIGFnYWluc3QgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4NCgkJCQlpZiAoIXBhcmVudDo6dGVzdCgkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAsICRpbnB1dCwgJGZvcm0pKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCS8vIENoZWNrIGlmIHdlIHNob3VsZCB0ZXN0IGZvciB1bmlxdWVuZXNzLiBUaGlzIG9ubHkgY2FuIGJlIHVzZWQgaWYgbXVsdGlwbGUgaXMgbm90IHRydWUNCgkJJHVuaXF1ZSA9ICgoc3RyaW5nKSAkZWxlbWVudFsndW5pcXVlJ10gPT0gJ3RydWUnIHx8IChzdHJpbmcpICRlbGVtZW50Wyd1bmlxdWUnXSA9PSAndW5pcXVlJyk7DQoNCgkJaWYgKCR1bmlxdWUgJiYgISRtdWx0aXBsZSkNCgkJew0KCQkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KCQkJJHF1ZXJ5ID0gJGRiLT5nZXRRdWVyeSh0cnVlKTsNCg0KCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJJHF1ZXJ5LT5zZWxlY3QoJ0NPVU5UKCopJykNCgkJCQktPmZyb20oJyNfX3VzZXJzJykNCgkJCQktPndoZXJlKCdlbWFpbCA9ICcgLiAkZGItPnF1b3RlKCR2YWx1ZSkpOw0KDQoJCQkvLyBHZXQgdGhlIHVzZXIgSUQgaWYgc2V0Lg0KCQkJJHVzZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCR1c2VySWQgPSAkZm9ybS0+Z2V0VmFsdWUoJ3VzZXInKSkpID8gJHVzZXJJZCA6ICgoJGlucHV0IGluc3RhbmNlb2YgUmVnaXN0cnkgJiYgKCR1c2VySWQgPSAkaW5wdXQtPmdldCgndXNlcicpKSkgPyAkdXNlcklkIDogMCk7DQoJCQkvLyBpZiBzdGlsbCBub3QgdXNlciBpcyBmb3VuZCBnZXQgbWVtYmVyIGlkDQoJCQlpZiAoJHVzZXJJZCA9PSAwKQ0KCQkJew0KCQkJCSRtZW1iZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRtZW1iZXJJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnaWQnKSkpID8gJG1lbWJlcklkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJG1lbWJlcklkID0gJGlucHV0LT5nZXQoJ2lkJykpKSA/ICRtZW1iZXJJZCA6IDApOw0KCQkJfQ0KCQkJLy8gZ2V0IGFjY291bnQgdHlwZSBpZiBuZWVkZWQNCgkJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCkNCgkJCXsNCgkJCQkkYWNjb3VudElkID0gKCRmb3JtIGluc3RhbmNlb2YgRm9ybSAmJiAoJGFjY291bnRJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnYWNjb3VudCcpKSkgPyAkYWNjb3VudElkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJGFjY291bnRJZCA9ICRpbnB1dC0+Z2V0KCdhY2NvdW50JykpKSA/ICRhY2NvdW50SWQgOiAwKTsNCgkJCQkvLyBtYWtlIHN1cmUgdGhlc2UgYWNjb3VudCBpcyBzZXQNCgkJCQlpZiAoJGFjY291bnRJZCA9PSAwKQ0KCQkJCXsNCgkJCQkJJGFjY291bnRJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAnYWNjb3VudCcpOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGdldCB1c2VyIHZhbHVlIGlmIG5vdCBzZXQgKGR1ZSB0byBwZXJtaXNzaW9ucykNCgkJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCAmJiAkYWNjb3VudElkID4gMCAmJiAoMSA9PSAkYWNjb3VudElkIHx8IDQgPT0gJGFjY291bnRJZCkpDQoJCQl7DQoJCQkJJHVzZXJJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAndXNlcicpOw0KCQkJfQ0KCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICR1c2VySWQpOw0KDQoJCQkvLyBTZXQgYW5kIHF1ZXJ5IHRoZSBkYXRhYmFzZS4NCgkJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCgkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCWlmICgkZHVwbGljYXRlKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiB0cnVlOw0KCX0=', 'Validate the member useremail', 1, '2018-09-16 00:43:44', ''),
(6, 'iban', 'CS8qKg0KCSogTWV0aG9kIHRvIGNoZWNrIGlmIElCQU4gaXMgdmFsaWQuDQoJKg0KCSogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuDQoJKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLg0KCSogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQ0KCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuDQoJKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4NCgkqDQoJKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSoNCgkqIEBzaW5jZSAgIDMuOS4wDQoJKi8NCglwdWJsaWMgZnVuY3Rpb24gdGVzdChcU2ltcGxlWE1MRWxlbWVudCAkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAgPSBudWxsLCBSZWdpc3RyeSAkaW5wdXQgPSBudWxsLCBGb3JtICRmb3JtID0gbnVsbCkNCgl7DQoJCSRjb3VudHJ5Q29kZU9mZnNldCA9IDA7IC8vIENPVU5UUllfQ09ERV9PRkZTRVQNCgkJJGNvdW50cnlDb2RlTGVuZ3RoID0gMjsgLy9DT1VOVFJZX0NPREVfTEVOR1RIDQoJCSRjaGVja3N1bU9mZnNldCA9IDI7IC8vQ0hFQ0tTVU1fT0ZGU0VUDQoJCSRjaGVja3N1bUxlbmd0aCA9IDI7IC8vQ0hFQ0tTVU1fTEVOR1RIDQoJCSRpbnN0aXR1dGVJZGVudGlmaWNhdGlvbk9mZnNldCA9IDQ7IC8vSU5TVElUVVRFX0lERU5USUZJQ0FUSU9OX09GRlNFVA0KDQoJCS8qKg0KCQkqIEB2YXIgYXJyYXkgQ291bnRyeSBjb2RlIHRvIHNpemUsIHJlZ2V4IGZvcm1hdCBmb3IgZWFjaCBjb3VudHJ5IHRoYXQgc3VwcG9ydHMgSUJBTg0KCQkqLw0KCQkkaWJhbkZvcm1hdE1hcCA9IGFycmF5KA0KCQkJJ0FBJyA9PiBhcnJheSgxMiwgJ15bQS1aMC05XXsxMn0kJyksDQoJCQknQUQnID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17NH1bQS1aMC05XXsxMn0kJyksDQoJCQknQUUnID0+IGFycmF5KDE5LCAnXlswLTldezN9WzAtOV17MTZ9JCcpLA0KCQkJJ0FMJyA9PiBhcnJheSgyNCwgJ15bMC05XXs4fVtBLVowLTldezE2fSQnKSwNCgkJCSdBTycgPT4gYXJyYXkoMjEsICdeWzAtOV17MjF9JCcpLA0KCQkJJ0FUJyA9PiBhcnJheSgxNiwgJ15bMC05XXs1fVswLTldezExfSQnKSwNCgkJCSdBWCcgPT4gYXJyYXkoMTQsICdeWzAtOV17Nn1bMC05XXs3fVswLTldezF9JCcpLA0KCQkJJ0FaJyA9PiBhcnJheSgyNCwgJ15bQS1aXXs0fVtBLVowLTldezIwfSQnKSwNCgkJCSdCQScgPT4gYXJyYXkoMTYsICdeWzAtOV17M31bMC05XXszfVswLTldezh9WzAtOV17Mn0kJyksDQoJCQknQkUnID0+IGFycmF5KDEyLCAnXlswLTldezN9WzAtOV17N31bMC05XXsyfSQnKSwNCgkJCSdCRicgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ0JHJyA9PiBhcnJheSgxOCwgJ15bQS1aXXs0fVswLTldezR9WzAtOV17Mn1bQS1aMC05XXs4fSQnKSwNCgkJCSdCSCcgPT4gYXJyYXkoMTgsICdeW0EtWl17NH1bQS1aMC05XXsxNH0kJyksDQoJCQknQkknID0+IGFycmF5KDEyLCAnXlswLTldezEyfSQnKSwNCgkJCSdCSicgPT4gYXJyYXkoMjQsICdeW0EtWl17MX1bMC05XXsyM30kJyksDQoJCQknQkwnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdCUicgPT4gYXJyYXkoMjUsICdeWzAtOV17OH1bMC05XXs1fVswLTldezEwfVtBLVpdezF9W0EtWjAtOV17MX0kJyksDQoJCQknQ0gnID0+IGFycmF5KDE3LCAnXlswLTldezV9W0EtWjAtOV17MTJ9JCcpLA0KCQkJJ0NJJyA9PiBhcnJheSgyNCwgJ15bQS1aXXsxfVswLTldezIzfSQnKSwNCgkJCSdDTScgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ0NSJyA9PiBhcnJheSgxNywgJ15bMC05XXs0fVswLTldezEzfSQnKSwNCgkJCSdDVicgPT4gYXJyYXkoMjEsICdeWzAtOV17MjF9JCcpLA0KCQkJJ0NZJyA9PiBhcnJheSgyNCwgJ15bMC05XXszfVswLTldezV9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ0NaJyA9PiBhcnJheSgyMCwgJ15bMC05XXs0fVswLTldezZ9WzAtOV17MTB9JCcpLA0KCQkJJ0RFJyA9PiBhcnJheSgxOCwgJ15bMC05XXs4fVswLTldezEwfSQnKSwNCgkJCSdESycgPT4gYXJyYXkoMTQsICdeWzAtOV17NH1bMC05XXs5fVswLTldezF9JCcpLA0KCQkJJ0RPJyA9PiBhcnJheSgyNCwgJ15bQS1aMC05XXs0fVswLTldezIwfSQnKSwNCgkJCSdEWicgPT4gYXJyYXkoMjAsICdeWzAtOV17MjB9JCcpLA0KCQkJJ0VFJyA9PiBhcnJheSgxNiwgJ15bMC05XXsyfVswLTldezJ9WzAtOV17MTF9WzAtOV17MX0kJyksDQoJCQknRVMnID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17NH1bMC05XXsxfVswLTldezF9WzAtOV17MTB9JCcpLA0KCQkJJ0ZJJyA9PiBhcnJheSgxNCwgJ15bMC05XXs2fVswLTldezd9WzAtOV17MX0kJyksDQoJCQknRk8nID0+IGFycmF5KDE0LCAnXlswLTldezR9WzAtOV17OX1bMC05XXsxfSQnKSwNCgkJCSdGUicgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ0dCJyA9PiBhcnJheSgxOCwgJ15bQS1aXXs0fVswLTldezZ9WzAtOV17OH0kJyksDQoJCQknR0UnID0+IGFycmF5KDE4LCAnXltBLVpdezJ9WzAtOV17MTZ9JCcpLA0KCQkJJ0dGJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknR0knID0+IGFycmF5KDE5LCAnXltBLVpdezR9W0EtWjAtOV17MTV9JCcpLA0KCQkJJ0dMJyA9PiBhcnJheSgxNCwgJ15bMC05XXs0fVswLTldezl9WzAtOV17MX0kJyksDQoJCQknR1AnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdHUicgPT4gYXJyYXkoMjMsICdeWzAtOV17M31bMC05XXs0fVtBLVowLTldezE2fSQnKSwNCgkJCSdHVCcgPT4gYXJyYXkoMjQsICdeW0EtWjAtOV17NH1bQS1aMC05XXsyMH0kJyksDQoJCQknSFInID0+IGFycmF5KDE3LCAnXlswLTldezd9WzAtOV17MTB9JCcpLA0KCQkJJ0hVJyA9PiBhcnJheSgyNCwgJ15bMC05XXszfVswLTldezR9WzAtOV17MX1bMC05XXsxNX1bMC05XXsxfSQnKSwNCgkJCSdJRScgPT4gYXJyYXkoMTgsICdeW0EtWl17NH1bMC05XXs2fVswLTldezh9JCcpLA0KCQkJJ0lMJyA9PiBhcnJheSgxOSwgJ15bMC05XXszfVswLTldezN9WzAtOV17MTN9JCcpLA0KCQkJJ0lSJyA9PiBhcnJheSgyMiwgJ15bMC05XXsyMn0kJyksDQoJCQknSVMnID0+IGFycmF5KDIyLCAnXlswLTldezR9WzAtOV17Mn1bMC05XXs2fVswLTldezEwfSQnKSwNCgkJCSdJVCcgPT4gYXJyYXkoMjMsICdeW0EtWl17MX1bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTJ9JCcpLA0KCQkJJ0pPJyA9PiBhcnJheSgyNiwgJ15bQS1aXXs0fVswLTldezR9W0EtWjAtOV17MTh9JCcpLA0KCQkJJ0tXJyA9PiBhcnJheSgyNiwgJ15bQS1aXXs0fVtBLVowLTldezIyfSQnKSwNCgkJCSdLWicgPT4gYXJyYXkoMTYsICdeWzAtOV17M31bQS1aMC05XXsxM30kJyksDQoJCQknTEInID0+IGFycmF5KDI0LCAnXlswLTldezR9W0EtWjAtOV17MjB9JCcpLA0KCQkJJ0xDJyA9PiBhcnJheSgyOCwgJ15bQS1aXXs0fVtBLVowLTldezI0fSQnKSwNCgkJCSdMSScgPT4gYXJyYXkoMTcsICdeWzAtOV17NX1bQS1aMC05XXsxMn0kJyksDQoJCQknTFQnID0+IGFycmF5KDE2LCAnXlswLTldezV9WzAtOV17MTF9JCcpLA0KCQkJJ0xVJyA9PiBhcnJheSgxNiwgJ15bMC05XXszfVtBLVowLTldezEzfSQnKSwNCgkJCSdMVicgPT4gYXJyYXkoMTcsICdeW0EtWl17NH1bQS1aMC05XXsxM30kJyksDQoJCQknTUMnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdNRCcgPT4gYXJyYXkoMjAsICdeW0EtWjAtOV17Mn1bQS1aMC05XXsxOH0kJyksDQoJCQknTUUnID0+IGFycmF5KDE4LCAnXlswLTldezN9WzAtOV17MTN9WzAtOV17Mn0kJyksDQoJCQknTUYnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdNRycgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ01LJyA9PiBhcnJheSgxNSwgJ15bMC05XXszfVtBLVowLTldezEwfVswLTldezJ9JCcpLA0KCQkJJ01MJyA9PiBhcnJheSgyNCwgJ15bQS1aXXsxfVswLTldezIzfSQnKSwNCgkJCSdNUScgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ01SJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9WzAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknTVQnID0+IGFycmF5KDI3LCAnXltBLVpdezR9WzAtOV17NX1bQS1aMC05XXsxOH0kJyksDQoJCQknTVUnID0+IGFycmF5KDI2LCAnXltBLVpdezR9WzAtOV17Mn1bMC05XXsyfVswLTldezEyfVswLTldezN9W0EtWl17M30kJyksDQoJCQknTVonID0+IGFycmF5KDIxLCAnXlswLTldezIxfSQnKSwNCgkJCSdOQycgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ05MJyA9PiBhcnJheSgxNCwgJ15bQS1aXXs0fVswLTldezEwfSQnKSwNCgkJCSdOTycgPT4gYXJyYXkoMTEsICdeWzAtOV17NH1bMC05XXs2fVswLTldezF9JCcpLA0KCQkJJ1BGJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknUEsnID0+IGFycmF5KDIwLCAnXltBLVpdezR9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1BMJyA9PiBhcnJheSgyNCwgJ15bMC05XXs4fVswLTldezE2fSQnKSwNCgkJCSdQTScgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ1BTJyA9PiBhcnJheSgyNSwgJ15bQS1aXXs0fVtBLVowLTldezIxfSQnKSwNCgkJCSdQVCcgPT4gYXJyYXkoMjEsICdeWzAtOV17NH1bMC05XXs0fVswLTldezExfVswLTldezJ9JCcpLA0KCQkJJ1FBJyA9PiBhcnJheSgyNSwgJ15bQS1aXXs0fVswLTldezR9W0EtWjAtOV17MTd9JCcpLA0KCQkJJ1JFJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknUk8nID0+IGFycmF5KDIwLCAnXltBLVpdezR9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1JTJyA9PiBhcnJheSgxOCwgJ15bMC05XXszfVswLTldezEzfVswLTldezJ9JCcpLA0KCQkJJ1NBJyA9PiBhcnJheSgyMCwgJ15bMC05XXsyfVtBLVowLTldezE4fSQnKSwNCgkJCSdTQycgPT4gYXJyYXkoMjcsICdeW0EtWl17NH1bMC05XXs0fVswLTldezE2fVtBLVpdezN9JCcpLA0KCQkJJ1NFJyA9PiBhcnJheSgyMCwgJ15bMC05XXszfVswLTldezE2fVswLTldezF9JCcpLA0KCQkJJ1NJJyA9PiBhcnJheSgxNSwgJ15bMC05XXs1fVswLTldezh9WzAtOV17Mn0kJyksDQoJCQknU0snID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17Nn1bMC05XXsxMH0kJyksDQoJCQknU00nID0+IGFycmF5KDIzLCAnXltBLVpdezF9WzAtOV17NX1bMC05XXs1fVtBLVowLTldezEyfSQnKSwNCgkJCSdTTicgPT4gYXJyYXkoMjQsICdeW0EtWl17MX1bMC05XXsyM30kJyksDQoJCQknU1QnID0+IGFycmF5KDIxLCAnXlswLTldezh9WzAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknVEYnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdUTCcgPT4gYXJyYXkoMTksICdeWzAtOV17M31bMC05XXsxNH1bMC05XXsyfSQnKSwNCgkJCSdUTicgPT4gYXJyYXkoMjAsICdeWzAtOV17Mn1bMC05XXszfVswLTldezEzfVswLTldezJ9JCcpLA0KCQkJJ1RSJyA9PiBhcnJheSgyMiwgJ15bMC05XXs1fVswLTldezF9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1VBJyA9PiBhcnJheSgyNSwgJ15bMC05XXs2fVtBLVowLTldezE5fSQnKSwNCgkJCSdWRycgPT4gYXJyYXkoMjAsICdeW0EtWl17NH1bMC05XXsxNn0kJyksDQoJCQknV0YnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdYSycgPT4gYXJyYXkoMTYsICdeWzAtOV17NH1bMC05XXsxMH1bMC05XXsyfSQnKSwNCgkJCSdZVCcgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpDQoJCSk7DQoNCgkJLy8gQ0xFQU4gVVAgSUJBTg0KCQkkaWJhbiA9IHByZWdfcmVwbGFjZSgnL1teYS16MC05XSsvaScsICcnLCB0cmltKHN0cnRvdXBwZXIoJHZhbHVlKSkpOw0KDQoJCS8vIENIRUNLIENvdW50cnkgQ29kZQ0KCQkkY291bnRyeUNvZGUgPSBzdWJzdHIoJGliYW4sICRjb3VudHJ5Q29kZU9mZnNldCwgJGNvdW50cnlDb2RlTGVuZ3RoKTsNCgkJJGlzQ291bnRyeUNvZGVWYWxpZCA9ICEoaXNzZXQoJGliYW5Gb3JtYXRNYXBbJGNvdW50cnlDb2RlXSkgPT09IGZhbHNlKTsNCg0KCQkkdmFsaWRMZW5ndGggPSAkY291bnRyeUNvZGVMZW5ndGggKyAkY2hlY2tzdW1MZW5ndGggKyAkaWJhbkZvcm1hdE1hcFskY291bnRyeUNvZGVdWzBdOw0KCQkkaXNMZW5ndGhWYWxpZCA9IHN0cmxlbigkaWJhbikgPT09ICR2YWxpZExlbmd0aDsNCg0KCQkkYWNjb3VudElkZW50aWZpY2F0aW9uID0gc3Vic3RyKCRpYmFuLCAkaW5zdGl0dXRlSWRlbnRpZmljYXRpb25PZmZzZXQpOw0KCQkkaXNGb3JtYXRWYWxpZCA9ICEocHJlZ19tYXRjaCgnLycgLiAkaWJhbkZvcm1hdE1hcFskY291bnRyeUNvZGVdWzFdIC4gJy8nLCAkYWNjb3VudElkZW50aWZpY2F0aW9uKSAhPT0gMSk7DQoNCgkJJGNoZWNrc3VtID0gc3Vic3RyKCRpYmFuLCAkY2hlY2tzdW1PZmZzZXQsICRjaGVja3N1bUxlbmd0aCk7DQoJCSRhY2NvdW50SWRlbnRpZmljYXRpb24gPSBzdWJzdHIoJGliYW4sICRpbnN0aXR1dGVJZGVudGlmaWNhdGlvbk9mZnNldCk7DQoNCgkJLy8gR0VUIE5VTUVSSUMgQ09VTlRSWSBDT0RFDQoJCSRudW1lcmljUmVwcmVzZW50YXRpb24gPSAnJzsNCgkJJGxldHRlclJlcHJlc2VudGF0aW9uID0gJGNvdW50cnlDb2RlOw0KCQlmb3JlYWNoIChzdHJfc3BsaXQoJGxldHRlclJlcHJlc2VudGF0aW9uKSBhcyAkY2hhcikNCgkJew0KCQkJJG9yZCA9IG9yZCgkY2hhcik7DQoJCQlpZiAoJG9yZCA+PSA2NSAmJiAkb3JkIDw9IDkwKQ0KCQkJew0KCQkJCSRudW1lcmljUmVwcmVzZW50YXRpb24gLj0gKHN0cmluZykgKCRvcmQgLSA1NSk7DQoJCQl9DQoJCQllbHNlaWYgKCRvcmQgPj0gNDggJiYgJG9yZCA8PSA1NykNCgkJCXsNCgkJCQkkbnVtZXJpY1JlcHJlc2VudGF0aW9uIC49IChzdHJpbmcpICgkb3JkIC0gNDgpOw0KCQkJfQ0KCQl9DQoJCSRudW1lcmljQ291bnRyeUNvZGUgPSAkbnVtZXJpY1JlcHJlc2VudGF0aW9uOw0KDQoJCSRudW1lcmljUmVwcmVzZW50YXRpb24gPSAnJzsNCgkJJGxldHRlclJlcHJlc2VudGF0aW9uID0gJGFjY291bnRJZGVudGlmaWNhdGlvbjsNCgkJZm9yZWFjaCAoc3RyX3NwbGl0KCRsZXR0ZXJSZXByZXNlbnRhdGlvbikgYXMgJGNoYXIpDQoJCXsNCgkJCSRvcmQgPSBvcmQoJGNoYXIpOw0KCQkJaWYgKCRvcmQgPj0gNjUgJiYgJG9yZCA8PSA5MCkNCgkJCXsNCgkJCQkkbnVtZXJpY1JlcHJlc2VudGF0aW9uIC49IChzdHJpbmcpICgkb3JkIC0gNTUpOw0KCQkJfQ0KCQkJZWxzZWlmICgkb3JkID49IDQ4ICYmICRvcmQgPD0gNTcpDQoJCQl7DQoJCQkJJG51bWVyaWNSZXByZXNlbnRhdGlvbiAuPSAoc3RyaW5nKSAoJG9yZCAtIDQ4KTsNCgkJCX0NCgkJfQ0KCQkkbnVtZXJpY0FjY291bnRJZGVudGlmaWNhdGlvbiA9ICRudW1lcmljUmVwcmVzZW50YXRpb247DQoJCSRpbnZlcnRlZEliYW4gPSAkbnVtZXJpY0FjY291bnRJZGVudGlmaWNhdGlvbiAuICRudW1lcmljQ291bnRyeUNvZGUgLiAkY2hlY2tzdW07DQoNCgkJLy8gQ0hFQ0tTVU0gQkNNT0QNCgkJJHggPSAkaW52ZXJ0ZWRJYmFuOw0KCQkkeSA9IDk3Ow0KCQlpZiAoIWZ1bmN0aW9uX2V4aXN0cygnYmNtb2QnKSkNCgkJew0KCQkJJHRha2UgPSA1Ow0KCQkJJG1vZCA9ICcnOw0KCQkJZG8gew0KCQkJCSRhID0gKGludCkkbW9kIC4gc3Vic3RyKCR4LCAwLCAkdGFrZSk7DQoJCQkJJHggPSBzdWJzdHIoJHgsICR0YWtlKTsNCgkJCQkkbW9kID0gJGEgJSAkeTsNCgkJCX0gd2hpbGUgKHN0cmxlbigkeCkpOw0KCQkJJGJjbW9kID0gKHN0cmluZykkbW9kOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJGJjbW9kID0gYmNtb2QoJHgsICR5KTsNCgkJfQ0KDQoJCSRpc0NoZWNrc3VtVmFsaWQgPSAkYmNtb2QgPT09ICcxJzsNCg0KCQlpZiAoISRpc0NvdW50cnlDb2RlVmFsaWQgfHwgISRpc0xlbmd0aFZhbGlkIHx8ICEkaXNGb3JtYXRWYWxpZCB8fCAhJGlzQ2hlY2tzdW1WYWxpZCkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkgICAgcmV0dXJuIHRydWU7DQoJCX0NCgl9', 'IBAN validation', 1, '2019-02-12 23:14:43', ''),
(8, 'int', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoYXQgYW4gaW50ZWdlciB2YWx1ZSB3YXMgYWRkZWQuDQoJICoNCgkgKiBAcGFyYW0gICBcU2ltcGxlWE1MRWxlbWVudCAgJGVsZW1lbnQgIFRoZSBTaW1wbGVYTUxFbGVtZW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGA8ZmllbGQ+YCB0YWcgZm9yIHRoZSBmb3JtIGZpZWxkIG9iamVjdC4NCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAgICAgICAkZ3JvdXAgICAgVGhlIGZpZWxkIG5hbWUgZ3JvdXAgY29udHJvbCB2YWx1ZS4gVGhpcyBhY3RzIGFzIGFuIGFycmF5IGNvbnRhaW5lciBmb3IgdGhlIGZpZWxkLg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUgaWYgdGhlIGZpZWxkIGhhcyBuYW1lPSJmb28iIGFuZCB0aGUgZ3JvdXAgdmFsdWUgaXMgc2V0IHRvICJiYXIiIHRoZW4gdGhlDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuDQoJICogQHBhcmFtICAgUmVnaXN0cnkgICAgICAgICAgICRpbnB1dCAgICBBbiBvcHRpb25hbCBSZWdpc3RyeSBvYmplY3Qgd2l0aCB0aGUgZW50aXJlIGRhdGEgc2V0IHRvIHZhbGlkYXRlIGFnYWluc3QgdGhlIGVudGlyZSBmb3JtLg0KCSAqIEBwYXJhbSAgIEZvcm0gICAgICAgICAgICAgICAkZm9ybSAgICAgVGhlIGZvcm0gb2JqZWN0IGZvciB3aGljaCB0aGUgZmllbGQgaXMgYmVpbmcgdGVzdGVkLg0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbiAgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdmFsaWQgaW50ZWdlciwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpDQoJew0KCQkvLyBDaGVjayBpZiB0aGUgZmllbGQgaXMgcmVxdWlyZWQuDQoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJLy8gSWYgdGhlIHZhbHVlIGlzIGVtcHR5IGFuZCB0aGUgZmllbGQgaXMgbm90IHJlcXVpcmVkIHJldHVybiBUcnVlLg0KCQlpZiAoKCR2YWx1ZSA9PT0gJycgfHwgJHZhbHVlID09PSBudWxsKSAmJiAhICRyZXF1aXJlZCkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQkvLyBub3cgdmFsaWRhdGUgdGhlIHZhbHVlIHRvIGJlIGFuIGludGVnZXINCgkJLy8gd2UgbmVlZCB0byB2YWxpZGF0ZSBhIHN0cmluZyB3aXRoIHRoZSBpbnRlZ2VyIGluIGl0DQoJCS8vIHNpbmNlIHRoaXMgaXMgaG93IEpvb21sYSBwYXNzZXMgdGhlIHZhbHVlIHRvIHRoZSB0ZXN0IG1ldGhvZA0KCQkvLyBzbyB3ZSB1c2UgdHlwZSBjb2VyY2lvbiBhbG9uZyB3aXRoIGlzX251bWVyaWMNCgkJcmV0dXJuIGlzX251bWVyaWMoJHZhbHVlKSAmJiBpc19pbnQoKyR2YWx1ZSk7DQoJCS8vIGlmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEuLi4gbGV0cyBoZWFyIGl0Lg0KCX0=', 'To validate and integer', 1, '2019-07-18 14:29:14', ''),
(9, 'guid', 'CS8qKgoJICogTWV0aG9kIHRvIHRlc3QgZm9yIGEgR2xvYmFsbHkgVW5pcXVlIElkZW50aWZpZXIuCgkgKgoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLgoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uCgkgKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4KCSAqCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpCgl7CgkJJHZhbHVlID0gdHJpbSgkdmFsdWUpOwoKCQkvLyBJZiB0aGUgZmllbGQgaXMgZW1wdHkgYW5kIG5vdCByZXF1aXJlZCwgdGhlIGZpZWxkIGlzIHZhbGlkLgoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7CgoJCWlmICghJHJlcXVpcmVkICYmIGVtcHR5KCR2YWx1ZSkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCS8vIHRoYW5rcyB0byBMZXdpZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUxNTQ1Ni8xNDI5Njc3CgkJcmV0dXJuIHByZWdfbWF0Y2goIi9eKFx7KT9bYS1mXGRdezh9KC1bYS1mXGRdezR9KXs0fVthLWZcZF17OH0oPygxKVx9KSQvaSIsICR2YWx1ZSk7Cgl9Cg==', 'Globally Unique Identifier', 1, '2019-10-10 23:13:41', ''),
(10, 'uniquetoken', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBmaWVsZCB2YWx1ZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gR2V0IHRoZSBleHRyYSBmaWVsZCBjaGVjayBhdHRyaWJ1dGUuDQoJCSRpZCA9ICgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSkgPyAkaW5wdXQtPmdldCgnaWQnLCBudWxsKSA6IG51bGw7DQoNCgkJLy8gZ2V0IHRoZSBjb21wb25lbnQgJiB0YWJsZSBuYW1lDQoJCSR0YWJsZSA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0pID8gJGZvcm0tPmdldE5hbWUoKSA6ICcnOw0KDQoJCS8vIGdldCB0aGUgY29sdW1uIG5hbWUNCgkJJG5hbWUgPSAoYXJyYXkpICRlbGVtZW50LT5hdHRyaWJ1dGVzKCktPnsnbmFtZSd9Ow0KCQkkY29sdW1uID0gKHN0cmluZykgdHJpbSgkbmFtZVswXSk7DQoJCQ0KCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgYSB2YWx1ZQ0KCQlpZiAoc3RybGVuKCR2YWx1ZSkgJiYgc3RybGVuKCR0YWJsZSkgPiAzICYmIHN0cnBvcygkdGFibGUsICdbW1tjb21wb25lbnRdXV0uJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSB0YWJsZSBuYW1lDQoJCQkkdGFibGVBcnJheSA9IGV4cGxvZGUoJy4nLCAkdGFibGUpOw0KCQkJLy8gZG8gd2UgaGF2ZSB0d28gdmFsdWVzDQoJCQlpZiAoY291bnQoIChhcnJheSkgJHRhYmxlQXJyYXkpID09IDIpDQoJCQl7DQoJCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJCSRxdWVyeS0+c2VsZWN0KCdDT1VOVCgqKScpDQoJCQkJCS0+ZnJvbSgnI19fW1tbY29tcG9uZW50XV1dXycgLiAoc3RyaW5nKSAkdGFibGVBcnJheVsxXSkNCgkJCQkJLT53aGVyZSgkZGItPnF1b3RlTmFtZSgkY29sdW1uKSAuICcgPSAnIC4gJGRiLT5xdW90ZSgkdmFsdWUpKTsNCg0KCQkJCS8vIHJlbW92ZSB0aGlzIGl0ZW0gZnJvbSB0aGUgbGlzdA0KCQkJCWlmICgkaWQgPiAwKQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICRpZCk7DQoJCQkJfQ0KDQoJCQkJLy8gU2V0IGFuZCBxdWVyeSB0aGUgZGF0YWJhc2UuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCQlpZiAoJGR1cGxpY2F0ZSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ==', 'unique token value', 1, '2020-05-02 13:31:14', ''),
(11, 'onlypastdate', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBjYWxlbmRhciB2YWx1ZSBmb3IgYSB2YWxpZCBwYXJ0cy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMy43LjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdGVzdChcU2ltcGxlWE1MRWxlbWVudCAkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAgPSBudWxsLCBSZWdpc3RyeSAkaW5wdXQgPSBudWxsLCBGb3JtICRmb3JtID0gbnVsbCkNCgl7DQoJCS8vIElmIHRoZSBmaWVsZCBpcyBlbXB0eSBhbmQgbm90IHJlcXVpcmVkLCB0aGUgZmllbGQgaXMgdmFsaWQuDQoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJaWYgKCEkcmVxdWlyZWQgJiYgZW1wdHkoJHZhbHVlKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQl0cnkNCgkJew0KCQkJLy8gbWFrZSBzdXJlIHdlIGFyZSBpbiBBdXN0cmFsaWENCgkJCWRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoJ0F1c3RyYWxpYS9TeWRuZXknKTsNCgkJCWlmIChzdHJwb3MoJHZhbHVlLCAnLycpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdmFsdWUgPSBpbXBsb2RlKCctJywgZXhwbG9kZSgnLycsICR2YWx1ZSkpOw0KCQkJfQ0KCQkJJHZhbHVlID0gc3RydG90aW1lKCR2YWx1ZSk7DQoJCQkvLyB3ZSBjaGVjayB0aGF0IHRoaXMgZGF0ZSBpcyBub3QgaW4gdGhlIGZ1dHVyZQ0KCQkJaWYgKCR2YWx1ZSA8PSB0aW1lKCkpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJY2F0Y2ggKFxFeGNlcHRpb24gJGUpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', 'Only allow dates in the past', 1, '2020-06-27 15:36:56', '');
--
-- Dumping data for table `#__componentbuilder_field`
--
INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`, `add_javascript_view_footer`, `add_javascript_views_footer`, `css_view`, `css_views`, `datadefault`, `datadefault_other`, `datalenght`, `datalenght_other`, `datatype`, `indexes`, `javascript_view_footer`, `javascript_views_footer`, `name`, `null_switch`, `store`, `fieldtype`, `xml`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`, `on_get_model_field`, `on_save_model_field`, `initiator_on_get_model`, `initiator_on_save_model`, `params`) VALUES
(23, '', '', '', '', '', '', '', '', 64, '', 'CHAR', 2, '', '', 'Alias', 'NOT NULL', '', 24, '\"
Here as in all Joomla backend list views you can perform all the common tasks, and more.
\r\nYou can create a component by clicking on the\r\n button in the toolbar, this will open a window where you can add all the needed values to create a new component.
\r\nYou can edit components in two ways.
\r\nYou can publish, unpublish, archive, and trash any component by clicking in the boxes next the component names and then click on the corresponding button of the task you want to perform. This will change the state of all the components you’ve selected.
\r\nIf you have trashed a component it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed components. To completely remove these components from your system do the following: first select all the components you want to permanently delete by clicking in the boxes next to the component names and then click on the\r\n button in the toolbar. This will permanently delete the components from the database. On the other hand if you would like to change the status of the component to publish, unpublish or archive, click in the boxes next to the component names and then click on the corresponding button of the task you want to perform. This will change the state of all the components you’ve selected.
\r\nWhen another user on your Joomla website opens a component the system checks the component out to that user. A little lock will show up next to the component name. When you hover over the lock it will show to you who checked it out and when.
\r\nComponent builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
\r\nIf this feature has not yet checked-in any of the components that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the component names and then click on the\r\n button in the toolbar, or simply click on the little lock. This will then check in the component, which will mean that it removes the component from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
\r\nYou can use the Batch feature to update or copy many components at once by clicking in the boxes next the component names and then click on the\r\n button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the\r\n button. Once completed this batch feature will have either copied or updated all the components according to the task you selected.
\r\nThe export and import feature is some of the most exciting features to the list view of components. With them you can update and create many components at once.
\r\nThe export option only exports the components selected. So to export all components you must change the limited number of components that are being loaded to \"All\". The box that limits the number of components being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the component records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the components. Next click on the\r\n button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
\r\nThe import option can be used to create components or update existing components. The way to update existing components is to use the same id as the component you want to update. Best way to do this is to first export the components you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new components via an import, simple leave the id field empty.
\r\nSo once you have your excel document ready you will again open the list view of components and click on the\r\n button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
\r\nOnce you have the file selected you can click on the\r\n or\r\n button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
\r\nWhen the field to column relationship has correctly been mapped you can click on the\r\n button at the bottom of the page. This should return you to the list view of components with a success message.
\r\nIn the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Components', 2, '', '', 1, 12, '', 1), (2, 'admin_views', 'welcome-to-the-list-view-of-admin-views', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create an admin view by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new admin view.
You can edit admin views in two ways.
You can publish, unpublish, archive, and trash any admin view by clicking in the boxes next the admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the admin views you’ve selected.
If you have trashed an admin view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed admin views. To completely remove these admin views from your system do the following: first select all the admin views you want to permanently delete by clicking in the boxes next to the admin view names and then click on the button in the toolbar. This will permanently delete the admin views from the database. On the other hand if you would like to change the status of the admin view to publish, unpublish or archive, click in the boxes next to the admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the admin views you’ve selected.
When another user on your Joomla website opens an admin view the system checks the admin view out to that user. A little lock will show up next to the admin view name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the admin views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the admin view names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the admin view, which will mean that it removes the admin view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many admin views at once by clicking in the boxes next the admin view names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the admin views according to the task you selected.
The export and import feature is some of the most exciting features to the list view of admin views. With them you can update and create many admin views at once.
The export option only exports the admin views selected. So to export all admin views you must change the limited number of admin views that are being loaded to \"All\". The box that limits the number of admin views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the admin view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the admin views. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create admin views or update existing admin views. The way to update existing admin views is to use the same id as the admin view you want to update. Best way to do this is to first export the admin views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new admin views via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of admin views and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of admin views with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Admin Views', 2, '', '', 1, 5, '', 2), (3, 'custom_admin_views', 'welcome-to-the-list-view-of-custom-admin-views', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a custom admin view by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new custom admin view.
You can edit custom admin views in two ways.
You can publish, unpublish, archive, and trash any custom admin view by clicking in the boxes next the custom admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the custom admin views you’ve selected.
If you have trashed a custom admin view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed custom admin views. To completely remove these custom admin views from your system do the following: first select all the custom admin views you want to permanently delete by clicking in the boxes next to the custom admin view names and then click on the button in the toolbar. This will permanently delete the custom admin views from the database. On the other hand if you would like to change the status of the custom admin view to publish, unpublish or archive, click in the boxes next to the custom admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the custom admin views you’ve selected.
When another user on your Joomla website opens a custom admin view the system checks the custom admin view out to that user. A little lock will show up next to the custom admin view name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the custom admin views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the custom admin view names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the custom admin view, which will mean that it removes the custom admin view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many custom admin views at once by clicking in the boxes next the custom admin view names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the custom admin views according to the task you selected.
The export and import feature is some of the most exciting features to the list view of custom admin views. With them you can update and create many custom admin views at once.
The export option only exports the custom admin views selected. So to export all custom admin views you must change the limited number of custom admin views that are being loaded to \"All\". The box that limits the number of custom admin views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the custom admin view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the custom admin views. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create custom admin views or update existing custom admin views. The way to update existing custom admin views is to use the same id as the custom admin view you want to update. Best way to do this is to first export the custom admin views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new custom admin views via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of custom admin views and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of custom admin views with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Custom Admin Views', 2, '', '', 1, 4, '', 3), (4, 'site_views', 'welcome-to-the-list-view-of-site-views', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a site view by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new site view.
You can edit site views in two ways.
You can publish, unpublish, archive, and trash any site view by clicking in the boxes next the site view names and then click on the corresponding button of the task you want to perform. This will change the state of all the site views you’ve selected.
If you have trashed a site view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed site views. To completely remove these site views from your system do the following: first select all the site views you want to permanently delete by clicking in the boxes next to the site view names and then click on the button in the toolbar. This will permanently delete the site views from the database. On the other hand if you would like to change the status of the site view to publish, unpublish or archive, click in the boxes next to the site view names and then click on the corresponding button of the task you want to perform. This will change the state of all the site views you’ve selected.
When another user on your Joomla website opens a site view the system checks the site view out to that user. A little lock will show up next to the site view name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the site views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the site view names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the site view, which will mean that it removes the site view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many site views at once by clicking in the boxes next the site view names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the site views according to the task you selected.
The export and import feature is some of the most exciting features to the list view of site views. With them you can update and create many site views at once.
The export option only exports the site views selected. So to export all site views you must change the limited number of site views that are being loaded to \"All\". The box that limits the number of site views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the site view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the site views. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create site views or update existing site views. The way to update existing site views is to use the same id as the site view you want to update. Best way to do this is to first export the site views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new site views via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of site views and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of site views with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Site Views', 2, '', '', 1, 3, '', 4), (5, 'templates', 'welcome-to-the-list-view-of-templates', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a template by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new template.
You can edit templates in two ways.
You can publish, unpublish, archive, and trash any template by clicking in the boxes next the template names and then click on the corresponding button of the task you want to perform. This will change the state of all the templates you’ve selected.
If you have trashed a template it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed templates. To completely remove these templates from your system do the following: first select all the templates you want to permanently delete by clicking in the boxes next to the template names and then click on the button in the toolbar. This will permanently delete the templates from the database. On the other hand if you would like to change the status of the template to publish, unpublish or archive, click in the boxes next to the template names and then click on the corresponding button of the task you want to perform. This will change the state of all the templates you’ve selected.
When another user on your Joomla website opens a template the system checks the template out to that user. A little lock will show up next to the template name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the templates that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the template names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the template, which will mean that it removes the template from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many templates at once by clicking in the boxes next the template names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the templates according to the task you selected.
The export and import feature is some of the most exciting features to the list view of templates. With them you can update and create many templates at once.
The export option only exports the templates selected. So to export all templates you must change the limited number of templates that are being loaded to \"All\". The box that limits the number of templates being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the template records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the templates. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create templates or update existing templates. The way to update existing templates is to use the same id as the template you want to update. Best way to do this is to first export the templates you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new templates via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of templates and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of templates with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Templates', 2, '', '', 1, 4, '', 5), (6, 'layouts', 'welcome-to-the-list-view-of-layouts', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a layout by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new layout.
You can edit layouts in two ways.
You can publish, unpublish, archive, and trash any layout by clicking in the boxes next the layout names and then click on the corresponding button of the task you want to perform. This will change the state of all the layouts you’ve selected.
If you have trashed a layout it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed layouts. To completely remove these layouts from your system do the following: first select all the layouts you want to permanently delete by clicking in the boxes next to the layout names and then click on the button in the toolbar. This will permanently delete the layouts from the database. On the other hand if you would like to change the status of the layout to publish, unpublish or archive, click in the boxes next to the layout names and then click on the corresponding button of the task you want to perform. This will change the state of all the layouts you’ve selected.
When another user on your Joomla website opens a layout the system checks the layout out to that user. A little lock will show up next to the layout name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the layouts that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the layout names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the layout, which will mean that it removes the layout from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many layouts at once by clicking in the boxes next the layout names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the layouts according to the task you selected.
The export and import feature is some of the most exciting features to the list view of layouts. With them you can update and create many layouts at once.
The export option only exports the layouts selected. So to export all layouts you must change the limited number of layouts that are being loaded to \"All\". The box that limits the number of layouts being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the layout records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the layouts. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create layouts or update existing layouts. The way to update existing layouts is to use the same id as the layout you want to update. Best way to do this is to first export the layouts you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new layouts via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of layouts and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of layouts with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Layouts', 2, '', '', 1, 3, '', 6), (7, 'dynamic_gets', 'welcome-to-the-list-view-of-dynamic-gets', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a dynamic get by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new dynamic get.
You can edit dynamic gets in two ways.
You can publish, unpublish, archive, and trash any dynamic get by clicking in the boxes next the dynamic get names and then click on the corresponding button of the task you want to perform. This will change the state of all the dynamic gets you’ve selected.
If you have trashed a dynamic get it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed dynamic gets. To completely remove these dynamic gets from your system do the following: first select all the dynamic gets you want to permanently delete by clicking in the boxes next to the dynamic get names and then click on the button in the toolbar. This will permanently delete the dynamic gets from the database. On the other hand if you would like to change the status of the dynamic get to publish, unpublish or archive, click in the boxes next to the dynamic get names and then click on the corresponding button of the task you want to perform. This will change the state of all the dynamic gets you’ve selected.
When another user on your Joomla website opens a dynamic get the system checks the dynamic get out to that user. A little lock will show up next to the dynamic get name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the dynamic gets that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the dynamic get names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the dynamic get, which will mean that it removes the dynamic get from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many dynamic gets at once by clicking in the boxes next the dynamic get names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the dynamic gets according to the task you selected.
The export and import feature is some of the most exciting features to the list view of dynamic gets. With them you can update and create many dynamic gets at once.
The export option only exports the dynamic gets selected. So to export all dynamic gets you must change the limited number of dynamic gets that are being loaded to \"All\". The box that limits the number of dynamic gets being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the dynamic get records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the dynamic gets. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create dynamic gets or update existing dynamic gets. The way to update existing dynamic gets is to use the same id as the dynamic get you want to update. Best way to do this is to first export the dynamic gets you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new dynamic gets via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of dynamic gets and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of dynamic gets with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Dynamic Gets', 2, '', '', 1, 3, '', 7), (8, 'snippets', 'welcome-to-the-list-view-of-snippets', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a snippet by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new snippet.
You can edit snippets in two ways.
You can publish, unpublish, archive, and trash any snippet by clicking in the boxes next the snippet names and then click on the corresponding button of the task you want to perform. This will change the state of all the snippets you’ve selected.
If you have trashed a snippet it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed snippets. To completely remove these snippets from your system do the following: first select all the snippets you want to permanently delete by clicking in the boxes next to the snippet names and then click on the button in the toolbar. This will permanently delete the snippets from the database. On the other hand if you would like to change the status of the snippet to publish, unpublish or archive, click in the boxes next to the snippet names and then click on the corresponding button of the task you want to perform. This will change the state of all the snippets you’ve selected.
When another user on your Joomla website opens a snippet the system checks the snippet out to that user. A little lock will show up next to the snippet name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the snippets that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the snippet names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the snippet, which will mean that it removes the snippet from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many snippets at once by clicking in the boxes next the snippet names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the snippets according to the task you selected.
The export and import feature is some of the most exciting features to the list view of snippets. With them you can update and create many snippets at once.
The export option only exports the snippets selected. So to export all snippets you must change the limited number of snippets that are being loaded to \"All\". The box that limits the number of snippets being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the snippet records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the snippets. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create snippets or update existing snippets. The way to update existing snippets is to use the same id as the snippet you want to update. Best way to do this is to first export the snippets you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new snippets via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of snippets and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of snippets with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Snippets', 2, '', '', 1, 3, '', 8), (9, 'fields', 'welcome-to-the-list-view-of-fields', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a field by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new field.
You can edit fields in two ways.
You can publish, unpublish, archive, and trash any field by clicking in the boxes next the field names and then click on the corresponding button of the task you want to perform. This will change the state of all the fields you’ve selected.
If you have trashed a field it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed fields. To completely remove these fields from your system do the following: first select all the fields you want to permanently delete by clicking in the boxes next to the field names and then click on the button in the toolbar. This will permanently delete the fields from the database. On the other hand if you would like to change the status of the field to publish, unpublish or archive, click in the boxes next to the field names and then click on the corresponding button of the task you want to perform. This will change the state of all the fields you’ve selected.
When another user on your Joomla website opens a field the system checks the field out to that user. A little lock will show up next to the field name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the fields that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the field names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the field, which will mean that it removes the field from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many fields at once by clicking in the boxes next the field names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the fields according to the task you selected.
The export and import feature is some of the most exciting features to the list view of fields. With them you can update and create many fields at once.
The export option only exports the fields selected. So to export all fields you must change the limited number of fields that are being loaded to \"All\". The box that limits the number of fields being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the field records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the fields. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create fields or update existing fields. The way to update existing fields is to use the same id as the field you want to update. Best way to do this is to first export the fields you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new fields via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of fields and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of fields with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Fields', 2, '', '', 1, 3, '', 9), (10, 'fieldtypes', 'welcome-to-the-list-view-of-fieldtypes', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a fieldtype by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new fieldtype.
You can edit fieldtypes in two ways.
You can publish, unpublish, archive, and trash any fieldtype by clicking in the boxes next the fieldtype names and then click on the corresponding button of the task you want to perform. This will change the state of all the fieldtypes you’ve selected.
If you have trashed a fieldtype it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed fieldtypes. To completely remove these fieldtypes from your system do the following: first select all the fieldtypes you want to permanently delete by clicking in the boxes next to the fieldtype names and then click on the button in the toolbar. This will permanently delete the fieldtypes from the database. On the other hand if you would like to change the status of the fieldtype to publish, unpublish or archive, click in the boxes next to the fieldtype names and then click on the corresponding button of the task you want to perform. This will change the state of all the fieldtypes you’ve selected.
When another user on your Joomla website opens a fieldtype the system checks the fieldtype out to that user. A little lock will show up next to the fieldtype name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the fieldtypes that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the fieldtype names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the fieldtype, which will mean that it removes the fieldtype from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many fieldtypes at once by clicking in the boxes next the fieldtype names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the fieldtypes according to the task you selected.
The export and import feature is some of the most exciting features to the list view of fieldtypes. With them you can update and create many fieldtypes at once.
The export option only exports the fieldtypes selected. So to export all fieldtypes you must change the limited number of fieldtypes that are being loaded to \"All\". The box that limits the number of fieldtypes being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the fieldtype records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the fieldtypes. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create fieldtypes or update existing fieldtypes. The way to update existing fieldtypes is to use the same id as the fieldtype you want to update. Best way to do this is to first export the fieldtypes you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new fieldtypes via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of fieldtypes and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of fieldtypes with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Fieldtypes', 2, '', '', 1, 3, '', 10), (11, 'help_documents', 'welcome-to-the-list-view-of-help-documents', '', 'Here as in all Joomla backend list views you can perform all the common tasks, and more.
You can create a help document by clicking on the button in the toolbar, this will open a window where you can add all the needed values to create a new help document.
You can edit help documents in two ways.
You can publish, unpublish, archive, and trash any help document by clicking in the boxes next the help document names and then click on the corresponding button of the task you want to perform. This will change the state of all the help documents you’ve selected.
If you have trashed a help document it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed help documents. To completely remove these help documents from your system do the following: first select all the help documents you want to permanently delete by clicking in the boxes next to the help document names and then click on the button in the toolbar. This will permanently delete the help documents from the database. On the other hand if you would like to change the status of the help document to publish, unpublish or archive, click in the boxes next to the help document names and then click on the corresponding button of the task you want to perform. This will change the state of all the help documents you’ve selected.
When another user on your Joomla website opens a help document the system checks the help document out to that user. A little lock will show up next to the help document name. When you hover over the lock it will show to you who checked it out and when.
Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.
If this feature has not yet checked-in any of the help documents that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the help document names and then click on the button in the toolbar, or simply click on the little lock. This will then check in the help document, which will mean that it removes the help document from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.
You can use the Batch feature to update or copy many help documents at once by clicking in the boxes next the help document names and then click on the button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the button. Once completed this batch feature will have either copied or updated all the help documents according to the task you selected.
The export and import feature is some of the most exciting features to the list view of help documents. With them you can update and create many help documents at once.
The export option only exports the help documents selected. So to export all help documents you must change the limited number of help documents that are being loaded to \"All\". The box that limits the number of help documents being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the help document records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the help documents. Next click on the button in the toolbar. This should open a download window and you can select to save the excel file to your computer.
The import option can be used to create help documents or update existing help documents. The way to update existing help documents is to use the same id as the help document you want to update. Best way to do this is to first export the help documents you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new help documents via an import, simple leave the id field empty.
So once you have your excel document ready you will again open the list view of help documents and click on the button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.
Once you have the file selected you can click on the or button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.
When the field to column relationship has correctly been mapped you can click on the button at the bottom of the page. This should return you to the list view of help documents with a success message.
In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.
', '\"\"', 1, '', 2, 'Welcome to the List view of Help Documents', 2, '', '', 1, 3, '', 11); -- -- Dumping data for table `#__componentbuilder_admin_fields` -- INSERT INTO `#__componentbuilder_admin_fields` (`id`, `addfields`, `admin_view`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (111, '{\"0\":{\"field\":\"84\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"tab\":\"1\",\"alignment\":\"3\",\"order_edit\":\"1\"},\"1\":{\"field\":\"199\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":\"4\",\"order_edit\":\"1\"},\"2\":{\"field\":\"23\",\"list\":\"\",\"order_list\":\"0\",\"alias\":\"1\",\"search\":\"1\",\"tab\":\"1\",\"alignment\":\"4\",\"order_edit\":\"2\"},\"3\":{\"field\":\"203\",\"list\":\"2\",\"order_list\":\"0\",\"tab\":\"1\",\"alignment\":\"5\",\"order_edit\":\"1\"},\"4\":{\"field\":\"682\",\"list\":\"\",\"order_list\":\"0\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"tab\":\"2\",\"alignment\":\"1\",\"order_edit\":\"1\"},\"5\":{\"field\":\"100\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"1\"},\"6\":{\"field\":\"196\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"2\"},\"7\":{\"field\":\"1011\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"3\"},\"8\":{\"field\":\"158\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"4\"},\"9\":{\"field\":\"280\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"5\"}}', 109, 1, '2017-10-12 19:52:03', '2019-01-28 16:27:19', 7, '', '', ''); -- -- Dumping data for table `#__componentbuilder_admin_fields_conditions` -- INSERT INTO `#__componentbuilder_admin_fields_conditions` (`id`, `addconditions`, `admin_view`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (111, '{\"addconditions0\":{\"target_field\":[\"1011\",\"100\",\"158\",\"196\",\"280\"],\"target_behavior\":\"1\",\"target_relation\":\"0\",\"match_field\":\"682\",\"match_behavior\":\"1\",\"match_options\":\"1|Yes\"}}', 109, 1, '2017-10-12 21:36:00', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_admin_views` -- INSERT INTO `#__componentbuilder_component_admin_views` (`id`, `addadmin_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '{\"addadmin_views0\":{\"adminview\":\"109\",\"icomoon\":\"eye-open\",\"mainmenu\":\"1\",\"dashboard_add\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"joomla_fields\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"port\":\"1\",\"filter\":\"2\",\"edit_create_site_view\":\"1\",\"order\":\"1\"}}', 25, 1, '2017-10-28 03:56:26', '2021-02-08 10:32:04', 7, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_site_views` -- INSERT INTO `#__componentbuilder_component_site_views` (`id`, `addsite_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '{\"addsite_views0\":{\"siteview\":\"23\",\"menu\":\"1\",\"metadata\":\"1\",\"default_view\":\"1\",\"access\":\"1\",\"public_access\":\"1\"},\"addsite_views1\":{\"siteview\":\"25\",\"metadata\":\"1\",\"access\":\"1\"}}', 25, 1, '2017-10-28 03:56:26', '2020-02-27 21:32:04', 4, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_custom_admin_views` -- INSERT INTO `#__componentbuilder_component_custom_admin_views` (`id`, `addcustom_admin_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_updates` -- INSERT INTO `#__componentbuilder_component_updates` (`id`, `joomla_component`, `version_update`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, 25, '{\"version_update0\":{\"version\":\"2.0.0\",\"mysql\":\"ALTER TABLE `#__demo_look` ENGINE = InnoDB;\\r\\n\\r\\nALTER TABLE `#__demo_look` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.0.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update1\":{\"version\":\"2.0.2\",\"mysql\":\"ALTER TABLE `#__demo_look` CHANGE `image` `image` VARCHAR(255) NOT NULL DEFAULT \'\';\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.2.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update2\":{\"version\":\"2.0.3\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.3.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update3\":{\"version\":\"2.1.0\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.1.0.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"}}', 1, '2017-10-28 03:56:26', '2022-05-27 05:23:46', 9, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_mysql_tweaks` -- INSERT INTO `#__componentbuilder_component_mysql_tweaks` (`id`, `joomla_component`, `sql_tweak`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_custom_admin_menus` -- INSERT INTO `#__componentbuilder_component_custom_admin_menus` (`id`, `addcustommenus`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_config` -- INSERT INTO `#__componentbuilder_component_config` (`id`, `addconfig`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_dashboard` -- INSERT INTO `#__componentbuilder_component_dashboard` (`id`, `dashboard_tab`, `joomla_component`, `php_dashboard_methods`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES (27, '', 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', ''); -- -- Dumping data for table `#__componentbuilder_component_files_folders` -- INSERT INTO `#__componentbuilder_component_files_folders` (`id`, `addfiles`, `addfolders`, `joomla_component`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `addfilesfullpath`, `addfoldersfullpath`) VALUES (27, '', '', 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '', ''); -- -- Dumping data for table `#__componentbuilder_snippet_type` -- INSERT INTO `#__componentbuilder_snippet_type` (`id`, `name`, `description`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES (1, 'Layout', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 1), (2, 'Navigations', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 2), (3, 'Elements', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 3), (4, 'Common', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 4), (5, 'JavaScript', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 5), (6, 'Charts', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 6), (7, 'Alerts', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 7), (8, 'Badges', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 8), (9, 'Breadcrumbs', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 9), (10, 'Buttons', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 10), (11, 'Button Groups', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 11), (12, 'Button Modifiers', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 12), (13, 'Cards', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 13), (14, 'Carousel', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 14), (15, 'Collapse', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 15), (16, 'Dropdowns', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 16), (17, 'Forms', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 17), (18, 'Form Input Groups', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 18), (19, 'Custom Forms', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 19), (20, 'Grid', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 20), (21, 'Images', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 21), (22, 'Jumbotron', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 22), (23, 'List Group', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 23), (24, 'Media Objects', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 24), (25, 'Modal', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 25), (26, 'Navs', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 26), (27, 'Navbar', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 27), (28, 'Pagination', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 28), (29, 'Popover', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 29), (30, 'Progress', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 30), (31, 'Scrollspy', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 31), (32, 'Tables', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 32), (33, 'Tooltips', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 33), (34, 'Typography', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 34), (35, 'Utility: Borders', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 35), (36, 'Utility: Colors', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 36), (37, 'Utility: Display', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 37), (38, 'Utility: Flexbox', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 38), (39, 'Utility: Misc', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 39), (40, 'Utility: Positioning', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 40), (41, 'Utility: Sizing', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 41), (42, 'Utility: Spacing', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 42), (43, 'Utility: Text', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 43); -- -- Dumping data for table `#__componentbuilder_library_config` -- INSERT INTO `#__componentbuilder_library_config` (`id`, `addconfig`, `library`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES (1, '{\"addconfig0\":{\"field\":\"2635\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig1\":{\"field\":\"2636\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig2\":{\"field\":\"2639\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig3\":{\"field\":\"2637\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig4\":{\"field\":\"2638\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig7\":{\"field\":\"2640\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig6\":{\"field\":\"2641\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig5\":{\"field\":\"2642\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"}}', 7, '', 1, '2019-10-03 09:55:37', '2019-10-03 16:41:01', 2, '', 1); -- -- Dumping data for table `#__componentbuilder_library_files_folders_urls` -- INSERT INTO `#__componentbuilder_library_files_folders_urls` (`id`, `addfiles`, `addfolders`, `addurls`, `library`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES (2, '', '', '{\"addurls0\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/js\\/bootstrap.min.js\",\"type\":\"2\"},\"addurls1\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/css\\/bootstrap.min.css\",\"type\":\"2\"}}', 2, '', 1, '2017-11-25 16:17:36', '2018-05-02 23:29:05', 11, '', 2), (3, '{}', '{}', '{\"addurls2\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/css\\/uikit.min.css\",\"type\":2},\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/js\\/uikit.min.js\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/js\\/uikit-icons.min.js\",\"type\":2}}', 3, '', 1, '2017-11-25 21:47:40', '2021-05-27 00:16:34', 11, '', 3), (4, '{}', '{\"addfolders0\":{\"folder\":\"file_icon_vectors\",\"path\":\"\\/media\\/vector\",\"rename\":\"1\"}}', '{}', 7, '', 1, '2019-10-03 09:24:30', '2019-10-03 09:25:39', 2, '', 4), (5, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/css\\/grapes.min.css\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/grapes.min.js\",\"type\":2}}', 8, '', 1, '2020-02-10 21:34:33', '2020-02-18 21:12:35', 5, '', 5), (6, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/static.filestackapi.com\\/v3\\/filestack-0.1.10.js\",\"type\":2}}', 9, '', 1, '2020-02-18 21:13:16', '2020-02-18 21:14:11', 2, '', 5), (7, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/vue\",\"type\":3}}', 10, '', 1, '2020-06-05 13:11:54', '0000-00-00 00:00:00', 1, '', 6), (8, '{}', '{}', '{\"addurls2\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/1.10.21\\/js\\/jquery.dataTables.min.js\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/1.10.21\\/css\\/dataTables.uikit.min.css\",\"type\":2}}', 11, '', 1, '2020-06-27 21:34:44', '0000-00-00 00:00:00', 1, '', 7), (9, '{}', '{}', '{\"addurls3\":{\"url\":\"http:\\/\\/code.jquery.com\\/ui\\/1.11.1\\/themes\\/smoothness\\/jquery-ui.css\",\"type\":2},\"addurls0\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/jquery-ui-timepicker-addon\\/1.6.3\\/jquery-ui-timepicker-addon.min.css\",\"type\":2},\"addurls1\":{\"url\":\"http:\\/\\/code.jquery.com\\/ui\\/1.11.1\\/jquery-ui.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/jquery-ui-timepicker-addon\\/1.6.3\\/jquery-ui-timepicker-addon.min.js\",\"type\":2}}', 12, '', 1, '2020-06-29 00:00:44', '2020-06-29 04:32:57', 4, '', 8), (10, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/dt\\/jszip-2.5.0\\/dt-1.11.5\\/b-2.2.2\\/b-colvis-2.2.2\\/b-html5-2.2.2\\/b-print-2.2.2\\/cr-1.5.5\\/date-1.1.2\\/fc-4.0.2\\/fh-3.2.2\\/kt-2.6.4\\/r-2.2.9\\/rg-1.1.4\\/rr-1.2.8\\/sc-2.0.5\\/sb-1.3.2\\/sp-2.0.0\\/sl-1.3.4\\/sr-1.1.0\\/datatables.min.css\",\"type\":3},\"addurls1\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.1.36\\/pdfmake.min.js\",\"type\":3},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.1.36\\/vfs_fonts.js\",\"type\":3},\"addurls3\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/dt\\/jszip-2.5.0\\/dt-1.11.5\\/b-2.2.2\\/b-colvis-2.2.2\\/b-html5-2.2.2\\/b-print-2.2.2\\/cr-1.5.5\\/date-1.1.2\\/fc-4.0.2\\/fh-3.2.2\\/kt-2.6.4\\/r-2.2.9\\/rg-1.1.4\\/rr-1.2.8\\/sc-2.0.5\\/sb-1.3.2\\/sp-2.0.0\\/sl-1.3.4\\/sr-1.1.0\\/datatables.min.js\",\"type\":3}}', 13, '', 1, '2022-10-17 20:56:24', '0000-00-00 00:00:00', 1, '', 9), (11, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/nouislider\\/dist\\/nouislider.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/nouislider\\/dist\\/nouislider.min.js\",\"type\":2}}', 14, '', 1, '2023-06-26 15:02:42', '2023-07-24 18:11:41', 3, '', 10), (12, '{}', '{}', '{\"addurls4\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/bs5\\/jszip-3.10.1\\/dt-2.0.2\\/b-3.0.1\\/b-colvis-3.0.1\\/b-html5-3.0.1\\/b-print-3.0.1\\/cr-2.0.0\\/date-1.5.2\\/fc-5.0.0\\/fh-4.0.1\\/kt-2.12.0\\/r-3.0.0\\/rg-1.5.0\\/rr-1.5.0\\/sc-2.4.1\\/sb-1.7.0\\/sp-2.3.0\\/sl-2.0.0\\/sr-1.4.0\\/datatables.min.css\",\"type\":3},\"addurls1\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.2.7\\/pdfmake.min.js\",\"type\":3},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.2.7\\/vfs_fonts.js\",\"type\":3},\"addurls3\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/bs5\\/jszip-3.10.1\\/dt-2.0.2\\/b-3.0.1\\/b-colvis-3.0.1\\/b-html5-3.0.1\\/b-print-3.0.1\\/cr-2.0.0\\/date-1.5.2\\/fc-5.0.0\\/fh-4.0.1\\/kt-2.12.0\\/r-3.0.0\\/rg-1.5.0\\/rr-1.5.0\\/sc-2.4.1\\/sb-1.7.0\\/sp-2.3.0\\/sl-2.0.0\\/sr-1.4.0\\/datatables.min.js\",\"type\":3}}', 15, '', 1, '2024-03-09 16:27:28', '2024-03-09 16:29:30', 2, '', 9); CREATE TABLE IF NOT EXISTS `#__componentbuilder_external_code` ( `target` VARCHAR(255) NOT NULL DEFAULT '', `hash` VARCHAR(64) NOT NULL DEFAULT '', PRIMARY KEY (`target`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; -- -- Always insure this column name is large enough for long component and view names. -- ALTER TABLE `#__assets` CHANGE `name` `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The unique name for the asset.';