"use strict"; (self["webpackChunkiride"] = self["webpackChunkiride"] || []).push([["assets_js_components_iwcomponents_js"],{ /***/ "./assets/js/components/iwcomponents.js": /*!**********************************************!*\ !*** ./assets/js/components/iwcomponents.js ***! \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js"); /* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js"); /* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.every.js */ "./node_modules/core-js/modules/es.array.every.js"); /* harmony import */ var core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js"); /* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ "./node_modules/core-js/modules/es.array.from.js"); /* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js"); /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.is-array.js */ "./node_modules/core-js/modules/es.array.is-array.js"); /* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__); /* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); /* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js"); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); /* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ "./node_modules/core-js/modules/es.object.entries.js"); /* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js"); /* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__); /* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js"); /* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20__); /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js"); /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21__); /* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); /* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22__); /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); /* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js"); /* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25__); /* harmony import */ var datatables_net_dt__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! datatables.net-dt */ "./node_modules/datatables.net-dt/js/dataTables.dataTables.mjs"); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_27__); /* harmony import */ var _include_js_utils__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../../../include/js/utils */ "./include/js/utils.js"); /* harmony import */ var _include_js_utils__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_include_js_utils__WEBPACK_IMPORTED_MODULE_28__); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /** * Created by PhpStorm * User: daniele * Date: 12/03/21 * Time: 11:30 */ __webpack_require__(/*! datatables.net-buttons */ "./node_modules/datatables.net-buttons/js/dataTables.buttons.mjs"); __webpack_require__(/*! datatables.net-fixedcolumns */ "./node_modules/datatables.net-fixedcolumns/js/dataTables.fixedColumns.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ buildSelect2: function buildSelect2(select) { var $select = jquery__WEBPACK_IMPORTED_MODULE_27___default()(select); var placeholder = $select.data("placeholder"); var allowClear = $select.data("view_empty"); var selectValue = $select.data("value"); var keepSelectedAferAjax = $select.data("keep-selected-after-ajax"); var dropdownParent = $select.data("dropdownparent"); if ($select.val() && $select.val().length) selectValue = $select.val(); var url = $select.data("url"); var opts = { placeholder: placeholder, allowClear: allowClear, width: '100%', tags: true, dropdownAutoWidth: true, dropdownParent: dropdownParent ? jquery__WEBPACK_IMPORTED_MODULE_27___default()('#' + dropdownParent) : jquery__WEBPACK_IMPORTED_MODULE_27___default()('body') }; if (url) { opts.ajax = { url: url, dataType: "json", data: function data(params) { var paramsToAjax = $select.data("params"); var ajaxParams = {}; if (paramsToAjax) { for (var _i = 0, _Object$entries = Object.entries(paramsToAjax); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1]; if (typeof value === "string") { if (value.includes("|||")) { var fields = value.split("|||"); value = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + fields[0]).val(); if (!value) value = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + fields[1]).val(); ajaxParams[key] = value; } else ajaxParams[key] = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + value).val(); } else ajaxParams[key] = value; } } ajaxParams.search = params.term; return ajaxParams; }, processResults: function processResults(data) { selectValue = $select.val(); jquery__WEBPACK_IMPORTED_MODULE_27___default().each($select.find("option"), function (key, opt) { if (key > 0) jquery__WEBPACK_IMPORTED_MODULE_27___default()(opt).remove(); }); if (data.items && data.items.length > 0) { data.items.forEach(function (item) { var newOption = new Option(item.text, item.id, false, false); Object.keys(item).forEach(function (key) { if (key !== "template") { newOption.dataset[key] = item[key]; } }); $select.append(newOption); }); } if (keepSelectedAferAjax) { var isMultiple = Array.isArray(selectValue); selectValue = isMultiple ? selectValue : [selectValue]; var selectedOpts = data.items.filter(function (value) { return selectValue.includes(value.id.toString()); }).map(function (item) { return item.id.toString(); }); if (isMultiple) $select.val(selectedOpts);else if (selectedOpts.length > 0) $select.val(selectedOpts[0]); } $select.trigger('change'); return { results: data.items, data: data }; } }; } opts.templateResult = function (option) { var data = $select.data("additional-info"); if (!data) data = {}; if (!option.id) return option.text; data[option.id] = option; $select.data("additional-info", data); if (url) { if (!option.template) return option.text; return jquery__WEBPACK_IMPORTED_MODULE_27___default()(option.template); } var options = $select.data("options"); if (!options) return option.text; var opt; for (var i = 0; i < options.length; i++) { opt = options[i]; if (opt.value === option.id) break; } var html = opt.template; return jquery__WEBPACK_IMPORTED_MODULE_27___default()(html); }; var trigger_change_event = parseInt($select.data("trigger-change-event")); $select.select2(opts); jquery__WEBPACK_IMPORTED_MODULE_27___default()('.select2-selection__rendered').hover(function () { jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).removeAttr('title'); }); if (!selectValue) return; var onchange = $select.attr("onchange"); if (!trigger_change_event) $select.attr("onchange", ""); $select.val(selectValue); $select.trigger('change'); if (trigger_change_event) return; if (onchange) $select.on("change", function () { eval(onchange); }); }, buildDatatables: function buildDatatables(table) { var self = this; var idtable = jquery__WEBPACK_IMPORTED_MODULE_27___default()(table).attr("id"); var $table = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable); var $div_attrs = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#div_datatable_attributes_" + idtable); var use_jquery_loading = $div_attrs.data("use_jquery_loading"); var IWEnv = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#IWEnv").val(); var selectRows = function selectRows() { if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).hasClass('selected')) { jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).removeClass('selected'); } else { $table.DataTable().$('tr.selected').removeClass('selected'); jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).addClass('selected'); } }; var onsuccess = $div_attrs.data("onsuccess"); var preDrawCallback = $div_attrs.data("onpredrawcallback"); var opts = { retrieve: true, searching: $div_attrs.data("searching"), ordering: $div_attrs.data("ordering"), language: { info: $div_attrs.data("infolang"), search: $div_attrs.data("searchlang"), lengthMenu: $div_attrs.data("lengthmenulang"), zeroRecords: $div_attrs.data("zerorecordslang"), infoEmpty: $div_attrs.data("infoemptylang"), processing: $div_attrs.data("processinglang"), infoFiltered: $div_attrs.data("infofilteredlang"), decimal: $div_attrs.data("decimallang"), thousands: $div_attrs.data("thousandslang"), paginate: $div_attrs.data("paginatelang") } }; var order = $div_attrs.data("order"); if (order) opts.order = order; if ($div_attrs.data("height") !== "auto" && (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("height")) > 0) opts.scrollY = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("height")); if ($div_attrs.data("scrollorizzontale")) opts.scrollX = true; if ($div_attrs.data("fixedcolumns")) opts.fixedColumns = true; var labels_buttons = $div_attrs.data("labelsbuttons"); var functions_buttons = $div_attrs.data("functionsbuttons"); var classes_buttons = $div_attrs.data("classesbuttons"); var cols_hidden = $div_attrs.data("colshidden"); var isfullWidth = $div_attrs.data("fullwidth"); var buttons = []; if (cols_hidden && in_array(cols_hidden, "true")) buttons.push({ text: "*", action: function action() { var $hideColumn = jquery__WEBPACK_IMPORTED_MODULE_27___default()(".hideDataTablesColumn" + idtable); if ($hideColumn.is(':visible')) $hideColumn.hide();else $hideColumn.css('display', 'table-cell'); }, titleAttr: $div_attrs.data("titletextshowhidecols") }); if (labels_buttons && labels_buttons.length > 0) { buttons.push({ text: '', className: 'btnFake' }); labels_buttons.map(function (label, key) { buttons.push({ text: label, action: function action() { if (functions_buttons) eval(functions_buttons[key]); }, className: classes_buttons ? classes_buttons[key] : undefined }); }); } if (buttons.length > 0) { opts.dom = "Blfrtip"; opts.buttons = buttons; } opts.preDrawCallback = function () { var _this = this; (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.onVisible)(document.querySelector("#" + idtable), function () { var $tablecont = jquery__WEBPACK_IMPORTED_MODULE_27___default()(_this).closest(".dt-container"); var $dtlength = $tablecont.find(".dt-length"); var $dtbuttons = $tablecont.find(".dt-buttons"); var $dtinfo = $tablecont.find(".dt-info"); var $dtpaging = $tablecont.find(".dt-paging"); if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(_this).hasClass("pure-table") && $dtbuttons.find("button:visible").length === 0) { if ($dtlength.length === 0 || $dtlength.height() === 0) $dtbuttons.css("padding", "0").css("border", "none"); if ($dtlength.height() > 0) $dtbuttons.css("height", "40px"); if ($dtinfo.length > 0 && $dtinfo.text() === "" && $dtpaging.length === 0) $dtinfo.css("padding", "0").css("height", "auto"); } if (isfullWidth) jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll").addClass("full-width"); // se sono definite le widths delle celle e non ci sono colonne nascoste imposto il layout fixed alle datatables // sulle colonne allineate a sinistra imposto il break-word var widthsDefined = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll-head thead th[width]").length; var noHiddenCols = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll-head thead").find(".hideDataTablesColumn").length === 0; if (widthsDefined > 0 && noHiddenCols) { jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper").find(".IWDataTables").css("table-layout", "fixed"); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " tbody td").map(function (i, td) { if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(td).css("text-align") === "left") jquery__WEBPACK_IMPORTED_MODULE_27___default()(td).css("overflow-wrap", "break-word").css("word-wrap", "break-word"); }); } _this.api().columns.adjust(); }); if (preDrawCallback) eval(preDrawCallback); }; var selectRowsTable = function selectRowsTable() { jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " tbody").on('click', 'tr', function () { selectRows(); }); }; if (!use_jquery_loading) { opts.paging = false; opts.initComplete = function (settings, json) { var t = this; // setTimeout(function(){ t.api().columns.adjust(); }, 300); }; if (onsuccess) opts.drawCallback = function (settings) { if (IWEnv === "bootstrap") jquery__WEBPACK_IMPORTED_MODULE_27___default()('[data-toggle=\"tooltip\"]').tooltip(); setTimeout(function () { jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ui-autocomplete-input").autocompleteOnFocusEvent(); jquery__WEBPACK_IMPORTED_MODULE_27___default()(".dt-scroll-body .iwSelect2").each(function () { self.buildSelect2(this); }); eval(onsuccess); }, 300); }; $table.DataTable(opts); selectRowsTable(); return; } if (!$div_attrs.data("paging")) opts.paging = false; var aoColumnDefs = []; for (var i = 0; i < cols_hidden.length; i++) aoColumnDefs.push({ aTargets: [i], bSearchable: true }); opts.aoColumnDefs = aoColumnDefs; if ($div_attrs.data("footerinrows")) opts.footerCallback = function (tfoot, data, start, end, display) { var response = this.api().ajax.json(); var footer = $table.DataTable().table().footer(); var footer_data = response.data.footer; var footer_src = ''; var rows_align = $div_attrs.data("rowsalign"); var t = this; jquery__WEBPACK_IMPORTED_MODULE_27___default().each(footer_data, function (j, v) { footer_src += ''; t.api().columns().every(function (i) { var align = rows_align[i]; var txt_align; switch (align) { case 'R': txt_align = 'style=\"text-align: right;\"'; break; case 'L': txt_align = 'style=\"text-align: left;\"'; break; default: txt_align = 'style=\"text-align: center;\"'; break; } footer_src += '' + footer_data[j][i] + ''; }); footer_src += ''; }); footer.innerHTML = footer_src; }; opts.drawCallback = function (settings) { if (IWEnv === "bootstrap") jquery__WEBPACK_IMPORTED_MODULE_27___default()('[data-toggle=\"tooltip\"]').tooltip(); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_table_nrows").val($table.DataTable().data().count()); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_table_total_rows").val(this.api().page.info().recordsTotal); var data = this.api().ajax.json(); //Salvo in una variabile il contenuto delle righe che può essere recuperato dal onsuccess setTimeout(function () { jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ui-autocomplete-input").autocompleteOnFocusEvent(); (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.reloadComponents)("#" + idtable + " ", true); if (onsuccess) eval(onsuccess); if (IWEnv !== "bootstrap") return; jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " :input").each(function () { if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).attr('type') !== 'checkbox') jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).addClass('form-control'); }); }, 300); }; opts.lengthMenu = $div_attrs.data("lengthmenu"); if ((0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("pagelength")) > 0) opts.pageLength = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("pagelength")); opts.processing = $div_attrs.data("serverside"); opts.serverSide = $div_attrs.data("serverside"); opts.ajax = { url: $div_attrs.data("ajaxurl") }; if ($div_attrs.data("defined-ajax-data")) { opts.ajax.data = $div_attrs.data("defined-ajax-data"); opts.ajax.type = "post"; opts.ajax.dataSrc = function (json) { return json.data.rows; }; } else if ($div_attrs.data("loadformdata")) { opts.ajax.data = function (d) { var inputs = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + $div_attrs.data("formid") + " :input, :checkbox").serializeArray(); var name, value; for (var _i2 = 0; _i2 < inputs.length; _i2++) { if (strpos(inputs[_i2].name, '[') > 0) { name = inputs[_i2].name.substr(0, strpos(inputs[_i2].name, '[')); value = jquery__WEBPACK_IMPORTED_MODULE_27___default()('#' + name).val(); } else { name = inputs[_i2].name; value = inputs[_i2].value; } d[name] = value; } }; opts.ajax.type = "post"; opts.ajax.dataSrc = function (json) { return json.data.rows; }; } /*if (opts.processing) { $("#" + idtable).on('processing.dt', function (e, settings, processing) { //$(e.target).parent().css('overflow', processing ? 'hidden' : 'auto'); $("#" + idtable + " tbody").prepend('
'); }); }*/ var classColumnsAligns = $div_attrs.data("classcolumnsaligns"); var rowsAlign = $div_attrs.data("rowsalign"); var classColumnsVerticalAligns = $div_attrs.data("classcolumnsverticalaligns"); var colsAlign = $div_attrs.data("colsalign"); opts.columns = []; for (var _i3 = 0; _i3 < (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("ncols")); _i3++) opts.columns.push({ data: 'column' + _i3, sClass: classColumnsAligns[rowsAlign[_i3]] + " " + classColumnsVerticalAligns[colsAlign[_i3]] + (cols_hidden[_i3] === "true" ? " hideDataTablesColumn hideDataTablesColumn" + idtable : "") }); new datatables_net_dt__WEBPACK_IMPORTED_MODULE_26__["default"]("#" + idtable, opts); selectRowsTable(); var $footerFilters = jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ts_footer_filters"); $footerFilters.off(); $footerFilters.each(function () { jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).on("keypress", function (event) { var keycode = event.keyCode ? event.keyCode : event.which; console.log(keycode); if (keycode === 13) { reloadTable(jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).data("idtable")); } }); }); }, buildCkEditor: function buildCkEditor(editor) { jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).ckeditor({ title: '', height: jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).data("height"), language: jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).data("language"), skin: 'moono-lisa', uiColor: '#d3d3d3', extraPlugins: 'justify,font,colorbutton', toolbarCanCollapse: true, enterMode: CKEDITOR.ENTER_BR, shiftEnterMode: CKEDITOR.ENTER_P, allowedContent: true, toolbarGroups: [{ name: 'clipboard', groups: ['clipboard', 'undo'] }, { name: 'editing', groups: ['find', 'selection', 'spellchecker'] }, { name: 'links' }, { name: 'insert' }, { name: 'tools' }, { name: 'document', groups: ['mode', 'document', 'doctools'] }, { name: 'basicstyles', groups: ['basicstyles', 'cleanup'] }, { name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align'] }, { name: 'styles' }, { name: 'colors' }] }); }, buildJqueryUploadFile: function buildJqueryUploadFile(elem) { var $elem = jquery__WEBPACK_IMPORTED_MODULE_27___default()(elem); var opts = { url: "ajax.php?JSON&object=UploadedFile&tipoview=jqueryPluginUploadFile&id=" + $elem.attr("id") + "&idupload=" + $elem.data("idupload") + "&is_visualizza_esterno=" + parseInt($elem.data("is_visualizza_esterno")) + "&is_crypted=" + $elem.data("is_crypted") + "&force_db=" + $elem.data("force_db"), fileName: "myfile_" + $elem.attr("id"), dragDropStr: "" + (parseInt($elem.data("idupload")) ? $elem.data("realname") + $elem.data("imgdown") : $elem.data("trascina_file_text")) + "", abortStr: $elem.data("stop_text"), multiple: false, dragdropWidth: "inherit", maxFileCount: 1, showDelete: true, showDownload: true, width: "inherit", extErrorStr: $elem.data("errore_estensioni_text"), uploadStr: $elem.data("sfoglia_text"), onSuccess: function onSuccess(files, data, xhr) { console.log('data'); console.log(data); var idupload = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)(data[1]); if (idupload === 0) { alert(data[0]); return; } jquery__WEBPACK_IMPORTED_MODULE_27___default()("#nomefile_" + $elem.attr("id")).val(files); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#idupload_" + $elem.attr("id")).val(idupload); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#span_dradDropStr_" + $elem.attr("id")).html('' + files + ''); jquery__WEBPACK_IMPORTED_MODULE_27___default()("#filecaricato_" + $elem.attr("id")).css('display', 'none'); jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-progress").hide(); jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-bar").hide(); jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-statusbar").hide(); if ($elem.data("onsuccess_callback")) eval($elem.data("onsuccess_callback")); }, onError: function onError(files, status, errMsg) { footerMsg(1, $elem.data("onError_text"), errMsg); } }; if (parseInt($elem.data("is_foto"))) opts.allowedTypes = "jpg,jpeg,png,bmp,gif,tiff";else if ($elem.data("allowed-types")) opts.allowedTypes = $elem.data("allowed-types"); $elem.uploadFile(opts); } }); /***/ }) }]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzX2pzX2NvbXBvbmVudHNfaXdjb21wb25lbnRzX2pzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMwQztBQUNuQjtBQUN5RDtBQUNoRkssbUJBQU8sQ0FBQywrRkFBd0IsQ0FBQztBQUNqQ0EsbUJBQU8sQ0FBQyw4R0FBNkIsQ0FBQztBQUV0QyxpRUFBZTtFQUNYQyxZQUFZLEVBQUUsU0FBQUEsYUFBVUMsTUFBTSxFQUFDO0lBQzNCLElBQU1DLE9BQU8sR0FBR1AsOENBQUMsQ0FBQ00sTUFBTSxDQUFDO0lBRXpCLElBQU1FLFdBQVcsR0FBR0QsT0FBTyxDQUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9DLElBQU1DLFVBQVUsR0FBR0gsT0FBTyxDQUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdDLElBQUlFLFdBQVcsR0FBR0osT0FBTyxDQUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLElBQU1HLG9CQUFvQixHQUFHTCxPQUFPLENBQUNFLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUNyRSxJQUFNSSxjQUFjLEdBQUdOLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBRXJELElBQUdGLE9BQU8sQ0FBQ08sR0FBRyxDQUFDLENBQUMsSUFBSVAsT0FBTyxDQUFDTyxHQUFHLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEVBQUVKLFdBQVcsR0FBR0osT0FBTyxDQUFDTyxHQUFHLENBQUMsQ0FBQztJQUNyRSxJQUFNRSxHQUFHLEdBQUdULE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUUvQixJQUFJUSxJQUFJLEdBQUc7TUFDUFQsV0FBVyxFQUFFQSxXQUFXO01BQ3hCRSxVQUFVLEVBQUVBLFVBQVU7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ZWJwYWNrOi8vaXJpZGUvLi9hc3NldHMvanMvY29tcG9uZW50cy9pd2NvbXBvbmVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IFBocFN0b3JtXG4gKiBVc2VyOiBkYW5pZWxlXG4gKiBEYXRlOiAxMi8wMy8yMVxuICogVGltZTogMTE6MzBcbiAqL1xuaW1wb3J0IERhdGFUYWJsZSBmcm9tIFwiZGF0YXRhYmxlcy5uZXQtZHRcIjtcbmltcG9ydCAkIGZyb20gXCJqcXVlcnlcIjtcbmltcG9ydCB7Z2V0RmxvYXQsIG9uVmlzaWJsZSwgcmVsb2FkQ29tcG9uZW50c30gZnJvbSBcIi4uLy4uLy4uL2luY2x1ZGUvanMvdXRpbHNcIjtcbnJlcXVpcmUoXCJkYXRhdGFibGVzLm5ldC1idXR0b25zXCIpO1xucmVxdWlyZShcImRhdGF0YWJsZXMubmV0LWZpeGVkY29sdW1uc1wiKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGJ1aWxkU2VsZWN0MjogZnVuY3Rpb24gKHNlbGVjdCl7XG4gICAgICAgIGNvbnN0ICRzZWxlY3QgPSAkKHNlbGVjdCk7XG5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAkc2VsZWN0LmRhdGEoXCJwbGFjZWhvbGRlclwiKTtcbiAgICAgICAgY29uc3QgYWxsb3dDbGVhciA9ICRzZWxlY3QuZGF0YShcInZpZXdfZW1wdHlcIik7XG4gICAgICAgIGxldCBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICBjb25zdCBrZWVwU2VsZWN0ZWRBZmVyQWpheCA9ICRzZWxlY3QuZGF0YShcImtlZXAtc2VsZWN0ZWQtYWZ0ZXItYWpheFwiKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25QYXJlbnQgPSAkc2VsZWN0LmRhdGEoXCJkcm9wZG93bnBhcmVudFwiKTtcblxuICAgICAgICBpZigkc2VsZWN0LnZhbCgpICYmICRzZWxlY3QudmFsKCkubGVuZ3RoKSBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QudmFsKCk7XG4gICAgICAgIGNvbnN0IHVybCA9ICRzZWxlY3QuZGF0YShcInVybFwiKTtcblxuICAgICAgICBsZXQgb3B0cyA9IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGFsbG93Q2xlYXI6IGFsbG93Q2xlYXIsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgdGFnczogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiB0cnVlLFxuICAgICAgICAgICAgZHJvcGRvd25QYXJlbnQ6IGRyb3Bkb3duUGFyZW50ID8gJCgnIycgKyBkcm9wZG93blBhcmVudCkgOiAkKCdib2R5JyksXG4gICAgICAgIH07XG4gICAgICAgIGlmKHVybCl7XG5cbiAgICAgICAgICAgIG9wdHMuYWpheCA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXG4gICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXNUb0FqYXggPSAkc2VsZWN0LmRhdGEoXCJwYXJhbXNcIik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhamF4UGFyYW1zID0ge31cbiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1zVG9BamF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zVG9BamF4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggdmFsdWUuaW5jbHVkZXMoXCJ8fHxcIikpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkcyA9IHZhbHVlLnNwbGl0KFwifHx8XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAkKFwiI1wiICsgZmllbGRzWzBdKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gJChcIiNcIiArIGZpZWxkc1sxXSkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4UGFyYW1zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFqYXhQYXJhbXNba2V5XSA9ICQoXCIjXCIgKyB2YWx1ZSkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgYWpheFBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhamF4UGFyYW1zLnNlYXJjaCA9IHBhcmFtcy50ZXJtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFBhcmFtcztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByb2Nlc3NSZXN1bHRzOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QudmFsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRzZWxlY3QuZmluZChcIm9wdGlvblwiKSwgZnVuY3Rpb24gKGtleSwgb3B0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPiAwKSAkKG9wdCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZihkYXRhLml0ZW1zICYmIGRhdGEuaXRlbXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld09wdGlvbiA9IG5ldyBPcHRpb24oaXRlbS50ZXh0LCBpdGVtLmlkLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gXCJ0ZW1wbGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb24uZGF0YXNldFtrZXldID0gaXRlbVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0LmFwcGVuZChuZXdPcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGtlZXBTZWxlY3RlZEFmZXJBamF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZSA9IGlzTXVsdGlwbGUgPyBzZWxlY3RWYWx1ZSA6IFtzZWxlY3RWYWx1ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdHMgPSBkYXRhLml0ZW1zLmZpbHRlcih2YWx1ZSA9PiBzZWxlY3RWYWx1ZS5pbmNsdWRlcyh2YWx1ZS5pZC50b1N0cmluZygpKSkubWFwKGl0ZW0gPT4gaXRlbS5pZC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc011bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3QudmFsKHNlbGVjdGVkT3B0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHNlbGVjdGVkT3B0cy5sZW5ndGggPiAwKSAkc2VsZWN0LnZhbChzZWxlY3RlZE9wdHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGRhdGEuaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb3B0cy50ZW1wbGF0ZVJlc3VsdCA9IGZ1bmN0aW9uIChvcHRpb24pe1xuICAgICAgICAgICAgbGV0IGRhdGEgPSAkc2VsZWN0LmRhdGEoXCJhZGRpdGlvbmFsLWluZm9cIik7XG4gICAgICAgICAgICBpZighZGF0YSkgZGF0YSA9IHt9O1xuICAgICAgICAgICAgaWYoIW9wdGlvbi5pZCkgcmV0dXJuIG9wdGlvbi50ZXh0O1xuICAgICAgICAgICAgZGF0YVtvcHRpb24uaWRdID0gb3B0aW9uO1xuICAgICAgICAgICAgJHNlbGVjdC5kYXRhKFwiYWRkaXRpb25hbC1pbmZvXCIsIGRhdGEpO1xuXG4gICAgICAgICAgICBpZih1cmwpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYoIW9wdGlvbi50ZW1wbGF0ZSkgcmV0dXJuIG9wdGlvbi50ZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbi50ZW1wbGF0ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSAkc2VsZWN0LmRhdGEoXCJvcHRpb25zXCIpO1xuICAgICAgICAgICAgaWYoIW9wdGlvbnMpIHJldHVybiBvcHRpb24udGV4dDtcbiAgICAgICAgICAgIGxldCBvcHQ7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgb3B0ID0gb3B0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICBpZihvcHQudmFsdWUgPT09IG9wdGlvbi5pZCkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBodG1sID0gb3B0LnRlbXBsYXRlO1xuICAgICAgICAgICAgcmV0dXJuICQoaHRtbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmlnZ2VyX2NoYW5nZV9ldmVudCA9IHBhcnNlSW50KCRzZWxlY3QuZGF0YShcInRyaWdnZXItY2hhbmdlLWV2ZW50XCIpKTtcblxuICAgICAgICAkc2VsZWN0LnNlbGVjdDIob3B0cyk7XG4gICAgICAgICQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5ob3ZlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ3RpdGxlJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKCFzZWxlY3RWYWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG9uY2hhbmdlID0gJHNlbGVjdC5hdHRyKFwib25jaGFuZ2VcIik7XG4gICAgICAgIGlmKCF0cmlnZ2VyX2NoYW5nZV9ldmVudCkgJHNlbGVjdC5hdHRyKFwib25jaGFuZ2VcIiwgXCJcIik7XG4gICAgICAgICRzZWxlY3QudmFsKHNlbGVjdFZhbHVlKTtcbiAgICAgICAgJHNlbGVjdC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgaWYodHJpZ2dlcl9jaGFuZ2VfZXZlbnQpIHJldHVybjtcblxuICAgICAgICBpZihvbmNoYW5nZSlcbiAgICAgICAgICAgICRzZWxlY3Qub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgZXZhbChvbmNoYW5nZSk7XG4gICAgICAgICAgICB9KVxuICAgIH0sXG5cbiAgICBidWlsZERhdGF0YWJsZXM6IGZ1bmN0aW9uICh0YWJsZSl7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBpZHRhYmxlID0gJCh0YWJsZSkuYXR0cihcImlkXCIpO1xuICAgICAgICBjb25zdCAkdGFibGUgPSAkKFwiI1wiICsgaWR0YWJsZSk7XG5cbiAgICAgICAgY29uc3QgJGRpdl9hdHRycyA9ICQoXCIjZGl2X2RhdGF0YWJsZV9hdHRyaWJ1dGVzX1wiICsgaWR0YWJsZSk7XG4gICAgICAgIGNvbnN0IHVzZV9qcXVlcnlfbG9hZGluZyA9ICRkaXZfYXR0cnMuZGF0YShcInVzZV9qcXVlcnlfbG9hZGluZ1wiKTtcbiAgICAgICAgY29uc3QgSVdFbnYgPSAkKFwiI0lXRW52XCIpLnZhbCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RSb3dzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmICggJCh0aGlzKS5oYXNDbGFzcygnc2VsZWN0ZWQnKSApIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJHRhYmxlLkRhdGFUYWJsZSgpLiQoJ3RyLnNlbGVjdGVkJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBvbnN1Y2Nlc3MgPSAkZGl2X2F0dHJzLmRhdGEoXCJvbnN1Y2Nlc3NcIik7XG4gICAgICAgIGNvbnN0IHByZURyYXdDYWxsYmFjayA9ICRkaXZfYXR0cnMuZGF0YShcIm9ucHJlZHJhd2NhbGxiYWNrXCIpO1xuXG4gICAgICAgIGxldCBvcHRzID0ge1xuICAgICAgICAgICAgcmV0cmlldmU6IHRydWUsXG4gICAgICAgICAgICBzZWFyY2hpbmc6ICRkaXZfYXR0cnMuZGF0YShcInNlYXJjaGluZ1wiKSxcbiAgICAgICAgICAgIG9yZGVyaW5nOiAkZGl2X2F0dHJzLmRhdGEoXCJvcmRlcmluZ1wiKSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgICAgICAgaW5mbzogJGRpdl9hdHRycy5kYXRhKFwiaW5mb2xhbmdcIiksXG4gICAgICAgICAgICAgICAgc2VhcmNoOiAkZGl2X2F0dHJzLmRhdGEoXCJzZWFyY2hsYW5nXCIpLFxuICAgICAgICAgICAgICAgIGxlbmd0aE1lbnU6ICRkaXZfYXR0cnMuZGF0YShcImxlbmd0aG1lbnVsYW5nXCIpLFxuICAgICAgICAgICAgICAgIHplcm9SZWNvcmRzOiAkZGl2X2F0dHJzLmRhdGEoXCJ6ZXJvcmVjb3Jkc2xhbmdcIiksXG4gICAgICAgICAgICAgICAgaW5mb0VtcHR5OiAkZGl2X2F0dHJzLmRhdGEoXCJpbmZvZW1wdHlsYW5nXCIpLFxuICAgICAgICAgICAgICAgIHByb2Nlc3Npbmc6ICRkaXZfYXR0cnMuZGF0YShcInByb2Nlc3NpbmdsYW5nXCIpLFxuICAgICAgICAgICAgICAgIGluZm9GaWx0ZXJlZDogJGRpdl9hdHRycy5kYXRhKFwiaW5mb2ZpbHRlcmVkbGFuZ1wiKSxcbiAgICAgICAgICAgICAgICBkZWNpbWFsOiAkZGl2X2F0dHJzLmRhdGEoXCJkZWNpbWFsbGFuZ1wiKSxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHM6ICRkaXZfYXR0cnMuZGF0YShcInRob3VzYW5kc2xhbmdcIiksXG4gICAgICAgICAgICAgICAgcGFnaW5hdGU6ICRkaXZfYXR0cnMuZGF0YShcInBhZ2luYXRlbGFuZ1wiKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSAkZGl2X2F0dHJzLmRhdGEoXCJvcmRlclwiKTtcbiAgICAgICAgaWYob3JkZXIpIG9wdHMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwiaGVpZ2h0XCIpICE9PSBcImF1dG9cIiAmJiBnZXRGbG9hdCgkZGl2X2F0dHJzLmRhdGEoXCJoZWlnaHRcIikpID4gMCkgb3B0cy5zY3JvbGxZID0gZ2V0RmxvYXQoJGRpdl9hdHRycy5kYXRhKFwiaGVpZ2h0XCIpKTtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwic2Nyb2xsb3JpenpvbnRhbGVcIikpIG9wdHMuc2Nyb2xsWCA9IHRydWU7XG4gICAgICAgIGlmKCRkaXZfYXR0cnMuZGF0YShcImZpeGVkY29sdW1uc1wiKSkgb3B0cy5maXhlZENvbHVtbnMgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGxhYmVsc19idXR0b25zID0gJGRpdl9hdHRycy5kYXRhKFwibGFiZWxzYnV0dG9uc1wiKTtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25zX2J1dHRvbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJmdW5jdGlvbnNidXR0b25zXCIpO1xuICAgICAgICBjb25zdCBjbGFzc2VzX2J1dHRvbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2VzYnV0dG9uc1wiKTtcbiAgICAgICAgY29uc3QgY29sc19oaWRkZW4gPSAkZGl2X2F0dHJzLmRhdGEoXCJjb2xzaGlkZGVuXCIpO1xuICAgICAgICBjb25zdCBpc2Z1bGxXaWR0aCA9ICRkaXZfYXR0cnMuZGF0YShcImZ1bGx3aWR0aFwiKTtcbiAgICAgICAgbGV0IGJ1dHRvbnMgPSBbXTtcbiAgICAgICAgaWYoY29sc19oaWRkZW4gJiYgaW5fYXJyYXkoY29sc19oaWRkZW4sIFwidHJ1ZVwiKSlcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogXCIqXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGhpZGVDb2x1bW4gPSAkKFwiLmhpZGVEYXRhVGFibGVzQ29sdW1uXCIgKyBpZHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoJGhpZGVDb2x1bW4uaXMoJzp2aXNpYmxlJykpICRoaWRlQ29sdW1uLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAkaGlkZUNvbHVtbi5jc3MoJ2Rpc3BsYXknLCAndGFibGUtY2VsbCcpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVBdHRyOiAkZGl2X2F0dHJzLmRhdGEoXCJ0aXRsZXRleHRzaG93aGlkZWNvbHNcIilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZihsYWJlbHNfYnV0dG9ucyAmJiBsYWJlbHNfYnV0dG9ucy5sZW5ndGggPiAwKVxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0bkZha2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxhYmVsc19idXR0b25zLm1hcCggKGxhYmVsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZ1bmN0aW9uc19idXR0b25zKSBldmFsKGZ1bmN0aW9uc19idXR0b25zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNfYnV0dG9ucyA/IGNsYXNzZXNfYnV0dG9uc1trZXldIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoYnV0dG9ucy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIG9wdHMuZG9tID0gXCJCbGZydGlwXCI7XG4gICAgICAgICAgICBvcHRzLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgICAgICB9XG5cbiAgICAgICAgb3B0cy5wcmVEcmF3Q2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvblZpc2libGUoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNcIiArIGlkdGFibGUpLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICR0YWJsZWNvbnQgPSAkKHRoaXMpLmNsb3Nlc3QoXCIuZHQtY29udGFpbmVyXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZHRsZW5ndGggPSAkdGFibGVjb250LmZpbmQoXCIuZHQtbGVuZ3RoXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZHRidXR0b25zID0gJHRhYmxlY29udC5maW5kKFwiLmR0LWJ1dHRvbnNcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRkdGluZm8gPSAkdGFibGVjb250LmZpbmQoXCIuZHQtaW5mb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGR0cGFnaW5nID0gJHRhYmxlY29udC5maW5kKFwiLmR0LXBhZ2luZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoXCJwdXJlLXRhYmxlXCIpICYmICRkdGJ1dHRvbnMuZmluZChcImJ1dHRvbjp2aXNpYmxlXCIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkdGxlbmd0aC5sZW5ndGggPT09IDAgfHwgJGR0bGVuZ3RoLmhlaWdodCgpID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkdGJ1dHRvbnMuY3NzKFwicGFkZGluZ1wiLCBcIjBcIikuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZHRsZW5ndGguaGVpZ2h0KCkgPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkdGJ1dHRvbnMuY3NzKFwiaGVpZ2h0XCIsIFwiNDBweFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZHRpbmZvLmxlbmd0aCA+IDAgJiYgJGR0aW5mby50ZXh0KCkgPT09IFwiXCIgJiYgJGR0cGFnaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHRpbmZvLmNzcyhcInBhZGRpbmdcIiwgXCIwXCIpLmNzcyhcImhlaWdodFwiLCBcImF1dG9cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzZnVsbFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIl93cmFwcGVyIC5kdC1zY3JvbGxcIikuYWRkQ2xhc3MoXCJmdWxsLXdpZHRoXCIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBzZSBzb25vIGRlZmluaXRlIGxlIHdpZHRocyBkZWxsZSBjZWxsZSBlIG5vbiBjaSBzb25vIGNvbG9ubmUgbmFzY29zdGUgaW1wb3N0byBpbCBsYXlvdXQgZml4ZWQgYWxsZSBkYXRhdGFibGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIHN1bGxlIGNvbG9ubmUgYWxsaW5lYXRlIGEgc2luaXN0cmEgaW1wb3N0byBpbCBicmVhay13b3JkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoc0RlZmluZWQgPSAkKFwiI1wiICsgaWR0YWJsZSArIFwiX3dyYXBwZXIgLmR0LXNjcm9sbC1oZWFkIHRoZWFkIHRoW3dpZHRoXVwiKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vSGlkZGVuQ29scyA9ICQoXCIjXCIgKyBpZHRhYmxlICsgXCJfd3JhcHBlciAuZHQtc2Nyb2xsLWhlYWQgdGhlYWRcIikuZmluZChcIi5oaWRlRGF0YVRhYmxlc0NvbHVtblwiKS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoc0RlZmluZWQgPiAwICYmIG5vSGlkZGVuQ29scykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIl93cmFwcGVyXCIpLmZpbmQoXCIuSVdEYXRhVGFibGVzXCIpLmNzcyhcInRhYmxlLWxheW91dFwiLCBcImZpeGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIiB0Ym9keSB0ZFwiKS5tYXAoZnVuY3Rpb24gKGksIHRkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGQpLmNzcyhcInRleHQtYWxpZ25cIikgPT09IFwibGVmdFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRkKS5jc3MoXCJvdmVyZmxvdy13cmFwXCIsIFwiYnJlYWstd29yZFwiKS5jc3MoXCJ3b3JkLXdyYXBcIiwgXCJicmVhay13b3JkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGkoKS5jb2x1bW5zLmFkanVzdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByZURyYXdDYWxsYmFjaylcbiAgICAgICAgICAgICAgICBldmFsKHByZURyYXdDYWxsYmFjayk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0Um93c1RhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgK1wiIHRib2R5XCIpLm9uKCAnY2xpY2snLCAndHInLCBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICBzZWxlY3RSb3dzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZighdXNlX2pxdWVyeV9sb2FkaW5nKXtcbiAgICAgICAgICAgIG9wdHMucGFnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRzLmluaXRDb21wbGV0ZSA9IGZ1bmN0aW9uKHNldHRpbmdzLGpzb24pe1xuICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgdC5hcGkoKS5jb2x1bW5zLmFkanVzdCgpOyB9LCAzMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmKG9uc3VjY2VzcylcbiAgICAgICAgICAgICAgICBvcHRzLmRyYXdDYWxsYmFjayA9IGZ1bmN0aW9uKHNldHRpbmdzKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoSVdFbnYgPT09IFwiYm9vdHN0cmFwXCIpICQoJ1tkYXRhLXRvZ2dsZT1cXFwidG9vbHRpcFxcXCJdJykudG9vbHRpcCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnVpLWF1dG9jb21wbGV0ZS1pbnB1dFwiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuZHQtc2Nyb2xsLWJvZHkgLml3U2VsZWN0MlwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkU2VsZWN0Mih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChvbnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJHRhYmxlLkRhdGFUYWJsZShvcHRzKTtcbiAgICAgICAgICAgIHNlbGVjdFJvd3NUYWJsZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoISRkaXZfYXR0cnMuZGF0YShcInBhZ2luZ1wiKSkgb3B0cy5wYWdpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IGFvQ29sdW1uRGVmcyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29sc19oaWRkZW4ubGVuZ3RoOyBpKyspIGFvQ29sdW1uRGVmcy5wdXNoKHsgYVRhcmdldHM6IFtpXSwgYlNlYXJjaGFibGU6IHRydWUgfSk7XG4gICAgICAgIG9wdHMuYW9Db2x1bW5EZWZzID0gYW9Db2x1bW5EZWZzO1xuXG4gICAgICAgIGlmKCRkaXZfYXR0cnMuZGF0YShcImZvb3Rlcmlucm93c1wiKSlcbiAgICAgICAgICAgIG9wdHMuZm9vdGVyQ2FsbGJhY2sgPSBmdW5jdGlvbih0Zm9vdCwgZGF0YSwgc3RhcnQsIGVuZCwgZGlzcGxheSl7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gdGhpcy5hcGkoKS5hamF4Lmpzb24oKTtcbiAgICAgICAgICAgICAgICBsZXQgZm9vdGVyID0gJHRhYmxlLkRhdGFUYWJsZSgpLnRhYmxlKCkuZm9vdGVyKCk7XG4gICAgICAgICAgICAgICAgbGV0IGZvb3Rlcl9kYXRhID0gcmVzcG9uc2UuZGF0YS5mb290ZXI7XG4gICAgICAgICAgICAgICAgbGV0IGZvb3Rlcl9zcmMgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcm93c19hbGlnbiA9ICRkaXZfYXR0cnMuZGF0YShcInJvd3NhbGlnblwiKTtcblxuICAgICAgICAgICAgICAgIGxldCB0ID0gdGhpcztcblxuICAgICAgICAgICAgICAgICQuZWFjaChmb290ZXJfZGF0YSwgZnVuY3Rpb24oaiwgdil7XG4gICAgICAgICAgICAgICAgICAgIGZvb3Rlcl9zcmMgKz0gJzx0cj4nO1xuICAgICAgICAgICAgICAgICAgICB0LmFwaSgpLmNvbHVtbnMoKS5ldmVyeSggZnVuY3Rpb24gKCBpICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFsaWduID0gcm93c19hbGlnbltpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eHRfYWxpZ247XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFsaWduKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0X2FsaWduID0gJ3N0eWxlPVxcXCJ0ZXh0LWFsaWduOiByaWdodDtcXFwiJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dF9hbGlnbiA9ICdzdHlsZT1cXFwidGV4dC1hbGlnbjogbGVmdDtcXFwiJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0X2FsaWduID0gJ3N0eWxlPVxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcIic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyX3NyYyArPSAnPHRoICcgKyB0eHRfYWxpZ24gKyAnPicgKyBmb290ZXJfZGF0YVtqXVtpXSArICc8L3RoPic7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvb3Rlcl9zcmMgKz0gJzwvdHI+JztcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZvb3Rlci5pbm5lckhUTUwgPSBmb290ZXJfc3JjO1xuICAgICAgICAgICAgfVxuICAgICAgICBvcHRzLmRyYXdDYWxsYmFjayA9IGZ1bmN0aW9uKHNldHRpbmdzKXtcbiAgICAgICAgICAgIGlmKElXRW52ID09PSBcImJvb3RzdHJhcFwiKSAkKCdbZGF0YS10b2dnbGU9XFxcInRvb2x0aXBcXFwiXScpLnRvb2x0aXAoKTtcbiAgICAgICAgICAgICQoXCIjXCIgKyBpZHRhYmxlICtcIl90YWJsZV9ucm93c1wiKS52YWwoICR0YWJsZS5EYXRhVGFibGUoKS5kYXRhKCkuY291bnQoKSk7XG4gICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSArIFwiX3RhYmxlX3RvdGFsX3Jvd3NcIikudmFsKCB0aGlzLmFwaSgpLnBhZ2UuaW5mbygpLnJlY29yZHNUb3RhbCApO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYXBpKCkuYWpheC5qc29uKCk7IC8vU2Fsdm8gaW4gdW5hIHZhcmlhYmlsZSBpbCBjb250ZW51dG8gZGVsbGUgcmlnaGUgY2hlIHB1w7IgZXNzZXJlIHJlY3VwZXJhdG8gZGFsIG9uc3VjY2Vzc1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICQoXCIudWktYXV0b2NvbXBsZXRlLWlucHV0XCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICAgICAgICAgICAgIHJlbG9hZENvbXBvbmVudHMoXCIjXCIgKyBpZHRhYmxlICsgXCIgXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmKG9uc3VjY2VzcykgZXZhbChvbnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIGlmKElXRW52ICE9PSBcImJvb3RzdHJhcFwiKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSArIFwiIDppbnB1dFwiKS5lYWNoKGZ1bmN0aW9uKCl7IGlmKCQodGhpcykuYXR0cigndHlwZScpICE9PSAnY2hlY2tib3gnKSQodGhpcykuYWRkQ2xhc3MoJ2Zvcm0tY29udHJvbCcpO30pXG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgICAgIG9wdHMubGVuZ3RoTWVudSA9ICRkaXZfYXR0cnMuZGF0YShcImxlbmd0aG1lbnVcIik7XG4gICAgICAgIGlmKGdldEZsb2F0KCRkaXZfYXR0cnMuZGF0YShcInBhZ2VsZW5ndGhcIikpID4gMCkgb3B0cy5wYWdlTGVuZ3RoID0gZ2V0RmxvYXQoJGRpdl9hdHRycy5kYXRhKFwicGFnZWxlbmd0aFwiKSk7XG4gICAgICAgIG9wdHMucHJvY2Vzc2luZyA9ICRkaXZfYXR0cnMuZGF0YShcInNlcnZlcnNpZGVcIik7XG4gICAgICAgIG9wdHMuc2VydmVyU2lkZSA9ICRkaXZfYXR0cnMuZGF0YShcInNlcnZlcnNpZGVcIik7XG4gICAgICAgIG9wdHMuYWpheCA9IHsgdXJsOiAkZGl2X2F0dHJzLmRhdGEoXCJhamF4dXJsXCIpfTtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwiZGVmaW5lZC1hamF4LWRhdGFcIikpe1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGEgPSAkZGl2X2F0dHJzLmRhdGEoXCJkZWZpbmVkLWFqYXgtZGF0YVwiKTtcbiAgICAgICAgICAgIG9wdHMuYWpheC50eXBlID0gXCJwb3N0XCI7XG4gICAgICAgICAgICBvcHRzLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pe1xuICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmRhdGEucm93cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKCRkaXZfYXR0cnMuZGF0YShcImxvYWRmb3JtZGF0YVwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGEgPSBmdW5jdGlvbiAoZCl7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0cyA9ICQoXCIjXCIgKyAkZGl2X2F0dHJzLmRhdGEoXCJmb3JtaWRcIikgKyBcIiA6aW5wdXQsIDpjaGVja2JveFwiKS5zZXJpYWxpemVBcnJheSgpO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lLCB2YWx1ZTtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKGlucHV0c1tpXS5uYW1lLCdbJykgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gaW5wdXRzW2ldLm5hbWUuc3Vic3RyKDAsIHN0cnBvcyhpbnB1dHNbaV0ubmFtZSwnWycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJCgnIycgKyBuYW1lKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbnB1dHNbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW5wdXRzW2ldLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRzLmFqYXgudHlwZSA9IFwicG9zdFwiO1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGFTcmMgPSBmdW5jdGlvbihqc29uKXtcbiAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5kYXRhLnJvd3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyppZiAob3B0cy5wcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSkub24oJ3Byb2Nlc3NpbmcuZHQnLCBmdW5jdGlvbiAoZSwgc2V0dGluZ3MsIHByb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyQoZS50YXJnZXQpLnBhcmVudCgpLmNzcygnb3ZlcmZsb3cnLCBwcm9jZXNzaW5nID8gJ2hpZGRlbicgOiAnYXV0bycpO1xuICAgICAgICAgICAgICAgICQoXCIjXCIgKyBpZHRhYmxlICsgXCIgdGJvZHlcIikucHJlcGVuZCgnPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0qL1xuICAgICAgICBjb25zdCBjbGFzc0NvbHVtbnNBbGlnbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2NvbHVtbnNhbGlnbnNcIik7XG4gICAgICAgIGNvbnN0IHJvd3NBbGlnbiA9ICRkaXZfYXR0cnMuZGF0YShcInJvd3NhbGlnblwiKTtcbiAgICAgICAgY29uc3QgY2xhc3NDb2x1bW5zVmVydGljYWxBbGlnbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2NvbHVtbnN2ZXJ0aWNhbGFsaWduc1wiKTtcbiAgICAgICAgY29uc3QgY29sc0FsaWduID0gJGRpdl9hdHRycy5kYXRhKFwiY29sc2FsaWduXCIpO1xuICAgICAgICBvcHRzLmNvbHVtbnMgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGdldEZsb2F0KCRkaXZfYXR0cnMuZGF0YShcIm5jb2xzXCIpKTsgaSsrKVxuICAgICAgICAgICAgb3B0cy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIGRhdGE6ICdjb2x1bW4nICsgaSxcbiAgICAgICAgICAgICAgICBzQ2xhc3M6IGNsYXNzQ29sdW1uc0FsaWduc1tyb3dzQWxpZ25baV1dICsgXCIgXCIgKyBjbGFzc0NvbHVtbnNWZXJ0aWNhbEFsaWduc1tjb2xzQWxpZ25baV1dICsgKGNvbHNfaGlkZGVuW2ldID09PSBcInRydWVcIiA/IFwiIGhpZGVEYXRhVGFibGVzQ29sdW1uIGhpZGVEYXRhVGFibGVzQ29sdW1uXCIgKyBpZHRhYmxlIDogXCJcIilcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG5ldyBEYXRhVGFibGUoXCIjXCIgKyBpZHRhYmxlLCBvcHRzKTtcbiAgICAgICAgc2VsZWN0Um93c1RhYmxlKCk7XG4gICAgICAgIGNvbnN0ICRmb290ZXJGaWx0ZXJzID0gJChcIi50c19mb290ZXJfZmlsdGVyc1wiKTtcbiAgICAgICAgJGZvb3RlckZpbHRlcnMub2ZmKCk7XG4gICAgICAgICRmb290ZXJGaWx0ZXJzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5vbihcImtleXByZXNzXCIsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5Y29kZSA9IChldmVudC5rZXlDb2RlID8gZXZlbnQua2V5Q29kZSA6IGV2ZW50LndoaWNoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhrZXljb2RlKTtcbiAgICAgICAgICAgICAgICBpZihrZXljb2RlID09PSAxMyl7XG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZFRhYmxlKCQodGhpcykuZGF0YShcImlkdGFibGVcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIGJ1aWxkQ2tFZGl0b3I6IGZ1bmN0aW9uIChlZGl0b3Ipe1xuICAgICAgICAkKGVkaXRvcikuY2tlZGl0b3Ioe1xuICAgICAgICAgICAgdGl0bGU6JycsXG4gICAgICAgICAgICBoZWlnaHQ6ICQoZWRpdG9yKS5kYXRhKFwiaGVpZ2h0XCIpLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICQoZWRpdG9yKS5kYXRhKFwibGFuZ3VhZ2VcIiksXG4gICAgICAgICAgICBza2luOiAnbW9vbm8tbGlzYScsXG4gICAgICAgICAgICB1aUNvbG9yOiAnI2QzZDNkMycsXG4gICAgICAgICAgICBleHRyYVBsdWdpbnM6ICdqdXN0aWZ5LGZvbnQsY29sb3JidXR0b24nLFxuICAgICAgICAgICAgdG9vbGJhckNhbkNvbGxhcHNlOiB0cnVlLFxuICAgICAgICAgICAgZW50ZXJNb2RlIDogQ0tFRElUT1IuRU5URVJfQlIsXG4gICAgICAgICAgICBzaGlmdEVudGVyTW9kZTogQ0tFRElUT1IuRU5URVJfUCxcbiAgICAgICAgICAgIGFsbG93ZWRDb250ZW50OiB0cnVlLFxuICAgICAgICAgICAgdG9vbGJhckdyb3VwczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2NsaXBib2FyZCcsICAgZ3JvdXBzOiBbICdjbGlwYm9hcmQnLCAndW5kbycgXSB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2VkaXRpbmcnLCAgICAgZ3JvdXBzOiBbICdmaW5kJywgJ3NlbGVjdGlvbicsICdzcGVsbGNoZWNrZXInIF0gfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdsaW5rcycgfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdpbnNlcnQnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAndG9vbHMnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnZG9jdW1lbnQnLCAgICBncm91cHM6IFsgJ21vZGUnLCAnZG9jdW1lbnQnLCAnZG9jdG9vbHMnIF0gfSxcblxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2Jhc2ljc3R5bGVzJywgZ3JvdXBzOiBbICdiYXNpY3N0eWxlcycsICdjbGVhbnVwJyBdIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAncGFyYWdyYXBoJywgICBncm91cHM6IFsgJ2xpc3QnLCAnaW5kZW50JywgJ2Jsb2NrcycsICdhbGlnbicgXSB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ3N0eWxlcycgfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdjb2xvcnMnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICB9LFxuXG4gICAgYnVpbGRKcXVlcnlVcGxvYWRGaWxlOiBmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICBjb25zdCAkZWxlbSA9ICQoZWxlbSk7XG5cbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJhamF4LnBocD9KU09OJm9iamVjdD1VcGxvYWRlZEZpbGUmdGlwb3ZpZXc9anF1ZXJ5UGx1Z2luVXBsb2FkRmlsZSZpZD1cIiArICRlbGVtLmF0dHIoXCJpZFwiKSAgKyBcIiZpZHVwbG9hZD1cIiArICRlbGVtLmRhdGEoXCJpZHVwbG9hZFwiKSArIFwiJmlzX3Zpc3VhbGl6emFfZXN0ZXJubz1cIiArIHBhcnNlSW50KCRlbGVtLmRhdGEoXCJpc192aXN1YWxpenphX2VzdGVybm9cIikpICsgXCImaXNfY3J5cHRlZD1cIiArICRlbGVtLmRhdGEoXCJpc19jcnlwdGVkXCIpICsgXCImZm9yY2VfZGI9XCIgKyAkZWxlbS5kYXRhKFwiZm9yY2VfZGJcIiksXG4gICAgICAgICAgICBmaWxlTmFtZTogXCJteWZpbGVfXCIgKyAkZWxlbS5hdHRyKFwiaWRcIiksXG4gICAgICAgICAgICBkcmFnRHJvcFN0cjogXCI8c3BhbiBpZD0nc3Bhbl9kcmFkRHJvcFN0cl9cIiArICRlbGVtLmF0dHIoXCJpZFwiKSArIFwiJz48Yj5cIiArIChwYXJzZUludCgkZWxlbS5kYXRhKFwiaWR1cGxvYWRcIikpID8gJGVsZW0uZGF0YShcInJlYWxuYW1lXCIpICsgJGVsZW0uZGF0YShcImltZ2Rvd25cIikgOiAkZWxlbS5kYXRhKFwidHJhc2NpbmFfZmlsZV90ZXh0XCIpICkrIFwiPC9iPjwvc3Bhbj5cIixcbiAgICAgICAgICAgIGFib3J0U3RyOiAkZWxlbS5kYXRhKFwic3RvcF90ZXh0XCIpLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ2Ryb3BXaWR0aDogXCJpbmhlcml0XCIsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IDEsXG4gICAgICAgICAgICBzaG93RGVsZXRlOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0Rvd25sb2FkOiB0cnVlLFxuICAgICAgICAgICAgd2lkdGg6IFwiaW5oZXJpdFwiLFxuICAgICAgICAgICAgZXh0RXJyb3JTdHI6ICRlbGVtLmRhdGEoXCJlcnJvcmVfZXN0ZW5zaW9uaV90ZXh0XCIpLFxuICAgICAgICAgICAgdXBsb2FkU3RyOiAkZWxlbS5kYXRhKFwic2ZvZ2xpYV90ZXh0XCIpLFxuICAgICAgICAgICAgb25TdWNjZXNzOiAoZmlsZXMsZGF0YSx4aHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZGF0YScpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkdXBsb2FkID0gZ2V0RmxvYXQoZGF0YVsxXSk7XG4gICAgICAgICAgICAgICAgaWYoaWR1cGxvYWQgPT09IDApe1xuICAgICAgICAgICAgICAgICAgICBhbGVydChkYXRhWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkKFwiI25vbWVmaWxlX1wiICsgJGVsZW0uYXR0cihcImlkXCIpKS52YWwoZmlsZXMpO1xuICAgICAgICAgICAgICAgICQoXCIjaWR1cGxvYWRfXCIgKyAkZWxlbS5hdHRyKFwiaWRcIikpLnZhbChpZHVwbG9hZCk7XG4gICAgICAgICAgICAgICAgJChcIiNzcGFuX2RyYWREcm9wU3RyX1wiICsgJGVsZW0uYXR0cihcImlkXCIpKS5odG1sKCc8Yj4nK2ZpbGVzKyc8L2I+Jyk7XG4gICAgICAgICAgICAgICAgJChcIiNmaWxlY2FyaWNhdG9fXCIgKyAkZWxlbS5hdHRyKFwiaWRcIikpLmNzcygnZGlzcGxheScsJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAkKFwiLmFqYXgtZmlsZS11cGxvYWQtcHJvZ3Jlc3NcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIuYWpheC1maWxlLXVwbG9hZC1iYXJcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIuYWpheC1maWxlLXVwbG9hZC1zdGF0dXNiYXJcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGlmKCRlbGVtLmRhdGEoXCJvbnN1Y2Nlc3NfY2FsbGJhY2tcIikpIGV2YWwoJGVsZW0uZGF0YShcIm9uc3VjY2Vzc19jYWxsYmFja1wiKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24oZmlsZXMsc3RhdHVzLGVyck1zZyl7XG4gICAgICAgICAgICAgICAgZm9vdGVyTXNnKDEsICRlbGVtLmRhdGEoXCJvbkVycm9yX3RleHRcIiksZXJyTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihwYXJzZUludCgkZWxlbS5kYXRhKFwiaXNfZm90b1wiKSkpXG4gICAgICAgICAgICBvcHRzLmFsbG93ZWRUeXBlcyA9IFwianBnLGpwZWcscG5nLGJtcCxnaWYsdGlmZlwiO1xuICAgICAgICBlbHNlIGlmKCRlbGVtLmRhdGEoXCJhbGxvd2VkLXR5cGVzXCIpKVxuICAgICAgICAgICAgb3B0cy5hbGxvd2VkVHlwZXMgPSAkZWxlbS5kYXRhKFwiYWxsb3dlZC10eXBlc1wiKTtcblxuICAgICAgICAkZWxlbS51cGxvYWRGaWxlKG9wdHMpXG4gICAgfVxufSJdLCJuYW1lcyI6WyJEYXRhVGFibGUiLCIkIiwiZ2V0RmxvYXQiLCJvblZpc2libGUiLCJyZWxvYWRDb21wb25lbnRzIiwicmVxdWlyZSIsImJ1aWxkU2VsZWN0MiIsInNlbGVjdCIsIiRzZWxlY3QiLCJwbGFjZWhvbGRlciIsImRhdGEiLCJhbGxvd0NsZWFyIiwic2VsZWN0VmFsdWUiLCJrZWVwU2VsZWN0ZWRBZmVyQWpheCIsImRyb3Bkb3duUGFyZW50IiwidmFsIiwibGVuZ3RoIiwidXJsIiwib3B0cyIsIndpZHRoIiwidGFncyIsImRyb3Bkb3duQXV0b1dpZHRoIiwiYWpheCIsImRhdGFUeXBlIiwicGFyYW1zIiwicGFyYW1zVG9BamF4IiwiYWpheFBhcmFtcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiT2JqZWN0IiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5Iiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImZpZWxkcyIsInNwbGl0Iiwic2VhcmNoIiwidGVybSIsInByb2Nlc3NSZXN1bHRzIiwiZWFjaCIsImZpbmQiLCJvcHQiLCJyZW1vdmUiLCJpdGVtcyIsImZvckVhY2giLCJpdGVtIiwibmV3T3B0aW9uIiwiT3B0aW9uIiwidGV4dCIsImlkIiwia2V5cyIsImRhdGFzZXQiLCJhcHBlbmQiLCJpc011bHRpcGxlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0ZWRPcHRzIiwiZmlsdGVyIiwidG9TdHJpbmciLCJtYXAiLCJ0cmlnZ2VyIiwicmVzdWx0cyIsInRlbXBsYXRlUmVzdWx0Iiwib3B0aW9uIiwidGVtcGxhdGUiLCJvcHRpb25zIiwiaSIsImh0bWwiLCJ0cmlnZ2VyX2NoYW5nZV9ldmVudCIsInBhcnNlSW50Iiwic2VsZWN0MiIsImhvdmVyIiwicmVtb3ZlQXR0ciIsIm9uY2hhbmdlIiwiYXR0ciIsIm9uIiwiZXZhbCIsImJ1aWxkRGF0YXRhYmxlcyIsInRhYmxlIiwic2VsZiIsImlkdGFibGUiLCIkdGFibGUiLCIkZGl2X2F0dHJzIiwidXNlX2pxdWVyeV9sb2FkaW5nIiwiSVdFbnYiLCJzZWxlY3RSb3dzIiwiaGFzQ2xhc3MiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwib25zdWNjZXNzIiwicHJlRHJhd0NhbGxiYWNrIiwicmV0cmlldmUiLCJzZWFyY2hpbmciLCJvcmRlcmluZyIsImxhbmd1YWdlIiwiaW5mbyIsImxlbmd0aE1lbnUiLCJ6ZXJvUmVjb3JkcyIsImluZm9FbXB0eSIsInByb2Nlc3NpbmciLCJpbmZvRmlsdGVyZWQiLCJkZWNpbWFsIiwidGhvdXNhbmRzIiwicGFnaW5hdGUiLCJvcmRlciIsInNjcm9sbFkiLCJzY3JvbGxYIiwiZml4ZWRDb2x1bW5zIiwibGFiZWxzX2J1dHRvbnMiLCJmdW5jdGlvbnNfYnV0dG9ucyIsImNsYXNzZXNfYnV0dG9ucyIsImNvbHNfaGlkZGVuIiwiaXNmdWxsV2lkdGgiLCJidXR0b25zIiwiaW5fYXJyYXkiLCJwdXNoIiwiYWN0aW9uIiwiJGhpZGVDb2x1bW4iLCJpcyIsImhpZGUiLCJjc3MiLCJ0aXRsZUF0dHIiLCJjbGFzc05hbWUiLCJsYWJlbCIsInVuZGVmaW5lZCIsImRvbSIsIl90aGlzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiJHRhYmxlY29udCIsImNsb3Nlc3QiLCIkZHRsZW5ndGgiLCIkZHRidXR0b25zIiwiJGR0aW5mbyIsIiRkdHBhZ2luZyIsImhlaWdodCIsIndpZHRoc0RlZmluZWQiLCJub0hpZGRlbkNvbHMiLCJ0ZCIsImFwaSIsImNvbHVtbnMiLCJhZGp1c3QiLCJzZWxlY3RSb3dzVGFibGUiLCJwYWdpbmciLCJpbml0Q29tcGxldGUiLCJzZXR0aW5ncyIsImpzb24iLCJ0IiwiZHJhd0NhbGxiYWNrIiwidG9vbHRpcCIsInNldFRpbWVvdXQiLCJhdXRvY29tcGxldGVPbkZvY3VzRXZlbnQiLCJhb0NvbHVtbkRlZnMiLCJhVGFyZ2V0cyIsImJTZWFyY2hhYmxlIiwiZm9vdGVyQ2FsbGJhY2siLCJ0Zm9vdCIsInN0YXJ0IiwiZW5kIiwiZGlzcGxheSIsInJlc3BvbnNlIiwiZm9vdGVyIiwiZm9vdGVyX2RhdGEiLCJmb290ZXJfc3JjIiwicm93c19hbGlnbiIsImoiLCJ2IiwiZXZlcnkiLCJhbGlnbiIsInR4dF9hbGlnbiIsImlubmVySFRNTCIsImNvdW50IiwicGFnZSIsInJlY29yZHNUb3RhbCIsInBhZ2VMZW5ndGgiLCJzZXJ2ZXJTaWRlIiwidHlwZSIsImRhdGFTcmMiLCJyb3dzIiwiZCIsImlucHV0cyIsInNlcmlhbGl6ZUFycmF5IiwibmFtZSIsInN0cnBvcyIsInN1YnN0ciIsImNsYXNzQ29sdW1uc0FsaWducyIsInJvd3NBbGlnbiIsImNsYXNzQ29sdW1uc1ZlcnRpY2FsQWxpZ25zIiwiY29sc0FsaWduIiwic0NsYXNzIiwiJGZvb3RlckZpbHRlcnMiLCJvZmYiLCJldmVudCIsImtleWNvZGUiLCJrZXlDb2RlIiwid2hpY2giLCJjb25zb2xlIiwibG9nIiwicmVsb2FkVGFibGUiLCJidWlsZENrRWRpdG9yIiwiZWRpdG9yIiwiY2tlZGl0b3IiLCJ0aXRsZSIsInNraW4iLCJ1aUNvbG9yIiwiZXh0cmFQbHVnaW5zIiwidG9vbGJhckNhbkNvbGxhcHNlIiwiZW50ZXJNb2RlIiwiQ0tFRElUT1IiLCJFTlRFUl9CUiIsInNoaWZ0RW50ZXJNb2RlIiwiRU5URVJfUCIsImFsbG93ZWRDb250ZW50IiwidG9vbGJhckdyb3VwcyIsImdyb3VwcyIsImJ1aWxkSnF1ZXJ5VXBsb2FkRmlsZSIsImVsZW0iLCIkZWxlbSIsImZpbGVOYW1lIiwiZHJhZ0Ryb3BTdHIiLCJhYm9ydFN0ciIsIm11bHRpcGxlIiwiZHJhZ2Ryb3BXaWR0aCIsIm1heEZpbGVDb3VudCIsInNob3dEZWxldGUiLCJzaG93RG93bmxvYWQiLCJleHRFcnJvclN0ciIsInVwbG9hZFN0ciIsIm9uU3VjY2VzcyIsImZpbGVzIiwieGhyIiwiaWR1cGxvYWQiLCJhbGVydCIsIm9uRXJyb3IiLCJzdGF0dXMiLCJlcnJNc2ciLCJmb290ZXJNc2ciLCJhbGxvd2VkVHlwZXMiLCJ1cGxvYWRGaWxlIl0sInNvdXJjZVJvb3QiOiIifQ==