diff --git a/dist/index.common.js b/dist/index.common.js index f637ae5..fa831ef 100644 --- a/dist/index.common.js +++ b/dist/index.common.js @@ -39,12 +39,12 @@ function matchCascaderData(index, list, values, labels) { } } -function getProps(_ref, _ref2) { +function getProps(_ref, _ref2, defaultProps) { var $table = _ref.$table; var props = _ref2.props; return _xeUtils["default"].assign($table.vSize ? { size: $table.vSize - } : {}, props); + } : {}, defaultProps, props); } function getCellEvents(renderOpts, params) { @@ -71,22 +71,24 @@ function getCellEvents(renderOpts, params) { return on; } -function defaultEditRender(h, renderOpts, params) { - var row = params.row, - column = params.column; - var attrs = renderOpts.attrs; - var props = getProps(params, renderOpts); - return [h(renderOpts.name, { - props: props, - attrs: attrs, - model: { - value: _xeUtils["default"].get(row, column.property), - callback: function callback(value) { - _xeUtils["default"].set(row, column.property, value); - } - }, - on: getCellEvents(renderOpts, params) - })]; +function createEditRender(defaultProps) { + return function (h, renderOpts, params) { + var row = params.row, + column = params.column; + var attrs = renderOpts.attrs; + var props = getProps(params, renderOpts, defaultProps); + return [h(renderOpts.name, { + props: props, + attrs: attrs, + model: { + value: _xeUtils["default"].get(row, column.property), + callback: function callback(value) { + _xeUtils["default"].set(row, column.property, value); + } + }, + on: getCellEvents(renderOpts, params) + })]; + }; } function getFilterEvents(on, renderOpts, params, context) { @@ -111,34 +113,36 @@ function getFilterEvents(on, renderOpts, params, context) { return on; } -function defaultFilterRender(h, renderOpts, params, context) { - var column = params.column; - var name = renderOpts.name, - attrs = renderOpts.attrs, - events = renderOpts.events; - var type = 'on-change'; - var props = getProps(params, renderOpts); - return column.filters.map(function (item) { - return h(name, { - props: props, - attrs: attrs, - model: { - value: item.data, - callback: function callback(optionValue) { - item.data = optionValue; - } - }, - on: getFilterEvents(_defineProperty({}, type, function (evnt) { - handleConfirmFilter(context, column, !!item.data, item); +function createFilterRender(defaultProps) { + return function (h, renderOpts, params, context) { + var column = params.column; + var name = renderOpts.name, + attrs = renderOpts.attrs, + events = renderOpts.events; + var type = 'on-change'; + var props = getProps(params, renderOpts); + return column.filters.map(function (item) { + return h(name, { + props: props, + attrs: attrs, + model: { + value: item.data, + callback: function callback(optionValue) { + item.data = optionValue; + } + }, + on: getFilterEvents(_defineProperty({}, type, function (evnt) { + handleConfirmFilter(context, column, !!item.data, item); - if (events && events[type]) { - events[type](Object.assign({ - context: context - }, params), evnt); - } - }), renderOpts, params, context) + if (events && events[type]) { + events[type](Object.assign({ + context: context + }, params), evnt); + } + }), renderOpts, params, context) + }); }); - }); + }; } function handleConfirmFilter(context, column, checked, item) { @@ -185,23 +189,23 @@ function cellText(h, cellValue) { var renderMap = { Input: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, AutoComplete: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, InputNumber: { autofocus: 'input.ivu-input-number-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, Select: { @@ -215,7 +219,9 @@ var renderMap = { var row = params.row, column = params.column; var attrs = renderOpts.attrs; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); if (optionGroups) { var groupOptions = optionGroupProps.options || 'options'; @@ -305,7 +311,9 @@ var renderMap = { var column = params.column; var attrs = renderOpts.attrs, events = renderOpts.events; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); var type = 'on-change'; if (optionGroups) { @@ -389,7 +397,9 @@ var renderMap = { } }, Cascader: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ + transfer: true + }), renderCell: function renderCell(h, _ref5, params) { var _ref5$props = _ref5.props, props = _ref5$props === void 0 ? {} : _ref5$props; @@ -405,7 +415,9 @@ var renderMap = { } }, DatePicker: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ + transfer: true + }), renderCell: function renderCell(h, _ref6, params) { var _ref6$props = _ref6.props, props = _ref6$props === void 0 ? {} : _ref6$props; @@ -451,7 +463,9 @@ var renderMap = { var column = params.column; var attrs = renderOpts.attrs, events = renderOpts.events; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); var type = 'on-change'; return column.filters.map(function (item) { return h(renderOpts.name, { @@ -503,18 +517,20 @@ var renderMap = { } }, TimePicker: { - renderEdit: defaultEditRender + renderEdit: createEditRender({ + transfer: true + }) }, Rate: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, iSwitch: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod } }; @@ -553,4 +569,4 @@ if (typeof window !== 'undefined' && window.VXETable) { var _default = VXETablePluginIView; exports["default"] = _default; -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbImdldEZvcm1hdERhdGUiLCJ2YWx1ZSIsInByb3BzIiwiZGVmYXVsdEZvcm1hdCIsIlhFVXRpbHMiLCJ0b0RhdGVTdHJpbmciLCJmb3JtYXQiLCJnZXRGb3JtYXREYXRlcyIsInZhbHVlcyIsInNlcGFyYXRvciIsIm1hcCIsImRhdGUiLCJqb2luIiwiZXF1YWxEYXRlcmFuZ2UiLCJjZWxsVmFsdWUiLCJkYXRhIiwibWF0Y2hDYXNjYWRlckRhdGEiLCJpbmRleCIsImxpc3QiLCJsYWJlbHMiLCJ2YWwiLCJsZW5ndGgiLCJlYWNoIiwiaXRlbSIsInB1c2giLCJsYWJlbCIsImNoaWxkcmVuIiwiZ2V0UHJvcHMiLCIkdGFibGUiLCJhc3NpZ24iLCJ2U2l6ZSIsInNpemUiLCJnZXRDZWxsRXZlbnRzIiwicmVuZGVyT3B0cyIsInBhcmFtcyIsImV2ZW50cyIsInR5cGUiLCJvbiIsInVwZGF0ZVN0YXR1cyIsIm9iamVjdE1hcCIsImNiIiwiYXJncyIsImFwcGx5IiwiY29uY2F0IiwiZGVmYXVsdEVkaXRSZW5kZXIiLCJoIiwicm93IiwiY29sdW1uIiwiYXR0cnMiLCJuYW1lIiwibW9kZWwiLCJnZXQiLCJwcm9wZXJ0eSIsImNhbGxiYWNrIiwic2V0IiwiZ2V0RmlsdGVyRXZlbnRzIiwiY29udGV4dCIsIk9iamVjdCIsImRlZmF1bHRGaWx0ZXJSZW5kZXIiLCJmaWx0ZXJzIiwib3B0aW9uVmFsdWUiLCJldm50IiwiaGFuZGxlQ29uZmlybUZpbHRlciIsImNoZWNrZWQiLCJmaWx0ZXJNdWx0aXBsZSIsImRlZmF1bHRGaWx0ZXJNZXRob2QiLCJvcHRpb24iLCJyZW5kZXJPcHRpb25zIiwib3B0aW9ucyIsIm9wdGlvblByb3BzIiwibGFiZWxQcm9wIiwidmFsdWVQcm9wIiwiZGlzYWJsZWRQcm9wIiwiZGlzYWJsZWQiLCJrZXkiLCJjZWxsVGV4dCIsInJlbmRlck1hcCIsIklucHV0IiwiYXV0b2ZvY3VzIiwicmVuZGVyRGVmYXVsdCIsInJlbmRlckVkaXQiLCJyZW5kZXJGaWx0ZXIiLCJmaWx0ZXJNZXRob2QiLCJBdXRvQ29tcGxldGUiLCJJbnB1dE51bWJlciIsIlNlbGVjdCIsIm9wdGlvbkdyb3VwcyIsIm9wdGlvbkdyb3VwUHJvcHMiLCJncm91cE9wdGlvbnMiLCJncm91cExhYmVsIiwiZ3JvdXAiLCJnSW5kZXgiLCJyZW5kZXJDZWxsIiwidW5kZWZpbmVkIiwibXVsdGlwbGUiLCJzZWxlY3RJdGVtIiwiZmluZCIsImZpbHRlclJlbmRlciIsImlzQXJyYXkiLCJpbmNsdWRlQXJyYXlzIiwiaW5kZXhPZiIsIkNhc2NhZGVyIiwiRGF0ZVBpY2tlciIsIlRpbWVQaWNrZXIiLCJSYXRlIiwiaVN3aXRjaCIsImhhbmRsZUNsZWFyRXZlbnQiLCJnZXRFdmVudFRhcmdldE5vZGUiLCJib2R5RWxlbSIsImRvY3VtZW50IiwiYm9keSIsImZsYWciLCJWWEVUYWJsZVBsdWdpbklWaWV3IiwiaW5zdGFsbCIsInh0YWJsZSIsImludGVyY2VwdG9yIiwicmVuZGVyZXIiLCJtaXhpbiIsImFkZCIsIndpbmRvdyIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7OztBQUdBLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQW1DQyxLQUFuQyxFQUErQ0MsYUFBL0MsRUFBb0U7QUFDbEUsU0FBT0Msb0JBQVFDLFlBQVIsQ0FBcUJKLEtBQXJCLEVBQTRCQyxLQUFLLENBQUNJLE1BQU4sSUFBZ0JILGFBQTVDLENBQVA7QUFDRDs7QUFFRCxTQUFTSSxjQUFULENBQXdCQyxNQUF4QixFQUFxQ04sS0FBckMsRUFBaURPLFNBQWpELEVBQW9FTixhQUFwRSxFQUF5RjtBQUN2RixTQUFPQyxvQkFBUU0sR0FBUixDQUFZRixNQUFaLEVBQW9CLFVBQUNHLElBQUQ7QUFBQSxXQUFlWCxhQUFhLENBQUNXLElBQUQsRUFBT1QsS0FBUCxFQUFjQyxhQUFkLENBQTVCO0FBQUEsR0FBcEIsRUFBOEVTLElBQTlFLENBQW1GSCxTQUFuRixDQUFQO0FBQ0Q7O0FBRUQsU0FBU0ksY0FBVCxDQUF3QkMsU0FBeEIsRUFBd0NDLElBQXhDLEVBQW1EYixLQUFuRCxFQUErREMsYUFBL0QsRUFBb0Y7QUFDbEZXLEVBQUFBLFNBQVMsR0FBR2QsYUFBYSxDQUFDYyxTQUFELEVBQVlaLEtBQVosRUFBbUJDLGFBQW5CLENBQXpCO0FBQ0EsU0FBT1csU0FBUyxJQUFJZCxhQUFhLENBQUNlLElBQUksQ0FBQyxDQUFELENBQUwsRUFBVWIsS0FBVixFQUFpQkMsYUFBakIsQ0FBMUIsSUFBNkRXLFNBQVMsSUFBSWQsYUFBYSxDQUFDZSxJQUFJLENBQUMsQ0FBRCxDQUFMLEVBQVViLEtBQVYsRUFBaUJDLGFBQWpCLENBQTlGO0FBQ0Q7O0FBRUQsU0FBU2EsaUJBQVQsQ0FBMkJDLEtBQTNCLEVBQTBDQyxJQUExQyxFQUE0RFYsTUFBNUQsRUFBZ0ZXLE1BQWhGLEVBQWtHO0FBQ2hHLE1BQUlDLEdBQUcsR0FBR1osTUFBTSxDQUFDUyxLQUFELENBQWhCOztBQUNBLE1BQUlDLElBQUksSUFBSVYsTUFBTSxDQUFDYSxNQUFQLEdBQWdCSixLQUE1QixFQUFtQztBQUNqQ2Isd0JBQVFrQixJQUFSLENBQWFKLElBQWIsRUFBbUIsVUFBQ0ssSUFBRCxFQUFjO0FBQy9CLFVBQUlBLElBQUksQ0FBQ3RCLEtBQUwsS0FBZW1CLEdBQW5CLEVBQXdCO0FBQ3RCRCxRQUFBQSxNQUFNLENBQUNLLElBQVAsQ0FBWUQsSUFBSSxDQUFDRSxLQUFqQjtBQUNBVCxRQUFBQSxpQkFBaUIsQ0FBQyxFQUFFQyxLQUFILEVBQVVNLElBQUksQ0FBQ0csUUFBZixFQUF5QmxCLE1BQXpCLEVBQWlDVyxNQUFqQyxDQUFqQjtBQUNEO0FBQ0YsS0FMRDtBQU1EO0FBQ0Y7O0FBRUQsU0FBU1EsUUFBVCxjQUFpRDtBQUFBLE1BQTdCQyxNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxNQUFaMUIsS0FBWSxTQUFaQSxLQUFZO0FBQy9DLFNBQU9FLG9CQUFReUIsTUFBUixDQUFlRCxNQUFNLENBQUNFLEtBQVAsR0FBZTtBQUFFQyxJQUFBQSxJQUFJLEVBQUVILE1BQU0sQ0FBQ0U7QUFBZixHQUFmLEdBQXdDLEVBQXZELEVBQTJENUIsS0FBM0QsQ0FBUDtBQUNEOztBQUVELFNBQVM4QixhQUFULENBQXVCQyxVQUF2QixFQUF3Q0MsTUFBeEMsRUFBbUQ7QUFBQSxNQUMzQ0MsTUFEMkMsR0FDaENGLFVBRGdDLENBQzNDRSxNQUQyQztBQUFBLE1BRTNDUCxNQUYyQyxHQUVoQ00sTUFGZ0MsQ0FFM0NOLE1BRjJDO0FBR2pELE1BQUlRLElBQUksR0FBRyxXQUFYOztBQUNBLE1BQUlDLEVBQUUsdUJBQ0hELElBREcsRUFDSTtBQUFBLFdBQU1SLE1BQU0sQ0FBQ1UsWUFBUCxDQUFvQkosTUFBcEIsQ0FBTjtBQUFBLEdBREosQ0FBTjs7QUFHQSxNQUFJQyxNQUFKLEVBQVk7QUFDVixXQUFPL0Isb0JBQVF5QixNQUFSLENBQWUsRUFBZixFQUFtQnpCLG9CQUFRbUMsU0FBUixDQUFrQkosTUFBbEIsRUFBMEIsVUFBQ0ssRUFBRDtBQUFBLGFBQWtCLFlBQXdCO0FBQUEsMENBQVhDLElBQVc7QUFBWEEsVUFBQUEsSUFBVztBQUFBOztBQUM1RkQsUUFBQUEsRUFBRSxDQUFDRSxLQUFILENBQVMsSUFBVCxFQUFlLENBQUNSLE1BQUQsRUFBU1MsTUFBVCxDQUFnQkQsS0FBaEIsQ0FBc0JSLE1BQXRCLEVBQThCTyxJQUE5QixDQUFmO0FBQ0QsT0FGbUQ7QUFBQSxLQUExQixDQUFuQixFQUVISixFQUZHLENBQVA7QUFHRDs7QUFDRCxTQUFPQSxFQUFQO0FBQ0Q7O0FBRUQsU0FBU08saUJBQVQsQ0FBMkJDLENBQTNCLEVBQXdDWixVQUF4QyxFQUF5REMsTUFBekQsRUFBb0U7QUFBQSxNQUM1RFksR0FENEQsR0FDNUNaLE1BRDRDLENBQzVEWSxHQUQ0RDtBQUFBLE1BQ3ZEQyxNQUR1RCxHQUM1Q2IsTUFENEMsQ0FDdkRhLE1BRHVEO0FBQUEsTUFFNURDLEtBRjRELEdBRWxEZixVQUZrRCxDQUU1RGUsS0FGNEQ7QUFHbEUsTUFBSTlDLEtBQUssR0FBR3lCLFFBQVEsQ0FBQ08sTUFBRCxFQUFTRCxVQUFULENBQXBCO0FBQ0EsU0FBTyxDQUNMWSxDQUFDLENBQUNaLFVBQVUsQ0FBQ2dCLElBQVosRUFBa0I7QUFDakIvQyxJQUFBQSxLQUFLLEVBQUxBLEtBRGlCO0FBRWpCOEMsSUFBQUEsS0FBSyxFQUFMQSxLQUZpQjtBQUdqQkUsSUFBQUEsS0FBSyxFQUFFO0FBQ0xqRCxNQUFBQSxLQUFLLEVBQUVHLG9CQUFRK0MsR0FBUixDQUFZTCxHQUFaLEVBQWlCQyxNQUFNLENBQUNLLFFBQXhCLENBREY7QUFFTEMsTUFBQUEsUUFGSyxvQkFFSXBELEtBRkosRUFFYztBQUNqQkcsNEJBQVFrRCxHQUFSLENBQVlSLEdBQVosRUFBaUJDLE1BQU0sQ0FBQ0ssUUFBeEIsRUFBa0NuRCxLQUFsQztBQUNEO0FBSkksS0FIVTtBQVNqQm9DLElBQUFBLEVBQUUsRUFBRUwsYUFBYSxDQUFDQyxVQUFELEVBQWFDLE1BQWI7QUFUQSxHQUFsQixDQURJLENBQVA7QUFhRDs7QUFFRCxTQUFTcUIsZUFBVCxDQUF5QmxCLEVBQXpCLEVBQWtDSixVQUFsQyxFQUFtREMsTUFBbkQsRUFBZ0VzQixPQUFoRSxFQUE0RTtBQUFBLE1BQ3BFckIsTUFEb0UsR0FDekRGLFVBRHlELENBQ3BFRSxNQURvRTs7QUFFMUUsTUFBSUEsTUFBSixFQUFZO0FBQ1YsV0FBTy9CLG9CQUFReUIsTUFBUixDQUFlLEVBQWYsRUFBbUJ6QixvQkFBUW1DLFNBQVIsQ0FBa0JKLE1BQWxCLEVBQTBCLFVBQUNLLEVBQUQ7QUFBQSxhQUFrQixZQUF3QjtBQUM1Rk4sUUFBQUEsTUFBTSxHQUFHdUIsTUFBTSxDQUFDNUIsTUFBUCxDQUFjO0FBQUUyQixVQUFBQSxPQUFPLEVBQVBBO0FBQUYsU0FBZCxFQUEyQnRCLE1BQTNCLENBQVQ7O0FBRDRGLDJDQUFYTyxJQUFXO0FBQVhBLFVBQUFBLElBQVc7QUFBQTs7QUFFNUZELFFBQUFBLEVBQUUsQ0FBQ0UsS0FBSCxDQUFTLElBQVQsRUFBZSxDQUFDUixNQUFELEVBQVNTLE1BQVQsQ0FBZ0JELEtBQWhCLENBQXNCUixNQUF0QixFQUE4Qk8sSUFBOUIsQ0FBZjtBQUNELE9BSG1EO0FBQUEsS0FBMUIsQ0FBbkIsRUFHSEosRUFIRyxDQUFQO0FBSUQ7O0FBQ0QsU0FBT0EsRUFBUDtBQUNEOztBQUVELFNBQVNxQixtQkFBVCxDQUE2QmIsQ0FBN0IsRUFBMENaLFVBQTFDLEVBQTJEQyxNQUEzRCxFQUF3RXNCLE9BQXhFLEVBQW9GO0FBQUEsTUFDNUVULE1BRDRFLEdBQ2pFYixNQURpRSxDQUM1RWEsTUFENEU7QUFBQSxNQUU1RUUsSUFGNEUsR0FFcERoQixVQUZvRCxDQUU1RWdCLElBRjRFO0FBQUEsTUFFdEVELEtBRnNFLEdBRXBEZixVQUZvRCxDQUV0RWUsS0FGc0U7QUFBQSxNQUUvRGIsTUFGK0QsR0FFcERGLFVBRm9ELENBRS9ERSxNQUYrRDtBQUdsRixNQUFJQyxJQUFJLEdBQUcsV0FBWDtBQUNBLE1BQUlsQyxLQUFLLEdBQUd5QixRQUFRLENBQUNPLE1BQUQsRUFBU0QsVUFBVCxDQUFwQjtBQUNBLFNBQU9jLE1BQU0sQ0FBQ1ksT0FBUCxDQUFlakQsR0FBZixDQUFtQixVQUFDYSxJQUFELEVBQWM7QUFDdEMsV0FBT3NCLENBQUMsQ0FBQ0ksSUFBRCxFQUFPO0FBQ2IvQyxNQUFBQSxLQUFLLEVBQUxBLEtBRGE7QUFFYjhDLE1BQUFBLEtBQUssRUFBTEEsS0FGYTtBQUdiRSxNQUFBQSxLQUFLLEVBQUU7QUFDTGpELFFBQUFBLEtBQUssRUFBRXNCLElBQUksQ0FBQ1IsSUFEUDtBQUVMc0MsUUFBQUEsUUFGSyxvQkFFSU8sV0FGSixFQUVvQjtBQUN2QnJDLFVBQUFBLElBQUksQ0FBQ1IsSUFBTCxHQUFZNkMsV0FBWjtBQUNEO0FBSkksT0FITTtBQVNidkIsTUFBQUEsRUFBRSxFQUFFa0IsZUFBZSxxQkFDaEJuQixJQURnQixZQUNWeUIsSUFEVSxFQUNEO0FBQ2RDLFFBQUFBLG1CQUFtQixDQUFDTixPQUFELEVBQVVULE1BQVYsRUFBa0IsQ0FBQyxDQUFDeEIsSUFBSSxDQUFDUixJQUF6QixFQUErQlEsSUFBL0IsQ0FBbkI7O0FBQ0EsWUFBSVksTUFBTSxJQUFJQSxNQUFNLENBQUNDLElBQUQsQ0FBcEIsRUFBNEI7QUFDMUJELFVBQUFBLE1BQU0sQ0FBQ0MsSUFBRCxDQUFOLENBQWFxQixNQUFNLENBQUM1QixNQUFQLENBQWM7QUFBRTJCLFlBQUFBLE9BQU8sRUFBUEE7QUFBRixXQUFkLEVBQTJCdEIsTUFBM0IsQ0FBYixFQUFpRDJCLElBQWpEO0FBQ0Q7QUFDRixPQU5nQixHQU9oQjVCLFVBUGdCLEVBT0pDLE1BUEksRUFPSXNCLE9BUEo7QUFUTixLQUFQLENBQVI7QUFrQkQsR0FuQk0sQ0FBUDtBQW9CRDs7QUFFRCxTQUFTTSxtQkFBVCxDQUE2Qk4sT0FBN0IsRUFBMkNULE1BQTNDLEVBQXdEZ0IsT0FBeEQsRUFBc0V4QyxJQUF0RSxFQUErRTtBQUM3RWlDLEVBQUFBLE9BQU8sQ0FBQ1QsTUFBTSxDQUFDaUIsY0FBUCxHQUF3QixzQkFBeEIsR0FBaUQsbUJBQWxELENBQVAsQ0FBOEUsRUFBOUUsRUFBa0ZELE9BQWxGLEVBQTJGeEMsSUFBM0Y7QUFDRDs7QUFFRCxTQUFTMEMsbUJBQVQsUUFBeUQ7QUFBQSxNQUExQkMsTUFBMEIsU0FBMUJBLE1BQTBCO0FBQUEsTUFBbEJwQixHQUFrQixTQUFsQkEsR0FBa0I7QUFBQSxNQUFiQyxNQUFhLFNBQWJBLE1BQWE7QUFBQSxNQUNqRGhDLElBRGlELEdBQ3hDbUQsTUFEd0MsQ0FDakRuRCxJQURpRDs7QUFFdkQsTUFBSUQsU0FBUyxHQUFHVixvQkFBUStDLEdBQVIsQ0FBWUwsR0FBWixFQUFpQkMsTUFBTSxDQUFDSyxRQUF4QixDQUFoQjtBQUNBOzs7QUFDQSxTQUFPdEMsU0FBUyxLQUFLQyxJQUFyQjtBQUNEOztBQUVELFNBQVNvRCxhQUFULENBQXVCdEIsQ0FBdkIsRUFBb0N1QixPQUFwQyxFQUFrREMsV0FBbEQsRUFBa0U7QUFDaEUsTUFBSUMsU0FBUyxHQUFHRCxXQUFXLENBQUM1QyxLQUFaLElBQXFCLE9BQXJDO0FBQ0EsTUFBSThDLFNBQVMsR0FBR0YsV0FBVyxDQUFDcEUsS0FBWixJQUFxQixPQUFyQztBQUNBLE1BQUl1RSxZQUFZLEdBQUdILFdBQVcsQ0FBQ0ksUUFBWixJQUF3QixVQUEzQztBQUNBLFNBQU9yRSxvQkFBUU0sR0FBUixDQUFZMEQsT0FBWixFQUFxQixVQUFDN0MsSUFBRCxFQUFZTixLQUFaLEVBQTZCO0FBQ3ZELFdBQU80QixDQUFDLENBQUMsUUFBRCxFQUFXO0FBQ2pCM0MsTUFBQUEsS0FBSyxFQUFFO0FBQ0xELFFBQUFBLEtBQUssRUFBRXNCLElBQUksQ0FBQ2dELFNBQUQsQ0FETjtBQUVMOUMsUUFBQUEsS0FBSyxFQUFFRixJQUFJLENBQUMrQyxTQUFELENBRk47QUFHTEcsUUFBQUEsUUFBUSxFQUFFbEQsSUFBSSxDQUFDaUQsWUFBRDtBQUhULE9BRFU7QUFNakJFLE1BQUFBLEdBQUcsRUFBRXpEO0FBTlksS0FBWCxDQUFSO0FBUUQsR0FUTSxDQUFQO0FBVUQ7O0FBRUQsU0FBUzBELFFBQVQsQ0FBa0I5QixDQUFsQixFQUErQi9CLFNBQS9CLEVBQTZDO0FBQzNDLFNBQU8sQ0FBQyxNQUFNQSxTQUFTLEtBQUssSUFBZCxJQUFzQkEsU0FBUyxLQUFLLEtBQUssQ0FBekMsR0FBNkMsRUFBN0MsR0FBa0RBLFNBQXhELENBQUQsQ0FBUDtBQUNEO0FBRUQ7Ozs7O0FBR0EsSUFBTThELFNBQVMsR0FBRztBQUNoQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0xDLElBQUFBLFNBQVMsRUFBRSxpQkFETjtBQUVMQyxJQUFBQSxhQUFhLEVBQUVuQyxpQkFGVjtBQUdMb0MsSUFBQUEsVUFBVSxFQUFFcEMsaUJBSFA7QUFJTHFDLElBQUFBLFlBQVksRUFBRXZCLG1CQUpUO0FBS0x3QixJQUFBQSxZQUFZLEVBQUVqQjtBQUxULEdBRFM7QUFRaEJrQixFQUFBQSxZQUFZLEVBQUU7QUFDWkwsSUFBQUEsU0FBUyxFQUFFLGlCQURDO0FBRVpDLElBQUFBLGFBQWEsRUFBRW5DLGlCQUZIO0FBR1pvQyxJQUFBQSxVQUFVLEVBQUVwQyxpQkFIQTtBQUlacUMsSUFBQUEsWUFBWSxFQUFFdkIsbUJBSkY7QUFLWndCLElBQUFBLFlBQVksRUFBRWpCO0FBTEYsR0FSRTtBQWVoQm1CLEVBQUFBLFdBQVcsRUFBRTtBQUNYTixJQUFBQSxTQUFTLEVBQUUsOEJBREE7QUFFWEMsSUFBQUEsYUFBYSxFQUFFbkMsaUJBRko7QUFHWG9DLElBQUFBLFVBQVUsRUFBRXBDLGlCQUhEO0FBSVhxQyxJQUFBQSxZQUFZLEVBQUV2QixtQkFKSDtBQUtYd0IsSUFBQUEsWUFBWSxFQUFFakI7QUFMSCxHQWZHO0FBc0JoQm9CLEVBQUFBLE1BQU0sRUFBRTtBQUNOTCxJQUFBQSxVQURNLHNCQUNLbkMsQ0FETCxFQUNrQlosVUFEbEIsRUFDbUNDLE1BRG5DLEVBQzhDO0FBQUEsVUFDNUNrQyxPQUQ0QyxHQUN1Qm5DLFVBRHZCLENBQzVDbUMsT0FENEM7QUFBQSxVQUNuQ2tCLFlBRG1DLEdBQ3VCckQsVUFEdkIsQ0FDbkNxRCxZQURtQztBQUFBLGtDQUN1QnJELFVBRHZCLENBQ3JCb0MsV0FEcUI7QUFBQSxVQUNyQkEsV0FEcUIsc0NBQ1AsRUFETztBQUFBLGtDQUN1QnBDLFVBRHZCLENBQ0hzRCxnQkFERztBQUFBLFVBQ0hBLGdCQURHLHNDQUNnQixFQURoQjtBQUFBLFVBRTVDekMsR0FGNEMsR0FFNUJaLE1BRjRCLENBRTVDWSxHQUY0QztBQUFBLFVBRXZDQyxNQUZ1QyxHQUU1QmIsTUFGNEIsQ0FFdkNhLE1BRnVDO0FBQUEsVUFHNUNDLEtBSDRDLEdBR2xDZixVQUhrQyxDQUc1Q2UsS0FINEM7QUFJbEQsVUFBSTlDLEtBQUssR0FBR3lCLFFBQVEsQ0FBQ08sTUFBRCxFQUFTRCxVQUFULENBQXBCOztBQUNBLFVBQUlxRCxZQUFKLEVBQWtCO0FBQ2hCLFlBQUlFLFlBQVksR0FBR0QsZ0JBQWdCLENBQUNuQixPQUFqQixJQUE0QixTQUEvQztBQUNBLFlBQUlxQixVQUFVLEdBQUdGLGdCQUFnQixDQUFDOUQsS0FBakIsSUFBMEIsT0FBM0M7QUFDQSxlQUFPLENBQ0xvQixDQUFDLENBQUMsUUFBRCxFQUFXO0FBQ1YzQyxVQUFBQSxLQUFLLEVBQUxBLEtBRFU7QUFFVjhDLFVBQUFBLEtBQUssRUFBTEEsS0FGVTtBQUdWRSxVQUFBQSxLQUFLLEVBQUU7QUFDTGpELFlBQUFBLEtBQUssRUFBRUcsb0JBQVErQyxHQUFSLENBQVlMLEdBQVosRUFBaUJDLE1BQU0sQ0FBQ0ssUUFBeEIsQ0FERjtBQUVMQyxZQUFBQSxRQUZLLG9CQUVJdkMsU0FGSixFQUVrQjtBQUNyQlYsa0NBQVFrRCxHQUFSLENBQVlSLEdBQVosRUFBaUJDLE1BQU0sQ0FBQ0ssUUFBeEIsRUFBa0N0QyxTQUFsQztBQUNEO0FBSkksV0FIRztBQVNWdUIsVUFBQUEsRUFBRSxFQUFFTCxhQUFhLENBQUNDLFVBQUQsRUFBYUMsTUFBYjtBQVRQLFNBQVgsRUFVRTlCLG9CQUFRTSxHQUFSLENBQVk0RSxZQUFaLEVBQTBCLFVBQUNJLEtBQUQsRUFBYUMsTUFBYixFQUErQjtBQUMxRCxpQkFBTzlDLENBQUMsQ0FBQyxhQUFELEVBQWdCO0FBQ3RCM0MsWUFBQUEsS0FBSyxFQUFFO0FBQ0x1QixjQUFBQSxLQUFLLEVBQUVpRSxLQUFLLENBQUNELFVBQUQ7QUFEUCxhQURlO0FBSXRCZixZQUFBQSxHQUFHLEVBQUVpQjtBQUppQixXQUFoQixFQUtMeEIsYUFBYSxDQUFDdEIsQ0FBRCxFQUFJNkMsS0FBSyxDQUFDRixZQUFELENBQVQsRUFBeUJuQixXQUF6QixDQUxSLENBQVI7QUFNRCxTQVBFLENBVkYsQ0FESSxDQUFQO0FBb0JEOztBQUNELGFBQU8sQ0FDTHhCLENBQUMsQ0FBQyxRQUFELEVBQVc7QUFDVjNDLFFBQUFBLEtBQUssRUFBTEEsS0FEVTtBQUVWOEMsUUFBQUEsS0FBSyxFQUFMQSxLQUZVO0FBR1ZFLFFBQUFBLEtBQUssRUFBRTtBQUNMakQsVUFBQUEsS0FBSyxFQUFFRyxvQkFBUStDLEdBQVIsQ0FBWUwsR0FBWixFQUFpQkMsTUFBTSxDQUFDSyxRQUF4QixDQURGO0FBRUxDLFVBQUFBLFFBRkssb0JBRUl2QyxTQUZKLEVBRWtCO0FBQ3JCVixnQ0FBUWtELEdBQVIsQ0FBWVIsR0FBWixFQUFpQkMsTUFBTSxDQUFDSyxRQUF4QixFQUFrQ3RDLFNBQWxDO0FBQ0Q7QUFKSSxTQUhHO0FBU1Z1QixRQUFBQSxFQUFFLEVBQUVMLGFBQWEsQ0FBQ0MsVUFBRCxFQUFhQyxNQUFiO0FBVFAsT0FBWCxFQVVFaUMsYUFBYSxDQUFDdEIsQ0FBRCxFQUFJdUIsT0FBSixFQUFhQyxXQUFiLENBVmYsQ0FESSxDQUFQO0FBYUQsS0EzQ0s7QUE0Q051QixJQUFBQSxVQTVDTSxzQkE0Q0svQyxDQTVDTCxFQTRDa0JaLFVBNUNsQixFQTRDbUNDLE1BNUNuQyxFQTRDOEM7QUFBQSxVQUM1Q2tDLE9BRDRDLEdBQ21DbkMsVUFEbkMsQ0FDNUNtQyxPQUQ0QztBQUFBLFVBQ25Da0IsWUFEbUMsR0FDbUNyRCxVQURuQyxDQUNuQ3FELFlBRG1DO0FBQUEsOEJBQ21DckQsVUFEbkMsQ0FDckIvQixLQURxQjtBQUFBLFVBQ3JCQSxLQURxQixrQ0FDYixFQURhO0FBQUEsbUNBQ21DK0IsVUFEbkMsQ0FDVG9DLFdBRFM7QUFBQSxVQUNUQSxXQURTLHVDQUNLLEVBREw7QUFBQSxtQ0FDbUNwQyxVQURuQyxDQUNTc0QsZ0JBRFQ7QUFBQSxVQUNTQSxnQkFEVCx1Q0FDNEIsRUFENUI7QUFBQSxVQUU1Q3pDLEdBRjRDLEdBRTVCWixNQUY0QixDQUU1Q1ksR0FGNEM7QUFBQSxVQUV2Q0MsTUFGdUMsR0FFNUJiLE1BRjRCLENBRXZDYSxNQUZ1QztBQUdsRCxVQUFJdUIsU0FBUyxHQUFHRCxXQUFXLENBQUM1QyxLQUFaLElBQXFCLE9BQXJDO0FBQ0EsVUFBSThDLFNBQVMsR0FBR0YsV0FBVyxDQUFDcEUsS0FBWixJQUFxQixPQUFyQztBQUNBLFVBQUl1RixZQUFZLEdBQUdELGdCQUFnQixDQUFDbkIsT0FBakIsSUFBNEIsU0FBL0M7O0FBQ0EsVUFBSXRELFNBQVMsR0FBR1Ysb0JBQVErQyxHQUFSLENBQVlMLEdBQVosRUFBaUJDLE1BQU0sQ0FBQ0ssUUFBeEIsQ0FBaEI7O0FBQ0EsVUFBSSxFQUFFdEMsU0FBUyxLQUFLLElBQWQsSUFBc0JBLFNBQVMsS0FBSytFLFNBQXBDLElBQWlEL0UsU0FBUyxLQUFLLEVBQWpFLENBQUosRUFBMEU7QUFDeEUsZUFBTzZELFFBQVEsQ0FBQzlCLENBQUQsRUFBSXpDLG9CQUFRTSxHQUFSLENBQVlSLEtBQUssQ0FBQzRGLFFBQU4sR0FBaUJoRixTQUFqQixHQUE2QixDQUFDQSxTQUFELENBQXpDLEVBQXNEd0UsWUFBWSxHQUFHLFVBQUNyRixLQUFELEVBQWU7QUFDckcsY0FBSThGLFVBQUo7O0FBQ0EsZUFBSyxJQUFJOUUsS0FBSyxHQUFHLENBQWpCLEVBQW9CQSxLQUFLLEdBQUdxRSxZQUFZLENBQUNqRSxNQUF6QyxFQUFpREosS0FBSyxFQUF0RCxFQUEwRDtBQUN4RDhFLFlBQUFBLFVBQVUsR0FBRzNGLG9CQUFRNEYsSUFBUixDQUFhVixZQUFZLENBQUNyRSxLQUFELENBQVosQ0FBb0J1RSxZQUFwQixDQUFiLEVBQWdELFVBQUNqRSxJQUFEO0FBQUEscUJBQWVBLElBQUksQ0FBQ2dELFNBQUQsQ0FBSixLQUFvQnRFLEtBQW5DO0FBQUEsYUFBaEQsQ0FBYjs7QUFDQSxnQkFBSThGLFVBQUosRUFBZ0I7QUFDZDtBQUNEO0FBQ0Y7O0FBQ0QsaUJBQU9BLFVBQVUsR0FBR0EsVUFBVSxDQUFDekIsU0FBRCxDQUFiLEdBQTJCLElBQTVDO0FBQ0QsU0FUb0YsR0FTakYsVUFBQ3JFLEtBQUQsRUFBZTtBQUNqQixjQUFJOEYsVUFBVSxHQUFHM0Ysb0JBQVE0RixJQUFSLENBQWE1QixPQUFiLEVBQXNCLFVBQUM3QyxJQUFEO0FBQUEsbUJBQWVBLElBQUksQ0FBQ2dELFNBQUQsQ0FBSixLQUFvQnRFLEtBQW5DO0FBQUEsV0FBdEIsQ0FBakI7O0FBQ0EsaUJBQU84RixVQUFVLEdBQUdBLFVBQVUsQ0FBQ3pCLFNBQUQsQ0FBYixHQUEyQixJQUE1QztBQUNELFNBWmtCLEVBWWhCMUQsSUFaZ0IsQ0FZWCxHQVpXLENBQUosQ0FBZjtBQWFEOztBQUNELGFBQU8rRCxRQUFRLENBQUM5QixDQUFELEVBQUksRUFBSixDQUFmO0FBQ0QsS0FuRUs7QUFvRU5vQyxJQUFBQSxZQXBFTSx3QkFvRU9wQyxDQXBFUCxFQW9Fb0JaLFVBcEVwQixFQW9FcUNDLE1BcEVyQyxFQW9Fa0RzQixPQXBFbEQsRUFvRThEO0FBQUEsVUFDNURZLE9BRDRELEdBQ09uQyxVQURQLENBQzVEbUMsT0FENEQ7QUFBQSxVQUNuRGtCLFlBRG1ELEdBQ09yRCxVQURQLENBQ25EcUQsWUFEbUQ7QUFBQSxtQ0FDT3JELFVBRFAsQ0FDckNvQyxXQURxQztBQUFBLFVBQ3JDQSxXQURxQyx1Q0FDdkIsRUFEdUI7QUFBQSxtQ0FDT3BDLFVBRFAsQ0FDbkJzRCxnQkFEbUI7QUFBQSxVQUNuQkEsZ0JBRG1CLHVDQUNBLEVBREE7QUFBQSxVQUU1RHhDLE1BRjRELEdBRWpEYixNQUZpRCxDQUU1RGEsTUFGNEQ7QUFBQSxVQUc1REMsS0FINEQsR0FHMUNmLFVBSDBDLENBRzVEZSxLQUg0RDtBQUFBLFVBR3JEYixNQUhxRCxHQUcxQ0YsVUFIMEMsQ0FHckRFLE1BSHFEO0FBSWxFLFVBQUlqQyxLQUFLLEdBQUd5QixRQUFRLENBQUNPLE1BQUQsRUFBU0QsVUFBVCxDQUFwQjtBQUNBLFVBQUlHLElBQUksR0FBRyxXQUFYOztBQUNBLFVBQUlrRCxZQUFKLEVBQWtCO0FBQ2hCLFlBQUlFLFlBQVksR0FBR0QsZ0JBQWdCLENBQUNuQixPQUFqQixJQUE0QixTQUEvQztBQUNBLFlBQUlxQixVQUFVLEdBQUdGLGdCQUFnQixDQUFDOUQsS0FBakIsSUFBMEIsT0FBM0M7QUFDQSxlQUFPc0IsTUFBTSxDQUFDWSxPQUFQLENBQWVqRCxHQUFmLENBQW1CLFVBQUNhLElBQUQsRUFBYztBQUN0QyxpQkFBT3NCLENBQUMsQ0FBQyxRQUFELEVBQVc7QUFDakIzQyxZQUFBQSxLQUFLLEVBQUxBLEtBRGlCO0FBRWpCOEMsWUFBQUEsS0FBSyxFQUFMQSxLQUZpQjtBQUdqQkUsWUFBQUEsS0FBSyxFQUFFO0FBQ0xqRCxjQUFBQSxLQUFLLEVBQUVzQixJQUFJLENBQUNSLElBRFA7QUFFTHNDLGNBQUFBLFFBRkssb0JBRUlPLFdBRkosRUFFb0I7QUFDdkJyQyxnQkFBQUEsSUFBSSxDQUFDUixJQUFMLEdBQVk2QyxXQUFaO0FBQ0Q7QUFKSSxhQUhVO0FBU2pCdkIsWUFBQUEsRUFBRSxFQUFFa0IsZUFBZSxxQkFDaEJuQixJQURnQixZQUNWbkMsS0FEVSxFQUNBO0FBQ2Y2RCxjQUFBQSxtQkFBbUIsQ0FBQ04sT0FBRCxFQUFVVCxNQUFWLEVBQWtCOUMsS0FBSyxJQUFJQSxLQUFLLENBQUNvQixNQUFOLEdBQWUsQ0FBMUMsRUFBNkNFLElBQTdDLENBQW5COztBQUNBLGtCQUFJWSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsSUFBRCxDQUFwQixFQUE0QjtBQUMxQkQsZ0JBQUFBLE1BQU0sQ0FBQ0MsSUFBRCxDQUFOLENBQWFxQixNQUFNLENBQUM1QixNQUFQLENBQWM7QUFBRTJCLGtCQUFBQSxPQUFPLEVBQVBBO0FBQUYsaUJBQWQsRUFBMkJ0QixNQUEzQixDQUFiLEVBQWlEakMsS0FBakQ7QUFDRDtBQUNGLGFBTmdCLEdBT2hCZ0MsVUFQZ0IsRUFPSkMsTUFQSSxFQU9Jc0IsT0FQSjtBQVRGLFdBQVgsRUFpQkxwRCxvQkFBUU0sR0FBUixDQUFZNEUsWUFBWixFQUEwQixVQUFDSSxLQUFELEVBQWFDLE1BQWIsRUFBK0I7QUFDMUQsbUJBQU85QyxDQUFDLENBQUMsYUFBRCxFQUFnQjtBQUN0QjNDLGNBQUFBLEtBQUssRUFBRTtBQUNMdUIsZ0JBQUFBLEtBQUssRUFBRWlFLEtBQUssQ0FBQ0QsVUFBRDtBQURQLGVBRGU7QUFJdEJmLGNBQUFBLEdBQUcsRUFBRWlCO0FBSmlCLGFBQWhCLEVBS0x4QixhQUFhLENBQUN0QixDQUFELEVBQUk2QyxLQUFLLENBQUNGLFlBQUQsQ0FBVCxFQUF5Qm5CLFdBQXpCLENBTFIsQ0FBUjtBQU1ELFdBUEUsQ0FqQkssQ0FBUjtBQXlCRCxTQTFCTSxDQUFQO0FBMkJEOztBQUNELGFBQU90QixNQUFNLENBQUNZLE9BQVAsQ0FBZWpELEdBQWYsQ0FBbUIsVUFBQ2EsSUFBRCxFQUFjO0FBQ3RDLGVBQU9zQixDQUFDLENBQUMsUUFBRCxFQUFXO0FBQ2pCM0MsVUFBQUEsS0FBSyxFQUFMQSxLQURpQjtBQUVqQjhDLFVBQUFBLEtBQUssRUFBTEEsS0FGaUI7QUFHakJFLFVBQUFBLEtBQUssRUFBRTtBQUNMakQsWUFBQUEsS0FBSyxFQUFFc0IsSUFBSSxDQUFDUixJQURQO0FBRUxzQyxZQUFBQSxRQUZLLG9CQUVJTyxXQUZKLEVBRW9CO0FBQ3ZCckMsY0FBQUEsSUFBSSxDQUFDUixJQUFMLEdBQVk2QyxXQUFaO0FBQ0Q7QUFKSSxXQUhVO0FBU2pCdkIsVUFBQUEsRUFBRSxFQUFFa0IsZUFBZSxxQkFDaEJuQixJQURnQixZQUNWbkMsS0FEVSxFQUNBO0FBQ2Y2RCxZQUFBQSxtQkFBbUIsQ0FBQ04sT0FBRCxFQUFVVCxNQUFWLEVBQWtCOUMsS0FBSyxJQUFJQSxLQUFLLENBQUNvQixNQUFOLEdBQWUsQ0FBMUMsRUFBNkNFLElBQTdDLENBQW5COztBQUNBLGdCQUFJWSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsSUFBRCxDQUFwQixFQUE0QjtBQUMxQkQsY0FBQUEsTUFBTSxDQUFDQyxJQUFELENBQU4sQ0FBYXFCLE1BQU0sQ0FBQzVCLE1BQVAsQ0FBYztBQUFFMkIsZ0JBQUFBLE9BQU8sRUFBUEE7QUFBRixlQUFkLEVBQTJCdEIsTUFBM0IsQ0FBYixFQUFpRGpDLEtBQWpEO0FBQ0Q7QUFDRixXQU5nQixHQU9oQmdDLFVBUGdCLEVBT0pDLE1BUEksRUFPSXNCLE9BUEo7QUFURixTQUFYLEVBaUJMVyxhQUFhLENBQUN0QixDQUFELEVBQUl1QixPQUFKLEVBQWFDLFdBQWIsQ0FqQlIsQ0FBUjtBQWtCRCxPQW5CTSxDQUFQO0FBb0JELEtBN0hLO0FBOEhOYSxJQUFBQSxZQTlITSwrQkE4SG1DO0FBQUEsVUFBMUJoQixNQUEwQixTQUExQkEsTUFBMEI7QUFBQSxVQUFsQnBCLEdBQWtCLFNBQWxCQSxHQUFrQjtBQUFBLFVBQWJDLE1BQWEsU0FBYkEsTUFBYTtBQUFBLFVBQ2pDaEMsSUFEaUMsR0FDeEJtRCxNQUR3QixDQUNqQ25ELElBRGlDO0FBQUEsVUFFakNxQyxRQUZpQyxHQUVNTCxNQUZOLENBRWpDSyxRQUZpQztBQUFBLFVBRVRuQixVQUZTLEdBRU1jLE1BRk4sQ0FFdkJrRCxZQUZ1QjtBQUFBLCtCQUdsQmhFLFVBSGtCLENBR2pDL0IsS0FIaUM7QUFBQSxVQUdqQ0EsS0FIaUMsbUNBR3pCLEVBSHlCOztBQUl2QyxVQUFJWSxTQUFTLEdBQUdWLG9CQUFRK0MsR0FBUixDQUFZTCxHQUFaLEVBQWlCTSxRQUFqQixDQUFoQjs7QUFDQSxVQUFJbEQsS0FBSyxDQUFDNEYsUUFBVixFQUFvQjtBQUNsQixZQUFJMUYsb0JBQVE4RixPQUFSLENBQWdCcEYsU0FBaEIsQ0FBSixFQUFnQztBQUM5QixpQkFBT1Ysb0JBQVErRixhQUFSLENBQXNCckYsU0FBdEIsRUFBaUNDLElBQWpDLENBQVA7QUFDRDs7QUFDRCxlQUFPQSxJQUFJLENBQUNxRixPQUFMLENBQWF0RixTQUFiLElBQTBCLENBQUMsQ0FBbEM7QUFDRDtBQUNEOzs7QUFDQSxhQUFPQSxTQUFTLElBQUlDLElBQXBCO0FBQ0Q7QUEzSUssR0F0QlE7QUFtS2hCc0YsRUFBQUEsUUFBUSxFQUFFO0FBQ1JyQixJQUFBQSxVQUFVLEVBQUVwQyxpQkFESjtBQUVSZ0QsSUFBQUEsVUFGUSxzQkFFRy9DLENBRkgsU0FFcUNYLE1BRnJDLEVBRWdEO0FBQUEsOEJBQTlCaEMsS0FBOEI7QUFBQSxVQUE5QkEsS0FBOEIsNEJBQXRCLEVBQXNCO0FBQUEsVUFDaEQ0QyxHQURnRCxHQUNoQ1osTUFEZ0MsQ0FDaERZLEdBRGdEO0FBQUEsVUFDM0NDLE1BRDJDLEdBQ2hDYixNQURnQyxDQUMzQ2EsTUFEMkM7O0FBRXRELFVBQUlqQyxTQUFTLEdBQUdWLG9CQUFRK0MsR0FBUixDQUFZTCxHQUFaLEVBQWlCQyxNQUFNLENBQUNLLFFBQXhCLENBQWhCOztBQUNBLFVBQUk1QyxNQUFNLEdBQUdNLFNBQVMsSUFBSSxFQUExQjtBQUNBLFVBQUlLLE1BQU0sR0FBZSxFQUF6QjtBQUNBSCxNQUFBQSxpQkFBaUIsQ0FBQyxDQUFELEVBQUlkLEtBQUssQ0FBQ2EsSUFBVixFQUFnQlAsTUFBaEIsRUFBd0JXLE1BQXhCLENBQWpCO0FBQ0EsYUFBT3dELFFBQVEsQ0FBQzlCLENBQUQsRUFBSTFCLE1BQU0sQ0FBQ1AsSUFBUCxZQUFnQlYsS0FBSyxDQUFDTyxTQUFOLElBQW1CLEdBQW5DLE9BQUosQ0FBZjtBQUNEO0FBVE8sR0FuS007QUE4S2hCNkYsRUFBQUEsVUFBVSxFQUFFO0FBQ1Z0QixJQUFBQSxVQUFVLEVBQUVwQyxpQkFERjtBQUVWZ0QsSUFBQUEsVUFGVSxzQkFFQy9DLENBRkQsU0FFbUNYLE1BRm5DLEVBRThDO0FBQUEsOEJBQTlCaEMsS0FBOEI7QUFBQSxVQUE5QkEsS0FBOEIsNEJBQXRCLEVBQXNCO0FBQUEsVUFDaEQ0QyxHQURnRCxHQUNoQ1osTUFEZ0MsQ0FDaERZLEdBRGdEO0FBQUEsVUFDM0NDLE1BRDJDLEdBQ2hDYixNQURnQyxDQUMzQ2EsTUFEMkM7QUFBQSxVQUVoRHRDLFNBRmdELEdBRWxDUCxLQUZrQyxDQUVoRE8sU0FGZ0Q7O0FBR3RELFVBQUlLLFNBQVMsR0FBR1Ysb0JBQVErQyxHQUFSLENBQVlMLEdBQVosRUFBaUJDLE1BQU0sQ0FBQ0ssUUFBeEIsQ0FBaEI7O0FBQ0EsY0FBUWxELEtBQUssQ0FBQ2tDLElBQWQ7QUFDRSxhQUFLLE1BQUw7QUFDRXRCLFVBQUFBLFNBQVMsR0FBR2QsYUFBYSxDQUFDYyxTQUFELEVBQVlaLEtBQVosRUFBbUIsU0FBbkIsQ0FBekI7QUFDQTs7QUFDRixhQUFLLE9BQUw7QUFDRVksVUFBQUEsU0FBUyxHQUFHZCxhQUFhLENBQUNjLFNBQUQsRUFBWVosS0FBWixFQUFtQixTQUFuQixDQUF6QjtBQUNBOztBQUNGLGFBQUssTUFBTDtBQUNFWSxVQUFBQSxTQUFTLEdBQUdkLGFBQWEsQ0FBQ2MsU0FBRCxFQUFZWixLQUFaLEVBQW1CLE1BQW5CLENBQXpCO0FBQ0E7O0FBQ0YsYUFBSyxPQUFMO0FBQ0VZLFVBQUFBLFNBQVMsR0FBR1AsY0FBYyxDQUFDTyxTQUFELEVBQVlaLEtBQVosRUFBbUIsSUFBbkIsRUFBeUIsWUFBekIsQ0FBMUI7QUFDQTs7QUFDRixhQUFLLFdBQUw7QUFDRVksVUFBQUEsU0FBUyxHQUFHUCxjQUFjLENBQUNPLFNBQUQsRUFBWVosS0FBWixhQUF1Qk8sU0FBUyxJQUFJLEdBQXBDLFFBQTRDLFlBQTVDLENBQTFCO0FBQ0E7O0FBQ0YsYUFBSyxlQUFMO0FBQ0VLLFVBQUFBLFNBQVMsR0FBR1AsY0FBYyxDQUFDTyxTQUFELEVBQVlaLEtBQVosYUFBdUJPLFNBQVMsSUFBSSxHQUFwQyxRQUE0QyxxQkFBNUMsQ0FBMUI7QUFDQTs7QUFDRjtBQUNFSyxVQUFBQSxTQUFTLEdBQUdkLGFBQWEsQ0FBQ2MsU0FBRCxFQUFZWixLQUFaLEVBQW1CLFlBQW5CLENBQXpCO0FBQ0E7QUFyQko7O0FBdUJBLGFBQU95RSxRQUFRLENBQUM5QixDQUFELEVBQUkvQixTQUFKLENBQWY7QUFDRCxLQTlCUztBQStCVm1FLElBQUFBLFlBL0JVLHdCQStCR3BDLENBL0JILEVBK0JnQlosVUEvQmhCLEVBK0JpQ0MsTUEvQmpDLEVBK0I4Q3NCLE9BL0I5QyxFQStCMEQ7QUFBQSxVQUM1RFQsTUFENEQsR0FDakRiLE1BRGlELENBQzVEYSxNQUQ0RDtBQUFBLFVBRTVEQyxLQUY0RCxHQUUxQ2YsVUFGMEMsQ0FFNURlLEtBRjREO0FBQUEsVUFFckRiLE1BRnFELEdBRTFDRixVQUYwQyxDQUVyREUsTUFGcUQ7QUFHbEUsVUFBSWpDLEtBQUssR0FBR3lCLFFBQVEsQ0FBQ08sTUFBRCxFQUFTRCxVQUFULENBQXBCO0FBQ0EsVUFBSUcsSUFBSSxHQUFHLFdBQVg7QUFDQSxhQUFPVyxNQUFNLENBQUNZLE9BQVAsQ0FBZWpELEdBQWYsQ0FBbUIsVUFBQ2EsSUFBRCxFQUFjO0FBQ3RDLGVBQU9zQixDQUFDLENBQUNaLFVBQVUsQ0FBQ2dCLElBQVosRUFBa0I7QUFDeEIvQyxVQUFBQSxLQUFLLEVBQUxBLEtBRHdCO0FBRXhCOEMsVUFBQUEsS0FBSyxFQUFMQSxLQUZ3QjtBQUd4QkUsVUFBQUEsS0FBSyxFQUFFO0FBQ0xqRCxZQUFBQSxLQUFLLEVBQUVzQixJQUFJLENBQUNSLElBRFA7QUFFTHNDLFlBQUFBLFFBRkssb0JBRUlPLFdBRkosRUFFb0I7QUFDdkJyQyxjQUFBQSxJQUFJLENBQUNSLElBQUwsR0FBWTZDLFdBQVo7QUFDRDtBQUpJLFdBSGlCO0FBU3hCdkIsVUFBQUEsRUFBRSxFQUFFa0IsZUFBZSxxQkFDaEJuQixJQURnQixZQUNWbkMsS0FEVSxFQUNBO0FBQ2Y2RCxZQUFBQSxtQkFBbUIsQ0FBQ04sT0FBRCxFQUFVVCxNQUFWLEVBQWtCLENBQUMsQ0FBQzlDLEtBQXBCLEVBQTJCc0IsSUFBM0IsQ0FBbkI7O0FBQ0EsZ0JBQUlZLE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxJQUFELENBQXBCLEVBQTRCO0FBQzFCRCxjQUFBQSxNQUFNLENBQUNDLElBQUQsQ0FBTixDQUFhcUIsTUFBTSxDQUFDNUIsTUFBUCxDQUFjO0FBQUUyQixnQkFBQUEsT0FBTyxFQUFQQTtBQUFGLGVBQWQsRUFBMkJ0QixNQUEzQixDQUFiLEVBQWlEakMsS0FBakQ7QUFDRDtBQUNGLFdBTmdCLEdBT2hCZ0MsVUFQZ0IsRUFPSkMsTUFQSSxFQU9Jc0IsT0FQSjtBQVRLLFNBQWxCLENBQVI7QUFrQkQsT0FuQk0sQ0FBUDtBQW9CRCxLQXhEUztBQXlEVjBCLElBQUFBLFlBekRVLCtCQXlEK0I7QUFBQSxVQUExQmhCLE1BQTBCLFNBQTFCQSxNQUEwQjtBQUFBLFVBQWxCcEIsR0FBa0IsU0FBbEJBLEdBQWtCO0FBQUEsVUFBYkMsTUFBYSxTQUFiQSxNQUFhO0FBQUEsVUFDakNoQyxJQURpQyxHQUN4Qm1ELE1BRHdCLENBQ2pDbkQsSUFEaUM7QUFBQSxVQUVuQmtCLFVBRm1CLEdBRUpjLE1BRkksQ0FFakNrRCxZQUZpQztBQUFBLCtCQUdsQmhFLFVBSGtCLENBR2pDL0IsS0FIaUM7QUFBQSxVQUdqQ0EsS0FIaUMsbUNBR3pCLEVBSHlCOztBQUl2QyxVQUFJWSxTQUFTLEdBQUdWLG9CQUFRK0MsR0FBUixDQUFZTCxHQUFaLEVBQWlCQyxNQUFNLENBQUNLLFFBQXhCLENBQWhCOztBQUNBLFVBQUlyQyxJQUFKLEVBQVU7QUFDUixnQkFBUWIsS0FBSyxDQUFDa0MsSUFBZDtBQUNFLGVBQUssV0FBTDtBQUNFLG1CQUFPdkIsY0FBYyxDQUFDQyxTQUFELEVBQVlDLElBQVosRUFBa0JiLEtBQWxCLEVBQXlCLFlBQXpCLENBQXJCOztBQUNGLGVBQUssZUFBTDtBQUNFLG1CQUFPVyxjQUFjLENBQUNDLFNBQUQsRUFBWUMsSUFBWixFQUFrQmIsS0FBbEIsRUFBeUIscUJBQXpCLENBQXJCOztBQUNGO0FBQ0UsbUJBQU9ZLFNBQVMsS0FBS0MsSUFBckI7QUFOSjtBQVFEOztBQUNELGFBQU8sS0FBUDtBQUNEO0FBekVTLEdBOUtJO0FBeVBoQndGLEVBQUFBLFVBQVUsRUFBRTtBQUNWdkIsSUFBQUEsVUFBVSxFQUFFcEM7QUFERixHQXpQSTtBQTRQaEI0RCxFQUFBQSxJQUFJLEVBQUU7QUFDSnpCLElBQUFBLGFBQWEsRUFBRW5DLGlCQURYO0FBRUpvQyxJQUFBQSxVQUFVLEVBQUVwQyxpQkFGUjtBQUdKcUMsSUFBQUEsWUFBWSxFQUFFdkIsbUJBSFY7QUFJSndCLElBQUFBLFlBQVksRUFBRWpCO0FBSlYsR0E1UFU7QUFrUWhCd0MsRUFBQUEsT0FBTyxFQUFFO0FBQ1AxQixJQUFBQSxhQUFhLEVBQUVuQyxpQkFEUjtBQUVQb0MsSUFBQUEsVUFBVSxFQUFFcEMsaUJBRkw7QUFHUHFDLElBQUFBLFlBQVksRUFBRXZCLG1CQUhQO0FBSVB3QixJQUFBQSxZQUFZLEVBQUVqQjtBQUpQO0FBbFFPLENBQWxCO0FBMFFBOzs7O0FBR0EsU0FBU3lDLGdCQUFULENBQTBCeEUsTUFBMUIsRUFBdUMyQixJQUF2QyxFQUFrREwsT0FBbEQsRUFBOEQ7QUFBQSxNQUN0RG1ELGtCQURzRCxHQUMvQm5ELE9BRCtCLENBQ3REbUQsa0JBRHNEO0FBRTVELE1BQUlDLFFBQVEsR0FBR0MsUUFBUSxDQUFDQyxJQUF4Qjs7QUFDQSxPQUNFO0FBQ0FILEVBQUFBLGtCQUFrQixDQUFDOUMsSUFBRCxFQUFPK0MsUUFBUCxFQUFpQixxQkFBakIsQ0FBbEIsQ0FBMERHLElBRjVELEVBR0U7QUFDQSxXQUFPLEtBQVA7QUFDRDtBQUNGO0FBRUQ7Ozs7O0FBR08sSUFBTUMsbUJBQW1CLEdBQUc7QUFDakNDLEVBQUFBLE9BRGlDLG1CQUN6QkMsTUFEeUIsRUFDRjtBQUFBLFFBQ3ZCQyxXQUR1QixHQUNHRCxNQURILENBQ3ZCQyxXQUR1QjtBQUFBLFFBQ1ZDLFFBRFUsR0FDR0YsTUFESCxDQUNWRSxRQURVO0FBRTdCQSxJQUFBQSxRQUFRLENBQUNDLEtBQVQsQ0FBZXpDLFNBQWY7QUFDQXVDLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQixtQkFBaEIsRUFBcUNaLGdCQUFyQztBQUNBUyxJQUFBQSxXQUFXLENBQUNHLEdBQVosQ0FBZ0Isb0JBQWhCLEVBQXNDWixnQkFBdEM7QUFDRDtBQU5nQyxDQUE1Qjs7O0FBU1AsSUFBSSxPQUFPYSxNQUFQLEtBQWtCLFdBQWxCLElBQWlDQSxNQUFNLENBQUNDLFFBQTVDLEVBQXNEO0FBQ3BERCxFQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLEdBQWhCLENBQW9CVCxtQkFBcEI7QUFDRDs7ZUFFY0EsbUIiLCJmaWxlIjoiaW5kZXguY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IFZYRVRhYmxlIGZyb20gJ3Z4ZS10YWJsZS9saWIvdnhlLXRhYmxlJ1xyXG5cclxuZnVuY3Rpb24gZ2V0Rm9ybWF0RGF0ZSh2YWx1ZTogYW55LCBwcm9wczogYW55LCBkZWZhdWx0Rm9ybWF0OiBzdHJpbmcpIHtcclxuICByZXR1cm4gWEVVdGlscy50b0RhdGVTdHJpbmcodmFsdWUsIHByb3BzLmZvcm1hdCB8fCBkZWZhdWx0Rm9ybWF0KVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGb3JtYXREYXRlcyh2YWx1ZXM6IGFueSwgcHJvcHM6IGFueSwgc2VwYXJhdG9yOiBzdHJpbmcsIGRlZmF1bHRGb3JtYXQ6IHN0cmluZykge1xyXG4gIHJldHVybiBYRVV0aWxzLm1hcCh2YWx1ZXMsIChkYXRlOiBhbnkpID0+IGdldEZvcm1hdERhdGUoZGF0ZSwgcHJvcHMsIGRlZmF1bHRGb3JtYXQpKS5qb2luKHNlcGFyYXRvcilcclxufVxyXG5cclxuZnVuY3Rpb24gZXF1YWxEYXRlcmFuZ2UoY2VsbFZhbHVlOiBhbnksIGRhdGE6IGFueSwgcHJvcHM6IGFueSwgZGVmYXVsdEZvcm1hdDogc3RyaW5nKSB7XHJcbiAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZShjZWxsVmFsdWUsIHByb3BzLCBkZWZhdWx0Rm9ybWF0KVxyXG4gIHJldHVybiBjZWxsVmFsdWUgPj0gZ2V0Rm9ybWF0RGF0ZShkYXRhWzBdLCBwcm9wcywgZGVmYXVsdEZvcm1hdCkgJiYgY2VsbFZhbHVlIDw9IGdldEZvcm1hdERhdGUoZGF0YVsxXSwgcHJvcHMsIGRlZmF1bHRGb3JtYXQpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoQ2FzY2FkZXJEYXRhKGluZGV4OiBudW1iZXIsIGxpc3Q6IEFycmF5PGFueT4sIHZhbHVlczogQXJyYXk8YW55PiwgbGFiZWxzOiBBcnJheTxhbnk+KSB7XHJcbiAgbGV0IHZhbCA9IHZhbHVlc1tpbmRleF1cclxuICBpZiAobGlzdCAmJiB2YWx1ZXMubGVuZ3RoID4gaW5kZXgpIHtcclxuICAgIFhFVXRpbHMuZWFjaChsaXN0LCAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlID09PSB2YWwpIHtcclxuICAgICAgICBsYWJlbHMucHVzaChpdGVtLmxhYmVsKVxyXG4gICAgICAgIG1hdGNoQ2FzY2FkZXJEYXRhKCsraW5kZXgsIGl0ZW0uY2hpbGRyZW4sIHZhbHVlcywgbGFiZWxzKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UHJvcHMoeyAkdGFibGUgfTogYW55LCB7IHByb3BzIH06IGFueSkge1xyXG4gIHJldHVybiBYRVV0aWxzLmFzc2lnbigkdGFibGUudlNpemUgPyB7IHNpemU6ICR0YWJsZS52U2l6ZSB9IDoge30sIHByb3BzKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDZWxsRXZlbnRzKHJlbmRlck9wdHM6IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICBsZXQgeyBldmVudHMgfSA9IHJlbmRlck9wdHNcclxuICBsZXQgeyAkdGFibGUgfSA9IHBhcmFtc1xyXG4gIGxldCB0eXBlID0gJ29uLWNoYW5nZSdcclxuICBsZXQgb24gPSB7XHJcbiAgICBbdHlwZV06ICgpID0+ICR0YWJsZS51cGRhdGVTdGF0dXMocGFyYW1zKVxyXG4gIH1cclxuICBpZiAoZXZlbnRzKSB7XHJcbiAgICByZXR1cm4gWEVVdGlscy5hc3NpZ24oe30sIFhFVXRpbHMub2JqZWN0TWFwKGV2ZW50cywgKGNiOiBGdW5jdGlvbikgPT4gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgIGNiLmFwcGx5KG51bGwsIFtwYXJhbXNdLmNvbmNhdC5hcHBseShwYXJhbXMsIGFyZ3MpKVxyXG4gICAgfSksIG9uKVxyXG4gIH1cclxuICByZXR1cm4gb25cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmYXVsdEVkaXRSZW5kZXIoaDogRnVuY3Rpb24sIHJlbmRlck9wdHM6IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICBsZXQgeyByb3csIGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgbGV0IHsgYXR0cnMgfSA9IHJlbmRlck9wdHNcclxuICBsZXQgcHJvcHMgPSBnZXRQcm9wcyhwYXJhbXMsIHJlbmRlck9wdHMpXHJcbiAgcmV0dXJuIFtcclxuICAgIGgocmVuZGVyT3B0cy5uYW1lLCB7XHJcbiAgICAgIHByb3BzLFxyXG4gICAgICBhdHRycyxcclxuICAgICAgbW9kZWw6IHtcclxuICAgICAgICB2YWx1ZTogWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpLFxyXG4gICAgICAgIGNhbGxiYWNrKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgIFhFVXRpbHMuc2V0KHJvdywgY29sdW1uLnByb3BlcnR5LCB2YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG9uOiBnZXRDZWxsRXZlbnRzKHJlbmRlck9wdHMsIHBhcmFtcylcclxuICAgIH0pXHJcbiAgXVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGaWx0ZXJFdmVudHMob246IGFueSwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgbGV0IHsgZXZlbnRzIH0gPSByZW5kZXJPcHRzXHJcbiAgaWYgKGV2ZW50cykge1xyXG4gICAgcmV0dXJuIFhFVXRpbHMuYXNzaWduKHt9LCBYRVV0aWxzLm9iamVjdE1hcChldmVudHMsIChjYjogRnVuY3Rpb24pID0+IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHsgY29udGV4dCB9LCBwYXJhbXMpXHJcbiAgICAgIGNiLmFwcGx5KG51bGwsIFtwYXJhbXNdLmNvbmNhdC5hcHBseShwYXJhbXMsIGFyZ3MpKVxyXG4gICAgfSksIG9uKVxyXG4gIH1cclxuICByZXR1cm4gb25cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlclJlbmRlcihoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgbGV0IHsgY29sdW1uIH0gPSBwYXJhbXNcclxuICBsZXQgeyBuYW1lLCBhdHRycywgZXZlbnRzIH0gPSByZW5kZXJPcHRzXHJcbiAgbGV0IHR5cGUgPSAnb24tY2hhbmdlJ1xyXG4gIGxldCBwcm9wcyA9IGdldFByb3BzKHBhcmFtcywgcmVuZGVyT3B0cylcclxuICByZXR1cm4gY29sdW1uLmZpbHRlcnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgIHJldHVybiBoKG5hbWUsIHtcclxuICAgICAgcHJvcHMsXHJcbiAgICAgIGF0dHJzLFxyXG4gICAgICBtb2RlbDoge1xyXG4gICAgICAgIHZhbHVlOiBpdGVtLmRhdGEsXHJcbiAgICAgICAgY2FsbGJhY2sob3B0aW9uVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgaXRlbS5kYXRhID0gb3B0aW9uVmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG9uOiBnZXRGaWx0ZXJFdmVudHMoe1xyXG4gICAgICAgIFt0eXBlXShldm50OiBhbnkpIHtcclxuICAgICAgICAgIGhhbmRsZUNvbmZpcm1GaWx0ZXIoY29udGV4dCwgY29sdW1uLCAhIWl0ZW0uZGF0YSwgaXRlbSlcclxuICAgICAgICAgIGlmIChldmVudHMgJiYgZXZlbnRzW3R5cGVdKSB7XHJcbiAgICAgICAgICAgIGV2ZW50c1t0eXBlXShPYmplY3QuYXNzaWduKHsgY29udGV4dCB9LCBwYXJhbXMpLCBldm50KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgcmVuZGVyT3B0cywgcGFyYW1zLCBjb250ZXh0KVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVDb25maXJtRmlsdGVyKGNvbnRleHQ6IGFueSwgY29sdW1uOiBhbnksIGNoZWNrZWQ6IGFueSwgaXRlbTogYW55KSB7XHJcbiAgY29udGV4dFtjb2x1bW4uZmlsdGVyTXVsdGlwbGUgPyAnY2hhbmdlTXVsdGlwbGVPcHRpb24nIDogJ2NoYW5nZVJhZGlvT3B0aW9uJ10oe30sIGNoZWNrZWQsIGl0ZW0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXJNZXRob2QoeyBvcHRpb24sIHJvdywgY29sdW1uIH06IGFueSkge1xyXG4gIGxldCB7IGRhdGEgfSA9IG9wdGlvblxyXG4gIGxldCBjZWxsVmFsdWUgPSBYRVV0aWxzLmdldChyb3csIGNvbHVtbi5wcm9wZXJ0eSlcclxuICAvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cclxuICByZXR1cm4gY2VsbFZhbHVlID09PSBkYXRhXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbmRlck9wdGlvbnMoaDogRnVuY3Rpb24sIG9wdGlvbnM6IGFueSwgb3B0aW9uUHJvcHM6IGFueSkge1xyXG4gIGxldCBsYWJlbFByb3AgPSBvcHRpb25Qcm9wcy5sYWJlbCB8fCAnbGFiZWwnXHJcbiAgbGV0IHZhbHVlUHJvcCA9IG9wdGlvblByb3BzLnZhbHVlIHx8ICd2YWx1ZSdcclxuICBsZXQgZGlzYWJsZWRQcm9wID0gb3B0aW9uUHJvcHMuZGlzYWJsZWQgfHwgJ2Rpc2FibGVkJ1xyXG4gIHJldHVybiBYRVV0aWxzLm1hcChvcHRpb25zLCAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gaCgnT3B0aW9uJywge1xyXG4gICAgICBwcm9wczoge1xyXG4gICAgICAgIHZhbHVlOiBpdGVtW3ZhbHVlUHJvcF0sXHJcbiAgICAgICAgbGFiZWw6IGl0ZW1bbGFiZWxQcm9wXSxcclxuICAgICAgICBkaXNhYmxlZDogaXRlbVtkaXNhYmxlZFByb3BdXHJcbiAgICAgIH0sXHJcbiAgICAgIGtleTogaW5kZXhcclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gY2VsbFRleHQoaDogRnVuY3Rpb24sIGNlbGxWYWx1ZTogYW55KSB7XHJcbiAgcmV0dXJuIFsnJyArIChjZWxsVmFsdWUgPT09IG51bGwgfHwgY2VsbFZhbHVlID09PSB2b2lkIDAgPyAnJyA6IGNlbGxWYWx1ZSldXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDmuLLmn5Plh73mlbBcclxuICovXHJcbmNvbnN0IHJlbmRlck1hcCA9IHtcclxuICBJbnB1dDoge1xyXG4gICAgYXV0b2ZvY3VzOiAnaW5wdXQuaXZ1LWlucHV0JyxcclxuICAgIHJlbmRlckRlZmF1bHQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyRWRpdDogZGVmYXVsdEVkaXRSZW5kZXIsXHJcbiAgICByZW5kZXJGaWx0ZXI6IGRlZmF1bHRGaWx0ZXJSZW5kZXIsXHJcbiAgICBmaWx0ZXJNZXRob2Q6IGRlZmF1bHRGaWx0ZXJNZXRob2RcclxuICB9LFxyXG4gIEF1dG9Db21wbGV0ZToge1xyXG4gICAgYXV0b2ZvY3VzOiAnaW5wdXQuaXZ1LWlucHV0JyxcclxuICAgIHJlbmRlckRlZmF1bHQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyRWRpdDogZGVmYXVsdEVkaXRSZW5kZXIsXHJcbiAgICByZW5kZXJGaWx0ZXI6IGRlZmF1bHRGaWx0ZXJSZW5kZXIsXHJcbiAgICBmaWx0ZXJNZXRob2Q6IGRlZmF1bHRGaWx0ZXJNZXRob2RcclxuICB9LFxyXG4gIElucHV0TnVtYmVyOiB7XHJcbiAgICBhdXRvZm9jdXM6ICdpbnB1dC5pdnUtaW5wdXQtbnVtYmVyLWlucHV0JyxcclxuICAgIHJlbmRlckRlZmF1bHQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyRWRpdDogZGVmYXVsdEVkaXRSZW5kZXIsXHJcbiAgICByZW5kZXJGaWx0ZXI6IGRlZmF1bHRGaWx0ZXJSZW5kZXIsXHJcbiAgICBmaWx0ZXJNZXRob2Q6IGRlZmF1bHRGaWx0ZXJNZXRob2RcclxuICB9LFxyXG4gIFNlbGVjdDoge1xyXG4gICAgcmVuZGVyRWRpdChoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSkge1xyXG4gICAgICBsZXQgeyBvcHRpb25zLCBvcHRpb25Hcm91cHMsIG9wdGlvblByb3BzID0ge30sIG9wdGlvbkdyb3VwUHJvcHMgPSB7fSB9ID0gcmVuZGVyT3B0c1xyXG4gICAgICBsZXQgeyByb3csIGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgICAgIGxldCB7IGF0dHJzIH0gPSByZW5kZXJPcHRzXHJcbiAgICAgIGxldCBwcm9wcyA9IGdldFByb3BzKHBhcmFtcywgcmVuZGVyT3B0cylcclxuICAgICAgaWYgKG9wdGlvbkdyb3Vwcykge1xyXG4gICAgICAgIGxldCBncm91cE9wdGlvbnMgPSBvcHRpb25Hcm91cFByb3BzLm9wdGlvbnMgfHwgJ29wdGlvbnMnXHJcbiAgICAgICAgbGV0IGdyb3VwTGFiZWwgPSBvcHRpb25Hcm91cFByb3BzLmxhYmVsIHx8ICdsYWJlbCdcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgaCgnU2VsZWN0Jywge1xyXG4gICAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgICAgIG1vZGVsOiB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KSxcclxuICAgICAgICAgICAgICBjYWxsYmFjayhjZWxsVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgWEVVdGlscy5zZXQocm93LCBjb2x1bW4ucHJvcGVydHksIGNlbGxWYWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uOiBnZXRDZWxsRXZlbnRzKHJlbmRlck9wdHMsIHBhcmFtcylcclxuICAgICAgICAgIH0sIFhFVXRpbHMubWFwKG9wdGlvbkdyb3VwcywgKGdyb3VwOiBhbnksIGdJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBoKCdPcHRpb25Hcm91cCcsIHtcclxuICAgICAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IGdyb3VwW2dyb3VwTGFiZWxdXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBrZXk6IGdJbmRleFxyXG4gICAgICAgICAgICB9LCByZW5kZXJPcHRpb25zKGgsIGdyb3VwW2dyb3VwT3B0aW9uc10sIG9wdGlvblByb3BzKSlcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGgoJ1NlbGVjdCcsIHtcclxuICAgICAgICAgIHByb3BzLFxyXG4gICAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgICBtb2RlbDoge1xyXG4gICAgICAgICAgICB2YWx1ZTogWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpLFxyXG4gICAgICAgICAgICBjYWxsYmFjayhjZWxsVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgIFhFVXRpbHMuc2V0KHJvdywgY29sdW1uLnByb3BlcnR5LCBjZWxsVmFsdWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbjogZ2V0Q2VsbEV2ZW50cyhyZW5kZXJPcHRzLCBwYXJhbXMpXHJcbiAgICAgICAgfSwgcmVuZGVyT3B0aW9ucyhoLCBvcHRpb25zLCBvcHRpb25Qcm9wcykpXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICByZW5kZXJDZWxsKGg6IEZ1bmN0aW9uLCByZW5kZXJPcHRzOiBhbnksIHBhcmFtczogYW55KSB7XHJcbiAgICAgIGxldCB7IG9wdGlvbnMsIG9wdGlvbkdyb3VwcywgcHJvcHMgPSB7fSwgb3B0aW9uUHJvcHMgPSB7fSwgb3B0aW9uR3JvdXBQcm9wcyA9IHt9IH0gPSByZW5kZXJPcHRzXHJcbiAgICAgIGxldCB7IHJvdywgY29sdW1uIH0gPSBwYXJhbXNcclxuICAgICAgbGV0IGxhYmVsUHJvcCA9IG9wdGlvblByb3BzLmxhYmVsIHx8ICdsYWJlbCdcclxuICAgICAgbGV0IHZhbHVlUHJvcCA9IG9wdGlvblByb3BzLnZhbHVlIHx8ICd2YWx1ZSdcclxuICAgICAgbGV0IGdyb3VwT3B0aW9ucyA9IG9wdGlvbkdyb3VwUHJvcHMub3B0aW9ucyB8fCAnb3B0aW9ucydcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KVxyXG4gICAgICBpZiAoIShjZWxsVmFsdWUgPT09IG51bGwgfHwgY2VsbFZhbHVlID09PSB1bmRlZmluZWQgfHwgY2VsbFZhbHVlID09PSAnJykpIHtcclxuICAgICAgICByZXR1cm4gY2VsbFRleHQoaCwgWEVVdGlscy5tYXAocHJvcHMubXVsdGlwbGUgPyBjZWxsVmFsdWUgOiBbY2VsbFZhbHVlXSwgb3B0aW9uR3JvdXBzID8gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzZWxlY3RJdGVtXHJcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb3B0aW9uR3JvdXBzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICBzZWxlY3RJdGVtID0gWEVVdGlscy5maW5kKG9wdGlvbkdyb3Vwc1tpbmRleF1bZ3JvdXBPcHRpb25zXSwgKGl0ZW06IGFueSkgPT4gaXRlbVt2YWx1ZVByb3BdID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgaWYgKHNlbGVjdEl0ZW0pIHtcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbSA/IHNlbGVjdEl0ZW1bbGFiZWxQcm9wXSA6IG51bGxcclxuICAgICAgICB9IDogKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzZWxlY3RJdGVtID0gWEVVdGlscy5maW5kKG9wdGlvbnMsIChpdGVtOiBhbnkpID0+IGl0ZW1bdmFsdWVQcm9wXSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbSA/IHNlbGVjdEl0ZW1bbGFiZWxQcm9wXSA6IG51bGxcclxuICAgICAgICB9KS5qb2luKCc7JykpXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNlbGxUZXh0KGgsICcnKVxyXG4gICAgfSxcclxuICAgIHJlbmRlckZpbHRlcihoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICAgIGxldCB7IG9wdGlvbnMsIG9wdGlvbkdyb3Vwcywgb3B0aW9uUHJvcHMgPSB7fSwgb3B0aW9uR3JvdXBQcm9wcyA9IHt9IH0gPSByZW5kZXJPcHRzXHJcbiAgICAgIGxldCB7IGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgICAgIGxldCB7IGF0dHJzLCBldmVudHMgfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IHByb3BzID0gZ2V0UHJvcHMocGFyYW1zLCByZW5kZXJPcHRzKVxyXG4gICAgICBsZXQgdHlwZSA9ICdvbi1jaGFuZ2UnXHJcbiAgICAgIGlmIChvcHRpb25Hcm91cHMpIHtcclxuICAgICAgICBsZXQgZ3JvdXBPcHRpb25zID0gb3B0aW9uR3JvdXBQcm9wcy5vcHRpb25zIHx8ICdvcHRpb25zJ1xyXG4gICAgICAgIGxldCBncm91cExhYmVsID0gb3B0aW9uR3JvdXBQcm9wcy5sYWJlbCB8fCAnbGFiZWwnXHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaCgnU2VsZWN0Jywge1xyXG4gICAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgICAgIG1vZGVsOiB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICBjYWxsYmFjayhvcHRpb25WYWx1ZTogYW55KSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmRhdGEgPSBvcHRpb25WYWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb246IGdldEZpbHRlckV2ZW50cyh7XHJcbiAgICAgICAgICAgICAgW3R5cGVdKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1GaWx0ZXIoY29udGV4dCwgY29sdW1uLCB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwLCBpdGVtKVxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50cyAmJiBldmVudHNbdHlwZV0pIHtcclxuICAgICAgICAgICAgICAgICAgZXZlbnRzW3R5cGVdKE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcyksIHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgcmVuZGVyT3B0cywgcGFyYW1zLCBjb250ZXh0KVxyXG4gICAgICAgICAgfSwgWEVVdGlscy5tYXAob3B0aW9uR3JvdXBzLCAoZ3JvdXA6IGFueSwgZ0luZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGgoJ09wdGlvbkdyb3VwJywge1xyXG4gICAgICAgICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogZ3JvdXBbZ3JvdXBMYWJlbF1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGtleTogZ0luZGV4XHJcbiAgICAgICAgICAgIH0sIHJlbmRlck9wdGlvbnMoaCwgZ3JvdXBbZ3JvdXBPcHRpb25zXSwgb3B0aW9uUHJvcHMpKVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sdW1uLmZpbHRlcnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gaCgnU2VsZWN0Jywge1xyXG4gICAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgICBhdHRycyxcclxuICAgICAgICAgIG1vZGVsOiB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLmRhdGEsXHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG9wdGlvblZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICBpdGVtLmRhdGEgPSBvcHRpb25WYWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb246IGdldEZpbHRlckV2ZW50cyh7XHJcbiAgICAgICAgICAgIFt0eXBlXSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgICAgICAgaGFuZGxlQ29uZmlybUZpbHRlcihjb250ZXh0LCBjb2x1bW4sIHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDAsIGl0ZW0pXHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50cyAmJiBldmVudHNbdHlwZV0pIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50c1t0eXBlXShPYmplY3QuYXNzaWduKHsgY29udGV4dCB9LCBwYXJhbXMpLCB2YWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIHJlbmRlck9wdHMsIHBhcmFtcywgY29udGV4dClcclxuICAgICAgICB9LCByZW5kZXJPcHRpb25zKGgsIG9wdGlvbnMsIG9wdGlvblByb3BzKSlcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBmaWx0ZXJNZXRob2QoeyBvcHRpb24sIHJvdywgY29sdW1uIH06IGFueSkge1xyXG4gICAgICBsZXQgeyBkYXRhIH0gPSBvcHRpb25cclxuICAgICAgbGV0IHsgcHJvcGVydHksIGZpbHRlclJlbmRlcjogcmVuZGVyT3B0cyB9ID0gY29sdW1uXHJcbiAgICAgIGxldCB7IHByb3BzID0ge30gfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgcHJvcGVydHkpXHJcbiAgICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIGlmIChYRVV0aWxzLmlzQXJyYXkoY2VsbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIFhFVXRpbHMuaW5jbHVkZUFycmF5cyhjZWxsVmFsdWUsIGRhdGEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhLmluZGV4T2YoY2VsbFZhbHVlKSA+IC0xXHJcbiAgICAgIH1cclxuICAgICAgLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXHJcbiAgICAgIHJldHVybiBjZWxsVmFsdWUgPT0gZGF0YVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgQ2FzY2FkZXI6IHtcclxuICAgIHJlbmRlckVkaXQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyQ2VsbChoOiBGdW5jdGlvbiwgeyBwcm9wcyA9IHt9IH06IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICAgICAgbGV0IHsgcm93LCBjb2x1bW4gfSA9IHBhcmFtc1xyXG4gICAgICBsZXQgY2VsbFZhbHVlID0gWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpXHJcbiAgICAgIGxldCB2YWx1ZXMgPSBjZWxsVmFsdWUgfHwgW11cclxuICAgICAgbGV0IGxhYmVsczogQXJyYXk8YW55PiA9IFtdXHJcbiAgICAgIG1hdGNoQ2FzY2FkZXJEYXRhKDAsIHByb3BzLmRhdGEsIHZhbHVlcywgbGFiZWxzKVxyXG4gICAgICByZXR1cm4gY2VsbFRleHQoaCwgbGFiZWxzLmpvaW4oYCAke3Byb3BzLnNlcGFyYXRvciB8fCAnLyd9IGApKVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgRGF0ZVBpY2tlcjoge1xyXG4gICAgcmVuZGVyRWRpdDogZGVmYXVsdEVkaXRSZW5kZXIsXHJcbiAgICByZW5kZXJDZWxsKGg6IEZ1bmN0aW9uLCB7IHByb3BzID0ge30gfTogYW55LCBwYXJhbXM6IGFueSkge1xyXG4gICAgICBsZXQgeyByb3csIGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgICAgIGxldCB7IHNlcGFyYXRvciB9ID0gcHJvcHNcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KVxyXG4gICAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcclxuICAgICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICAgIGNlbGxWYWx1ZSA9IGdldEZvcm1hdERhdGUoY2VsbFZhbHVlLCBwcm9wcywgJ3l5eXl3V1cnKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICBjZWxsVmFsdWUgPSBnZXRGb3JtYXREYXRlKGNlbGxWYWx1ZSwgcHJvcHMsICd5eXl5LU1NJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICBjZWxsVmFsdWUgPSBnZXRGb3JtYXREYXRlKGNlbGxWYWx1ZSwgcHJvcHMsICd5eXl5JylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnZGF0ZXMnOlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZXMoY2VsbFZhbHVlLCBwcm9wcywgJywgJywgJ3l5eXktTU0tZGQnKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICdkYXRlcmFuZ2UnOlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZXMoY2VsbFZhbHVlLCBwcm9wcywgYCAke3NlcGFyYXRvciB8fCAnLSd9IGAsICd5eXl5LU1NLWRkJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnZGF0ZXRpbWVyYW5nZSc6XHJcbiAgICAgICAgICBjZWxsVmFsdWUgPSBnZXRGb3JtYXREYXRlcyhjZWxsVmFsdWUsIHByb3BzLCBgICR7c2VwYXJhdG9yIHx8ICctJ30gYCwgJ3l5eXktTU0tZGQgSEg6c3M6bW0nKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZShjZWxsVmFsdWUsIHByb3BzLCAneXl5eS1NTS1kZCcpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjZWxsVGV4dChoLCBjZWxsVmFsdWUpXHJcbiAgICB9LFxyXG4gICAgcmVuZGVyRmlsdGVyKGg6IEZ1bmN0aW9uLCByZW5kZXJPcHRzOiBhbnksIHBhcmFtczogYW55LCBjb250ZXh0OiBhbnkpIHtcclxuICAgICAgbGV0IHsgY29sdW1uIH0gPSBwYXJhbXNcclxuICAgICAgbGV0IHsgYXR0cnMsIGV2ZW50cyB9ID0gcmVuZGVyT3B0c1xyXG4gICAgICBsZXQgcHJvcHMgPSBnZXRQcm9wcyhwYXJhbXMsIHJlbmRlck9wdHMpXHJcbiAgICAgIGxldCB0eXBlID0gJ29uLWNoYW5nZSdcclxuICAgICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGgocmVuZGVyT3B0cy5uYW1lLCB7XHJcbiAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgIGF0dHJzLFxyXG4gICAgICAgICAgbW9kZWw6IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgY2FsbGJhY2sob3B0aW9uVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgIGl0ZW0uZGF0YSA9IG9wdGlvblZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbjogZ2V0RmlsdGVyRXZlbnRzKHtcclxuICAgICAgICAgICAgW3R5cGVdKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICBoYW5kbGVDb25maXJtRmlsdGVyKGNvbnRleHQsIGNvbHVtbiwgISF2YWx1ZSwgaXRlbSlcclxuICAgICAgICAgICAgICBpZiAoZXZlbnRzICYmIGV2ZW50c1t0eXBlXSkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzW3R5cGVdKE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcyksIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgcmVuZGVyT3B0cywgcGFyYW1zLCBjb250ZXh0KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgZmlsdGVyTWV0aG9kKHsgb3B0aW9uLCByb3csIGNvbHVtbiB9OiBhbnkpIHtcclxuICAgICAgbGV0IHsgZGF0YSB9ID0gb3B0aW9uXHJcbiAgICAgIGxldCB7IGZpbHRlclJlbmRlcjogcmVuZGVyT3B0cyB9ID0gY29sdW1uXHJcbiAgICAgIGxldCB7IHByb3BzID0ge30gfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KVxyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnZGF0ZXJhbmdlJzpcclxuICAgICAgICAgICAgcmV0dXJuIGVxdWFsRGF0ZXJhbmdlKGNlbGxWYWx1ZSwgZGF0YSwgcHJvcHMsICd5eXl5LU1NLWRkJylcclxuICAgICAgICAgIGNhc2UgJ2RhdGV0aW1lcmFuZ2UnOlxyXG4gICAgICAgICAgICByZXR1cm4gZXF1YWxEYXRlcmFuZ2UoY2VsbFZhbHVlLCBkYXRhLCBwcm9wcywgJ3l5eXktTU0tZGQgSEg6c3M6bW0nKVxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZSA9PT0gZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIFRpbWVQaWNrZXI6IHtcclxuICAgIHJlbmRlckVkaXQ6IGRlZmF1bHRFZGl0UmVuZGVyXHJcbiAgfSxcclxuICBSYXRlOiB7XHJcbiAgICByZW5kZXJEZWZhdWx0OiBkZWZhdWx0RWRpdFJlbmRlcixcclxuICAgIHJlbmRlckVkaXQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyRmlsdGVyOiBkZWZhdWx0RmlsdGVyUmVuZGVyLFxyXG4gICAgZmlsdGVyTWV0aG9kOiBkZWZhdWx0RmlsdGVyTWV0aG9kXHJcbiAgfSxcclxuICBpU3dpdGNoOiB7XHJcbiAgICByZW5kZXJEZWZhdWx0OiBkZWZhdWx0RWRpdFJlbmRlcixcclxuICAgIHJlbmRlckVkaXQ6IGRlZmF1bHRFZGl0UmVuZGVyLFxyXG4gICAgcmVuZGVyRmlsdGVyOiBkZWZhdWx0RmlsdGVyUmVuZGVyLFxyXG4gICAgZmlsdGVyTWV0aG9kOiBkZWZhdWx0RmlsdGVyTWV0aG9kXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5LqL5Lu25YW85a655oCn5aSE55CGXHJcbiAqL1xyXG5mdW5jdGlvbiBoYW5kbGVDbGVhckV2ZW50KHBhcmFtczogYW55LCBldm50OiBhbnksIGNvbnRleHQ6IGFueSkge1xyXG4gIGxldCB7IGdldEV2ZW50VGFyZ2V0Tm9kZSB9ID0gY29udGV4dFxyXG4gIGxldCBib2R5RWxlbSA9IGRvY3VtZW50LmJvZHlcclxuICBpZiAoXHJcbiAgICAvLyDkuIvmi4nmoYbjgIHml6XmnJ9cclxuICAgIGdldEV2ZW50VGFyZ2V0Tm9kZShldm50LCBib2R5RWxlbSwgJ2l2dS1zZWxlY3QtZHJvcGRvd24nKS5mbGFnXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOmAgumFjeaPkuS7tu+8jOeUqOS6juWFvOWuuSBpdmlldyDnu4Tku7blupNcclxuICovXHJcbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbklWaWV3ID0ge1xyXG4gIGluc3RhbGwoeHRhYmxlOiB0eXBlb2YgVlhFVGFibGUpIHtcclxuICAgIGxldCB7IGludGVyY2VwdG9yLCByZW5kZXJlciB9ID0geHRhYmxlXHJcbiAgICByZW5kZXJlci5taXhpbihyZW5kZXJNYXApXHJcbiAgICBpbnRlcmNlcHRvci5hZGQoJ2V2ZW50LmNsZWFyRmlsdGVyJywgaGFuZGxlQ2xlYXJFdmVudClcclxuICAgIGludGVyY2VwdG9yLmFkZCgnZXZlbnQuY2xlYXJBY3RpdmVkJywgaGFuZGxlQ2xlYXJFdmVudClcclxuICB9XHJcbn1cclxuXHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcclxuICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luSVZpZXcpXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZYRVRhYmxlUGx1Z2luSVZpZXdcclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbImdldEZvcm1hdERhdGUiLCJ2YWx1ZSIsInByb3BzIiwiZGVmYXVsdEZvcm1hdCIsIlhFVXRpbHMiLCJ0b0RhdGVTdHJpbmciLCJmb3JtYXQiLCJnZXRGb3JtYXREYXRlcyIsInZhbHVlcyIsInNlcGFyYXRvciIsIm1hcCIsImRhdGUiLCJqb2luIiwiZXF1YWxEYXRlcmFuZ2UiLCJjZWxsVmFsdWUiLCJkYXRhIiwibWF0Y2hDYXNjYWRlckRhdGEiLCJpbmRleCIsImxpc3QiLCJsYWJlbHMiLCJ2YWwiLCJsZW5ndGgiLCJlYWNoIiwiaXRlbSIsInB1c2giLCJsYWJlbCIsImNoaWxkcmVuIiwiZ2V0UHJvcHMiLCJkZWZhdWx0UHJvcHMiLCIkdGFibGUiLCJhc3NpZ24iLCJ2U2l6ZSIsInNpemUiLCJnZXRDZWxsRXZlbnRzIiwicmVuZGVyT3B0cyIsInBhcmFtcyIsImV2ZW50cyIsInR5cGUiLCJvbiIsInVwZGF0ZVN0YXR1cyIsIm9iamVjdE1hcCIsImNiIiwiYXJncyIsImFwcGx5IiwiY29uY2F0IiwiY3JlYXRlRWRpdFJlbmRlciIsImgiLCJyb3ciLCJjb2x1bW4iLCJhdHRycyIsIm5hbWUiLCJtb2RlbCIsImdldCIsInByb3BlcnR5IiwiY2FsbGJhY2siLCJzZXQiLCJnZXRGaWx0ZXJFdmVudHMiLCJjb250ZXh0IiwiT2JqZWN0IiwiY3JlYXRlRmlsdGVyUmVuZGVyIiwiZmlsdGVycyIsIm9wdGlvblZhbHVlIiwiZXZudCIsImhhbmRsZUNvbmZpcm1GaWx0ZXIiLCJjaGVja2VkIiwiZmlsdGVyTXVsdGlwbGUiLCJkZWZhdWx0RmlsdGVyTWV0aG9kIiwib3B0aW9uIiwicmVuZGVyT3B0aW9ucyIsIm9wdGlvbnMiLCJvcHRpb25Qcm9wcyIsImxhYmVsUHJvcCIsInZhbHVlUHJvcCIsImRpc2FibGVkUHJvcCIsImRpc2FibGVkIiwia2V5IiwiY2VsbFRleHQiLCJyZW5kZXJNYXAiLCJJbnB1dCIsImF1dG9mb2N1cyIsInJlbmRlckRlZmF1bHQiLCJyZW5kZXJFZGl0IiwicmVuZGVyRmlsdGVyIiwiZmlsdGVyTWV0aG9kIiwiQXV0b0NvbXBsZXRlIiwiSW5wdXROdW1iZXIiLCJTZWxlY3QiLCJvcHRpb25Hcm91cHMiLCJvcHRpb25Hcm91cFByb3BzIiwidHJhbnNmZXIiLCJncm91cE9wdGlvbnMiLCJncm91cExhYmVsIiwiZ3JvdXAiLCJnSW5kZXgiLCJyZW5kZXJDZWxsIiwidW5kZWZpbmVkIiwibXVsdGlwbGUiLCJzZWxlY3RJdGVtIiwiZmluZCIsImZpbHRlclJlbmRlciIsImlzQXJyYXkiLCJpbmNsdWRlQXJyYXlzIiwiaW5kZXhPZiIsIkNhc2NhZGVyIiwiRGF0ZVBpY2tlciIsIlRpbWVQaWNrZXIiLCJSYXRlIiwiaVN3aXRjaCIsImhhbmRsZUNsZWFyRXZlbnQiLCJnZXRFdmVudFRhcmdldE5vZGUiLCJib2R5RWxlbSIsImRvY3VtZW50IiwiYm9keSIsImZsYWciLCJWWEVUYWJsZVBsdWdpbklWaWV3IiwiaW5zdGFsbCIsInh0YWJsZSIsImludGVyY2VwdG9yIiwicmVuZGVyZXIiLCJtaXhpbiIsImFkZCIsIndpbmRvdyIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7OztBQUdBLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQW1DQyxLQUFuQyxFQUErQ0MsYUFBL0MsRUFBb0U7QUFDbEUsU0FBT0Msb0JBQVFDLFlBQVIsQ0FBcUJKLEtBQXJCLEVBQTRCQyxLQUFLLENBQUNJLE1BQU4sSUFBZ0JILGFBQTVDLENBQVA7QUFDRDs7QUFFRCxTQUFTSSxjQUFULENBQXdCQyxNQUF4QixFQUFxQ04sS0FBckMsRUFBaURPLFNBQWpELEVBQW9FTixhQUFwRSxFQUF5RjtBQUN2RixTQUFPQyxvQkFBUU0sR0FBUixDQUFZRixNQUFaLEVBQW9CLFVBQUNHLElBQUQ7QUFBQSxXQUFlWCxhQUFhLENBQUNXLElBQUQsRUFBT1QsS0FBUCxFQUFjQyxhQUFkLENBQTVCO0FBQUEsR0FBcEIsRUFBOEVT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SUFBQUEsV0FBVyxDQUFDRyxHQUFaLENBQWdCLG9CQUFoQixFQUFzQ1osZ0JBQXRDO0FBQ0Q7QUFOZ0MsQ0FBNUI7OztBQVNQLElBQUksT0FBT2EsTUFBUCxLQUFrQixXQUFsQixJQUFpQ0EsTUFBTSxDQUFDQyxRQUE1QyxFQUFzRDtBQUNwREQsRUFBQUEsTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxHQUFoQixDQUFvQlQsbUJBQXBCO0FBQ0Q7O2VBRWNBLG1CIiwiZmlsZSI6ImluZGV4LmNvbW1vbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnXHJcbmltcG9ydCBWWEVUYWJsZSBmcm9tICd2eGUtdGFibGUvbGliL3Z4ZS10YWJsZSdcclxuXHJcbmZ1bmN0aW9uIGdldEZvcm1hdERhdGUodmFsdWU6IGFueSwgcHJvcHM6IGFueSwgZGVmYXVsdEZvcm1hdDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIFhFVXRpbHMudG9EYXRlU3RyaW5nKHZhbHVlLCBwcm9wcy5mb3JtYXQgfHwgZGVmYXVsdEZvcm1hdClcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9ybWF0RGF0ZXModmFsdWVzOiBhbnksIHByb3BzOiBhbnksIHNlcGFyYXRvcjogc3RyaW5nLCBkZWZhdWx0Rm9ybWF0OiBzdHJpbmcpIHtcclxuICByZXR1cm4gWEVVdGlscy5tYXAodmFsdWVzLCAoZGF0ZTogYW55KSA9PiBnZXRGb3JtYXREYXRlKGRhdGUsIHByb3BzLCBkZWZhdWx0Rm9ybWF0KSkuam9pbihzZXBhcmF0b3IpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVxdWFsRGF0ZXJhbmdlKGNlbGxWYWx1ZTogYW55LCBkYXRhOiBhbnksIHByb3BzOiBhbnksIGRlZmF1bHRGb3JtYXQ6IHN0cmluZykge1xyXG4gIGNlbGxWYWx1ZSA9IGdldEZvcm1hdERhdGUoY2VsbFZhbHVlLCBwcm9wcywgZGVmYXVsdEZvcm1hdClcclxuICByZXR1cm4gY2VsbFZhbHVlID49IGdldEZvcm1hdERhdGUoZGF0YVswXSwgcHJvcHMsIGRlZmF1bHRGb3JtYXQpICYmIGNlbGxWYWx1ZSA8PSBnZXRGb3JtYXREYXRlKGRhdGFbMV0sIHByb3BzLCBkZWZhdWx0Rm9ybWF0KVxyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRjaENhc2NhZGVyRGF0YShpbmRleDogbnVtYmVyLCBsaXN0OiBBcnJheTxhbnk+LCB2YWx1ZXM6IEFycmF5PGFueT4sIGxhYmVsczogQXJyYXk8YW55Pikge1xyXG4gIGxldCB2YWwgPSB2YWx1ZXNbaW5kZXhdXHJcbiAgaWYgKGxpc3QgJiYgdmFsdWVzLmxlbmd0aCA+IGluZGV4KSB7XHJcbiAgICBYRVV0aWxzLmVhY2gobGlzdCwgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gdmFsKSB7XHJcbiAgICAgICAgbGFiZWxzLnB1c2goaXRlbS5sYWJlbClcclxuICAgICAgICBtYXRjaENhc2NhZGVyRGF0YSgrK2luZGV4LCBpdGVtLmNoaWxkcmVuLCB2YWx1ZXMsIGxhYmVscylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFByb3BzKHsgJHRhYmxlIH06IGFueSwgeyBwcm9wcyB9OiBhbnksIGRlZmF1bHRQcm9wcz86IGFueSkge1xyXG4gIHJldHVybiBYRVV0aWxzLmFzc2lnbigkdGFibGUudlNpemUgPyB7IHNpemU6ICR0YWJsZS52U2l6ZSB9IDoge30sIGRlZmF1bHRQcm9wcywgcHJvcHMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENlbGxFdmVudHMocmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSkge1xyXG4gIGxldCB7IGV2ZW50cyB9ID0gcmVuZGVyT3B0c1xyXG4gIGxldCB7ICR0YWJsZSB9ID0gcGFyYW1zXHJcbiAgbGV0IHR5cGUgPSAnb24tY2hhbmdlJ1xyXG4gIGxldCBvbiA9IHtcclxuICAgIFt0eXBlXTogKCkgPT4gJHRhYmxlLnVwZGF0ZVN0YXR1cyhwYXJhbXMpXHJcbiAgfVxyXG4gIGlmIChldmVudHMpIHtcclxuICAgIHJldHVybiBYRVV0aWxzLmFzc2lnbih7fSwgWEVVdGlscy5vYmplY3RNYXAoZXZlbnRzLCAoY2I6IEZ1bmN0aW9uKSA9PiBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgY2IuYXBwbHkobnVsbCwgW3BhcmFtc10uY29uY2F0LmFwcGx5KHBhcmFtcywgYXJncykpXHJcbiAgICB9KSwgb24pXHJcbiAgfVxyXG4gIHJldHVybiBvblxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVFZGl0UmVuZGVyKGRlZmF1bHRQcm9wcz86IGFueSkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoaDogRnVuY3Rpb24sIHJlbmRlck9wdHM6IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICAgIGxldCB7IHJvdywgY29sdW1uIH0gPSBwYXJhbXNcclxuICAgIGxldCB7IGF0dHJzIH0gPSByZW5kZXJPcHRzXHJcbiAgICBsZXQgcHJvcHMgPSBnZXRQcm9wcyhwYXJhbXMsIHJlbmRlck9wdHMsIGRlZmF1bHRQcm9wcylcclxuICAgIHJldHVybiBbXHJcbiAgICAgIGgocmVuZGVyT3B0cy5uYW1lLCB7XHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgbW9kZWw6IHtcclxuICAgICAgICAgIHZhbHVlOiBYRVV0aWxzLmdldChyb3csIGNvbHVtbi5wcm9wZXJ0eSksXHJcbiAgICAgICAgICBjYWxsYmFjayh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgICAgIFhFVXRpbHMuc2V0KHJvdywgY29sdW1uLnByb3BlcnR5LCB2YWx1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uOiBnZXRDZWxsRXZlbnRzKHJlbmRlck9wdHMsIHBhcmFtcylcclxuICAgICAgfSlcclxuICAgIF1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZpbHRlckV2ZW50cyhvbjogYW55LCByZW5kZXJPcHRzOiBhbnksIHBhcmFtczogYW55LCBjb250ZXh0OiBhbnkpIHtcclxuICBsZXQgeyBldmVudHMgfSA9IHJlbmRlck9wdHNcclxuICBpZiAoZXZlbnRzKSB7XHJcbiAgICByZXR1cm4gWEVVdGlscy5hc3NpZ24oe30sIFhFVXRpbHMub2JqZWN0TWFwKGV2ZW50cywgKGNiOiBGdW5jdGlvbikgPT4gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgIHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcylcclxuICAgICAgY2IuYXBwbHkobnVsbCwgW3BhcmFtc10uY29uY2F0LmFwcGx5KHBhcmFtcywgYXJncykpXHJcbiAgICB9KSwgb24pXHJcbiAgfVxyXG4gIHJldHVybiBvblxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJSZW5kZXIoZGVmYXVsdFByb3BzPzogYW55KSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICBsZXQgeyBjb2x1bW4gfSA9IHBhcmFtc1xyXG4gICAgbGV0IHsgbmFtZSwgYXR0cnMsIGV2ZW50cyB9ID0gcmVuZGVyT3B0c1xyXG4gICAgbGV0IHR5cGUgPSAnb24tY2hhbmdlJ1xyXG4gICAgbGV0IHByb3BzID0gZ2V0UHJvcHMocGFyYW1zLCByZW5kZXJPcHRzKVxyXG4gICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBoKG5hbWUsIHtcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBhdHRycyxcclxuICAgICAgICBtb2RlbDoge1xyXG4gICAgICAgICAgdmFsdWU6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgIGNhbGxiYWNrKG9wdGlvblZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhID0gb3B0aW9uVmFsdWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uOiBnZXRGaWx0ZXJFdmVudHMoe1xyXG4gICAgICAgICAgW3R5cGVdKGV2bnQ6IGFueSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDb25maXJtRmlsdGVyKGNvbnRleHQsIGNvbHVtbiwgISFpdGVtLmRhdGEsIGl0ZW0pXHJcbiAgICAgICAgICAgIGlmIChldmVudHMgJiYgZXZlbnRzW3R5cGVdKSB7XHJcbiAgICAgICAgICAgICAgZXZlbnRzW3R5cGVdKE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcyksIGV2bnQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCByZW5kZXJPcHRzLCBwYXJhbXMsIGNvbnRleHQpXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlQ29uZmlybUZpbHRlcihjb250ZXh0OiBhbnksIGNvbHVtbjogYW55LCBjaGVja2VkOiBhbnksIGl0ZW06IGFueSkge1xyXG4gIGNvbnRleHRbY29sdW1uLmZpbHRlck11bHRpcGxlID8gJ2NoYW5nZU11bHRpcGxlT3B0aW9uJyA6ICdjaGFuZ2VSYWRpb09wdGlvbiddKHt9LCBjaGVja2VkLCBpdGVtKVxyXG59XHJcblxyXG5mdW5jdGlvbiBkZWZhdWx0RmlsdGVyTWV0aG9kKHsgb3B0aW9uLCByb3csIGNvbHVtbiB9OiBhbnkpIHtcclxuICBsZXQgeyBkYXRhIH0gPSBvcHRpb25cclxuICBsZXQgY2VsbFZhbHVlID0gWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpXHJcbiAgLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXHJcbiAgcmV0dXJuIGNlbGxWYWx1ZSA9PT0gZGF0YVxyXG59XHJcblxyXG5mdW5jdGlvbiByZW5kZXJPcHRpb25zKGg6IEZ1bmN0aW9uLCBvcHRpb25zOiBhbnksIG9wdGlvblByb3BzOiBhbnkpIHtcclxuICBsZXQgbGFiZWxQcm9wID0gb3B0aW9uUHJvcHMubGFiZWwgfHwgJ2xhYmVsJ1xyXG4gIGxldCB2YWx1ZVByb3AgPSBvcHRpb25Qcm9wcy52YWx1ZSB8fCAndmFsdWUnXHJcbiAgbGV0IGRpc2FibGVkUHJvcCA9IG9wdGlvblByb3BzLmRpc2FibGVkIHx8ICdkaXNhYmxlZCdcclxuICByZXR1cm4gWEVVdGlscy5tYXAob3B0aW9ucywgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgcmV0dXJuIGgoJ09wdGlvbicsIHtcclxuICAgICAgcHJvcHM6IHtcclxuICAgICAgICB2YWx1ZTogaXRlbVt2YWx1ZVByb3BdLFxyXG4gICAgICAgIGxhYmVsOiBpdGVtW2xhYmVsUHJvcF0sXHJcbiAgICAgICAgZGlzYWJsZWQ6IGl0ZW1bZGlzYWJsZWRQcm9wXVxyXG4gICAgICB9LFxyXG4gICAgICBrZXk6IGluZGV4XHJcbiAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNlbGxUZXh0KGg6IEZ1bmN0aW9uLCBjZWxsVmFsdWU6IGFueSkge1xyXG4gIHJldHVybiBbJycgKyAoY2VsbFZhbHVlID09PSBudWxsIHx8IGNlbGxWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBjZWxsVmFsdWUpXVxyXG59XHJcblxyXG4vKipcclxuICog5riy5p+T5Ye95pWwXHJcbiAqL1xyXG5jb25zdCByZW5kZXJNYXAgPSB7XHJcbiAgSW5wdXQ6IHtcclxuICAgIGF1dG9mb2N1czogJ2lucHV0Lml2dS1pbnB1dCcsXHJcbiAgICByZW5kZXJEZWZhdWx0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJFZGl0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJGaWx0ZXI6IGNyZWF0ZUZpbHRlclJlbmRlcigpLFxyXG4gICAgZmlsdGVyTWV0aG9kOiBkZWZhdWx0RmlsdGVyTWV0aG9kXHJcbiAgfSxcclxuICBBdXRvQ29tcGxldGU6IHtcclxuICAgIGF1dG9mb2N1czogJ2lucHV0Lml2dS1pbnB1dCcsXHJcbiAgICByZW5kZXJEZWZhdWx0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJFZGl0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJGaWx0ZXI6IGNyZWF0ZUZpbHRlclJlbmRlcigpLFxyXG4gICAgZmlsdGVyTWV0aG9kOiBkZWZhdWx0RmlsdGVyTWV0aG9kXHJcbiAgfSxcclxuICBJbnB1dE51bWJlcjoge1xyXG4gICAgYXV0b2ZvY3VzOiAnaW5wdXQuaXZ1LWlucHV0LW51bWJlci1pbnB1dCcsXHJcbiAgICByZW5kZXJEZWZhdWx0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJFZGl0OiBjcmVhdGVFZGl0UmVuZGVyKCksXHJcbiAgICByZW5kZXJGaWx0ZXI6IGNyZWF0ZUZpbHRlclJlbmRlcigpLFxyXG4gICAgZmlsdGVyTWV0aG9kOiBkZWZhdWx0RmlsdGVyTWV0aG9kXHJcbiAgfSxcclxuICBTZWxlY3Q6IHtcclxuICAgIHJlbmRlckVkaXQoaDogRnVuY3Rpb24sIHJlbmRlck9wdHM6IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICAgICAgbGV0IHsgb3B0aW9ucywgb3B0aW9uR3JvdXBzLCBvcHRpb25Qcm9wcyA9IHt9LCBvcHRpb25Hcm91cFByb3BzID0ge30gfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IHsgcm93LCBjb2x1bW4gfSA9IHBhcmFtc1xyXG4gICAgICBsZXQgeyBhdHRycyB9ID0gcmVuZGVyT3B0c1xyXG4gICAgICBsZXQgcHJvcHMgPSBnZXRQcm9wcyhwYXJhbXMsIHJlbmRlck9wdHMsIHsgdHJhbnNmZXI6IHRydWUgfSlcclxuICAgICAgaWYgKG9wdGlvbkdyb3Vwcykge1xyXG4gICAgICAgIGxldCBncm91cE9wdGlvbnMgPSBvcHRpb25Hcm91cFByb3BzLm9wdGlvbnMgfHwgJ29wdGlvbnMnXHJcbiAgICAgICAgbGV0IGdyb3VwTGFiZWwgPSBvcHRpb25Hcm91cFByb3BzLmxhYmVsIHx8ICdsYWJlbCdcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgaCgnU2VsZWN0Jywge1xyXG4gICAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgICAgIG1vZGVsOiB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KSxcclxuICAgICAgICAgICAgICBjYWxsYmFjayhjZWxsVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgWEVVdGlscy5zZXQocm93LCBjb2x1bW4ucHJvcGVydHksIGNlbGxWYWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uOiBnZXRDZWxsRXZlbnRzKHJlbmRlck9wdHMsIHBhcmFtcylcclxuICAgICAgICAgIH0sIFhFVXRpbHMubWFwKG9wdGlvbkdyb3VwcywgKGdyb3VwOiBhbnksIGdJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBoKCdPcHRpb25Hcm91cCcsIHtcclxuICAgICAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IGdyb3VwW2dyb3VwTGFiZWxdXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBrZXk6IGdJbmRleFxyXG4gICAgICAgICAgICB9LCByZW5kZXJPcHRpb25zKGgsIGdyb3VwW2dyb3VwT3B0aW9uc10sIG9wdGlvblByb3BzKSlcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGgoJ1NlbGVjdCcsIHtcclxuICAgICAgICAgIHByb3BzLFxyXG4gICAgICAgICAgYXR0cnMsXHJcbiAgICAgICAgICBtb2RlbDoge1xyXG4gICAgICAgICAgICB2YWx1ZTogWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpLFxyXG4gICAgICAgICAgICBjYWxsYmFjayhjZWxsVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgIFhFVXRpbHMuc2V0KHJvdywgY29sdW1uLnByb3BlcnR5LCBjZWxsVmFsdWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbjogZ2V0Q2VsbEV2ZW50cyhyZW5kZXJPcHRzLCBwYXJhbXMpXHJcbiAgICAgICAgfSwgcmVuZGVyT3B0aW9ucyhoLCBvcHRpb25zLCBvcHRpb25Qcm9wcykpXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICByZW5kZXJDZWxsKGg6IEZ1bmN0aW9uLCByZW5kZXJPcHRzOiBhbnksIHBhcmFtczogYW55KSB7XHJcbiAgICAgIGxldCB7IG9wdGlvbnMsIG9wdGlvbkdyb3VwcywgcHJvcHMgPSB7fSwgb3B0aW9uUHJvcHMgPSB7fSwgb3B0aW9uR3JvdXBQcm9wcyA9IHt9IH0gPSByZW5kZXJPcHRzXHJcbiAgICAgIGxldCB7IHJvdywgY29sdW1uIH0gPSBwYXJhbXNcclxuICAgICAgbGV0IGxhYmVsUHJvcCA9IG9wdGlvblByb3BzLmxhYmVsIHx8ICdsYWJlbCdcclxuICAgICAgbGV0IHZhbHVlUHJvcCA9IG9wdGlvblByb3BzLnZhbHVlIHx8ICd2YWx1ZSdcclxuICAgICAgbGV0IGdyb3VwT3B0aW9ucyA9IG9wdGlvbkdyb3VwUHJvcHMub3B0aW9ucyB8fCAnb3B0aW9ucydcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KVxyXG4gICAgICBpZiAoIShjZWxsVmFsdWUgPT09IG51bGwgfHwgY2VsbFZhbHVlID09PSB1bmRlZmluZWQgfHwgY2VsbFZhbHVlID09PSAnJykpIHtcclxuICAgICAgICByZXR1cm4gY2VsbFRleHQoaCwgWEVVdGlscy5tYXAocHJvcHMubXVsdGlwbGUgPyBjZWxsVmFsdWUgOiBbY2VsbFZhbHVlXSwgb3B0aW9uR3JvdXBzID8gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzZWxlY3RJdGVtXHJcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb3B0aW9uR3JvdXBzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICBzZWxlY3RJdGVtID0gWEVVdGlscy5maW5kKG9wdGlvbkdyb3Vwc1tpbmRleF1bZ3JvdXBPcHRpb25zXSwgKGl0ZW06IGFueSkgPT4gaXRlbVt2YWx1ZVByb3BdID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgaWYgKHNlbGVjdEl0ZW0pIHtcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbSA/IHNlbGVjdEl0ZW1bbGFiZWxQcm9wXSA6IG51bGxcclxuICAgICAgICB9IDogKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzZWxlY3RJdGVtID0gWEVVdGlscy5maW5kKG9wdGlvbnMsIChpdGVtOiBhbnkpID0+IGl0ZW1bdmFsdWVQcm9wXSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbSA/IHNlbGVjdEl0ZW1bbGFiZWxQcm9wXSA6IG51bGxcclxuICAgICAgICB9KS5qb2luKCc7JykpXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNlbGxUZXh0KGgsICcnKVxyXG4gICAgfSxcclxuICAgIHJlbmRlckZpbHRlcihoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICAgIGxldCB7IG9wdGlvbnMsIG9wdGlvbkdyb3Vwcywgb3B0aW9uUHJvcHMgPSB7fSwgb3B0aW9uR3JvdXBQcm9wcyA9IHt9IH0gPSByZW5kZXJPcHRzXHJcbiAgICAgIGxldCB7IGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgICAgIGxldCB7IGF0dHJzLCBldmVudHMgfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IHByb3BzID0gZ2V0UHJvcHMocGFyYW1zLCByZW5kZXJPcHRzLCB7IHRyYW5zZmVyOiB0cnVlIH0pXHJcbiAgICAgIGxldCB0eXBlID0gJ29uLWNoYW5nZSdcclxuICAgICAgaWYgKG9wdGlvbkdyb3Vwcykge1xyXG4gICAgICAgIGxldCBncm91cE9wdGlvbnMgPSBvcHRpb25Hcm91cFByb3BzLm9wdGlvbnMgfHwgJ29wdGlvbnMnXHJcbiAgICAgICAgbGV0IGdyb3VwTGFiZWwgPSBvcHRpb25Hcm91cFByb3BzLmxhYmVsIHx8ICdsYWJlbCdcclxuICAgICAgICByZXR1cm4gY29sdW1uLmZpbHRlcnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBoKCdTZWxlY3QnLCB7XHJcbiAgICAgICAgICAgIHByb3BzLFxyXG4gICAgICAgICAgICBhdHRycyxcclxuICAgICAgICAgICAgbW9kZWw6IHtcclxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKG9wdGlvblZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGF0YSA9IG9wdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbjogZ2V0RmlsdGVyRXZlbnRzKHtcclxuICAgICAgICAgICAgICBbdHlwZV0odmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlQ29uZmlybUZpbHRlcihjb250ZXh0LCBjb2x1bW4sIHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDAsIGl0ZW0pXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRzICYmIGV2ZW50c1t0eXBlXSkge1xyXG4gICAgICAgICAgICAgICAgICBldmVudHNbdHlwZV0oT2JqZWN0LmFzc2lnbih7IGNvbnRleHQgfSwgcGFyYW1zKSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCByZW5kZXJPcHRzLCBwYXJhbXMsIGNvbnRleHQpXHJcbiAgICAgICAgICB9LCBYRVV0aWxzLm1hcChvcHRpb25Hcm91cHMsIChncm91cDogYW55LCBnSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gaCgnT3B0aW9uR3JvdXAnLCB7XHJcbiAgICAgICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBncm91cFtncm91cExhYmVsXVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAga2V5OiBnSW5kZXhcclxuICAgICAgICAgICAgfSwgcmVuZGVyT3B0aW9ucyhoLCBncm91cFtncm91cE9wdGlvbnNdLCBvcHRpb25Qcm9wcykpXHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW4uZmlsdGVycy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBoKCdTZWxlY3QnLCB7XHJcbiAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgIGF0dHJzLFxyXG4gICAgICAgICAgbW9kZWw6IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgY2FsbGJhY2sob3B0aW9uVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgIGl0ZW0uZGF0YSA9IG9wdGlvblZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbjogZ2V0RmlsdGVyRXZlbnRzKHtcclxuICAgICAgICAgICAgW3R5cGVdKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICBoYW5kbGVDb25maXJtRmlsdGVyKGNvbnRleHQsIGNvbHVtbiwgdmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCwgaXRlbSlcclxuICAgICAgICAgICAgICBpZiAoZXZlbnRzICYmIGV2ZW50c1t0eXBlXSkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzW3R5cGVdKE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcyksIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgcmVuZGVyT3B0cywgcGFyYW1zLCBjb250ZXh0KVxyXG4gICAgICAgIH0sIHJlbmRlck9wdGlvbnMoaCwgb3B0aW9ucywgb3B0aW9uUHJvcHMpKVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGZpbHRlck1ldGhvZCh7IG9wdGlvbiwgcm93LCBjb2x1bW4gfTogYW55KSB7XHJcbiAgICAgIGxldCB7IGRhdGEgfSA9IG9wdGlvblxyXG4gICAgICBsZXQgeyBwcm9wZXJ0eSwgZmlsdGVyUmVuZGVyOiByZW5kZXJPcHRzIH0gPSBjb2x1bW5cclxuICAgICAgbGV0IHsgcHJvcHMgPSB7fSB9ID0gcmVuZGVyT3B0c1xyXG4gICAgICBsZXQgY2VsbFZhbHVlID0gWEVVdGlscy5nZXQocm93LCBwcm9wZXJ0eSlcclxuICAgICAgaWYgKHByb3BzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgaWYgKFhFVXRpbHMuaXNBcnJheShjZWxsVmFsdWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gWEVVdGlscy5pbmNsdWRlQXJyYXlzKGNlbGxWYWx1ZSwgZGF0YSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGEuaW5kZXhPZihjZWxsVmFsdWUpID4gLTFcclxuICAgICAgfVxyXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cclxuICAgICAgcmV0dXJuIGNlbGxWYWx1ZSA9PSBkYXRhXHJcbiAgICB9XHJcbiAgfSxcclxuICBDYXNjYWRlcjoge1xyXG4gICAgcmVuZGVyRWRpdDogY3JlYXRlRWRpdFJlbmRlcih7IHRyYW5zZmVyOiB0cnVlIH0pLFxyXG4gICAgcmVuZGVyQ2VsbChoOiBGdW5jdGlvbiwgeyBwcm9wcyA9IHt9IH06IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICAgICAgbGV0IHsgcm93LCBjb2x1bW4gfSA9IHBhcmFtc1xyXG4gICAgICBsZXQgY2VsbFZhbHVlID0gWEVVdGlscy5nZXQocm93LCBjb2x1bW4ucHJvcGVydHkpXHJcbiAgICAgIGxldCB2YWx1ZXMgPSBjZWxsVmFsdWUgfHwgW11cclxuICAgICAgbGV0IGxhYmVsczogQXJyYXk8YW55PiA9IFtdXHJcbiAgICAgIG1hdGNoQ2FzY2FkZXJEYXRhKDAsIHByb3BzLmRhdGEsIHZhbHVlcywgbGFiZWxzKVxyXG4gICAgICByZXR1cm4gY2VsbFRleHQoaCwgbGFiZWxzLmpvaW4oYCAke3Byb3BzLnNlcGFyYXRvciB8fCAnLyd9IGApKVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgRGF0ZVBpY2tlcjoge1xyXG4gICAgcmVuZGVyRWRpdDogY3JlYXRlRWRpdFJlbmRlcih7IHRyYW5zZmVyOiB0cnVlIH0pLFxyXG4gICAgcmVuZGVyQ2VsbChoOiBGdW5jdGlvbiwgeyBwcm9wcyA9IHt9IH06IGFueSwgcGFyYW1zOiBhbnkpIHtcclxuICAgICAgbGV0IHsgcm93LCBjb2x1bW4gfSA9IHBhcmFtc1xyXG4gICAgICBsZXQgeyBzZXBhcmF0b3IgfSA9IHByb3BzXHJcbiAgICAgIGxldCBjZWxsVmFsdWUgPSBYRVV0aWxzLmdldChyb3csIGNvbHVtbi5wcm9wZXJ0eSlcclxuICAgICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgICBjZWxsVmFsdWUgPSBnZXRGb3JtYXREYXRlKGNlbGxWYWx1ZSwgcHJvcHMsICd5eXl5d1dXJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZShjZWxsVmFsdWUsIHByb3BzLCAneXl5eS1NTScpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZShjZWxsVmFsdWUsIHByb3BzLCAneXl5eScpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ2RhdGVzJzpcclxuICAgICAgICAgIGNlbGxWYWx1ZSA9IGdldEZvcm1hdERhdGVzKGNlbGxWYWx1ZSwgcHJvcHMsICcsICcsICd5eXl5LU1NLWRkJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnZGF0ZXJhbmdlJzpcclxuICAgICAgICAgIGNlbGxWYWx1ZSA9IGdldEZvcm1hdERhdGVzKGNlbGxWYWx1ZSwgcHJvcHMsIGAgJHtzZXBhcmF0b3IgfHwgJy0nfSBgLCAneXl5eS1NTS1kZCcpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lcmFuZ2UnOlxyXG4gICAgICAgICAgY2VsbFZhbHVlID0gZ2V0Rm9ybWF0RGF0ZXMoY2VsbFZhbHVlLCBwcm9wcywgYCAke3NlcGFyYXRvciB8fCAnLSd9IGAsICd5eXl5LU1NLWRkIEhIOnNzOm1tJylcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGNlbGxWYWx1ZSA9IGdldEZvcm1hdERhdGUoY2VsbFZhbHVlLCBwcm9wcywgJ3l5eXktTU0tZGQnKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY2VsbFRleHQoaCwgY2VsbFZhbHVlKVxyXG4gICAgfSxcclxuICAgIHJlbmRlckZpbHRlcihoOiBGdW5jdGlvbiwgcmVuZGVyT3B0czogYW55LCBwYXJhbXM6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICAgIGxldCB7IGNvbHVtbiB9ID0gcGFyYW1zXHJcbiAgICAgIGxldCB7IGF0dHJzLCBldmVudHMgfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IHByb3BzID0gZ2V0UHJvcHMocGFyYW1zLCByZW5kZXJPcHRzLCB7IHRyYW5zZmVyOiB0cnVlIH0pXHJcbiAgICAgIGxldCB0eXBlID0gJ29uLWNoYW5nZSdcclxuICAgICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGgocmVuZGVyT3B0cy5uYW1lLCB7XHJcbiAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgIGF0dHJzLFxyXG4gICAgICAgICAgbW9kZWw6IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgY2FsbGJhY2sob3B0aW9uVmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAgIGl0ZW0uZGF0YSA9IG9wdGlvblZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbjogZ2V0RmlsdGVyRXZlbnRzKHtcclxuICAgICAgICAgICAgW3R5cGVdKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICAgICAgICBoYW5kbGVDb25maXJtRmlsdGVyKGNvbnRleHQsIGNvbHVtbiwgISF2YWx1ZSwgaXRlbSlcclxuICAgICAgICAgICAgICBpZiAoZXZlbnRzICYmIGV2ZW50c1t0eXBlXSkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzW3R5cGVdKE9iamVjdC5hc3NpZ24oeyBjb250ZXh0IH0sIHBhcmFtcyksIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgcmVuZGVyT3B0cywgcGFyYW1zLCBjb250ZXh0KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgZmlsdGVyTWV0aG9kKHsgb3B0aW9uLCByb3csIGNvbHVtbiB9OiBhbnkpIHtcclxuICAgICAgbGV0IHsgZGF0YSB9ID0gb3B0aW9uXHJcbiAgICAgIGxldCB7IGZpbHRlclJlbmRlcjogcmVuZGVyT3B0cyB9ID0gY29sdW1uXHJcbiAgICAgIGxldCB7IHByb3BzID0ge30gfSA9IHJlbmRlck9wdHNcclxuICAgICAgbGV0IGNlbGxWYWx1ZSA9IFhFVXRpbHMuZ2V0KHJvdywgY29sdW1uLnByb3BlcnR5KVxyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnZGF0ZXJhbmdlJzpcclxuICAgICAgICAgICAgcmV0dXJuIGVxdWFsRGF0ZXJhbmdlKGNlbGxWYWx1ZSwgZGF0YSwgcHJvcHMsICd5eXl5LU1NLWRkJylcclxuICAgICAgICAgIGNhc2UgJ2RhdGV0aW1lcmFuZ2UnOlxyXG4gICAgICAgICAgICByZXR1cm4gZXF1YWxEYXRlcmFuZ2UoY2VsbFZhbHVlLCBkYXRhLCBwcm9wcywgJ3l5eXktTU0tZGQgSEg6c3M6bW0nKVxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZSA9PT0gZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIFRpbWVQaWNrZXI6IHtcclxuICAgIHJlbmRlckVkaXQ6IGNyZWF0ZUVkaXRSZW5kZXIoeyB0cmFuc2ZlcjogdHJ1ZSB9KVxyXG4gIH0sXHJcbiAgUmF0ZToge1xyXG4gICAgcmVuZGVyRGVmYXVsdDogY3JlYXRlRWRpdFJlbmRlcigpLFxyXG4gICAgcmVuZGVyRWRpdDogY3JlYXRlRWRpdFJlbmRlcigpLFxyXG4gICAgcmVuZGVyRmlsdGVyOiBjcmVhdGVGaWx0ZXJSZW5kZXIoKSxcclxuICAgIGZpbHRlck1ldGhvZDogZGVmYXVsdEZpbHRlck1ldGhvZFxyXG4gIH0sXHJcbiAgaVN3aXRjaDoge1xyXG4gICAgcmVuZGVyRGVmYXVsdDogY3JlYXRlRWRpdFJlbmRlcigpLFxyXG4gICAgcmVuZGVyRWRpdDogY3JlYXRlRWRpdFJlbmRlcigpLFxyXG4gICAgcmVuZGVyRmlsdGVyOiBjcmVhdGVGaWx0ZXJSZW5kZXIoKSxcclxuICAgIGZpbHRlck1ldGhvZDogZGVmYXVsdEZpbHRlck1ldGhvZFxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOS6i+S7tuWFvOWuueaAp+WkhOeQhlxyXG4gKi9cclxuZnVuY3Rpb24gaGFuZGxlQ2xlYXJFdmVudChwYXJhbXM6IGFueSwgZXZudDogYW55LCBjb250ZXh0OiBhbnkpIHtcclxuICBsZXQgeyBnZXRFdmVudFRhcmdldE5vZGUgfSA9IGNvbnRleHRcclxuICBsZXQgYm9keUVsZW0gPSBkb2N1bWVudC5ib2R5XHJcbiAgaWYgKFxyXG4gICAgLy8g5LiL5ouJ5qGG44CB5pel5pyfXHJcbiAgICBnZXRFdmVudFRhcmdldE5vZGUoZXZudCwgYm9keUVsZW0sICdpdnUtc2VsZWN0LWRyb3Bkb3duJykuZmxhZ1xyXG4gICkge1xyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTpgILphY3mj5Lku7bvvIznlKjkuo7lhbzlrrkgaXZpZXcg57uE5Lu25bqTXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5JVmlldyA9IHtcclxuICBpbnN0YWxsKHh0YWJsZTogdHlwZW9mIFZYRVRhYmxlKSB7XHJcbiAgICBsZXQgeyBpbnRlcmNlcHRvciwgcmVuZGVyZXIgfSA9IHh0YWJsZVxyXG4gICAgcmVuZGVyZXIubWl4aW4ocmVuZGVyTWFwKVxyXG4gICAgaW50ZXJjZXB0b3IuYWRkKCdldmVudC5jbGVhckZpbHRlcicsIGhhbmRsZUNsZWFyRXZlbnQpXHJcbiAgICBpbnRlcmNlcHRvci5hZGQoJ2V2ZW50LmNsZWFyQWN0aXZlZCcsIGhhbmRsZUNsZWFyRXZlbnQpXHJcbiAgfVxyXG59XHJcblxyXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZYRVRhYmxlKSB7XHJcbiAgd2luZG93LlZYRVRhYmxlLnVzZShWWEVUYWJsZVBsdWdpbklWaWV3KVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbklWaWV3XHJcbiJdfQ== diff --git a/dist/index.js b/dist/index.js index 540dd35..a35b369 100644 --- a/dist/index.js +++ b/dist/index.js @@ -51,12 +51,12 @@ } } - function getProps(_ref, _ref2) { + function getProps(_ref, _ref2, defaultProps) { var $table = _ref.$table; var props = _ref2.props; return _xeUtils["default"].assign($table.vSize ? { size: $table.vSize - } : {}, props); + } : {}, defaultProps, props); } function getCellEvents(renderOpts, params) { @@ -83,22 +83,24 @@ return on; } - function defaultEditRender(h, renderOpts, params) { - var row = params.row, - column = params.column; - var attrs = renderOpts.attrs; - var props = getProps(params, renderOpts); - return [h(renderOpts.name, { - props: props, - attrs: attrs, - model: { - value: _xeUtils["default"].get(row, column.property), - callback: function callback(value) { - _xeUtils["default"].set(row, column.property, value); - } - }, - on: getCellEvents(renderOpts, params) - })]; + function createEditRender(defaultProps) { + return function (h, renderOpts, params) { + var row = params.row, + column = params.column; + var attrs = renderOpts.attrs; + var props = getProps(params, renderOpts, defaultProps); + return [h(renderOpts.name, { + props: props, + attrs: attrs, + model: { + value: _xeUtils["default"].get(row, column.property), + callback: function callback(value) { + _xeUtils["default"].set(row, column.property, value); + } + }, + on: getCellEvents(renderOpts, params) + })]; + }; } function getFilterEvents(on, renderOpts, params, context) { @@ -123,34 +125,36 @@ return on; } - function defaultFilterRender(h, renderOpts, params, context) { - var column = params.column; - var name = renderOpts.name, - attrs = renderOpts.attrs, - events = renderOpts.events; - var type = 'on-change'; - var props = getProps(params, renderOpts); - return column.filters.map(function (item) { - return h(name, { - props: props, - attrs: attrs, - model: { - value: item.data, - callback: function callback(optionValue) { - item.data = optionValue; - } - }, - on: getFilterEvents(_defineProperty({}, type, function (evnt) { - handleConfirmFilter(context, column, !!item.data, item); + function createFilterRender(defaultProps) { + return function (h, renderOpts, params, context) { + var column = params.column; + var name = renderOpts.name, + attrs = renderOpts.attrs, + events = renderOpts.events; + var type = 'on-change'; + var props = getProps(params, renderOpts); + return column.filters.map(function (item) { + return h(name, { + props: props, + attrs: attrs, + model: { + value: item.data, + callback: function callback(optionValue) { + item.data = optionValue; + } + }, + on: getFilterEvents(_defineProperty({}, type, function (evnt) { + handleConfirmFilter(context, column, !!item.data, item); - if (events && events[type]) { - events[type](Object.assign({ - context: context - }, params), evnt); - } - }), renderOpts, params, context) + if (events && events[type]) { + events[type](Object.assign({ + context: context + }, params), evnt); + } + }), renderOpts, params, context) + }); }); - }); + }; } function handleConfirmFilter(context, column, checked, item) { @@ -197,23 +201,23 @@ var renderMap = { Input: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, AutoComplete: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, InputNumber: { autofocus: 'input.ivu-input-number-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, Select: { @@ -227,7 +231,9 @@ var row = params.row, column = params.column; var attrs = renderOpts.attrs; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); if (optionGroups) { var groupOptions = optionGroupProps.options || 'options'; @@ -317,7 +323,9 @@ var column = params.column; var attrs = renderOpts.attrs, events = renderOpts.events; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); var type = 'on-change'; if (optionGroups) { @@ -401,7 +409,9 @@ } }, Cascader: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ + transfer: true + }), renderCell: function renderCell(h, _ref5, params) { var _ref5$props = _ref5.props, props = _ref5$props === void 0 ? {} : _ref5$props; @@ -417,7 +427,9 @@ } }, DatePicker: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ + transfer: true + }), renderCell: function renderCell(h, _ref6, params) { var _ref6$props = _ref6.props, props = _ref6$props === void 0 ? {} : _ref6$props; @@ -463,7 +475,9 @@ var column = params.column; var attrs = renderOpts.attrs, events = renderOpts.events; - var props = getProps(params, renderOpts); + var props = getProps(params, renderOpts, { + transfer: true + }); var type = 'on-change'; return column.filters.map(function (item) { return h(renderOpts.name, { @@ -515,18 +529,20 @@ } }, TimePicker: { - renderEdit: defaultEditRender + renderEdit: createEditRender({ + transfer: true + }) }, Rate: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, iSwitch: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod } }; diff --git a/dist/index.min.js b/dist/index.min.js index 52a3924..385837a 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -!function(e,t){if("function"==typeof define&&define.amd)define("vxe-table-plugin-iview",["exports","xe-utils"],t);else if("undefined"!=typeof exports)t(exports,require("xe-utils"));else{var n={exports:{}};t(n.exports,e.XEUtils),e.VXETablePluginIView=n.exports.default}}(this,function(e,m){"use strict";var t;function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t,n){return m.default.toDateString(e,t.format||n)}function p(e,t,n,r){return m.default.map(e,function(e){return d(e,t,r)}).join(n)}function l(e,t,n,r){return(e=d(e,n,r))>=d(t[0],n,r)&&e<=d(t[1],n,r)}function h(e,t){var n=e.$table,r=t.props;return m.default.assign(n.vSize?{size:n.vSize}:{},r)}function y(e,o){var t=e.events,n=o.$table,r=g({},"on-change",function(){return n.updateStatus(o)});return t?m.default.assign({},m.default.objectMap(t,function(r){return function(){for(var e=arguments.length,t=new Array(e),n=0;nn&&m.default.each(e,function(e){e.value===a&&(o.push(e.label),t(++n,e.children,r,o))})}(0,o.data,i,l),x(0,l.join(" ".concat(o.separator||"/"," ")))}},DatePicker:{renderEdit:n,renderCell:function(e,t,n){var r=t.props,o=void 0===r?{}:r,a=n.row,u=n.column,i=o.separator,l=m.default.get(a,u.property);switch(o.type){case"week":l=d(l,o,"yyyywWW");break;case"month":l=d(l,o,"yyyy-MM");break;case"year":l=d(l,o,"yyyy");break;case"dates":l=p(l,o,", ","yyyy-MM-dd");break;case"daterange":l=p(l,o," ".concat(i||"-"," "),"yyyy-MM-dd");break;case"datetimerange":l=p(l,o," ".concat(i||"-"," "),"yyyy-MM-dd HH:ss:mm");break;default:l=d(l,o,"yyyy-MM-dd")}return x(0,l)},renderFilter:function(e,n,r,o){var a=r.column,u=n.attrs,i=n.events,l=h(r,n),d="on-change";return a.filters.map(function(t){return e(n.name,{props:l,attrs:u,model:{value:t.data,callback:function(e){t.data=e}},on:w(g({},d,function(e){M(o,a,!!e,t),i&&i[d]&&i[d](Object.assign({context:o},r),e)}),n,r,o)})})},filterMethod:function(e){var t=e.option,n=e.row,r=e.column,o=t.data,a=r.filterRender.props,u=void 0===a?{}:a,i=m.default.get(n,r.property);if(o)switch(u.type){case"daterange":return l(i,o,u,"yyyy-MM-dd");case"datetimerange":return l(i,o,u,"yyyy-MM-dd HH:ss:mm");default:return i===o}return!1}},TimePicker:{renderEdit:n},Rate:{renderDefault:n,renderEdit:n,renderFilter:r,filterMethod:o},iSwitch:{renderDefault:n,renderEdit:n,renderFilter:r,filterMethod:o}};function u(e,t,n){if((0,n.getEventTargetNode)(t,document.body,"ivu-select-dropdown").flag)return!1}var i={install:function(e){var t=e.interceptor;e.renderer.mixin(a),t.add("event.clearFilter",u),t.add("event.clearActived",u)}};e.VXETablePluginIView=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);var c=i;e.default=c}); \ No newline at end of file +!function(e,t){if("function"==typeof define&&define.amd)define("vxe-table-plugin-iview",["exports","xe-utils"],t);else if("undefined"!=typeof exports)t(exports,require("xe-utils"));else{var n={exports:{}};t(n.exports,e.XEUtils),e.VXETablePluginIView=n.exports.default}}(this,function(e,m){"use strict";var t;function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t,n){return m.default.toDateString(e,t.format||n)}function p(e,t,n,r){return m.default.map(e,function(e){return d(e,t,r)}).join(n)}function l(e,t,n,r){return(e=d(e,n,r))>=d(t[0],n,r)&&e<=d(t[1],n,r)}function h(e,t,n){var r=e.$table,o=t.props;return m.default.assign(r.vSize?{size:r.vSize}:{},n,o)}function y(e,o){var t=e.events,n=o.$table,r=g({},"on-change",function(){return n.updateStatus(o)});return t?m.default.assign({},m.default.objectMap(t,function(r){return function(){for(var e=arguments.length,t=new Array(e),n=0;nn&&m.default.each(e,function(e){e.value===a&&(o.push(e.label),t(++n,e.children,r,o))})}(0,o.data,i,l),x(0,l.join(" ".concat(o.separator||"/"," ")))}},DatePicker:{renderEdit:n({transfer:!0}),renderCell:function(e,t,n){var r=t.props,o=void 0===r?{}:r,a=n.row,u=n.column,i=o.separator,l=m.default.get(a,u.property);switch(o.type){case"week":l=d(l,o,"yyyywWW");break;case"month":l=d(l,o,"yyyy-MM");break;case"year":l=d(l,o,"yyyy");break;case"dates":l=p(l,o,", ","yyyy-MM-dd");break;case"daterange":l=p(l,o," ".concat(i||"-"," "),"yyyy-MM-dd");break;case"datetimerange":l=p(l,o," ".concat(i||"-"," "),"yyyy-MM-dd HH:ss:mm");break;default:l=d(l,o,"yyyy-MM-dd")}return x(0,l)},renderFilter:function(e,n,r,o){var a=r.column,u=n.attrs,i=n.events,l=h(r,n,{transfer:!0}),d="on-change";return a.filters.map(function(t){return e(n.name,{props:l,attrs:u,model:{value:t.data,callback:function(e){t.data=e}},on:w(g({},d,function(e){M(o,a,!!e,t),i&&i[d]&&i[d](Object.assign({context:o},r),e)}),n,r,o)})})},filterMethod:function(e){var t=e.option,n=e.row,r=e.column,o=t.data,a=r.filterRender.props,u=void 0===a?{}:a,i=m.default.get(n,r.property);if(o)switch(u.type){case"daterange":return l(i,o,u,"yyyy-MM-dd");case"datetimerange":return l(i,o,u,"yyyy-MM-dd HH:ss:mm");default:return i===o}return!1}},TimePicker:{renderEdit:n({transfer:!0})},Rate:{renderDefault:n(),renderEdit:n(),renderFilter:r(),filterMethod:o},iSwitch:{renderDefault:n(),renderEdit:n(),renderFilter:r(),filterMethod:o}};function u(e,t,n){if((0,n.getEventTargetNode)(t,document.body,"ivu-select-dropdown").flag)return!1}var i={install:function(e){var t=e.interceptor;e.renderer.mixin(a),t.add("event.clearFilter",u),t.add("event.clearActived",u)}};e.VXETablePluginIView=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);var c=i;e.default=c}); \ No newline at end of file diff --git a/index.ts b/index.ts index 5ffd6d4..2c7ec3b 100644 --- a/index.ts +++ b/index.ts @@ -26,8 +26,8 @@ function matchCascaderData(index: number, list: Array, values: Array, } } -function getProps({ $table }: any, { props }: any) { - return XEUtils.assign($table.vSize ? { size: $table.vSize } : {}, props) +function getProps({ $table }: any, { props }: any, defaultProps?: any) { + return XEUtils.assign($table.vSize ? { size: $table.vSize } : {}, defaultProps, props) } function getCellEvents(renderOpts: any, params: any) { @@ -45,23 +45,25 @@ function getCellEvents(renderOpts: any, params: any) { return on } -function defaultEditRender(h: Function, renderOpts: any, params: any) { - let { row, column } = params - let { attrs } = renderOpts - let props = getProps(params, renderOpts) - return [ - h(renderOpts.name, { - props, - attrs, - model: { - value: XEUtils.get(row, column.property), - callback(value: any) { - XEUtils.set(row, column.property, value) - } - }, - on: getCellEvents(renderOpts, params) - }) - ] +function createEditRender(defaultProps?: any) { + return function (h: Function, renderOpts: any, params: any) { + let { row, column } = params + let { attrs } = renderOpts + let props = getProps(params, renderOpts, defaultProps) + return [ + h(renderOpts.name, { + props, + attrs, + model: { + value: XEUtils.get(row, column.property), + callback(value: any) { + XEUtils.set(row, column.property, value) + } + }, + on: getCellEvents(renderOpts, params) + }) + ] + } } function getFilterEvents(on: any, renderOpts: any, params: any, context: any) { @@ -75,31 +77,33 @@ function getFilterEvents(on: any, renderOpts: any, params: any, context: any) { return on } -function defaultFilterRender(h: Function, renderOpts: any, params: any, context: any) { - let { column } = params - let { name, attrs, events } = renderOpts - let type = 'on-change' - let props = getProps(params, renderOpts) - return column.filters.map((item: any) => { - return h(name, { - props, - attrs, - model: { - value: item.data, - callback(optionValue: any) { - item.data = optionValue - } - }, - on: getFilterEvents({ - [type](evnt: any) { - handleConfirmFilter(context, column, !!item.data, item) - if (events && events[type]) { - events[type](Object.assign({ context }, params), evnt) +function createFilterRender(defaultProps?: any) { + return function (h: Function, renderOpts: any, params: any, context: any) { + let { column } = params + let { name, attrs, events } = renderOpts + let type = 'on-change' + let props = getProps(params, renderOpts) + return column.filters.map((item: any) => { + return h(name, { + props, + attrs, + model: { + value: item.data, + callback(optionValue: any) { + item.data = optionValue } - } - }, renderOpts, params, context) + }, + on: getFilterEvents({ + [type](evnt: any) { + handleConfirmFilter(context, column, !!item.data, item) + if (events && events[type]) { + events[type](Object.assign({ context }, params), evnt) + } + } + }, renderOpts, params, context) + }) }) - }) + } } function handleConfirmFilter(context: any, column: any, checked: any, item: any) { @@ -139,23 +143,23 @@ function cellText(h: Function, cellValue: any) { const renderMap = { Input: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, AutoComplete: { autofocus: 'input.ivu-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, InputNumber: { autofocus: 'input.ivu-input-number-input', - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, Select: { @@ -163,7 +167,7 @@ const renderMap = { let { options, optionGroups, optionProps = {}, optionGroupProps = {} } = renderOpts let { row, column } = params let { attrs } = renderOpts - let props = getProps(params, renderOpts) + let props = getProps(params, renderOpts, { transfer: true }) if (optionGroups) { let groupOptions = optionGroupProps.options || 'options' let groupLabel = optionGroupProps.label || 'label' @@ -230,7 +234,7 @@ const renderMap = { let { options, optionGroups, optionProps = {}, optionGroupProps = {} } = renderOpts let { column } = params let { attrs, events } = renderOpts - let props = getProps(params, renderOpts) + let props = getProps(params, renderOpts, { transfer: true }) let type = 'on-change' if (optionGroups) { let groupOptions = optionGroupProps.options || 'options' @@ -300,7 +304,7 @@ const renderMap = { } }, Cascader: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ transfer: true }), renderCell(h: Function, { props = {} }: any, params: any) { let { row, column } = params let cellValue = XEUtils.get(row, column.property) @@ -311,7 +315,7 @@ const renderMap = { } }, DatePicker: { - renderEdit: defaultEditRender, + renderEdit: createEditRender({ transfer: true }), renderCell(h: Function, { props = {} }: any, params: any) { let { row, column } = params let { separator } = props @@ -344,7 +348,7 @@ const renderMap = { renderFilter(h: Function, renderOpts: any, params: any, context: any) { let { column } = params let { attrs, events } = renderOpts - let props = getProps(params, renderOpts) + let props = getProps(params, renderOpts, { transfer: true }) let type = 'on-change' return column.filters.map((item: any) => { return h(renderOpts.name, { @@ -386,18 +390,18 @@ const renderMap = { } }, TimePicker: { - renderEdit: defaultEditRender + renderEdit: createEditRender({ transfer: true }) }, Rate: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod }, iSwitch: { - renderDefault: defaultEditRender, - renderEdit: defaultEditRender, - renderFilter: defaultFilterRender, + renderDefault: createEditRender(), + renderEdit: createEditRender(), + renderFilter: createFilterRender(), filterMethod: defaultFilterMethod } } diff --git a/package.json b/package.json index 37bef83..ae7fa00 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vxe-table-plugin-iview", - "version": "1.5.6", + "version": "1.5.7", "description": "基于 vxe-table 表格的适配插件,用于兼容 iview 组件库", "scripts": { "lib": "gulp build" @@ -50,7 +50,7 @@ "typescript": "^3.6.3", "vue": "^2.6.10", "vxe-table": "^2.6.22", - "xe-utils": "^2.2.12" + "xe-utils": "^2.2.14" }, "peerDependencies": { "iview": ">=3.0.0",