TimeTrex/interface/html5/dist/policy-break_policy-BreakPolicyViewController.bundle.js

1 line
31 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["policy-break_policy-BreakPolicyViewController"],{2658:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BreakPolicyViewController\": () => (/* binding */ BreakPolicyViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass BreakPolicyViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#break_policy_view_container',\n\n\t\t\ttype_array: null,\n\t\t\tauto_detect_type_array: null,\n\t\t\tallocation_type_array: null,\n\n\t\t\tdate_api: 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.edit_view_tpl = 'BreakPolicyEditView.html';\n\t\tthis.permission_id = 'break_policy';\n\t\tthis.viewId = 'BreakPolicy';\n\t\tthis.script_name = 'BreakPolicyView';\n\t\tthis.table_name_key = 'break_policy';\n\t\tthis.context_menu_name = $.i18n._( 'Break Policy' );\n\t\tthis.navigation_label = $.i18n._( 'Break Policy' );\n\t\tthis.api = TTAPI.APIBreakPolicy;\n\t\tthis.date_api = TTAPI.APITTDate;\n\t\tthis.render();\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitOptions() {\n\t\tvar options = [\n\t\t\t{ option_name: 'type', api: this.api },\n\t\t\t{ option_name: 'auto_detect_type', api: this.api },\n\t\t\t{ option_name: 'allocation_type', api: this.api },\n\t\t];\n\n\t\tthis.initDropDownOptions( options );\n\t}\n\n\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_break_policy': { 'label': $.i18n._( 'Break Policy' ) },\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIBreakPolicy,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_break',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\n\t\tvar tab_break_policy = this.edit_view_tab.find( '#tab_break_policy' );\n\n\t\tvar tab_break_policy_column1 = tab_break_policy.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_break_policy_column1 );\n\n\t\t//Name\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_break_policy_column1, '' );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Description\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'description', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_break_policy_column1, '', null, null, true );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Type' ), form_item_input, tab_break_policy_column1 );\n\n\t\t//Active After\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'trigger_time', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Active After' ), form_item_input, tab_break_policy_column1, '', null );\n\n\t\t// Meal Time\n\t\t// Deduction/Addition Time\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'amount', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Deduction/Addition Time' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Auto-Detect Meals By\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'auto_detect_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.auto_detect_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Auto-Detect Breaks By' ), form_item_input, tab_break_policy_column1 );\n\n\t\t// Minimum Punch Time\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'minimum_punch_time', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Punch Time' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Maximum Punch Time\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'maximum_punch_time', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Maximum Punch Time' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Start Window\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'start_window', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Window' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Window Length\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'window_length', mode: 'time_unit', need_parser_sec: true } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Window Length' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Include Any Punched Time for Break\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'include_break_punch_time' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Include Any Punched Time for Break' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Include Multiple Breaks\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'include_multiple_breaks' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Include Multiple Breaks' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t// Allocation Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'allocation_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.allocation_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Allocation Type' ), form_item_input, tab_break_policy_column1, '', null, true );\n\n\t\t//Pay Code\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayCode,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_pay_code',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'pay_code_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Pay Code' ), form_item_input, tab_break_policy_column1 );\n\n\t\t//Pay Formula Policy\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayFormulaPolicy,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_pay_formula_policy',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'pay_formula_policy_id',\n\t\t\tcustom_first_label: $.i18n._( '-- Defined By Pay Code --' ),\n\t\t\tadded_items: [\n\t\t\t\t{ value: TTUUID.zero_id, label: $.i18n._( '-- Defined By Pay Code --' ) }\n\t\t\t]\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Pay Formula Policy' ), form_item_input, tab_break_policy_column1 );\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'name',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Type' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'type_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Pay Code' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'pay_code_id',\n\t\t\t\tlayout_name: 'global_pay_code',\n\t\t\t\tapi_class: TTAPI.APIPayCode,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Pay Formula Policy' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'pay_formula_policy_id',\n\t\t\t\tlayout_name: 'global_pay_formula_policy',\n\t\t\t\tapi_class: TTAPI.APIPayFormulaPolicy,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\t\t];\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\n//\t\tswitch ( key ) {\n//\t\t\tcase 'trigger_time':\n//\t\t\tcase 'amount':\n//\t\t\tcase 'minimum_punch_time':\n//\t\t\tcase 'maximum_punch_time':\n//\t\t\tcase 'window_length':\n//\t\t\tcase 'start_window':\n//\t\t\t\tc_value = this.date_api.parseTimeUnit( target.getValue(), {async: false} ).getResult();\n//\t\t\t\tbreak;\n//\t\t}\n\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tif ( key === 'type_id' ) {\n\t\t\tthis.onTypeChange();\n\t\t} else if ( key === 'auto_detect_type_id' ) {\n\t\t\tthis.onAutoDetectTypeChange();\n\t\t}\n\n\t\tthis.editFieldResize( 0 );\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\t\tthis.onTypeChange();\n\t\tthis.onAutoDetectTypeChange();\n\t\tthis.editFieldResize( 0 );\n\t}\n\n\tonTypeChange() {\n\t\tthis.edit_view_form_item_dic['amount'].find( '.edit-view-form-item-label' ).text( $.i18n._( 'Break Time' ) ); //Keep consistent field label for all types, also simplifies the documentation.\n\t\tif ( this.current_edit_record['type_id'] == 10 || this.current_edit_record['type_id'] == 15 ) {\n\t\t\tthis.attachElement( 'include_break_punch_time' );\n\t\t\tthis.attachElement( 'allocation_type_id' );\n\t\t\tthis.attachElement( 'include_multiple_breaks' );\n\t\t} else if ( this.current_edit_record['type_id'] == 20 ) {\n\t\t\tthis.detachElement( 'include_break_punch_time' );\n\t\t\tthis.detachElement( 'allocation_type_id' );\n\t\t\tthis.detachElement( 'include_multiple_breaks' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tonAutoDetectTypeChange() {\n\t\tif ( this.current_edit_record['auto_detect_type_id'] == 10 ) {\n\t\t\tthis.attachElement( 'start_window' );\n\t\t\tthis.attachElement( 'window_length' );\n\t\t\tthis.detachElement( 'minimum_punch_time' );\n\t\t\tthis.detachElement( 'maximum_punch_time' );\n\t\t} else if ( this.current_edit_record['auto_detect_type_id'] == 20 || this.current_edit_record['auto_detect_type_id'] == 25 ) {\n\t\t\tthis.detachElement( 'start_window' );\n\t\t\tthis.detachElement( 'window_length' );\n\t\t\tthis.attachElement( 'minimum_punch_time' );\n\t\t\tthis.attachElement( 'maximum_punch_time' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsY0FBYztBQUMvRTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvRkFBb0YsQ0FBQywyQkFBMkI7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL3BvbGljeS9icmVha19wb2xpY3kvQnJlYWtQb2xpY3lWaWV3Q29udHJvbGxlci5qcz8yZmQyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCcmVha1BvbGljeVZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNicmVha19wb2xpY3lfdmlld19jb250YWluZXInLFxuXG5cdFx0XHR0eXBlX2FycmF5OiBudWxsLFxuXHRcdFx0YXV0b19kZXRlY3RfdHlwZV9hcnJheTogbnVsbCxcblx0XHRcdGFsbG9jYXRpb25fdHlwZV9hcnJheTogbnVsbCxcblxuXHRcdFx0ZGF0ZV9hcGk6IG51bGxcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJywgb3B0aW9ucyApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RwbCA9ICdCcmVha1BvbGljeUVkaXRWaWV3Lmh0bWwnO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICdicmVha19wb2xpY3knO1xuXHRcdHRoaXMudmlld0lkID0gJ0JyZWFrUG9saWN5Jztcblx0XHR0aGlzLnNjcmlwdF9uYW1lID0gJ0JyZWFrUG9saWN5Vmlldyc7XG5cdFx0dGhpcy50YWJsZV9uYW1lX2tleSA9ICdicmVha19wb2xpY3knO1xuXHRcdHRoaXMuY29udGV4dF9tZW51X25hbWUgPSAkLmkxOG4uXyggJ0JyZWFrIFBvbGljeScgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ0JyZWFrIFBvbGljeScgKTtcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSUJyZWFrUG9saWN5O1xuXHRcdHRoaXMuZGF0ZV9hcGkgPSBUVEFQSS5BUElUVERhdGU7XG5cdFx0dGhpcy5yZW5kZXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoKTtcblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdGluaXRPcHRpb25zKCkge1xuXHRcdHZhciBvcHRpb25zID0gW1xuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnYXV0b19kZXRlY3RfdHlwZScsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdhbGxvY2F0aW9uX3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XTtcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucyApO1xuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dmFyIHRhYl9tb2RlbCA9IHtcblx0XHRcdCd0YWJfYnJlYWtfcG9saWN5JzogeyAnbGFiZWwnOiAkLmkxOG4uXyggJ0JyZWFrIFBvbGljeScgKSB9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHRoaXMubmF2aWdhdGlvbi5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQnJlYWtQb2xpY3ksXG5cdFx0XHRpZDogdGhpcy5zY3JpcHRfbmFtZSArICdfbmF2aWdhdGlvbicsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfYnJlYWsnLFxuXHRcdFx0bmF2aWdhdGlvbl9tb2RlOiB0cnVlLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlXG5cdFx0fSApO1xuXG5cdFx0dGhpcy5zZXROYXZpZ2F0aW9uKCk7XG5cblx0XHQvL1RhYiAwIHN0YXJ0XG5cblx0XHR2YXIgdGFiX2JyZWFrX3BvbGljeSA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9icmVha19wb2xpY3knICk7XG5cblx0XHR2YXIgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xID0gdGFiX2JyZWFrX3BvbGljeS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xICk7XG5cblx0XHQvL05hbWVcblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ25hbWUnLCB3aWR0aDogJzEwMCUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ05hbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LnBhcmVudCgpLndpZHRoKCAnNDUlJyApO1xuXG5cdFx0Ly8gRGVzY3JpcHRpb25cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfQVJFQSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dEFyZWEoIHsgZmllbGQ6ICdkZXNjcmlwdGlvbicsIHdpZHRoOiAnMTAwJScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRGVzY3JpcHRpb24nICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJywgbnVsbCwgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LnBhcmVudCgpLndpZHRoKCAnNDUlJyApO1xuXG5cdFx0Ly8gVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAndHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy50eXBlX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUeXBlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9icmVha19wb2xpY3lfY29sdW1uMSApO1xuXG5cdFx0Ly9BY3RpdmUgQWZ0ZXJcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAndHJpZ2dlcl90aW1lJywgbW9kZTogJ3RpbWVfdW5pdCcsIG5lZWRfcGFyc2VyX3NlYzogdHJ1ZSB9ICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FjdGl2ZSBBZnRlcicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfYnJlYWtfcG9saWN5X2NvbHVtbjEsICcnLCBudWxsICk7XG5cblx0XHQvLyBNZWFsIFRpbWVcblx0XHQvLyBEZWR1Y3Rpb24vQWRkaXRpb24gVGltZVxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdhbW91bnQnLCBtb2RlOiAndGltZV91bml0JywgbmVlZF9wYXJzZXJfc2VjOiB0cnVlIH0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRGVkdWN0aW9uL0FkZGl0aW9uIFRpbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly8gQXV0by1EZXRlY3QgTWVhbHMgQnlcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnYXV0b19kZXRlY3RfdHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5hdXRvX2RldGVjdF90eXBlX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdBdXRvLURldGVjdCBCcmVha3MgQnknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xICk7XG5cblx0XHQvLyBNaW5pbXVtIFB1bmNoIFRpbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ21pbmltdW1fcHVuY2hfdGltZScsIG1vZGU6ICd0aW1lX3VuaXQnLCBuZWVkX3BhcnNlcl9zZWM6IHRydWUgfSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdNaW5pbXVtIFB1bmNoIFRpbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly8gTWF4aW11bSBQdW5jaCBUaW1lXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdtYXhpbXVtX3B1bmNoX3RpbWUnLCBtb2RlOiAndGltZV91bml0JywgbmVlZF9wYXJzZXJfc2VjOiB0cnVlIH0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTWF4aW11bSBQdW5jaCBUaW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9icmVha19wb2xpY3lfY29sdW1uMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFN0YXJ0IFdpbmRvd1xuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnc3RhcnRfd2luZG93JywgbW9kZTogJ3RpbWVfdW5pdCcsIG5lZWRfcGFyc2VyX3NlYzogdHJ1ZSB9ICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1N0YXJ0IFdpbmRvdycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfYnJlYWtfcG9saWN5X2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBXaW5kb3cgTGVuZ3RoXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3dpbmRvd19sZW5ndGgnLCBtb2RlOiAndGltZV91bml0JywgbmVlZF9wYXJzZXJfc2VjOiB0cnVlIH0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnV2luZG93IExlbmd0aCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfYnJlYWtfcG9saWN5X2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBJbmNsdWRlIEFueSBQdW5jaGVkIFRpbWUgZm9yIEJyZWFrXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ2hlY2tib3goIHsgZmllbGQ6ICdpbmNsdWRlX2JyZWFrX3B1bmNoX3RpbWUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0luY2x1ZGUgQW55IFB1bmNoZWQgVGltZSBmb3IgQnJlYWsnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly8gSW5jbHVkZSBNdWx0aXBsZSBCcmVha3Ncblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDaGVja2JveCggeyBmaWVsZDogJ2luY2x1ZGVfbXVsdGlwbGVfYnJlYWtzJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdJbmNsdWRlIE11bHRpcGxlIEJyZWFrcycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfYnJlYWtfcG9saWN5X2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBBbGxvY2F0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdhbGxvY2F0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuYWxsb2NhdGlvbl90eXBlX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdBbGxvY2F0aW9uIFR5cGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2JyZWFrX3BvbGljeV9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly9QYXkgQ29kZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheUNvZGUsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfcGF5X2NvZGUnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdwYXlfY29kZV9pZCdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQYXkgQ29kZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfYnJlYWtfcG9saWN5X2NvbHVtbjEgKTtcblxuXHRcdC8vUGF5IEZvcm11bGEgUG9saWN5XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5Rm9ybXVsYVBvbGljeSxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9wYXlfZm9ybXVsYV9wb2xpY3knLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdwYXlfZm9ybXVsYV9wb2xpY3lfaWQnLFxuXHRcdFx0Y3VzdG9tX2ZpcnN0X2xhYmVsOiAkLmkxOG4uXyggJy0tIERlZmluZWQgQnkgUGF5IENvZGUgLS0nICksXG5cdFx0XHRhZGRlZF9pdGVtczogW1xuXHRcdFx0XHR7IHZhbHVlOiBUVFVVSUQuemVyb19pZCwgbGFiZWw6ICQuaTE4bi5fKCAnLS0gRGVmaW5lZCBCeSBQYXkgQ29kZSAtLScgKSB9XG5cdFx0XHRdXG5cdFx0fSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUGF5IEZvcm11bGEgUG9saWN5JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9icmVha19wb2xpY3lfY29sdW1uMSApO1xuXHR9XG5cblx0YnVpbGRTZWFyY2hGaWVsZHMoKSB7XG5cblx0XHRzdXBlci5idWlsZFNlYXJjaEZpZWxkcygpO1xuXHRcdHRoaXMuc2VhcmNoX2ZpZWxkcyA9IFtcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ05hbWUnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICduYW1lJyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVHlwZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3R5cGVfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1BheSBDb2RlJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZpZWxkOiAncGF5X2NvZGVfaWQnLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9wYXlfY29kZScsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5Q29kZSxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1BheSBGb3JtdWxhIFBvbGljeScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3BheV9mb3JtdWxhX3BvbGljeV9pZCcsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3BheV9mb3JtdWxhX3BvbGljeScsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5Rm9ybXVsYVBvbGljeSxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0NyZWF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdjcmVhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1VwZGF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICd1cGRhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKVxuXHRcdF07XG5cdH1cblxuXHRvbkZvcm1JdGVtQ2hhbmdlKCB0YXJnZXQsIGRvTm90VmFsaWRhdGUgKSB7XG5cdFx0dGhpcy5zZXRJc0NoYW5nZWQoIHRhcmdldCApO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXRpbmdGaWVsZHNXaGVuRm9ybUNoYW5nZSggdGFyZ2V0ICk7XG5cblx0XHR2YXIga2V5ID0gdGFyZ2V0LmdldEZpZWxkKCk7XG5cdFx0dmFyIGNfdmFsdWUgPSB0YXJnZXQuZ2V0VmFsdWUoKTtcblxuLy9cdFx0c3dpdGNoICgga2V5ICkge1xuLy9cdFx0XHRjYXNlICd0cmlnZ2VyX3RpbWUnOlxuLy9cdFx0XHRjYXNlICdhbW91bnQnOlxuLy9cdFx0XHRjYXNlICdtaW5pbXVtX3B1bmNoX3RpbWUnOlxuLy9cdFx0XHRjYXNlICdtYXhpbXVtX3B1bmNoX3RpbWUnOlxuLy9cdFx0XHRjYXNlICd3aW5kb3dfbGVuZ3RoJzpcbi8vXHRcdFx0Y2FzZSAnc3RhcnRfd2luZG93Jzpcbi8vXHRcdFx0XHRjX3ZhbHVlID0gdGhpcy5kYXRlX2FwaS5wYXJzZVRpbWVVbml0KCB0YXJnZXQuZ2V0VmFsdWUoKSwge2FzeW5jOiBmYWxzZX0gKS5nZXRSZXN1bHQoKTtcbi8vXHRcdFx0XHRicmVhaztcbi8vXHRcdH1cblxuXHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFtrZXldID0gY192YWx1ZTtcblxuXHRcdGlmICgga2V5ID09PSAndHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uVHlwZUNoYW5nZSgpO1xuXHRcdH0gZWxzZSBpZiAoIGtleSA9PT0gJ2F1dG9fZGV0ZWN0X3R5cGVfaWQnICkge1xuXHRcdFx0dGhpcy5vbkF1dG9EZXRlY3RUeXBlQ2hhbmdlKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5lZGl0RmllbGRSZXNpemUoIDAgKTtcblxuXHRcdGlmICggIWRvTm90VmFsaWRhdGUgKSB7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdFZpZXdEYXRhRG9uZSgpIHtcblx0XHRzdXBlci5zZXRFZGl0Vmlld0RhdGFEb25lKCk7XG5cdFx0dGhpcy5vblR5cGVDaGFuZ2UoKTtcblx0XHR0aGlzLm9uQXV0b0RldGVjdFR5cGVDaGFuZ2UoKTtcblx0XHR0aGlzLmVkaXRGaWVsZFJlc2l6ZSggMCApO1xuXHR9XG5cblx0b25UeXBlQ2hhbmdlKCkge1xuXHRcdHRoaXMuZWRpdF92aWV3X2Zvcm1faXRlbV9kaWNbJ2Ftb3VudCddLmZpbmQoICcuZWRpdC12aWV3LWZvcm0taXRlbS1sYWJlbCcgKS50ZXh0KCAkLmkxOG4uXyggJ0JyZWFrIFRpbWUnICkgKTsgLy9LZWVwIGNvbnNpc3RlbnQgZmllbGQgbGFiZWwgZm9yIGFsbCB0eXBlcywgYWxzbyBzaW1wbGlmaWVzIHRoZSBkb2N1bWVudGF0aW9uLlxuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWyd0eXBlX2lkJ10gPT0gMTAgfHwgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWyd0eXBlX2lkJ10gPT0gMTUgKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdpbmNsdWRlX2JyZWFrX3B1bmNoX3RpbWUnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdhbGxvY2F0aW9uX3R5cGVfaWQnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdpbmNsdWRlX211bHRpcGxlX2JyZWFrcycgKTtcblx0XHR9IGVsc2UgaWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ3R5cGVfaWQnXSA9PSAyMCApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2luY2x1ZGVfYnJlYWtfcHVuY2hfdGltZScgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2FsbG9jYXRpb25fdHlwZV9pZCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2luY2x1ZGVfbXVsdGlwbGVfYnJlYWtzJyApO1xuXHRcdH1cblxuXHRcdHRoaXMuZWRpdEZpZWxkUmVzaXplKCk7XG5cdH1cblxuXHRvbkF1dG9EZXRlY3RUeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydhdXRvX2RldGVjdF90eXBlX2lkJ10gPT0gMTAgKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdzdGFydF93aW5kb3cnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICd3aW5kb3dfbGVuZ3RoJyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnbWluaW11bV9wdW5jaF90aW1lJyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnbWF4aW11bV9wdW5jaF90aW1lJyApO1xuXHRcdH0gZWxzZSBpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFsnYXV0b19kZXRlY3RfdHlwZV9pZCddID09IDIwIHx8IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFsnYXV0b19kZXRlY3RfdHlwZV9pZCddID09IDI1ICkge1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnc3RhcnRfd2luZG93JyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnd2luZG93X2xlbmd0aCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ21pbmltdW1fcHVuY2hfdGltZScgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ21heGltdW1fcHVuY2hfdGltZScgKTtcblx0XHR9XG5cblx0XHR0aGlzLmVkaXRGaWVsZFJlc2l6ZSgpO1xuXHR9XG5cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2658\n")}}]);