@foxone/finance-ui
Version:
The Financial UI Component Library Based on @foxone/uikit and vuetify
251 lines (216 loc) • 29.3 kB
JavaScript
/* script */
import { defineComponent, onMounted } from '@vue/composition-api';
import classnames from '../utils/classnames';
import VueSlider from 'vue-slider-component';
import 'vue-slider-component/theme/default.css';
var __vue_script__ = defineComponent({
name: 'RiskSlider',
components: {
VueSlider: VueSlider
},
model: {
prop: 'value',
event: 'change'
},
props: {
value: {
type: [String, Number],
"default": ''
},
prefixCls: {
type: String,
"default": 'risk-slider'
},
disabled: {
type: Boolean,
"default": false
},
scale: {
type: Object,
"default": function _default() {
return {
low: 0.7,
mid: 0.15,
high: 0.15
};
}
},
tips: {
type: Object,
"default": function _default() {
return {};
}
}
},
setup: function setup(props) {
var classes = classnames(props.prefixCls);
var colors = {
dark: {
low: '#56D471',
mid: '#F79F4D',
high: '#F67070'
},
light: {
low: '#2CC94E',
mid: '#F58721',
high: '#F44C4C'
}
};
onMounted(function () {
console.info('RiskSlider mounted!');
});
return {
classes: classes,
colors: colors
};
},
computed: {
_value: {
get: function get() {
return this.value;
},
set: function set(val) {
this.$emit('change', val);
}
},
isDark: function isDark() {
var _a, _b;
return (_b = (_a = this.$vuetify) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.dark;
},
currentScale: function currentScale() {
var val = +this.value / 100;
if (val <= this.getScaleRatio('low')) {
return 'low';
} else if (val <= this.getScaleRatio('low') + this.getScaleRatio('mid')) {
return 'mid';
} else {
return 'high';
}
}
},
methods: {
color: function color() {
return this.colors[this.isDark ? 'dark' : 'light'];
},
getScaleRatio: function getScaleRatio(scale) {
var _this$scale = this.scale,
low = _this$scale.low,
mid = _this$scale.mid,
high = _this$scale.high;
var total = low + mid + high;
return this.scale[scale] / total;
}
}
});
/* template */
var __vue_render__ = function __vue_render__() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c("div", {
"class": _vm.classes()
}, [_c("vue-slider", {
attrs: {
height: 12,
min: 0,
max: 100,
interval: 0.01,
lazy: true,
tooltip: "none",
disabled: _vm.disabled,
"rail-style": {
background: "linear-gradient(to right, " + _vm.color().low + " 0% " + _vm.getScaleRatio("low") * 100 + "%, " + _vm.color().mid + " " + _vm.getScaleRatio("low") * 100 + "% " + (_vm.getScaleRatio("low") + _vm.getScaleRatio("mid")) * 100 + "%, " + _vm.color().high + " " + (_vm.getScaleRatio("low") + _vm.getScaleRatio("mid")) * 100 + "% 100%)"
}
},
model: {
value: _vm._value,
callback: function callback($$v) {
_vm._value = $$v;
},
expression: "_value"
}
}), _vm._v(" "), _vm._t("default", [_c("div", {
"class": _vm.classes("tips", "f-greyscale-3 f-caption")
}, [_c("span", [_vm._v(_vm._s(_vm.tips.tip))]), _vm._v(" "), _c("span", {
"class": _vm.classes("tips-highlight", "font-weight-bold"),
style: {
color: _vm.color()[_vm.currentScale]
}
}, [_vm._v(_vm._s(_vm.tips.highlight))])])])], 2);
};
var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */
var __vue_inject_styles__ = undefined;
/* scoped */
var __vue_scope_id__ = undefined;
/* module identifier */
var __vue_module_identifier__ = undefined;
/* functional template */
var __vue_is_functional_template__ = false;
/* component normalizer */
function __vue_normalize__(template, style, script, scope, functional, moduleIdentifier, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
var component = (typeof script === 'function' ? script.options : script) || {}; // For security concerns, we use only base name in production mode.
component.__file = "src/RiskSlider/RiskSlider.vue";
if (!component.render) {
component.render = template.render;
component.staticRenderFns = template.staticRenderFns;
component._compiled = true;
if (functional) component.functional = true;
}
component._scopeId = scope;
if (false) {
var hook;
if (false) {
// In SSR.
hook = function hook(context) {
// 2.3 injection
context = context || // cached call
this.$vnode && this.$vnode.ssrContext || // stateful
this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__;
} // inject component styles
if (style) {
style.call(this, createInjectorSSR(context));
} // register component module identifier for async chunk inference
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
}; // used by ssr in case component is cached and beforeCreate
// never gets called
component._ssrRegister = hook;
} else if (style) {
hook = shadowMode ? function (context) {
style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));
} : function (context) {
style.call(this, createInjector(context));
};
}
if (hook !== undefined) {
if (component.functional) {
// register for functional component in vue file
var originalRender = component.render;
component.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
} else {
// inject component registration as beforeCreate hook
var existing = component.beforeCreate;
component.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
}
return component;
}
/* style inject */
/* style inject SSR */
/* style inject shadow dom */
var __vue_component__ = /*#__PURE__*/__vue_normalize__({
render: __vue_render__,
staticRenderFns: __vue_staticRenderFns__
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);
export default __vue_component__;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SaXNrU2xpZGVyL1Jpc2tTbGlkZXIudHMiLCJSaXNrU2xpZGVyL1Jpc2tTbGlkZXIuanMiXSwibmFtZXMiOlsiZGVmaW5lQ29tcG9uZW50Iiwib25Nb3VudGVkIiwiY2xhc3NuYW1lcyIsIlZ1ZVNsaWRlciIsIl9fdnVlX3NjcmlwdF9fIiwibmFtZSIsImNvbXBvbmVudHMiLCJtb2RlbCIsInByb3AiLCJldmVudCIsInByb3BzIiwidmFsdWUiLCJ0eXBlIiwiU3RyaW5nIiwiTnVtYmVyIiwicHJlZml4Q2xzIiwiZGlzYWJsZWQiLCJCb29sZWFuIiwic2NhbGUiLCJPYmplY3QiLCJsb3ciLCJtaWQiLCJoaWdoIiwidGlwcyIsInNldHVwIiwiY2xhc3NlcyIsImNvbG9ycyIsImRhcmsiLCJsaWdodCIsImNvbnNvbGUiLCJpbmZvIiwiY29tcHV0ZWQiLCJfdmFsdWUiLCJnZXQiLCJzZXQiLCJ2YWwiLCIkZW1pdCIsImlzRGFyayIsIl9hIiwiX2IiLCIkdnVldGlmeSIsInRoZW1lIiwiY3VycmVudFNjYWxlIiwiZ2V0U2NhbGVSYXRpbyIsIm1ldGhvZHMiLCJjb2xvciIsInRvdGFsIiwiX192dWVfcmVuZGVyX18iLCJfdm0iLCJfaCIsIiRjcmVhdGVFbGVtZW50IiwiX2MiLCJfc2VsZiIsImF0dHJzIiwiaGVpZ2h0IiwibWluIiwibWF4IiwiaW50ZXJ2YWwiLCJsYXp5IiwidG9vbHRpcCIsImJhY2tncm91bmQiLCJjYWxsYmFjayIsIiQkdiIsImV4cHJlc3Npb24iLCJfdiIsIl90IiwiX3MiLCJ0aXAiLCJzdHlsZSIsImhpZ2hsaWdodCIsIl9fdnVlX3N0YXRpY1JlbmRlckZuc19fIiwiX3dpdGhTdHJpcHBlZCIsIl9fdnVlX2luamVjdF9zdHlsZXNfXyIsInVuZGVmaW5lZCIsIl9fdnVlX3Njb3BlX2lkX18iLCJfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fIiwiX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fIiwiX192dWVfbm9ybWFsaXplX18iLCJ0ZW1wbGF0ZSIsInNjcmlwdCIsInNjb3BlIiwiZnVuY3Rpb25hbCIsIm1vZHVsZUlkZW50aWZpZXIiLCJzaGFkb3dNb2RlIiwiY3JlYXRlSW5qZWN0b3IiLCJjcmVhdGVJbmplY3RvclNTUiIsImNyZWF0ZUluamVjdG9yU2hhZG93IiwiY29tcG9uZW50Iiwib3B0aW9ucyIsIl9fZmlsZSIsInJlbmRlciIsInN0YXRpY1JlbmRlckZucyIsIl9jb21waWxlZCIsIl9zY29wZUlkIiwiaG9vayIsImNvbnRleHQiLCIkdm5vZGUiLCJzc3JDb250ZXh0IiwicGFyZW50IiwiX19WVUVfU1NSX0NPTlRFWFRfXyIsImNhbGwiLCJfcmVnaXN0ZXJlZENvbXBvbmVudHMiLCJhZGQiLCJfc3NyUmVnaXN0ZXIiLCIkcm9vdCIsIiRvcHRpb25zIiwic2hhZG93Um9vdCIsIm9yaWdpbmFsUmVuZGVyIiwicmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIiwiaCIsImV4aXN0aW5nIiwiYmVmb3JlQ3JlYXRlIiwiY29uY2F0IiwiX192dWVfY29tcG9uZW50X18iXSwibWFwcGluZ3MiOiJBQUFBO0FBMEJBLFNBQ0VBLGVBREYsRUFHRUMsU0FIRixRQUlPLHNCQUpQO0FBS0EsT0FBT0MsVUFBUCxNQUF1QixxQkFBdkI7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLHNCQUF0QjtBQUNBLE9BQU8sd0NBQVA7O0FBYUEsSUFBTUMsY0FBYyxHQUFHSixlQUFlLENBQUM7QUFDckNLLEVBQUFBLElBQUksRUFBRSxZQUQrQjtBQUVyQ0MsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZILElBQUFBLFNBQVMsRUFBVEE7QUFEVSxHQUZ5QjtBQUtyQ0ksRUFBQUEsS0FBSyxFQUFFO0FBQ0xDLElBQUFBLElBQUksRUFBRSxPQUREO0FBRUxDLElBQUFBLEtBQUssRUFBRTtBQUZGLEdBTDhCO0FBU3JDQyxFQUFBQSxLQUFLLEVBQUU7QUFDTEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0xDLE1BQUFBLElBQUksRUFBRSxDQUFDQyxNQUFELEVBQVNDLE1BQVQsQ0FERDtB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QVA7QUFDRDtBQUNEOztBQUVBOztBQUVBOzs7QUFJQSxJQUFNMEIsaUJBQWlCLEdBQUcsYUFBYXBDLGlCQUFpQixDQUN0RDtBQUFFYSxFQUFBQSxNQUFNLEVBQUUzQyxjQUFWO0FBQTBCNEMsRUFBQUEsZUFBZSxFQUFFckI7QUFBM0MsQ0FEc0QsRUFFdERFLHFCQUZzRCxFQUd0RHBFLGNBSHNELEVBSXREc0UsZ0JBSnNELEVBS3RERSw4QkFMc0QsRUFNdERELHlCQU5zRCxFQU90RCxLQVBzRCxFQVF0REYsU0FSc0QsRUFTdERBLFNBVHNELEVBVXREQSxTQVZzRCxDQUF4RDs7QUFhQSxlQUFld0MsaUJBQWYiLCJmaWxlIjoiUmlza1NsaWRlci9SaXNrU2xpZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvKiBzY3JpcHQgKi9cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgb25Nb3VudGVkIH0gZnJvbSAnQHZ1ZS9jb21wb3NpdGlvbi1hcGknO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgVnVlU2xpZGVyIGZyb20gJ3Z1ZS1zbGlkZXItY29tcG9uZW50JztcbmltcG9ydCAndnVlLXNsaWRlci1jb21wb25lbnQvdGhlbWUvZGVmYXVsdC5jc3MnO1xuY29uc3QgX192dWVfc2NyaXB0X18gPSBkZWZpbmVDb21wb25lbnQoe1xuICAgIG5hbWU6ICdSaXNrU2xpZGVyJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFZ1ZVNsaWRlclxuICAgIH0sXG4gICAgbW9kZWw6IHtcbiAgICAgICAgcHJvcDogJ3ZhbHVlJyxcbiAgICAgICAgZXZlbnQ6ICdjaGFuZ2UnXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZWZpeENsczoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3Jpc2stc2xpZGVyJ1xuICAgICAgICB9LFxuICAgICAgICBkaXNhYmxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxvdzogMC43LFxuICAgICAgICAgICAgICAgIG1pZDogMC4xNSxcbiAgICAgICAgICAgICAgICBoaWdoOiAwLjE1XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB0aXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cChwcm9wcykge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcm9wcy5wcmVmaXhDbHMpO1xuICAgICAgICBjb25zdCBjb2xvcnMgPSB7XG4gICAgICAgICAgICBkYXJrOiB7XG4gICAgICAgICAgICAgICAgbG93OiAnIzU2RDQ3MScsXG4gICAgICAgICAgICAgICAgbWlkOiAnI0Y3OUY0RCcsXG4gICAgICAgICAgICAgICAgaGlnaDogJyNGNjcwNzAnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGlnaHQ6IHtcbiAgICAgICAgICAgICAgICBsb3c6ICcjMkNDOTRFJyxcbiAgICAgICAgICAgICAgICBtaWQ6ICcjRjU4NzIxJyxcbiAgICAgICAgICAgICAgICBoaWdoOiAnI0Y0NEM0QydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnUmlza1NsaWRlciBtb3VudGVkIScpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NlcywgY29sb3JzIH07XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBfdmFsdWU6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNEYXJrKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLiR2dWV0aWZ5KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGhlbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kYXJrO1xuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50U2NhbGUoKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSArdGhpcy52YWx1ZSAvIDEwMDtcbiAgICAgICAgICAgIGlmICh2YWwgPD0gdGhpcy5nZXRTY2FsZVJhdGlvKCdsb3cnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbG93JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbCA8PSAodGhpcy5nZXRTY2FsZVJhdGlvKCdsb3cnKSArIHRoaXMuZ2V0U2NhbGVSYXRpbygnbWlkJykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWdoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBjb2xvcigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbG9yc1t0aGlzLmlzRGFyayA/ICdkYXJrJyA6ICdsaWdodCddO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTY2FsZVJhdGlvKHNjYWxlKSB7XG4gICAgICAgICAgICBjb25zdCB7IGxvdywgbWlkLCBoaWdoIH0gPSB0aGlzLnNjYWxlO1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsb3cgKyBtaWQgKyBoaWdoO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVbc2NhbGVdIC8gdG90YWw7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbi8qIHRlbXBsYXRlICovXG52YXIgX192dWVfcmVuZGVyX18gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXM7XG4gICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50O1xuICAgIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaDtcbiAgICByZXR1cm4gX2MoXCJkaXZcIiwgeyBjbGFzczogX3ZtLmNsYXNzZXMoKSB9LCBbXG4gICAgICAgIF9jKFwidnVlLXNsaWRlclwiLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTIsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMTAwLFxuICAgICAgICAgICAgICAgIGludGVydmFsOiAwLjAxLFxuICAgICAgICAgICAgICAgIGxhenk6IHRydWUsXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBcInJhaWwtc3R5bGVcIjoge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmNvbG9yKCkubG93ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIDAlIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5nZXRTY2FsZVJhdGlvKFwibG93XCIpICogMTAwICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJSwgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmNvbG9yKCkubWlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5nZXRTY2FsZVJhdGlvKFwibG93XCIpICogMTAwICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJSBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmdldFNjYWxlUmF0aW8oXCJsb3dcIikgKyBfdm0uZ2V0U2NhbGVSYXRpbyhcIm1pZFwiKSkgKiAxMDAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIlLCBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uY29sb3IoKS5oaWdoICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uZ2V0U2NhbGVSYXRpbyhcImxvd1wiKSArIF92bS5nZXRTY2FsZVJhdGlvKFwibWlkXCIpKSAqIDEwMCArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiUgMTAwJSlcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uX3ZhbHVlLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5fdmFsdWUgPSAkJHY7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIl92YWx1ZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfdm0uX3QoXCJkZWZhdWx0XCIsIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgY2xhc3M6IF92bS5jbGFzc2VzKFwidGlwc1wiLCBcImYtZ3JleXNjYWxlLTMgZi1jYXB0aW9uXCIpIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihfdm0uX3MoX3ZtLnRpcHMudGlwKSldKSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBfdm0uY2xhc3NlcyhcInRpcHMtaGlnaGxpZ2h0XCIsIFwiZm9udC13ZWlnaHQtYm9sZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgY29sb3I6IF92bS5jb2xvcigpW192bS5jdXJyZW50U2NhbGVdIH1cbiAgICAgICAgICAgICAgICB9LCBbX3ZtLl92KF92bS5fcyhfdm0udGlwcy5oaWdobGlnaHQpKV0pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sIDIpO1xufTtcbnZhciBfX3Z1ZV9zdGF0aWNSZW5kZXJGbnNfXyA9IFtdO1xuX192dWVfcmVuZGVyX18uX3dpdGhTdHJpcHBlZCA9IHRydWU7XG4vKiBzdHlsZSAqL1xuY29uc3QgX192dWVfaW5qZWN0X3N0eWxlc19fID0gdW5kZWZpbmVkO1xuLyogc2NvcGVkICovXG5jb25zdCBfX3Z1ZV9zY29wZV9pZF9fID0gdW5kZWZpbmVkO1xuLyogbW9kdWxlIGlkZW50aWZpZXIgKi9cbmNvbnN0IF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSB1bmRlZmluZWQ7XG4vKiBmdW5jdGlvbmFsIHRlbXBsYXRlICovXG5jb25zdCBfX3Z1ZV9pc19mdW5jdGlvbmFsX3RlbXBsYXRlX18gPSBmYWxzZTtcbi8qIGNvbXBvbmVudCBub3JtYWxpemVyICovXG5mdW5jdGlvbiBfX3Z1ZV9ub3JtYWxpemVfXyh0ZW1wbGF0ZSwgc3R5bGUsIHNjcmlwdCwgc2NvcGUsIGZ1bmN0aW9uYWwsIG1vZHVsZUlkZW50aWZpZXIsIHNoYWRvd01vZGUsIGNyZWF0ZUluamVjdG9yLCBjcmVhdGVJbmplY3RvclNTUiwgY3JlYXRlSW5qZWN0b3JTaGFkb3cpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSAodHlwZW9mIHNjcmlwdCA9PT0gJ2Z1bmN0aW9uJyA/IHNjcmlwdC5vcHRpb25zIDogc2NyaXB0KSB8fCB7fTtcbiAgICAvLyBGb3Igc2VjdXJpdHkgY29uY2VybnMsIHdlIHVzZSBvbmx5IGJhc2UgbmFtZSBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgY29tcG9uZW50Ll9fZmlsZSA9IFwic3JjL1Jpc2tTbGlkZXIvUmlza1NsaWRlci52dWVcIjtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW5kZXIpIHtcbiAgICAgICAgY29tcG9uZW50LnJlbmRlciA9IHRlbXBsYXRlLnJlbmRlcjtcbiAgICAgICAgY29tcG9uZW50LnN0YXRpY1JlbmRlckZucyA9IHRlbXBsYXRlLnN0YXRpY1JlbmRlckZucztcbiAgICAgICAgY29tcG9uZW50Ll9jb21waWxlZCA9IHRydWU7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsKVxuICAgICAgICAgICAgY29tcG9uZW50LmZ1bmN0aW9uYWwgPSB0cnVlO1xuICAgIH1cbiAgICBjb21wb25lbnQuX3Njb3BlSWQgPSBzY29wZTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbGV0IGhvb2s7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgLy8gSW4gU1NSLlxuICAgICAgICAgICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgICAgICAgICAgIGNvbnRleHQgPVxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpOyAvLyBmdW5jdGlvbmFsXG4gICAgICAgICAgICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgICAgICAgICAgICBpZiAoc3R5bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuY2FsbCh0aGlzLCBjcmVhdGVJbmplY3RvclNTUihjb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJlbmNlXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgICAgICAgICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICAgICAgICAgIGNvbXBvbmVudC5fc3NyUmVnaXN0ZXIgPSBob29rO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0eWxlKSB7XG4gICAgICAgICAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuY2FsbCh0aGlzLCBjcmVhdGVJbmplY3RvclNoYWRvdyhjb250ZXh0LCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5jYWxsKHRoaXMsIGNyZWF0ZUluamVjdG9yKGNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChob29rICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvbmFsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUmVuZGVyID0gY29tcG9uZW50LnJlbmRlcjtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uKGgsIGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBjb21wb25lbnQuYmVmb3JlQ3JlYXRlO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5iZWZvcmVDcmVhdGUgPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaykgOiBbaG9va107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbn1cbi8qIHN0eWxlIGluamVjdCAqL1xuLyogc3R5bGUgaW5qZWN0IFNTUiAqL1xuLyogc3R5bGUgaW5qZWN0IHNoYWRvdyBkb20gKi9cbmNvbnN0IF9fdnVlX2NvbXBvbmVudF9fID0gLyojX19QVVJFX18qLyBfX3Z1ZV9ub3JtYWxpemVfXyh7IHJlbmRlcjogX192dWVfcmVuZGVyX18sIHN0YXRpY1JlbmRlckZuczogX192dWVfc3RhdGljUmVuZGVyRm5zX18gfSwgX192dWVfaW5qZWN0X3N0eWxlc19fLCBfX3Z1ZV9zY3JpcHRfXywgX192dWVfc2NvcGVfaWRfXywgX192dWVfaXNfZnVuY3Rpb25hbF90ZW1wbGF0ZV9fLCBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fLCBmYWxzZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5leHBvcnQgZGVmYXVsdCBfX3Z1ZV9jb21wb25lbnRfXzsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9