<?php

use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;

/* @public_path/build/assets_js_common_js.js */
class __TwigTemplate_c5d26cab10fdc02c3f7392c6b0edf9be64e44d982899f90a7d646c61b8c3daa3 extends Template
{
    private $source;
    private $macros = [];

    public function __construct(Environment $env)
    {
        parent::__construct($env);

        $this->source = $this->getSourceContext();

        $this->parent = false;

        $this->blocks = [
        ];
    }

    protected function doDisplay(array $context, array $blocks = [])
    {
        $macros = $this->macros;
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/assets_js_common_js.js"));

        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/assets_js_common_js.js"));

        yield "(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"assets_js_common_js\"],{

/***/ \"./assets/js/common.js\":
/*!*****************************!*\\
  !*** ./assets/js/common.js ***!
  \\*****************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/* provided dependency */ var \$ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");
__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");

__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");

__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");

__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");

__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");

__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");

__webpack_require__(/*! core-js/modules/es.array.for-each.js */ \"./node_modules/core-js/modules/es.array.for-each.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");

__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");

__webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");

__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");

__webpack_require__(/*! core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");

__webpack_require__(/*! core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");

__webpack_require__(/*! core-js/modules/es.date.to-string.js */ \"./node_modules/core-js/modules/es.date.to-string.js\");

__webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");

__webpack_require__(/*! core-js/modules/es.array.slice.js */ \"./node_modules/core-js/modules/es.array.slice.js\");

__webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");

var clickevent = '';
var isInserting = false;
module.exports = {
  defaultPlaceHolder: \"Rechercher...\",
  datagrid_obj: {
    dataSource: {},
    height: \"auto\",
    maxHeight: 500,
    columnMinWidth: 50,
    rowAlternationEnabled: true,
    columnAutoWidth: true,
    showBorders: true,
    loadPanel: {
      enabled: true
    },
    searchPanel: {
      visible: true,
      width: 800,
      placeholder: \"Rechercher...\"
    },
    paging: {
      pageSize: 10
    },
    pager: {
      visible: true,
      allowedPageSizes: [10, 100, 'all'],
      showPageSizeSelector: true,
      showInfo: true,
      showNavigationButtons: true
    },
    rowDragging: {
      allowReordering: false,
      dropFeedbackMode: \"push\",
      onReorder: function onReorder(e) {
        var visibleRows = e.component.getVisibleRows(),
            newOrderIndex = visibleRows[e.toIndex].data.rang_tri,
            d = \$.Deferred();
        var dataSource = e.component.getDataSource().store();
        dataSource.update(e.itemData.id, {
          rang_tri: newOrderIndex
        }).then(function () {
          e.component.refresh().then(d.resolve, d.reject);
        }, d.reject);
        e.promise = d.promise();
      }
    },
    columns: {},
    onCellPrepared: function onCellPrepared(e) {
      if (e.rowType === \"data\" && e.column.command === \"edit\") {
        var isEditing = e.row.isEditing,
            \$links = e.cellElement.find(\".dx-link\");
        \$links.text(\"\");

        if (isEditing) {
          \$links.filter(\".dx-link-save\").dxButton({
            icon: \"save\"
          });
          \$links.filter(\".dx-link-cancel\").dxButton({
            icon: \"revert\"
          });
        } else {
          \$links.filter(\".dx-link-edit\").dxButton({
            icon: \"edit\"
          });
          \$links.filter(\".dx-link-delete\").dxButton({
            icon: \"trash\"
          });
        }
      }
    }
  },
  //data simple
  datagridSimple: {
    // remoteOperations: {groupPaging: true},
    allowColumnResizing: true,
    editing: {
      mode: \"row\",
      allowUpdating: true,
      allowDeleting: true,
      allowAdding: true
    },
    onRowUpdating: function onRowUpdating(e) {
      var checkPath = \$(e.element).data('checkpath');
      var customStore = e.component.option(\"dataSource\");
      var newRowData = e.newData;
      var grid = e.component;
      var key = e.key;

      if (checkPath) {
        e.cancel = true;
        \$.ajax({
          url: checkPath + '/' + key,
          type: \"post\",
          dataType: \"json\",
          data: newRowData,
          success: function success(e) {
            customStore.update(key, newRowData).done(function () {
              grid.refresh();
              grid.cancelEditData();
            });
          },
          error: function error(result) {
            e.cancel = true;
          }
        });
      }
    },
    onRowInserting: function onRowInserting(e) {
      var checkPath = \$(e.element).data('checkpath');
      var customStore = e.component.option(\"dataSource\");
      var newRowData = e.data;
      var grid = e.component;

      if (checkPath) {
        e.cancel = true;
        \$.ajax({
          url: checkPath,
          type: \"post\",
          dataType: \"json\",
          data: newRowData,
          success: function success(e) {
            customStore.insert(newRowData).done(function () {
              grid.refresh();
              grid.cancelEditData();
            });
          },
          error: function error(result) {
            e.cancel = true;
          }
        });
      }
    },
    onToolbarPreparing: function onToolbarPreparing(e) {
      var dataGrid = e.component;
      var toolbarItems = e.toolbarOptions.items;
      var searchPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"searchPanel\";
      })[0];

      if (searchPanel) {
        searchPanel.location = \"before\";
        e.toolbarOptions.items.unshift({
          location: \"after\",
          widget: \"dxButton\",
          options: {
            icon: \"refresh\",
            onClick: function onClick() {
              dataGrid.refresh();
            }
          }
        });
      }
    }
  },
  //data full
  datagridFull: {
    allowColumnReordering: true,
    allowColumnResizing: true,
    selection: {
      mode: \"multiple\",
      showCheckBoxesMode: 'always',
      deferred: true
    },
    filterRow: {
      visible: true,
      applyFilter: \"auto\"
    },
    headerFilter: {
      visible: true
    },
    columnChooser: {
      enabled: true
    },
    \"export\": {
      enabled: true,
      allowExportSelectedData: true,
      texts: {
        exportAll: 'Exporter tout'
      }
    },
    onExporting: function onExporting(e) {
      e.fileName = \$(e.element).data('exportname');
    },
    onRowDblClick: function onRowDblClick(e) {
      e.component.selectRows([e.key], false);
      var url = \$('#infos_list').data('showlink').split('/');
      url[url.length - 1] = e.data.id; //Turbo.visit(url.join('/'));

      window.open(url.join('/'), \"_blank\");
    },
    onEditorPreparing: function onEditorPreparing(e) {
      if (e.parentType === \"filterRow\") {
        e.updateValueTimeout = 1700;
      }
    },
    onContentReady: function onContentReady(e) {
      e.component.endCustomLoading();
      var columns = e.component.getVisibleColumns(); // Parcourir les colonnes pour vérifier si l'une d'entre elles est filtrée

      for (var i = 0; i < columns.length; i++) {
        var headerElement = e.element.find(\".dx-editor-cell [aria-describedby=\" + columns[i].headerId + \"]\");
        headerElement.removeClass('border2-orange');

        if (columns[i].filterValues && columns[i].filterValues.length > 0 || columns[i].filterValue) {
          // Ajouter une bordure de couleur à la colonne filtrée
          headerElement.addClass(\"border2-orange\");
        }
      }
    },
    onInitialized: function onInitialized(e) {
      e.component.beginCustomLoading();
    },
    onContextMenuPreparing: function onContextMenuPreparing(e) {
      if (e.target == \"content\") {
        // e.items can be undefined
        if (!e.items) e.items = []; // Add a custom menu item

        e.items.push({
          icon: 'export',
          template: \"<span style='font-size: 1rem;'><i class='fa fa-plus me-2'></i>Ouvrir dans une nouvelle page</span>\",
          onItemClick: function onItemClick() {
            var base_url = window.location.origin;
            var url = \$('#infos_list').data('showlink').split('/');

            if (e.component) {
              e.component.selectRows([e.row.key], false);
            }

            if (e.row.key.id) {
              var id = e.row.key.id;

              if (e.row.key.e_id) {
                id += '?id_equipement=' + e.row.key.e_id;
              }

              url[url.length - 1] = id;
            } else {
              url[url.length - 1] = e.row.key;
            }

            window.open(base_url + url.join('/'), \"_blank\");
          }
        });
      }
    },
    onToolbarPreparing: function onToolbarPreparing(e) {
      var dataGrid = e.component;
      var toolbarItems = e.toolbarOptions.items;
      var classEnregistrerFiltre = '';
      var exportPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"exportButton\";
      })[0];
      exportPanel.location = \"before\";
      var searchPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"searchPanel\";
      })[0];
      searchPanel.location = \"before\";

      if (\$('body').data('responsable') != \"1\") {
        classEnregistrerFiltre = 'hide';
      }

      e.toolbarOptions.onItemRendered = function (element) {
        if (element.itemData.id == \"undo\") element.itemElement[0].title = 'Retour';
        if (element.itemData.id == \"rafraichir\") element.itemElement[0].title = 'Rafraichir';
        if (element.itemData.id == \"exportpdf\") element.itemElement[0].title = 'Exporter en pdf';

        if (element.itemData.name == \"exportButton\") {
          \$(element.itemElement[0]).children('.dx-toolbar-item-content').children('.dx-datagrid-export-button').attr('title', 'Export en xlsx');
        }
      };

      e.toolbarOptions.items.unshift({
        location: \"after\",
        widget: \"dxButton\",
        options: {
          text: \"Mes filtres\",
          onClick: function onClick() {
            var popup_list_filter = \$(\"#popup-list-filter\").dxPopup('instance');
            popup_list_filter.show();
          }
        }
      }, {
        location: \"after\",
        widget: \"dxButton\",
        options: {
          text: \"Enregistrer\",
          id: \"openpopup\",
          elementAttr: {
            \"class\": classEnregistrerFiltre,
            id: \"openpopup\"
          }
        }
      }); // pour la liste client, on ajoute un bouton pour dénombrer

      if (\$(dataGrid.element()).data('page') == 'Client') {
        e.toolbarOptions.items.unshift({
          location: \"after\",
          widget: \"dxButton\",
          onClick: function onClick() {
            var filtres = e.component.getCombinedFilter(true);
            \$.ajax({
              url: '/clients/get/clients/denombrement',
              dataType: \"json\",
              type: \"post\",
              data: {
                'filtres': filtres
              },
              success: function success(result) {
                DevExpress.ui.dialog.alert(\"Nombre de numéro de série: \" + result.total_unique, \"Dénombrement\", {
                  width: 400,
                  height: 200,
                  showCloseButton: true
                });
              },
              error: function error() {
                console.log('erreur');
              },
              timeout: 0
            });
          },
          options: {
            text: \"Dénombrer\"
          }
        });
      }

      e.toolbarOptions.items.unshift({
        id: \"undo\",
        location: \"after\",
        widget: \"dxButton\",
        options: {
          icon: \"undo\",
          onClick: function onClick() {
            if (\$('body').data('responsable') == \"1\") {
              dataGrid.option(\"filterValue\", null);
              var obj = dataGrid.state();
              delete obj.columns;
              obj.filterValue = null;
              obj.searchText = '';
              dataGrid.filterValue = null;
              dataGrid.state(obj);
            } else {
              dataGrid.state({});
            }

            \$('#mes-filtres').remove();
          }
        }
      }, {
        location: \"after\",
        id: \"rafraichir\",
        widget: \"dxButton\",
        options: {
          icon: \"refresh\",
          onClick: function onClick() {
            dataGrid.refresh();
          }
        }
      }, {
        location: \"before\",
        widget: \"dxButton\",
        id: \"exportpdf\",
        options: {
          icon: \"pdffile\",
          onClick: function onClick() {
            var invisibleColumns = []; //récupération si on a des champ à exporter mais caché

            var exportFields = \$(dataGrid.element()).data('export-fields');

            if (exportFields) {
              var allColumns = dataGrid.option(\"columns\");
              allColumns.forEach(function (col, idx) {
                if (col.visible === false && col.showInColumnChooser === false && exportFields.includes(col.name)) {
                  invisibleColumns.push({
                    index: idx,
                    col: col
                  });
                  dataGrid.columnOption(col.dataField, \"visible\", true);
                }
              });
            }

            var doc = new jsPDF('landscape');
            DevExpress.pdfExporter.exportDataGrid({
              jsPDFDocument: doc,
              component: dataGrid
            }).then(function () {
              doc.output('dataurlnewwindow');
              doc.save(\$(dataGrid.element()).data('exportname') + '.pdf');
            })[\"catch\"](function (error) {
              console.log(error);
            })[\"finally\"](function () {
              // 3. Restaure la visibilité initiale des colonnes
              invisibleColumns.forEach(function (item) {
                dataGrid.columnOption(item.col.dataField, \"visible\", false);
              });
            });
          }
        }
      });
    }
  },
  createDxPopup: function createDxPopup(id, title, width) {
    var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"auto\";
    return \$(\"#\" + id).dxPopup({
      width: width,
      height: height,
      maxHeight: \"91vh\",
      container: \".dx-viewport\",
      showTitle: true,
      title: title,
      visible: false,
      dragEnabled: true,
      dragOutsideBoundary: true,
      closeOnOutsideClick: false,
      showCloseButton: true,
      elementAttr: {
        \"class\": \"nobutton\"
      },
      position: {
        at: \"center\",
        my: \"center\",
        collision: 'fit'
      }
    }).dxPopup(\"instance\");
  },
  createCustomStore: function createCustomStore(page, patch_path, get_path, create_path, delete_path) {
    var key = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'id';
    return new DevExpress.data.CustomStore({
      key: key,
      load: function load(loadOptions) {
        var deferred = \$.Deferred(),
            args = {};
        [\"groupPaging\", \"filter\", \"requireTotalCount\", \"skip\", \"take\", \"sort\"].forEach(function (i) {
          if (i in loadOptions && isNotEmpty(loadOptions[i])) args[i] = JSON.stringify(loadOptions[i]);
        });
        var url = \"/get/\" + page;
        if (get_path) url = get_path;
        \$.ajax({
          url: url,
          dataType: \"json\",
          data: args,
          success: function success(result) {
            deferred.resolve(result.data, {
              totalCount: result.totalCount
            });
          },
          error: function error() {
            // deferred.reject(\"Erreur dans le chargement de données\");
            console.log('erreur chargement données');
          },
          timeout: 0
        });
        return deferred.promise();
      },
      update: function update(key, values) {
        var url = \"/\" + page + '/' + key;
        if (patch_path) url = patch_path + '/' + key;
        \$.ajax({
          url: url,
          type: \"patch\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error(xhr, status, _error) {
            console.log('erreur lors de la mise à jour des données');
            return false;
          }
        });
      },
      remove: function remove(key, values) {
        var url = \"/\" + page + '/' + key;
        if (delete_path) url = delete_path + '/' + key;
        \$.ajax({
          url: url,
          type: \"DELETE\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error() {
            console.log('erreur lors de la suppression des données');
            return false;
          }
        });
      },
      insert: function insert(values) {
        var url = \"/create/\" + page;
        if (create_path) url = create_path;
        \$.ajax({
          url: url,
          type: \"post\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error(result) {
            // console.log(xhr);
            if (result.status == 443) {
              return \$.Deferred().reject(\"Erreur de validation\").promise();
            }

            console.log('erreur lors de la mise à jour des données');
            return false;
          }
        });
      },
      byKey: function byKey(key) {
        return \$.get(\"/get/\" + page + '/' + key.toString());
      }
    });
  },
  createDataBox: function createDataBox(dataSource, key, value, options) {
    return {
      dataSource: dataSource,
      values: options[value],
      valueExpr: key,
      displayExpr: value,
      validationRules: [{
        type: 'required'
      }],
      onValueChanged: function onValueChanged(e) {
        debugger;
        options.setValue(e.values.slice(0));
      }
    };
  },
  calculateCellValue: function calculateCellValue(data) {
    var value = [];
    data.site.forEach(function (e) {
      value.push(e.libelle);
    });
    return value.join(',');
  },
  handleNewFormSubmit: function handleNewFormSubmit(e) {
    e.preventDefault();
    var \$form = \$(e.currentTarget);
    var callback = \$form.data('callback');
    var target_html = \$form.data('target-html');
    var js_return = \$form.data('js');
    var no_reset = \$form.data('no-reset');

    if (\$form.data('file')) {
      var formData = FormData(e.currentTarget);
    } else {
      var formData = \$(e.currentTarget).serialize();
    }

    if (!no_reset) {
      \$form[0].reset();
    }

    \$.ajax({
      url: \$form.attr('action'),
      method: 'POST',
      data: formData,
      processData: false,
      error: function error(jqXHR) {
        \$form.html(jqXHR.responseText);
      },
      success: function success(data, textStatus, xhr) {
        if (data.path) {
          document.location.href = data.path;
        }

        if (callback) {
          eval(callback + '(' + JSON.stringify(data.entite) + ')');
        }

        if (data.html) {
          \$(target_html).html(data.html);
          \$(target_html).show();
        }

        if (js_return) {
          eval(js_return);
        }

        if (data.js_return) {
          eval(data.js_return);
        }
      },
      timeout: 50000
    });
  },
  cellTemplatePhoto: function cellTemplatePhoto(container, options) {
    var key = options.data.id;
    if (options.data.idproduitsite) key = options.data.idproduitsite;

    if (key) {
      var aElement = document.createElement('a');
      var iElement = document.createElement('i');

      if (options.value) {
        \$(iElement).addClass(\"fa fa-2x fa-edit\");
      } else {
        \$(iElement).addClass(\"fa fa-2x fa-plus-circle\");
      }

      \$(aElement).attr('data-popup-id', 'popup_cell').attr('data-popup-title', 'Gestion des Photos').attr('data-popup-width', 'auto').attr('data-dxpopup', '');
      \$(aElement).attr('data-content-template-ajax', '/produit_photos/' + key);
      aElement.append(iElement);
      container.append(aElement);
    }
  },
  cellTemplateCouleur: function cellTemplateCouleur(container, options) {
    if (options.value) {
      var colorElement = document.createElement('div');
      \$(colorElement).css({
        'width': '20px',
        'height': '20px',
        'border-radius': '50%',
        'background-color': options.value,
        'border': '1px solid #ccc',
        'display': 'inline-block',
        'vertical-align': 'middle'
      }); // Ajouter un titre avec le nom de la couleur

      \$(colorElement).attr('title', options.value);
      container.append(colorElement);
    }
  },
  resetForm: function resetForm(e) {
    \$('form').each(function (e) {
      if (\$(this).data('no-reset') == undefined) {
        \$(this)[0].reset();
      }
    });
  },
  loadPicker: function loadPicker(e) {
    var \$selectpicker = \$('.my-select-multiple'); //if (!\$selectpicker.is(':disabled') && \$selectpicker) {

    \$selectpicker.selectpicker({
      noneSelectedText: 'Selectionnez',
      width: '100%'
    });
  }
};

function isNotEmpty(value) {
  return value !== undefined && value !== null && value !== \"\";
}

/***/ })

}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tbW9uLmpzIl0sIm5hbWVzIjpbImNsaWNrZXZlbnQiLCJpc0luc2VydGluZyIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0UGxhY2VIb2xkZXIiLCJkYXRhZ3JpZF9vYmoiLCJkYXRhU291cmNlIiwiaGVpZ2h0IiwibWF4SGVpZ2h0IiwiY29sdW1uTWluV2lkdGgiLCJyb3dBbHRlcm5hdGlvbkVuYWJsZWQiLCJjb2x1bW5BdXRvV2lkdGgiLCJzaG93Qm9yZGVycyIsImxvYWRQYW5lbCIsImVuYWJsZWQiLCJzZWFyY2hQYW5lbCIsInZpc2libGUiLCJ3aWR0aCIsInBsYWNlaG9sZGVyIiwicGFnaW5nIiwicGFnZVNpemUiLCJwYWdlciIsImFsbG93ZWRQYWdlU2l6ZXMiLCJzaG93UGFnZVNpemVTZWxlY3RvciIsInNob3dJbmZvIiwic2hvd05hdmlnYXRpb25CdXR0b25zIiwicm93RHJhZ2dpbmciLCJhbGxvd1Jlb3JkZXJpbmciLCJkcm9wRmVlZGJhY2tNb2RlIiwib25SZW9yZGVyIiwiZSIsInZpc2libGVSb3dzIiwiY29tcG9uZW50IiwiZ2V0VmlzaWJsZVJvd3MiLCJuZXdPcmRlckluZGV4IiwidG9JbmRleCIsImRhdGEiLCJyYW5nX3RyaSIsImQiLCIkIiwiRGVmZXJyZWQiLCJnZXREYXRhU291cmNlIiwic3RvcmUiLCJ1cGRhdGUiLCJpdGVtRGF0YSIsImlkIiwidGhlbiIsInJlZnJlc2giLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsImNvbHVtbnMiLCJvbkNlbGxQcmVwYXJlZCIsInJvd1R5cGUiLCJjb2x1bW4iLCJjb21tYW5kIiwiaXNFZGl0aW5nIiwicm93IiwiJGxpbmtzIiwiY2VsbEVsZW1lbnQiLCJmaW5kIiwidGV4dCIsImZpbHRlciIsImR4QnV0dG9uIiwiaWNvbiIsImRhdGFncmlkU2ltcGxlIiwiYWxsb3dDb2x1bW5SZXNpemluZyIsImVkaXRpbmciLCJtb2RlIiwiYWxsb3dVcGRhdGluZyIsImFsbG93RGVsZXRpbmciLCJhbGxvd0FkZGluZyIsIm9uUm93VXBkYXRpbmciLCJjaGVja1BhdGgiLCJlbGVtZW50IiwiY3VzdG9tU3RvcmUiLCJvcHRpb24iLCJuZXdSb3dEYXRhIiwibmV3RGF0YSIsImdyaWQiLCJrZXkiLCJjYW5jZWwiLCJhamF4IiwidXJsIiwidHlwZSIsImRhdGFUeXBlIiwic3VjY2VzcyIsImRvbmUiLCJjYW5jZWxFZGl0RGF0YSIsImVycm9yIiwicmVzdWx0Iiwib25Sb3dJbnNlcnRpbmciLCJpbnNlcnQiLCJvblRvb2xiYXJQcmVwYXJpbmciLCJkYXRhR3JpZCIsInRvb2xiYXJJdGVtcyIsInRvb2xiYXJPcHRpb25zIiwiaXRlbXMiLCJncmVwIiwiaXRlbSIsIm5hbWUiLCJsb2NhdGlvbiIsInVuc2hpZnQiLCJ3aWRnZXQiLCJvcHRpb25zIiwib25DbGljayIsImRhdGFncmlkRnVsbCIsImFsbG93Q29sdW1uUmVvcmRlcmluZyIsInNlbGVjdGlvbiIsInNob3dDaGVja0JveGVzTW9kZSIsImRlZmVycmVkIiwiZmlsdGVyUm93IiwiYXBwbHlGaWx0ZXIiLCJoZWFkZXJGaWx0ZXIiLCJjb2x1bW5DaG9vc2VyIiwiYWxsb3dFeHBvcnRTZWxlY3RlZERhdGEiLCJ0ZXh0cyIsImV4cG9ydEFsbCIsIm9uRXhwb3J0aW5nIiwiZmlsZU5hbWUiLCJvblJvd0RibENsaWNrIiwic2VsZWN0Um93cyIsInNwbGl0IiwibGVuZ3RoIiwid2luZG93Iiwib3BlbiIsImpvaW4iLCJvbkVkaXRvclByZXBhcmluZyIsInBhcmVudFR5cGUiLCJ1cGRhdGVWYWx1ZVRpbWVvdXQiLCJvbkNvbnRlbnRSZWFkeSIsImVuZEN1c3RvbUxvYWRpbmciLCJnZXRWaXNpYmxlQ29sdW1ucyIsImkiLCJoZWFkZXJFbGVtZW50IiwiaGVhZGVySWQiLCJyZW1vdmVDbGFzcyIsImZpbHRlclZhbHVlcyIsImZpbHRlclZhbHVlIiwiYWRkQ2xhc3MiLCJvbkluaXRpYWxpemVkIiwiYmVnaW5DdXN0b21Mb2FkaW5nIiwib25Db250ZXh0TWVudVByZXBhcmluZyIsInRhcmdldCIsInB1c2giLCJ0ZW1wbGF0ZSIsIm9uSXRlbUNsaWNrIiwiYmFzZV91cmwiLCJvcmlnaW4iLCJlX2lkIiwiY2xhc3NFbnJlZ2lzdHJlckZpbHRyZSIsImV4cG9ydFBhbmVsIiwib25JdGVtUmVuZGVyZWQiLCJpdGVtRWxlbWVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJhdHRyIiwicG9wdXBfbGlzdF9maWx0ZXIiLCJkeFBvcHVwIiwic2hvdyIsImVsZW1lbnRBdHRyIiwiZmlsdHJlcyIsImdldENvbWJpbmVkRmlsdGVyIiwiRGV2RXhwcmVzcyIsInVpIiwiZGlhbG9nIiwiYWxlcnQiLCJ0b3RhbF91bmlxdWUiLCJzaG93Q2xvc2VCdXR0b24iLCJjb25zb2xlIiwibG9nIiwidGltZW91dCIsIm9iaiIsInN0YXRlIiwic2VhcmNoVGV4dCIsInJlbW92ZSIsImludmlzaWJsZUNvbHVtbnMiLCJleHBvcnRGaWVsZHMiLCJhbGxDb2x1bW5zIiwiZm9yRWFjaCIsImNvbCIsImlkeCIsInNob3dJbkNvbHVtbkNob29zZXIiLCJpbmNsdWRlcyIsImluZGV4IiwiY29sdW1uT3B0aW9uIiwiZGF0YUZpZWxkIiwiZG9jIiwianNQREYiLCJwZGZFeHBvcnRlciIsImV4cG9ydERhdGFHcmlkIiwianNQREZEb2N1bWVudCIsIm91dHB1dCIsInNhdmUiLCJjcmVhdGVEeFBvcHVwIiwiY29udGFpbmVyIiwic2hvd1RpdGxlIiwiZHJhZ0VuYWJsZWQiLCJkcmFnT3V0c2lkZUJvdW5kYXJ5IiwiY2xvc2VPbk91dHNpZGVDbGljayIsInBvc2l0aW9uIiwiYXQiLCJteSIsImNvbGxpc2lvbiIsImNyZWF0ZUN1c3RvbVN0b3JlIiwicGFnZSIsInBhdGNoX3BhdGgiLCJnZXRfcGF0aCIsImNyZWF0ZV9wYXRoIiwiZGVsZXRlX3BhdGgiLCJDdXN0b21TdG9yZSIsImxvYWQiLCJsb2FkT3B0aW9ucyIsImFyZ3MiLCJpc05vdEVtcHR5IiwiSlNPTiIsInN0cmluZ2lmeSIsInRvdGFsQ291bnQiLCJ2YWx1ZXMiLCJ4aHIiLCJzdGF0dXMiLCJieUtleSIsImdldCIsInRvU3RyaW5nIiwiY3JlYXRlRGF0YUJveCIsInZhbHVlIiwidmFsdWVFeHByIiwiZGlzcGxheUV4cHIiLCJ2YWxpZGF0aW9uUnVsZXMiLCJvblZhbHVlQ2hhbmdlZCIsInNldFZhbHVlIiwic2xpY2UiLCJjYWxjdWxhdGVDZWxsVmFsdWUiLCJzaXRlIiwibGliZWxsZSIsImhhbmRsZU5ld0Zvcm1TdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsIiRmb3JtIiwiY3VycmVudFRhcmdldCIsImNhbGxiYWNrIiwidGFyZ2V0X2h0bWwiLCJqc19yZXR1cm4iLCJub19yZXNldCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJzZXJpYWxpemUiLCJyZXNldCIsIm1ldGhvZCIsInByb2Nlc3NEYXRhIiwianFYSFIiLCJodG1sIiwicmVzcG9uc2VUZXh0IiwidGV4dFN0YXR1cyIsInBhdGgiLCJkb2N1bWVudCIsImhyZWYiLCJldmFsIiwiZW50aXRlIiwiY2VsbFRlbXBsYXRlUGhvdG8iLCJpZHByb2R1aXRzaXRlIiwiYUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaUVsZW1lbnQiLCJhcHBlbmQiLCJjZWxsVGVtcGxhdGVDb3VsZXVyIiwiY29sb3JFbGVtZW50IiwiY3NzIiwicmVzZXRGb3JtIiwiZWFjaCIsInVuZGVmaW5lZCIsImxvYWRQaWNrZXIiLCIkc2VsZWN0cGlja2VyIiwic2VsZWN0cGlja2VyIiwibm9uZVNlbGVjdGVkVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsVUFBVSxHQUFFLEVBQWhCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLEtBQWxCO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUNJO0FBQ0lDLG9CQUFrQixFQUFFLGVBRHhCO0FBRUlDLGNBQVksRUFBRTtBQUNWQyxjQUFVLEVBQUUsRUFERjtBQUVWQyxVQUFN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QUFwb0JKLENBREo7O0FBd29CQSxTQUFTcU0sVUFBVCxDQUFvQlcsS0FBcEIsRUFBMkI7QUFDdkIsU0FBT0EsS0FBSyxLQUFLNEMsU0FBVixJQUF1QjVDLEtBQUssS0FBSyxJQUFqQyxJQUF5Q0EsS0FBSyxLQUFLLEVBQTFEO0FBQ0gsQyIsImZpbGUiOiJhc3NldHNfanNfY29tbW9uX2pzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsaWNrZXZlbnQ9ICcnO1xyXG52YXIgaXNJbnNlcnRpbmcgPSBmYWxzZTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID1cclxuICAgIHtcclxuICAgICAgICBkZWZhdWx0UGxhY2VIb2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiLFxyXG4gICAgICAgIGRhdGFncmlkX29iajoge1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiB7fSxcclxuICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiA1MDAsXHJcbiAgICAgICAgICAgIGNvbHVtbk1pbldpZHRoOiA1MCxcclxuICAgICAgICAgICAgcm93QWx0ZXJuYXRpb25FbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBjb2x1bW5BdXRvV2lkdGg6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dCb3JkZXJzOiB0cnVlLFxyXG4gICAgICAgICAgICBsb2FkUGFuZWw6IHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2VhcmNoUGFuZWw6IHtcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogODAwLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhZ2luZzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhZ2VyOiB7XHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFBhZ2VTaXplczogWzEwLCAxMDAsICdhbGwnXSxcclxuICAgICAgICAgICAgICAgIHNob3dQYWdlU2l6ZVNlbGVjdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luZm86IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93TmF2aWdhdGlvbkJ1dHRvbnM6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcm93RHJhZ2dpbmc6IHtcclxuICAgICAgICAgICAgICAgIGFsbG93UmVvcmRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkcm9wRmVlZGJhY2tNb2RlOiBcInB1c2hcIixcclxuICAgICAgICAgICAgICAgIG9uUmVvcmRlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdmlzaWJsZVJvd3MgPSBlLmNvbXBvbmVudC5nZXRWaXNpYmxlUm93cygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdPcmRlckluZGV4ID0gdmlzaWJsZVJvd3NbZS50b0luZGV4XS5kYXRhLnJhbmdfdHJpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gJC5EZWZlcnJlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhU291cmNlID0gZS5jb21wb25lbnQuZ2V0RGF0YVNvdXJjZSgpLnN0b3JlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS51cGRhdGUoZS5pdGVtRGF0YS5pZCwge3JhbmdfdHJpOiBuZXdPcmRlckluZGV4fSkudGhlbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnJlZnJlc2goKS50aGVuKGQucmVzb2x2ZSwgZC5yZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIGQucmVqZWN0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcm9taXNlID0gZC5wcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IHt9LFxyXG4gICAgICAgICAgICBvbkNlbGxQcmVwYXJlZDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlLnJvd1R5cGUgPT09IFwiZGF0YVwiICYmIGUuY29sdW1uLmNvbW1hbmQgPT09IFwiZWRpdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzRWRpdGluZyA9IGUucm93LmlzRWRpdGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmtzID0gZS5jZWxsRWxlbWVudC5maW5kKFwiLmR4LWxpbmtcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRsaW5rcy50ZXh0KFwiXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5rcy5maWx0ZXIoXCIuZHgtbGluay1zYXZlXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwic2F2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGlua3MuZmlsdGVyKFwiLmR4LWxpbmstY2FuY2VsXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwicmV2ZXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmtzLmZpbHRlcihcIi5keC1saW5rLWVkaXRcIikuZHhCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGlua3MuZmlsdGVyKFwiLmR4LWxpbmstZGVsZXRlXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwidHJhc2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vZGF0YSBzaW1wbGVcclxuICAgICAgICBkYXRhZ3JpZFNpbXBsZToge1xyXG4gICAgICAgICAgIC8vIHJlbW90ZU9wZXJhdGlvbnM6IHtncm91cFBhZ2luZzogdHJ1ZX0sXHJcbiAgICAgICAgICAgIGFsbG93Q29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGVkaXRpbmc6IHtcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwicm93XCIsXHJcbiAgICAgICAgICAgICAgICBhbGxvd1VwZGF0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dEZWxldGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFsbG93QWRkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJvd1VwZGF0aW5nOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tQYXRoID0gJChlLmVsZW1lbnQpLmRhdGEoJ2NoZWNrcGF0aCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1c3RvbVN0b3JlID0gZS5jb21wb25lbnQub3B0aW9uKFwiZGF0YVNvdXJjZVwiKTtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdSb3dEYXRhID0gZS5uZXdEYXRhO1xyXG4gICAgICAgICAgICAgICAgdmFyIGdyaWQgPSBlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBlLmtleTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tQYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogY2hlY2tQYXRoICsgJy8nICsga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBuZXdSb3dEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21TdG9yZS51cGRhdGUoa2V5LG5ld1Jvd0RhdGEpLmRvbmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQuY2FuY2VsRWRpdERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJvd0luc2VydGluZzogZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICAgIHZhciBjaGVja1BhdGggPSAkKGUuZWxlbWVudCkuZGF0YSgnY2hlY2twYXRoJyk7XHJcbiAgICAgICAgICAgICAgdmFyIGN1c3RvbVN0b3JlID0gZS5jb21wb25lbnQub3B0aW9uKFwiZGF0YVNvdXJjZVwiKTtcclxuICAgICAgICAgICAgICB2YXIgbmV3Um93RGF0YSA9IGUuZGF0YTtcclxuICAgICAgICAgICAgICB2YXIgZ3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGVja1BhdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG5ld1Jvd0RhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tU3RvcmUuaW5zZXJ0KG5ld1Jvd0RhdGEpLmRvbmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC5jYW5jZWxFZGl0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlLmNhbmNlbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uVG9vbGJhclByZXBhcmluZzogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhR3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvb2xiYXJJdGVtcyA9IGUudG9vbGJhck9wdGlvbnMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoUGFuZWwgPSAkLmdyZXAodG9vbGJhckl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgPT09IFwic2VhcmNoUGFuZWxcIjtcclxuICAgICAgICAgICAgICAgIH0pWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzZWFyY2hQYW5lbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFBhbmVsLmxvY2F0aW9uID0gXCJiZWZvcmVcIjtcclxuICAgICAgICAgICAgICAgICAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwicmVmcmVzaFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vZGF0YSBmdWxsXHJcbiAgICAgICAgZGF0YWdyaWRGdWxsOiB7XHJcbiAgICAgICAgICAgIGFsbG93Q29sdW1uUmVvcmRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICAgYWxsb3dDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBtb2RlOiBcIm11bHRpcGxlXCIsXHJcbiAgICAgICAgICAgICAgICBzaG93Q2hlY2tCb3hlc01vZGU6ICdhbHdheXMnLFxyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQ6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsdGVyUm93OiB7XHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYXBwbHlGaWx0ZXI6IFwiYXV0b1wiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGhlYWRlckZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29sdW1uQ2hvb3Nlcjoge1xyXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXhwb3J0OiB7XHJcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFeHBvcnRTZWxlY3RlZERhdGE6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0cyA6IHtcclxuICAgICAgICAgICAgICAgICAgICBleHBvcnRBbGwgOiAnRXhwb3J0ZXIgdG91dCdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25FeHBvcnRpbmc6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuZmlsZU5hbWUgPSAkKGUuZWxlbWVudCkuZGF0YSgnZXhwb3J0bmFtZScpIDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25Sb3dEYmxDbGljazogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnNlbGVjdFJvd3MoW2Uua2V5XSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gJCgnI2luZm9zX2xpc3QnKS5kYXRhKCdzaG93bGluaycpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgICAgICB1cmxbdXJsLmxlbmd0aCAtIDFdID0gZS5kYXRhLmlkO1xyXG4gICAgICAgICAgICAgICAgLy9UdXJiby52aXNpdCh1cmwuam9pbignLycpKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybC5qb2luKCcvJyksXCJfYmxhbmtcIik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uRWRpdG9yUHJlcGFyaW5nOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUucGFyZW50VHlwZSA9PT0gXCJmaWx0ZXJSb3dcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGUudXBkYXRlVmFsdWVUaW1lb3V0ID0gMTcwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25Db250ZW50UmVhZHk6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LmVuZEN1c3RvbUxvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gZS5jb21wb25lbnQuZ2V0VmlzaWJsZUNvbHVtbnMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBQYXJjb3VyaXIgbGVzIGNvbG9ubmVzIHBvdXIgdsOpcmlmaWVyIHNpIGwndW5lIGQnZW50cmUgZWxsZXMgZXN0IGZpbHRyw6llXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVyRWxlbWVudCA9IGUuZWxlbWVudC5maW5kKFwiLmR4LWVkaXRvci1jZWxsIFthcmlhLWRlc2NyaWJlZGJ5PVwiKyBjb2x1bW5zW2ldLmhlYWRlcklkICtcIl1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5yZW1vdmVDbGFzcygnYm9yZGVyMi1vcmFuZ2UnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGNvbHVtbnNbaV0uZmlsdGVyVmFsdWVzICYmIGNvbHVtbnNbaV0uZmlsdGVyVmFsdWVzLmxlbmd0aCA+IDApIHx8IGNvbHVtbnNbaV0uZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWpvdXRlciB1bmUgYm9yZHVyZSBkZSBjb3VsZXVyIMOgIGxhIGNvbG9ubmUgZmlsdHLDqWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckVsZW1lbnQuYWRkQ2xhc3MoXCJib3JkZXIyLW9yYW5nZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LmJlZ2luQ3VzdG9tTG9hZGluZygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNvbnRleHRNZW51UHJlcGFyaW5nOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09IFwiY29udGVudFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZS5pdGVtcyBjYW4gYmUgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLml0ZW1zKSBlLml0ZW1zID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIGN1c3RvbSBtZW51IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBlLml0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IFwiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZTogMXJlbTsnPjxpIGNsYXNzPSdmYSBmYS1wbHVzIG1lLTInPjwvaT5PdXZyaXIgZGFucyB1bmUgbm91dmVsbGUgcGFnZTwvc3Bhbj5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtQ2xpY2s6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2VfdXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKCcjaW5mb3NfbGlzdCcpLmRhdGEoJ3Nob3dsaW5rJykuc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnNlbGVjdFJvd3MoW2Uucm93LmtleV0sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnJvdy5rZXkuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBlLnJvdy5rZXkuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUucm93LmtleS5lX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICs9ICc/aWRfZXF1aXBlbWVudD0nICsgZS5yb3cua2V5LmVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFt1cmwubGVuZ3RoIC0gMV0gPSBpZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFt1cmwubGVuZ3RoIC0xXSA9IGUucm93LmtleTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihiYXNlX3VybCArIHVybC5qb2luKCcvJyksIFwiX2JsYW5rXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uVG9vbGJhclByZXBhcmluZzogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhR3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvb2xiYXJJdGVtcyA9IGUudG9vbGJhck9wdGlvbnMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2xhc3NFbnJlZ2lzdHJlckZpbHRyZSA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBleHBvcnRQYW5lbCA9ICQuZ3JlcCh0b29sYmFySXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSA9PT0gXCJleHBvcnRCdXR0b25cIjtcclxuICAgICAgICAgICAgICAgIH0pWzBdO1xyXG4gICAgICAgICAgICAgICAgZXhwb3J0UGFuZWwubG9jYXRpb24gPSBcImJlZm9yZVwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlYXJjaFBhbmVsID0gJC5ncmVwKHRvb2xiYXJJdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lID09PSBcInNlYXJjaFBhbmVsXCI7XHJcbiAgICAgICAgICAgICAgICB9KVswXTtcclxuICAgICAgICAgICAgICAgIHNlYXJjaFBhbmVsLmxvY2F0aW9uID0gXCJiZWZvcmVcIjtcclxuICAgICAgICAgICAgICAgIGlmICgkKCdib2R5JykuZGF0YSgncmVzcG9uc2FibGUnKSAhPSBcIjFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRW5yZWdpc3RyZXJGaWx0cmUgPSAnaGlkZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZS50b29sYmFyT3B0aW9ucy5vbkl0ZW1SZW5kZXJlZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5pZCA9PSBcInVuZG9cIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nUmV0b3VyJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5pZCA9PSBcInJhZnJhaWNoaXJcIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nUmFmcmFpY2hpcic7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXRlbURhdGEuaWQgPT0gXCJleHBvcnRwZGZcIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nRXhwb3J0ZXIgZW4gcGRmJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5uYW1lID09IFwiZXhwb3J0QnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50Lml0ZW1FbGVtZW50WzBdKS5jaGlsZHJlbignLmR4LXRvb2xiYXItaXRlbS1jb250ZW50JykuY2hpbGRyZW4oJy5keC1kYXRhZ3JpZC1leHBvcnQtYnV0dG9uJykuYXR0cigndGl0bGUnLCAnRXhwb3J0IGVuIHhsc3gnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZS50b29sYmFyT3B0aW9ucy5pdGVtcy51bnNoaWZ0KFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiBcImR4QnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IFwiTWVzIGZpbHRyZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9wdXBfbGlzdF9maWx0ZXIgPSAkKFwiI3BvcHVwLWxpc3QtZmlsdGVyXCIpLmR4UG9wdXAoJ2luc3RhbmNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBfbGlzdF9maWx0ZXIuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogXCJFbnJlZ2lzdHJlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwib3BlbnBvcHVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXR0cjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBjbGFzc0VucmVnaXN0cmVyRmlsdHJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIm9wZW5wb3B1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcG91ciBsYSBsaXN0ZSBjbGllbnQsIG9uIGFqb3V0ZSB1biBib3V0b24gcG91ciBkw6lub21icmVyXHJcbiAgICAgICAgICAgICAgICBpZiAoJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ3BhZ2UnKSA9PSAnQ2xpZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGUudG9vbGJhck9wdGlvbnMuaXRlbXMudW5zaGlmdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdHJlcyA9IGUuY29tcG9uZW50LmdldENvbWJpbmVkRmlsdGVyKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvY2xpZW50cy9nZXQvY2xpZW50cy9kZW5vbWJyZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J2ZpbHRyZXMnOiBmaWx0cmVzfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkV4cHJlc3MudWkuZGlhbG9nLmFsZXJ0KFwiTm9tYnJlIGRlIG51bcOpcm8gZGUgc8OpcmllOiBcIiArIHJlc3VsdC50b3RhbF91bmlxdWUsIFwiRMOpbm9tYnJlbWVudFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2VycmV1cicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IFwiRMOpbm9tYnJlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDpcInVuZG9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiBcImR4QnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwidW5kb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCdib2R5JykuZGF0YSgncmVzcG9uc2FibGUnKSA9PSBcIjFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5vcHRpb24oXCJmaWx0ZXJWYWx1ZVwiLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iaiA9IGRhdGFHcmlkLnN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmouY29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmZpbHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5zdGF0ZShvYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkLnN0YXRlKHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21lcy1maWx0cmVzJykucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOlwicmFmcmFpY2hpclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IFwiZHhCdXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJyZWZyZXNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImJlZm9yZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IFwiZHhCdXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XCJleHBvcnRwZGZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJwZGZmaWxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW52aXNpYmxlQ29sdW1ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcsOpY3Vww6lyYXRpb24gc2kgb24gYSBkZXMgY2hhbXAgw6AgZXhwb3J0ZXIgbWFpcyBjYWNow6lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXhwb3J0RmllbGRzID0gJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ2V4cG9ydC1maWVsZHMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwb3J0RmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSBkYXRhR3JpZC5vcHRpb24oXCJjb2x1bW5zXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24oY29sLCBpZHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wudmlzaWJsZSA9PT0gZmFsc2UgJiYgY29sLnNob3dJbkNvbHVtbkNob29zZXIgPT09IGZhbHNlICYmIGV4cG9ydEZpZWxkcy5pbmNsdWRlcyhjb2wubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZpc2libGVDb2x1bW5zLnB1c2goeyBpbmRleDogaWR4LCBjb2w6IGNvbCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5jb2x1bW5PcHRpb24oY29sLmRhdGFGaWVsZCwgXCJ2aXNpYmxlXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdsYW5kc2NhcGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZFeHByZXNzLnBkZkV4cG9ydGVyLmV4cG9ydERhdGFHcmlkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNQREZEb2N1bWVudDogZG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGRhdGFHcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5vdXRwdXQoJ2RhdGF1cmxuZXd3aW5kb3cnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLnNhdmUoJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ2V4cG9ydG5hbWUnKSArICcucGRmJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzLiBSZXN0YXVyZSBsYSB2aXNpYmlsaXTDqSBpbml0aWFsZSBkZXMgY29sb25uZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52aXNpYmxlQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkLmNvbHVtbk9wdGlvbihpdGVtLmNvbC5kYXRhRmllbGQsIFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY3JlYXRlRHhQb3B1cDogZnVuY3Rpb24gKGlkLCB0aXRsZSwgd2lkdGgsIGhlaWdodCA9IFwiYXV0b1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAkKFwiI1wiICsgaWQpLmR4UG9wdXAoe1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IFwiOTF2aFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcIi5keC12aWV3cG9ydFwiLFxyXG4gICAgICAgICAgICAgICAgc2hvd1RpdGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkcmFnRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRyYWdPdXRzaWRlQm91bmRhcnk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwibm9idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXQ6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbXk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uIDogJ2ZpdCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KS5keFBvcHVwKFwiaW5zdGFuY2VcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVDdXN0b21TdG9yZTogZnVuY3Rpb24gKHBhZ2UsIHBhdGNoX3BhdGgsIGdldF9wYXRoLCBjcmVhdGVfcGF0aCwgZGVsZXRlX3BhdGgsIGtleSA9ICdpZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXZFeHByZXNzLmRhdGEuQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAobG9hZE9wdGlvbnMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gJC5EZWZlcnJlZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImdyb3VwUGFnaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZmlsdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmVxdWlyZVRvdGFsQ291bnRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJza2lwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFrZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNvcnRcIixcclxuICAgICAgICAgICAgICAgICAgICBdLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgaW4gbG9hZE9wdGlvbnMgJiYgaXNOb3RFbXB0eShsb2FkT3B0aW9uc1tpXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gSlNPTi5zdHJpbmdpZnkobG9hZE9wdGlvbnNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXCIvZ2V0L1wiICsgcGFnZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X3BhdGgpIHVybCA9IGdldF9wYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFyZ3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocmVzdWx0LmRhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50OiByZXN1bHQudG90YWxDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3QoXCJFcnJldXIgZGFucyBsZSBjaGFyZ2VtZW50IGRlIGRvbm7DqWVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2VycmV1ciBjaGFyZ2VtZW50IGRvbm7DqWVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uIChrZXksIHZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcIi9cIiArIHBhZ2UgKyAnLycgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoX3BhdGgpIHVybCA9IHBhdGNoX3BhdGggKyAnLycgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicGF0Y2hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB2YWx1ZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhocixzdGF0dXMsZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyZXVyIGxvcnMgZGUgbGEgbWlzZSDDoCBqb3VyIGRlcyBkb25uw6llcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKGtleSwgdmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiL1wiICsgcGFnZSArICcvJyArIGtleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlX3BhdGgpIHVybCA9IGRlbGV0ZV9wYXRoICsgJy8nICsga2V5O1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkRFTEVURVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyZXVyIGxvcnMgZGUgbGEgc3VwcHJlc3Npb24gZGVzIGRvbm7DqWVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaW5zZXJ0OiBmdW5jdGlvbiAodmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiL2NyZWF0ZS9cIiArIHBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZV9wYXRoKSB1cmwgPSBjcmVhdGVfcGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJwb3N0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdmFsdWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHhocik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gNDQzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVqZWN0KFwiRXJyZXVyIGRlIHZhbGlkYXRpb25cIikucHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJldXIgbG9ycyBkZSBsYSBtaXNlIMOgIGpvdXIgZGVzIGRvbm7DqWVzJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ5S2V5OiBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuZ2V0KFwiL2dldC9cIiArIHBhZ2UgKyAnLycgKyBrZXkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyZWF0ZURhdGFCb3g6IGZ1bmN0aW9uIChkYXRhU291cmNlLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBvcHRpb25zW3ZhbHVlXSxcclxuICAgICAgICAgICAgICAgIHZhbHVlRXhwcjoga2V5LFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblJ1bGVzOiBbe3R5cGU6ICdyZXF1aXJlZCd9XSxcclxuICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VkOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0VmFsdWUoZS52YWx1ZXMuc2xpY2UoMCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYWxjdWxhdGVDZWxsVmFsdWU6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICBkYXRhLnNpdGUuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUucHVzaChlLmxpYmVsbGUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJywnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhbmRsZU5ld0Zvcm1TdWJtaXQ6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICAgIHZhciAkZm9ybSA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gJGZvcm0uZGF0YSgnY2FsbGJhY2snKTtcclxuICAgICAgICAgICAgdmFyIHRhcmdldF9odG1sID0gJGZvcm0uZGF0YSgndGFyZ2V0LWh0bWwnKTtcclxuICAgICAgICAgICAgdmFyIGpzX3JldHVybiA9ICRmb3JtLmRhdGEoJ2pzJyk7XHJcbiAgICAgICAgICAgIHZhciBub19yZXNldCA9ICRmb3JtLmRhdGEoJ25vLXJlc2V0Jyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoJGZvcm0uZGF0YSgnZmlsZScpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybURhdGEgPSBGb3JtRGF0YShlLmN1cnJlbnRUYXJnZXQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZvcm1EYXRhID0gJChlLmN1cnJlbnRUYXJnZXQpLnNlcmlhbGl6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIW5vX3Jlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAkZm9ybVswXS5yZXNldCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiAkZm9ybS5hdHRyKCdhY3Rpb24nKSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoanFYSFIpIHtcclxuICAgICAgICAgICAgICAgICAgICAkZm9ybS5odG1sKGpxWEhSLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEsIHRleHRTdGF0dXMsIHhocikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRhdGEucGF0aDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoY2FsbGJhY2sgKyAnKCcgKyBKU09OLnN0cmluZ2lmeShkYXRhLmVudGl0ZSkgKyAnKScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5odG1sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGFyZ2V0X2h0bWwpLmh0bWwoZGF0YS5odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0YXJnZXRfaHRtbCkuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNfcmV0dXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoanNfcmV0dXJuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuanNfcmV0dXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoZGF0YS5qc19yZXR1cm4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiA1MDAwMCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjZWxsVGVtcGxhdGVQaG90bzogZnVuY3Rpb24gKGNvbnRhaW5lciwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB2YXIga2V5ID0gb3B0aW9ucy5kYXRhLmlkO1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXRhLmlkcHJvZHVpdHNpdGUpIGtleSA9IG9wdGlvbnMuZGF0YS5pZHByb2R1aXRzaXRlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGtleSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoaUVsZW1lbnQpLmFkZENsYXNzKFwiZmEgZmEtMnggZmEtZWRpdFwiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChpRWxlbWVudCkuYWRkQ2xhc3MoXCJmYSBmYS0yeCBmYS1wbHVzLWNpcmNsZVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICQoYUVsZW1lbnQpLmF0dHIoJ2RhdGEtcG9wdXAtaWQnLCAncG9wdXBfY2VsbCcpLmF0dHIoJ2RhdGEtcG9wdXAtdGl0bGUnLCAnR2VzdGlvbiBkZXMgUGhvdG9zJykuYXR0cignZGF0YS1wb3B1cC13aWR0aCcsICdhdXRvJykuYXR0cignZGF0YS1keHBvcHVwJywgJycpO1xyXG4gICAgICAgICAgICAgICAgJChhRWxlbWVudCkuYXR0cignZGF0YS1jb250ZW50LXRlbXBsYXRlLWFqYXgnLCAnL3Byb2R1aXRfcGhvdG9zLycra2V5KTtcclxuICAgICAgICAgICAgICAgIGFFbGVtZW50LmFwcGVuZChpRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGFFbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2VsbFRlbXBsYXRlQ291bGV1cjogZnVuY3Rpb24gKGNvbnRhaW5lciwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgJChjb2xvckVsZW1lbnQpLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJzIwcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMjBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNTAlJyxcclxuICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IG9wdGlvbnMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlcic6ICcxcHggc29saWQgI2NjYycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiAnaW5saW5lLWJsb2NrJyxcclxuICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiAnbWlkZGxlJ1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIEFqb3V0ZXIgdW4gdGl0cmUgYXZlYyBsZSBub20gZGUgbGEgY291bGV1clxyXG4gICAgICAgICAgICAgICAgJChjb2xvckVsZW1lbnQpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoY29sb3JFbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRGb3JtOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICQoJ2Zvcm0nKS5lYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ25vLXJlc2V0JykgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKVswXS5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9hZFBpY2tlcjogZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICB2YXIgJHNlbGVjdHBpY2tlciA9ICQoJy5teS1zZWxlY3QtbXVsdGlwbGUnKTtcclxuICAgICAgICAgICAgLy9pZiAoISRzZWxlY3RwaWNrZXIuaXMoJzpkaXNhYmxlZCcpICYmICRzZWxlY3RwaWNrZXIpIHtcclxuICAgICAgICAgICAgJHNlbGVjdHBpY2tlci5zZWxlY3RwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgbm9uZVNlbGVjdGVkVGV4dDogJ1NlbGVjdGlvbm5leicsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG5cclxuICAgIH07XHJcbmZ1bmN0aW9uIGlzTm90RW1wdHkodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSBcIlwiO1xyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==";
        
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);

        
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);

        return; yield '';
    }

    /**
     * @codeCoverageIgnore
     */
    public function getTemplateName()
    {
        return "@public_path/build/assets_js_common_js.js";
    }

    /**
     * @codeCoverageIgnore
     */
    public function getDebugInfo()
    {
        return array ();
    }

    public function getSourceContext()
    {
        return new Source("(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"assets_js_common_js\"],{

/***/ \"./assets/js/common.js\":
/*!*****************************!*\\
  !*** ./assets/js/common.js ***!
  \\*****************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/* provided dependency */ var \$ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");
__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");

__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");

__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");

__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");

__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");

__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");

__webpack_require__(/*! core-js/modules/es.array.for-each.js */ \"./node_modules/core-js/modules/es.array.for-each.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");

__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");

__webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");

__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");

__webpack_require__(/*! core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");

__webpack_require__(/*! core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");

__webpack_require__(/*! core-js/modules/es.date.to-string.js */ \"./node_modules/core-js/modules/es.date.to-string.js\");

__webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");

__webpack_require__(/*! core-js/modules/es.array.slice.js */ \"./node_modules/core-js/modules/es.array.slice.js\");

__webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");

__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");

var clickevent = '';
var isInserting = false;
module.exports = {
  defaultPlaceHolder: \"Rechercher...\",
  datagrid_obj: {
    dataSource: {},
    height: \"auto\",
    maxHeight: 500,
    columnMinWidth: 50,
    rowAlternationEnabled: true,
    columnAutoWidth: true,
    showBorders: true,
    loadPanel: {
      enabled: true
    },
    searchPanel: {
      visible: true,
      width: 800,
      placeholder: \"Rechercher...\"
    },
    paging: {
      pageSize: 10
    },
    pager: {
      visible: true,
      allowedPageSizes: [10, 100, 'all'],
      showPageSizeSelector: true,
      showInfo: true,
      showNavigationButtons: true
    },
    rowDragging: {
      allowReordering: false,
      dropFeedbackMode: \"push\",
      onReorder: function onReorder(e) {
        var visibleRows = e.component.getVisibleRows(),
            newOrderIndex = visibleRows[e.toIndex].data.rang_tri,
            d = \$.Deferred();
        var dataSource = e.component.getDataSource().store();
        dataSource.update(e.itemData.id, {
          rang_tri: newOrderIndex
        }).then(function () {
          e.component.refresh().then(d.resolve, d.reject);
        }, d.reject);
        e.promise = d.promise();
      }
    },
    columns: {},
    onCellPrepared: function onCellPrepared(e) {
      if (e.rowType === \"data\" && e.column.command === \"edit\") {
        var isEditing = e.row.isEditing,
            \$links = e.cellElement.find(\".dx-link\");
        \$links.text(\"\");

        if (isEditing) {
          \$links.filter(\".dx-link-save\").dxButton({
            icon: \"save\"
          });
          \$links.filter(\".dx-link-cancel\").dxButton({
            icon: \"revert\"
          });
        } else {
          \$links.filter(\".dx-link-edit\").dxButton({
            icon: \"edit\"
          });
          \$links.filter(\".dx-link-delete\").dxButton({
            icon: \"trash\"
          });
        }
      }
    }
  },
  //data simple
  datagridSimple: {
    // remoteOperations: {groupPaging: true},
    allowColumnResizing: true,
    editing: {
      mode: \"row\",
      allowUpdating: true,
      allowDeleting: true,
      allowAdding: true
    },
    onRowUpdating: function onRowUpdating(e) {
      var checkPath = \$(e.element).data('checkpath');
      var customStore = e.component.option(\"dataSource\");
      var newRowData = e.newData;
      var grid = e.component;
      var key = e.key;

      if (checkPath) {
        e.cancel = true;
        \$.ajax({
          url: checkPath + '/' + key,
          type: \"post\",
          dataType: \"json\",
          data: newRowData,
          success: function success(e) {
            customStore.update(key, newRowData).done(function () {
              grid.refresh();
              grid.cancelEditData();
            });
          },
          error: function error(result) {
            e.cancel = true;
          }
        });
      }
    },
    onRowInserting: function onRowInserting(e) {
      var checkPath = \$(e.element).data('checkpath');
      var customStore = e.component.option(\"dataSource\");
      var newRowData = e.data;
      var grid = e.component;

      if (checkPath) {
        e.cancel = true;
        \$.ajax({
          url: checkPath,
          type: \"post\",
          dataType: \"json\",
          data: newRowData,
          success: function success(e) {
            customStore.insert(newRowData).done(function () {
              grid.refresh();
              grid.cancelEditData();
            });
          },
          error: function error(result) {
            e.cancel = true;
          }
        });
      }
    },
    onToolbarPreparing: function onToolbarPreparing(e) {
      var dataGrid = e.component;
      var toolbarItems = e.toolbarOptions.items;
      var searchPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"searchPanel\";
      })[0];

      if (searchPanel) {
        searchPanel.location = \"before\";
        e.toolbarOptions.items.unshift({
          location: \"after\",
          widget: \"dxButton\",
          options: {
            icon: \"refresh\",
            onClick: function onClick() {
              dataGrid.refresh();
            }
          }
        });
      }
    }
  },
  //data full
  datagridFull: {
    allowColumnReordering: true,
    allowColumnResizing: true,
    selection: {
      mode: \"multiple\",
      showCheckBoxesMode: 'always',
      deferred: true
    },
    filterRow: {
      visible: true,
      applyFilter: \"auto\"
    },
    headerFilter: {
      visible: true
    },
    columnChooser: {
      enabled: true
    },
    \"export\": {
      enabled: true,
      allowExportSelectedData: true,
      texts: {
        exportAll: 'Exporter tout'
      }
    },
    onExporting: function onExporting(e) {
      e.fileName = \$(e.element).data('exportname');
    },
    onRowDblClick: function onRowDblClick(e) {
      e.component.selectRows([e.key], false);
      var url = \$('#infos_list').data('showlink').split('/');
      url[url.length - 1] = e.data.id; //Turbo.visit(url.join('/'));

      window.open(url.join('/'), \"_blank\");
    },
    onEditorPreparing: function onEditorPreparing(e) {
      if (e.parentType === \"filterRow\") {
        e.updateValueTimeout = 1700;
      }
    },
    onContentReady: function onContentReady(e) {
      e.component.endCustomLoading();
      var columns = e.component.getVisibleColumns(); // Parcourir les colonnes pour vérifier si l'une d'entre elles est filtrée

      for (var i = 0; i < columns.length; i++) {
        var headerElement = e.element.find(\".dx-editor-cell [aria-describedby=\" + columns[i].headerId + \"]\");
        headerElement.removeClass('border2-orange');

        if (columns[i].filterValues && columns[i].filterValues.length > 0 || columns[i].filterValue) {
          // Ajouter une bordure de couleur à la colonne filtrée
          headerElement.addClass(\"border2-orange\");
        }
      }
    },
    onInitialized: function onInitialized(e) {
      e.component.beginCustomLoading();
    },
    onContextMenuPreparing: function onContextMenuPreparing(e) {
      if (e.target == \"content\") {
        // e.items can be undefined
        if (!e.items) e.items = []; // Add a custom menu item

        e.items.push({
          icon: 'export',
          template: \"<span style='font-size: 1rem;'><i class='fa fa-plus me-2'></i>Ouvrir dans une nouvelle page</span>\",
          onItemClick: function onItemClick() {
            var base_url = window.location.origin;
            var url = \$('#infos_list').data('showlink').split('/');

            if (e.component) {
              e.component.selectRows([e.row.key], false);
            }

            if (e.row.key.id) {
              var id = e.row.key.id;

              if (e.row.key.e_id) {
                id += '?id_equipement=' + e.row.key.e_id;
              }

              url[url.length - 1] = id;
            } else {
              url[url.length - 1] = e.row.key;
            }

            window.open(base_url + url.join('/'), \"_blank\");
          }
        });
      }
    },
    onToolbarPreparing: function onToolbarPreparing(e) {
      var dataGrid = e.component;
      var toolbarItems = e.toolbarOptions.items;
      var classEnregistrerFiltre = '';
      var exportPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"exportButton\";
      })[0];
      exportPanel.location = \"before\";
      var searchPanel = \$.grep(toolbarItems, function (item) {
        return item.name === \"searchPanel\";
      })[0];
      searchPanel.location = \"before\";

      if (\$('body').data('responsable') != \"1\") {
        classEnregistrerFiltre = 'hide';
      }

      e.toolbarOptions.onItemRendered = function (element) {
        if (element.itemData.id == \"undo\") element.itemElement[0].title = 'Retour';
        if (element.itemData.id == \"rafraichir\") element.itemElement[0].title = 'Rafraichir';
        if (element.itemData.id == \"exportpdf\") element.itemElement[0].title = 'Exporter en pdf';

        if (element.itemData.name == \"exportButton\") {
          \$(element.itemElement[0]).children('.dx-toolbar-item-content').children('.dx-datagrid-export-button').attr('title', 'Export en xlsx');
        }
      };

      e.toolbarOptions.items.unshift({
        location: \"after\",
        widget: \"dxButton\",
        options: {
          text: \"Mes filtres\",
          onClick: function onClick() {
            var popup_list_filter = \$(\"#popup-list-filter\").dxPopup('instance');
            popup_list_filter.show();
          }
        }
      }, {
        location: \"after\",
        widget: \"dxButton\",
        options: {
          text: \"Enregistrer\",
          id: \"openpopup\",
          elementAttr: {
            \"class\": classEnregistrerFiltre,
            id: \"openpopup\"
          }
        }
      }); // pour la liste client, on ajoute un bouton pour dénombrer

      if (\$(dataGrid.element()).data('page') == 'Client') {
        e.toolbarOptions.items.unshift({
          location: \"after\",
          widget: \"dxButton\",
          onClick: function onClick() {
            var filtres = e.component.getCombinedFilter(true);
            \$.ajax({
              url: '/clients/get/clients/denombrement',
              dataType: \"json\",
              type: \"post\",
              data: {
                'filtres': filtres
              },
              success: function success(result) {
                DevExpress.ui.dialog.alert(\"Nombre de numéro de série: \" + result.total_unique, \"Dénombrement\", {
                  width: 400,
                  height: 200,
                  showCloseButton: true
                });
              },
              error: function error() {
                console.log('erreur');
              },
              timeout: 0
            });
          },
          options: {
            text: \"Dénombrer\"
          }
        });
      }

      e.toolbarOptions.items.unshift({
        id: \"undo\",
        location: \"after\",
        widget: \"dxButton\",
        options: {
          icon: \"undo\",
          onClick: function onClick() {
            if (\$('body').data('responsable') == \"1\") {
              dataGrid.option(\"filterValue\", null);
              var obj = dataGrid.state();
              delete obj.columns;
              obj.filterValue = null;
              obj.searchText = '';
              dataGrid.filterValue = null;
              dataGrid.state(obj);
            } else {
              dataGrid.state({});
            }

            \$('#mes-filtres').remove();
          }
        }
      }, {
        location: \"after\",
        id: \"rafraichir\",
        widget: \"dxButton\",
        options: {
          icon: \"refresh\",
          onClick: function onClick() {
            dataGrid.refresh();
          }
        }
      }, {
        location: \"before\",
        widget: \"dxButton\",
        id: \"exportpdf\",
        options: {
          icon: \"pdffile\",
          onClick: function onClick() {
            var invisibleColumns = []; //récupération si on a des champ à exporter mais caché

            var exportFields = \$(dataGrid.element()).data('export-fields');

            if (exportFields) {
              var allColumns = dataGrid.option(\"columns\");
              allColumns.forEach(function (col, idx) {
                if (col.visible === false && col.showInColumnChooser === false && exportFields.includes(col.name)) {
                  invisibleColumns.push({
                    index: idx,
                    col: col
                  });
                  dataGrid.columnOption(col.dataField, \"visible\", true);
                }
              });
            }

            var doc = new jsPDF('landscape');
            DevExpress.pdfExporter.exportDataGrid({
              jsPDFDocument: doc,
              component: dataGrid
            }).then(function () {
              doc.output('dataurlnewwindow');
              doc.save(\$(dataGrid.element()).data('exportname') + '.pdf');
            })[\"catch\"](function (error) {
              console.log(error);
            })[\"finally\"](function () {
              // 3. Restaure la visibilité initiale des colonnes
              invisibleColumns.forEach(function (item) {
                dataGrid.columnOption(item.col.dataField, \"visible\", false);
              });
            });
          }
        }
      });
    }
  },
  createDxPopup: function createDxPopup(id, title, width) {
    var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"auto\";
    return \$(\"#\" + id).dxPopup({
      width: width,
      height: height,
      maxHeight: \"91vh\",
      container: \".dx-viewport\",
      showTitle: true,
      title: title,
      visible: false,
      dragEnabled: true,
      dragOutsideBoundary: true,
      closeOnOutsideClick: false,
      showCloseButton: true,
      elementAttr: {
        \"class\": \"nobutton\"
      },
      position: {
        at: \"center\",
        my: \"center\",
        collision: 'fit'
      }
    }).dxPopup(\"instance\");
  },
  createCustomStore: function createCustomStore(page, patch_path, get_path, create_path, delete_path) {
    var key = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'id';
    return new DevExpress.data.CustomStore({
      key: key,
      load: function load(loadOptions) {
        var deferred = \$.Deferred(),
            args = {};
        [\"groupPaging\", \"filter\", \"requireTotalCount\", \"skip\", \"take\", \"sort\"].forEach(function (i) {
          if (i in loadOptions && isNotEmpty(loadOptions[i])) args[i] = JSON.stringify(loadOptions[i]);
        });
        var url = \"/get/\" + page;
        if (get_path) url = get_path;
        \$.ajax({
          url: url,
          dataType: \"json\",
          data: args,
          success: function success(result) {
            deferred.resolve(result.data, {
              totalCount: result.totalCount
            });
          },
          error: function error() {
            // deferred.reject(\"Erreur dans le chargement de données\");
            console.log('erreur chargement données');
          },
          timeout: 0
        });
        return deferred.promise();
      },
      update: function update(key, values) {
        var url = \"/\" + page + '/' + key;
        if (patch_path) url = patch_path + '/' + key;
        \$.ajax({
          url: url,
          type: \"patch\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error(xhr, status, _error) {
            console.log('erreur lors de la mise à jour des données');
            return false;
          }
        });
      },
      remove: function remove(key, values) {
        var url = \"/\" + page + '/' + key;
        if (delete_path) url = delete_path + '/' + key;
        \$.ajax({
          url: url,
          type: \"DELETE\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error() {
            console.log('erreur lors de la suppression des données');
            return false;
          }
        });
      },
      insert: function insert(values) {
        var url = \"/create/\" + page;
        if (create_path) url = create_path;
        \$.ajax({
          url: url,
          type: \"post\",
          dataType: \"json\",
          data: values,
          success: function success(result) {
            return true;
          },
          error: function error(result) {
            // console.log(xhr);
            if (result.status == 443) {
              return \$.Deferred().reject(\"Erreur de validation\").promise();
            }

            console.log('erreur lors de la mise à jour des données');
            return false;
          }
        });
      },
      byKey: function byKey(key) {
        return \$.get(\"/get/\" + page + '/' + key.toString());
      }
    });
  },
  createDataBox: function createDataBox(dataSource, key, value, options) {
    return {
      dataSource: dataSource,
      values: options[value],
      valueExpr: key,
      displayExpr: value,
      validationRules: [{
        type: 'required'
      }],
      onValueChanged: function onValueChanged(e) {
        debugger;
        options.setValue(e.values.slice(0));
      }
    };
  },
  calculateCellValue: function calculateCellValue(data) {
    var value = [];
    data.site.forEach(function (e) {
      value.push(e.libelle);
    });
    return value.join(',');
  },
  handleNewFormSubmit: function handleNewFormSubmit(e) {
    e.preventDefault();
    var \$form = \$(e.currentTarget);
    var callback = \$form.data('callback');
    var target_html = \$form.data('target-html');
    var js_return = \$form.data('js');
    var no_reset = \$form.data('no-reset');

    if (\$form.data('file')) {
      var formData = FormData(e.currentTarget);
    } else {
      var formData = \$(e.currentTarget).serialize();
    }

    if (!no_reset) {
      \$form[0].reset();
    }

    \$.ajax({
      url: \$form.attr('action'),
      method: 'POST',
      data: formData,
      processData: false,
      error: function error(jqXHR) {
        \$form.html(jqXHR.responseText);
      },
      success: function success(data, textStatus, xhr) {
        if (data.path) {
          document.location.href = data.path;
        }

        if (callback) {
          eval(callback + '(' + JSON.stringify(data.entite) + ')');
        }

        if (data.html) {
          \$(target_html).html(data.html);
          \$(target_html).show();
        }

        if (js_return) {
          eval(js_return);
        }

        if (data.js_return) {
          eval(data.js_return);
        }
      },
      timeout: 50000
    });
  },
  cellTemplatePhoto: function cellTemplatePhoto(container, options) {
    var key = options.data.id;
    if (options.data.idproduitsite) key = options.data.idproduitsite;

    if (key) {
      var aElement = document.createElement('a');
      var iElement = document.createElement('i');

      if (options.value) {
        \$(iElement).addClass(\"fa fa-2x fa-edit\");
      } else {
        \$(iElement).addClass(\"fa fa-2x fa-plus-circle\");
      }

      \$(aElement).attr('data-popup-id', 'popup_cell').attr('data-popup-title', 'Gestion des Photos').attr('data-popup-width', 'auto').attr('data-dxpopup', '');
      \$(aElement).attr('data-content-template-ajax', '/produit_photos/' + key);
      aElement.append(iElement);
      container.append(aElement);
    }
  },
  cellTemplateCouleur: function cellTemplateCouleur(container, options) {
    if (options.value) {
      var colorElement = document.createElement('div');
      \$(colorElement).css({
        'width': '20px',
        'height': '20px',
        'border-radius': '50%',
        'background-color': options.value,
        'border': '1px solid #ccc',
        'display': 'inline-block',
        'vertical-align': 'middle'
      }); // Ajouter un titre avec le nom de la couleur

      \$(colorElement).attr('title', options.value);
      container.append(colorElement);
    }
  },
  resetForm: function resetForm(e) {
    \$('form').each(function (e) {
      if (\$(this).data('no-reset') == undefined) {
        \$(this)[0].reset();
      }
    });
  },
  loadPicker: function loadPicker(e) {
    var \$selectpicker = \$('.my-select-multiple'); //if (!\$selectpicker.is(':disabled') && \$selectpicker) {

    \$selectpicker.selectpicker({
      noneSelectedText: 'Selectionnez',
      width: '100%'
    });
  }
};

function isNotEmpty(value) {
  return value !== undefined && value !== null && value !== \"\";
}

/***/ })

}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tbW9uLmpzIl0sIm5hbWVzIjpbImNsaWNrZXZlbnQiLCJpc0luc2VydGluZyIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0UGxhY2VIb2xkZXIiLCJkYXRhZ3JpZF9vYmoiLCJkYXRhU291cmNlIiwiaGVpZ2h0IiwibWF4SGVpZ2h0IiwiY29sdW1uTWluV2lkdGgiLCJyb3dBbHRlcm5hdGlvbkVuYWJsZWQiLCJjb2x1bW5BdXRvV2lkdGgiLCJzaG93Qm9yZGVycyIsImxvYWRQYW5lbCIsImVuYWJsZWQiLCJzZWFyY2hQYW5lbCIsInZpc2libGUiLCJ3aWR0aCIsInBsYWNlaG9sZGVyIiwicGFnaW5nIiwicGFnZVNpemUiLCJwYWdlciIsImFsbG93ZWRQYWdlU2l6ZXMiLCJzaG93UGFnZVNpemVTZWxlY3RvciIsInNob3dJbmZvIiwic2hvd05hdmlnYXRpb25CdXR0b25zIiwicm93RHJhZ2dpbmciLCJhbGxvd1Jlb3JkZXJpbmciLCJkcm9wRmVlZGJhY2tNb2RlIiwib25SZW9yZGVyIiwiZSIsInZpc2libGVSb3dzIiwiY29tcG9uZW50IiwiZ2V0VmlzaWJsZVJvd3MiLCJuZXdPcmRlckluZGV4IiwidG9JbmRleCIsImRhdGEiLCJyYW5nX3RyaSIsImQiLCIkIiwiRGVmZXJyZWQiLCJnZXREYXRhU291cmNlIiwic3RvcmUiLCJ1cGRhdGUiLCJpdGVtRGF0YSIsImlkIiwidGhlbiIsInJlZnJlc2giLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsImNvbHVtbnMiLCJvbkNlbGxQcmVwYXJlZCIsInJvd1R5cGUiLCJjb2x1bW4iLCJjb21tYW5kIiwiaXNFZGl0aW5nIiwicm93IiwiJGxpbmtzIiwiY2VsbEVsZW1lbnQiLCJmaW5kIiwidGV4dCIsImZpbHRlciIsImR4QnV0dG9uIiwiaWNvbiIsImRhdGFncmlkU2ltcGxlIiwiYWxsb3dDb2x1bW5SZXNpemluZyIsImVkaXRpbmciLCJtb2RlIiwiYWxsb3dVcGRhdGluZyIsImFsbG93RGVsZXRpbmciLCJhbGxvd0FkZGluZyIsIm9uUm93VXBkYXRpbmciLCJjaGVja1BhdGgiLCJlbGVtZW50IiwiY3VzdG9tU3RvcmUiLCJvcHRpb24iLCJuZXdSb3dEYXRhIiwibmV3RGF0YSIsImdyaWQiLCJrZXkiLCJjYW5jZWwiLCJhamF4IiwidXJsIiwidHlwZSIsImRhdGFUeXBlIiwic3VjY2VzcyIsImRvbmUiLCJjYW5jZWxFZGl0RGF0YSIsImVycm9yIiwicmVzdWx0Iiwib25Sb3dJbnNlcnRpbmciLCJpbnNlcnQiLCJvblRvb2xiYXJQcmVwYXJpbmciLCJkYXRhR3JpZCIsInRvb2xiYXJJdGVtcyIsInRvb2xiYXJPcHRpb25zIiwiaXRlbXMiLCJncmVwIiwiaXRlbSIsIm5hbWUiLCJsb2NhdGlvbiIsInVuc2hpZnQiLCJ3aWRnZXQiLCJvcHRpb25zIiwib25DbGljayIsImRhdGFncmlkRnVsbCIsImFsbG93Q29sdW1uUmVvcmRlcmluZyIsInNlbGVjdGlvbiIsInNob3dDaGVja0JveGVzTW9kZSIsImRlZmVycmVkIiwiZmlsdGVyUm93IiwiYXBwbHlGaWx0ZXIiLCJoZWFkZXJGaWx0ZXIiLCJjb2x1bW5DaG9vc2VyIiwiYWxsb3dFeHBvcnRTZWxlY3RlZERhdGEiLCJ0ZXh0cyIsImV4cG9ydEFsbCIsIm9uRXhwb3J0aW5nIiwiZmlsZU5hbWUiLCJvblJvd0RibENsaWNrIiwic2VsZWN0Um93cyIsInNwbGl0IiwibGVuZ3RoIiwid2luZG93Iiwib3BlbiIsImpvaW4iLCJvbkVkaXRvclByZXBhcmluZyIsInBhcmVudFR5cGUiLCJ1cGRhdGVWYWx1ZVRpbWVvdXQiLCJvbkNvbnRlbnRSZWFkeSIsImVuZEN1c3RvbUxvYWRpbmciLCJnZXRWaXNpYmxlQ29sdW1ucyIsImkiLCJoZWFkZXJFbGVtZW50IiwiaGVhZGVySWQiLCJyZW1vdmVDbGFzcyIsImZpbHRlclZhbHVlcyIsImZpbHRlclZhbHVlIiwiYWRkQ2xhc3MiLCJvbkluaXRpYWxpemVkIiwiYmVnaW5DdXN0b21Mb2FkaW5nIiwib25Db250ZXh0TWVudVByZXBhcmluZyIsInRhcmdldCIsInB1c2giLCJ0ZW1wbGF0ZSIsIm9uSXRlbUNsaWNrIiwiYmFzZV91cmwiLCJvcmlnaW4iLCJlX2lkIiwiY2xhc3NFbnJlZ2lzdHJlckZpbHRyZSIsImV4cG9ydFBhbmVsIiwib25JdGVtUmVuZGVyZWQiLCJpdGVtRWxlbWVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJhdHRyIiwicG9wdXBfbGlzdF9maWx0ZXIiLCJkeFBvcHVwIiwic2hvdyIsImVsZW1lbnRBdHRyIiwiZmlsdHJlcyIsImdldENvbWJpbmVkRmlsdGVyIiwiRGV2RXhwcmVzcyIsInVpIiwiZGlhbG9nIiwiYWxlcnQiLCJ0b3RhbF91bmlxdWUiLCJzaG93Q2xvc2VCdXR0b24iLCJjb25zb2xlIiwibG9nIiwidGltZW91dCIsIm9iaiIsInN0YXRlIiwic2VhcmNoVGV4dCIsInJlbW92ZSIsImludmlzaWJsZUNvbHVtbnMiLCJleHBvcnRGaWVsZHMiLCJhbGxDb2x1bW5zIiwiZm9yRWFjaCIsImNvbCIsImlkeCIsInNob3dJbkNvbHVtbkNob29zZXIiLCJpbmNsdWRlcyIsImluZGV4IiwiY29sdW1uT3B0aW9uIiwiZGF0YUZpZWxkIiwiZG9jIiwianNQREYiLCJwZGZFeHBvcnRlciIsImV4cG9ydERhdGFHcmlkIiwianNQREZEb2N1bWVudCIsIm91dHB1dCIsInNhdmUiLCJjcmVhdGVEeFBvcHVwIiwiY29udGFpbmVyIiwic2hvd1RpdGxlIiwiZHJhZ0VuYWJsZWQiLCJkcmFnT3V0c2lkZUJvdW5kYXJ5IiwiY2xvc2VPbk91dHNpZGVDbGljayIsInBvc2l0aW9uIiwiYXQiLCJteSIsImNvbGxpc2lvbiIsImNyZWF0ZUN1c3RvbVN0b3JlIiwicGFnZSIsInBhdGNoX3BhdGgiLCJnZXRfcGF0aCIsImNyZWF0ZV9wYXRoIiwiZGVsZXRlX3BhdGgiLCJDdXN0b21TdG9yZSIsImxvYWQiLCJsb2FkT3B0aW9ucyIsImFyZ3MiLCJpc05vdEVtcHR5IiwiSlNPTiIsInN0cmluZ2lmeSIsInRvdGFsQ291bnQiLCJ2YWx1ZXMiLCJ4aHIiLCJzdGF0dXMiLCJieUtleSIsImdldCIsInRvU3RyaW5nIiwiY3JlYXRlRGF0YUJveCIsInZhbHVlIiwidmFsdWVFeHByIiwiZGlzcGxheUV4cHIiLCJ2YWxpZGF0aW9uUnVsZXMiLCJvblZhbHVlQ2hhbmdlZCIsInNldFZhbHVlIiwic2xpY2UiLCJjYWxjdWxhdGVDZWxsVmFsdWUiLCJzaXRlIiwibGliZWxsZSIsImhhbmRsZU5ld0Zvcm1TdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsIiRmb3JtIiwiY3VycmVudFRhcmdldCIsImNhbGxiYWNrIiwidGFyZ2V0X2h0bWwiLCJqc19yZXR1cm4iLCJub19yZXNldCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJzZXJpYWxpemUiLCJyZXNldCIsIm1ldGhvZCIsInByb2Nlc3NEYXRhIiwianFYSFIiLCJodG1sIiwicmVzcG9uc2VUZXh0IiwidGV4dFN0YXR1cyIsInBhdGgiLCJkb2N1bWVudCIsImhyZWYiLCJldmFsIiwiZW50aXRlIiwiY2VsbFRlbXBsYXRlUGhvdG8iLCJpZHByb2R1aXRzaXRlIiwiYUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaUVsZW1lbnQiLCJhcHBlbmQiLCJjZWxsVGVtcGxhdGVDb3VsZXVyIiwiY29sb3JFbGVtZW50IiwiY3NzIiwicmVzZXRGb3JtIiwiZWFjaCIsInVuZGVmaW5lZCIsImxvYWRQaWNrZXIiLCIkc2VsZWN0cGlja2VyIiwic2VsZWN0cGlja2VyIiwibm9uZVNlbGVjdGVkVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsVUFBVSxHQUFFLEVBQWhCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLEtBQWxCO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUNJO0FBQ0lDLG9CQUFrQixFQUFFLGVBRHhCO0FBRUlDLGNBQVksRUFBRTtBQUNWQyxjQUFVLEVBQUUsRUFERjtBQUVWQyxVQUFN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QUFwb0JKLENBREo7O0FBd29CQSxTQUFTcU0sVUFBVCxDQUFvQlcsS0FBcEIsRUFBMkI7QUFDdkIsU0FBT0EsS0FBSyxLQUFLNEMsU0FBVixJQUF1QjVDLEtBQUssS0FBSyxJQUFqQyxJQUF5Q0EsS0FBSyxLQUFLLEVBQTFEO0FBQ0gsQyIsImZpbGUiOiJhc3NldHNfanNfY29tbW9uX2pzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsaWNrZXZlbnQ9ICcnO1xyXG52YXIgaXNJbnNlcnRpbmcgPSBmYWxzZTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID1cclxuICAgIHtcclxuICAgICAgICBkZWZhdWx0UGxhY2VIb2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiLFxyXG4gICAgICAgIGRhdGFncmlkX29iajoge1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiB7fSxcclxuICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiA1MDAsXHJcbiAgICAgICAgICAgIGNvbHVtbk1pbldpZHRoOiA1MCxcclxuICAgICAgICAgICAgcm93QWx0ZXJuYXRpb25FbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBjb2x1bW5BdXRvV2lkdGg6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dCb3JkZXJzOiB0cnVlLFxyXG4gICAgICAgICAgICBsb2FkUGFuZWw6IHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2VhcmNoUGFuZWw6IHtcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogODAwLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhZ2luZzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhZ2VyOiB7XHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFBhZ2VTaXplczogWzEwLCAxMDAsICdhbGwnXSxcclxuICAgICAgICAgICAgICAgIHNob3dQYWdlU2l6ZVNlbGVjdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luZm86IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93TmF2aWdhdGlvbkJ1dHRvbnM6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcm93RHJhZ2dpbmc6IHtcclxuICAgICAgICAgICAgICAgIGFsbG93UmVvcmRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkcm9wRmVlZGJhY2tNb2RlOiBcInB1c2hcIixcclxuICAgICAgICAgICAgICAgIG9uUmVvcmRlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdmlzaWJsZVJvd3MgPSBlLmNvbXBvbmVudC5nZXRWaXNpYmxlUm93cygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdPcmRlckluZGV4ID0gdmlzaWJsZVJvd3NbZS50b0luZGV4XS5kYXRhLnJhbmdfdHJpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gJC5EZWZlcnJlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhU291cmNlID0gZS5jb21wb25lbnQuZ2V0RGF0YVNvdXJjZSgpLnN0b3JlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS51cGRhdGUoZS5pdGVtRGF0YS5pZCwge3JhbmdfdHJpOiBuZXdPcmRlckluZGV4fSkudGhlbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnJlZnJlc2goKS50aGVuKGQucmVzb2x2ZSwgZC5yZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIGQucmVqZWN0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcm9taXNlID0gZC5wcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IHt9LFxyXG4gICAgICAgICAgICBvbkNlbGxQcmVwYXJlZDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlLnJvd1R5cGUgPT09IFwiZGF0YVwiICYmIGUuY29sdW1uLmNvbW1hbmQgPT09IFwiZWRpdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzRWRpdGluZyA9IGUucm93LmlzRWRpdGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmtzID0gZS5jZWxsRWxlbWVudC5maW5kKFwiLmR4LWxpbmtcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRsaW5rcy50ZXh0KFwiXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5rcy5maWx0ZXIoXCIuZHgtbGluay1zYXZlXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwic2F2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGlua3MuZmlsdGVyKFwiLmR4LWxpbmstY2FuY2VsXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwicmV2ZXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmtzLmZpbHRlcihcIi5keC1saW5rLWVkaXRcIikuZHhCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGlua3MuZmlsdGVyKFwiLmR4LWxpbmstZGVsZXRlXCIpLmR4QnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwidHJhc2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vZGF0YSBzaW1wbGVcclxuICAgICAgICBkYXRhZ3JpZFNpbXBsZToge1xyXG4gICAgICAgICAgIC8vIHJlbW90ZU9wZXJhdGlvbnM6IHtncm91cFBhZ2luZzogdHJ1ZX0sXHJcbiAgICAgICAgICAgIGFsbG93Q29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGVkaXRpbmc6IHtcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwicm93XCIsXHJcbiAgICAgICAgICAgICAgICBhbGxvd1VwZGF0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dEZWxldGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFsbG93QWRkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJvd1VwZGF0aW5nOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tQYXRoID0gJChlLmVsZW1lbnQpLmRhdGEoJ2NoZWNrcGF0aCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1c3RvbVN0b3JlID0gZS5jb21wb25lbnQub3B0aW9uKFwiZGF0YVNvdXJjZVwiKTtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdSb3dEYXRhID0gZS5uZXdEYXRhO1xyXG4gICAgICAgICAgICAgICAgdmFyIGdyaWQgPSBlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBlLmtleTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tQYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogY2hlY2tQYXRoICsgJy8nICsga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBuZXdSb3dEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21TdG9yZS51cGRhdGUoa2V5LG5ld1Jvd0RhdGEpLmRvbmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQuY2FuY2VsRWRpdERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJvd0luc2VydGluZzogZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICAgIHZhciBjaGVja1BhdGggPSAkKGUuZWxlbWVudCkuZGF0YSgnY2hlY2twYXRoJyk7XHJcbiAgICAgICAgICAgICAgdmFyIGN1c3RvbVN0b3JlID0gZS5jb21wb25lbnQub3B0aW9uKFwiZGF0YVNvdXJjZVwiKTtcclxuICAgICAgICAgICAgICB2YXIgbmV3Um93RGF0YSA9IGUuZGF0YTtcclxuICAgICAgICAgICAgICB2YXIgZ3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGVja1BhdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG5ld1Jvd0RhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tU3RvcmUuaW5zZXJ0KG5ld1Jvd0RhdGEpLmRvbmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC5jYW5jZWxFZGl0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlLmNhbmNlbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uVG9vbGJhclByZXBhcmluZzogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhR3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvb2xiYXJJdGVtcyA9IGUudG9vbGJhck9wdGlvbnMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoUGFuZWwgPSAkLmdyZXAodG9vbGJhckl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgPT09IFwic2VhcmNoUGFuZWxcIjtcclxuICAgICAgICAgICAgICAgIH0pWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzZWFyY2hQYW5lbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFBhbmVsLmxvY2F0aW9uID0gXCJiZWZvcmVcIjtcclxuICAgICAgICAgICAgICAgICAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwicmVmcmVzaFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vZGF0YSBmdWxsXHJcbiAgICAgICAgZGF0YWdyaWRGdWxsOiB7XHJcbiAgICAgICAgICAgIGFsbG93Q29sdW1uUmVvcmRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICAgYWxsb3dDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBtb2RlOiBcIm11bHRpcGxlXCIsXHJcbiAgICAgICAgICAgICAgICBzaG93Q2hlY2tCb3hlc01vZGU6ICdhbHdheXMnLFxyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQ6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsdGVyUm93OiB7XHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYXBwbHlGaWx0ZXI6IFwiYXV0b1wiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGhlYWRlckZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29sdW1uQ2hvb3Nlcjoge1xyXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXhwb3J0OiB7XHJcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFeHBvcnRTZWxlY3RlZERhdGE6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0cyA6IHtcclxuICAgICAgICAgICAgICAgICAgICBleHBvcnRBbGwgOiAnRXhwb3J0ZXIgdG91dCdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25FeHBvcnRpbmc6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuZmlsZU5hbWUgPSAkKGUuZWxlbWVudCkuZGF0YSgnZXhwb3J0bmFtZScpIDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25Sb3dEYmxDbGljazogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnNlbGVjdFJvd3MoW2Uua2V5XSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gJCgnI2luZm9zX2xpc3QnKS5kYXRhKCdzaG93bGluaycpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgICAgICB1cmxbdXJsLmxlbmd0aCAtIDFdID0gZS5kYXRhLmlkO1xyXG4gICAgICAgICAgICAgICAgLy9UdXJiby52aXNpdCh1cmwuam9pbignLycpKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybC5qb2luKCcvJyksXCJfYmxhbmtcIik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uRWRpdG9yUHJlcGFyaW5nOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUucGFyZW50VHlwZSA9PT0gXCJmaWx0ZXJSb3dcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGUudXBkYXRlVmFsdWVUaW1lb3V0ID0gMTcwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25Db250ZW50UmVhZHk6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LmVuZEN1c3RvbUxvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gZS5jb21wb25lbnQuZ2V0VmlzaWJsZUNvbHVtbnMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBQYXJjb3VyaXIgbGVzIGNvbG9ubmVzIHBvdXIgdsOpcmlmaWVyIHNpIGwndW5lIGQnZW50cmUgZWxsZXMgZXN0IGZpbHRyw6llXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVyRWxlbWVudCA9IGUuZWxlbWVudC5maW5kKFwiLmR4LWVkaXRvci1jZWxsIFthcmlhLWRlc2NyaWJlZGJ5PVwiKyBjb2x1bW5zW2ldLmhlYWRlcklkICtcIl1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5yZW1vdmVDbGFzcygnYm9yZGVyMi1vcmFuZ2UnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGNvbHVtbnNbaV0uZmlsdGVyVmFsdWVzICYmIGNvbHVtbnNbaV0uZmlsdGVyVmFsdWVzLmxlbmd0aCA+IDApIHx8IGNvbHVtbnNbaV0uZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWpvdXRlciB1bmUgYm9yZHVyZSBkZSBjb3VsZXVyIMOgIGxhIGNvbG9ubmUgZmlsdHLDqWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckVsZW1lbnQuYWRkQ2xhc3MoXCJib3JkZXIyLW9yYW5nZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LmJlZ2luQ3VzdG9tTG9hZGluZygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNvbnRleHRNZW51UHJlcGFyaW5nOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09IFwiY29udGVudFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZS5pdGVtcyBjYW4gYmUgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLml0ZW1zKSBlLml0ZW1zID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIGN1c3RvbSBtZW51IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBlLml0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IFwiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZTogMXJlbTsnPjxpIGNsYXNzPSdmYSBmYS1wbHVzIG1lLTInPjwvaT5PdXZyaXIgZGFucyB1bmUgbm91dmVsbGUgcGFnZTwvc3Bhbj5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtQ2xpY2s6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2VfdXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKCcjaW5mb3NfbGlzdCcpLmRhdGEoJ3Nob3dsaW5rJykuc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9uZW50LnNlbGVjdFJvd3MoW2Uucm93LmtleV0sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnJvdy5rZXkuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBlLnJvdy5rZXkuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUucm93LmtleS5lX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICs9ICc/aWRfZXF1aXBlbWVudD0nICsgZS5yb3cua2V5LmVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFt1cmwubGVuZ3RoIC0gMV0gPSBpZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFt1cmwubGVuZ3RoIC0xXSA9IGUucm93LmtleTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihiYXNlX3VybCArIHVybC5qb2luKCcvJyksIFwiX2JsYW5rXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uVG9vbGJhclByZXBhcmluZzogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhR3JpZCA9IGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvb2xiYXJJdGVtcyA9IGUudG9vbGJhck9wdGlvbnMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2xhc3NFbnJlZ2lzdHJlckZpbHRyZSA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBleHBvcnRQYW5lbCA9ICQuZ3JlcCh0b29sYmFySXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSA9PT0gXCJleHBvcnRCdXR0b25cIjtcclxuICAgICAgICAgICAgICAgIH0pWzBdO1xyXG4gICAgICAgICAgICAgICAgZXhwb3J0UGFuZWwubG9jYXRpb24gPSBcImJlZm9yZVwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlYXJjaFBhbmVsID0gJC5ncmVwKHRvb2xiYXJJdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lID09PSBcInNlYXJjaFBhbmVsXCI7XHJcbiAgICAgICAgICAgICAgICB9KVswXTtcclxuICAgICAgICAgICAgICAgIHNlYXJjaFBhbmVsLmxvY2F0aW9uID0gXCJiZWZvcmVcIjtcclxuICAgICAgICAgICAgICAgIGlmICgkKCdib2R5JykuZGF0YSgncmVzcG9uc2FibGUnKSAhPSBcIjFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRW5yZWdpc3RyZXJGaWx0cmUgPSAnaGlkZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZS50b29sYmFyT3B0aW9ucy5vbkl0ZW1SZW5kZXJlZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5pZCA9PSBcInVuZG9cIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nUmV0b3VyJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5pZCA9PSBcInJhZnJhaWNoaXJcIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nUmFmcmFpY2hpcic7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXRlbURhdGEuaWQgPT0gXCJleHBvcnRwZGZcIikgZWxlbWVudC5pdGVtRWxlbWVudFswXS50aXRsZT0nRXhwb3J0ZXIgZW4gcGRmJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pdGVtRGF0YS5uYW1lID09IFwiZXhwb3J0QnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50Lml0ZW1FbGVtZW50WzBdKS5jaGlsZHJlbignLmR4LXRvb2xiYXItaXRlbS1jb250ZW50JykuY2hpbGRyZW4oJy5keC1kYXRhZ3JpZC1leHBvcnQtYnV0dG9uJykuYXR0cigndGl0bGUnLCAnRXhwb3J0IGVuIHhsc3gnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZS50b29sYmFyT3B0aW9ucy5pdGVtcy51bnNoaWZ0KFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiBcImR4QnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IFwiTWVzIGZpbHRyZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9wdXBfbGlzdF9maWx0ZXIgPSAkKFwiI3BvcHVwLWxpc3QtZmlsdGVyXCIpLmR4UG9wdXAoJ2luc3RhbmNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBfbGlzdF9maWx0ZXIuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogXCJFbnJlZ2lzdHJlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwib3BlbnBvcHVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXR0cjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBjbGFzc0VucmVnaXN0cmVyRmlsdHJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIm9wZW5wb3B1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcG91ciBsYSBsaXN0ZSBjbGllbnQsIG9uIGFqb3V0ZSB1biBib3V0b24gcG91ciBkw6lub21icmVyXHJcbiAgICAgICAgICAgICAgICBpZiAoJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ3BhZ2UnKSA9PSAnQ2xpZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGUudG9vbGJhck9wdGlvbnMuaXRlbXMudW5zaGlmdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogXCJkeEJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdHJlcyA9IGUuY29tcG9uZW50LmdldENvbWJpbmVkRmlsdGVyKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvY2xpZW50cy9nZXQvY2xpZW50cy9kZW5vbWJyZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInBvc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J2ZpbHRyZXMnOiBmaWx0cmVzfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkV4cHJlc3MudWkuZGlhbG9nLmFsZXJ0KFwiTm9tYnJlIGRlIG51bcOpcm8gZGUgc8OpcmllOiBcIiArIHJlc3VsdC50b3RhbF91bmlxdWUsIFwiRMOpbm9tYnJlbWVudFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2VycmV1cicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IFwiRMOpbm9tYnJlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDpcInVuZG9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiBcImR4QnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwidW5kb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCdib2R5JykuZGF0YSgncmVzcG9uc2FibGUnKSA9PSBcIjFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5vcHRpb24oXCJmaWx0ZXJWYWx1ZVwiLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iaiA9IGRhdGFHcmlkLnN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmouY29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmZpbHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5zdGF0ZShvYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkLnN0YXRlKHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21lcy1maWx0cmVzJykucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImFmdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOlwicmFmcmFpY2hpclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IFwiZHhCdXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJyZWZyZXNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWQucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBcImJlZm9yZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IFwiZHhCdXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XCJleHBvcnRwZGZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJwZGZmaWxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW52aXNpYmxlQ29sdW1ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcsOpY3Vww6lyYXRpb24gc2kgb24gYSBkZXMgY2hhbXAgw6AgZXhwb3J0ZXIgbWFpcyBjYWNow6lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXhwb3J0RmllbGRzID0gJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ2V4cG9ydC1maWVsZHMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwb3J0RmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSBkYXRhR3JpZC5vcHRpb24oXCJjb2x1bW5zXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24oY29sLCBpZHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wudmlzaWJsZSA9PT0gZmFsc2UgJiYgY29sLnNob3dJbkNvbHVtbkNob29zZXIgPT09IGZhbHNlICYmIGV4cG9ydEZpZWxkcy5pbmNsdWRlcyhjb2wubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZpc2libGVDb2x1bW5zLnB1c2goeyBpbmRleDogaWR4LCBjb2w6IGNvbCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZC5jb2x1bW5PcHRpb24oY29sLmRhdGFGaWVsZCwgXCJ2aXNpYmxlXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdsYW5kc2NhcGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZFeHByZXNzLnBkZkV4cG9ydGVyLmV4cG9ydERhdGFHcmlkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNQREZEb2N1bWVudDogZG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGRhdGFHcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5vdXRwdXQoJ2RhdGF1cmxuZXd3aW5kb3cnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLnNhdmUoJChkYXRhR3JpZC5lbGVtZW50KCkpLmRhdGEoJ2V4cG9ydG5hbWUnKSArICcucGRmJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzLiBSZXN0YXVyZSBsYSB2aXNpYmlsaXTDqSBpbml0aWFsZSBkZXMgY29sb25uZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52aXNpYmxlQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkLmNvbHVtbk9wdGlvbihpdGVtLmNvbC5kYXRhRmllbGQsIFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY3JlYXRlRHhQb3B1cDogZnVuY3Rpb24gKGlkLCB0aXRsZSwgd2lkdGgsIGhlaWdodCA9IFwiYXV0b1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAkKFwiI1wiICsgaWQpLmR4UG9wdXAoe1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IFwiOTF2aFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcIi5keC12aWV3cG9ydFwiLFxyXG4gICAgICAgICAgICAgICAgc2hvd1RpdGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkcmFnRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRyYWdPdXRzaWRlQm91bmRhcnk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwibm9idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXQ6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbXk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uIDogJ2ZpdCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KS5keFBvcHVwKFwiaW5zdGFuY2VcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVDdXN0b21TdG9yZTogZnVuY3Rpb24gKHBhZ2UsIHBhdGNoX3BhdGgsIGdldF9wYXRoLCBjcmVhdGVfcGF0aCwgZGVsZXRlX3BhdGgsIGtleSA9ICdpZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXZFeHByZXNzLmRhdGEuQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAobG9hZE9wdGlvbnMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gJC5EZWZlcnJlZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImdyb3VwUGFnaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZmlsdGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmVxdWlyZVRvdGFsQ291bnRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJza2lwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGFrZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNvcnRcIixcclxuICAgICAgICAgICAgICAgICAgICBdLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgaW4gbG9hZE9wdGlvbnMgJiYgaXNOb3RFbXB0eShsb2FkT3B0aW9uc1tpXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gSlNPTi5zdHJpbmdpZnkobG9hZE9wdGlvbnNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXCIvZ2V0L1wiICsgcGFnZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X3BhdGgpIHVybCA9IGdldF9wYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFyZ3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocmVzdWx0LmRhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50OiByZXN1bHQudG90YWxDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3QoXCJFcnJldXIgZGFucyBsZSBjaGFyZ2VtZW50IGRlIGRvbm7DqWVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2VycmV1ciBjaGFyZ2VtZW50IGRvbm7DqWVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uIChrZXksIHZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcIi9cIiArIHBhZ2UgKyAnLycgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoX3BhdGgpIHVybCA9IHBhdGNoX3BhdGggKyAnLycgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicGF0Y2hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB2YWx1ZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhocixzdGF0dXMsZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyZXVyIGxvcnMgZGUgbGEgbWlzZSDDoCBqb3VyIGRlcyBkb25uw6llcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKGtleSwgdmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiL1wiICsgcGFnZSArICcvJyArIGtleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlX3BhdGgpIHVybCA9IGRlbGV0ZV9wYXRoICsgJy8nICsga2V5O1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkRFTEVURVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyZXVyIGxvcnMgZGUgbGEgc3VwcHJlc3Npb24gZGVzIGRvbm7DqWVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaW5zZXJ0OiBmdW5jdGlvbiAodmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiL2NyZWF0ZS9cIiArIHBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZV9wYXRoKSB1cmwgPSBjcmVhdGVfcGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJwb3N0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdmFsdWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHhocik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gNDQzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVqZWN0KFwiRXJyZXVyIGRlIHZhbGlkYXRpb25cIikucHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJldXIgbG9ycyBkZSBsYSBtaXNlIMOgIGpvdXIgZGVzIGRvbm7DqWVzJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ5S2V5OiBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuZ2V0KFwiL2dldC9cIiArIHBhZ2UgKyAnLycgKyBrZXkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyZWF0ZURhdGFCb3g6IGZ1bmN0aW9uIChkYXRhU291cmNlLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBvcHRpb25zW3ZhbHVlXSxcclxuICAgICAgICAgICAgICAgIHZhbHVlRXhwcjoga2V5LFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblJ1bGVzOiBbe3R5cGU6ICdyZXF1aXJlZCd9XSxcclxuICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VkOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0VmFsdWUoZS52YWx1ZXMuc2xpY2UoMCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYWxjdWxhdGVDZWxsVmFsdWU6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICBkYXRhLnNpdGUuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUucHVzaChlLmxpYmVsbGUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJywnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhbmRsZU5ld0Zvcm1TdWJtaXQ6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICAgIHZhciAkZm9ybSA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gJGZvcm0uZGF0YSgnY2FsbGJhY2snKTtcclxuICAgICAgICAgICAgdmFyIHRhcmdldF9odG1sID0gJGZvcm0uZGF0YSgndGFyZ2V0LWh0bWwnKTtcclxuICAgICAgICAgICAgdmFyIGpzX3JldHVybiA9ICRmb3JtLmRhdGEoJ2pzJyk7XHJcbiAgICAgICAgICAgIHZhciBub19yZXNldCA9ICRmb3JtLmRhdGEoJ25vLXJlc2V0Jyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoJGZvcm0uZGF0YSgnZmlsZScpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybURhdGEgPSBGb3JtRGF0YShlLmN1cnJlbnRUYXJnZXQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZvcm1EYXRhID0gJChlLmN1cnJlbnRUYXJnZXQpLnNlcmlhbGl6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIW5vX3Jlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAkZm9ybVswXS5yZXNldCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiAkZm9ybS5hdHRyKCdhY3Rpb24nKSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoanFYSFIpIHtcclxuICAgICAgICAgICAgICAgICAgICAkZm9ybS5odG1sKGpxWEhSLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEsIHRleHRTdGF0dXMsIHhocikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRhdGEucGF0aDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoY2FsbGJhY2sgKyAnKCcgKyBKU09OLnN0cmluZ2lmeShkYXRhLmVudGl0ZSkgKyAnKScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5odG1sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGFyZ2V0X2h0bWwpLmh0bWwoZGF0YS5odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0YXJnZXRfaHRtbCkuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNfcmV0dXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoanNfcmV0dXJuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuanNfcmV0dXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoZGF0YS5qc19yZXR1cm4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiA1MDAwMCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjZWxsVGVtcGxhdGVQaG90bzogZnVuY3Rpb24gKGNvbnRhaW5lciwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB2YXIga2V5ID0gb3B0aW9ucy5kYXRhLmlkO1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXRhLmlkcHJvZHVpdHNpdGUpIGtleSA9IG9wdGlvbnMuZGF0YS5pZHByb2R1aXRzaXRlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGtleSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoaUVsZW1lbnQpLmFkZENsYXNzKFwiZmEgZmEtMnggZmEtZWRpdFwiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChpRWxlbWVudCkuYWRkQ2xhc3MoXCJmYSBmYS0yeCBmYS1wbHVzLWNpcmNsZVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICQoYUVsZW1lbnQpLmF0dHIoJ2RhdGEtcG9wdXAtaWQnLCAncG9wdXBfY2VsbCcpLmF0dHIoJ2RhdGEtcG9wdXAtdGl0bGUnLCAnR2VzdGlvbiBkZXMgUGhvdG9zJykuYXR0cignZGF0YS1wb3B1cC13aWR0aCcsICdhdXRvJykuYXR0cignZGF0YS1keHBvcHVwJywgJycpO1xyXG4gICAgICAgICAgICAgICAgJChhRWxlbWVudCkuYXR0cignZGF0YS1jb250ZW50LXRlbXBsYXRlLWFqYXgnLCAnL3Byb2R1aXRfcGhvdG9zLycra2V5KTtcclxuICAgICAgICAgICAgICAgIGFFbGVtZW50LmFwcGVuZChpRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGFFbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2VsbFRlbXBsYXRlQ291bGV1cjogZnVuY3Rpb24gKGNvbnRhaW5lciwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgJChjb2xvckVsZW1lbnQpLmNzcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJzIwcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMjBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNTAlJyxcclxuICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IG9wdGlvbnMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlcic6ICcxcHggc29saWQgI2NjYycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiAnaW5saW5lLWJsb2NrJyxcclxuICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiAnbWlkZGxlJ1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIEFqb3V0ZXIgdW4gdGl0cmUgYXZlYyBsZSBub20gZGUgbGEgY291bGV1clxyXG4gICAgICAgICAgICAgICAgJChjb2xvckVsZW1lbnQpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoY29sb3JFbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRGb3JtOiBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICQoJ2Zvcm0nKS5lYWNoKGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ25vLXJlc2V0JykgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKVswXS5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9hZFBpY2tlcjogZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICB2YXIgJHNlbGVjdHBpY2tlciA9ICQoJy5teS1zZWxlY3QtbXVsdGlwbGUnKTtcclxuICAgICAgICAgICAgLy9pZiAoISRzZWxlY3RwaWNrZXIuaXMoJzpkaXNhYmxlZCcpICYmICRzZWxlY3RwaWNrZXIpIHtcclxuICAgICAgICAgICAgJHNlbGVjdHBpY2tlci5zZWxlY3RwaWNrZXIoe1xyXG4gICAgICAgICAgICAgICAgbm9uZVNlbGVjdGVkVGV4dDogJ1NlbGVjdGlvbm5leicsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG5cclxuICAgIH07XHJcbmZ1bmN0aW9uIGlzTm90RW1wdHkodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSBcIlwiO1xyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==", "@public_path/build/assets_js_common_js.js", "/builds/dev/refonte_sav/public/build/assets_js_common_js.js");
    }
}
