TimeTrex/interface/html5/dist/hr-recruitment-RecruitmentPortalConfigViewController.bundle.js

1 line
37 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["hr-recruitment-RecruitmentPortalConfigViewController"],{1183:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RecruitmentPortalConfigViewController\": () => (/* binding */ RecruitmentPortalConfigViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass RecruitmentPortalConfigViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tcompany_api: null,\n\t\t\tjob_applicant_fields_array: null,\n\t\t\tjob_applicant_background_fields_array: null,\n\t\t\tjob_applicant_availability_fields_array: null,\n\t\t\tjob_applicant_employment_history_fields_array: null,\n\t\t\tjob_applicant_reference_fields_array: null,\n\t\t\tjob_applicant_location_fields_array: null,\n\t\t\tjob_applicant_skill_fields_array: null,\n\t\t\tjob_applicant_education_fields_array: null,\n\t\t\tjob_applicant_membership_fields_array: null,\n\t\t\tjob_applicant_license_fields_array: null,\n\t\t\tjob_applicant_language_fields_array: null,\n\t\t\tjob_applicant_add_qualification_array: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.permission_id = 'job_applicant';\n\t\tthis.viewId = 'RecruitmentPortalConfig';\n\t\tthis.script_name = 'RecruitmentPortalConfigView';\n\t\tthis.table_name_key = 'recruitment_portal_config';\n\t\tthis.context_menu_name = $.i18n._( 'Portal Setting' );\n\t\tthis.api = TTAPI.APIRecruitmentPortalConfig;\n\t\tthis.company_api = TTAPI.APICompany;\n\n\t\tthis.render();\n\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\trender() {\n\t\tsuper.render();\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['default'],\n\t\t\tinclude: [\n\t\t\t\t'save',\n\t\t\t\t'cancel',\n\t\t\t\t'export_excel'\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tinitOptions( callBack ) {\n\n\t\tvar options = [\n\t\t\t{ option_name: 'job_applicant_fields', field_name: 'job_applicant_fields', api: this.api },\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_background_fields',\n\t\t\t\tfield_name: 'job_applicant_background_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_availability_fields',\n\t\t\t\tfield_name: 'job_applicant_availability_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_employment_history_fields',\n\t\t\t\tfield_name: 'job_applicant_employment_history_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_reference_fields',\n\t\t\t\tfield_name: 'job_applicant_reference_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_location_fields',\n\t\t\t\tfield_name: 'job_applicant_location_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{ option_name: 'job_applicant_skill_fields', field_name: 'job_applicant_skill_fields', api: this.api },\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_education_fields',\n\t\t\t\tfield_name: 'job_applicant_education_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_membership_fields',\n\t\t\t\tfield_name: 'job_applicant_membership_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{ option_name: 'job_applicant_license_fields', field_name: 'job_applicant_license_fields', api: this.api },\n\t\t\t{\n\t\t\t\toption_name: 'job_applicant_language_fields',\n\t\t\t\tfield_name: 'job_applicant_language_fields',\n\t\t\t\tapi: this.api\n\t\t\t},\n\t\t\t{ option_name: 'job_applicant_add_qualification', field_name: 'enable_add_qualification', api: this.api }\n\t\t];\n\n\t\tthis.initDropDownOptions( options, function( result ) {\n\t\t\tif ( callBack ) {\n\t\t\t\tcallBack( result ); // First to initialize drop down options, and then to initialize edit view UI.\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['default'],\n\t\t\tinclude: ['save', 'cancel']\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tgetRecruitmentPortalConfigData( callBack ) {\n\t\tvar $this = this;\n\n\t\t// First to get current company's user default data, if no have any data to get the default data which has been set up in TTAPI.APIRecruitmentPortalConfig.\n\n\t\t$this.api['get' + $this.api.key_name]( {\n\t\t\tonResult: function( result ) {\n\t\t\t\tvar result_data = result.getResult();\n\t\t\t\tif ( Global.isSet( result_data[0] ) ) {\n\t\t\t\t\tcallBack( result_data[0] );\n\t\t\t\t} else {\n\t\t\t\t\t$this.api['get' + $this.api.key_name + 'DefaultData']( {\n\t\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\t\tvar result_data = result.getResult();\n\t\t\t\t\t\t\tcallBack( result_data );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\topenEditView() {\n\n\t\tvar $this = this;\n\n\t\tif ( $this.edit_only_mode ) {\n\n\t\t\t$this.initOptions( function( result ) {\n\n\t\t\t\tif ( !$this.edit_view ) {\n\t\t\t\t\t$this.initEditViewUI( 'RecruitmentPortalConfig', 'RecruitmentPortalConfigEditView.html' );\n\t\t\t\t}\n\n\t\t\t\t$this.getRecruitmentPortalConfigData( function( result ) {\n\t\t\t\t\t// Waiting for the TTAPI.API returns data to set the current edit record.\n\t\t\t\t\t$this.current_edit_record = result;\n\n\t\t\t\t\t$this.initEditView();\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t}\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\t\tthis.current_edit_record[key] = c_value;\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tonSaveClick( ignoreWarning ) {\n\t\tvar $this = this;\n\t\tvar record = this.current_edit_record;\n\t\tif ( !Global.isSet( ignoreWarning ) ) {\n\t\t\tignoreWarning = false;\n\t\t}\n\t\tLocalCacheData.current_doing_context_action = 'save';\n\t\tthis.api['set' + this.api.key_name]( record, false, ignoreWarning, {\n\t\t\tonResult: function( result ) {\n\n\t\t\t\tif ( result.isValid() ) {\n\t\t\t\t\tvar result_data = result.getResult();\n\t\t\t\t\tif ( result_data === true ) {\n\t\t\t\t\t\t$this.refresh_id = $this.current_edit_record.id;\n\t\t\t\t\t} else if ( TTUUID.isUUID( result_data ) && result_data != TTUUID.zero_id && result_data != TTUUID.not_exist_id ) {\n\t\t\t\t\t\t$this.refresh_id = result_data;\n\t\t\t\t\t}\n\t\t\t\t\t$this.removeEditView();\n\n\t\t\t\t} else {\n\t\t\t\t\t$this.setErrorTips( result );\n\t\t\t\t\t$this.setErrorMenu();\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tsetErrorMenu() {\n\n\t\tvar context_menu_array = ContextMenuManager.getMenuModelByMenuId( this.determineContextMenuMountAttributes().id );\n\t\tvar len = context_menu_array.length;\n\n\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\tlet context_btn = context_menu_array[i];\n\t\t\tlet id = context_menu_array[i].id;\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\n\t\t\tswitch ( id ) {\n\t\t\t\tcase 'cancel':\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\t\tvar $this = this;\n\t\tsuper.buildEditViewUI();\n\n\t\tvar tab_model = {\n\t\t\t'tab_portal_setting': {\n\t\t\t\t'label': $.i18n._( 'Portal Setting' )\n\t\t\t},\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\t//Tab 0 start\n\n\t\tvar tab_portal_setting = this.edit_view_tab.find( '#tab_portal_setting' );\n\n\t\tvar tab_portal_setting_column1 = tab_portal_setting.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_portal_setting_column1 );\n\n\t\t// Allow New Records For\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'enable_add_qualification'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_add_qualification_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Allow New Records For' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Automatic Resume Parsing\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'enable_resume_parsing' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Automatic Resume Parsing' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t//Permissions for fields\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.SEPARATED_BOX );\n\t\tform_item_input.SeparatedBox( { label: $.i18n._( 'Configure Available Fields' ) } );\n\t\tthis.addEditFieldToColumn( null, form_item_input, tab_portal_setting_column1, '', null, true, false, 'separated_1' );\n\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'applicant'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Applicant' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Background\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'background'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_background_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Background' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// availability\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'availability'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_availability_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Availability' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Employment History\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'employment_history'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_employment_history_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Employment History' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// References\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'reference'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_reference_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'References' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Location\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'location'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_location_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Location' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Skills\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'skill'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_skill_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Skills' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Education\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'education'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_education_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Education' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Memberships\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'membership'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_membership_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Memberships' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Licenses\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'license'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_license_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Licenses' ), form_item_input, tab_portal_setting_column1 );\n\n\t\t// Languages\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: true,\n\t\t\tkey: 'value',\n\t\t\tfield: 'language'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.job_applicant_language_fields_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Languages' ), form_item_input, tab_portal_setting_column1 );\n\t}\n}\n\nRecruitmentPortalConfigViewController.loadView = function() {\n\n\tGlobal.loadViewSource( 'RecruitmentPortalConfig', 'RecruitmentPortalConfigView.html', function( result ) {\n\n\t\tvar args = {};\n\t\tvar template = _.template( result, args );\n\n\t\tGlobal.contentContainer().html( template );\n\t} );\n\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixDQUFDO0FBQzlCO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxpQkFBaUIsQ0FBQzs7QUFFbEI7QUFDQSxHQUFHOztBQUVIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL2hyL3JlY3J1aXRtZW50L1JlY3J1aXRtZW50UG9ydGFsQ29uZmlnVmlld0NvbnRyb2xsZXIuanM/YmQ5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVjcnVpdG1lbnRQb3J0YWxDb25maWdWaWV3Q29udHJvbGxlciBleHRlbmRzIEJhc2VWaWV3Q29udHJvbGxlciB7XG5cdGNvbnN0cnVjdG9yKCBvcHRpb25zID0ge30gKSB7XG5cdFx0Xy5kZWZhdWx0cyggb3B0aW9ucywge1xuXHRcdFx0Y29tcGFueV9hcGk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X2ZpZWxkc19hcnJheTogbnVsbCxcblx0XHRcdGpvYl9hcHBsaWNhbnRfYmFja2dyb3VuZF9maWVsZHNfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X2F2YWlsYWJpbGl0eV9maWVsZHNfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X2VtcGxveW1lbnRfaGlzdG9yeV9maWVsZHNfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X3JlZmVyZW5jZV9maWVsZHNfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X2xvY2F0aW9uX2ZpZWxkc19hcnJheTogbnVsbCxcblx0XHRcdGpvYl9hcHBsaWNhbnRfc2tpbGxfZmllbGRzX2FycmF5OiBudWxsLFxuXHRcdFx0am9iX2FwcGxpY2FudF9lZHVjYXRpb25fZmllbGRzX2FycmF5OiBudWxsLFxuXHRcdFx0am9iX2FwcGxpY2FudF9tZW1iZXJzaGlwX2ZpZWxkc19hcnJheTogbnVsbCxcblx0XHRcdGpvYl9hcHBsaWNhbnRfbGljZW5zZV9maWVsZHNfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2JfYXBwbGljYW50X2xhbmd1YWdlX2ZpZWxkc19hcnJheTogbnVsbCxcblx0XHRcdGpvYl9hcHBsaWNhbnRfYWRkX3F1YWxpZmljYXRpb25fYXJyYXk6IG51bGxcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJywgb3B0aW9ucyApO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICdqb2JfYXBwbGljYW50Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdSZWNydWl0bWVudFBvcnRhbENvbmZpZyc7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdSZWNydWl0bWVudFBvcnRhbENvbmZpZ1ZpZXcnO1xuXHRcdHRoaXMudGFibGVfbmFtZV9rZXkgPSAncmVjcnVpdG1lbnRfcG9ydGFsX2NvbmZpZyc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnUG9ydGFsIFNldHRpbmcnICk7XG5cdFx0dGhpcy5hcGkgPSBUVEFQSS5BUElSZWNydWl0bWVudFBvcnRhbENvbmZpZztcblx0XHR0aGlzLmNvbXBhbnlfYXBpID0gVFRBUEkuQVBJQ29tcGFueTtcblxuXHRcdHRoaXMucmVuZGVyKCk7XG5cblx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoKTtcblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblx0XHRzdXBlci5yZW5kZXIoKTtcblx0fVxuXG5cdGdldEN1c3RvbUNvbnRleHRNZW51TW9kZWwoKSB7XG5cdFx0dmFyIGNvbnRleHRfbWVudV9tb2RlbCA9IHtcblx0XHRcdGV4Y2x1ZGU6IFsnZGVmYXVsdCddLFxuXHRcdFx0aW5jbHVkZTogW1xuXHRcdFx0XHQnc2F2ZScsXG5cdFx0XHRcdCdjYW5jZWwnLFxuXHRcdFx0XHQnZXhwb3J0X2V4Y2VsJ1xuXHRcdFx0XVxuXHRcdH07XG5cblx0XHRyZXR1cm4gY29udGV4dF9tZW51X21vZGVsO1xuXHR9XG5cblx0aW5pdE9wdGlvbnMoIGNhbGxCYWNrICkge1xuXG5cdFx0dmFyIG9wdGlvbnMgPSBbXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9maWVsZHMnLCBmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9maWVsZHMnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7XG5cdFx0XHRcdG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9iYWNrZ3JvdW5kX2ZpZWxkcycsXG5cdFx0XHRcdGZpZWxkX25hbWU6ICdqb2JfYXBwbGljYW50X2JhY2tncm91bmRfZmllbGRzJyxcblx0XHRcdFx0YXBpOiB0aGlzLmFwaVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0b3B0aW9uX25hbWU6ICdqb2JfYXBwbGljYW50X2F2YWlsYWJpbGl0eV9maWVsZHMnLFxuXHRcdFx0XHRmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9hdmFpbGFiaWxpdHlfZmllbGRzJyxcblx0XHRcdFx0YXBpOiB0aGlzLmFwaVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0b3B0aW9uX25hbWU6ICdqb2JfYXBwbGljYW50X2VtcGxveW1lbnRfaGlzdG9yeV9maWVsZHMnLFxuXHRcdFx0XHRmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2hpc3RvcnlfZmllbGRzJyxcblx0XHRcdFx0YXBpOiB0aGlzLmFwaVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0b3B0aW9uX25hbWU6ICdqb2JfYXBwbGljYW50X3JlZmVyZW5jZV9maWVsZHMnLFxuXHRcdFx0XHRmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9yZWZlcmVuY2VfZmllbGRzJyxcblx0XHRcdFx0YXBpOiB0aGlzLmFwaVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0b3B0aW9uX25hbWU6ICdqb2JfYXBwbGljYW50X2xvY2F0aW9uX2ZpZWxkcycsXG5cdFx0XHRcdGZpZWxkX25hbWU6ICdqb2JfYXBwbGljYW50X2xvY2F0aW9uX2ZpZWxkcycsXG5cdFx0XHRcdGFwaTogdGhpcy5hcGlcblx0XHRcdH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9za2lsbF9maWVsZHMnLCBmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9za2lsbF9maWVsZHMnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7XG5cdFx0XHRcdG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9lZHVjYXRpb25fZmllbGRzJyxcblx0XHRcdFx0ZmllbGRfbmFtZTogJ2pvYl9hcHBsaWNhbnRfZWR1Y2F0aW9uX2ZpZWxkcycsXG5cdFx0XHRcdGFwaTogdGhpcy5hcGlcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9tZW1iZXJzaGlwX2ZpZWxkcycsXG5cdFx0XHRcdGZpZWxkX25hbWU6ICdqb2JfYXBwbGljYW50X21lbWJlcnNoaXBfZmllbGRzJyxcblx0XHRcdFx0YXBpOiB0aGlzLmFwaVxuXHRcdFx0fSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdqb2JfYXBwbGljYW50X2xpY2Vuc2VfZmllbGRzJywgZmllbGRfbmFtZTogJ2pvYl9hcHBsaWNhbnRfbGljZW5zZV9maWVsZHMnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7XG5cdFx0XHRcdG9wdGlvbl9uYW1lOiAnam9iX2FwcGxpY2FudF9sYW5ndWFnZV9maWVsZHMnLFxuXHRcdFx0XHRmaWVsZF9uYW1lOiAnam9iX2FwcGxpY2FudF9sYW5ndWFnZV9maWVsZHMnLFxuXHRcdFx0XHRhcGk6IHRoaXMuYXBpXG5cdFx0XHR9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2pvYl9hcHBsaWNhbnRfYWRkX3F1YWxpZmljYXRpb24nLCBmaWVsZF9uYW1lOiAnZW5hYmxlX2FkZF9xdWFsaWZpY2F0aW9uJywgYXBpOiB0aGlzLmFwaSB9XG5cdFx0XTtcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucywgZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdGlmICggY2FsbEJhY2sgKSB7XG5cdFx0XHRcdGNhbGxCYWNrKCByZXN1bHQgKTsgLy8gRmlyc3QgdG8gaW5pdGlhbGl6ZSBkcm9wIGRvd24gb3B0aW9ucywgYW5kIHRoZW4gdG8gaW5pdGlhbGl6ZSBlZGl0IHZpZXcgVUkuXG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0Z2V0Q3VzdG9tQ29udGV4dE1lbnVNb2RlbCgpIHtcblx0XHR2YXIgY29udGV4dF9tZW51X21vZGVsID0ge1xuXHRcdFx0ZXhjbHVkZTogWydkZWZhdWx0J10sXG5cdFx0XHRpbmNsdWRlOiBbJ3NhdmUnLCAnY2FuY2VsJ11cblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNvbnRleHRfbWVudV9tb2RlbDtcblx0fVxuXG5cdGdldFJlY3J1aXRtZW50UG9ydGFsQ29uZmlnRGF0YSggY2FsbEJhY2sgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdC8vIEZpcnN0IHRvIGdldCBjdXJyZW50IGNvbXBhbnkncyB1c2VyIGRlZmF1bHQgZGF0YSwgaWYgbm8gaGF2ZSBhbnkgZGF0YSB0byBnZXQgdGhlIGRlZmF1bHQgZGF0YSB3aGljaCBoYXMgYmVlbiBzZXQgdXAgaW4gVFRBUEkuQVBJUmVjcnVpdG1lbnRQb3J0YWxDb25maWcuXG5cblx0XHQkdGhpcy5hcGlbJ2dldCcgKyAkdGhpcy5hcGkua2V5X25hbWVdKCB7XG5cdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggcmVzdWx0X2RhdGFbMF0gKSApIHtcblx0XHRcdFx0XHRjYWxsQmFjayggcmVzdWx0X2RhdGFbMF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkdGhpcy5hcGlbJ2dldCcgKyAkdGhpcy5hcGkua2V5X25hbWUgKyAnRGVmYXVsdERhdGEnXSgge1xuXHRcdFx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByZXN1bHRfZGF0YSA9IHJlc3VsdC5nZXRSZXN1bHQoKTtcblx0XHRcdFx0XHRcdFx0Y2FsbEJhY2soIHJlc3VsdF9kYXRhICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRvcGVuRWRpdFZpZXcoKSB7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0aWYgKCAkdGhpcy5lZGl0X29ubHlfbW9kZSApIHtcblxuXHRcdFx0JHRoaXMuaW5pdE9wdGlvbnMoIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cblx0XHRcdFx0aWYgKCAhJHRoaXMuZWRpdF92aWV3ICkge1xuXHRcdFx0XHRcdCR0aGlzLmluaXRFZGl0Vmlld1VJKCAnUmVjcnVpdG1lbnRQb3J0YWxDb25maWcnLCAnUmVjcnVpdG1lbnRQb3J0YWxDb25maWdFZGl0Vmlldy5odG1sJyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHRoaXMuZ2V0UmVjcnVpdG1lbnRQb3J0YWxDb25maWdEYXRhKCBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHRcdC8vIFdhaXRpbmcgZm9yIHRoZSBUVEFQSS5BUEkgcmV0dXJucyBkYXRhIHRvIHNldCB0aGUgY3VycmVudCBlZGl0IHJlY29yZC5cblx0XHRcdFx0XHQkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkID0gcmVzdWx0O1xuXG5cdFx0XHRcdFx0JHRoaXMuaW5pdEVkaXRWaWV3KCk7XG5cblx0XHRcdFx0fSApO1xuXG5cdFx0XHR9ICk7XG5cblx0XHR9XG5cdH1cblxuXHRvbkZvcm1JdGVtQ2hhbmdlKCB0YXJnZXQsIGRvTm90VmFsaWRhdGUgKSB7XG5cdFx0dGhpcy5zZXRJc0NoYW5nZWQoIHRhcmdldCApO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXRpbmdGaWVsZHNXaGVuRm9ybUNoYW5nZSggdGFyZ2V0ICk7XG5cdFx0dmFyIGtleSA9IHRhcmdldC5nZXRGaWVsZCgpO1xuXHRcdHZhciBjX3ZhbHVlID0gdGFyZ2V0LmdldFZhbHVlKCk7XG5cdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gPSBjX3ZhbHVlO1xuXHRcdGlmICggIWRvTm90VmFsaWRhdGUgKSB7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0b25TYXZlQ2xpY2soIGlnbm9yZVdhcm5pbmcgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgcmVjb3JkID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkO1xuXHRcdGlmICggIUdsb2JhbC5pc1NldCggaWdub3JlV2FybmluZyApICkge1xuXHRcdFx0aWdub3JlV2FybmluZyA9IGZhbHNlO1xuXHRcdH1cblx0XHRMb2NhbENhY2hlRGF0YS5jdXJyZW50X2RvaW5nX2NvbnRleHRfYWN0aW9uID0gJ3NhdmUnO1xuXHRcdHRoaXMuYXBpWydzZXQnICsgdGhpcy5hcGkua2V5X25hbWVdKCByZWNvcmQsIGZhbHNlLCBpZ25vcmVXYXJuaW5nLCB7XG5cdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdC5pc1ZhbGlkKCkgKSB7XG5cdFx0XHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmICggcmVzdWx0X2RhdGEgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5yZWZyZXNoX2lkID0gJHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCBUVFVVSUQuaXNVVUlEKCByZXN1bHRfZGF0YSApICYmIHJlc3VsdF9kYXRhICE9IFRUVVVJRC56ZXJvX2lkICYmIHJlc3VsdF9kYXRhICE9IFRUVVVJRC5ub3RfZXhpc3RfaWQgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5yZWZyZXNoX2lkID0gcmVzdWx0X2RhdGE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR0aGlzLnJlbW92ZUVkaXRWaWV3KCk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkdGhpcy5zZXRFcnJvclRpcHMoIHJlc3VsdCApO1xuXHRcdFx0XHRcdCR0aGlzLnNldEVycm9yTWVudSgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRzZXRFcnJvck1lbnUoKSB7XG5cblx0XHR2YXIgY29udGV4dF9tZW51X2FycmF5ID0gQ29udGV4dE1lbnVNYW5hZ2VyLmdldE1lbnVNb2RlbEJ5TWVudUlkKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQgKTtcblx0XHR2YXIgbGVuID0gY29udGV4dF9tZW51X2FycmF5Lmxlbmd0aDtcblxuXHRcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0bGV0IGNvbnRleHRfYnRuID0gY29udGV4dF9tZW51X2FycmF5W2ldO1xuXHRcdFx0bGV0IGlkID0gY29udGV4dF9tZW51X2FycmF5W2ldLmlkO1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXG5cdFx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdFx0Y2FzZSAnY2FuY2VsJzpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cblx0XHR2YXIgdGFiX21vZGVsID0ge1xuXHRcdFx0J3RhYl9wb3J0YWxfc2V0dGluZyc6IHtcblx0XHRcdFx0J2xhYmVsJzogJC5pMThuLl8oICdQb3J0YWwgU2V0dGluZycgKVxuXHRcdFx0fSxcblx0XHR9O1xuXHRcdHRoaXMuc2V0VGFiTW9kZWwoIHRhYl9tb2RlbCApO1xuXG5cdFx0Ly9UYWIgMCBzdGFydFxuXG5cdFx0dmFyIHRhYl9wb3J0YWxfc2V0dGluZyA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9wb3J0YWxfc2V0dGluZycgKTtcblxuXHRcdHZhciB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSA9IHRhYl9wb3J0YWxfc2V0dGluZy5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX3BvcnRhbF9zZXR0aW5nX2NvbHVtbjEgKTtcblxuXHRcdC8vIEFsbG93IE5ldyBSZWNvcmRzIEZvclxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogZmFsc2UsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRrZXk6ICd2YWx1ZScsXG5cdFx0XHRmaWVsZDogJ2VuYWJsZV9hZGRfcXVhbGlmaWNhdGlvbidcblx0XHR9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmpvYl9hcHBsaWNhbnRfYWRkX3F1YWxpZmljYXRpb25fYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FsbG93IE5ldyBSZWNvcmRzIEZvcicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly8gQXV0b21hdGljIFJlc3VtZSBQYXJzaW5nXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ2hlY2tib3goIHsgZmllbGQ6ICdlbmFibGVfcmVzdW1lX3BhcnNpbmcnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0F1dG9tYXRpYyBSZXN1bWUgUGFyc2luZycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly9QZXJtaXNzaW9ucyBmb3IgZmllbGRzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5TRVBBUkFURURfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlNlcGFyYXRlZEJveCggeyBsYWJlbDogJC5pMThuLl8oICdDb25maWd1cmUgQXZhaWxhYmxlIEZpZWxkcycgKSB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggbnVsbCwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSwgJycsIG51bGwsIHRydWUsIGZhbHNlLCAnc2VwYXJhdGVkXzEnICk7XG5cblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnYXBwbGljYW50J1xuXHRcdH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuam9iX2FwcGxpY2FudF9maWVsZHNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FwcGxpY2FudCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly8gQmFja2dyb3VuZFxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogZmFsc2UsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRrZXk6ICd2YWx1ZScsXG5cdFx0XHRmaWVsZDogJ2JhY2tncm91bmQnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X2JhY2tncm91bmRfZmllbGRzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdCYWNrZ3JvdW5kJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wb3J0YWxfc2V0dGluZ19jb2x1bW4xICk7XG5cblx0XHQvLyBhdmFpbGFiaWxpdHlcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IGZhbHNlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0a2V5OiAndmFsdWUnLFxuXHRcdFx0ZmllbGQ6ICdhdmFpbGFiaWxpdHknXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X2F2YWlsYWJpbGl0eV9maWVsZHNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0F2YWlsYWJpbGl0eScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly8gRW1wbG95bWVudCBIaXN0b3J5XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnZW1wbG95bWVudF9oaXN0b3J5J1xuXHRcdH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2hpc3RvcnlfZmllbGRzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdFbXBsb3ltZW50IEhpc3RvcnknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BvcnRhbF9zZXR0aW5nX2NvbHVtbjEgKTtcblxuXHRcdC8vIFJlZmVyZW5jZXNcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IGZhbHNlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0a2V5OiAndmFsdWUnLFxuXHRcdFx0ZmllbGQ6ICdyZWZlcmVuY2UnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X3JlZmVyZW5jZV9maWVsZHNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1JlZmVyZW5jZXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BvcnRhbF9zZXR0aW5nX2NvbHVtbjEgKTtcblxuXHRcdC8vIExvY2F0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnbG9jYXRpb24nXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X2xvY2F0aW9uX2ZpZWxkc19hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTG9jYXRpb24nICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BvcnRhbF9zZXR0aW5nX2NvbHVtbjEgKTtcblxuXHRcdC8vIFNraWxsc1xuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogZmFsc2UsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRrZXk6ICd2YWx1ZScsXG5cdFx0XHRmaWVsZDogJ3NraWxsJ1xuXHRcdH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuam9iX2FwcGxpY2FudF9za2lsbF9maWVsZHNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1NraWxscycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly8gRWR1Y2F0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnZWR1Y2F0aW9uJ1xuXHRcdH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuam9iX2FwcGxpY2FudF9lZHVjYXRpb25fZmllbGRzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdFZHVjYXRpb24nICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BvcnRhbF9zZXR0aW5nX2NvbHVtbjEgKTtcblxuXHRcdC8vIE1lbWJlcnNoaXBzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnbWVtYmVyc2hpcCdcblx0XHR9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmpvYl9hcHBsaWNhbnRfbWVtYmVyc2hpcF9maWVsZHNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01lbWJlcnNoaXBzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wb3J0YWxfc2V0dGluZ19jb2x1bW4xICk7XG5cblx0XHQvLyBMaWNlbnNlc1xuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogZmFsc2UsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRrZXk6ICd2YWx1ZScsXG5cdFx0XHRmaWVsZDogJ2xpY2Vuc2UnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X2xpY2Vuc2VfZmllbGRzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdMaWNlbnNlcycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcG9ydGFsX3NldHRpbmdfY29sdW1uMSApO1xuXG5cdFx0Ly8gTGFuZ3VhZ2VzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGtleTogJ3ZhbHVlJyxcblx0XHRcdGZpZWxkOiAnbGFuZ3VhZ2UnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfYXBwbGljYW50X2xhbmd1YWdlX2ZpZWxkc19hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTGFuZ3VhZ2VzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wb3J0YWxfc2V0dGluZ19jb2x1bW4xICk7XG5cdH1cbn1cblxuUmVjcnVpdG1lbnRQb3J0YWxDb25maWdWaWV3Q29udHJvbGxlci5sb2FkVmlldyA9IGZ1bmN0aW9uKCkge1xuXG5cdEdsb2JhbC5sb2FkVmlld1NvdXJjZSggJ1JlY3J1aXRtZW50UG9ydGFsQ29uZmlnJywgJ1JlY3J1aXRtZW50UG9ydGFsQ29uZmlnVmlldy5odG1sJywgZnVuY3Rpb24oIHJlc3VsdCApIHtcblxuXHRcdHZhciBhcmdzID0ge307XG5cdFx0dmFyIHRlbXBsYXRlID0gXy50ZW1wbGF0ZSggcmVzdWx0LCBhcmdzICk7XG5cblx0XHRHbG9iYWwuY29udGVudENvbnRhaW5lcigpLmh0bWwoIHRlbXBsYXRlICk7XG5cdH0gKTtcblxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1183\n")}}]);