-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path4721.47d304b3.iframe.bundle.js
2 lines (2 loc) · 66.6 KB
/
4721.47d304b3.iframe.bundle.js
1
2
"use strict";(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[4721],{"./src/redux/unitSelectionRedux.js":(__unused_webpack_module,exports,__webpack_require__)=>{function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.asyncLoadCoursesWithProgress=exports.START_LOADING_COURSES=exports.SET_UNIT_NAME=exports.SET_SCRIPT=exports.SET_COURSES=exports.FINISHED_LOADING_COURSES=void 0,exports.default=function unitSelection(){var state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:initialState,action=arguments.length>1?arguments[1]:void 0;if(action.type===SET_COURSES){var firstCourse=action.coursesWithProgress[0],firstUnit=firstCourse?firstCourse.units[0]:null;return _objectSpread(_objectSpread({},state),{},{coursesWithProgress:action.coursesWithProgress,scriptId:null===state.scriptId?null==firstUnit?void 0:firstUnit.id:state.scriptId})}if(action.type===SET_SCRIPT)return _objectSpread(_objectSpread({},state),{},{scriptId:action.scriptId});if(action.type===START_LOADING_COURSES)return _objectSpread(_objectSpread({},state),{},{isLoadingCoursesWithProgress:!0});if(action.type===FINISHED_LOADING_COURSES)return _objectSpread(_objectSpread({},state),{},{isLoadingCoursesWithProgress:!1});if(action.type===SET_LOADED_SECTION_ID)return _objectSpread(_objectSpread({},state),{},{loadedSectionId:action.loadedSectionId});return state},exports.startLoadingCoursesWithProgress=exports.setScriptId=exports.setLoadedSectionId=exports.setCoursesWithProgress=exports.getSelectedUnitName=exports.getSelectedUnitId=exports.getSelectedScriptFriendlyName=exports.getSelectedScriptDescription=exports.finishedLoadingCoursesWithProgress=exports.doesCurrentCourseUseFeedback=void 0;var _HttpClient=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./src/util/HttpClient.ts"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toConsumableArray(r){return function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}(r)||function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}var SET_SCRIPT=exports.SET_SCRIPT="unitSelection/SET_SCRIPT",SET_COURSES=(exports.SET_UNIT_NAME="unitSelection/SET_UNIT_NAME",exports.SET_COURSES="unitSelection/SET_COURSES"),START_LOADING_COURSES=exports.START_LOADING_COURSES="unitSelection/START_LOADING_COURSES",FINISHED_LOADING_COURSES=exports.FINISHED_LOADING_COURSES="unitSelection/FINISHED_LOADING_COURSES",SET_LOADED_SECTION_ID="unitSelection/SET_LOADED_SECTION_ID",setCoursesWithProgress=(exports.setScriptId=function setScriptId(scriptId){return{type:SET_SCRIPT,scriptId}},exports.setCoursesWithProgress=function setCoursesWithProgress(coursesWithProgress){return{type:SET_COURSES,coursesWithProgress}}),setLoadedSectionId=exports.setLoadedSectionId=function setLoadedSectionId(loadedSectionId){return{type:SET_LOADED_SECTION_ID,loadedSectionId}},startLoadingCoursesWithProgress=exports.startLoadingCoursesWithProgress=function startLoadingCoursesWithProgress(){return{type:START_LOADING_COURSES}},finishedLoadingCoursesWithProgress=exports.finishedLoadingCoursesWithProgress=function finishedLoadingCoursesWithProgress(){return{type:FINISHED_LOADING_COURSES}},getSelectedUnit=(exports.getSelectedUnitId=function getSelectedUnitId(state){return state.unitSelection.scriptId},function getSelectedUnit(state){var unit,scriptId=state.unitSelection.scriptId;return scriptId?(state.unitSelection.coursesWithProgress.forEach((function(course){var tempUnit=course.units.find((function(unit){return scriptId===unit.id}));tempUnit&&(unit=tempUnit)})),unit):null}),initialState=(exports.getSelectedUnitName=function getSelectedUnitName(state){return getSelectedUnit(state)?getSelectedUnit(state).key:null},exports.getSelectedScriptFriendlyName=function getSelectedScriptFriendlyName(state){return getSelectedUnit(state)?getSelectedUnit(state).name:null},exports.getSelectedScriptDescription=function getSelectedScriptDescription(state){return getSelectedUnit(state)?getSelectedUnit(state).description:null},exports.doesCurrentCourseUseFeedback=function doesCurrentCourseUseFeedback(state){var _getSelectedUnit;return!(null===(_getSelectedUnit=getSelectedUnit(state))||void 0===_getSelectedUnit||!_getSelectedUnit.is_feedback_enabled)},exports.asyncLoadCoursesWithProgress=function asyncLoadCoursesWithProgress(){return function(dispatch,getState){var state=getState(),selectedSection=state.teacherSections.sections[state.teacherSections.selectedSectionId];!state.unitSelection.isLoadingCoursesWithProgress&&selectedSection&&state.unitSelection.loadedSectionId!==selectedSection.id&&(dispatch(startLoadingCoursesWithProgress()),_HttpClient.default.fetchJson("/dashboardapi/section_courses/".concat(selectedSection.id)).then((function(response){return null==response?void 0:response.value})).then((function(coursesWithProgress){var reorderedCourses=[].concat(_toConsumableArray(coursesWithProgress.filter((function(course){return course.id!==selectedSection.courseVersionId}))),_toConsumableArray(coursesWithProgress.filter((function(course){return course.id===selectedSection.courseVersionId})))).reverse();dispatch(setCoursesWithProgress(reorderedCourses)),dispatch(finishedLoadingCoursesWithProgress()),dispatch(setLoadedSectionId(selectedSection.id))})).catch((function(err){console.error(err.message),dispatch(finishedLoadingCoursesWithProgress())})))}},{scriptId:null,coursesWithProgress:[],isLoadingCoursesWithProgress:!1,loadedSectionId:null})},"./src/templates/sectionProgress/sectionProgressConstants.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.unitDataPropType=exports.tooltipIdForStudent=exports.studentTableRowType=exports.scrollbarWidth=exports.ViewType=void 0;var _propTypes=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./node_modules/prop-types/index.js")),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.js");exports.unitDataPropType=_propTypes.default.shape({id:_propTypes.default.number.isRequired,csf:_propTypes.default.bool,hasStandards:_propTypes.default.bool,title:_propTypes.default.string,path:_propTypes.default.string,lessons:_propTypes.default.arrayOf(_propTypes.default.shape({levels:_propTypes.default.arrayOf(_propTypes.default.object).isRequired})),family_name:_propTypes.default.string,version_year:_propTypes.default.string,name:_propTypes.default.string}),exports.ViewType={SUMMARY:"summary",DETAIL:"detail",STANDARDS:"standards"},exports.studentTableRowType=_propTypes.default.shape({id:_propTypes.default.string.isRequired,student:_progressTypes.studentType.isRequired,expansionIndex:_propTypes.default.number.isRequired,isExpanded:_propTypes.default.bool,useDarkBackground:_propTypes.default.bool}),exports.tooltipIdForStudent=function tooltipIdForStudent(studentId){return"tooltipIdForStudent".concat(studentId)},exports.scrollbarWidth=function getScrollbarWidth(){var outer=document.createElement("div");outer.style.visibility="hidden",outer.style.overflow="scroll",outer.style.msOverflowStyle="scrollbar",document.body.appendChild(outer);var inner=document.createElement("div");outer.appendChild(inner);var scrollbarWidth=outer.offsetWidth-inner.offsetWidth;return outer.parentNode.removeChild(outer),scrollbarWidth}()},"./src/templates/sectionProgress/sectionProgressRedux.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.collapseMetadataForStudents=exports.addExpandedLesson=exports.addDataByUnit=void 0,exports.default=function sectionProgress(){var _action$level,_action$level$subleve,state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:initialState,action=arguments.length>1?arguments[1]:void 0;if(action.type===_unitSelectionRedux.SET_SCRIPT)return _objectSpread(_objectSpread({},state),{},{lessonOfInterest:INITIAL_LESSON_OF_INTEREST});if(action.type===SET_CURRENT_VIEW)return _objectSpread(_objectSpread({},state),{},{currentView:action.viewType});if(action.type===START_LOADING_PROGRESS)return _objectSpread(_objectSpread({},state),{},{isLoadingProgress:!0});if(action.type===FINISH_LOADING_PROGRESS)return _objectSpread(_objectSpread({},state),{},{isLoadingProgress:!1});if(action.type===START_REFRESHING_PROGRESS)return _objectSpread(_objectSpread({},state),{},{isRefreshingProgress:!0});if(action.type===FINISH_REFRESHING_PROGRESS)return _objectSpread(_objectSpread({},state),{},{isRefreshingProgress:!1});if(action.type===SET_LESSON_OF_INTEREST)return _objectSpread(_objectSpread({},state),{},{lessonOfInterest:action.lessonOfInterest});if(action.type===ADD_DATA_BY_UNIT)return _objectSpread(_objectSpread({},state),{},{unitDataByUnit:_objectSpread(_objectSpread({},state.unitDataByUnit),action.data.unitDataByUnit),studentLevelProgressByUnit:_objectSpread(_objectSpread({},state.studentLevelProgressByUnit),action.data.studentLevelProgressByUnit),studentLessonProgressByUnit:_objectSpread(_objectSpread({},state.studentLessonProgressByUnit),action.data.studentLessonProgressByUnit),studentLastUpdateByUnit:_objectSpread(_objectSpread({},state.studentLastUpdateByUnit),action.data.studentLastUpdateByUnit)});if(action.type===LOAD_EXPANDED_LESSONS_FROM_LOCAL_STORAGE){var expandedLessonIds=getLocalStorage(action.unitId,action.sectionId);return _objectSpread(_objectSpread({},state),{},{expandedLessonIds:_objectSpread(_objectSpread({},state.expandedLessonIds),{},_defineProperty({},action.sectionId,expandedLessonIds))})}if(action.type===ADD_EXPANDED_LESSON){if(action.lesson.lockable||!(0,_progressHelpers.lessonHasLevels)(action.lesson))return state;_AnalyticsReporter.default.sendEvent(_AnalyticsConstants.EVENTS.PROGRESS_V2_LESSON_EXPAND,{sectionId:action.sectionId,lessonId:action.lesson.id});var newSectionExpandedLessonIds=_lodash.default.uniq([].concat(_toConsumableArray(state.expandedLessonIds[action.sectionId]||[]),[action.lesson.id]));return saveExpandedLessonIdsToLocalStorage(action.unitId,action.sectionId,newSectionExpandedLessonIds),_objectSpread(_objectSpread({},state),{},{expandedLessonIds:_objectSpread(_objectSpread({},state.expandedLessonIds),{},_defineProperty({},action.sectionId,newSectionExpandedLessonIds))})}if(action.type===REMOVE_EXPANDED_LESSON){_AnalyticsReporter.default.sendEvent(_AnalyticsConstants.EVENTS.PROGRESS_V2_LESSON_COLLAPSE,{sectionId:action.sectionId,lessonId:action.lessonId});var _newSectionExpandedLessonIds=state.expandedLessonIds[action.sectionId].filter((function(lessonId){return lessonId!==action.lessonId}));return saveExpandedLessonIdsToLocalStorage(action.unitId,action.sectionId,_newSectionExpandedLessonIds),_objectSpread(_objectSpread({},state),{},{expandedLessonIds:_objectSpread(_objectSpread({},state.expandedLessonIds),{},_defineProperty({},action.sectionId,_newSectionExpandedLessonIds))})}if(action.type===TOGGLE_EXPANDED_CHOICE_LEVEL){if(state.expandedChoiceLevelIds.includes(action.level.id))return _AnalyticsReporter.default.sendEvent(_AnalyticsConstants.EVENTS.PROGRESS_V2_COLLAPSE_CHOICE_LEVEL,{sectionId:action.sectionId,levelId:action.level.id}),_objectSpread(_objectSpread({},state),{},{expandedChoiceLevelIds:state.expandedChoiceLevelIds.filter((function(l){return l!==action.level.id}))});if((null===(_action$level=action.level)||void 0===_action$level||null===(_action$level$subleve=_action$level.sublevels)||void 0===_action$level$subleve?void 0:_action$level$subleve.length)>0)return _AnalyticsReporter.default.sendEvent(_AnalyticsConstants.EVENTS.PROGRESS_V2_EXPAND_CHOICE_LEVEL,{sectionId:action.sectionId,levelId:action.level.id}),_objectSpread(_objectSpread({},state),{},{expandedChoiceLevelIds:[].concat(_toConsumableArray(state.expandedChoiceLevelIds),[action.level.id])})}if(action.type===EXPAND_METADATA_FOR_STUDENTS)return _objectSpread(_objectSpread({},state),{},{expandedMetadataStudentIds:_lodash.default.uniq([].concat(_toConsumableArray(state.expandedMetadataStudentIds),_toConsumableArray(action.studentIds)))});if(action.type===COLLAPSE_METADATA_FOR_STUDENTS)return _objectSpread(_objectSpread({},state),{},{expandedMetadataStudentIds:state.expandedMetadataStudentIds.filter((function(studentId){return!action.studentIds.includes(studentId)}))});return state},exports.toggleExpandedChoiceLevel=exports.startRefreshingProgress=exports.startLoadingProgress=exports.setLessonOfInterest=exports.setCurrentView=exports.removeExpandedLesson=exports.loadExpandedLessonsFromLocalStorage=exports.jumpToLessonDetails=exports.getCurrentUnitData=exports.finishRefreshingProgress=exports.finishLoadingProgress=exports.expandMetadataForStudents=void 0;var _lodash=_interopRequireDefault(__webpack_require__("./node_modules/lodash/lodash.js")),_AnalyticsConstants=__webpack_require__("./src/metrics/AnalyticsConstants.js"),_AnalyticsReporter=_interopRequireDefault(__webpack_require__("./src/metrics/AnalyticsReporter.js")),_unitSelectionRedux=__webpack_require__("./src/redux/unitSelectionRedux.js"),_utils=__webpack_require__("./src/utils.js"),_firehose=_interopRequireDefault(__webpack_require__("./src/metrics/firehose.js")),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_sectionProgressConstants=__webpack_require__("./src/templates/sectionProgress/sectionProgressConstants.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _toConsumableArray(r){return function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}(r)||function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var SET_CURRENT_VIEW="sectionProgress/SET_CURRENT_VIEW",SET_LESSON_OF_INTEREST="sectionProgress/SET_LESSON_OF_INTEREST",START_LOADING_PROGRESS="sectionProgress/START_LOADING_PROGRESS",FINISH_LOADING_PROGRESS="sectionProgress/FINISH_LOADING_PROGRESS",START_REFRESHING_PROGRESS="sectionProgress/START_REFRESHING_PROGRESS",FINISH_REFRESHING_PROGRESS="sectionProgress/FINISH_REFRESHING_PROGRESS",ADD_DATA_BY_UNIT="sectionProgress/ADD_DATA_BY_UNIT",LOAD_EXPANDED_LESSONS_FROM_LOCAL_STORAGE="sectionProgress/LOAD_EXPANDED_LESSONS_FROM_LOCAL_STORAGE",ADD_EXPANDED_LESSON="sectionProgress/ADD_EXPANDED_LESSON",REMOVE_EXPANDED_LESSON="sectionProgress/REMOVE_EXPANDED_LESSON",TOGGLE_EXPANDED_CHOICE_LEVEL="sectionProgress/TOGGLE_EXPANDED_CHOICE_LEVEL",EXPAND_METADATA_FOR_STUDENTS="sectionProgress/EXPAND_METADATA_FOR_STUDENTS",COLLAPSE_METADATA_FOR_STUDENTS="sectionProgress/COLLAPSE_METADATA_FOR_STUDENTS",setLessonOfInterest=(exports.startLoadingProgress=function startLoadingProgress(){return{type:START_LOADING_PROGRESS}},exports.finishLoadingProgress=function finishLoadingProgress(){return{type:FINISH_LOADING_PROGRESS}},exports.startRefreshingProgress=function startRefreshingProgress(){return{type:START_REFRESHING_PROGRESS}},exports.finishRefreshingProgress=function finishRefreshingProgress(){return{type:FINISH_REFRESHING_PROGRESS}},exports.setLessonOfInterest=function setLessonOfInterest(lessonOfInterest){return{type:SET_LESSON_OF_INTEREST,lessonOfInterest}}),setCurrentView=exports.setCurrentView=function setCurrentView(viewType){return{type:SET_CURRENT_VIEW,viewType}},INITIAL_LESSON_OF_INTEREST=(exports.addDataByUnit=function addDataByUnit(data){return{type:ADD_DATA_BY_UNIT,data}},exports.loadExpandedLessonsFromLocalStorage=function loadExpandedLessonsFromLocalStorage(unitId,sectionId){return{type:LOAD_EXPANDED_LESSONS_FROM_LOCAL_STORAGE,unitId,sectionId}},exports.addExpandedLesson=function addExpandedLesson(unitId,sectionId,lesson){return{type:ADD_EXPANDED_LESSON,unitId,sectionId,lesson}},exports.removeExpandedLesson=function removeExpandedLesson(unitId,sectionId,lessonId){return{type:REMOVE_EXPANDED_LESSON,unitId,sectionId,lessonId}},exports.toggleExpandedChoiceLevel=function toggleExpandedChoiceLevel(sectionId,level){return{type:TOGGLE_EXPANDED_CHOICE_LEVEL,sectionId,level}},exports.expandMetadataForStudents=function expandMetadataForStudents(studentIds){return{type:EXPAND_METADATA_FOR_STUDENTS,studentIds}},exports.collapseMetadataForStudents=function collapseMetadataForStudents(studentIds){return{type:COLLAPSE_METADATA_FOR_STUDENTS,studentIds}},1),initialState={section:{},currentView:_sectionProgressConstants.ViewType.SUMMARY,unitDataByUnit:{},studentLevelProgressByUnit:{},studentLessonProgressByUnit:{},studentLastUpdateByUnit:{},lessonOfInterest:INITIAL_LESSON_OF_INTEREST,isLoadingProgress:!1,isRefreshingProgress:!1,expandedLessonIds:{},expandedChoiceLevelIds:[],expandedMetadataStudentIds:[]};exports.jumpToLessonDetails=function jumpToLessonDetails(lessonOfInterest){return function(dispatch,getState){var state=getState();dispatch(setLessonOfInterest(lessonOfInterest)),dispatch(setCurrentView(_sectionProgressConstants.ViewType.DETAIL)),_firehose.default.putRecord({study:"teacher_dashboard_actions",study_group:"progress",event:"view_change_toggle",data_json:JSON.stringify({section_id:state.teacherSections.selectedSectionId,old_view:_sectionProgressConstants.ViewType.SUMMARY,new_view:_sectionProgressConstants.ViewType.DETAIL,script_id:state.unitSelection.scriptId})},{includeUserId:!0})}},exports.getCurrentUnitData=function getCurrentUnitData(state){return state.sectionProgress.unitDataByUnit[state.unitSelection.scriptId]};var getExpandedLessonLocalStorageString=function getExpandedLessonLocalStorageString(unitId,sectionId){return"expandedLessonProgressV2-".concat(unitId,"-").concat(sectionId)},saveExpandedLessonIdsToLocalStorage=function saveExpandedLessonIdsToLocalStorage(unitId,sectionId,lessonIds){(0,_utils.trySetLocalStorage)(getExpandedLessonLocalStorageString(unitId,sectionId),JSON.stringify(lessonIds))},getLocalStorage=function getLocalStorage(unitId,sectionId){try{return JSON.parse((0,_utils.tryGetLocalStorage)(getExpandedLessonLocalStorageString(unitId,sectionId),[]))||[]}catch(e){return[]}}}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxPQUFPQSxNQUFNMkosZ0JBQWdCZ0IsZUFBZTNLLE1BQU1ELGNBQWNjLFNBQ2xFLEVBOUJPLElBZ0NEMk8sb0NBQXNDLFNBQXRDQSxvQ0FBdUNyRSxPQUFRQyxXQUFTLGtDQUFBOUUsT0FDaEM2RSxPQUFNLEtBQUE3RSxPQUFJOEUsVUFBUyxFQUUzQ2Esb0NBQXNDLFNBQXRDQSxvQ0FBdUNkLE9BQVFDLFVBQVdxRSxZQUM5RCxFQUFBQyxPQUFBQSxvQkFDRUYsb0NBQW9DckUsT0FBUUMsV0FDNUM0RCxLQUFLQyxVQUFVUSxXQUVuQixFQUVNdkUsZ0JBQWtCLFNBQWxCQSxnQkFBbUJDLE9BQVFDLFdBQy9CLElBQ0UsT0FDRTRELEtBQUtXLE9BQ0gsRUFBQUMsT0FBQUEsb0JBQ0VKLG9DQUFvQ3JFLE9BQVFDLFdBQzVDLE1BRUMsRUFFVCxDQUFFLE1BQU83SixHQUVQLE1BQU8sRUFDVCxDQUNGLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvcmVkdXgvdW5pdFNlbGVjdGlvblJlZHV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvc2VjdGlvblByb2dyZXNzL3NlY3Rpb25Qcm9ncmVzc0NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3NlY3Rpb25Qcm9ncmVzcy9zZWN0aW9uUHJvZ3Jlc3NSZWR1eC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZWR1Y2VyIGZvciBzY3JpcHQgc2VsZWN0aW9uIGluIHRlYWNoZXIgZGFzaGJvYXJkLlxuLy8gVGFiIHNwZWNpZmljIHJlZHVjZXJzIGNhbiBpbXBvcnQgYWN0aW9ucyBmcm9tIHRoaXMgZmlsZVxuLy8gaWYgdGhleSBuZWVkIHRvIHJlc3BvbmQgdG8gYSBzY3JpcHQgY2hhbmdpbmcuXG5cbmltcG9ydCBIdHRwQ2xpZW50IGZyb20gJy4uL3V0aWwvSHR0cENsaWVudCc7XG5cbi8vIEFjdGlvbiB0eXBlIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IFNFVF9TQ1JJUFQgPSAndW5pdFNlbGVjdGlvbi9TRVRfU0NSSVBUJztcbmV4cG9ydCBjb25zdCBTRVRfVU5JVF9OQU1FID0gJ3VuaXRTZWxlY3Rpb24vU0VUX1VOSVRfTkFNRSc7XG5leHBvcnQgY29uc3QgU0VUX0NPVVJTRVMgPSAndW5pdFNlbGVjdGlvbi9TRVRfQ09VUlNFUyc7XG5cbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0NPVVJTRVMgPSAndW5pdFNlbGVjdGlvbi9TVEFSVF9MT0FESU5HX0NPVVJTRVMnO1xuZXhwb3J0IGNvbnN0IEZJTklTSEVEX0xPQURJTkdfQ09VUlNFUyA9XG4gICd1bml0U2VsZWN0aW9uL0ZJTklTSEVEX0xPQURJTkdfQ09VUlNFUyc7XG5cbmNvbnN0IFNFVF9MT0FERURfU0VDVElPTl9JRCA9ICd1bml0U2VsZWN0aW9uL1NFVF9MT0FERURfU0VDVElPTl9JRCc7XG5cbi8vIEFjdGlvbiBjcmVhdG9yc1xuZXhwb3J0IGNvbnN0IHNldFNjcmlwdElkID0gc2NyaXB0SWQgPT4gKHt0eXBlOiBTRVRfU0NSSVBULCBzY3JpcHRJZH0pO1xuZXhwb3J0IGNvbnN0IHNldENvdXJzZXNXaXRoUHJvZ3Jlc3MgPSBjb3Vyc2VzV2l0aFByb2dyZXNzID0+ICh7XG4gIHR5cGU6IFNFVF9DT1VSU0VTLFxuICBjb3Vyc2VzV2l0aFByb2dyZXNzLFxufSk7XG5leHBvcnQgY29uc3Qgc2V0TG9hZGVkU2VjdGlvbklkID0gbG9hZGVkU2VjdGlvbklkID0+ICh7XG4gIHR5cGU6IFNFVF9MT0FERURfU0VDVElPTl9JRCxcbiAgbG9hZGVkU2VjdGlvbklkLFxufSk7XG5cbmV4cG9ydCBjb25zdCBzdGFydExvYWRpbmdDb3Vyc2VzV2l0aFByb2dyZXNzID0gKCkgPT4gKHtcbiAgdHlwZTogU1RBUlRfTE9BRElOR19DT1VSU0VTLFxufSk7XG5leHBvcnQgY29uc3QgZmluaXNoZWRMb2FkaW5nQ291cnNlc1dpdGhQcm9ncmVzcyA9ICgpID0+ICh7XG4gIHR5cGU6IEZJTklTSEVEX0xPQURJTkdfQ09VUlNFUyxcbn0pO1xuXG4vLyBTZWxlY3RvcnNcbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFVuaXRJZCA9IHN0YXRlID0+IHN0YXRlLnVuaXRTZWxlY3Rpb24uc2NyaXB0SWQ7XG5cbmNvbnN0IGdldFNlbGVjdGVkVW5pdCA9IHN0YXRlID0+IHtcbiAgY29uc3Qgc2NyaXB0SWQgPSBzdGF0ZS51bml0U2VsZWN0aW9uLnNjcmlwdElkO1xuICBpZiAoIXNjcmlwdElkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgdW5pdDtcbiAgc3RhdGUudW5pdFNlbGVjdGlvbi5jb3Vyc2VzV2l0aFByb2dyZXNzLmZvckVhY2goY291cnNlID0+IHtcbiAgICBjb25zdCB0ZW1wVW5pdCA9IGNvdXJzZS51bml0cy5maW5kKHVuaXQgPT4gc2NyaXB0SWQgPT09IHVuaXQuaWQpO1xuICAgIGlmICh0ZW1wVW5pdCkge1xuICAgICAgdW5pdCA9IHRlbXBVbml0O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB1bml0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkVW5pdE5hbWUgPSBzdGF0ZSA9PiB7XG4gIHJldHVybiBnZXRTZWxlY3RlZFVuaXQoc3RhdGUpID8gZ2V0U2VsZWN0ZWRVbml0KHN0YXRlKS5rZXkgOiBudWxsO1xufTtcblxuLyogR2V0IHRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgYSBzY3JpcHQodGhlIHVuaXQgb3IgY291cnNlIG5hbWUpICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRTY3JpcHRGcmllbmRseU5hbWUgPSBzdGF0ZSA9PiB7XG4gIHJldHVybiBnZXRTZWxlY3RlZFVuaXQoc3RhdGUpID8gZ2V0U2VsZWN0ZWRVbml0KHN0YXRlKS5uYW1lIDogbnVsbDtcbn07XG5cbi8qIEdldCB0aGUgZGVzY3JpcHRpb24gb2YgYSBzY3JpcHQodGhlIHVuaXQgb3IgY291cnNlIG5hbWUpICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRTY3JpcHREZXNjcmlwdGlvbiA9IHN0YXRlID0+IHtcbiAgcmV0dXJuIGdldFNlbGVjdGVkVW5pdChzdGF0ZSkgPyBnZXRTZWxlY3RlZFVuaXQoc3RhdGUpLmRlc2NyaXB0aW9uIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBkb2VzQ3VycmVudENvdXJzZVVzZUZlZWRiYWNrID0gc3RhdGUgPT4ge1xuICByZXR1cm4gISFnZXRTZWxlY3RlZFVuaXQoc3RhdGUpPy5pc19mZWVkYmFja19lbmFibGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGFzeW5jTG9hZENvdXJzZXNXaXRoUHJvZ3Jlc3MgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gZ2V0U3RhdGUoKTtcbiAgY29uc3Qgc2VsZWN0ZWRTZWN0aW9uID1cbiAgICBzdGF0ZS50ZWFjaGVyU2VjdGlvbnMuc2VjdGlvbnNbc3RhdGUudGVhY2hlclNlY3Rpb25zLnNlbGVjdGVkU2VjdGlvbklkXTtcblxuICBpZiAoXG4gICAgc3RhdGUudW5pdFNlbGVjdGlvbi5pc0xvYWRpbmdDb3Vyc2VzV2l0aFByb2dyZXNzIHx8XG4gICAgIXNlbGVjdGVkU2VjdGlvbiB8fFxuICAgIHN0YXRlLnVuaXRTZWxlY3Rpb24ubG9hZGVkU2VjdGlvbklkID09PSBzZWxlY3RlZFNlY3Rpb24uaWRcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRpc3BhdGNoKHN0YXJ0TG9hZGluZ0NvdXJzZXNXaXRoUHJvZ3Jlc3MoKSk7XG5cbiAgSHR0cENsaWVudC5mZXRjaEpzb24oYC9kYXNoYm9hcmRhcGkvc2VjdGlvbl9jb3Vyc2VzLyR7c2VsZWN0ZWRTZWN0aW9uLmlkfWApXG4gICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2U/LnZhbHVlKVxuICAgIC50aGVuKGNvdXJzZXNXaXRoUHJvZ3Jlc3MgPT4ge1xuICAgICAgLy8gUmVvcmRlciBjb3Vyc2VzV2l0aFByb2dyZXNzIHNvIHRoYXQgdGhlIGN1cnJlbnQgc2VjdGlvbiBpcyBhdCB0aGUgdG9wIGFuZCBvdGhlciBzZWN0aW9ucyBhcmUgaW4gb3JkZXIgZnJvbSBuZXdlc3QgdG8gb2xkZXN0XG4gICAgICBjb25zdCByZW9yZGVyZWRDb3Vyc2VzID0gW1xuICAgICAgICAuLi5jb3Vyc2VzV2l0aFByb2dyZXNzLmZpbHRlcihcbiAgICAgICAgICBjb3Vyc2UgPT4gY291cnNlLmlkICE9PSBzZWxlY3RlZFNlY3Rpb24uY291cnNlVmVyc2lvbklkXG4gICAgICAgICksXG4gICAgICAgIC4uLmNvdXJzZXNXaXRoUHJvZ3Jlc3MuZmlsdGVyKFxuICAgICAgICAgIGNvdXJzZSA9PiBjb3Vyc2UuaWQgPT09IHNlbGVjdGVkU2VjdGlvbi5jb3Vyc2VWZXJzaW9uSWRcbiAgICAgICAgKSxcbiAgICAgIF0ucmV2ZXJzZSgpO1xuICAgICAgZGlzcGF0Y2goc2V0Q291cnNlc1dpdGhQcm9ncmVzcyhyZW9yZGVyZWRDb3Vyc2VzKSk7XG4gICAgICBkaXNwYXRjaChmaW5pc2hlZExvYWRpbmdDb3Vyc2VzV2l0aFByb2dyZXNzKCkpO1xuICAgICAgZGlzcGF0Y2goc2V0TG9hZGVkU2VjdGlvbklkKHNlbGVjdGVkU2VjdGlvbi5pZCkpO1xuICAgIH0pXG4gICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgIGRpc3BhdGNoKGZpbmlzaGVkTG9hZGluZ0NvdXJzZXNXaXRoUHJvZ3Jlc3MoKSk7XG4gICAgfSk7XG59O1xuXG4vLyBJbml0aWFsIHN0YXRlIG9mIHVuaXRTZWxlY3Rpb25SZWR1eFxuY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICBzY3JpcHRJZDogbnVsbCxcbiAgY291cnNlc1dpdGhQcm9ncmVzczogW10sXG4gIGlzTG9hZGluZ0NvdXJzZXNXaXRoUHJvZ3Jlc3M6IGZhbHNlLFxuICBsb2FkZWRTZWN0aW9uSWQ6IG51bGwsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bml0U2VsZWN0aW9uKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pIHtcbiAgaWYgKGFjdGlvbi50eXBlID09PSBTRVRfQ09VUlNFUykge1xuICAgIGxldCBmaXJzdENvdXJzZSA9IGFjdGlvbi5jb3Vyc2VzV2l0aFByb2dyZXNzWzBdO1xuXG4gICAgY29uc3QgZmlyc3RVbml0ID0gZmlyc3RDb3Vyc2UgPyBmaXJzdENvdXJzZS51bml0c1swXSA6IG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjb3Vyc2VzV2l0aFByb2dyZXNzOiBhY3Rpb24uY291cnNlc1dpdGhQcm9ncmVzcyxcbiAgICAgIC8vIFRoaXMgYXV0b21hdGljYWxseSBzZWxlY3RzIHRoZSBmaXJzdCB1bml0IG9mIHRoZSBmaXJzdCBjb3Vyc2VcbiAgICAgIC8vIHVubGVzcyBhIHNjcmlwdElkIGlzIGFscmVhZHkgc2V0XG4gICAgICBzY3JpcHRJZDogc3RhdGUuc2NyaXB0SWQgPT09IG51bGwgPyBmaXJzdFVuaXQ/LmlkIDogc3RhdGUuc2NyaXB0SWQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU0VUX1NDUklQVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNjcmlwdElkOiBhY3Rpb24uc2NyaXB0SWQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU1RBUlRfTE9BRElOR19DT1VSU0VTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgaXNMb2FkaW5nQ291cnNlc1dpdGhQcm9ncmVzczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFjdGlvbi50eXBlID09PSBGSU5JU0hFRF9MT0FESU5HX0NPVVJTRVMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBpc0xvYWRpbmdDb3Vyc2VzV2l0aFByb2dyZXNzOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFjdGlvbi50eXBlID09PSBTRVRfTE9BREVEX1NFQ1RJT05fSUQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkZWRTZWN0aW9uSWQ6IGFjdGlvbi5sb2FkZWRTZWN0aW9uSWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmltcG9ydCB7c3R1ZGVudFR5cGV9IGZyb20gJ0BjZG8vYXBwcy90ZW1wbGF0ZXMvcHJvZ3Jlc3MvcHJvZ3Jlc3NUeXBlcyc7XG5cbi8qKlxuICogU2hhcGUgZm9yIHVuaXREYXRhXG4gKiBUaGUgZGF0YSB3ZSBnZXQgZnJvbSB0aGUgc2VydmVyJ3MgY2FsbCB0byB1bml0LnN1bW1hcml6ZS4gVGhlIGZvcm1hdFxuICogZW5kcyB1cCBiZWluZyBzaW1pbGFyIHRvIHRoYXQgd2hpY2ggd2Ugc2VuZCB0byBpbml0UHJvZ3Jlc3MgaW4gcHJvZ3Jlc3NSZWR1eC5cbiAqIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB1bml0RGF0YS5sZXNzb25zLCB3aGljaCBnZXRzIHVzZWQgYnkgbGV2ZWxzV2l0aExlc3NvblxuICogTm90ZTogdW5pdCB3YXMgcHJldmlvdXNseSBuYW1lZCBzY3JpcHRcbiAqL1xuZXhwb3J0IGNvbnN0IHVuaXREYXRhUHJvcFR5cGUgPSBQcm9wVHlwZXMuc2hhcGUoe1xuICBpZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBjc2Y6IFByb3BUeXBlcy5ib29sLFxuICBoYXNTdGFuZGFyZHM6IFByb3BUeXBlcy5ib29sLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGVzc29uczogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGxldmVsczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCkuaXNSZXF1aXJlZCxcbiAgICB9KVxuICApLFxuICBmYW1pbHlfbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmVyc2lvbl95ZWFyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxufSk7XG5cbi8vIFR5cGVzIG9mIHZpZXdzIG9mIHRoZSBwcm9ncmVzcyB0YWJcbmV4cG9ydCBjb25zdCBWaWV3VHlwZSA9IHtcbiAgU1VNTUFSWTogJ3N1bW1hcnknLCAvLyBsZXNzb25zXG4gIERFVEFJTDogJ2RldGFpbCcsIC8vIGxldmVsc1xuICBTVEFOREFSRFM6ICdzdGFuZGFyZHMnLFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdHVkZW50VGFibGVSb3dcbiAqIEFuIG9iamVjdCB3cmFwcGluZyBhcm91bmQgYHN0dWRlbnRUeXBlYCB1c2VkIHRvIG1hbmFnZSB0aGVcbiAqIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZSBvZiBzZWN0aW9uIHByb2dyZXNzIHRhYmxlIHJvd3MuXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkXG4gKiBAcHJvcGVydHkge3N0dWRlbnRUeXBlfSBzdHVkZW50XG4gKiBAcHJvcGVydHkge251bWJlcn0gZXhwYW5zaW9uSW5kZXggMCBmb3IgdGhlIHByaW1hcnkgcm93LFxuICogb3RoZXJ3aXNlIDEtYmFzZWQgaW5kZXggb2YgZXhwYW5kZWQgcm93XG4gKiBAcHJvcGVydHkge2Jvb2x9IGlzRXhwYW5kZWQgdXNlZCBieSBwcmltYXJ5IHJvdyB0byB0cmFjayBzdGF0ZVxuICogQHByb3BlcnR5IHtib29sfSB1c2VEYXJrQmFja2dyb3VuZCB1c2VkIGJ5IHByaW1hcnkgcm93IHRvIGRldGVybWluZSBiYWNrZ3JvdW5kIGNvbG9yXG4gKi9cbmV4cG9ydCBjb25zdCBzdHVkZW50VGFibGVSb3dUeXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc3R1ZGVudDogc3R1ZGVudFR5cGUuaXNSZXF1aXJlZCxcbiAgZXhwYW5zaW9uSW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgaXNFeHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHVzZURhcmtCYWNrZ3JvdW5kOiBQcm9wVHlwZXMuYm9vbCxcbn0pO1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcElkRm9yU3R1ZGVudCA9IHN0dWRlbnRJZCA9PlxuICBgdG9vbHRpcElkRm9yU3R1ZGVudCR7c3R1ZGVudElkfWA7XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IGdldFNjcm9sbGJhcldpZHRoKCk7XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGJhcldpZHRoKCkge1xuICAvLyBDcmVhdGluZyBpbnZpc2libGUgY29udGFpbmVyXG4gIGNvbnN0IG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG91dGVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSAnc2Nyb2xsJzsgLy8gZm9yY2luZyBzY3JvbGxiYXIgdG8gYXBwZWFyXG4gIG91dGVyLnN0eWxlLm1zT3ZlcmZsb3dTdHlsZSA9ICdzY3JvbGxiYXInOyAvLyBuZWVkZWQgZm9yIFdpbkpTIGFwcHNcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRlcik7XG5cbiAgLy8gQ3JlYXRpbmcgaW5uZXIgZWxlbWVudCBhbmQgcGxhY2luZyBpdCBpbiB0aGUgY29udGFpbmVyXG4gIGNvbnN0IGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG91dGVyLmFwcGVuZENoaWxkKGlubmVyKTtcblxuICAvLyBDYWxjdWxhdGluZyBkaWZmZXJlbmNlIGJldHdlZW4gY29udGFpbmVyJ3MgZnVsbCB3aWR0aCBhbmQgdGhlIGNoaWxkIHdpZHRoXG4gIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gb3V0ZXIub2Zmc2V0V2lkdGggLSBpbm5lci5vZmZzZXRXaWR0aDtcblxuICAvLyBSZW1vdmluZyB0ZW1wb3JhcnkgZWxlbWVudHMgZnJvbSB0aGUgRE9NXG4gIG91dGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3V0ZXIpO1xuXG4gIHJldHVybiBzY3JvbGxiYXJXaWR0aDtcbn1cbiIsImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7RVZFTlRTfSBmcm9tICdAY2RvL2FwcHMvbWV0cmljcy9BbmFseXRpY3NDb25zdGFudHMnO1xuaW1wb3J0IGFuYWx5dGljc1JlcG9ydGVyIGZyb20gJ0BjZG8vYXBwcy9tZXRyaWNzL0FuYWx5dGljc1JlcG9ydGVyJztcbmltcG9ydCB7U0VUX1NDUklQVH0gZnJvbSAnQGNkby9hcHBzL3JlZHV4L3VuaXRTZWxlY3Rpb25SZWR1eCc7XG5pbXBvcnQge3RyeVNldExvY2FsU3RvcmFnZSwgdHJ5R2V0TG9jYWxTdG9yYWdlfSBmcm9tICdAY2RvL2FwcHMvdXRpbHMnO1xuXG5pbXBvcnQgZmlyZWhvc2VDbGllbnQgZnJvbSAnLi4vLi4vbWV0cmljcy9maXJlaG9zZSc7XG5pbXBvcnQge2xlc3Nvbkhhc0xldmVsc30gZnJvbSAnLi4vcHJvZ3Jlc3MvcHJvZ3Jlc3NIZWxwZXJzJztcblxuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnLi9zZWN0aW9uUHJvZ3Jlc3NDb25zdGFudHMnO1xuXG5jb25zdCBTRVRfQ1VSUkVOVF9WSUVXID0gJ3NlY3Rpb25Qcm9ncmVzcy9TRVRfQ1VSUkVOVF9WSUVXJztcbmNvbnN0IFNFVF9MRVNTT05fT0ZfSU5URVJFU1QgPSAnc2VjdGlvblByb2dyZXNzL1NFVF9MRVNTT05fT0ZfSU5URVJFU1QnO1xuY29uc3QgU1RBUlRfTE9BRElOR19QUk9HUkVTUyA9ICdzZWN0aW9uUHJvZ3Jlc3MvU1RBUlRfTE9BRElOR19QUk9HUkVTUyc7XG5jb25zdCBGSU5JU0hfTE9BRElOR19QUk9HUkVTUyA9ICdzZWN0aW9uUHJvZ3Jlc3MvRklOSVNIX0xPQURJTkdfUFJPR1JFU1MnO1xuY29uc3QgU1RBUlRfUkVGUkVTSElOR19QUk9HUkVTUyA9ICdzZWN0aW9uUHJvZ3Jlc3MvU1RBUlRfUkVGUkVTSElOR19QUk9HUkVTUyc7XG5jb25zdCBGSU5JU0hfUkVGUkVTSElOR19QUk9HUkVTUyA9ICdzZWN0aW9uUHJvZ3Jlc3MvRklOSVNIX1JFRlJFU0hJTkdfUFJPR1JFU1MnO1xuY29uc3QgQUREX0RBVEFfQllfVU5JVCA9ICdzZWN0aW9uUHJvZ3Jlc3MvQUREX0RBVEFfQllfVU5JVCc7XG5cbmNvbnN0IExPQURfRVhQQU5ERURfTEVTU09OU19GUk9NX0xPQ0FMX1NUT1JBR0UgPVxuICAnc2VjdGlvblByb2dyZXNzL0xPQURfRVhQQU5ERURfTEVTU09OU19GUk9NX0xPQ0FMX1NUT1JBR0UnO1xuY29uc3QgQUREX0VYUEFOREVEX0xFU1NPTiA9ICdzZWN0aW9uUHJvZ3Jlc3MvQUREX0VYUEFOREVEX0xFU1NPTic7XG5jb25zdCBSRU1PVkVfRVhQQU5ERURfTEVTU09OID0gJ3NlY3Rpb25Qcm9ncmVzcy9SRU1PVkVfRVhQQU5ERURfTEVTU09OJztcblxuY29uc3QgVE9HR0xFX0VYUEFOREVEX0NIT0lDRV9MRVZFTCA9XG4gICdzZWN0aW9uUHJvZ3Jlc3MvVE9HR0xFX0VYUEFOREVEX0NIT0lDRV9MRVZFTCc7XG5cbmNvbnN0IEVYUEFORF9NRVRBREFUQV9GT1JfU1RVREVOVFMgPVxuICAnc2VjdGlvblByb2dyZXNzL0VYUEFORF9NRVRBREFUQV9GT1JfU1RVREVOVFMnO1xuY29uc3QgQ09MTEFQU0VfTUVUQURBVEFfRk9SX1NUVURFTlRTID1cbiAgJ3NlY3Rpb25Qcm9ncmVzcy9DT0xMQVBTRV9NRVRBREFUQV9GT1JfU1RVREVOVFMnO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnNcbmV4cG9ydCBjb25zdCBzdGFydExvYWRpbmdQcm9ncmVzcyA9ICgpID0+ICh7dHlwZTogU1RBUlRfTE9BRElOR19QUk9HUkVTU30pO1xuZXhwb3J0IGNvbnN0IGZpbmlzaExvYWRpbmdQcm9ncmVzcyA9ICgpID0+ICh7dHlwZTogRklOSVNIX0xPQURJTkdfUFJPR1JFU1N9KTtcbmV4cG9ydCBjb25zdCBzdGFydFJlZnJlc2hpbmdQcm9ncmVzcyA9ICgpID0+ICh7XG4gIHR5cGU6IFNUQVJUX1JFRlJFU0hJTkdfUFJPR1JFU1MsXG59KTtcbmV4cG9ydCBjb25zdCBmaW5pc2hSZWZyZXNoaW5nUHJvZ3Jlc3MgPSAoKSA9PiAoe1xuICB0eXBlOiBGSU5JU0hfUkVGUkVTSElOR19QUk9HUkVTUyxcbn0pO1xuZXhwb3J0IGNvbnN0IHNldExlc3Nvbk9mSW50ZXJlc3QgPSBsZXNzb25PZkludGVyZXN0ID0+ICh7XG4gIHR5cGU6IFNFVF9MRVNTT05fT0ZfSU5URVJFU1QsXG4gIGxlc3Nvbk9mSW50ZXJlc3QsXG59KTtcbmV4cG9ydCBjb25zdCBzZXRDdXJyZW50VmlldyA9IHZpZXdUeXBlID0+ICh7dHlwZTogU0VUX0NVUlJFTlRfVklFVywgdmlld1R5cGV9KTtcbmV4cG9ydCBjb25zdCBhZGREYXRhQnlVbml0ID0gZGF0YSA9PiAoe1xuICB0eXBlOiBBRERfREFUQV9CWV9VTklULFxuICBkYXRhLFxufSk7XG5cbmV4cG9ydCBjb25zdCBsb2FkRXhwYW5kZWRMZXNzb25zRnJvbUxvY2FsU3RvcmFnZSA9ICh1bml0SWQsIHNlY3Rpb25JZCkgPT4gKHtcbiAgdHlwZTogTE9BRF9FWFBBTkRFRF9MRVNTT05TX0ZST01fTE9DQUxfU1RPUkFHRSxcbiAgdW5pdElkLFxuICBzZWN0aW9uSWQsXG59KTtcblxuZXhwb3J0IGNvbnN0IGFkZEV4cGFuZGVkTGVzc29uID0gKHVuaXRJZCwgc2VjdGlvbklkLCBsZXNzb24pID0+ICh7XG4gIHR5cGU6IEFERF9FWFBBTkRFRF9MRVNTT04sXG4gIHVuaXRJZCxcbiAgc2VjdGlvbklkLFxuICBsZXNzb24sXG59KTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUV4cGFuZGVkTGVzc29uID0gKHVuaXRJZCwgc2VjdGlvbklkLCBsZXNzb25JZCkgPT4gKHtcbiAgdHlwZTogUkVNT1ZFX0VYUEFOREVEX0xFU1NPTixcbiAgdW5pdElkLFxuICBzZWN0aW9uSWQsXG4gIGxlc3NvbklkLFxufSk7XG5cbmV4cG9ydCBjb25zdCB0b2dnbGVFeHBhbmRlZENob2ljZUxldmVsID0gKHNlY3Rpb25JZCwgbGV2ZWwpID0+ICh7XG4gIHR5cGU6IFRPR0dMRV9FWFBBTkRFRF9DSE9JQ0VfTEVWRUwsXG4gIHNlY3Rpb25JZCxcbiAgbGV2ZWwsXG59KTtcblxuZXhwb3J0IGNvbnN0IGV4cGFuZE1ldGFkYXRhRm9yU3R1ZGVudHMgPSBzdHVkZW50SWRzID0+ICh7XG4gIHR5cGU6IEVYUEFORF9NRVRBREFUQV9GT1JfU1RVREVOVFMsXG4gIHN0dWRlbnRJZHMsXG59KTtcbmV4cG9ydCBjb25zdCBjb2xsYXBzZU1ldGFkYXRhRm9yU3R1ZGVudHMgPSBzdHVkZW50SWRzID0+ICh7XG4gIHR5cGU6IENPTExBUFNFX01FVEFEQVRBX0ZPUl9TVFVERU5UUyxcbiAgc3R1ZGVudElkcyxcbn0pO1xuXG5jb25zdCBJTklUSUFMX0xFU1NPTl9PRl9JTlRFUkVTVCA9IDE7XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgc2VjdGlvbjoge30sXG4gIGN1cnJlbnRWaWV3OiBWaWV3VHlwZS5TVU1NQVJZLFxuICB1bml0RGF0YUJ5VW5pdDoge30sXG4gIHN0dWRlbnRMZXZlbFByb2dyZXNzQnlVbml0OiB7fSxcbiAgc3R1ZGVudExlc3NvblByb2dyZXNzQnlVbml0OiB7fSxcbiAgc3R1ZGVudExhc3RVcGRhdGVCeVVuaXQ6IHt9LFxuICBsZXNzb25PZkludGVyZXN0OiBJTklUSUFMX0xFU1NPTl9PRl9JTlRFUkVTVCxcbiAgaXNMb2FkaW5nUHJvZ3Jlc3M6IGZhbHNlLFxuICBpc1JlZnJlc2hpbmdQcm9ncmVzczogZmFsc2UsXG4gIGV4cGFuZGVkTGVzc29uSWRzOiB7fSxcbiAgZXhwYW5kZWRDaG9pY2VMZXZlbElkczogW10sXG4gIGV4cGFuZGVkTWV0YWRhdGFTdHVkZW50SWRzOiBbXSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlY3Rpb25Qcm9ncmVzcyhzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uKSB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU0VUX1NDUklQVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxlc3Nvbk9mSW50ZXJlc3Q6IElOSVRJQUxfTEVTU09OX09GX0lOVEVSRVNULFxuICAgIH07XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSBTRVRfQ1VSUkVOVF9WSUVXKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudFZpZXc6IGFjdGlvbi52aWV3VHlwZSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU1RBUlRfTE9BRElOR19QUk9HUkVTUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlzTG9hZGluZ1Byb2dyZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSBGSU5JU0hfTE9BRElOR19QUk9HUkVTUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlzTG9hZGluZ1Byb2dyZXNzOiBmYWxzZSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU1RBUlRfUkVGUkVTSElOR19QUk9HUkVTUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlzUmVmcmVzaGluZ1Byb2dyZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSBGSU5JU0hfUkVGUkVTSElOR19QUk9HUkVTUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlzUmVmcmVzaGluZ1Byb2dyZXNzOiBmYWxzZSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU0VUX0xFU1NPTl9PRl9JTlRFUkVTVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxlc3Nvbk9mSW50ZXJlc3Q6IGFjdGlvbi5sZXNzb25PZkludGVyZXN0LFxuICAgIH07XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSBBRERfREFUQV9CWV9VTklUKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdW5pdERhdGFCeVVuaXQ6IHtcbiAgICAgICAgLi4uc3RhdGUudW5pdERhdGFCeVVuaXQsXG4gICAgICAgIC4uLmFjdGlvbi5kYXRhLnVuaXREYXRhQnlVbml0LFxuICAgICAgfSxcbiAgICAgIHN0dWRlbnRMZXZlbFByb2dyZXNzQnlVbml0OiB7XG4gICAgICAgIC4uLnN0YXRlLnN0dWRlbnRMZXZlbFByb2dyZXNzQnlVbml0LFxuICAgICAgICAuLi5hY3Rpb24uZGF0YS5zdHVkZW50TGV2ZWxQcm9ncmVzc0J5VW5pdCxcbiAgICAgIH0sXG4gICAgICBzdHVkZW50TGVzc29uUHJvZ3Jlc3NCeVVuaXQ6IHtcbiAgICAgICAgLi4uc3RhdGUuc3R1ZGVudExlc3NvblByb2dyZXNzQnlVbml0LFxuICAgICAgICAuLi5hY3Rpb24uZGF0YS5zdHVkZW50TGVzc29uUHJvZ3Jlc3NCeVVuaXQsXG4gICAgICB9LFxuICAgICAgc3R1ZGVudExhc3RVcGRhdGVCeVVuaXQ6IHtcbiAgICAgICAgLi4uc3RhdGUuc3R1ZGVudExhc3RVcGRhdGVCeVVuaXQsXG4gICAgICAgIC4uLmFjdGlvbi5kYXRhLnN0dWRlbnRMYXN0VXBkYXRlQnlVbml0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gTE9BRF9FWFBBTkRFRF9MRVNTT05TX0ZST01fTE9DQUxfU1RPUkFHRSkge1xuICAgIGNvbnN0IGV4cGFuZGVkTGVzc29uSWRzID0gZ2V0TG9jYWxTdG9yYWdlKGFjdGlvbi51bml0SWQsIGFjdGlvbi5zZWN0aW9uSWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGV4cGFuZGVkTGVzc29uSWRzOiB7XG4gICAgICAgIC4uLnN0YXRlLmV4cGFuZGVkTGVzc29uSWRzLFxuICAgICAgICBbYWN0aW9uLnNlY3Rpb25JZF06IGV4cGFuZGVkTGVzc29uSWRzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gQUREX0VYUEFOREVEX0xFU1NPTikge1xuICAgIGlmIChhY3Rpb24ubGVzc29uLmxvY2thYmxlIHx8ICFsZXNzb25IYXNMZXZlbHMoYWN0aW9uLmxlc3NvbikpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBhbmFseXRpY3NSZXBvcnRlci5zZW5kRXZlbnQoRVZFTlRTLlBST0dSRVNTX1YyX0xFU1NPTl9FWFBBTkQsIHtcbiAgICAgIHNlY3Rpb25JZDogYWN0aW9uLnNlY3Rpb25JZCxcbiAgICAgIGxlc3NvbklkOiBhY3Rpb24ubGVzc29uLmlkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbmV3U2VjdGlvbkV4cGFuZGVkTGVzc29uSWRzID0gXy51bmlxKFtcbiAgICAgIC4uLihzdGF0ZS5leHBhbmRlZExlc3Nvbklkc1thY3Rpb24uc2VjdGlvbklkXSB8fCBbXSksXG4gICAgICBhY3Rpb24ubGVzc29uLmlkLFxuICAgIF0pO1xuICAgIHNhdmVFeHBhbmRlZExlc3Nvbklkc1RvTG9jYWxTdG9yYWdlKFxuICAgICAgYWN0aW9uLnVuaXRJZCxcbiAgICAgIGFjdGlvbi5zZWN0aW9uSWQsXG4gICAgICBuZXdTZWN0aW9uRXhwYW5kZWRMZXNzb25JZHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZXhwYW5kZWRMZXNzb25JZHM6IHtcbiAgICAgICAgLi4uc3RhdGUuZXhwYW5kZWRMZXNzb25JZHMsXG4gICAgICAgIFthY3Rpb24uc2VjdGlvbklkXTogbmV3U2VjdGlvbkV4cGFuZGVkTGVzc29uSWRzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gUkVNT1ZFX0VYUEFOREVEX0xFU1NPTikge1xuICAgIGFuYWx5dGljc1JlcG9ydGVyLnNlbmRFdmVudChFVkVOVFMuUFJPR1JFU1NfVjJfTEVTU09OX0NPTExBUFNFLCB7XG4gICAgICBzZWN0aW9uSWQ6IGFjdGlvbi5zZWN0aW9uSWQsXG4gICAgICBsZXNzb25JZDogYWN0aW9uLmxlc3NvbklkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbmV3U2VjdGlvbkV4cGFuZGVkTGVzc29uSWRzID0gc3RhdGUuZXhwYW5kZWRMZXNzb25JZHNbXG4gICAgICBhY3Rpb24uc2VjdGlvbklkXG4gICAgXS5maWx0ZXIobGVzc29uSWQgPT4gbGVzc29uSWQgIT09IGFjdGlvbi5sZXNzb25JZCk7XG4gICAgc2F2ZUV4cGFuZGVkTGVzc29uSWRzVG9Mb2NhbFN0b3JhZ2UoXG4gICAgICBhY3Rpb24udW5pdElkLFxuICAgICAgYWN0aW9uLnNlY3Rpb25JZCxcbiAgICAgIG5ld1NlY3Rpb25FeHBhbmRlZExlc3Nvbklkc1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBleHBhbmRlZExlc3Nvbklkczoge1xuICAgICAgICAuLi5zdGF0ZS5leHBhbmRlZExlc3NvbklkcyxcbiAgICAgICAgW2FjdGlvbi5zZWN0aW9uSWRdOiBuZXdTZWN0aW9uRXhwYW5kZWRMZXNzb25JZHMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSBUT0dHTEVfRVhQQU5ERURfQ0hPSUNFX0xFVkVMKSB7XG4gICAgaWYgKHN0YXRlLmV4cGFuZGVkQ2hvaWNlTGV2ZWxJZHMuaW5jbHVkZXMoYWN0aW9uLmxldmVsLmlkKSkge1xuICAgICAgYW5hbHl0aWNzUmVwb3J0ZXIuc2VuZEV2ZW50KEVWRU5UUy5QUk9HUkVTU19WMl9DT0xMQVBTRV9DSE9JQ0VfTEVWRUwsIHtcbiAgICAgICAgc2VjdGlvbklkOiBhY3Rpb24uc2VjdGlvbklkLFxuICAgICAgICBsZXZlbElkOiBhY3Rpb24ubGV2ZWwuaWQsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGV4cGFuZGVkQ2hvaWNlTGV2ZWxJZHM6IHN0YXRlLmV4cGFuZGVkQ2hvaWNlTGV2ZWxJZHMuZmlsdGVyKFxuICAgICAgICAgIGwgPT4gbCAhPT0gYWN0aW9uLmxldmVsLmlkXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uLmxldmVsPy5zdWJsZXZlbHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFuYWx5dGljc1JlcG9ydGVyLnNlbmRFdmVudChFVkVOVFMuUFJPR1JFU1NfVjJfRVhQQU5EX0NIT0lDRV9MRVZFTCwge1xuICAgICAgICBzZWN0aW9uSWQ6IGFjdGlvbi5zZWN0aW9uSWQsXG4gICAgICAgIGxldmVsSWQ6IGFjdGlvbi5sZXZlbC5pZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGV4cGFuZGVkQ2hvaWNlTGV2ZWxJZHM6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5leHBhbmRlZENob2ljZUxldmVsSWRzLFxuICAgICAgICAgIGFjdGlvbi5sZXZlbC5pZCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gRVhQQU5EX01FVEFEQVRBX0ZPUl9TVFVERU5UUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGV4cGFuZGVkTWV0YWRhdGFTdHVkZW50SWRzOiBfLnVuaXEoW1xuICAgICAgICAuLi5zdGF0ZS5leHBhbmRlZE1ldGFkYXRhU3R1ZGVudElkcyxcbiAgICAgICAgLi4uYWN0aW9uLnN0dWRlbnRJZHMsXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gQ09MTEFQU0VfTUVUQURBVEFfRk9SX1NUVURFTlRTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZXhwYW5kZWRNZXRhZGF0YVN0dWRlbnRJZHM6IHN0YXRlLmV4cGFuZGVkTWV0YWRhdGFTdHVkZW50SWRzLmZpbHRlcihcbiAgICAgICAgc3R1ZGVudElkID0+ICFhY3Rpb24uc3R1ZGVudElkcy5pbmNsdWRlcyhzdHVkZW50SWQpXG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBqdW1wVG9MZXNzb25EZXRhaWxzID0gbGVzc29uT2ZJbnRlcmVzdCA9PiB7XG4gIHJldHVybiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXRTdGF0ZSgpO1xuICAgIGRpc3BhdGNoKHNldExlc3Nvbk9mSW50ZXJlc3QobGVzc29uT2ZJbnRlcmVzdCkpO1xuICAgIGRpc3BhdGNoKHNldEN1cnJlbnRWaWV3KFZpZXdUeXBlLkRFVEFJTCkpO1xuICAgIGZpcmVob3NlQ2xpZW50LnB1dFJlY29yZChcbiAgICAgIHtcbiAgICAgICAgc3R1ZHk6ICd0ZWFjaGVyX2Rhc2hib2FyZF9hY3Rpb25zJyxcbiAgICAgICAgc3R1ZHlfZ3JvdXA6ICdwcm9ncmVzcycsXG4gICAgICAgIGV2ZW50OiAndmlld19jaGFuZ2VfdG9nZ2xlJyxcbiAgICAgICAgZGF0YV9qc29uOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgc2VjdGlvbl9pZDogc3RhdGUudGVhY2hlclNlY3Rpb25zLnNlbGVjdGVkU2VjdGlvbklkLFxuICAgICAgICAgIG9sZF92aWV3OiBWaWV3VHlwZS5TVU1NQVJZLFxuICAgICAgICAgIG5ld192aWV3OiBWaWV3VHlwZS5ERVRBSUwsXG4gICAgICAgICAgc2NyaXB0X2lkOiBzdGF0ZS51bml0U2VsZWN0aW9uLnNjcmlwdElkLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICB7aW5jbHVkZVVzZXJJZDogdHJ1ZX1cbiAgICApO1xuICB9O1xufTtcblxuLy8gU2VsZWN0b3IgZnVuY3Rpb25zXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB1bml0IGRhdGEgZm9yIHRoZSBzZWN0aW9uIGluIHRoZSBzZWxlY3RlZCB1bml0XG4gKiBAcmV0dXJucyB7dW5pdERhdGFQcm9wVHlwZX0gb2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIHVuaXQgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50VW5pdERhdGEgPSBzdGF0ZSA9PiB7XG4gIHJldHVybiBzdGF0ZS5zZWN0aW9uUHJvZ3Jlc3MudW5pdERhdGFCeVVuaXRbc3RhdGUudW5pdFNlbGVjdGlvbi5zY3JpcHRJZF07XG59O1xuXG5jb25zdCBnZXRFeHBhbmRlZExlc3NvbkxvY2FsU3RvcmFnZVN0cmluZyA9ICh1bml0SWQsIHNlY3Rpb25JZCkgPT5cbiAgYGV4cGFuZGVkTGVzc29uUHJvZ3Jlc3NWMi0ke3VuaXRJZH0tJHtzZWN0aW9uSWR9YDtcblxuY29uc3Qgc2F2ZUV4cGFuZGVkTGVzc29uSWRzVG9Mb2NhbFN0b3JhZ2UgPSAodW5pdElkLCBzZWN0aW9uSWQsIGxlc3NvbklkcykgPT4ge1xuICB0cnlTZXRMb2NhbFN0b3JhZ2UoXG4gICAgZ2V0RXhwYW5kZWRMZXNzb25Mb2NhbFN0b3JhZ2VTdHJpbmcodW5pdElkLCBzZWN0aW9uSWQpLFxuICAgIEpTT04uc3RyaW5naWZ5KGxlc3NvbklkcylcbiAgKTtcbn07XG5cbmNvbnN0IGdldExvY2FsU3RvcmFnZSA9ICh1bml0SWQsIHNlY3Rpb25JZCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAoXG4gICAgICBKU09OLnBhcnNlKFxuICAgICAgICB0cnlHZXRMb2NhbFN0b3JhZ2UoXG4gICAgICAgICAgZ2V0RXhwYW5kZWRMZXNzb25Mb2NhbFN0b3JhZ2VTdHJpbmcodW5pdElkLCBzZWN0aW9uSWQpLFxuICAgICAgICAgIFtdXG4gICAgICAgIClcbiAgICAgICkgfHwgW11cbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSWYgd2UgZmFpbCB0byBwYXJzZSB0aGUgbG9jYWwgc3RvcmFnZSwgZGVmYXVsdCB0byBub3RoaW5nIGV4cGFuZGVkLlxuICAgIHJldHVybiBbXTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJ1bml0U2VsZWN0aW9uIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbml0aWFsU3RhdGUiLCJhY3Rpb24iLCJ0eXBlIiwiU0VUX0NPVVJTRVMiLCJmaXJzdENvdXJzZSIsImNvdXJzZXNXaXRoUHJvZ3Jlc3MiLCJmaXJzdFVuaXQiLCJ1bml0cyIsIl9vYmplY3RTcHJlYWQiLCJzY3JpcHRJZCIsImlkIiwiU0VUX1NDUklQVCIsIlNUQVJUX0xPQURJTkdfQ09VUlNFUyIsImlzTG9hZGluZ0NvdXJzZXNXaXRoUHJvZ3Jlc3MiLCJGSU5JU0hFRF9MT0FESU5HX0NPVVJTRVMiLCJTRVRfTE9BREVEX1NFQ1RJT05fSUQiLCJsb2FkZWRTZWN0aW9uSWQiLCJfSHR0cENsaWVudCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsInJlcXVpcmUiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiaSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfaXRlcmFibGVUb0FycmF5IiwiaXRlcmF0b3IiLCJmcm9tIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiYSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwibiIsImV4cG9ydHMiLCJzZXRDb3Vyc2VzV2l0aFByb2dyZXNzIiwic2V0U2NyaXB0SWQiLCJzZXRMb2FkZWRTZWN0aW9uSWQiLCJzdGFydExvYWRpbmdDb3Vyc2VzV2l0aFByb2dyZXNzIiwiZmluaXNoZWRMb2FkaW5nQ291cnNlc1dpdGhQcm9ncmVzcyIsImdldFNlbGVjdGVkVW5pdCIsImdldFNlbGVjdGVkVW5pdElkIiwidW5pdCIsImNvdXJzZSIsInRlbXBVbml0IiwiZmluZCIsImdldFNlbGVjdGVkVW5pdE5hbWUiLCJrZXkiLCJnZXRTZWxlY3RlZFNjcmlwdEZyaWVuZGx5TmFtZSIsImdldFNlbGVjdGVkU2NyaXB0RGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsImRvZXNDdXJyZW50Q291cnNlVXNlRmVlZGJhY2siLCJfZ2V0U2VsZWN0ZWRVbml0IiwiaXNfZmVlZGJhY2tfZW5hYmxlZCIsImFzeW5jTG9hZENvdXJzZXNXaXRoUHJvZ3Jlc3MiLCJkaXNwYXRjaCIsImdldFN0YXRlIiwic2VsZWN0ZWRTZWN0aW9uIiwidGVhY2hlclNlY3Rpb25zIiwic2VjdGlvbnMiLCJzZWxlY3RlZFNlY3Rpb25JZCIsIkh0dHBDbGllbnQiLCJmZXRjaEpzb24iLCJjb25jYXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJyZW9yZGVyZWRDb3Vyc2VzIiwiY291cnNlVmVyc2lvbklkIiwicmV2ZXJzZSIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsIm1lc3NhZ2UiLCJfcHJvcFR5cGVzIiwiX3Byb2dyZXNzVHlwZXMiLCJQcm9wVHlwZXMiLCJzaGFwZSIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJjc2YiLCJib29sIiwiaGFzU3RhbmRhcmRzIiwidGl0bGUiLCJzdHJpbmciLCJwYXRoIiwibGVzc29ucyIsImFycmF5T2YiLCJsZXZlbHMiLCJvYmplY3QiLCJmYW1pbHlfbmFtZSIsInZlcnNpb25feWVhciIsIlNVTU1BUlkiLCJERVRBSUwiLCJTVEFOREFSRFMiLCJzdHVkZW50Iiwic3R1ZGVudFR5cGUiLCJleHBhbnNpb25JbmRleCIsImlzRXhwYW5kZWQiLCJ1c2VEYXJrQmFja2dyb3VuZCIsInRvb2x0aXBJZEZvclN0dWRlbnQiLCJzdHVkZW50SWQiLCJnZXRTY3JvbGxiYXJXaWR0aCIsIm91dGVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJ2aXNpYmlsaXR5Iiwib3ZlcmZsb3ciLCJtc092ZXJmbG93U3R5bGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJpbm5lciIsInNjcm9sbGJhcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzZWN0aW9uUHJvZ3Jlc3MiLCJfYWN0aW9uJGxldmVsIiwiX2FjdGlvbiRsZXZlbCRzdWJsZXZlIiwibGVzc29uT2ZJbnRlcmVzdCIsIklOSVRJQUxfTEVTU09OX09GX0lOVEVSRVNUIiwiU0VUX0NVUlJFTlRfVklFVyIsImN1cnJlbnRWaWV3Iiwidmlld1R5cGUiLCJTVEFSVF9MT0FESU5HX1BST0dSRVNTIiwiaXNMb2FkaW5nUHJvZ3Jlc3MiLCJGSU5JU0hfTE9BRElOR19QUk9HUkVTUyIsIlNUQVJUX1JFRlJFU0hJTkdfUFJPR1JFU1MiLCJpc1JlZnJlc2hpbmdQcm9ncmVzcyIsIkZJTklTSF9SRUZSRVNISU5HX1BST0dSRVNTIiwiU0VUX0xFU1NPTl9PRl9JTlRFUkVTVCIsIkFERF9EQVRBX0JZX1VOSVQiLCJ1bml0RGF0YUJ5VW5pdCIsImRhdGEiLCJzdHVkZW50TGV2ZWxQcm9ncmVzc0J5VW5pdCIsInN0dWRlbnRMZXNzb25Qcm9ncmVzc0J5VW5pdCIsInN0dWRlbnRMYXN0VXBkYXRlQnlVbml0IiwiTE9BRF9FWFBBTkRFRF9MRVNTT05TX0ZST01fTE9DQUxfU1RPUkFHRSIsImV4cGFuZGVkTGVzc29uSWRzIiwiZ2V0TG9jYWxTdG9yYWdlIiwidW5pdElkIiwic2VjdGlvbklkIiwiQUREX0VYUEFOREVEX0xFU1NPTiIsImxlc3NvbiIsImxvY2thYmxlIiwibGVzc29uSGFzTGV2ZWxzIiwiYW5hbHl0aWNzUmVwb3J0ZXIiLCJzZW5kRXZlbnQiLCJFVkVOVFMiLCJQUk9HUkVTU19WMl9MRVNTT05fRVhQQU5EIiwibGVzc29uSWQiLCJuZXdTZWN0aW9uRXhwYW5kZWRMZXNzb25JZHMiLCJfIiwidW5pcSIsInNhdmVFeHBhbmRlZExlc3Nvbklkc1RvTG9jYWxTdG9yYWdlIiwiUkVNT1ZFX0VYUEFOREVEX0xFU1NPTiIsIlBST0dSRVNTX1YyX0xFU1NPTl9DT0xMQVBTRSIsIlRPR0dMRV9FWFBBTkRFRF9DSE9JQ0VfTEVWRUwiLCJleHBhbmRlZENob2ljZUxldmVsSWRzIiwiaW5jbHVkZXMiLCJsZXZlbCIsIlBST0dSRVNTX1YyX0NPTExBUFNFX0NIT0lDRV9MRVZFTCIsImxldmVsSWQiLCJsIiwic3VibGV2ZWxzIiwiUFJPR1JFU1NfVjJfRVhQQU5EX0NIT0lDRV9MRVZFTCIsIkVYUEFORF9NRVRBREFUQV9GT1JfU1RVREVOVFMiLCJleHBhbmRlZE1ldGFkYXRhU3R1ZGVudElkcyIsInN0dWRlbnRJZHMiLCJDT0xMQVBTRV9NRVRBREFUQV9GT1JfU1RVREVOVFMiLCJfbG9kYXNoIiwiX0FuYWx5dGljc0NvbnN0YW50cyIsIl9BbmFseXRpY3NSZXBvcnRlciIsIl91bml0U2VsZWN0aW9uUmVkdXgiLCJfdXRpbHMiLCJfZmlyZWhvc2UiLCJfcHJvZ3Jlc3NIZWxwZXJzIiwiX3NlY3Rpb25Qcm9ncmVzc0NvbnN0YW50cyIsInByb3RvdHlwZSIsInNldExlc3Nvbk9mSW50ZXJlc3QiLCJzdGFydExvYWRpbmdQcm9ncmVzcyIsImZpbmlzaExvYWRpbmdQcm9ncmVzcyIsInN0YXJ0UmVmcmVzaGluZ1Byb2dyZXNzIiwiZmluaXNoUmVmcmVzaGluZ1Byb2dyZXNzIiwic2V0Q3VycmVudFZpZXciLCJhZGREYXRhQnlVbml0IiwibG9hZEV4cGFuZGVkTGVzc29uc0Zyb21Mb2NhbFN0b3JhZ2UiLCJhZGRFeHBhbmRlZExlc3NvbiIsInJlbW92ZUV4cGFuZGVkTGVzc29uIiwidG9nZ2xlRXhwYW5kZWRDaG9pY2VMZXZlbCIsImV4cGFuZE1ldGFkYXRhRm9yU3R1ZGVudHMiLCJjb2xsYXBzZU1ldGFkYXRhRm9yU3R1ZGVudHMiLCJzZWN0aW9uIiwiVmlld1R5cGUiLCJqdW1wVG9MZXNzb25EZXRhaWxzIiwiZmlyZWhvc2VDbGllbnQiLCJwdXRSZWNvcmQiLCJzdHVkeSIsInN0dWR5X2dyb3VwIiwiZXZlbnQiLCJkYXRhX2pzb24iLCJKU09OIiwic3RyaW5naWZ5Iiwic2VjdGlvbl9pZCIsIm9sZF92aWV3IiwibmV3X3ZpZXciLCJzY3JpcHRfaWQiLCJpbmNsdWRlVXNlcklkIiwiZ2V0Q3VycmVudFVuaXREYXRhIiwiZ2V0RXhwYW5kZWRMZXNzb25Mb2NhbFN0b3JhZ2VTdHJpbmciLCJsZXNzb25JZHMiLCJ0cnlTZXRMb2NhbFN0b3JhZ2UiLCJwYXJzZSIsInRyeUdldExvY2FsU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiIn0=