1"use strict";(self["webpackChunkcdms"]=self["webpackChunkcdms"]||[]).push([[2412],{72412:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ HESAManagement; }\n});\n\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VAlert/VAlert.js + 2 modules\nvar VAlert = __webpack_require__(1965);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VBtn/VBtn.js + 2 modules\nvar VBtn = __webpack_require__(33740);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCard/VCard.js\nvar VCard = __webpack_require__(3698);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCard/index.js\nvar components_VCard = __webpack_require__(52938);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VCol.js\nvar VCol = __webpack_require__(54414);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VCombobox/VCombobox.js\nvar VCombobox = __webpack_require__(7506);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VContainer.js + 1 modules\nvar VContainer = __webpack_require__(3449);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VDialog/VDialog.js + 1 modules\nvar VDialog = __webpack_require__(99991);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VForm/VForm.js\nvar VForm = __webpack_require__(70174);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VIcon/VIcon.js + 1 modules\nvar VIcon = __webpack_require__(36930);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VRow.js\nvar VRow = __webpack_require__(2756);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSelect/VSelect.js + 5 modules\nvar VSelect = __webpack_require__(18783);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSheet/VSheet.js + 1 modules\nvar VSheet = __webpack_require__(28184);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VGrid/VSpacer.js\nvar VSpacer = __webpack_require__(41034);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VSwitch/VSwitch.js + 1 modules\nvar VSwitch = __webpack_require__(63000);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VTextField/VTextField.js + 3 modules\nvar VTextField = __webpack_require__(79549);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VTextarea/VTextarea.js + 1 modules\nvar VTextarea = __webpack_require__(26513);\n;// ./node_modules/vuetify-loader/lib/loader.js??ruleSet[1].rules[0].use!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/pug-plain-loader/index.js!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=template&id=35aa4e35&scoped=true&lang=pug\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(VCard/* default */.A, [_c(components_VCard/* VCardTitle */.ri, [_vm._v(_vm._s(_vm.hesaTitle))]), _c(components_VCard/* VCardText */.OQ, [_c(VContainer/* default */.A, {\n attrs: {\n \"fluid\": \"\"\n }\n }, _vm._l(_vm.visibleSections, function (section) {\n return _c(VSheet/* default */.A, {\n key: section.name,\n staticClass: \"mt-4 pa-4\",\n attrs: {\n \"outlined\": \"\"\n }\n }, [_c(VRow/* default */.A, [_c(VCol/* default */.A, {\n attrs: {\n \"cols\": \"12\"\n }\n }, [_vm.canEditSection(section) ? _c(VRow/* default */.A, {\n staticClass: \"align-center\"\n }, [_c(VCol/* default */.A, [_c('h3', [_vm._v(_vm._s(section.name))])]), _c(VCol/* default */.A, {\n staticClass: \"text-right\"\n }, [_c(VBtn/* default */.A, {\n attrs: {\n \"fab\": \"\",\n \"dark\": \"\",\n \"x-small\": \"\",\n \"color\": section.name === 'Financial Support' ? 'primary' : 'success'\n },\n on: {\n \"click\": function ($event) {\n return _vm.openEditDialog(section);\n }\n }\n }, [_c(VIcon/* default */.A, [_vm._v(_vm._s(section.name === 'Financial Support' ? 'mdi-plus' : 'mdi-pencil'))])], 1)], 1)], 1) : _c('h3', [_vm._v(_vm._s(section.name))]), section.name === 'Annual survey' && (!_vm.data.profile.hesaSurvey || Object.keys(_vm.data.profile.hesaSurvey).length === 0) ? _c(VAlert/* default */.A, {\n staticClass: \"pa-0 mt-3 mb-0\",\n attrs: {\n \"type\": \"info\",\n \"text\": \"\"\n }\n }, [_vm._v(\"No HESA survey data available\")]) : _vm._e()], 1)], 1), section.name !== 'Financial Support' ? _c(VRow/* default */.A, [_vm._l(section.fields, function (field) {\n return [field.newRow ? _c('div', {\n key: `${field.label}-break`,\n staticClass: \"hesa-row-break\"\n }) : _vm._e(), _c(VCol/* default */.A, _vm._b({\n key: field.label\n }, 'v-col', field.cols, false), [field.fieldType === 'switch' ? _c(VSwitch/* default */.A, {\n attrs: {\n \"input-value\"
1: _vm.getFieldValue(field),\n \"label\": field.label,\n \"hint\": _vm.getFieldHint(field) ? `Source: ${_vm.getFieldHint(field)}` : null,\n \"color\": \"success\",\n \"dense\": \"\",\n \"readonly\": \"\",\n \"persistent-hint\": \"\"\n }\n }) : _c(VTextField/* default */.A, {\n attrs: {\n \"value\": _vm.getFieldValue(field),\n \"label\": field.label,\n \"hint\": _vm.getFieldHint(field) ? `Source: ${_vm.getFieldHint(field)}` : null,\n \"dense\": \"\",\n \"readonly\": \"\",\n \"persistent-hint\": \"\"\n }\n })], 1)];\n })], 2) : _vm._e(), section.name === 'Entry Qualifications' ? _c(VRow/* default */.A, [_c(VCol/* default */.A, {\n attrs: {\n \"cols\": \"12\"\n }\n }, [_vm.data.profile._id ? _c('entry-qualification-table', {\n attrs: {\n \"profile-id\": _vm.data.profile._id,\n \"records\": _vm.entryQualificationRecords,\n \"title\": \"Entry Qualification Awards\",\n \"readonly\": _vm.readonly || !_vm.hasEditPermission('hesa:edit')\n },\n on: {\n \"updated\": _vm.updateEntryQualificationRecords\n }\n }) : _vm._e()], 1)], 1) : _vm._e(), section.name === 'Financial Support' ? _c(VRow/* default */.A, [_c(VCol/* default */.A, {\n attrs: {\n \"cols\": \"12\"\n }\n }, [_vm.currentEngagement._id && _vm.hesaRelevantSession._id ? _c('financial-support-table', {\n attrs: {\n \"student-id\": _vm.data._id,\n \"engagement-id\": _vm.currentEngagement._id,\n \"session-id\": _vm.hesaRelevantSession._id,\n \"records\": _vm.hesaFinSupRecords,\n \"ssn\": _vm.data.profile.ssn,\n \"title\": \"Financial Support Details\",\n \"readonly\": _vm.readonly || !_vm.hasEditPermission('hesa:edit')\n },\n on: {\n \"updated\": _vm.updateFinSupRecords\n }\n }) : _vm._e()], 1)], 1) : _vm._e()], 1);\n }), 1)], 1), _c(VDialog/* default */.A, {\n attrs: {\n \"max-width\": \"600px\"\n },\n model: {\n value: _vm.editDialog,\n callback: function ($$v) {\n _vm.editDialog = $$v;\n },\n expression: \"editDialog\"\n }\n }, [_c(VCard/* default */.A, [_c(components_VCard/* VCardTitle */.ri, [_c('span', {\n staticClass: \"text-h5\"\n }, [_vm._v(_vm._s(_vm.editDialogTitle))]), _c(VSpacer/* default */.A), _c(VIcon/* default */.A, {\n attrs: {\n \"aria-label\": \"Close\"\n },\n on: {\n \"click\": function ($event) {\n _vm.editDialog = false;\n }\n }\n }, [_vm._v(\"mdi-close\")])], 1), _c(components_VCard/* VCardText */.OQ, [_c(VForm/* default */.A, {\n ref: \"editForm\",\n on: {\n \"submit\": function ($event) {\n $event.preventDefault();\n }\n },\n model: {\n value: _vm.editFormValid,\n callback: function ($$v) {\n _vm.editFormValid = $$v;\n },\n expression: \"editFormValid\"\n }\n }, [_c(VContainer/* default */.A, {\n attrs: {\n \"fluid\": \"\"\n }\n }, [_c(VRow/* default */.A, _vm._l(_vm.currentEditableFields, function (field) {\n return _c(VCol/* default */.A, {\n key: field.editKey,\n attrs: {\n \"cols\": \"12\",\n \"md\": field.fieldType === 'textarea' ? '12' : '6'\n }\n }, [field.fieldType === 'switch' ? _c(VSwitch/* default */.A, {\n attrs: {\n \"label\": field.label,\n \"color\": \"success\",\n \"dense\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n }) : field.fieldType === 'select' ? _c(VSelect/* default */.A, {\n attrs: {\n \"items\": field.selectOptions,\n \"label\": field.label,\n \"item-text\": \"text\",\n \"item-value\": \"value\",\n \"dense\": \"\",\n \"clearable\": \"\",\n \"hide-details\": \"\"\n }
1,\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n }) : field.fieldType === 'date' ? _c('date-picker', {\n attrs: {\n \"label\": field.label,\n \"clearable\": \"\",\n \"dense\": \"\"\n },\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n }) : field.fieldType === 'textarea' ? _c(VTextarea/* default */.A, {\n attrs: {\n \"label\": field.label,\n \"dense\": \"\",\n \"rows\": \"3\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n }) : field.fieldType === 'number-select' ? _c(VCombobox/* default */.A, {\n attrs: {\n \"items\": field.selectOptions,\n \"label\": field.label,\n \"item-text\": \"text\",\n \"item-value\": \"value\",\n \"return-object\": false,\n \"rules\": field.rules || [],\n \"inputmode\": \"numeric\",\n \"dense\": \"\",\n \"hide-details\": \"auto\"\n },\n on: {\n \"change\": _vm.onComboboxChange,\n \"update:search-input\": val => _vm.onComboboxSearchInput(field.editKey, val)\n },\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n }) : _c(VTextField/* default */.A, {\n attrs: {\n \"label\": field.label,\n \"type\": field.fieldType === 'number' ? 'number' : 'text',\n \"dense\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.editFormData[field.editKey],\n callback: function ($$v) {\n _vm.$set(_vm.editFormData, field.editKey, $$v);\n },\n expression: \"editFormData[field.editKey]\"\n }\n })], 1);\n }), 1)], 1)], 1), _vm.currentEditSection && _vm.currentEditSection.name === 'Engagement Leaver' ? _c(VAlert/* default */.A, {\n staticClass: \"mt-3 mb-0\",\n attrs: {\n \"type\": \"info\",\n \"text\": \"\",\n \"dense\": \"\"\n }\n }, [_vm._v(\"Only update QUALAWARDID if different from programme of study\")]) : _vm._e()], 1), _c(components_VCard/* VCardActions */.SL, [_c(VSpacer/* default */.A), _c(VBtn/* default */.A, {\n attrs: {\n \"text\": \"\"\n },\n on: {\n \"click\": function ($event) {\n _vm.editDialog = false;\n }\n }\n }, [_vm._v(\"Cancel\")]), _c(VBtn/* default */.A, {\n attrs: {\n \"color\": \"success\"\n },\n on: {\n \"click\": _vm.saveEditableFields\n }\n }, [_vm._v(\"Save\")])], 1)], 1)], 1)], 1);\n};\nvar staticRenderFns = [];\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js\nvar es_iterator_constructor = __webpack_require__(18111);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js\nvar es_iterator_filter = __webpack_require__(22489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js\nvar es_iterator_find = __webpack_require__(20116);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js\nvar es_iterator_for_each = __webpack_require__(7588);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js\nvar es_iterator_map = __webpack_require__(61701);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js\nvar es_iterator_reduce = __webpack_require__(18237);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js\nvar es_iterator_some = __webpack_require__(13579);\n// EXTERNAL MODULE: ./src/services/systemdata.service.js\nvar systemdata_service = __webpack_require__(41718);\n// EXTERNAL MODULE: ./src/services/students.service.js\nvar students_service = __webpack_require__(72931);\n// EXTERNAL MODULE: ./src/services/educationalProfiles.service.js\nvar educationalProfiles_service = __webpack_require__(47116);\n// EXTERNAL MODULE: ./src/services/hesaCodes.service.js\nvar hesaCodes_service = __webpack_require__(29918);\n// EXTERNAL MODULE: ./src/services/programmes.v2.service.js\nvar programmes_v2_service = __webpack_require__(53046);\n;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=script&lang=js\n\n\n\n\n\n\n\n\n\n\n\n\nconst PREVIOUS_PROVIDER_DEFAULTS = [{\n value: '5037',\n text: '5037 - Other UK Further Education College'\n}, {\n value: '5038',\n text: '5038 - Other UK Higher Education Provider'\n}, {\n value: '5039',\n text: '5039 - Other UK independent school'\n}, {\n value: '5046',\n text: '5046 - Other UK state school'\n}, {\n value: '5047',\n text: '5047 - Other UK training provider'\n}, {\n value: '5049',\n text: '5049 - Any non-UK provider'\n}];\n/* harmony default export */ var HESAManagementvue_type_script_lang_js = ({\n name: 'HESAManagement',\n components: {\n DatePicker: () => __webpack_require__.e(/* import() */ 8816).then(__webpack_require__.bind(__webpack_require__, 68816)),\n EntryQualificationTable: () => __webpack_require__.e(/* import() */ 3367).then(__webpack_require__.bind(__webpack_require__, 53367)),\n Financial
1SupportTable: () => __webpack_require__.e(/* import() */ 1870).then(__webpack_require__.bind(__webpack_require__, 91870))\n },\n props: {\n data: {\n type: Object,\n required: true\n },\n readonly: {\n type: Boolean,\n default: true\n }\n },\n data: () => ({\n hesaCollegeConfig: {},\n qualAwardResultOptions: [{\n value: '0001',\n text: '0001 - First class honours'\n }, {\n value: '0002',\n text: '0002 - Upper second class honours'\n }, {\n value: '0003',\n text: '0003 - Lower second class honours'\n }, {\n value: '0004',\n text: '0004 - Third class honours'\n }, {\n value: '0005',\n text: '0005 - Unclassified honours'\n }, {\n value: '0006',\n text: '0006 - Aegrotat (whether to honours or to pass)'\n }, {\n value: '0007',\n text: '0007 - Ordinary (non-honours) degree'\n }, {\n value: '0008',\n text: '0008 - General degree - degree awarded after following a non-honours course/degree that was not available to be classified'\n }, {\n value: '0009',\n text: '0009 - Distinction'\n }, {\n value: '0010',\n text: '0010 - Merit'\n }, {\n value: '0011',\n text: '0011 - Pass'\n }, {\n value: '0012',\n text: '0012 - Commendation'\n }, {\n value: '0013',\n text: '0013 - Award of credit'\n }, {\n value: '9999',\n text: '9999 - Not available'\n }],\n sections: [{\n name: 'System generated',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [{\n label: 'Version',\n value: 'hesaCollegeConfig.hesaVersion',\n editable: false,\n hint: 'System generated',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'OWNSTU',\n value: 'data.studentId',\n editable: true,\n editKey: 'ownstu',\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SID',\n value: 'data.profile.hesaSurvey.sid',\n editable: true,\n editKey: 'sid',\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'NUMHUS',\n value: 'data.profile.hesaSurvey.numhus',\n editable: true,\n editKey: 'numhus',\n fieldType: 'number',\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SSN',\n value: 'data.profile.ssn',\n editable: true,\n editKey: 'ssn',\n hint: 'Student profile',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Included in HESA Report',\n value: data => !data.hesaExclude,\n editable: true,\n editKey: 'hesaInclude',\n fieldType: 'switch',\n cols: {\n cols: '12'\n }\n }]\n }, {\n name: 'Student provided',\n viewPermission: 'hesa:view',\n fields: [{\n label: 'FNAMES',\n value: 'data.contact.fnames',\n editable: false,\n hint: 'Student provided',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SURNAME',\n value: 'data.contact.lastName',\n editable: false,\n hint: 'Student provided',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'BIRTHDTE',\n value: (data, filters) => filters.hesaDate(data.profile?.dob),\n editable: false,\n hint: 'Student provided',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'NATION',\n value: 'formattedNationality',\n editable: false,\n hint: 'Student provided',\n cols: {\n cols: '6',\n md: '2'\n }\n }]\n }, {\n name: 'Annual survey',\n viewPermission: 'hesa:view',\n fields: [{\n label: 'ETHNIC',\n value: 'formattedEthnicityId',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'GENDERID',\n value: 'formattedGenderId',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'RELIGION',\n value: 'formattedReligion',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SEXID',\n value: 'formattedSexId',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SEXORT',\n value: 'formattedSexOrt',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SNAME16',\n value: data => data.profile.hesaSurvey?.sname16,\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'TTPCODE',\n // Prefer the survey answer. When it is missing and the ttpcodeFallback\n // config flag is set, fall back to the contact record postcode - mirroring\n // the export logic in cdms-server generateStudent_TTPCODE.\n value(data) {\
1n const surveyPostcode = data.profile.hesaSurvey?.ttpcode;\n if (surveyPostcode) return surveyPostcode;\n if (this.hesaCollegeConfig?.ttpcodeFallback) {\n return data.contact?.postCode || '';\n }\n return '';\n },\n editable: false,\n hint(data) {\n if (!data.profile.hesaSurvey?.ttpcode && this.hesaCollegeConfig?.ttpcodeFallback && data.contact?.postCode) {\n return 'Fall back to contact postcode';\n }\n return 'Annual survey';\n },\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'DISABILITY',\n value: 'formattedDisability',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6'\n }\n }]\n }, {\n name: 'Entry Profile',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [\n // {\n // label: 'Updated entry profile',\n // value: (data) => data.profile.hesaSurvey?.entryProfileUpdatedAt,\n // editable: true,\n // editKey: 'entryProfileUpdatedAt',\n // fieldType: 'date',\n // cols: {cols: '6', md: '2'},\n // },\n {\n label: 'APELCRD',\n value: 'formattedApelCrd',\n editable: false,\n hint: 'Academic record',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'CRDPTSTU',\n value: 'formattedCrdPTStu',\n editable: false,\n hint: 'Academic record',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'CRDSCM',\n value: () => 'Not yet implemented',\n editable: false,\n // TODO: true\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'CARELEAVER',\n value: 'formattedCareLeaver',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'HIGHESTQOE',\n value: data => data.profile.hesaSurvey?.highestQOE,\n editable: true,\n editKey: 'highestQOE',\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'PARED',\n value: 'formattedParEd',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'PERMADDCOUNTRY',\n value: 'formattedPermAddCountry',\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'PERMADDPOSTCODE',\n value: data => data.profile.hesaSurvey?.permAddPostcode || data.contact?.postCode,\n editable: false,\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'PREVIOUSPROVIDER',\n value: data => data.profile.hesaSurvey?.previousProvider,\n editable: true,\n editKey: 'previousProvider',\n fieldType: 'number-select',\n selectOptions: PREVIOUS_PROVIDER_DEFAULTS,\n rules: [v => !v || PREVIOUS_PROVIDER_DEFAULTS.some(o => o.value === String(v).trim()) || /^[0-9]{8}$/.test(String(v).trim()) || 'Must be exactly 8 digits or one of the listed options'],\n hint: 'Annual survey',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Include Credits',\n value: data => data.profile.hesaSurvey?.includeCRDPTSTU ?? true,\n editable: true,\n editKey: 'includeCRDPTSTU',\n fieldType: 'switch',\n newRow: true,\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Exclude Entry Profile',\n value: data => data.profile.hesaSurvey?.excludeEntryProfile ?? false,\n editable: true,\n editKey: 'excludeEntryProfile',\n fieldType: '
1switch',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Force Entry Profile',\n hint: 'Return the Entry Profile for an engagement that started in an earlier reporting period, to correct data already submitted',\n value: data => data.profile.hesaSurvey?.forceEntryProfile ?? false,\n editable: true,\n editKey: 'forceEntryProfile',\n fieldType: 'switch',\n cols: {\n cols: '6',\n md: '2'\n }\n }]\n }, {\n name: 'Entry Qualifications',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [] // This section uses a custom component\n }, {\n name: 'Financial Support',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [] // This section uses a custom component\n }, {\n name: 'Engagement Leaver',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [{\n label: 'ENGENDDATE',\n value: 'currentEngagement.endDate',\n editable: true,\n editKey: 'engEndDate',\n fieldType: 'date',\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'INTENDEDDESTINATION',\n value: () => 'Not yet implemented',\n editable: false,\n // TODO: true\n // editKey: 'intendedDestination',\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'RSNENGEND',\n value: 'currentEngagement.hesaRsnEngEnd',\n editable: true,\n editKey: 'rsnEngEnd',\n fieldType: 'select',\n selectOptions: [{\n value: '01',\n text: '01 - Left and awarded credit or a qualification'\n }, {\n value: '03',\n text: '03 - Transferred to another provider'\n }, {\n value: '05',\n text: '05 - Death'\n }, {\n value: '11',\n text: '11 - Other (left but without being awarded credit or a qualification)'\n }, {\n value: '12',\n text: '12 - Transferred out as part of collaborative supervision arrangements'\n }, {\n value: '98',\n text: '98 - Left but award of credit or a qualification not yet known'\n }],\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'QUALAWARDID',\n value: 'formattedQualAwardId',\n editable: true,\n editKey: 'qualAwardId',\n fieldType: 'select',\n selectOptions: [],\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'QUALAWARDRESULT',\n value: 'formattedQualAwardResult',\n editable: true,\n editKey: 'qualAwardResult',\n fieldType: 'select',\n selectOptions: [],\n hint: 'System managed',\n cols: {\n cols: '6',\n md: '2'\n }\n }]\n }, {\n name: 'Optional Overrides',\n viewPermission: 'hesa:view',\n editPermission: 'hesa:edit',\n fields: [{\n label: 'RPSTULOAD',\n value: 'hesaRelevantSession.hesaRPSTULOAD',\n editable: true,\n editKey: 'rpstuload',\n fieldType: 'number',\n hint: 'Session load data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'INVOICEFEEAMOUNT',\n value: 'hesaRelevantSession.hesaINVOICEFEEAMOUNT',\n editable: true,\n editKey: 'invoicefeeamount',\n fieldType: 'number',\n hint: 'Session data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SCSFEEAMOUNT',\n value: 'hesaRelevantSession.hesaSCSFEEAMOUNT',\n editable: true,\n editKey: 'scsfeeamount',\n fieldType: 'number',\n hint: 'Session data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SCSESSIONID',\n value: 'hesaRelevantSession.hesaSCSESSIONID',\n editable: true,\n editKey: 'scsessionid',\n fieldType: 'text',\n hint: 'Session data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'SCSMODE',\n value: 'hesaRelevantSession.hesaSCSMODE',\n editable: true,\n editKey: 'scsmode',\n fieldType: '
1select',\n selectOptions: [{\n value: '01',\n text: '01 - Full-time'\n }, {\n value: '02',\n text: '02 - Other full time'\n }, {\n value: '03',\n text: '03 - Accelerated full time'\n }, {\n value: '31',\n text: '31 - Part-time'\n }],\n hint: 'Session data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Previous SCS',\n value: function () {\n return this.hesaRelevantSession?.previousSCS ? 'Previous SCS data' : 'No content';\n },\n editable: true,\n editKey: 'previousscs',\n fieldType: 'textarea',\n hint: 'Previous return',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'ELQ',\n value: 'hesaRelevantSession.hesaELQ',\n editable: true,\n editKey: 'elq',\n fieldType: 'select',\n selectOptions: [{\n value: '01',\n text: '01 - Non-exempt ELQ'\n }, {\n value: '02',\n text: '02 - Exempt ELQ'\n }, {\n value: '03',\n text: '03 - Not ELQ'\n }, {\n value: '09',\n text: '09 - Not required'\n }],\n hint: 'Session data',\n cols: {\n cols: '6',\n md: '2'\n }\n }, {\n label: 'Expected Engagement End Date',\n value: 'currentEngagement.hesaEngExpectedEndDate',\n editable: true,\n editKey: 'hesaEngExpectedEndDate',\n fieldType: 'date',\n hint: 'Expected end date for engagement',\n cols: {\n cols: '6',\n md: '2'\n }\n }]\n }],\n hesaSurvey: {},\n hesaCodes: {},\n hesaProgrammes: [],\n editDialog: false,\n editFormValid: false,\n currentEditSection: null,\n editFormData: {}\n }),\n computed: {\n hesaTitle() {\n if (!this.hesaCollegeConfig.hesaReportingYear) {\n return 'HESA Data';\n }\n const startYear = this.hesaCollegeConfig.hesaReportingYear;\n const endYear = startYear + 1;\n const endYearShort = String(endYear).slice(-2);\n return `HESA Data for ${startYear}-${endYearShort}`;\n },\n visibleSections() {\n return this.sections.filter(section => {\n if (!this.hasViewPermission(section.viewPermission)) {\n return false;\n }\n if (section.visible && typeof section.visible === 'function') {\n return section.visible(this.data, this);\n }\n return true;\n });\n },\n currentEditableFields() {\n if (!this.currentEditSection) return [];\n return this.currentEditSection.fields.filter(field => field.editable).map(field => {\n if (field.editKey === 'qualAwardId') {\n return {\n ...field,\n selectOptions: this.hesaProgrammes.map(p => ({\n value: p.qualid,\n text: `${p.qualid} - ${p.title}`\n }))\n };\n }\n if (field.editKey === 'qualAwardResult') {\n return {\n ...field,\n selectOptions: this.qualAwardResultOptions\n };\n }\n return field;\n });\n },\n editDialogTitle() {\n return this.currentEditSection ? `Edit ${this.currentEditSection.name}` : 'Edit HESA fields';\n },\n formattedApelCrd() {\n return this.currentEngagement.incomingCredits?.find(credit => credit.type === 'APEL') ? '01' : undefined;\n },\n formattedCrdPTStu() {\n return this.currentEngagement.incomingCredits?.reduce((total, credit) => total + (credit.credits || 0), 0) || undefined;\n },\n formattedGenderId() {\n return this.formatHesaField('genderId', 'Student_GENDERID');\n },\n formattedEthnicityId() {\n return this.formatHesaField('ethnicityId', 'Student_ETHNIC');\n },\n formattedNationality() {\n return this.formatHesaField('nationality', 'Student_NATION');\n },\n formattedReligion() {\n return this.formatHesaField('religion', 'Student_RELIGION');\n },\n formattedSexOrt() {\n return this.formatHesaField('sexOrt', 'Student_SEXORT');\n },\n formattedCareLeaver() {\n return this.formatHesaField('careLeaver', 'EntryProfile_CARELEAVER');\n },\n formattedParEd() {\n return this.formatHesaField('parEd', 'EntryProfile_PARED');\n },\n formattedPermAddCountry() {\n return this.formatHesaField('permAddCountry', 'EntryProfile_PERMADDCOUNTRY');\n },\n formattedHighestQOE() {\n return this.formatHesaField('highe
1stQOE', 'EntryProfile_HIGHESTQOE');\n },\n formattedFundingBodyId() {\n return this.formatHesaField('fundingBodyId', 'Student_FUNDCOMP');\n },\n formattedDisability() {\n if (!this.data.profile.hesaSurvey.disability || !Array.isArray(this.data.profile.hesaSurvey.disability)) {\n return '';\n }\n const codeObj = this.hesaCodes['Disability_DISABILITY'];\n if (!codeObj || !codeObj.codes) return this.data.profile.hesaSurvey.disability.join(', ');\n return this.data.profile.hesaSurvey.disability.map(code => {\n const label = Object.keys(codeObj.codes).find(key => codeObj.codes[key] === code);\n return label ? `${code} - ${label}` : code;\n }).join(', ');\n },\n formattedSexId() {\n // The return resolves SEXID from the survey answer first and the profile\n // second, so this has to show the same source â otherwise a student who\n // answered only in the survey reads as blank here while the XML carries\n // their code.\n const surveyCode = this.data.profile.hesaSurvey?.sexId;\n if (surveyCode && surveyCode !== '99') {\n return this.formatHesaField('sexId', 'Student_SEXID');\n }\n const code = this.parseHesaField(this.data.profile.sex, 'Student_SEXID');\n return code ? `${code} - ${this.data.profile.sex}` : this.data.profile.sex;\n },\n formattedQualAwardId() {\n const qualid = this.currentEngagement?.hesaQualAwardId;\n if (!qualid) return '';\n const programme = this.hesaProgrammes.find(p => p.qualid === qualid);\n return programme ? `${qualid} - ${programme.title}` : qualid;\n },\n formattedQualAwardResult() {\n const code = this.currentEngagement?.hesaQualAwardResult;\n if (!code) return '';\n const paddedCode = String(code).padStart(4, '0');\n const option = this.qualAwardResultOptions.find(opt => opt.value === paddedCode);\n return option ? option.text : paddedCode;\n },\n activeEngagementIndex() {\n if (!this.data.engagements || this.data.engagements.length === 0) {\n return 0;\n }\n if (!this.hesaCollegeConfig.hesaReportingYear) {\n return 0;\n }\n const {\n hesaReportingYear\n } = this.hesaCollegeConfig;\n const academicYearStart = new Date(hesaReportingYear, 8, 1);\n const academicYearEnd = new Date(hesaReportingYear + 1, 7, 31);\n\n // Iterate through all engagements to find the first one with valid sessions\n const validSessionCounts = this.data.engagements.map(engagement => {\n if (!engagement.partnerId) return false;\n const validSessions = engagement.sessions?.filter(session => {\n const sessionStart = new Date(session.startDate);\n const sessionEnd = session.endDate ? new Date(session.endDate) : null;\n // Session must start OR end within the academic year\n const sessionStartsInYear = sessionStart >= academicYearStart && sessionStart < academicYearEnd;\n const sessionEndsInYear = sessionEnd && sessionEnd >= academicYearStart && sessionEnd < academicYearEnd;\n return sessionStartsInYear || sessionEndsInYear;\n }) || [];\n return validSessions.length;\n });\n\n // Find the first engagement with valid sessions\n const activeIndex = validSessionCounts.findIndex(count => count > 0);\n\n // Return the found index, or default to 0 if no valid sessions found\n return activeIndex !== -1 ? activeIndex : 0;\n },\n currentEngagement() {\n return this.data.engagements?.[this.activeEngagementIndex] || {};\n },\n currentSession() {\n return this.data.engagements?.[this.activeEngagementIndex]?.sessions?.[0] || {};\n },\n hesaRelevantSession() {\n // Find the session that is relevant for HESA reporting based on hesaReportingYear\n if (!this.hesaCollegeConfig.hesaReportingYear || !this.currentEngagement.sessions) {\n return this.currentSession;\n }\n const {\n hesaReportingYear\n } = this.hesaCollegeConfig;\n const academicYearStart = new Date(hesaReportingYear, 8, 1); // September 1st\n const academicYearEnd = new Date(hesaReportingYear + 1, 7, 31); // July 31st next year\n\n // Find sessions that start within the HESA reporting academic year\n const relevantSessions = this.currentEngagement.sessions.filter(session => {\n if (!session.startDate) return false;\n const sessionStart = new Date(session.startDate);\n return sessionStart >= academicYearStart && sessionStart <= academicYearEnd;\n });\n\n // Return the first relevant session, or fall back to currentSession\n return relevantSessions[0] || this.currentSession;\n },\n hesaFinSupRecords() {\n return this.hesaRelevantSession?.hesaFinSup || [];\n },\n entryQualificationRecords() {\n return this.data.profile.hesaSurvey?.entryQualificationAward || [];\n }\n },\n async created() {\n const {\n data: collegeConfig\n } = await systemdata_service/* default */.A.getDataByName('hesaCollegeConfig');\n this.hesaCollegeConfig = collegeConfig;\n this.data.profile.hesaSurvey = this.data.profile.hesaSurvey || {};\n\n // Fetch all relevant HESA codes and programmes\n await Promise.all([this.loadHesaCodes(), this.loadHesaProgrammes()]);\n },\n watch: {\n editDialog(newVal) {\n if (newVal && this.currentEditSection) {\n this.initializeEditFormData();\n }\n }\n },\n methods: {\n async loadHesaCodes() {\n const codeTypes = ['Student_NATION', 'Student_GENDERID', 'Student_ETHNIC', 'EntryProfile_PERMADDCOUNTRY', 'Student_RELIGION', 'Student_SEXORT', 'Student_SEXID', 'EntryProfile_CARELEAVER', 'EntryProfile_PARED', 'EntryProfile_HIGHESTQOE',\n // 'Student_FUNDCOMP',\n 'Disability_DISABILITY'];
1\n try {\n const {\n data\n } = await hesaCodes_service/* default */.A.getMultipleCodes(codeTypes);\n if (Array.isArray(data.notFound) && data.notFound.length > 0) {\n console.warn('HESA codes not found:', data.notFound);\n }\n // The bulk endpoint returns each table as a bare code map, while the\n // single-field one wraps it as {field, codes}. Every accessor below\n // expects the wrapped form, so normalise on the way in â otherwise\n // each lookup fails its `codeObj.codes` guard and falls back to the\n // raw value, leaving sex as a label with no code and the survey\n // fields as codes with no label.\n this.$set(this, 'hesaCodes', Object.fromEntries(Object.entries(data.data).map(([field, codes]) => [field, {\n codes\n }])));\n } catch (error) {\n console.error(`Error loading HESA codes for ${codeType}:`, error);\n }\n },\n async loadHesaProgrammes() {\n try {\n const {\n data\n } = await programmes_v2_service/* default */.A.getList({\n hesa: true\n });\n this.hesaProgrammes = data.filter(p => p.qualid);\n } catch (error) {\n console.error('Error loading HESA programmes:', error);\n }\n },\n formatHesaField(fieldName, codeType) {\n const value = this.data.profile.hesaSurvey[fieldName];\n if (!value) return '';\n const codeObj = this.hesaCodes[codeType];\n if (!codeObj || !codeObj.codes) return value;\n\n // Find the label for the code value\n const label = Object.keys(codeObj.codes).find(key => codeObj.codes[key] === value);\n return label ? `${value} - ${label}` : value;\n },\n parseHesaField(labelText, codeType) {\n if (!labelText || typeof labelText !== 'string') return null;\n const codeObj = this.hesaCodes[codeType];\n if (!codeObj || !codeObj.codes) return null;\n\n // Find the code for the given label\n const entry = Object.entries(codeObj.codes).find(([label]) => label.toLowerCase() === labelText.toLowerCase());\n return entry ? entry[1] : null;\n },\n async updateEngagementField(fieldName, value) {\n try {\n await students_service/* default */.A.patchEngagement(this.data._id, 'engagements', this.currentEngagement._id, fieldName, value);\n } catch (error) {\n console.error(`Error updating engagement field ${fieldName}:`, error);\n throw error; // Re-throw to be handled by the save method\n }\n },\n hasViewPermission(permission) {\n return !permission || this.$hasPermission(permission);\n },\n hasEditPermission(permission) {\n return !permission || this.$hasPermission(permission);\n },\n getFieldValue(field) {\n if (typeof field.value === 'function') {\n return field.value.call(this, this.data, this.$filters);\n } else if (typeof field.value === 'string') {\n // Handle dot notation for nested properties\n // This assumes no optional chaining in the string - use functions for complex access patterns\n try {\n return field.value.split('.').reduce((obj, key) => {\n if (obj == null) return null;\n return obj[key];\n }, this);\n } catch (error) {\n console.warn(`Error accessing field value \"${field.value}\":`, error);\n return null;\n }\n }\n return field.value;\n },\n getFieldHint(field) {\n if (typeof field.hint === 'function') {\n return field.hint.call(this, this.data, this.$filters);\n }\n return field.hint;\n },\n sectionHasEditableFields(section) {\n return section.fields.some(field => field.editable);\n },\n canEditSection(section) {\n return section.editPermission && this.hasEditPermission(section.editPermission) && this.sectionHasEditableFields(section);\n },\n openEditDialog(section) {\n this.currentEditSection = section;\n this.editDialog = true;\n }
1,\n initializeEditFormData() {\n const formData = {};\n this.currentEditableFields.forEach(field => {\n if (field.editKey) {\n if (field.editKey === 'hesaInclude') {\n // For the inverted include field, get the boolean value\n formData[field.editKey] = this.getFieldValue(field);\n } else if (field.editKey === 'qualAwardId') {\n // For qualAwardId, get the raw value directly\n formData[field.editKey] = this.currentEngagement?.hesaQualAwardId || '';\n } else if (field.editKey === 'qualAwardResult') {\n // For qualAwardResult, get the raw value and pad it\n const rawValue = this.currentEngagement?.hesaQualAwardResult;\n formData[field.editKey] = rawValue ? String(rawValue).padStart(4, '0') : '';\n } else if (field.editKey === 'rsnEngEnd') {\n // For rsnEngEnd, get the raw value directly\n formData[field.editKey] = this.currentEngagement?.hesaRsnEngEnd || '';\n } else if (field.editKey === 'engEndDate') {\n // For engEndDate, get the raw value directly\n formData[field.editKey] = this.currentEngagement?.endDate || '';\n } else if (field.editKey === 'hesaEngExpectedEndDate') {\n // For hesaEngExpectedEndDate, get the raw value directly\n formData[field.editKey] = this.currentEngagement?.hesaEngExpectedEndDate || '';\n } else if (field.editKey === 'rpstuload' || field.editKey === 'invoicefeeamount' || field.editKey === 'scsfeeamount') {\n // For session fields, get values from hesaRelevantSession\n const value = this.getFieldValue(field);\n formData[field.editKey] = value ? Number(value) : null;\n } else if (field.editKey === 'scsessionid' || field.editKey === 'previousscs') {\n // For session text fields, get the text value from hesaRelevantSession\n formData[field.editKey] = this.hesaRelevantSession?.[field.editKey === 'scsessionid' ? 'hesaSCSESSIONID' : 'previousSCS'] || '';\n } else if (field.editKey === 'scsmode') {\n // For SCSMODE field, get the value from hesaRelevantSession\n formData[field.editKey] = this.hesaRelevantSession?.hesaSCSMODE || '';\n } else if (field.editKey === 'elq') {\n // For ELQ field, get the value from hesaRelevantSession\n formData[field.editKey] = this.hesaRelevantSession?.hesaELQ || '';\n } else if (field.fieldType === 'switch') {\n // Switches must bind a real boolean; the `|| ''` fallback below\n // would coerce a legitimate `false` into '', which then fails to\n // cast to Boolean on save.\n formData[field.editKey] = Boolean(this.getFieldValue(field));\n } else if (field.fieldType === 'number') {\n // For number fields, ensure numeric value\n const value = this.getFieldValue(field);\n formData[field.editKey] = value ? Number(value) : null;\n } else {\n formData[field.editKey] = this.getFieldValue(field) || '';\n }\n }\n });\n this.editFormData = formData;\n },\n onComboboxChange() {\n this.$nextTick(() => {\n if (this.$refs.editForm) this.$refs.editForm.validate();\n });\n },\n // v-combobox only commits on blur/Enter; mirror the search buffer into v-model live so Save can't beat the commit.\n onComboboxSearchInput(editKey, val) {\n if (this.editFormData[editKey] !== val) {\n this.$set(this.editFormData, editKey, val == null ? '' : val);\n }\n },\n async saveEditableFields() {\n try {\n // v-combobox only commits typed text to v-model on blur; force it before reading editFormData.\n if (document.activeElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n await this.$nextTick();\n if (this.$refs.editForm && !this.$refs.editForm.validate()) {\n this.$showMessage('Please correct the highlighted errors before saving', 'error');\n return;\n }\n const hesaSurveyUpdates = {};\n const profileUpdates = {};\n const studentUpdates = {};\n const engagementUpdates = {};\n const sessionUpdates = {};\n\n // Process each editable field based on its editKey\n Object.entries(this.editFormData).forEac
1h(([key, value]) => {\n switch (key) {\n case 'ownstu':\n if (value !== this.data.studentId) {\n studentUpdates.studentId = value || null;\n }\n break;\n case 'hesaInclude':\n // Invert the include switch value to get the exclude value\n const excludeValue = !value;\n if (excludeValue !== this.data.hesaExclude) {\n studentUpdates.hesaExclude = excludeValue;\n }\n break;\n case 'ssn':\n if (value !== this.data.profile.ssn) {\n profileUpdates.ssn = value;\n }\n break;\n case 'ttpcode':\n hesaSurveyUpdates.ttpcode = value;\n break;\n case 'engEndDate':\n if (value !== this.currentEngagement?.endDate) {\n engagementUpdates.manualEndDate = value;\n }\n break;\n case 'rsnEngEnd':\n if (value !== this.currentEngagement?.hesaRsnEngEnd) {\n engagementUpdates.hesaRsnEngEnd = value;\n }\n break;\n case 'qualAwardId':\n if (value !== this.currentEngagement?.hesaQualAwardId) {\n engagementUpdates.hesaQualAwardId = value;\n }\n break;\n case 'qualAwardResult':\n if (value !== this.currentEngagement?.hesaQualAwardResult) {\n engagementUpdates.hesaQualAwardResult = value;\n }\n break;\n case 'hesaEngExpectedEndDate':\n if (value !== this.currentEngagement?.hesaEngExpectedEndDate) {\n engagementUpdates.hesaEngExpectedEndDate = value;\n }\n break;\n case 'rpstuload':\n if (value !== this.hesaRelevantSession?.hesaRPSTULOAD) {\n sessionUpdates.hesaRPSTULOAD = value ? Number(value) : null;\n }\n break;\n case 'invoicefeeamount':\n if (value !== this.hesaRelevantSession?.hesaINVOICEFEEAMOUNT) {\n sessionUpdates.hesaINVOICEFEEAMOUNT = value ? Number(value) : null;\n }\n break;\n case 'scsfeeamount':\n if (value !== this.hesaRelevantSession?.hesaSCSFEEAMOUNT) {\n sessionUpdates.hesaSCSFEEAMOUNT = value ? Number(value) : null;\n }\n break;\n case 'scsessionid':\n if (value !== this.hesaRelevantSession?.hesaSCSESSIONID) {\n sessionUpdates.hesaSCSESSIONID = value || null;\n }\n break;\n case 'previousscs':\n if (value !== this.hesaRelevantSession?.previousSCS) {\n sessionUpdates.previousSCS = value || null;\n }\n break;\n case 'scsmode':\n if (value !== this.hesaRelevantSession?.hesaSCSMODE) {\n sessionUpdates.hesaSCSMODE = value || null;\n }\n break;\n case 'elq':\n if (value !== this.hesaRelevantSession?.hesaELQ) {\n sessionUpdates.hesaELQ = value || null;\n }\n break;\n default:\n // For other fields, assume they go to hesaSurvey\n // Check if this is a number field and convert appropriately\n const field = this.currentEditableFields.find(f => f.editKey === key);\n if (field?.fieldType === 'number') {\n hesaSurveyUpdates[key] = value ? Number(value) : null;\n } else {\n hesaSurveyUpdates[key] = value;\n }\n }\n });\n\n // Make API calls only if there are updates\n if (Object.keys(hesaSurveyUpdates).length > 0) {\n await educationalProfiles_service/* default */.A.updateHesaSurvey(this.data.profile._id, hesaSurveyUpdates);\n // Update the local data to reflect the changes immediately\n Object.entries(hesaSurveyUpdates).forEac
1h(([fieldName, value]) => {\n this.$set(this.data.profile.hesaSurvey, fieldName, value);\n });\n }\n if (Object.keys(profileUpdates).length > 0) {\n await educationalProfiles_service/* default */.A.update(this.data.profile._id, profileUpdates);\n // Update the local data to reflect the changes immediately\n Object.entries(profileUpdates).forEach(([fieldName, value]) => {\n this.$set(this.data.profile, fieldName, value);\n });\n }\n if (Object.keys(studentUpdates).length > 0) {\n await students_service/* default */.A.patch(this.data._id, studentUpdates);\n // Update the local data to reflect the changes immediately\n Object.entries(studentUpdates).forEach(([fieldName, value]) => {\n this.$set(this.data, fieldName, value);\n });\n }\n if (Object.keys(engagementUpdates).length > 0) {\n await Promise.all(Object.entries(engagementUpdates).map(async ([fieldName, value]) => {\n await this.updateEngagementField(fieldName, value);\n }));\n // Update the local data to reflect the changes immediately\n Object.entries(engagementUpdates).forEach(([fieldName, value]) => {\n if (this.currentEngagement) {\n this.$set(this.currentEngagement, fieldName, value);\n }\n });\n }\n if (Object.keys(sessionUpdates).length > 0) {\n await Promise.all(Object.entries(sessionUpdates).map(async ([fieldName, value]) => {\n await students_service/* default */.A.patchEnrolmentSession(this.data._id, 'engagements', this.currentEngagement._id, this.hesaRelevantSession._id, fieldName, value);\n }));\n // Update the local data to reflect the changes immediately\n Object.entries(sessionUpdates).forEach(([fieldName, value]) => {\n if (this.hesaRelevantSession) {\n this.$set(this.hesaRelevantSession, fieldName, value);\n }\n });\n }\n\n // Emit updates\n if (Object.keys(studentUpdates).length > 0) {\n this.$emit('updated-student', {\n studentId: studentUpdates.studentId,\n hesaExclude: studentUpdates.hesaExclude\n }, null);\n }\n if (Object.keys(engagementUpdates).length > 0) {\n this.$emit('updated-engagement', engagementUpdates);\n }\n if (Object.keys(sessionUpdates).length > 0) {\n this.$emit('updated-session', {\n sessionId: this.hesaRelevantSession._id,\n updates: sessionUpdates\n });\n }\n this.$emit('updated-hesa', {\n hesaSurvey: hesaSurveyUpdates,\n profile: profileUpdates\n });\n const sectionName = this.currentEditSection?.name || 'HESA';\n this.editDialog = false;\n this.currentEditSection = null;\n this.$showMessage(`${sectionName} fields updated successfully`, 'success');\n } catch (error) {\n console.error('Error updating HESA fields:', error);\n const detail = error?.response?.data?.error || error?.message || 'Unknown error';\n this.$showMessage(`Error updating HESA fields: ${detail}`, 'error');\n }\n },\n updateFinSupRecords(updatedRecords) {\n // Update local data\n this.$set(this.hesaRelevantSession, 'hesaFinSup', updatedRecords);\n\n // Emit update\n this.$emit('updated-session', {\n sessionId: this.hesaRelevantSession._id,\n updates: {\n hesaFinSup: updatedRecords\n }\n });\n },\n updateEntryQualificationRecords(updatedRecords) {\n // Update local data\n if (!this.data.profile.hesaSurvey) {\n this.$set(this.data.profile, 'hesaSurvey', {});\n }\n this.$set(this.data.profile.hesaSurvey, 'entryQualificationAward', updatedRecords);\n\n // Emit update\n this.$emit('updated-hesa', {\n hesaSurvey: {\n entryQualificationAward: updatedRecords\n },\n profile: {}\n });\n }\n }\n});\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=script&lang=js\n /* harmony default export */ var components_HESAManagementvue_type_script_lang_js = (HESAManagementvue_type_script_lang_js); \n;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLo
1ader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=style&index=0&id=35aa4e35&prod&scoped=true&lang=css\n// extracted by mini-css-extract-plugin\n\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue?vue&type=style&index=0&id=35aa4e35&prod&scoped=true&lang=css\n\n// EXTERNAL MODULE: ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(81656);\n;// ./src/views/dashboard/profiles/components/HESAManagement.vue\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,componentNormalizer/* default */.A)(\n components_HESAManagementvue_type_script_lang_js,\n render,\n staticRenderFns,\n false,\n null,\n \"35aa4e35\",\n null\n \n)\n\n/* harmony default export */ var HESAManagement = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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FBQUEsR0FDQTtFQUFBNUIsS0FBQTtFQUFBNEIsSUFBQTtBQUFBLEdBQ0E7RUFBQTVCLEtBQUE7RUFBQTRCLElBQUE7QUFBQSxHQUNBO0VBQUE1QixLQUFBO0VBQUE0QixJQUFBO0FBQUEsR0FDQTtFQUFBNUIsS0FBQTtFQUFBNEIsSUFBQTtBQUFBLEdBQ0E7RUFBQTVCLEtBQUE7RUFBQTRCLElBQUE7QUFBQSxFQUNBO0FBRUEsMEVBQWU7RUFDZjlELElBQUE7RUFDQStELFVBQUE7SUFDQUMsVUFBQSxFQUFBQSxDQUFBO0lBQ0FDLHVCQUFBLEVBQUFBLENBQUE7SUFDQUMscUJBQUEsRUFBQUEsQ0FBQTtFQUNBO0VBQ0FDLEtBQUE7SUFDQTVELElBQUE7TUFDQTZELElBQUEsRUFBQTFELE1BQUE7TUFDQTJELFFBQUE7SUFDQTtJQUNBNUMsUUFBQTtNQUNBMkMsSUFBQSxFQUFBRSxPQUFBO01BQ0FDLE9BQUE7SUFDQTtFQUNBO0VBQ0FoRSxJQUFBLEVBQUFBLENBQUE7SUFDQWlFLGlCQUFBO0lBQ0FDLHNCQUFBLEdBQ0E7TUFBQXZDLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQUNBO01BQUE1QixLQUFBO01BQUE0QixJQUFBO0lBQUEsR0FDQTtNQUFBNUIsS0FBQTtNQUFBNEIsSUFBQTtJQUFBLEdBQ0E7TUFBQTVCLEtBQUE7TUFBQTRCLElBQUE7SUFBQSxHQU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BO1FBQ0E7UUFDQSxLQUFBYSxLQUFBO1VBQ0FuUCxVQUFBLEVBQUFrTyxpQkFBQTtVQUNBbk8sT0FBQSxFQUFBb087UUFDQTtRQUVBLE1BQUFtQixXQUFBLFFBQUExTSxrQkFBQSxFQUFBckQsSUFBQTtRQUNBLEtBQUFtQyxVQUFBO1FBQ0EsS0FBQWtCLGtCQUFBO1FBQ0EsS0FBQXFMLFlBQUEsSUFBQXFCLFdBQUE7TUFDQSxTQUFBckQsS0FBQTtRQUNBSixPQUFBLENBQUFJLEtBQUEsZ0NBQUFBLEtBQUE7UUFDQSxNQUFBc0QsTUFBQSxHQUFBdEQsS0FBQSxFQUFBdUQsUUFBQSxFQUFBMVAsSUFBQSxFQUFBbU0sS0FBQSxJQUFBQSxLQUFBLEVBQUF3RCxPQUFBO1FBQ0EsS0FBQXhCLFlBQUEsZ0NBQUFzQixNQUFBO01BQ0E7SUFDQTtJQUVBaE8sb0JBQUFtTyxjQUFBO01BQ0E7TUFDQSxLQUFBcE4sSUFBQSxNQUFBbEIsbUJBQUEsZ0JBQUFzTyxjQUFBOztNQUVBO01BQ0EsS0FBQVAsS0
1FBQTtRQUNBQyxTQUFBLE9BQUFoTyxtQkFBQSxDQUFBTixHQUFBO1FBQ0F1TyxPQUFBO1VBQUF4RSxVQUFBLEVBQUE2RTtRQUFBO01BQ0E7SUFDQTtJQUVBeE8sZ0NBQUF3TyxjQUFBO01BQ0E7TUFDQSxVQUFBNVAsSUFBQSxDQUFBQyxPQUFBLENBQUFDLFVBQUE7UUFDQSxLQUFBc0MsSUFBQSxNQUFBeEMsSUFBQSxDQUFBQyxPQUFBO01BQ0E7TUFDQSxLQUFBdUMsSUFBQSxNQUFBeEMsSUFBQSxDQUFBQyxPQUFBLENBQUFDLFVBQUEsNkJBQUEwUCxjQUFBOztNQUVBO01BQ0EsS0FBQVAsS0FBQTtRQUNBblAsVUFBQTtVQUFBOEssdUJBQUEsRUFBQTRFO1FBQUE7UUFDQTNQLE9BQUE7TUFDQTtJQUNBO0VBQ0E7QUFDQSxDQUFDLEU7O0FDbnlDc1IsQ0FBQyxxRkFBZSxxQ0FBRyxFQUFDLEM7O0FDQTNTOzs7Ozs7O0FFQWlIO0FBQ2hEO0FBQ0w7QUFDNUQsQ0FBc0c7OztBQUd0RztBQUM0RztBQUM1RyxnQkFBZ0Isc0NBQVU7QUFDMUIsRUFBRSxnREFBTTtBQUNSLEVBQUUsTUFBTTtBQUNSLEVBQUUsZUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbURBQWUsaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jZG1zLy4vc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT8zNTVjIiwid2VicGFjazovL2NkbXMvc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT9kZDlkIiwid2VicGFjazovL2NkbXMvLi9zcmMvdmlld3MvZGFzaGJvYXJkL3Byb2ZpbGVzL2NvbXBvbmVudHMvSEVTQU1hbmFnZW1lbnQudnVlPzRkMmMiLCJ3ZWJwYWNrOi8vY2Rtcy8uL3NyYy92aWV3cy9kYXNoYm9hcmQvcHJvZmlsZXMvY29tcG9uZW50cy9IRVNBTWFuYWdlbWVudC52dWU/ZjBjMyIsIndlYnBhY2s6Ly9jZG1zLy4vc3JjL3ZpZXdzL2Rhc2hib2FyZC9wcm9maWxlcy9jb21wb25lbnRzL0hFU0FNYW5hZ2VtZW50LnZ1ZT9kYWFiIiwid2VicGFjazovL2NkbXMvLi9zcmMvdmlld3MvZGFzaGJvYXJkL3Byb2ZpbGVzL2NvbXBvbmVudHMvSEVTQU1hbmFnZW1lbnQudnVlP2MwNGYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCd2LWNhcmQnLFtfYygndi1jYXJkLXRpdGxlJyxbX3ZtLl92KF92bS5fcyhfdm0uaGVzYVRpdGxlKSldKSxfYygndi1jYXJkLXRleHQnLFtfYygndi1jb250YWluZXInLHthdHRyczp7XCJmbHVpZFwiOlwiXCJ9fSxfdm0uX2woKF92bS52aXNpYmxlU2VjdGlvbnMpLGZ1bmN0aW9uKHNlY3Rpb24pe3JldHVybiBfYygndi1zaGVldCcse2tleTpzZWN0aW9uLm5hbWUsc3RhdGljQ2xhc3M6XCJtdC00IHBhLTRcIixhdHRyczp7XCJvdXRsaW5lZFwiOlwiXCJ9fSxbX2MoJ3Ytcm93JyxbX2MoJ3YtY29sJyx7YXR0cnM6e1wiY29sc1wiOlwiMTJcIn19LFsoX3ZtLmNhbkVkaXRTZWN0aW9uKHNlY3Rpb24pKT9fYygndi1yb3cnLHtzdGF0aWNDbGFzczpcImFsaWduLWNlbnRlclwifSxbX2MoJ3YtY29sJyxbX2MoJ2gzJyxbX3ZtLl92KF92bS5fcyhzZWN0aW9uLm5hbWUpKV0pXSksX2MoJ3YtY29sJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LXJpZ2h0XCJ9LFtfYygndi1idG4nLHthdHRyczp7XCJmYWJcIjpcIlwiLFwiZGFya1wiOlwiXCIsXCJ4LXNtYWxsXCI6XCJcIixcImNvbG9yXCI6c2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnID8gJ3ByaW1hcnknIDogJ3N1Y2Nlc3MnfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5vcGVuRWRpdERpYWxvZyhzZWN0aW9uKX19fSxbX2MoJ3YtaWNvbicsW192bS5fdihfdm0uX3Moc2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnID8gJ21kaS1wbHVzJyA6ICdtZGktcGVuY2lsJykpXSldLDEpXSwxKV0sMSk6X2MoJ2gzJyxbX3ZtLl92KF92bS5fcyhzZWN0aW9uLm5hbWUpKV0pLChzZWN0aW9uLm5hbWUgPT09ICdBbm51YWwgc3VydmV5JyAmJiAoIV92bS5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSB8fCBPYmplY3Qua2V5cyhfdm0uZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkpLmxlbmd0aCA9PT0gMCkpP19jKCd2LWFsZXJ0Jyx7c3RhdGljQ2xhc3M6XCJwYS0wIG10LTMgbWItMFwiLGF0dHJzOntcInR5cGVcIjpcImluZm9cIixcInRleHRcIjpcIlwifX0sW192bS5fdihcIk5vIEhFU0Egc3VydmV5IGRhdGEgYXZhaWxhYmxlXCIpXSk6X3ZtLl9lKCldLDEpXSwxKSwoc2VjdGlvbi5uYW1lICE9PSAnRmluYW5jaWFsIFN1cHBvcnQnKT9fYygndi1yb3cnLFtfdm0uX2woKHNlY3Rpb24uZmllbGRzKSxmdW5jdGlvbihmaWVsZCl7cmV0dXJuIFsoZmllbGQubmV3
1Um93KT9fYygnZGl2Jyx7a2V5OmAke2ZpZWxkLmxhYmVsfS1icmVha2Asc3RhdGljQ2xhc3M6XCJoZXNhLXJvdy1icmVha1wifSk6X3ZtLl9lKCksX2MoJ3YtY29sJyxfdm0uX2Ioe2tleTpmaWVsZC5sYWJlbH0sJ3YtY29sJyxmaWVsZC5jb2xzLGZhbHNlKSxbKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3N3aXRjaCcpP19jKCd2LXN3aXRjaCcse2F0dHJzOntcImlucHV0LXZhbHVlXCI6X3ZtLmdldEZpZWxkVmFsdWUoZmllbGQpLFwibGFiZWxcIjpmaWVsZC5sYWJlbCxcImhpbnRcIjpfdm0uZ2V0RmllbGRIaW50KGZpZWxkKSA/IGBTb3VyY2U6ICR7X3ZtLmdldEZpZWxkSGludChmaWVsZCl9YCA6IG51bGwsXCJjb2xvclwiOlwic3VjY2Vzc1wiLFwiZGVuc2VcIjpcIlwiLFwicmVhZG9ubHlcIjpcIlwiLFwicGVyc2lzdGVudC1oaW50XCI6XCJcIn19KTpfYygndi10ZXh0LWZpZWxkJyx7YXR0cnM6e1widmFsdWVcIjpfdm0uZ2V0RmllbGRWYWx1ZShmaWVsZCksXCJsYWJlbFwiOmZpZWxkLmxhYmVsLFwiaGludFwiOl92bS5nZXRGaWVsZEhpbnQoZmllbGQpID8gYFNvdXJjZTogJHtfdm0uZ2V0RmllbGRIaW50KGZpZWxkKX1gIDogbnVsbCxcImRlbnNlXCI6XCJcIixcInJlYWRvbmx5XCI6XCJcIixcInBlcnNpc3RlbnQtaGludFwiOlwiXCJ9fSldLDEpXX0pXSwyKTpfdm0uX2UoKSwoc2VjdGlvbi5uYW1lID09PSAnRW50cnkgUXVhbGlmaWNhdGlvbnMnKT9fYygndi1yb3cnLFtfYygndi1jb2wnLHthdHRyczp7XCJjb2xzXCI6XCIxMlwifX0sWyhfdm0uZGF0YS5wcm9maWxlLl9pZCk/X2MoJ2VudHJ5LXF1YWxpZmljYXRpb24tdGFibGUnLHthdHRyczp7XCJwcm9maWxlLWlkXCI6X3ZtLmRhdGEucHJvZmlsZS5faWQsXCJyZWNvcmRzXCI6X3ZtLmVudHJ5UXVhbGlmaWNhdGlvblJlY29yZHMsXCJ0aXRsZVwiOlwiRW50cnkgUXVhbGlmaWNhdGlvbiBBd2FyZHNcIixcInJlYWRvbmx5XCI6X3ZtLnJlYWRvbmx5IHx8ICFfdm0uaGFzRWRpdFBlcm1pc3Npb24oJ2hlc2E6ZWRpdCcpfSxvbjp7XCJ1cGRhdGVkXCI6X3ZtLnVwZGF0ZUVudHJ5UXVhbGlmaWNhdGlvblJlY29yZHN9fSk6X3ZtLl9lKCldLDEpXSwxKTpfdm0uX2UoKSwoc2VjdGlvbi5uYW1lID09PSAnRmluYW5jaWFsIFN1cHBvcnQnKT9fYygndi1yb3cnLFtfYygndi1jb2wnLHthdHRyczp7XCJjb2xzXCI6XCIxMlwifX0sWyhfdm0uY3VycmVudEVuZ2FnZW1lbnQuX2lkICYmIF92bS5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCk/X2MoJ2ZpbmFuY2lhbC1zdXBwb3J0LXRhYmxlJyx7YXR0cnM6e1wic3R1ZGVudC1pZFwiOl92bS5kYXRhLl9pZCxcImVuZ2FnZW1lbnQtaWRcIjpfdm0uY3VycmVudEVuZ2FnZW1lbnQuX2lkLFwic2Vzc2lvbi1pZFwiOl92bS5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCxcInJlY29yZHNcIjpfdm0uaGVzYUZpblN1cFJlY29yZHMsXCJzc25cIjpfdm0uZGF0YS5wcm9maWxlLnNzbixcInRpdGxlXCI6XCJGaW5hbmNpYWwgU3VwcG9ydCBEZXRhaWxzXCIsXCJyZWFkb25seVwiOl92bS5yZWFkb25seSB8fCAhX3ZtLmhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKX0sb246e1widXBkYXRlZFwiOl92bS51cGRhdGVGaW5TdXBSZWNvcmRzfX0pOl92bS5fZSgpXSwxKV0sMSk6X3ZtLl9lKCldLDEpfSksMSldLDEpLF9jKCd2LWRpYWxvZycse2F0dHJzOntcIm1heC13aWR0aFwiOlwiNjAwcHhcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdERpYWxvZyksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS5lZGl0RGlhbG9nPSQkdn0sZXhwcmVzc2lvbjpcImVkaXREaWFsb2dcIn19LFtfYygndi1jYXJkJyxbX2MoJ3YtY2FyZC10aXRsZScsW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWg1XCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0RGlhbG9nVGl0bGUpKV0pLF9jKCd2LXNwYWNlcicpLF9jKCd2LWljb24nLHthdHRyczp7XCJhcmlhLWxhYmVsXCI6XCJDbG9zZVwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVkaXREaWFsb2cgPSBmYWxzZX19fSxbX3ZtLl92KFwibWRpLWNsb3NlXCIpXSldLDEpLF9jKCd2LWNhcmQtdGV4dCcsW19jKCd2LWZvcm0nLHtyZWY6XCJlZGl0Rm9ybVwiLG9uOntcInN1Ym1pdFwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7fX0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1WYWxpZCksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS5lZGl0Rm9ybVZhbGlkPSQkdn0sZXhwcmVzc2lvbjpcImVkaXRGb3JtVmFsaWRcIn19LFtfYygndi1jb250YWluZXInLHthdHRyczp7XCJmbHVpZFwiOlwiXCJ9fSxbX2MoJ3Ytcm93Jyxfdm0uX2woKF92bS5jdXJyZW50RWRpdGFibGVGaWVsZHMpLGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gX2MoJ3YtY29sJyx7a2V5OmZpZWxkLmVkaXRLZXksYXR0cnM6e1wiY29sc1wiOlwiMTJcIixcIm1kXCI6ZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnID8gJzEyJyA6ICc2J319LFsoZmllbGQuZmllbGRUeXBlID09PSAnc3dpdGNoJyk/X2MoJ3Ytc3dpdGNoJyx7YXR0cnM6e1wibGFiZWxcIjpmaWVsZC5sYWJlbCxcImNvbG9yXCI6XCJzdWNjZXNzXCIsXCJkZW5zZVwiOlwiXCIsXCJoaWRlLWRldGFpbHNcIjpcIlwifSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6KGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NlbGVjdCcpP19jKCd2LXNlbGVjdCcse2F0dHJzOntcIml0ZW1zXCI6ZmllbGQuc2VsZWN0T3B0aW9ucyxcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJpdGVtLXRleHRcIjpcInRleHRcIixcIml0ZW0tdmFsdWVcIjpcInZhbHVlXCIsXCJkZW5zZVwiOlwiXCIsXCJjbGVhcmFibGVcIjpcIlwiLFwiaGlkZS1kZXRhaWxzXCI6XCJcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldKSxjYWxsYmFjazpmdW5jdGlvbiAoJCR2KSB7X3ZtLiRzZXQoX3ZtLmVkaXRGb3JtRGF0YSwgZmllbGQuZWRpdEtleSwgJCR2KX0sZXhwcmVzc2lvbjpcImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwifX0pOihmaWVsZC5maWVsZFR5cGUgPT09ICdkYXRlJyk/X2MoJ2RhdGUtcGlja2VyJyx7YXR0cnM6e1wibGFiZWxcIjpmaWVsZC5sYWJlbCxcImNsZWFyYWJsZVwiOlwiXCIsXCJkZW5zZVwiOlwiXCJ9LG1vZGVsOnt2YWx1ZTooX3ZtLmVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSksY2FsbGJhY2s6ZnVuY3Rpb24gKCQkdikge192bS4kc2V0KF92bS5lZGl0Rm9ybURhdGEsIGZpZWxkLmVkaXRLZXksICQkdil9LGV4cHJlc3Npb246XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIn19KTooZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnKT9fYygndi10ZXh0YXJlYScse2F0dHJzOntcImx
1hYmVsXCI6ZmllbGQubGFiZWwsXCJkZW5zZVwiOlwiXCIsXCJyb3dzXCI6XCIzXCIsXCJoaWRlLWRldGFpbHNcIjpcIlwifSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6KGZpZWxkLmZpZWxkVHlwZSA9PT0gJ251bWJlci1zZWxlY3QnKT9fYygndi1jb21ib2JveCcse2F0dHJzOntcIml0ZW1zXCI6ZmllbGQuc2VsZWN0T3B0aW9ucyxcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJpdGVtLXRleHRcIjpcInRleHRcIixcIml0ZW0tdmFsdWVcIjpcInZhbHVlXCIsXCJyZXR1cm4tb2JqZWN0XCI6ZmFsc2UsXCJydWxlc1wiOmZpZWxkLnJ1bGVzIHx8IFtdLFwiaW5wdXRtb2RlXCI6XCJudW1lcmljXCIsXCJkZW5zZVwiOlwiXCIsXCJoaWRlLWRldGFpbHNcIjpcImF1dG9cIn0sb246e1wiY2hhbmdlXCI6X3ZtLm9uQ29tYm9ib3hDaGFuZ2UsXCJ1cGRhdGU6c2VhcmNoLWlucHV0XCI6KHZhbCkgPT4gX3ZtLm9uQ29tYm9ib3hTZWFyY2hJbnB1dChmaWVsZC5lZGl0S2V5LCB2YWwpfSxtb2RlbDp7dmFsdWU6KF92bS5lZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV0pLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZWRpdEZvcm1EYXRhLCBmaWVsZC5lZGl0S2V5LCAkJHYpfSxleHByZXNzaW9uOlwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJ9fSk6X2MoJ3YtdGV4dC1maWVsZCcse2F0dHJzOntcImxhYmVsXCI6ZmllbGQubGFiZWwsXCJ0eXBlXCI6ZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnLFwiZGVuc2VcIjpcIlwiLFwiaGlkZS1kZXRhaWxzXCI6XCJcIn0sbW9kZWw6e3ZhbHVlOihfdm0uZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldKSxjYWxsYmFjazpmdW5jdGlvbiAoJCR2KSB7X3ZtLiRzZXQoX3ZtLmVkaXRGb3JtRGF0YSwgZmllbGQuZWRpdEtleSwgJCR2KX0sZXhwcmVzc2lvbjpcImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwifX0pXSwxKX0pLDEpXSwxKV0sMSksKF92bS5jdXJyZW50RWRpdFNlY3Rpb24gJiYgX3ZtLmN1cnJlbnRFZGl0U2VjdGlvbi5uYW1lID09PSAnRW5nYWdlbWVudCBMZWF2ZXInKT9fYygndi1hbGVydCcse3N0YXRpY0NsYXNzOlwibXQtMyBtYi0wXCIsYXR0cnM6e1widHlwZVwiOlwiaW5mb1wiLFwidGV4dFwiOlwiXCIsXCJkZW5zZVwiOlwiXCJ9fSxbX3ZtLl92KFwiT25seSB1cGRhdGUgUVVBTEFXQVJESUQgaWYgZGlmZmVyZW50IGZyb20gcHJvZ3JhbW1lIG9mIHN0dWR5XCIpXSk6X3ZtLl9lKCldLDEpLF9jKCd2LWNhcmQtYWN0aW9ucycsW19jKCd2LXNwYWNlcicpLF9jKCd2LWJ0bicse2F0dHJzOntcInRleHRcIjpcIlwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVkaXREaWFsb2cgPSBmYWxzZX19fSxbX3ZtLl92KFwiQ2FuY2VsXCIpXSksX2MoJ3YtYnRuJyx7YXR0cnM6e1wiY29sb3JcIjpcInN1Y2Nlc3NcIn0sb246e1wiY2xpY2tcIjpfdm0uc2F2ZUVkaXRhYmxlRmllbGRzfX0sW192bS5fdihcIlNhdmVcIildKV0sMSldLDEpXSwxKV0sMSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlIGxhbmc9XCJwdWdcIj5cbiAgdi1jYXJkXG4gICAgdi1jYXJkLXRpdGxlIHt7IGhlc2FUaXRsZSB9fVxuICAgIHYtY2FyZC10ZXh0XG4gICAgICB2LWNvbnRhaW5lcihmbHVpZClcbiAgICAgICAgLy8gRHluYW1pYyBzZWN0aW9uc1xuICAgICAgICB2LXNoZWV0Lm10LTQucGEtNCh2LWZvcj1cInNlY3Rpb24gaW4gdmlzaWJsZVNlY3Rpb25zXCIgOmtleT1cInNlY3Rpb24ubmFtZVwiIG91dGxpbmVkKVxuICAgICAgICAgIHYtcm93XG4gICAgICAgICAgICB2LWNvbChjb2xzPVwiMTJcIilcbiAgICAgICAgICAgICAgdi1yb3cuYWxpZ24tY2VudGVyKHYtaWY9XCJjYW5FZGl0U2VjdGlvbihzZWN0aW9uKVwiKVxuICAgICAgICAgICAgICAgIHYtY29sXG4gICAgICAgICAgICAgICAgICBoMyB7eyBzZWN0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICB2LWNvbC50ZXh0LXJpZ2h0XG4gICAgICAgICAgICAgICAgICB2LWJ0bihmYWIgZGFyayB4LXNtYWxsIDpjb2xvcj1cInNlY3Rpb24ubmFtZSA9PT0gJ0ZpbmFuY2lhbCBTdXBwb3J0JyA/ICdwcmltYXJ5JyA6ICdzdWNjZXNzJ1wiIEBjbGljaz1cIm9wZW5FZGl0RGlhbG9nKHNlY3Rpb24pXCIpXG4gICAgICAgICAgICAgICAgICAgIHYtaWNvbiB7eyBzZWN0aW9uLm5hbWUgPT09ICdGaW5hbmNpYWwgU3VwcG9ydCcgPyAnbWRpLXBsdXMnIDogJ21kaS1wZW5jaWwnIH19XG4gICAgICAgICAgICAgIGgzKHYtZWxzZSkge3sgc2VjdGlvbi5uYW1lIH19XG5cbiAgICAgICAgICAgICAgdi1hbGVydC5wYS0wLm10LTMubWItMChcbiAgICAgICAgICAgICAgICB2LWlmPVwic2VjdGlvbi5uYW1lID09PSAnQW5udWFsIHN1cnZleScgJiYgKCFkYXRhLnByb2ZpbGUuaGVzYVN1cnZleSB8fCBPYmplY3Qua2V5cyhkYXRhLnByb2ZpbGUuaGVzYVN1cnZleSkubGVuZ3RoID09PSAwKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImluZm9cIlxuICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgKSBObyBIRVNBIHN1cnZleSBkYXRhIGF2YWlsYWJsZVxuXG4gICAgICAgICAgLy8gUmVndWxhciBzZWN0aW9uIGZpZWxkc1xuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgIT09ICdGaW5hbmNpYWwgU3VwcG9ydCdcIilcbiAgICAgICAgICAgIHRlbXBsYXRlKHYtZm9yPVwiZmllbGQgaW4gc2VjdGlvbi5maWVsZHNcIilcbiAgICAgICAgICAgICAgLmhlc2Etcm93LWJyZWFrKHYtaWY9XCJmaWVsZC5uZXdSb3dcIiA6a2V5PVwiYCR7ZmllbGQubGFiZWx9LWJyZWFrYFwiKVxuICAgICAgICAgICAgICB2LWNvbChcbiAgICAgICAgICAgICAgICA6a2V5PVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgI
1HYtYmluZD1cImZpZWxkLmNvbHNcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdi1zd2l0Y2goXG4gICAgICAgICAgICAgICAgICB2LWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc3dpdGNoJ1wiXG4gICAgICAgICAgICAgICAgICA6aW5wdXQtdmFsdWU9XCJnZXRGaWVsZFZhbHVlKGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICA6bGFiZWw9XCJmaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICA6aGludD1cImdldEZpZWxkSGludChmaWVsZCkgPyBgU291cmNlOiAke2dldEZpZWxkSGludChmaWVsZCl9YCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdGVudC1oaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHYtdGV4dC1maWVsZChcbiAgICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiZ2V0RmllbGRWYWx1ZShmaWVsZClcIlxuICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgOmhpbnQ9XCJnZXRGaWVsZEhpbnQoZmllbGQpID8gYFNvdXJjZTogJHtnZXRGaWVsZEhpbnQoZmllbGQpfWAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdGVudC1oaW50XG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gRW50cnkgUXVhbGlmaWNhdGlvbnMgc2VjdGlvblxuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgPT09ICdFbnRyeSBRdWFsaWZpY2F0aW9ucydcIilcbiAgICAgICAgICAgIHYtY29sKGNvbHM9XCIxMlwiKVxuICAgICAgICAgICAgICBlbnRyeS1xdWFsaWZpY2F0aW9uLXRhYmxlKFxuICAgICAgICAgICAgICAgIHYtaWY9XCJkYXRhLnByb2ZpbGUuX2lkXCJcbiAgICAgICAgICAgICAgICA6cHJvZmlsZS1pZD1cImRhdGEucHJvZmlsZS5faWRcIlxuICAgICAgICAgICAgICAgIDpyZWNvcmRzPVwiZW50cnlRdWFsaWZpY2F0aW9uUmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFbnRyeSBRdWFsaWZpY2F0aW9uIEF3YXJkc1wiXG4gICAgICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHkgfHwgIWhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKVwiXG4gICAgICAgICAgICAgICAgQHVwZGF0ZWQ9XCJ1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzXCJcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gRmluYW5jaWFsIFN1cHBvcnQgc2VjdGlvblxuICAgICAgICAgIHYtcm93KHYtaWY9XCJzZWN0aW9uLm5hbWUgPT09ICdGaW5hbmNpYWwgU3VwcG9ydCdcIilcbiAgICAgICAgICAgIHYtY29sKGNvbHM9XCIxMlwiKVxuICAgICAgICAgICAgICBmaW5hbmNpYWwtc3VwcG9ydC10YWJsZShcbiAgICAgICAgICAgICAgICB2LWlmPVwiY3VycmVudEVuZ2FnZW1lbnQuX2lkICYmIGhlc2FSZWxldmFudFNlc3Npb24uX2lkXCJcbiAgICAgICAgICAgICAgICA6c3R1ZGVudC1pZD1cImRhdGEuX2lkXCJcbiAgICAgICAgICAgICAgICA6ZW5nYWdlbWVudC1pZD1cImN1cnJlbnRFbmdhZ2VtZW50Ll9pZFwiXG4gICAgICAgICAgICAgICAgOnNlc3Npb24taWQ9XCJoZXNhUmVsZXZhbnRTZXNzaW9uLl9pZFwiXG4gICAgICAgICAgICAgICAgOnJlY29yZHM9XCJoZXNhRmluU3VwUmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgOnNzbj1cImRhdGEucHJvZmlsZS5zc25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRmluYW5jaWFsIFN1cHBvcnQgRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHkgfHwgIWhhc0VkaXRQZXJtaXNzaW9uKCdoZXNhOmVkaXQnKVwiXG4gICAgICAgICAgICAgICAgQHVwZGF0ZWQ9XCJ1cGRhdGVGaW5TdXBSZWNvcmRzXCJcbiAgICAgICAgICAgICAgKVxuXG4gICAgLy8gRWRpdCBkaWFsb2cgZm9yIGVkaXRhYmxlIGZpZWxkc1xuICAgIHYtZGlhbG9nKHYtbW9kZWw9XCJlZGl0RGlhbG9nXCIgbWF4LXdpZHRoPVwiNjAwcHhcIilcbiAgICAgIHYtY2FyZFxuICAgICAgICB2LWNhcmQtdGl0bGVcbiAgICAgICAgICBzcGFuLnRleHQtaDUge3sgZWRpdERpYWxvZ1RpdGxlIH19XG4gICAgICAgICAgdi1zcGFjZXJcbiAgICAgICAgICB2LWljb24oYXJpYS1sYWJlbD1cIkNsb3NlXCIgQGNsaWNrPVwiZWRpdERpYWxvZyA9IGZhbHNlXCIpIG1kaS1jbG9zZVxuICAgICAgICB2LWNhcmQtdGV4dFxuICAgICAgICAgIHYtZm9ybShyZWY9XCJlZGl0Rm9ybVwiIHYtbW9kZWw9XCJlZGl0Rm9ybVZhbGlkXCIgQHN1Ym1pdC5wcmV2ZW50KVxuICAgICAgICAgICAgdi1jb250YWluZXIoZmx1aWQpXG4gICAgICAgICAgICAgIHYtcm93XG4gICAgICAgICAgICAgICAgdi1jb2woXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cImZpZWxkIGluIGN1cnJlbnRFZGl0YWJsZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiZmllbGQuZWRpdEtleVwiXG4gICAgICAgICAgICAgICAgICBjb2xzPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgOm1kPVwiZmllbGQuZmllbGRUeXBlID09PSAndGV4dGFyZWEnID8gJzEyJyA6ICc2J1wiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdi1zd2l0Y2goXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzd2l0Y2gnXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB2LXNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2VsZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgI
1HYtbW9kZWw9XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIlxuICAgICAgICAgICAgICAgICAgICA6aXRlbXM9XCJmaWVsZC5zZWxlY3RPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBpdGVtLXRleHQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS12YWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlXG4gICAgICAgICAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZGF0ZS1waWNrZXIoXG4gICAgICAgICAgICAgICAgICAgIHYtZWxzZS1pZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImVkaXRGb3JtRGF0YVtmaWVsZC5lZGl0S2V5XVwiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlXG4gICAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB2LXRleHRhcmVhKFxuICAgICAgICAgICAgICAgICAgICB2LWVsc2UtaWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICd0ZXh0YXJlYSdcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJcbiAgICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiZmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdi1jb21ib2JveChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyLXNlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZWRpdEZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldXCJcbiAgICAgICAgICAgICAgICAgICAgOml0ZW
11zPVwiZmllbGQuc2VsZWN0T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cImZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS10ZXh0PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0tdmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIDpyZXR1cm4tb2JqZWN0PVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICA6cnVsZXM9XCJmaWVsZC5ydWxlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHM9XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIm9uQ29tYm9ib3hDaGFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOnNlYXJjaC1pbnB1dD1cIih2YWwpID0+IG9uQ29tYm9ib3hTZWFyY2hJbnB1dChmaWVsZC5lZGl0S2V5LCB2YWwpXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHYtdGV4dC1maWVsZChcbiAgICAgICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJlZGl0Rm9ybURhdGFbZmllbGQuZWRpdEtleV1cIlxuICAgICAgICAgICAgICAgICAgICA6bGFiZWw9XCJmaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIDp0eXBlPVwiZmllbGQuZmllbGRUeXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgdi1hbGVydCh2LWlmPVwiY3VycmVudEVkaXRTZWN0aW9uICYmIGN1cnJlbnRFZGl0U2VjdGlvbi5uYW1lID09PSAnRW5nYWdlbWVudCBMZWF2ZXInXCIgdHlwZT1cImluZm9cIiB0ZXh0IGRlbnNlIGNsYXNzPVwibXQtMyBtYi0wXCIpIE9ubHkgdXBkYXRlIFFVQUxBV0FSRElEIGlmIGRpZmZlcmVudCBmcm9tIHByb2dyYW1tZSBvZiBzdHVkeVxuICAgICAgICB2LWNhcmQtYWN0aW9uc1xuICAgICAgICAgIHYtc3BhY2VyXG4gICAgICAgICAgdi1idG4odGV4dCBAY2xpY2s9XCJlZGl0RGlhbG9nID0gZmFsc2VcIikgQ2FuY2VsXG4gICAgICAgICAgdi1idG4oY29sb3I9XCJzdWNjZXNzXCIgQGNsaWNrPVwic2F2ZUVkaXRhYmxlRmllbGRzXCIpIFNhdmVcbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgU3lzdGVtRGF0YVNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlcy9zeXN0ZW1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IFN0dWRlbnRzU2VydmljZSBmcm9tICdAL3NlcnZpY2VzL3N0dWRlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEVkdWNhdGlvbmFsUHJvZmlsZXNTZXJ2aWNlIGZyb20gJ0Avc2VydmljZXMvZWR1Y2F0aW9uYWxQcm9maWxlcy5zZXJ2aWNlJztcbmltcG9ydCBIZXNhQ29kZXNTZXJ2aWNlIGZyb20gJ0Avc2VydmljZXMvaGVzYUNvZGVzLnNlcnZpY2UnO1xuaW1wb3J0IFByb2dyYW1tZXNWMlNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlcy9wcm9ncmFtbWVzLnYyLnNlcnZpY2UnO1xuXG5jb25zdCBQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyA9IFtcbiAge3ZhbHVlOiAnNTAzNycsIHRleHQ6ICc1MDM3IC0gT3RoZXIgVUsgRnVydGhlciBFZHVjYXRpb24gQ29sbGVnZSd9LFxuICB7dmFsdWU6ICc1MDM4JywgdGV4dDogJzUwMzggLSBPdGhlciBVSyBIaWdoZXIgRWR1Y2F0aW9uIFByb3ZpZGVyJ30sXG4gIHt2YWx1ZTogJzUwMzknLCB0ZXh0OiAnNTAzOSAtIE90aGVyIFVLIGluZGVwZW5kZW50IHNjaG9vbCd9LFxuICB7dmFsdWU6ICc1MDQ2JywgdGV4dDogJzUwNDYgLSBPdGhlciBVSyBzdGF0ZSBzY2hvb2wnfSxcbiAge3ZhbHVlOiAnNTA0NycsIHRleHQ6ICc1MDQ3IC0gT3RoZXIgVUsgdHJhaW5pbmcgcHJvdmlkZXInfSxcbiAge3ZhbHVlOiAnNTA0OScsIHRleHQ6ICc1MDQ5IC0gQW55IG5vbi1VSyBwcm92aWRlcid9LFxuXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnSEVTQU1hbmFnZW1lbnQnLFxuICBjb21wb25lbnRzOiB7XG4gICAgRGF0ZVBpY2tlcjogKCkgPT4gaW1wb3J0KCdAL2NvbXBvbmVudHMvY2Rtcy9EYXRlUGlja2VyJyksXG4gICAgRW50cnlRdWFsaWZpY2F0aW9uVGFibGU6ICgpID0+IGltcG9ydCgnQC9jb21wb25lbnRzL2NkbXMvRW50cnlRdWFsaWZpY2F0aW9uVGFibGUnKSxcbiAgICBGaW5hbmNpYWxTdXBwb3J0VGFibGU6ICgpID0+IGltcG9ydCgnQC9jb21wb25lbnRzL2NkbXMvRmluYW5jaWFsU3VwcG9ydFRhYmxlJyksXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgZGF0YToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICByZWFkb25seToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSxcbiAgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBoZXNhQ29sbGVnZUNvbmZpZzoge30sXG4gICAgcXVhbEF3YXJkUmVzdWx0T3B0aW9uczogW1xuICAgICAge3ZhbHVlOiAnMDAwMScsIHRleHQ6ICcwMDAxIC0gRmlyc3QgY2xhc3MgaG9ub3Vycyd9LFxuICAgICAge3ZhbHVlOiAnMDAwMicsIHRleHQ6ICcwMDAyIC0gVXBwZXIgc2Vjb25kIGNsYXNzIGhvbm91cnMnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDMnLCB0ZXh0OiAnMDAwMyAtIExvd2VyIHNlY29uZCBjbGFzcyBob25vdXJzJ30sXG4gICAgICB7dmFsdWU6ICcwMDA0JywgdGV4dDogJzAwMDQgLSBUaGlyZCBjbGFzcyBob25vdXJzJ30sXG4gICAgICB7dmFsdWU6ICcwMDA1JywgdGV4dDogJzAwMDUgLSBVbmNsYXNzaWZpZWQgaG9ub3Vycyd9LFxuICAgICAge3ZhbHVlOiAnMDAwNicsIHRleHQ6ICcwMDA2IC0gQWVncm90YXQgKHdoZXRoZXIgdG8gaG9ub3VycyBvciB0byBwYXNzKSd9LFxuICAgICAge3ZhbHVlOiAnMDAwNycsIHRleHQ6ICcwMDA3IC0gT3JkaW5hcnkgKG5vbi1ob25vdXJzKSBkZWdyZWUnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDgnLCB0ZXh0OiAnMDAwOCAtIEdlbmVyYWwgZGVncmVlIC0gZGVncmVlIGF3YXJkZWQgYWZ0ZXIgZm9sbG93aW5nIGEgbm9uLWhvbm91cnMgY291cnNlL2RlZ3JlZSB0aGF0IHdhcyBub3QgYXZhaWxhYmxlIHRvIGJlIGNsYXNzaWZpZWQnfSxcbiAgICAgIHt2YWx1ZTogJzAwMDknLCB0ZXh0OiAnMDAwOSAtIERpc3RpbmN0aW9uJ30sXG4gICAgICB7dmFsdWU6ICcwMDEwJywgdGV4dDogJzAwMTAgLSBNZXJpdCd9LFxuICAgICAge3ZhbHVlOiAnMDAxMScsIHRleHQ6ICcwMDExIC0gUGFzcyd9LF
1xuICAgICAge3ZhbHVlOiAnMDAxMicsIHRleHQ6ICcwMDEyIC0gQ29tbWVuZGF0aW9uJ30sXG4gICAgICB7dmFsdWU6ICcwMDEzJywgdGV4dDogJzAwMTMgLSBBd2FyZCBvZiBjcmVkaXQnfSxcbiAgICAgIHt2YWx1ZTogJzk5OTknLCB0ZXh0OiAnOTk5OSAtIE5vdCBhdmFpbGFibGUnfSxcbiAgICBdLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTeXN0ZW0gZ2VuZXJhdGVkJyxcbiAgICAgICAgdmlld1Blcm1pc3Npb246ICdoZXNhOnZpZXcnLFxuICAgICAgICBlZGl0UGVybWlzc2lvbjogJ2hlc2E6ZWRpdCcsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVmVyc2lvbicsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FDb2xsZWdlQ29uZmlnLmhlc2FWZXJzaW9uJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gZ2VuZXJhdGVkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdPV05TVFUnLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnN0dWRlbnRJZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdvd25zdHUnLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTSUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnByb2ZpbGUuaGVzYVN1cnZleS5zaWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnc2lkJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTlVNSFVTJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkubnVtaHVzJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ251bWh1cycsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTU04nLFxuICAgICAgICAgICAgdmFsdWU6ICdkYXRhLnByb2ZpbGUuc3NuJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3NzbicsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm9maWxlJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJbmNsdWRlZCBpbiBIRVNBIFJlcG9ydCcsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+ICFkYXRhLmhlc2FFeGNsdWRlLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaGVzYUluY2x1ZGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnMTInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1N0dWRlbnQgcHJvdmlkZWQnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRk5BTUVTJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZGF0YS5jb250YWN0LmZuYW1lcycsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU1VSTkFNRScsXG4gICAgICAgICAgICB2YWx1ZTogJ2RhdGEuY29udGFjdC5sYXN0TmFtZScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQklSVEhEVEUnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhLCBmaWx0ZXJzKSA9PiBmaWx0ZXJzLmhlc2FEYXRlKGRhdGEucHJvZmlsZT8uZG9iKSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdTdHVkZW50IHByb3ZpZGVkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdOQVRJT04nLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWROYXRpb25hbGl0eScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnU3R1ZGVudCBwcm92aWRlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRVRITklDJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkRXRobmljaXR5SWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnV
1hbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0dFTkRFUklEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkR2VuZGVySWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JFTElHSU9OJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkUmVsaWdpb24nLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NFWElEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkU2V4SWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NFWE9SVCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvcm1hdHRlZFNleE9ydCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU05BTUUxNicsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5zbmFtZTE2LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnV
1hbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RUUENPREUnLFxuICAgICAgICAgICAgLy8gUHJlZmVyIHRoZSBzdXJ2ZXkgYW5zd2VyLiBXaGVuIGl0IGlzIG1pc3NpbmcgYW5kIHRoZSB0dHBjb2RlRmFsbGJhY2tcbiAgICAgICAgICAgIC8vIGNvbmZpZyBmbGFnIGlzIHNldCwgZmFsbCBiYWNrIHRvIHRoZSBjb250YWN0IHJlY29yZCBwb3N0Y29kZSAtIG1pcnJvcmluZ1xuICAgICAgICAgICAgLy8gdGhlIGV4cG9ydCBsb2dpYyBpbiBjZG1zLXNlcnZlciBnZW5lcmF0ZVN0dWRlbnRfVFRQQ09ERS5cbiAgICAgICAgICAgIHZhbHVlKGRhdGEpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VydmV5UG9zdGNvZGUgPSBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8udHRwY29kZTtcbiAgICAgICAgICAgICAgaWYgKHN1cnZleVBvc3Rjb2RlKSByZXR1cm4gc3VydmV5UG9zdGNvZGU7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmhlc2FDb2xsZWdlQ29uZmlnPy50dHBjb2RlRmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5jb250YWN0Py5wb3N0Q29kZSB8fCAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludChkYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnR0cGNvZGUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmhlc2FDb2xsZWdlQ29uZmlnPy50dHBjb2RlRmFsbGJhY2sgJiZcbiAgICAgICAgICAgICAgICBkYXRhLmNvbnRhY3Q/LnBvc3RDb2RlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRmFsbCBiYWNrIHRvIGNvbnRhY3QgcG9zdGNvZGUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnQW5udWFsIHN1cnZleSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0RJU0FCSUxJVFknLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWREaXNhYmlsaXR5JyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpbnQ6ICdBbm51YWwgc3VydmV5JyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNid9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW50cnkgUHJvZmlsZScsXG4gICAgICAgIHZpZXdQZXJtaXNzaW9uOiAnaGVzYTp2aWV3JyxcbiAgICAgICAgZWRpdFBlcm1pc3Npb246ICdoZXNhOmVkaXQnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAvLyB7XG4gICAgICAgICAgLy8gICBsYWJlbDogJ1VwZGF0ZWQgZW50cnkgcHJvZmlsZScsXG4gICAgICAgICAgLy8gICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5lbnRyeVByb2ZpbGVVcGRhdGVkQXQsXG4gICAgICAgICAgLy8gICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAvLyAgIGVkaXRLZXk6ICdlbnRyeVByb2ZpbGVVcGRhdGVkQXQnLFxuICAgICAgICAgIC8vICAgZmllbGRUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgLy8gICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQVBFTENSRCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvcm1hdHRlZEFwZWxDcmQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FjYWRlbWljIHJlY29yZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ1JEUFRTVFUnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRDcmRQVFN0dScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQWNhZGVtaWMgcmVjb3JkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDUkRTQ00nLFxuICAgICAgICAgICAgdmFsdWU6ICgpID0+ICdOb3QgeWV0IGltcGxlbWVudGVkJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgLy8gVE9ETzogdHJ1ZVxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDQVJFTEVBVkVSJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkQ2FyZUxlYXZlcicsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSElHSEVTVFFPRScsXG4gICAgICAgICAgICB2YWx1ZTogKGRhdGEpID0+IGRhdGEucHJvZmlsZS5oZXNhU3VydmV5Py5oaWdoZXN0UU9FLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaGlnaGVzdFFPRScsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEFSRUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRQYXJFZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgI
1HtcbiAgICAgICAgICAgIGxhYmVsOiAnUEVSTUFERENPVU5UUlknLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRQZXJtQWRkQ291bnRyeScsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoaW50OiAnQW5udWFsIHN1cnZleScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEVSTUFERFBPU1RDT0RFJyxcbiAgICAgICAgICAgIHZhbHVlOiAoZGF0YSkgPT4gZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnBlcm1BZGRQb3N0Y29kZSB8fCBkYXRhLmNvbnRhY3Q/LnBvc3RDb2RlLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGludDogJ0FubnVhbCBzdXJ2ZXknLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BSRVZJT1VTUFJPVklERVInLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8ucHJldmlvdXNQcm92aWRlcixcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3ByZXZpb3VzUHJvdmlkZXInLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnbnVtYmVyLXNlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyxcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICh2KSA9PiAhdlxuICAgICAgICAgICAgICAgIHx8IFBSRVZJT1VTX1BST1ZJREVSX0RFRkFVTFRTLnNvbWUoKG8pID0+IG8udmFsdWUgPT09IFN0cmluZyh2KS50cmltKCkpXG4gICAgICAgICAgICAgICAgfHwgL15bMC05XXs4fSQvLnRlc3QoU3RyaW5nKHYpLnRyaW0oKSlcbiAgICAgICAgICAgICAgICB8fCAnTXVzdCBiZSBleGFjdGx5IDggZGlnaXRzIG9yIG9uZSBvZiB0aGUgbGlzdGVkIG9wdGlvbnMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGhpbnQ6ICdBbm51YWwgc3VydmV5JyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJbmNsdWRlIENyZWRpdHMnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8uaW5jbHVkZUNSRFBUU1RVID8/IHRydWUsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdpbmNsdWRlQ1JEUFRTVFUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIG5ld1JvdzogdHJ1ZSxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFeGNsdWRlIEVudHJ5IFByb2ZpbGUnLFxuICAgICAgICAgICAgdmFsdWU6IChkYXRhKSA9PiBkYXRhLnByb2ZpbGUuaGVzYVN1cnZleT8uZXhjbHVkZUVudHJ5UHJvZmlsZSA/PyBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ2V4Y2x1ZGVFbnRyeVByb2ZpbGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdGb3JjZSBFbnRyeSBQcm9maWxlJyxcbiAgICAgICAgICAgIGhpbnQ6ICdSZXR1cm4gdGhlIEVudHJ5IFByb2ZpbGUgZm9yIGFuIGVuZ2FnZW1lbnQgdGhhdCBzdGFydGVkIGluIGFuIGVhcmxpZXIgcmVwb3J0aW5nIHBlcmlvZCwgdG8gY29ycmVjdCBkYXRhIGFscmVhZHkgc3VibWl0dGVkJyxcbiAgICAgICAgICAgIHZhbHVlOiAoZGF0YSkgPT4gZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LmZvcmNlRW50cnlQcm9maWxlID8/IGZhbHNlLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnZm9yY2VFbnRyeVByb2ZpbGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW50cnkgUXVhbGlmaWNhdGlvbnMnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXSwgLy8gVGhpcyBzZWN0aW9uIHVzZXMgYSBjdXN0b20gY29tcG9uZW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRmluYW5jaWFsIFN1cHBvcnQnLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXSwgLy8gVGhpcyBzZWN0aW9uIHVzZXMgYSBjdXN0b20gY29tcG9uZW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnRW5nYWdlbWVudCBMZWF2ZXInLFxuICAgICAgICB2aWV3UGVybWlzc2lvbjogJ2hlc2E6dmlldycsXG4gICAgICAgIGVkaXRQZXJtaXNzaW9uOiAnaGVzYTplZGl0JyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFTkdFTkREQVRFJyxcbiAgICAgICAgICAgIHZhbHVlOiAnY3VycmVudEVuZ2FnZW1lbnQuZW5kRGF0ZScsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdlbmdFbmREYXRlJyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJTlRFTkRFRERFU1RJTkFUSU9OJyxcbiAgICAgICAgICAgI
1HZhbHVlOiAoKSA9PiAnTm90IHlldCBpbXBsZW1lbnRlZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIC8vIFRPRE86IHRydWVcbiAgICAgICAgICAgIC8vIGVkaXRLZXk6ICdpbnRlbmRlZERlc3RpbmF0aW9uJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUlNORU5HRU5EJyxcbiAgICAgICAgICAgIHZhbHVlOiAnY3VycmVudEVuZ2FnZW1lbnQuaGVzYVJzbkVuZ0VuZCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdyc25FbmdFbmQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IFtcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDEnLCB0ZXh0OiAnMDEgLSBMZWZ0IGFuZCBhd2FyZGVkIGNyZWRpdCBvciBhIHF1YWxpZmljYXRpb24nfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDMnLCB0ZXh0OiAnMDMgLSBUcmFuc2ZlcnJlZCB0byBhbm90aGVyIHByb3ZpZGVyJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzA1JywgdGV4dDogJzA1IC0gRGVhdGgnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMTEnLCB0ZXh0OiAnMTEgLSBPdGhlciAobGVmdCBidXQgd2l0aG91dCBiZWluZyBhd2FyZGVkIGNyZWRpdCBvciBhIHF1YWxpZmljYXRpb24pJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzEyJywgdGV4dDogJzEyIC0gVHJhbnNmZXJyZWQgb3V0IGFzIHBhcnQgb2YgY29sbGFib3JhdGl2ZSBzdXBlcnZpc2lvbiBhcnJhbmdlbWVudHMnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnOTgnLCB0ZXh0OiAnOTggLSBMZWZ0IGJ1dCBhd2FyZCBvZiBjcmVkaXQgb3IgYSBxdWFsaWZpY2F0aW9uIG5vdCB5ZXQga25vd24nfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoaW50OiAnU3lzdGVtIG1hbmFnZWQnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1FVQUxBV0FSRElEJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9ybWF0dGVkUXVhbEF3YXJkSWQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAncXVhbEF3YXJkSWQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IFtdLFxuICAgICAgICAgICAgaGludDogJ1N5c3RlbSBtYW5hZ2VkJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdRVUFMQVdBUkRSRVNVTFQnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb3JtYXR0ZWRRdWFsQXdhcmRSZXN1bHQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAncXVhbEF3YXJkUmVzdWx0JyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBbXSxcbiAgICAgICAgICAgIGhpbnQ6ICdTeXN0ZW0gbWFuYWdlZCcsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ09wdGlvbmFsIE92ZXJyaWRlcycsXG4gICAgICAgIHZpZXdQZXJtaXNzaW9uOiAnaGVzYTp2aWV3JyxcbiAgICAgICAgZWRpdFBlcm1pc3Npb246ICdoZXNhOmVkaXQnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JQU1RVTE9BRCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FSZWxldmFudFNlc3Npb24uaGVzYVJQU1RVTE9BRCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdycHN0dWxvYWQnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGxvYWQgZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSU5WT0lDRUZFRUFNT1VOVCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2hlc2FSZWxldmFudFNlc3Npb24uaGVzYUlOVk9JQ0VGRUVBTU9VTlQnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnaW52b2ljZWZlZWFtb3VudCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1Nlc3Npb24gZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0NTRkVFQU1PVU5UJyxcbiAgICAgICAgICAgIHZhbHVlOiAnaGVzYVJlbGV2YW50U2Vzc2lvbi5oZXNhU0NTRkVFQU1PVU5UJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3Njc2ZlZWFtb3VudCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgaGludDogJ1Nlc3Npb24gZGF0YScsXG4gICAgICAgICAgICBjb2xzOiB7Y29sczogJzYnLCBtZDogJzInfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0NTRVNTSU9OSUQnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FTQ1NFU1NJT05JRCcsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdzY3Nlc3Npb25pZCcsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGRhdGEnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NDU01PREUnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FTQ1NNT0RFJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ3Njc21vZGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgI
1HNlbGVjdE9wdGlvbnM6IFtcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDEnLCB0ZXh0OiAnMDEgLSBGdWxsLXRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDInLCB0ZXh0OiAnMDIgLSBPdGhlciBmdWxsIHRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDMnLCB0ZXh0OiAnMDMgLSBBY2NlbGVyYXRlZCBmdWxsIHRpbWUnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMzEnLCB0ZXh0OiAnMzEgLSBQYXJ0LXRpbWUnfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoaW50OiAnU2Vzc2lvbiBkYXRhJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdQcmV2aW91cyBTQ1MnLFxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5wcmV2aW91c1NDUyA/ICdQcmV2aW91cyBTQ1MgZGF0YScgOiAnTm8gY29udGVudCc7IH0sXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVkaXRLZXk6ICdwcmV2aW91c3NjcycsXG4gICAgICAgICAgICBmaWVsZFR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICBoaW50OiAnUHJldmlvdXMgcmV0dXJuJyxcbiAgICAgICAgICAgIGNvbHM6IHtjb2xzOiAnNicsIG1kOiAnMid9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFTFEnLFxuICAgICAgICAgICAgdmFsdWU6ICdoZXNhUmVsZXZhbnRTZXNzaW9uLmhlc2FFTFEnLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlZGl0S2V5OiAnZWxxJyxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBbXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzAxJywgdGV4dDogJzAxIC0gTm9uLWV4ZW1wdCBFTFEnfSxcbiAgICAgICAgICAgICAge3ZhbHVlOiAnMDInLCB0ZXh0OiAnMDIgLSBFeGVtcHQgRUxRJ30sXG4gICAgICAgICAgICAgIHt2YWx1ZTogJzAzJywgdGV4dDogJzAzIC0gTm90IEVMUSd9LFxuICAgICAgICAgICAgICB7dmFsdWU6ICcwOScsIHRleHQ6ICcwOSAtIE5vdCByZXF1aXJlZCd9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGhpbnQ6ICdTZXNzaW9uIGRhdGEnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0V4cGVjdGVkIEVuZ2FnZW1lbnQgRW5kIERhdGUnLFxuICAgICAgICAgICAgdmFsdWU6ICdjdXJyZW50RW5nYWdlbWVudC5oZXNhRW5nRXhwZWN0ZWRFbmREYXRlJyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZWRpdEtleTogJ2hlc2FFbmdFeHBlY3RlZEVuZERhdGUnLFxuICAgICAgICAgICAgZmllbGRUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgICBoaW50OiAnRXhwZWN0ZWQgZW5kIGRhdGUgZm9yIGVuZ2FnZW1lbnQnLFxuICAgICAgICAgICAgY29sczoge2NvbHM6ICc2JywgbWQ6ICcyJ30sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBoZXNhU3VydmV5OiB7fSxcbiAgICBoZXNhQ29kZXM6IHt9LFxuICAgIGhlc2FQcm9ncmFtbWVzOiBbXSxcbiAgICBlZGl0RGlhbG9nOiBmYWxzZSxcbiAgICBlZGl0Rm9ybVZhbGlkOiBmYWxzZSxcbiAgICBjdXJyZW50RWRpdFNlY3Rpb246IG51bGwsXG4gICAgZWRpdEZvcm1EYXRhOiB7fSxcbiAgfSksXG4gIGNvbXB1dGVkOiB7XG4gICAgaGVzYVRpdGxlKCkge1xuICAgICAgaWYgKCF0aGlzLmhlc2FDb2xsZWdlQ29uZmlnLmhlc2FSZXBvcnRpbmdZZWFyKSB7XG4gICAgICAgIHJldHVybiAnSEVTQSBEYXRhJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWcuaGVzYVJlcG9ydGluZ1llYXI7XG4gICAgICBjb25zdCBlbmRZZWFyID0gc3RhcnRZZWFyICsgMTtcbiAgICAgIGNvbnN0IGVuZFllYXJTaG9ydCA9IFN0cmluZyhlbmRZZWFyKS5zbGljZSgtMik7XG4gICAgICByZXR1cm4gYEhFU0EgRGF0YSBmb3IgJHtzdGFydFllYXJ9LSR7ZW5kWWVhclNob3J0fWA7XG4gICAgfSxcbiAgICB2aXNpYmxlU2VjdGlvbnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWN0aW9ucy5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1ZpZXdQZXJtaXNzaW9uKHNlY3Rpb24udmlld1Blcm1pc3Npb24pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uLnZpc2libGUgJiYgdHlwZW9mIHNlY3Rpb24udmlzaWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBzZWN0aW9uLnZpc2libGUodGhpcy5kYXRhLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY3VycmVudEVkaXRhYmxlRmllbGRzKCkge1xuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRFZGl0U2VjdGlvbikgcmV0dXJuIFtdO1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEVkaXRTZWN0aW9uLmZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5lZGl0YWJsZSkubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ3F1YWxBd2FyZElkJykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IHRoaXMuaGVzYVByb2dyYW1tZXMubWFwKChwKSA9PiAoe1xuICAgICAgICAgICAgICB2YWx1ZTogcC5xdWFsaWQsXG4gICAgICAgICAgICAgIHRleHQ6IGAke3AucXVhbGlkfSAtICR7cC50aXRsZX1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdxdWFsQXdhcmRSZXN1bHQnKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgc2VsZWN0T3B0aW9uczogdGhpcy5xdWFsQXdhcmRSZXN1bHRPcHRpb25zLFxuICAgICAgICAgI
1H07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBlZGl0RGlhbG9nVGl0bGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RWRpdFNlY3Rpb25cbiAgICAgICAgPyBgRWRpdCAke3RoaXMuY3VycmVudEVkaXRTZWN0aW9uLm5hbWV9YFxuICAgICAgICA6ICdFZGl0IEhFU0EgZmllbGRzJztcbiAgICB9LFxuICAgIGZvcm1hdHRlZEFwZWxDcmQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RW5nYWdlbWVudC5pbmNvbWluZ0NyZWRpdHM/LmZpbmQoKGNyZWRpdCkgPT4gY3JlZGl0LnR5cGUgPT09ICdBUEVMJylcbiAgICAgICAgPyAnMDEnXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkQ3JkUFRTdHUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RW5nYWdlbWVudC5pbmNvbWluZ0NyZWRpdHM/LnJlZHVjZSgodG90YWwsIGNyZWRpdCkgPT4gdG90YWwgKyAoY3JlZGl0LmNyZWRpdHMgfHwgMCksIDApIHx8IHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGZvcm1hdHRlZEdlbmRlcklkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdnZW5kZXJJZCcsICdTdHVkZW50X0dFTkRFUklEJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRFdGhuaWNpdHlJZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgnZXRobmljaXR5SWQnLCAnU3R1ZGVudF9FVEhOSUMnKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZE5hdGlvbmFsaXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCduYXRpb25hbGl0eScsICdTdHVkZW50X05BVElPTicpO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkUmVsaWdpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRIZXNhRmllbGQoJ3JlbGlnaW9uJywgJ1N0dWRlbnRfUkVMSUdJT04nKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZFNleE9ydCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgnc2V4T3J0JywgJ1N0dWRlbnRfU0VYT1JUJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRDYXJlTGVhdmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdjYXJlTGVhdmVyJywgJ0VudHJ5UHJvZmlsZV9DQVJFTEVBVkVSJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRQYXJFZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgncGFyRWQnLCAnRW50cnlQcm9maWxlX1BBUkVEJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRQZXJtQWRkQ291bnRyeSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEhlc2FGaWVsZCgncGVybUFkZENvdW50cnknLCAnRW50cnlQcm9maWxlX1BFUk1BRERDT1VOVFJZJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRIaWdoZXN0UU9FKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdoaWdoZXN0UU9FJywgJ0VudHJ5UHJvZmlsZV9ISUdIRVNUUU9FJyk7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRGdW5kaW5nQm9keUlkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SGVzYUZpZWxkKCdmdW5kaW5nQm9keUlkJywgJ1N0dWRlbnRfRlVORENPTVAnKTtcbiAgICB9LFxuICAgIGZvcm1hdHRlZERpc2FiaWxpdHkoKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkuZGlzYWJpbGl0eSB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5LmRpc2FiaWxpdHkpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29kZU9iaiA9IHRoaXMuaGVzYUNvZGVzWydEaXNhYmlsaXR5X0RJU0FCSUxJVFknXTtcbiAgICAgIGlmICghY29kZU9iaiB8fCAhY29kZU9iai5jb2RlcykgcmV0dXJuIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkuZGlzYWJpbGl0eS5qb2luKCcsICcpO1xuXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleS5kaXNhYmlsaXR5XG4gICAgICAgIC5tYXAoKGNvZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IE9iamVjdC5rZXlzKGNvZGVPYmouY29kZXMpLmZpbmQoKGtleSkgPT4gY29kZU9iai5jb2Rlc1trZXldID09PSBjb2RlKTtcbiAgICAgICAgICByZXR1cm4gbGFiZWwgPyBgJHtjb2RlfSAtICR7bGFiZWx9YCA6IGNvZGU7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgIH0sXG4gICAgZm9ybWF0dGVkU2V4SWQoKSB7XG4gICAgICAvLyBUaGUgcmV0dXJuIHJlc29sdmVzIFNFWElEIGZyb20gdGhlIHN1cnZleSBhbnN3ZXIgZmlyc3QgYW5kIHRoZSBwcm9maWxlXG4gICAgICAvLyBzZWNvbmQsIHNvIHRoaXMgaGFzIHRvIHNob3cgdGhlIHNhbWUgc291cmNlIOKAlCBvdGhlcndpc2UgYSBzdHVkZW50IHdob1xuICAgICAgLy8gYW5zd2VyZWQgb25seSBpbiB0aGUgc3VydmV5IHJlYWRzIGFzIGJsYW5rIGhlcmUgd2hpbGUgdGhlIFhNTCBjYXJyaWVzXG4gICAgICAvLyB0aGVpciBjb2RlLlxuICAgICAgY29uc3Qgc3VydmV5Q29kZSA9IHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LnNleElkO1xuICAgICAgaWYgKHN1cnZleUNvZGUgJiYgc3VydmV5Q29kZSAhPT0gJzk5Jykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRIZXNhRmllbGQoJ3NleElkJywgJ1N0dWRlbnRfU0VYSUQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLnBhcnNlSGVzYUZpZWxkKHRoaXMuZGF0YS5wcm9maWxlLnNleCwgJ1N0dWRlbnRfU0VYSUQnKTtcbiAgICAgIHJldHVybiBjb2RlID8gYCR7Y29kZX0gLSAke3RoaXMuZGF0YS5wcm9maWxlLnNleH1gIDogdGhpcy5kYXRhLnByb2ZpbGUuc2V4O1xuICAgIH0sXG4gICAgZm9ybWF0dGVkUXVhbEF3YXJkSWQoKSB7XG4gICAgICBjb25zdCBxdWFsaWQgPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkSWQ7XG4gICAgICBpZiAoIXF1YWxpZCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgcHJvZ3JhbW1lID0gdGhpcy5oZXNhUHJvZ3JhbW1lcy5maW5kKChwKSA9PiBwLnF1YWxpZCA9PT0gcXVhbGlkKTtcbiAgICAgIHJldHVybi
1Bwcm9ncmFtbWUgPyBgJHtxdWFsaWR9IC0gJHtwcm9ncmFtbWUudGl0bGV9YCA6IHF1YWxpZDtcbiAgICB9LFxuICAgIGZvcm1hdHRlZFF1YWxBd2FyZFJlc3VsdCgpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkUmVzdWx0O1xuICAgICAgaWYgKCFjb2RlKSByZXR1cm4gJyc7XG4gICAgICBjb25zdCBwYWRkZWRDb2RlID0gU3RyaW5nKGNvZGUpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLnF1YWxBd2FyZFJlc3VsdE9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHBhZGRlZENvZGUpO1xuICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi50ZXh0IDogcGFkZGVkQ29kZTtcbiAgICB9LFxuICAgIGFjdGl2ZUVuZ2FnZW1lbnRJbmRleCgpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhLmVuZ2FnZW1lbnRzIHx8IHRoaXMuZGF0YS5lbmdhZ2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5oZXNhQ29sbGVnZUNvbmZpZy5oZXNhUmVwb3J0aW5nWWVhcikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2hlc2FSZXBvcnRpbmdZZWFyfSA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWc7XG4gICAgICBjb25zdCBhY2FkZW1pY1llYXJTdGFydCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyLCA4LCAxKTtcbiAgICAgIGNvbnN0IGFjYWRlbWljWWVhckVuZCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyICsgMSwgNywgMzEpO1xuXG4gICAgICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIGVuZ2FnZW1lbnRzIHRvIGZpbmQgdGhlIGZpcnN0IG9uZSB3aXRoIHZhbGlkIHNlc3Npb25zXG4gICAgICBjb25zdCB2YWxpZFNlc3Npb25Db3VudHMgPSB0aGlzLmRhdGEuZW5nYWdlbWVudHMubWFwKChlbmdhZ2VtZW50KSA9PiB7XG4gICAgICAgIGlmICghZW5nYWdlbWVudC5wYXJ0bmVySWQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsaWRTZXNzaW9ucyA9IGVuZ2FnZW1lbnQuc2Vzc2lvbnM/LmZpbHRlcigoc2Vzc2lvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25TdGFydCA9IG5ldyBEYXRlKHNlc3Npb24uc3RhcnREYXRlKTtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRW5kID0gc2Vzc2lvbi5lbmREYXRlID8gbmV3IERhdGUoc2Vzc2lvbi5lbmREYXRlKSA6IG51bGw7XG4gICAgICAgICAgLy8gU2Vzc2lvbiBtdXN0IHN0YXJ0IE9SIGVuZCB3aXRoaW4gdGhlIGFjYWRlbWljIHllYXJcbiAgICAgICAgICBjb25zdCBzZXNzaW9uU3RhcnRzSW5ZZWFyID0gc2Vzc2lvblN0YXJ0ID49IGFjYWRlbWljWWVhclN0YXJ0ICYmIHNlc3Npb25TdGFydCA8IGFjYWRlbWljWWVhckVuZDtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRW5kc0luWWVhciA9IHNlc3Npb25FbmQgJiYgc2Vzc2lvbkVuZCA+PSBhY2FkZW1pY1llYXJTdGFydCAmJiBzZXNzaW9uRW5kIDwgYWNhZGVtaWNZZWFyRW5kO1xuICAgICAgICAgIHJldHVybiBzZXNzaW9uU3RhcnRzSW5ZZWFyIHx8IHNlc3Npb25FbmRzSW5ZZWFyO1xuICAgICAgICB9KSB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHZhbGlkU2Vzc2lvbnMubGVuZ3RoO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGVuZ2FnZW1lbnQgd2l0aCB2YWxpZCBzZXNzaW9uc1xuICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB2YWxpZFNlc3Npb25Db3VudHMuZmluZEluZGV4KChjb3VudCkgPT4gY291bnQgPiAwKTtcblxuICAgICAgLy8gUmV0dXJuIHRoZSBmb3VuZCBpbmRleCwgb3IgZGVmYXVsdCB0byAwIGlmIG5vIHZhbGlkIHNlc3Npb25zIGZvdW5kXG4gICAgICByZXR1cm4gYWN0aXZlSW5kZXggIT09IC0xID8gYWN0aXZlSW5kZXggOiAwO1xuICAgIH0sXG4gICAgY3VycmVudEVuZ2FnZW1lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmVuZ2FnZW1lbnRzPy5bdGhpcy5hY3RpdmVFbmdhZ2VtZW50SW5kZXhdIHx8IHt9O1xuICAgIH0sXG4gICAgY3VycmVudFNlc3Npb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmVuZ2FnZW1lbnRzPy5bdGhpcy5hY3RpdmVFbmdhZ2VtZW50SW5kZXhdPy5zZXNzaW9ucz8uWzBdIHx8IHt9O1xuICAgIH0sXG4gICAgaGVzYVJlbGV2YW50U2Vzc2lvbigpIHtcbiAgICAgIC8vIEZpbmQgdGhlIHNlc3Npb24gdGhhdCBpcyByZWxldmFudCBmb3IgSEVTQSByZXBvcnRpbmcgYmFzZWQgb24gaGVzYVJlcG9ydGluZ1llYXJcbiAgICAgIGlmICghdGhpcy5oZXNhQ29sbGVnZUNvbmZpZy5oZXNhUmVwb3J0aW5nWWVhciB8fCAhdGhpcy5jdXJyZW50RW5nYWdlbWVudC5zZXNzaW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2hlc2FSZXBvcnRpbmdZZWFyfSA9IHRoaXMuaGVzYUNvbGxlZ2VDb25maWc7XG4gICAgICBjb25zdCBhY2FkZW1pY1llYXJTdGFydCA9IG5ldyBEYXRlKGhlc2FSZXBvcnRpbmdZZWFyLCA4LCAxKTsgLy8gU2VwdGVtYmVyIDFzdFxuICAgICAgY29uc3QgYWNhZGVtaWNZZWFyRW5kID0gbmV3IERhdGUoaGVzYVJlcG9ydGluZ1llYXIgKyAxLCA3LCAzMSk7IC8vIEp1bHkgMzFzdCBuZXh0IHllYXJcblxuICAgICAgLy8gRmluZCBzZXNzaW9ucyB0aGF0IHN0YXJ0IHdpdGhpbiB0aGUgSEVTQSByZXBvcnRpbmcgYWNhZGVtaWMgeWVhclxuICAgICAgY29uc3QgcmVsZXZhbnRTZXNzaW9ucyA9IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuc2Vzc2lvbnMuZmlsdGVyKChzZXNzaW9uKSA9PiB7XG4gICAgICAgIGlmICghc2Vzc2lvbi5zdGFydERhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblN0YXJ0ID0gbmV3IERhdGUoc2Vzc2lvbi5zdGFydERhdGUpO1xuICAgICAgICByZXR1cm4gc2Vzc2lvblN0YXJ0ID49IGFjYWRlbWljWWVhclN0YXJ0ICYmIHNlc3Npb25TdGFydCA8PSBhY2FkZW1pY1llYXJFbmQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCByZWxldmFudCBzZXNzaW9uLCBvciBmYWxsIGJhY2sgdG8gY3VycmVudFNlc3Npb25cbiAgICAgIHJldHVybi
1ByZWxldmFudFNlc3Npb25zWzBdIHx8IHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgfSxcbiAgICBoZXNhRmluU3VwUmVjb3JkcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FGaW5TdXAgfHwgW107XG4gICAgfSxcbiAgICBlbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXk/LmVudHJ5UXVhbGlmaWNhdGlvbkF3YXJkIHx8IFtdO1xuICAgIH0sXG4gIH0sXG4gIGFzeW5jIGNyZWF0ZWQoKSB7XG4gICAgY29uc3Qge2RhdGE6IGNvbGxlZ2VDb25maWd9ID0gYXdhaXQgU3lzdGVtRGF0YVNlcnZpY2UuZ2V0RGF0YUJ5TmFtZSgnaGVzYUNvbGxlZ2VDb25maWcnKTtcbiAgICB0aGlzLmhlc2FDb2xsZWdlQ29uZmlnID0gY29sbGVnZUNvbmZpZztcblxuICAgIHRoaXMuZGF0YS5wcm9maWxlLmhlc2FTdXJ2ZXkgPSB0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5IHx8IHt9O1xuXG4gICAgLy8gRmV0Y2ggYWxsIHJlbGV2YW50IEhFU0EgY29kZXMgYW5kIHByb2dyYW1tZXNcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmxvYWRIZXNhQ29kZXMoKSxcbiAgICAgIHRoaXMubG9hZEhlc2FQcm9ncmFtbWVzKCksXG4gICAgXSk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgZWRpdERpYWxvZyhuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgJiYgdGhpcy5jdXJyZW50RWRpdFNlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRWRpdEZvcm1EYXRhKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGFzeW5jIGxvYWRIZXNhQ29kZXMoKSB7XG4gICAgICBjb25zdCBjb2RlVHlwZXMgPSBbXG4gICAgICAgICdTdHVkZW50X05BVElPTicsXG4gICAgICAgICdTdHVkZW50X0dFTkRFUklEJyxcbiAgICAgICAgJ1N0dWRlbnRfRVRITklDJyxcbiAgICAgICAgJ0VudHJ5UHJvZmlsZV9QRVJNQUREQ09VTlRSWScsXG4gICAgICAgICdTdHVkZW50X1JFTElHSU9OJyxcbiAgICAgICAgJ1N0dWRlbnRfU0VYT1JUJyxcbiAgICAgICAgJ1N0dWRlbnRfU0VYSUQnLFxuICAgICAgICAnRW50cnlQcm9maWxlX0NBUkVMRUFWRVInLFxuICAgICAgICAnRW50cnlQcm9maWxlX1BBUkVEJyxcbiAgICAgICAgJ0VudHJ5UHJvZmlsZV9ISUdIRVNUUU9FJyxcbiAgICAgICAgLy8gJ1N0dWRlbnRfRlVORENPTVAnLFxuICAgICAgICAnRGlzYWJpbGl0eV9ESVNBQklMSVRZJyxcbiAgICAgIF07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IEhlc2FDb2Rlc1NlcnZpY2UuZ2V0TXVsdGlwbGVDb2Rlcyhjb2RlVHlwZXMpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLm5vdEZvdW5kKSAmJiBkYXRhLm5vdEZvdW5kLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0hFU0EgY29kZXMgbm90IGZvdW5kOicsIGRhdGEubm90Rm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBidWxrIGVuZHBvaW50IHJldHVybnMgZWFjaCB0YWJsZSBhcyBhIGJhcmUgY29kZSBtYXAsIHdoaWxlIHRoZVxuICAgICAgICAvLyBzaW5nbGUtZmllbGQgb25lIHdyYXBzIGl0IGFzIHtmaWVsZCwgY29kZXN9LiBFdmVyeSBhY2Nlc3NvciBiZWxvd1xuICAgICAgICAvLyBleHBlY3RzIHRoZSB3cmFwcGVkIGZvcm0sIHNvIG5vcm1hbGlzZSBvbiB0aGUgd2F5IGluIOKAlCBvdGhlcndpc2VcbiAgICAgICAgLy8gZWFjaCBsb29rdXAgZmFpbHMgaXRzIGBjb2RlT2JqLmNvZGVzYCBndWFyZCBhbmQgZmFsbHMgYmFjayB0byB0aGVcbiAgICAgICAgLy8gcmF3IHZhbHVlLCBsZWF2aW5nIHNleCBhcyBhIGxhYmVsIHdpdGggbm8gY29kZSBhbmQgdGhlIHN1cnZleVxuICAgICAgICAvLyBmaWVsZHMgYXMgY29kZXMgd2l0aCBubyBsYWJlbC5cbiAgICAgICAgdGhpcy4kc2V0KHRoaXMsICdoZXNhQ29kZXMnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVud
1HJpZXMoZGF0YS5kYXRhKS5tYXAoKFtmaWVsZCwgY29kZXNdKSA9PiBbZmllbGQsIHtjb2Rlc31dKSxcbiAgICAgICAgKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nIEhFU0EgY29kZXMgZm9yICR7Y29kZVR5cGV9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgbG9hZEhlc2FQcm9ncmFtbWVzKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgUHJvZ3JhbW1lc1YyU2VydmljZS5nZXRMaXN0KHtoZXNhOiB0cnVlfSk7XG4gICAgICAgIHRoaXMuaGVzYVByb2dyYW1tZXMgPSBkYXRhLmZpbHRlcigocCkgPT4gcC5xdWFsaWQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBIRVNBIHByb2dyYW1tZXM6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBmb3JtYXRIZXNhRmllbGQoZmllbGROYW1lLCBjb2RlVHlwZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5W2ZpZWxkTmFtZV07XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG5cbiAgICAgIGNvbnN0IGNvZGVPYmogPSB0aGlzLmhlc2FDb2Rlc1tjb2RlVHlwZV07XG4gICAgICBpZiAoIWNvZGVPYmogfHwgIWNvZGVPYmouY29kZXMpIHJldHVybiB2YWx1ZTtcblxuICAgICAgLy8gRmluZCB0aGUgbGFiZWwgZm9yIHRoZSBjb2RlIHZhbHVlXG4gICAgICBjb25zdCBsYWJlbCA9IE9iamVjdC5rZXlzKGNvZGVPYmouY29kZXMpLmZpbmQoKGtleSkgPT4gY29kZU9iai5jb2Rlc1trZXldID09PSB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiBsYWJlbCA/IGAke3ZhbHVlfSAtICR7bGFiZWx9YCA6IHZhbHVlO1xuICAgIH0sXG5cbiAgICBwYXJzZUhlc2FGaWVsZChsYWJlbFRleHQsIGNvZGVUeXBlKSB7XG4gICAgICBpZiAoIWxhYmVsVGV4dCB8fCB0eXBlb2YgbGFiZWxUZXh0ICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IGNvZGVPYmogPSB0aGlzLmhlc2FDb2Rlc1tjb2RlVHlwZV07XG4gICAgICBpZiAoIWNvZGVPYmogfHwgIWNvZGVPYmouY29kZXMpIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBGaW5kIHRoZSBjb2RlIGZvciB0aGUgZ2l2ZW4gbGFiZWxcbiAgICAgIGNvbnN0IGVudHJ5ID0gT2JqZWN0LmVud
1HJpZXMoY29kZU9iai5jb2RlcykuZmluZChcbiAgICAgICAgKFtsYWJlbF0pID0+IGxhYmVsLnRvTG93ZXJDYXNlKCkgPT09IGxhYmVsVGV4dC50b0xvd2VyQ2FzZSgpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5WzFdIDogbnVsbDtcbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlRW5nYWdlbWVudEZpZWxkKGZpZWxkTmFtZSwgdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFN0dWRlbnRzU2VydmljZS5wYXRjaEVuZ2FnZW1lbnQoXG4gICAgICAgICAgdGhpcy5kYXRhLl9pZCxcbiAgICAgICAgICAnZW5nYWdlbWVudHMnLFxuICAgICAgICAgIHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuX2lkLFxuICAgICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHVwZGF0aW5nIGVuZ2FnZW1lbnQgZmllbGQgJHtmaWVsZE5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7IC8vIFJlLXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHNhdmUgbWV0aG9kXG4gICAgICB9XG4gICAgfSxcblxuICAgIGhhc1ZpZXdQZXJtaXNzaW9uKHBlcm1pc3Npb24pIHtcbiAgICAgIHJldHVybiAhcGVybWlzc2lvbiB8fCB0aGlzLiRoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgIH0sXG5cbiAgICBoYXNFZGl0UGVybWlzc2lvbihwZXJtaXNzaW9uKSB7XG4gICAgICByZXR1cm4gIXBlcm1pc3Npb24gfHwgdGhpcy4kaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKTtcbiAgICB9LFxuXG4gICAgZ2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZmllbGQudmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEsIHRoaXMuJGZpbHRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEhhbmRsZSBkb3Qgbm90YXRpb24gZm9yIG5lc3RlZCBwcm9wZXJ0aWVzXG4gICAgICAgIC8vIFRoaXMgYXNzdW1lcyBubyBvcHRpb25hbCBjaGFpbmluZyBpbiB0aGUgc3RyaW5nIC0gdXNlIGZ1bmN0aW9ucyBmb3IgY29tcGxleCBhY2Nlc3MgcGF0dGVybnNcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZmllbGQudmFsdWUuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG9ialtrZXldO1xuICAgICAgICAgIH0sIHRoaXMpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3IgYWNjZXNzaW5nIGZpZWxkIHZhbHVlIFwiJHtmaWVsZC52YWx1ZX1cIjpgLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZTtcbiAgICB9LFxuXG4gICAgZ2V0RmllbGRIaW50KGZpZWxkKSB7XG4gICAgICBpZiAodHlwZW9mIGZpZWxkLmhpbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLmhpbnQuY2FsbCh0aGlzLCB0aGlzLmRhdGEsIHRoaXMuJGZpbHRlcnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkLmhpbnQ7XG4gICAgfSxcblxuICAgIHNlY3Rpb25IYXNFZGl0YWJsZUZpZWxkcyhzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC5lZGl0YWJsZSk7XG4gICAgfSxcblxuICAgIGNhbkVkaXRTZWN0aW9uKHNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmVkaXRQZXJtaXNzaW9uICYmXG4gICAgICAgICAgdGhpcy5oYXNFZGl0UGVybWlzc2lvbihzZWN0aW9uLmVkaXRQZXJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VjdGlvbkhhc0VkaXRhYmxlRmllbGRzKHNlY3Rpb24pO1xuICAgIH0sXG5cbiAgICBvcGVuRWRpdERpYWxvZyhzZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFZGl0U2VjdGlvbiA9IHNlY3Rpb247XG4gICAgICB0aGlzLmVkaXREaWFsb2cgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBpbml0aWFsaXplRWRpdEZvcm1EYXRhKCkge1xuICAgICAgY29uc3QgZm9ybURhdGEgPSB7fTtcblxuICAgICAgdGhpcy5jdXJyZW50RWRpdGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLmVkaXRLZXkpIHtcbiAgICAgICAgICBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2hlc2FJbmNsdWRlJykge1xuICAgICAgICAgICAgLy8gRm9yIHRoZSBpbnZlcnRlZCBpbmNsdWRlIGZpZWxkLCBnZXQgdGhlIGJvb2xlYW4gdmFsdWVcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5nZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdxdWFsQXdhcmRJZCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBxdWFsQXdhcmRJZCwgZ2V0IHRoZSByYXcgdmFsdWUgZGlyZWN0bHlcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZElkIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ3F1YWxBd2FyZFJlc3VsdCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBxdWFsQXdhcmRSZXN1bHQsIGdldCB0aGUgcmF3IHZhbHVlIGFuZCBwYWQgaXRcbiAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZFJlc3VsdDtcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gcmF3VmFsdWUgPyBTdHJpbmcocmF3VmFsdWUpLnBhZFN0YXJ0KDQsICcwJykgOiAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdyc25FbmdFbmQnKSB7XG4gICAgICAgICAgICAvLyBGb3IgcnNuRW5nRW5kLCBnZXQgdGhlIHJhdyB2YWx1ZSBkaXJlY3RseVxuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUnNuRW5nRW5kIHx8ICcnO1xuICAgICAgICAgI
1H0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2VuZ0VuZERhdGUnKSB7XG4gICAgICAgICAgICAvLyBGb3IgZW5nRW5kRGF0ZSwgZ2V0IHRoZSByYXcgdmFsdWUgZGlyZWN0bHlcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uZW5kRGF0ZSB8fCAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdoZXNhRW5nRXhwZWN0ZWRFbmREYXRlJykge1xuICAgICAgICAgICAgLy8gRm9yIGhlc2FFbmdFeHBlY3RlZEVuZERhdGUsIGdldCB0aGUgcmF3IHZhbHVlIGRpcmVjdGx5XG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQ/Lmhlc2FFbmdFeHBlY3RlZEVuZERhdGUgfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0S2V5ID09PSAncnBzdHVsb2FkJyB8fCBmaWVsZC5lZGl0S2V5ID09PSAnaW52b2ljZWZlZWFtb3VudCcgfHwgZmllbGQuZWRpdEtleSA9PT0gJ3Njc2ZlZWFtb3VudCcpIHtcbiAgICAgICAgICAgIC8vIEZvciBzZXNzaW9uIGZpZWxkcywgZ2V0IHZhbHVlcyBmcm9tIGhlc2FSZWxldmFudFNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRLZXkgPT09ICdzY3Nlc3Npb25pZCcgfHwgZmllbGQuZWRpdEtleSA9PT0gJ3ByZXZpb3Vzc2NzJykge1xuICAgICAgICAgICAgLy8gRm9yIHNlc3Npb24gdGV4dCBmaWVsZHMsIGdldCB0aGUgdGV4dCB2YWx1ZSBmcm9tIGhlc2FSZWxldmFudFNlc3Npb25cbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5bZmllbGQuZWRpdEtleSA9PT0gJ3Njc2Vzc2lvbmlkJyA/ICdoZXNhU0NTRVNTSU9OSUQnIDogJ3ByZXZpb3VzU0NTJ10gfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0S2V5ID09PSAnc2NzbW9kZScpIHtcbiAgICAgICAgICAgIC8vIEZvciBTQ1NNT0RFIGZpZWxkLCBnZXQgdGhlIHZhbHVlIGZyb20gaGVzYVJlbGV2YW50U2Vzc2lvblxuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FTQ1NNT0RFIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuZWRpdEtleSA9PT0gJ2VscScpIHtcbiAgICAgICAgICAgIC8vIEZvciBFTFEgZmllbGQsIGdldCB0aGUgdmFsdWUgZnJvbSBoZXNhUmVsZXZhbnRTZXNzaW9uXG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8uaGVzYUVMUSB8fCAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ3N3aXRjaCcpIHtcbiAgICAgICAgICAgIC8vIFN3aXRjaGVzIG11c3QgYmluZCBhIHJlYWwgYm9vbGVhbjsgdGhlIGB8fCAnJ2AgZmFsbGJhY2sgYmVsb3dcbiAgICAgICAgICAgIC8vIHdvdWxkIGNvZXJjZSBhIGxlZ2l0aW1hdGUgYGZhbHNlYCBpbnRvICcnLCB3aGljaCB0aGVuIGZhaWxzIHRvXG4gICAgICAgICAgICAvLyBjYXN0IHRvIEJvb2xlYW4gb24gc2F2ZS5cbiAgICAgICAgICAgIGZvcm1EYXRhW2ZpZWxkLmVkaXRLZXldID0gQm9vbGVhbih0aGlzLmdldEZpZWxkVmFsdWUoZmllbGQpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIC8vIEZvciBudW1iZXIgZmllbGRzLCBlbnN1cmUgbnVtZXJpYyB2YWx1ZVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWUoZmllbGQpO1xuICAgICAgICAgICAgZm9ybURhdGFbZmllbGQuZWRpdEtleV0gPSB2YWx1ZSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5lZGl0S2V5XSA9IHRoaXMuZ2V0RmllbGRWYWx1ZShmaWVsZCkgfHwgJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZWRpdEZvcm1EYXRhID0gZm9ybURhdGE7XG4gICAgfSxcblxuICAgIG9uQ29tYm9ib3hDaGFuZ2UoKSB7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmVkaXRGb3JtKSB0aGlzLiRyZWZzLmVkaXRGb3JtLnZhbGlkYXRlKCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gdi1jb21ib2JveCBvbmx5IGNvbW1pdHMgb24gYmx1ci9FbnRlcjsgbWlycm9yIHRoZSBzZWFyY2ggYnVmZmVyIGludG8gdi1tb2RlbCBsaXZlIHNvIFNhdmUgY2FuJ3QgYmVhdCB0aGUgY29tbWl0LlxuICAgIG9uQ29tYm9ib3hTZWFyY2hJbnB1dChlZGl0S2V5LCB2YWwpIHtcbiAgICAgIGlmICh0aGlzLmVkaXRGb3JtRGF0YVtlZGl0S2V5XSAhPT0gdmFsKSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmVkaXRGb3JtRGF0YSwgZWRpdEtleSwgdmFsID09IG51bGwgPyAnJyA6IHZhbCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHNhdmVFZGl0YWJsZUZpZWxkcygpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHYtY29tYm9ib3ggb25seSBjb21taXRzIHR5cGVkIHRleHQgdG8gdi1tb2RlbCBvbiBibHVyOyBmb3JjZSBpdCBiZWZvcmUgcmVhZGluZyBlZGl0Rm9ybURhdGEuXG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIHR5cGVvZiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkb2
1N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLiRuZXh0VGljaygpO1xuXG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmVkaXRGb3JtICYmICF0aGlzLiRyZWZzLmVkaXRGb3JtLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgnUGxlYXNlIGNvcnJlY3QgdGhlIGhpZ2hsaWdodGVkIGVycm9ycyBiZWZvcmUgc2F2aW5nJywgJ2Vycm9yJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGVzYVN1cnZleVVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3QgcHJvZmlsZVVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3Qgc3R1ZGVudFVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3QgZW5nYWdlbWVudFVwZGF0ZXMgPSB7fTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblVwZGF0ZXMgPSB7fTtcblxuICAgICAgICAvLyBQcm9jZXNzIGVhY2ggZWRpdGFibGUgZmllbGQgYmFzZWQgb24gaXRzIGVkaXRLZXlcbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5lZGl0Rm9ybURhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdvd25zdHUnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGF0YS5zdHVkZW50SWQpIHtcbiAgICAgICAgICAgICAgICBzdHVkZW50VXBkYXRlcy5zdHVkZW50SWQgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGVzYUluY2x1ZGUnOlxuICAgICAgICAgICAgICAvLyBJbnZlcnQgdGhlIGluY2x1ZGUgc3dpdGNoIHZhbHVlIHRvIGdldCB0aGUgZXhjbHVkZSB2YWx1ZVxuICAgICAgICAgICAgICBjb25zdCBleGNsdWRlVmFsdWUgPSAhdmFsdWU7XG4gICAgICAgICAgICAgIGlmIChleGNsdWRlVmFsdWUgIT09IHRoaXMuZGF0YS5oZXNhRXhjbHVkZSkge1xuICAgICAgICAgICAgICAgIHN0dWRlbnRVcGRhdGVzLmhlc2FFeGNsdWRlID0gZXhjbHVkZVZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3NuJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRhdGEucHJvZmlsZS5zc24pIHtcbiAgICAgICAgICAgICAgICBwcm9maWxlVXBkYXRlcy5zc24gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3R0cGNvZGUnOlxuICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlcy50dHBjb2RlID0gdmFsdWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5nRW5kRGF0ZSc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLm1hbnVhbEVuZERhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JzbkVuZ0VuZCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVJzbkVuZ0VuZCkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLmhlc2FSc25FbmdFbmQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YWxBd2FyZElkJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmN1cnJlbnRFbmdhZ2VtZW50Py5oZXNhUXVhbEF3YXJkSWQpIHtcbiAgICAgICAgICAgICAgICBlbmdhZ2VtZW50VXBkYXRlcy5oZXNhUXVhbEF3YXJkSWQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YWxBd2FyZFJlc3VsdCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50RW5nYWdlbWVudD8uaGVzYVF1YWxBd2FyZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGVuZ2FnZW1lbnRVcGRhdGVzLmhlc2FRdWFsQXdhcmRSZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hlc2FFbmdFeHBlY3RlZEVuZERhdGUnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuY3VycmVudEVuZ2FnZW1lbnQ/Lmhlc2FFbmdFeHBlY3RlZEVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICBlbmdhZ2VtZW50VXBkYXRlcy5oZXNhRW5nRXhwZWN0ZWRFbmREYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdycHN0dWxvYWQnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8uaGVzYVJQU1RVTE9BRCkge1xuICAgICAgICAgICAgICAgIHNlc3Npb25VcGRhdGVzLmhlc2FSUFNUVUxPQUQgPSB2YWx1ZSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaW52b2ljZWZlZWFtb3VudCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhSU5WT0lDRUZFRUFNT1VOVCkge1xuICAgICAgICAgICAgICAgIHNlc3Npb25VcGRhdGVzLmhlc2FJTlZPSUNFRkVFQU1PVU5UID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Njc2ZlZWFtb3VudCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhU0NTRkVFQU1PVU5UKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvblVwZGF0ZXMuaGVzYVNDU0ZFRUFNT1VOVCA9IHZhbHVlID8gTnVtYmVyKHZhbHVlKSA6IG51bGw7XG4gICAgICAgICAgICAgI
1H1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzY3Nlc3Npb25pZCc6XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uPy5oZXNhU0NTRVNTSU9OSUQpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5oZXNhU0NTRVNTSU9OSUQgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJldmlvdXNzY3MnOlxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbj8ucHJldmlvdXNTQ1MpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5wcmV2aW91c1NDUyA9IHZhbHVlIHx8IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzY3Ntb2RlJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FTQ1NNT0RFKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvblVwZGF0ZXMuaGVzYVNDU01PREUgPSB2YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWxxJzpcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24/Lmhlc2FFTFEpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uVXBkYXRlcy5oZXNhRUxRID0gdmFsdWUgfHwgbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vIEZvciBvdGhlciBmaWVsZHMsIGFzc3VtZSB0aGV5IGdvIHRvIGhlc2FTdXJ2ZXlcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG51bWJlciBmaWVsZCBhbmQgY29udmVydCBhcHByb3ByaWF0ZWx5XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jdXJyZW50RWRpdGFibGVGaWVsZHMuZmluZCgoZikgPT4gZi5lZGl0S2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQ/LmZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlc1trZXldID0gdmFsdWUgPyBOdW1iZXIodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZXNhU3VydmV5VXBkYXRlc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE1ha2UgQVBJIGNhbGxzIG9ubHkgaWYgdGhlcmUgYXJlIHVwZGF0ZXNcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGhlc2FTdXJ2ZXlVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgRWR1Y2F0aW9uYWxQcm9maWxlc1NlcnZpY2UudXBkYXRlSGVzYVN1cnZleShcbiAgICAgICAgICAgIHRoaXMuZGF0YS5wcm9maWxlLl9pZCxcbiAgICAgICAgICAgIGhlc2FTdXJ2ZXlVcGRhdGVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhoZXNhU3VydmV5VXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocHJvZmlsZVVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCBFZHVjYXRpb25hbFByb2ZpbGVzU2VydmljZS51cGRhdGUodGhpcy5kYXRhLnByb2ZpbGUuX2lkLCBwcm9maWxlVXBkYXRlcyk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9maWxlVXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUsIGZpZWxkTmFtZSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0dWRlbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgU3R1ZGVudHNTZXJ2aWNlLnBhdGNoKHRoaXMuZGF0YS5faWQsIHN0dWRlbnRVcGRhdGVzKTtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxvY2FsIGRhdGEgdG8gcmVmbGVjdCB0aGUgY2hhbmdlcyBpbW1lZGlhdGVseVxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHN0dWRlbnRVcGRhdGVzKS5mb3JFYWNoKChbZmllbGROYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmRhdGEsIGZpZWxkTmFtZSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVuZ2FnZW1lbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhlbmdhZ2VtZW50VXBkYXRlcykubWFwKGFzeW5jKFtmaWVsZE5hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUVuZ2FnZW1lbnRGaWVsZChmaWVsZE5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBkYXRhIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbmdhZ2VtZW50VXBkYXRlcykuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50RW5nYWdlbWVudCkge1xuICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5jdXJyZW50RW5nYWdlbWVudCwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgI
1H1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2Vzc2lvblVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNlc3Npb25VcGRhdGVzKS5tYXAoYXN5bmMoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IFN0dWRlbnRzU2VydmljZS5wYXRjaEVucm9sbWVudFNlc3Npb24oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLl9pZCxcbiAgICAgICAgICAgICAgICAnZW5nYWdlbWVudHMnLFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEVuZ2FnZW1lbnQuX2lkLFxuICAgICAgICAgICAgICAgIHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbi5faWQsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxvY2FsIGRhdGEgdG8gcmVmbGVjdCB0aGUgY2hhbmdlcyBpbW1lZGlhdGVseVxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNlc3Npb25VcGRhdGVzKS5mb3JFYWNoKChbZmllbGROYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlc2FSZWxldmFudFNlc3Npb24pIHtcbiAgICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbiwgZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbWl0IHVwZGF0ZXNcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0dWRlbnRVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1zdHVkZW50Jywge1xuICAgICAgICAgICAgc3R1ZGVudElkOiBzdHVkZW50VXBkYXRlcy5zdHVkZW50SWQsXG4gICAgICAgICAgICBoZXNhRXhjbHVkZTogc3R1ZGVudFVwZGF0ZXMuaGVzYUV4Y2x1ZGUsXG4gICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZW5nYWdlbWVudFVwZGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGVkLWVuZ2FnZW1lbnQnLCBlbmdhZ2VtZW50VXBkYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNlc3Npb25VcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1zZXNzaW9uJywge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiB0aGlzLmhlc2FSZWxldmFudFNlc3Npb24uX2lkLFxuICAgICAgICAgICAgdXBkYXRlczogc2Vzc2lvblVwZGF0ZXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1oZXNhJywge1xuICAgICAgICAgIGhlc2FTdXJ2ZXk6IGhlc2FTdXJ2ZXlVcGRhdGVzLFxuICAgICAgICAgIHByb2ZpbGU6IHByb2ZpbGVVcGRhdGVzLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudEVkaXRTZWN0aW9uPy5uYW1lIHx8ICdIRVNBJztcbiAgICAgICAgdGhpcy5lZGl0RGlhbG9nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3VycmVudEVkaXRTZWN0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoYCR7c2VjdGlvbk5hbWV9IGZpZWxkcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseWAsICdzdWNjZXNzJyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGRhdGluZyBIRVNBIGZpZWxkczonLCBlcnJvcik7XG4gICAgICAgIGNvbnN0IGRldGFpbCA9IGVycm9yPy5yZXNwb25zZT8uZGF0YT8uZXJyb3IgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShgRXJyb3IgdXBkYXRpbmcgSEVTQSBmaWVsZHM6ICR7ZGV0YWlsfWAsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB1cGRhdGVGaW5TdXBSZWNvcmRzKHVwZGF0ZWRSZWNvcmRzKSB7XG4gICAgICAvLyBVcGRhdGUgbG9jYWwgZGF0YVxuICAgICAgdGhpcy4kc2V0KHRoaXMuaGVzYVJlbGV2YW50U2Vzc2lvbiwgJ2hlc2FGaW5TdXAnLCB1cGRhdGVkUmVjb3Jkcyk7XG5cbiAgICAgIC8vIEVtaXQgdXBkYXRlXG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGVkLXNlc3Npb24nLCB7XG4gICAgICAgIHNlc3Npb25JZDogdGhpcy5oZXNhUmVsZXZhbnRTZXNzaW9uLl9pZCxcbiAgICAgICAgdXBkYXRlczoge2hlc2FGaW5TdXA6IHVwZGF0ZWRSZWNvcmRzfSxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICB1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzKHVwZGF0ZWRSZWNvcmRzKSB7XG4gICAgICAvLyBVcGRhdGUgbG9jYWwgZGF0YVxuICAgICAgaWYgKCF0aGlzLmRhdGEucHJvZmlsZS5oZXNhU3VydmV5KSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmRhdGEucHJvZmlsZSwgJ2hlc2FTdXJ2ZXknLCB7fSk7XG4gICAgICB9XG4gICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLnByb2ZpbGUuaGVzYVN1cnZleSwgJ2VudHJ5UXVhbGlmaWNhdGlvbkF3YXJkJywgdXBkYXRlZFJlY29yZHMpO1xuXG4gICAgICAvLyBFbWl0IHVwZGF0ZVxuICAgICAgdGhpcy4kZW1pdCgndXBkYXRlZC1oZXNhJywge1xuICAgICAgICBoZXNhU3VydmV5OiB7ZW50cnlRdWFsaWZpY2F0aW9uQXdhcmQ6IHVwZGF0ZWRSZWNvcmRzfSxcbiAgICAgICAgcHJvZmlsZToge30sXG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmhlc2Etcm93LWJyZWFrIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIGhlaWdodDogMDtcbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvbG9hZGVyLmpzPz9jbG9uZWRSdWxlU2V0LTEyLnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMi51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMi51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNWFhNGUzNSZwcm9kJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWFhNGUzNSZzY29wZWQ9dHJ1ZSZsYW5nPXB1Z1wiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hFU0FNYW5hZ2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9IRVNBTWFuYWdlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNWFhNGUzNSZwcm9kJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjM1YWE0ZTM1XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJfdiIsIl9zIiwiaGVzYVRpdGxlIiwiYXR0cnMiLCJfbCIsInZpc2libGVTZWN0aW9ucyIsInNlY3Rpb24iLCJrZXkiLCJuYW1lIiwic3RhdGljQ2xhc3MiLCJjYW5FZGl0U2VjdGlvbiIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJvcGVuRWRpdERpYWxvZyIsImRhdGEiLCJwcm9maWxlIiwiaG
1VzYVN1cnZleSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJfZSIsImZpZWxkcyIsImZpZWxkIiwibmV3Um93IiwibGFiZWwiLCJfYiIsImNvbHMiLCJmaWVsZFR5cGUiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRIaW50IiwiX2lkIiwiZW50cnlRdWFsaWZpY2F0aW9uUmVjb3JkcyIsInJlYWRvbmx5IiwiaGFzRWRpdFBlcm1pc3Npb24iLCJ1cGRhdGVFbnRyeVF1YWxpZmljYXRpb25SZWNvcmRzIiwiY3VycmVudEVuZ2FnZW1lbnQiLCJoZXNhUmVsZXZhbnRTZXNzaW9uIiwiaGVzYUZpblN1cFJlY29yZHMiLCJzc24iLCJ1cGRhdGVGaW5TdXBSZWNvcmRzIiwibW9kZWwiLCJ2YWx1ZSIsImVkaXREaWFsb2ciLCJjYWxsYmFjayIsIiQkdiIsImV4cHJlc3Npb24iLCJlZGl0RGlhbG9nVGl0bGUiLCJyZWYiLCJzdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsImVkaXRGb3JtVmFsaWQiLCJjdXJyZW50RWRpdGFibGVGaWVsZHMiLCJlZGl0S2V5IiwiZWRpdEZvcm1EYXRhIiwiJHNldCIsInNlbGVjdE9wdGlvbnMiLCJydWxlcyIsIm9uQ29tYm9ib3hDaGFuZ2UiLCJ2YWwiLCJvbkNvbWJvYm94U2VhcmNoSW5wdXQiLCJjdXJyZW50RWRpdFNlY3Rpb24iLCJzYXZlRWRpdGFibGVGaWVsZHMiLCJzdGF0aWNSZW5kZXJGbnMiLCJTeXN0ZW1EYXRhU2VydmljZSIsIlN0dWRlbnRzU2VydmljZSIsIkVkdWNhdGlvbmFsUHJvZmlsZXNTZXJ2aWNlIiwiSGVzYUNvZGVzU2VydmljZSIsIlByb2dyYW1tZXNWMlNlcnZpY2UiLCJQUkVWSU9VU19QUk9WSURFUl9ERUZBVUxUUyIsInRleHQiLCJjb21wb25lbnRzIiwiRGF0ZVBpY2tlciIsIkVudHJ5UXVhbGlmaWNhdGlvblRhYmxlIiwiRmluYW5jaWFsU3VwcG9ydFRhYmxlIiwicHJvcHMiLCJ0eXBlIiwicmVxdWlyZWQiLCJCb29sZWFuIiwiZGVmYXVsdCIsImhlc2FDb2xsZWdlQ29uZmlnIiwicXVhbEF3YXJkUmVzdWx0T3B0aW9ucyIsInNlY3Rpb25zIiwidmlld1Blcm1pc3Npb24iLCJlZGl0UGVybWlzc2lvbiIsImVkaXRhYmxlIiwiaGludCIsIm1kIiwiaGVzYUV4Y2x1ZGUiLCJmaWx0ZXJzIiwiaGVzYURhdGUiLCJkb2IiLCJzbmFtZTE2Iiwic3VydmV5UG9zdGNvZGUiLCJ0dHBjb2RlIiwidHRwY29kZUZhbGxiYWNrIiwiY29udGFjdCIsInBvc3RDb2RlIiwiaGlnaGVzdFFPRSIsInBlcm1BZGRQb3N0Y29kZSIsInByZXZpb3VzUHJvdmlkZXIiLCJ2Iiwic29tZSIsIm8iLCJTdHJpbmciLCJ0cmltIiwidGVzdCIsImluY2x1ZGVDUkRQVFNUVSIsImV4Y2x1ZGVFbnRyeVByb2ZpbGUiLCJmb3JjZUVudHJ5UHJvZmlsZSIsInByZXZpb3VzU0NTIiwiaGVzYUNvZGVzIiwiaGVzYVByb2dyYW1tZXMiLCJjb21wdXRlZCIsImhlc2FSZXBvcnRpbmdZZWFyIiwic3RhcnRZZWFyIiwiZW5kWWVhciIsImVuZFllYXJTaG9ydCIsInNsaWNlIiwiZmlsdGVyIiwiaGFzVmlld1Blcm1pc3Npb24iLCJ2aXNpYmxlIiwibWFwIiwicCIsInF1YWxpZCIsInRpdGxlIiwiZm9ybWF0dGVkQXBlbENyZCIsImluY29taW5nQ3JlZGl0cyIsImZpbmQiLCJjcmVkaXQiLCJ1bmRlZmluZWQiLCJmb3JtYXR0ZWRDcmRQVFN0dSIsInJlZHVjZSIsInRvdGFsIiwiY3JlZGl0cyIsImZvcm1hdHRlZEdlbmRlcklkIiwiZm9ybWF0SGVzYUZpZWxkIiwiZm9ybWF0dGVkRXRobmljaXR5SWQiLCJmb3JtYXR0ZWROYXRpb25hbGl0eSIsImZvcm1hdHRlZFJlbGlnaW9uIiwiZm9ybWF0dGVkU2V4T3J0IiwiZm9ybWF0dGVkQ2FyZUxlYXZlciIsImZvcm1hdHRlZFBhckVkIiwiZm9ybWF0dGVkUGVybUFkZENvdW50cnkiLCJmb3JtYXR0ZWRIaWdoZXN0UU9FIiwiZm9ybWF0dGVkRnVuZGluZ0JvZHlJZCIsImZvcm1hdHRlZERpc2FiaWxpdHkiLCJkaXNhYmlsaXR5IiwiQXJyYXkiLCJpc0FycmF5IiwiY29kZU9iaiIsImNvZGVzIiwiam9pbiIsImNvZGUiLCJmb3JtYXR0ZWRTZXhJZCIsInN1cnZleUNvZGUiLCJzZXhJZCIsInBhcnNlSGVzYUZpZWxkIiwic2V4IiwiZm9ybWF0dGVkUXVhbEF3YXJkSWQiLCJoZXNhUXVhbEF3YXJkSWQiLCJwcm9ncmFtbWUiLCJmb3JtYXR0ZWRRdWFsQXdhcmRSZXN1bHQiLCJoZXNhUXVhbEF3YXJkUmVzdWx0IiwicGFkZGVkQ29kZSIsInBhZFN0YXJ0Iiwib3B0aW9uIiwib3B0IiwiYWN0aXZlRW5nYWdlbWVudEluZGV4IiwiZW5nYWdlbWVudHMiLCJhY2FkZW1pY1llYXJTdGFydCIsIkRhdGUiLCJhY2FkZW1pY1llYXJFbmQiLCJ2YWxpZFNlc3Npb25Db3VudHMiLCJlbmdhZ2VtZW50IiwicGFydG5lcklkIiwidmFsaWRTZXNzaW9ucyIsInNlc3Npb25zIiwic2Vzc2lvbiIsInNlc3Npb25TdGFydCIsInN0YXJ0RGF0ZSIsInNlc3Npb25FbmQiLCJlbmREYXRlIiwic2Vzc2lvblN0YXJ0c0luWWVhciIsInNlc3Npb25FbmRzSW5ZZWFyIiwiYWN0aXZlSW5kZXgiLCJmaW5kSW5kZXgiLCJjb3VudCIsImN1cnJlbnRTZXNzaW9uIiwicmVsZXZhbnRTZXNzaW9ucyIsImhlc2FGaW5TdXAiLCJlbnRyeVF1YWxpZmljYXRpb25Bd2FyZCIsImNyZWF0ZWQiLCJjb2xsZWdlQ29uZmlnIiwiZ2V0RGF0YUJ5TmFtZSIsIlByb21pc2UiLCJhbGwiLCJsb2FkSGVzYUNvZGVzIiwibG9hZEhlc2FQcm9ncmFtbWVzIiwid2F0Y2giLCJuZXdWYWwiLCJpbml0aWFsaXplRWRpdEZvcm1EYXRhIiwibWV0aG9kcyIsImNvZGVUeXBlcyIsImdldE11bHRpcGxlQ29kZXMiLCJub3RGb3VuZCIsImNvbnNvbGUiLCJ3YXJuIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwiZXJyb3IiLCJjb2RlVHlwZSIsImdldExpc3QiLCJoZXNhIiwiZmllbGROYW1lIiwibGFiZWxUZXh0IiwiZW50cnkiLCJ0b0xvd2VyQ2FzZSIsInVwZGF0ZUVuZ2FnZW1lbnRGaWVsZCIsInBhdGNoRW5nYWdlbWVudCIsInBlcm1pc3Npb24iLCIkaGFzUGVybWlzc2lvbiIsImNhbGwiLCIkZmlsdGVycyIsInNwbGl0Iiwib2JqIiwic2VjdGlvbkhhc0VkaXRhYmxlRmllbGRzIiwiZm9ybURhdGEiLCJmb3JFYWNoIiwicmF3VmFsdWUiLCJoZXNhUnNuRW5nRW5kIiwiaGVzYUVuZ0V4cGVjdGVkRW5kRGF0ZSIsIk51bWJlciIsImhlc2FTQ1NNT0RFIiwiaGVzYUVMUSIsIiRuZXh0VGljayIsIiRyZWZzIiwiZWRpdEZvcm0iLCJ2YWxpZGF0ZSIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsImJsdXIiLCIkc2hvd01lc3NhZ2UiLCJoZXNhU3VydmV5VXBkYXRlcyIsInByb2ZpbGVVcGRhdGVzIiwic3R1ZGVudFVwZGF0ZXMiLCJlbmdhZ2VtZW50VXBkYXRlcyIsInNlc3Npb25VcGRhdGVzIiwic3R1ZGVudElkIiwiZXhjbHVkZVZhbHVlIiwibWFudWFsRW5kRGF0ZSIsImhlc2FSUFNUVUxPQUQiLCJoZXNhSU5WT0lDRUZFRUFNT1VOVCIsImhlc2FTQ1NGRUVBTU9VTlQiLCJoZXNhU0NTRVNTSU9OSUQiLCJmIiwidXBkYXRlSGVzYVN1cnZleSIsInVwZGF0ZSIsInBhdGNoIiwicGF0Y2hFbnJvbG1lbnRTZXNzaW9uIiwiJGVtaXQiLCJzZXNzaW9uSWQiLCJ1cGRhdGVzIiwic2VjdGlvbk5hbWUiLCJkZXRhaWwiLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJ1cGRhdGVkUmVjb3JkcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72412\n\n}")},63e3:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n A: function() { return /* binding */ VSwitch; }\n});\n\n// EXTERNAL MODULE: ./node_modules/vuetify/src/styles/components/_selection-controls.sass\nvar _selection_controls = __webpack_require__(15601);\n;// ./node_modules/vuetify/src/components/VSwitch/VSwitch.sass\n// extracted by mini-css-extract-plugin\n\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/mixins/selectable/index.js\nvar selectable = __webpack_require__(8944);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VInput/index.js\nvar VInput = __webpack_require__(27908);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/directives/touch/index.js\nvar touch = __webpack_require__(22699);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/transitions/index.js + 2 modules\nvar transitions = __webpack_require__(45961);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js + 1 modules\nvar VProgressCircular = __webpack_require__(51554);\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/util/helpers.js\nvar helpers = __webpack_require__(4152);\n;// ./node_modules/vuetify/lib/components/VSwitch/VSwitch.js\n// Styles\n\n // Mixins\n\n\n // Directives\n\n // Components\n\n\n // Helpers\n\n\n/* @vue/component */\n\n/* harmony default export */ var VSwitch = (selectable/* default */.A.extend({\n name: 'v-switch',\n directives: {\n Touch: touch/* default */.A\n },\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n flat: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes() {\n return {\n ...VInput/* default */.A.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset\n };\n },\n attrs() {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled':
1String(this.isDisabled),\n role: 'switch'\n };\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState() {\n if (this.hasError && this.shouldValidate) return 'error';\n if (this.hasSuccess) return 'success';\n if (this.hasColor !== null) return this.computedColor;\n return undefined;\n },\n switchData() {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses\n });\n }\n },\n methods: {\n genDefaultSlot() {\n return [this.genSwitch(), this.genLabel()];\n },\n genSwitch() {\n const {\n title,\n ...switchAttrs\n } = this.attrs$;\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs\n }), this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight\n }\n }]\n })), this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData\n }), this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData\n }, [this.genProgress()])]);\n },\n genProgress() {\n return this.$createElement(transitions/* VFabTransition */.Z, {}, [this.loading === false ? null : (0,helpers/* getSlot */.$c)(this, 'progress') || this.$createElement(VProgressCircular/* default */.A, {\n props: {\n color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n size: 16,\n width: 2,\n indeterminate: true\n }\n })]);\n },\n onSwipeLeft() {\n if (this.isActive) this.onChange();\n },\n onSwipeRight() {\n if (!this.isActive) this.onChange();\n },\n onKeydown(e) {\n if (e.keyCode === helpers/* keyCodes */.uP.left && this.isActive || e.keyCode === helpers/* keyCodes */.uP.right && !this.isActive) this.onChange();\n }\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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wic291cmNlcyI6WyJ3ZWJwYWNrOi8vY2Rtcy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9jb21wb25lbnRzL1ZTd2l0Y2gvVlN3aXRjaC5zYXNzPzI0MDIiLCJ3ZWJwYWNrOi8vY2Rtcy8uLi9zcmMvY29tcG9uZW50cy9WU3dpdGNoL1ZTd2l0Y2gudHM/YmVhMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCIvLyBTdHlsZXNcbmltcG9ydCAnLi4vLi4vc3R5bGVzL2NvbXBvbmVudHMvX3NlbGVjdGlvbi1jb250cm9scy5zYXNzJ1xuaW1wb3J0ICcuL1ZTd2l0Y2guc2FzcydcblxuLy8gTWl4aW5zXG5pbXBvcnQgU2VsZWN0YWJsZSBmcm9tICcuLi8uLi9taXhpbnMvc2VsZWN0YWJsZSdcbmltcG9ydCBWSW5wdXQgZnJvbSAnLi4vVklucHV0J1xuXG4vLyBEaXJlY3RpdmVzXG5pbXBvcnQgVG91Y2ggZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b3VjaCdcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgVkZhYlRyYW5zaXRpb24gfSBmcm9tICcuLi90cmFuc2l0aW9ucydcbmltcG9ydCBWUHJvZ3Jlc3NDaXJjdWxhciBmcm9tICcuLi9WUHJvZ3Jlc3NDaXJjdWxhci9WUHJvZ3Jlc3NDaXJjdWxhcidcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgZ2V0U2xvdCwga2V5Q29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2hlbHBlcnMnXG5cbi8vIFR5cGVzXG5pbXBvcnQgeyBWTm9kZSwgVk5vZGVEYXRhIH0gZnJvbSAndnVlJ1xuXG4vKiBAdnVlL2NvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgU2VsZWN0YWJsZS5leHRlbmQoe1xuICBuYW1lOiAndi1zd2l0Y2gnLFxuXG4gIGRpcmVjdGl2ZXM6IHsgVG91Y2ggfSxcblxuICBwcm9wczoge1xuICAgIGluc2V0OiBCb29sZWFuLFxuICAgIGxvYWRpbmc6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgICBmbGF0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNsYXNzZXMgKCk6IG9iamVjdCB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5WSW5wdXQub3B0aW9ucy5jb21wdXRlZC5jbGFzc2VzLmNhbGwodGhpcyksXG4gICAgICAgICd2LWlucHV0LS1zZWxlY3Rpb24tY29udHJvbHMgdi1pbnB1dC0tc3dpdGNoJzogdHJ1ZSxcbiAgICAgICAgJ3YtaW5wdXQtLXN3aXRjaC0tZmxhdCc6IHRoaXMuZmxhdCxcbiAgICAgICAgJ3YtaW5wdXQtLXN3aXRjaC0taW5zZXQnOiB0aGlzLmluc2V0LFxuICAgICAgfVxuICAgIH0sXG4gICAgYXR0cnMgKCk6IG9iamVjdCB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYXJpYS1jaGVja2VkJzogU3RyaW5nKHRoaXMuaXNBY3RpdmUpLFxuICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IFN0cmluZyh0aGlzLmlzRGlzYWJsZWQpLFxuICAgICAgICByb2xlOiAnc3dpdGNoJyxcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIERvIG5vdCByZXR1cm4gdW5kZWZpbmVkIGlmIGRpc2FibGVkLFxuICAgIC8vIGFjY29yZGluZyB0byBzcGVjLCBzaG91bGQgc3RpbGwgc2hvd1xuICAgIC8vIGEgY29sb3Igd2hlbiBkaXNhYmxlZCBhbmQgYWN0aXZlXG4gICAgdmFsaWRhdGlvblN0YXRlICgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKHRoaXMuaGFzRXJyb3IgJiYgdGhpcy5zaG91bGRWYWxpZGF0ZSkgcmV0dXJuICdlcnJvcidcbiAgICAgIGlmICh0aGlzLmhhc1N1Y2Nlc3MpIHJldHVybiAnc3VjY2VzcydcbiAgICAgIGlmICh0aGlzLmhhc0NvbG9yICE9PSBudWxsKSByZXR1cm4gdGhpcy5jb21wdXRlZENvbG9yXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSxcbiAgICBzd2l0Y2hEYXRhICgpOiBWTm9kZURhdGEge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0VGV4dENvbG9yKHRoaXMubG9hZGluZyA/IHVuZGVmaW5lZCA6IHRoaXMudmFsaWRhdGlvblN0YXRlLCB7XG4gICAgICAgIGNsYXNzOiB0aGlzLnRoZW
11lQ2xhc3NlcyxcbiAgICAgIH0pXG4gICAgfSxcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2VuRGVmYXVsdFNsb3QgKCk6IChWTm9kZSB8IG51bGwpW10ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy5nZW5Td2l0Y2goKSxcbiAgICAgICAgdGhpcy5nZW5MYWJlbCgpLFxuICAgICAgXVxuICAgIH0sXG4gICAgZ2VuU3dpdGNoICgpOiBWTm9kZSB7XG4gICAgICBjb25zdCB7IHRpdGxlLCAuLi5zd2l0Y2hBdHRycyB9ID0gdGhpcy5hdHRycyRcblxuICAgICAgcmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICd2LWlucHV0LS1zZWxlY3Rpb24tY29udHJvbHNfX2lucHV0JyxcbiAgICAgIH0sIFtcbiAgICAgICAgdGhpcy5nZW5JbnB1dCgnY2hlY2tib3gnLCB7XG4gICAgICAgICAgLi4udGhpcy5hdHRycyxcbiAgICAgICAgICAuLi5zd2l0Y2hBdHRycyxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuZ2VuUmlwcGxlKHRoaXMuc2V0VGV4dENvbG9yKHRoaXMudmFsaWRhdGlvblN0YXRlLCB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgICAgIG5hbWU6ICd0b3VjaCcsXG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICBsZWZ0OiB0aGlzLm9uU3dpcGVMZWZ0LFxuICAgICAgICAgICAgICByaWdodDogdGhpcy5vblN3aXBlUmlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1dLFxuICAgICAgICB9KSksXG4gICAgICAgIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ3YtaW5wdXQtLXN3aXRjaF9fdHJhY2snLFxuICAgICAgICAgIC4uLnRoaXMuc3dpdGNoRGF0YSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ3YtaW5wdXQtLXN3aXRjaF9fdGh1bWInLFxuICAgICAgICAgIC4uLnRoaXMuc3dpdGNoRGF0YSxcbiAgICAgICAgfSwgW3RoaXMuZ2VuUHJvZ3Jlc3MoKV0pLFxuICAgICAgXSlcbiAgICB9LFxuICAgIGdlblByb2dyZXNzICgpOiBWTm9kZSB7XG4gICAgICByZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChWRmFiVHJhbnNpdGlvbiwge30sIFtcbiAgICAgICAgdGhpcy5sb2FkaW5nID09PSBmYWxzZVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogZ2V0U2xvdCh0aGlzLCAncHJvZ3Jlc3MnKSB8fCB0aGlzLiRjcmVhdGVFbGVtZW50KFZQcm9ncmVzc0NpcmN1bGFyLCB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBjb2xvcjogKHRoaXMubG9hZGluZyA9PT0gdHJ1ZSB8fCB0aGlzLmxvYWRpbmcgPT09ICcnKVxuICAgICAgICAgICAgICAgID8gKHRoaXMuY29sb3IgfHwgJ3ByaW1hcnknKVxuICAgICAgICAgICAgICAgIDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBzaXplOiAxNixcbiAgICAgICAgICAgICAgd2lkdGg6IDIsXG4gICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgXSlcbiAgICB9LFxuICAgIG9uU3dpcGVMZWZ0ICgpIHtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB0aGlzLm9uQ2hhbmdlKClcbiAgICB9LFxuICAgIG9uU3dpcGVSaWdodCAoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHRoaXMub25DaGFuZ2UoKVxuICAgIH0sXG4gICAgb25LZXlkb3duIChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIChlLmtleUNvZGUgPT09IGtleUNvZGVzLmxlZnQgJiYgdGhpcy5pc0FjdGl2ZSkgfHxcbiAgICAgICAgKGUua2V5Q29kZSA9PT0ga2V5Q29kZXMucmlnaHQgJiYgIXRoaXMuaXNBY3RpdmUpXG4gICAgICApIHRoaXMub25DaGFuZ2UoKVxuICAgIH0sXG4gIH0sXG59KVxuIl0sIm5hbWVzIjpbIlNlbGVjdGFibGUiLCJWSW5wdXQiLCJUb3VjaCIsIlZGYWJUcmFuc2l0aW9uIiwiVlByb2dyZXNzQ2lyY3VsYXIiLCJnZXRTbG90Iiwia2V5Q29kZXMiLCJleHRlbmQiLCJuYW1lIiwiZGlyZWN0aXZlcyIsInByb3BzIiwiaW5zZXQiLCJCb29sZWFuIiwibG9hZGluZyIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZmxhdCIsImNvbXB1dGVkIiwiY2xhc3NlcyIsIm9wdGlvbnMiLCJjYWxsIiwiYXR0cnMiLCJpc0FjdGl2ZSIsImlzRGlzYWJsZWQiLCJyb2xlIiwidmFsaWRhdGlvblN0YXRlIiwiaGFzRXJyb3IiLCJzaG91bGRWYWxpZGF0ZSIsImhhc1N1Y2Nlc3MiLCJoYXNDb2xvciIsImNvbXB1dGVkQ29sb3IiLCJ1bmRlZmluZWQiLCJzd2l0Y2hEYXRhIiwic2V0VGV4dENvbG9yIiwiY2xhc3MiLCJ0aGVtZUNsYXNzZXMiLCJtZXRob2RzIiwiZ2VuRGVmYXVsdFNsb3QiLCJnZW5Td2l0Y2giLCJnZW5MYWJlbCIsInRpdGxlIiwic3dpdGNoQXR0cnMiLCJhdHRycyQiLCIkY3JlYXRlRWxlbWVudCIsInN0YXRpY0NsYXNzIiwiZ2VuSW5wdXQiLCJnZW5SaXBwbGUiLCJ2YWx1ZSIsImxlZnQiLCJvblN3aXBlTGVmdCIsInJpZ2h0Iiwib25Td2lwZVJpZ2h0IiwiZ2VuUHJvZ3Jlc3MiLCJjb2xvciIsInNpemUiLCJ3aWR0aCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsIm9uS2V5ZG93biIsImUiLCJrZXlDb2RlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63000\n\n}")},29918:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{/* harmony import */ var _base_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90929);\n/* eslint-disable class-methods-use-this */\n\nclass HesaCodesService extends _base_service__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .A {\n get entity() {\n return 'hesaCodes';\n }\n async getCodesByName(name) {\n try {\n const response = await this.request().get(`${this.entity}/${name}`);\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n async getMultipleCodes(fields) {\n try {\n const response = await this.request().post(`${this.entity}`, {\n fields\n });\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n}\n/* harmony default export */ __webpack_exports__.A = (new HesaCodesService());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk5MTguanMiLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ3lDO
10FBRXpDLE1BQU1DLGdCQUFnQixTQUFTRCw4REFBVyxDQUFDO0VBQ3pDLElBQUlFLE1BQU1BLENBQUEsRUFBRztJQUNYLE9BQU8sV0FBVztFQUNwQjtFQUVBLE1BQU1DLGNBQWNBLENBQUNDLElBQUksRUFBRTtJQUN6QixJQUFJO01BQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNMLE1BQU0sSUFBSUUsSUFBSSxFQUFFLENBQUM7TUFDbkUsT0FBTyxJQUFJLENBQUNJLGVBQWUsQ0FBQ0gsUUFBUSxFQUFFQSxRQUFRLENBQUNJLElBQUksQ0FBQztJQUN0RCxDQUFDLENBQUMsT0FBT0MsS0FBSyxFQUFFO01BQ2QsTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsS0FBSyxDQUFDO0lBQ2hDO0VBQ0Y7RUFFQSxNQUFNRSxnQkFBZ0JBLENBQUNDLE1BQU0sRUFBRTtJQUM3QixJQUFJO01BQ0YsTUFBTVIsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNaLE1BQU0sRUFBRSxFQUFFO1FBQUNXO01BQU0sQ0FBQyxDQUFDO01BQ3RFLE9BQU8sSUFBSSxDQUFDTCxlQUFlLENBQUNILFFBQVEsRUFBRUEsUUFBUSxDQUFDSSxJQUFJLENBQUM7SUFDdEQsQ0FBQyxDQUFDLE9BQU9DLEtBQUssRUFBRTtNQUNkLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUNELEtBQUssQ0FBQztJQUNoQztFQUNGO0FBQ0Y7QUFFQSxzREFBZSxJQUFJVCxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY2Rtcy8uL3NyYy9zZXJ2aWNlcy9oZXNhQ29kZXMuc2VydmljZS5qcz8yOTViIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbmltcG9ydCBCYXNlU2VydmljZSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5cbmNsYXNzIEhlc2FDb2Rlc1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG4gIGdldCBlbnRpdHkoKSB7XG4gICAgcmV0dXJuICdoZXNhQ29kZXMnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29kZXNCeU5hbWUobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmdldChgJHt0aGlzLmVudGl0eX0vJHtuYW1lfWApO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldE11bHRpcGxlQ29kZXMoZmllbGRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KCkucG9zdChgJHt0aGlzLmVudGl0eX1gLCB7ZmllbGRzfSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBIZXNhQ29kZXNTZXJ2aWNlKCk7XG4iXSwibmFtZXMiOlsiQmFzZVNlcnZpY2UiLCJIZXNhQ29kZXNTZXJ2aWNlIiwiZW50aXR5IiwiZ2V0Q29kZXNCeU5hbWUiLCJuYW1lIiwicmVzcG9uc2UiLCJyZXF1ZXN0IiwiZ2V0IiwicmVzcG9uc2VXcmFwcGVyIiwiZGF0YSIsImVycm9yIiwiZXJyb3JXcmFwcGVyIiwiZ2V0TXVsdGlwbGVDb2RlcyIsImZpZWxkcyIsInBvc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29918\n\n}")},53046:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){eval("{/* harmony import */ var _http_v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27574);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37569);\n/**\n * V2 Programmes Service\n *\n * Provides access to programme CRUD operations via the V2 API.\n * Uses the V2 HTTP client (/api/v1/programmes).\n */\n\n\n\nclass ProgrammesV2Service {\n request() {\n return new _http_v2__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .A();\n }\n responseWrapper(...rest) {\n return new _utils__WEBPACK_IMPORTED_MODULE_1__/* .ResponseWrapper */ .PR(...rest);\n }\n errorWrapper(...rest) {\n return new _utils__WEBPACK_IMPORTED_MODULE_1__/* .ErrorWrapper */ .sr(...rest);\n }\n\n /**\n * Get list of programmes\n * V2 returns array directly if no pagination requested\n * Or { data: [...], pagination: {...} } if pagination parameters provided\n */\n async getList(parameters = {}) {\n try {\n const response = await this.request().get('programmes', {\n params: parameters\n });\n // If pagination used, response is {data: [...], pagination: {...}}\n // Otherwise, response is the array directly\n const programmes = Array.isArray(response.data) ? response.data : response.data?.data || [];\n return this.responseWrapper(response, programmes);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n\n /**\n * Get a single programme by ID\n */\n async getById(id) {\n try {\n const response = await this.request().get(`programmes/${id}`);\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n\n /**\n * Create a new programme\n */\n async create(data) {\
1n try {\n const response = await this.request().post('programmes', data);\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n\n /**\n * Update an existing programme\n */\n async update(id, data) {\n try {\n const response = await this.request().put(`programmes/${id}`, data);\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n\n /**\n * Delete a programme\n */\n async remove(id) {\n try {\n const response = await this.request().delete(`programmes/${id}`);\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n\n /**\n * Get aggregated intakes across all programmes\n * Returns intakes grouped by value+label with applicable programme list\n */\n async getIntakes() {\n try {\n const response = await this.request().get('programmes/intakes');\n return this.responseWrapper(response, response.data);\n } catch (error) {\n throw this.errorWrapper(error);\n }\n }\n}\n/* harmony default export */ __webpack_exports__.A = (new ProgrammesV2Service());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBb0IsQ0FBQztNQUMvRCxPQUFPLElBQUksQ0FBQ04sZUFBZSxDQUFDSyxRQUFRLEVBQUVBLFFBQVEsQ0FBQ00sSUFBSSxDQUFDO0lBQ3RELENBQUMsQ0FBQyxPQUFPQyxLQUFLLEVBQUU7TUFDZCxNQUFNLElBQUksQ0FBQ1YsWUFBWSxDQUFDVSxLQUFLLENBQUM7SUFDaEM7RUFDRjtBQUNGO0FBRUEsc0RBQWUsSUFBSWQsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2NkbXMvLi9zcmMvc2VydmljZXMvcHJvZ3JhbW1lcy52Mi5zZXJ2aWNlLmpzPzBjNzEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWMiBQcm9ncmFtbWVzIFNlcnZpY2VcbiAqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gcHJvZ3JhbW1lIENSVUQgb3BlcmF0aW9ucyB2aWEgdGhlIFYyIEFQSS5cbiAqIFVzZXMgdGhlIFYyIEhUVFAgY2xpZW50ICgvYXBpL3YxL3Byb2dyYW1tZXMpLlxuICovXG5cbmltcG9ydCBIdHRwVjIgZnJvbSAnLi9odHRwLnYyJztcbmltcG9ydCB7UmVzcG9uc2VXcmFwcGVyLCBFcnJvcldyYXBwZXJ9IGZyb20gJy4vdXRpbHMnO1xuXG5jbGFzcyBQcm9ncmFtbWVzVjJTZXJ2aWNlIHtcbiAgcmVxdWVzdCgpIHtcbiAgICByZXR1cm4gbmV3IEh0dHBWMigpO1xuICB9XG5cbiAgcmVzcG9uc2VXcmFwcGVyKC4uLnJlc3QpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlV3JhcHBlciguLi5yZXN0KTtcbiAgfVxuXG4gIGVycm9yV3JhcHBlciguLi5yZXN0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcldyYXBwZXIoLi4ucmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgcHJvZ3JhbW1lc1xuICAgKiBWMiByZXR1cm5zIGFycmF5IGRpcmVjdGx5IGlmIG5vIHBhZ2luYXRpb24gcmVxdWVzdGVkXG4gICAqIE9yIHsgZGF0YTogWy4uLl0sIHBhZ2luYXRpb246IHsuLi59IH0gaWYgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBnZXRMaXN0KHBhcmFtZXRlcnMgPSB7fSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmdldCgncHJvZ3JhbW1lcycsIHtwYXJhbXM6IHBhcmFtZXRlcnN9KTtcbiAgICAgIC8vIElmIHBhZ2luYXRpb24gdXNlZCwgcmVzcG9uc2UgaXMge2RhdGE6IFsuLi5dLCBwYWdpbmF0aW9uOiB7Li4ufX1cbiAgICAgIC8vIE90aGVyd2lzZSwgcmVzcG9uc2UgaXMgdGhlIGFycmF5IGRpcmVjdGx5XG4gICAgICBjb25zdCBwcm9ncmFtbWVzID0gQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhKSA/IHJlc3BvbnNlLmRhdGEgOiAocmVzcG9uc2UuZGF0YT8uZGF0YSB8fCBbXSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHByb2dyYW1tZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZSBwcm9ncmFtbWUgYnkgSURcbiAgICovXG4gIGFzeW5jIGdldEJ5SWQoaWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoKS5nZXQoYHByb2dyYW1tZXMvJHtpZH1gKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlV3JhcHBlcihyZXNwb25zZSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZXJyb3JXcmFwcGVyKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByb2dyYW1tZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGRhdGEpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoKS5wb3N0KCdwcm9ncmFtbWVzJywgZGF0YSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVdyYXBwZXIocmVzcG9uc2UsIHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yV3JhcHBlcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBwcm9ncmFtbWVcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZCwgZGF0YSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLnB1dChgcHJvZ3JhbW1lcy8ke2lkfWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBwcm9ncmFtbWVcbiAgICovXG4gIGFzeW5jIHJlbW92ZShpZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdCgpLmRlbGV0ZShgcHJvZ3JhbW1lcy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VXcmFwcGVyKHJlc3BvbnNlLCByZXNwb25zZS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5lcnJvcldyYXBwZXIoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWdncmVnYXRlZCBpbnRha2VzIGFjcm9zcyBhbGwgcHJvZ3JhbW1lc1xuICAgKiBSZXR1cm5zIGludGFrZXMgZ3JvdXBlZCBieSB2YWx1ZStsYWJlbC
1B3aXRoIGFwcGxpY2FibGUgcHJvZ3JhbW1lIGxpc3RcbiAgICovXG4gIGFzeW5jIGdldEludGFrZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KCkuZ2V0KCdwcm9ncmFtbWVzL2ludGFrZXMnKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlV3JhcHBlcihyZXNwb25zZSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZXJyb3JXcmFwcGVyKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFByb2dyYW1tZXNWMlNlcnZpY2UoKTtcbiJdLCJuYW1lcyI6WyJIdHRwVjIiLCJSZXNwb25zZVdyYXBwZXIiLCJFcnJvcldyYXBwZXIiLCJQcm9ncmFtbWVzVjJTZXJ2aWNlIiwicmVxdWVzdCIsInJlc3BvbnNlV3JhcHBlciIsInJlc3QiLCJlcnJvcldyYXBwZXIiLCJnZXRMaXN0IiwicGFyYW1ldGVycyIsInJlc3BvbnNlIiwiZ2V0IiwicGFyYW1zIiwicHJvZ3JhbW1lcyIsIkFycmF5IiwiaXNBcnJheSIsImRhdGEiLCJlcnJvciIsImdldEJ5SWQiLCJpZCIsImNyZWF0ZSIsInBvc3QiLCJ1cGRhdGUiLCJwdXQiLCJyZW1vdmUiLCJkZWxldGUiLCJnZXRJbnRha2VzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53046\n\n}")}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.